<?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>111137</bug_id>
          
          <creation_ts>2013-02-28 21:15:59 -0800</creation_ts>
          <short_desc>More cleanup in GIFImageReader</short_desc>
          <delta_ts>2013-03-09 21:01:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98098</blocked>
    
    <blocked>111395</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hin-Chung Lam">hclam</reporter>
          <assigned_to name="Hin-Chung Lam">hclam</assigned_to>
          <cc>pkasting</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>844785</commentid>
    <comment_count>0</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-02-28 21:15:59 -0800</bug_when>
    <thetext>This is another round of cleanup before incremental parsing:

* Move GIFLZWContext out of GIFFrameContext
* Use Vector&lt;&gt; to contain rowbuf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844840</commentid>
    <comment_count>1</comment_count>
      <attachid>190887</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-02-28 22:45:37 -0800</bug_when>
    <thetext>Created attachment 190887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844842</commentid>
    <comment_count>2</comment_count>
      <attachid>190887</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-02-28 22:47:31 -0800</bug_when>
    <thetext>Comment on attachment 190887
Patch

Phew this is the last cleanup. Next patch will be the implementation for incremental parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844849</commentid>
    <comment_count>3</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-02-28 22:52:52 -0800</bug_when>
    <thetext>Peter: please review this patch.
Stephen: please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845567</commentid>
    <comment_count>4</comment_count>
      <attachid>190887</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2013-03-01 15:43:42 -0800</bug_when>
    <thetext>Comment on attachment 190887
Patch

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

I&apos;m not sure precisely what all this buys us, but whatever.

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp:196
&gt; +bool GIFImageDecoder::haveDecodedRow(unsigned frameIndex, const Vector&lt;unsigned char&gt;&amp; rowBuffer, unsigned width, unsigned rowNumber, unsigned repeatCount, bool writeTransparentPixels)

|width| here (and elsewhere) should definitely be a size_t.  |rowNumber| should probably be a size_t.  |repeatCount| should maybe be a size_t.

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:682
&gt;                  if (m_screenWidth &lt; width) {

Nit: How about just

m_screenWidth = std::max(m_screenWidth, width);

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:821
&gt; +    m_lzwContext.oldcode = -1;

Seems like the constructor could set this to -1 and save this line, unless prepareLZWContext() needs to reset variables that might have already been modified?

For similar reasons, we may be able to eliminate setting |datum|, |bits|, and |stackp|.

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:826
&gt; +    // Initialize the tables.

Do we avoid doing this in the constructor in order to save memory in case we never do a GIFFullQuery?  If not, we should do this there.  If so, we should probably explicitly declare these vectors with initial size/capacity of 0.

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:835
&gt; +    m_lzwContext.suffix.fill(0);

Doesn&apos;t Vector::resize() zero-fill already?

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.h:48
&gt;  #define MAX_BITS            4097 /* 2^MAX_LZW_BITS+1 */

Shouldn&apos;t this be MAX_BYTES, not MAX_BITS?  It seems like it is a byte count everywhere we use it.

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.h:86
&gt; +    size_t rowp; // Current output pointer.

This is no longer a pointer, so the comment needs updating, and the name could probably be improved, too (size xCoord?).

Also, how come |rowbuf| is moving to the GIFImageReader, but this offset counter isn&apos;t?  Shouldn&apos;t they stick together?

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.h:158
&gt; +    Vector&lt;unsigned short&gt; prefix; // LZW decoding tables.

None of these three comments tells me anything meaningful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845622</commentid>
    <comment_count>5</comment_count>
      <attachid>191070</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-01 16:46:16 -0800</bug_when>
    <thetext>Created attachment 191070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845624</commentid>
    <comment_count>6</comment_count>
      <attachid>190887</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-01 16:48:12 -0800</bug_when>
    <thetext>Comment on attachment 190887
Patch

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

Thanks for review.

Most of the changes in this patch is to prepare for the next round. I separated LZW decoding states into GIFLZWContext such that there can be multiple GIFFrameContext that shares the same deceoding context and output buffer. unsigned char* to Vector&lt;&gt; is just an aesthetic choice.

&gt;&gt; Source/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp:196
&gt;&gt; +bool GIFImageDecoder::haveDecodedRow(unsigned frameIndex, const Vector&lt;unsigned char&gt;&amp; rowBuffer, unsigned width, unsigned rowNumber, unsigned repeatCount, bool writeTransparentPixels)
&gt; 
&gt; |width| here (and elsewhere) should definitely be a size_t.  |rowNumber| should probably be a size_t.  |repeatCount| should maybe be a size_t.

width and rowNumber are size_t now. Keeping repeatCount as unsigned.

&gt;&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:682
&gt;&gt;                  if (m_screenWidth &lt; width) {
&gt; 
&gt; Nit: How about just
&gt; 
&gt; m_screenWidth = std::max(m_screenWidth, width);

Done.

&gt;&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:821
&gt;&gt; +    m_lzwContext.oldcode = -1;
&gt; 
&gt; Seems like the constructor could set this to -1 and save this line, unless prepareLZWContext() needs to reset variables that might have already been modified?
&gt; 
&gt; For similar reasons, we may be able to eliminate setting |datum|, |bits|, and |stackp|.

This method is called on every frame so these values need to be reset before decoding a frame.

&gt;&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:826
&gt;&gt; +    // Initialize the tables.
&gt; 
&gt; Do we avoid doing this in the constructor in order to save memory in case we never do a GIFFullQuery?  If not, we should do this there.  If so, we should probably explicitly declare these vectors with initial size/capacity of 0.

Yes the original code did this to save memory.

&gt;&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:835
&gt;&gt; +    m_lzwContext.suffix.fill(0);
&gt; 
&gt; Doesn&apos;t Vector::resize() zero-fill already?

This method is called on every frame so this array needs to be reset.

&gt;&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.h:48
&gt;&gt;  #define MAX_BITS            4097 /* 2^MAX_LZW_BITS+1 */
&gt; 
&gt; Shouldn&apos;t this be MAX_BYTES, not MAX_BITS?  It seems like it is a byte count everywhere we use it.

Done.

&gt;&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.h:86
&gt;&gt; +    size_t rowp; // Current output pointer.
&gt; 
&gt; This is no longer a pointer, so the comment needs updating, and the name could probably be improved, too (size xCoord?).
&gt; 
&gt; Also, how come |rowbuf| is moving to the GIFImageReader, but this offset counter isn&apos;t?  Shouldn&apos;t they stick together?

Good observation.

In the next round of change we&apos;ll have more than one GIFFrameContext. Each representing the decoding states of an individual frame. They share one row buffer because there&apos;s only one frame decoding at a time, but each keeps its own decoding states.

&gt;&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.h:158
&gt;&gt; +    Vector&lt;unsigned short&gt; prefix; // LZW decoding tables.
&gt; 
&gt; None of these three comments tells me anything meaningful.

Removing them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845877</commentid>
    <comment_count>7</comment_count>
      <attachid>191070</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2013-03-02 14:53:59 -0800</bug_when>
    <thetext>Comment on attachment 191070
Patch

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

Seems generally OK to me, the splitting of |m_rowBuffer| from |rowp| is probably my main remaining concern.

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:233
&gt;      unsigned rowsRemaining = m_frameContext-&gt;rowsRemaining;

Nit: If rowNumber is a size_t elsewhere, this should probably be a size_t too.

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:823
&gt; +    // Initialize the tables.

Nit: Might want to expand this comment to note what cases lead to us not doing this in the constructor.

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.h:85
&gt;      unsigned rowsRemaining; // Rows remaining to be output.
&gt;      unsigned irow; // Current output row, starting at zero.

Similarly, probably both of these should be size_t.

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.h:86
&gt; +    size_t rowp; // Current output pointer.

So, you said &quot;good observation&quot; on wanting this to stick together with the row buffer itself, but the two are still in the same places they were.  Are you planning to make some sort of change here?

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.h:222
&gt; +    bool prepareLZWContext(int datasize);

Nit: I suggest a comment noting when this gets called, making it clear that we need to reset a bunch of variables each frame that will have been written in the meantime.

Consider making this a member of GIFLZWContext.  I think it makes more sense there, and it also moves a tiny bit closer to a world where the members of that could perhaps be private or read-only or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846865</commentid>
    <comment_count>8</comment_count>
      <attachid>191313</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-04 14:37:14 -0800</bug_when>
    <thetext>Created attachment 191313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846867</commentid>
    <comment_count>9</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-04 14:38:05 -0800</bug_when>
    <thetext>Fixed all comments. I also moved rowBuffer and rowPosition into GIFLZWContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847210</commentid>
    <comment_count>10</comment_count>
      <attachid>191384</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-04 20:02:02 -0800</bug_when>
    <thetext>Created attachment 191384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848885</commentid>
    <comment_count>11</comment_count>
      <attachid>191384</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2013-03-06 08:28:26 -0800</bug_when>
    <thetext>Comment on attachment 191384
Patch

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

Looks good.  r=me

&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:392
&gt;                  m_frameContext-&gt;datasize = datasize;
&gt; -                m_frameContext-&gt;clearCode = clearCode;
&gt; -                m_frameContext-&gt;avail = m_frameContext-&gt;clearCode + 2;
&gt; -                m_frameContext-&gt;oldcode = -1;
&gt; -                m_frameContext-&gt;codesize = m_frameContext-&gt;datasize + 1;
&gt; -                m_frameContext-&gt;codemask = (1 &lt;&lt; m_frameContext-&gt;codesize) - 1;
&gt; -                m_frameContext-&gt;datum = m_frameContext-&gt;bits = 0;
&gt; -
&gt; -                // Init the tables.
&gt; -                if (!m_frameContext-&gt;suffix)
&gt; -                    m_frameContext-&gt;suffix = new unsigned char[MAX_BITS];
&gt; -
&gt; -                // Clearing the whole suffix table lets us be more tolerant of bad data.
&gt; -                memset(m_frameContext-&gt;suffix, 0, MAX_BITS);
&gt; -                for (int i = 0; i &lt; m_frameContext-&gt;clearCode; i++)
&gt; -                    m_frameContext-&gt;suffix[i] = i;
&gt; -
&gt; -                if (!m_frameContext-&gt;stack)
&gt; -                    m_frameContext-&gt;stack = new unsigned char[MAX_BITS];
&gt; -                m_frameContext-&gt;stackp = m_frameContext-&gt;stack;
&gt; +                // Initialize LZW parser/decoder.
&gt; +                if (!m_lzwContext.prepareToDecode(m_screenWidth, datasize))
&gt; +                    return m_client ? m_client-&gt;setFailed() : false;

Not sure if it&apos;s a problem, but in the error case, this code previously used to early-return before m_frameContext-&gt;datasize was set. Now it&apos;ll be set unconditionally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849111</commentid>
    <comment_count>12</comment_count>
      <attachid>191384</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-06 11:19:37 -0800</bug_when>
    <thetext>Comment on attachment 191384
Patch

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

&gt;&gt; Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:392
&gt;&gt; +                    return m_client ? m_client-&gt;setFailed() : false;
&gt; 
&gt; Not sure if it&apos;s a problem, but in the error case, this code previously used to early-return before m_frameContext-&gt;datasize was set. Now it&apos;ll be set unconditionally.

Not really a problem here. The value is set but error will happen in prepareToDecode() which is slightly later. In general the direction of this code is moving to is that it will be more tolerant to errors in the parsing stage, fatal error will be deferred when decode actually happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849114</commentid>
    <comment_count>13</comment_count>
      <attachid>191798</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-06 11:20:53 -0800</bug_when>
    <thetext>Created attachment 191798
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849170</commentid>
    <comment_count>14</comment_count>
      <attachid>191798</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-06 12:11:12 -0800</bug_when>
    <thetext>Comment on attachment 191798
Patch for landing

Clearing flags on attachment: 191798

Committed r144961: &lt;http://trac.webkit.org/changeset/144961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849172</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-06 12:11:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190887</attachid>
            <date>2013-02-28 22:45:37 -0800</date>
            <delta_ts>2013-03-04 14:37:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111137-20130228224149.patch</filename>
            <type>text/plain</type>
            <size>21230</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM0ODE3ZTU5MTQ3MmQ3
ODVlMjU2MzA5M2ZjYzFiYTkwYjY5M2QyZC4uNGYxYjZiMmM1NGFjZjk2MGU1ZjUwOWUzMjY5MDE1
ZmFjOWJhMGI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAyLTI4ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW9yZSBjbGVhbnVwIGluIEdJ
RkltYWdlUmVhZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTExMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciBHSUZJbWFnZVJlYWRlclJlYWRlciB3aXRoIHRoZSBmb2xsb3dpbmcgY2hh
bmdlczoKKyAgICAgICAgKyBTZXBhcmF0ZSBHSUZMWldDb250ZXh0IGZvciBkZWNvZGluZyBzdGF0
ZXMuCisgICAgICAgICsgUmVwbGFjZSB1bnNpZ25lZCBjaGFyKiB3aXRoIFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPgorCisgICAgICAgIFRoZXJlIGlzIG5vIGNoYW5nZSBpbiBjb2RlIGJlaGF2aW9yIGFu
ZCBqdXN0IHJlZmFjdG9yaW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIEdJRkltYWdlUmVhZGVyVGVzdC4KKyAgICAgICAgSSBhbHNvIGRpZCBh
IGxvY2FsIHRlc3Rpbmcgb24gYSA1MGsgaW1hZ2UgY29ycHVzIGFuZCBzaG93ZWQgbm8gcmVncmVz
c2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2Rl
ZFJvdyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5oOgorICAgICAgICAoR0lGSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoR0lGSW1hZ2VS
ZWFkZXI6Om91dHB1dFJvdyk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6ZG9MWlcpOgorICAg
ICAgICAoR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKToKKyAgICAgICAgKEdJRkltYWdl
UmVhZGVyOjpwcmVwYXJlTFpXQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQpOgor
ICAgICAgICAoR0lGRnJhbWVDb250ZXh0OjpHSUZGcmFtZUNvbnRleHQpOgorICAgICAgICAoR0lG
RnJhbWVDb250ZXh0Ojp+R0lGRnJhbWVDb250ZXh0KToKKyAgICAgICAgKEdJRkxaV0NvbnRleHQp
OgorICAgICAgICAoR0lGTFpXQ29udGV4dDo6R0lGTFpXQ29udGV4dCk6CisgICAgICAgIChHSUZJ
bWFnZVJlYWRlcik6CisKIDIwMTMtMDItMjUgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBNb3JlIHN0eWxlIGNsZWFudXAgaW4gR0lGSW1hZ2VSZWFkZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggNmE1MTQwOTg0NmMwMDUwMDBjOTI3MGEzZmNhNTg5
ODI4OTc1YTNkMi4uMTQzOWFkOGMwZmVjYzJhNWNjOWY5YjQxZmFiZDA3ODBmZGE5YjhmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTE5MywyMCArMTkzLDIwIEBAIHZvaWQgR0lG
SW1hZ2VEZWNvZGVyOjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJh
bWUpCiAgICAgfQogfQogCi1ib29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5z
aWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCBjaGFy
KiByb3dFbmQsIHVuc2lnbmVkIHJvd051bWJlciwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGJvb2wg
d3JpdGVUcmFuc3BhcmVudFBpeGVscykKK2Jvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2Rl
ZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIHJv
d0J1ZmZlciwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIHJvd051bWJlciwgdW5zaWduZWQgcmVw
ZWF0Q291bnQsIGJvb2wgd3JpdGVUcmFuc3BhcmVudFBpeGVscykKIHsKICAgICBjb25zdCBHSUZG
cmFtZUNvbnRleHQqIGZyYW1lQ29udGV4dCA9IG1fcmVhZGVyLT5mcmFtZUNvbnRleHQoKTsKICAg
ICAvLyBUaGUgcGl4ZWwgZGF0YSBhbmQgY29vcmRpbmF0ZXMgc3VwcGxpZWQgdG8gdXMgYXJlIHJl
bGF0aXZlIHRvIHRoZSBmcmFtZSdzCiAgICAgLy8gb3JpZ2luIHdpdGhpbiB0aGUgZW50aXJlIGlt
YWdlIHNpemUsIGkuZS4KICAgICAvLyAoZnJhbWVDb250ZXh0LT54T2Zmc2V0LCBmcmFtZUNvbnRl
eHQtPnlPZmZzZXQpLiBUaGVyZSBpcyBubyBndWFyYW50ZWUKLSAgICAvLyB0aGF0IChyb3dFbmQg
LSByb3dCdWZmZXIpID09IChzaXplKCkud2lkdGgoKSAtIGZyYW1lQ29udGV4dC0+eE9mZnNldCks
IHNvCisgICAgLy8gdGhhdCB3aWR0aCA9PSAoc2l6ZSgpLndpZHRoKCkgLSBmcmFtZUNvbnRleHQt
PnhPZmZzZXQpLCBzbwogICAgIC8vIHdlIG11c3QgZW5zdXJlIHdlIGRvbid0IHJ1biBvZmYgdGhl
IGVuZCBvZiBlaXRoZXIgdGhlIHNvdXJjZSBkYXRhIG9yIHRoZQogICAgIC8vIHJvdydzIFgtY29v
cmRpbmF0ZXMuCiAgICAgaW50IHhCZWdpbiA9IHVwcGVyQm91bmRTY2FsZWRYKGZyYW1lQ29udGV4
dC0+eE9mZnNldCk7CiAgICAgaW50IHlCZWdpbiA9IHVwcGVyQm91bmRTY2FsZWRZKGZyYW1lQ29u
dGV4dC0+eU9mZnNldCArIHJvd051bWJlcik7Ci0gICAgaW50IHhFbmQgPSBsb3dlckJvdW5kU2Nh
bGVkWChzdGQ6Om1pbihzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lQ29udGV4dC0+eE9mZnNldCArIChy
b3dFbmQgLSByb3dCdWZmZXIpKSwgc2l6ZSgpLndpZHRoKCkpIC0gMSwgeEJlZ2luICsgMSkgKyAx
OworICAgIGludCB4RW5kID0gbG93ZXJCb3VuZFNjYWxlZFgoc3RkOjptaW4oc3RhdGljX2Nhc3Q8
aW50PihmcmFtZUNvbnRleHQtPnhPZmZzZXQgKyB3aWR0aCksIHNpemUoKS53aWR0aCgpKSAtIDEs
IHhCZWdpbiArIDEpICsgMTsKICAgICBpbnQgeUVuZCA9IGxvd2VyQm91bmRTY2FsZWRZKHN0ZDo6
bWluKHN0YXRpY19jYXN0PGludD4oZnJhbWVDb250ZXh0LT55T2Zmc2V0ICsgcm93TnVtYmVyICsg
cmVwZWF0Q291bnQpLCBzaXplKCkuaGVpZ2h0KCkpIC0gMSwgeUJlZ2luICsgMSkgKyAxOwotICAg
IGlmICghcm93QnVmZmVyIHx8ICh4QmVnaW4gPCAwKSB8fCAoeUJlZ2luIDwgMCkgfHwgKHhFbmQg
PD0geEJlZ2luKSB8fCAoeUVuZCA8PSB5QmVnaW4pKQorICAgIGlmIChyb3dCdWZmZXIuaXNFbXB0
eSgpIHx8ICh4QmVnaW4gPCAwKSB8fCAoeUJlZ2luIDwgMCkgfHwgKHhFbmQgPD0geEJlZ2luKSB8
fCAoeUVuZCA8PSB5QmVnaW4pKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEdldCB0
aGUgY29sb3JtYXAuCkBAIC0yMzAsNyArMjMwLDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6Omhh
dmVEZWNvZGVkUm93KHVuc2lnbmVkIGZyYW1lSW5kZXgsIHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmYK
ICAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGN1cnJlbnRBZGRyZXNzID0gYnVmZmVyLmdldEFk
ZHIoeEJlZ2luLCB5QmVnaW4pOwogICAgIC8vIFdyaXRlIG9uZSByb3cncyB3b3J0aCBvZiBkYXRh
IGludG8gdGhlIGZyYW1lLiAgCiAgICAgZm9yIChpbnQgeCA9IHhCZWdpbjsgeCA8IHhFbmQ7ICsr
eCkgewotICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHNvdXJjZVZhbHVlID0gKihyb3dCdWZm
ZXIgKyAobV9zY2FsZWQgPyBtX3NjYWxlZENvbHVtbnNbeF0gOiB4KSAtIGZyYW1lQ29udGV4dC0+
eE9mZnNldCk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgc291cmNlVmFsdWUgPSByb3dC
dWZmZXJbKG1fc2NhbGVkID8gbV9zY2FsZWRDb2x1bW5zW3hdIDogeCkgLSBmcmFtZUNvbnRleHQt
PnhPZmZzZXRdOwogICAgICAgICBpZiAoKCFmcmFtZUNvbnRleHQtPmlzVHJhbnNwYXJlbnQgfHwg
KHNvdXJjZVZhbHVlICE9IGZyYW1lQ29udGV4dC0+dHBpeGVsKSkgJiYgKHNvdXJjZVZhbHVlIDwg
Y29sb3JNYXBTaXplKSkgewogICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGNvbG9ySW5kZXggPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KHNvdXJjZVZhbHVlKSAqIDM7CiAgICAgICAgICAgICBidWZmZXIu
c2V0UkdCQShjdXJyZW50QWRkcmVzcywgY29sb3JNYXBbY29sb3JJbmRleF0sIGNvbG9yTWFwW2Nv
bG9ySW5kZXggKyAxXSwgY29sb3JNYXBbY29sb3JJbmRleCArIDJdLCAyNTUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5oCmluZGV4IDk5ODJhNDRlMTg3NzljY2ZhYmUzZjU4NDI1ODRjYzgxMGExMjUx
NGEuLjBjMTE2ZjgzYjZkZmFmMTkyMzNmYzBmOTEyM2I2NGU4Y2U3ZWY1YTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmgKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCBjbGVhckJlZm9y
ZUZyYW1lKTsKIAogICAgICAgICAvLyBDYWxsYmFja3MgZnJvbSB0aGUgR0lGIHJlYWRlci4KLSAg
ICAgICAgYm9vbCBoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBj
aGFyKiByb3dCdWZmZXIsIHVuc2lnbmVkIGNoYXIqIHJvd0VuZCwgdW5zaWduZWQgcm93TnVtYmVy
LCB1bnNpZ25lZCByZXBlYXRDb3VudCwgYm9vbCB3cml0ZVRyYW5zcGFyZW50UGl4ZWxzKTsKKyAg
ICAgICAgYm9vbCBoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LCBjb25zdCBWZWN0
b3I8dW5zaWduZWQgY2hhcj4mIHJvd0J1ZmZlciwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIHJv
d051bWJlciwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGJvb2wgd3JpdGVUcmFuc3BhcmVudFBpeGVs
cyk7CiAgICAgICAgIGJvb2wgZnJhbWVDb21wbGV0ZSh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNp
Z25lZCBmcmFtZUR1cmF0aW9uLCBJbWFnZUZyYW1lOjpGcmFtZURpc3Bvc2FsTWV0aG9kIGRpc3Bv
c2FsTWV0aG9kKTsKICAgICAgICAgdm9pZCBnaWZDb21wbGV0ZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
UmVhZGVyLmNwcAppbmRleCBjZTU1ODhiYWMwMWQ3MDc1MmZjYTBkMjQxZWJlYzc0YTNkODU5YzA1
Li5lNTI4MWFiOTQxMDRiZDU5NmNiMTQ2OWFiMzczZGZlYmZjMjgzY2ExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZVJlYWRlci5jcHAKQEAgLTE0OSwxMSArMTQ5LDEyIEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6
Om91dHB1dFJvdygpCiAKICAgICAvLyBDQUxMQkFDSzogTGV0IHRoZSBjbGllbnQga25vdyB3ZSBo
YXZlIGRlY29kZWQgYSByb3cuCiAgICAgaWYgKG1fY2xpZW50ICYmIG1fZnJhbWVDb250ZXh0Ci0g
ICAgICAgICYmICFtX2NsaWVudC0+aGF2ZURlY29kZWRSb3cobV9pbWFnZXNDb3VudCAtIDEsIG1f
ZnJhbWVDb250ZXh0LT5yb3didWYsIG1fZnJhbWVDb250ZXh0LT5yb3dlbmQsCisgICAgICAgICYm
ICFtX2NsaWVudC0+aGF2ZURlY29kZWRSb3cobV9pbWFnZXNDb3VudCAtIDEsIG1fcm93QnVmZmVy
LCBtX2ZyYW1lQ29udGV4dC0+d2lkdGgsCiAgICAgICAgICAgICBkcm93U3RhcnQsIGRyb3dFbmQg
LSBkcm93U3RhcnQgKyAxLCBtX2ZyYW1lQ29udGV4dC0+cHJvZ3Jlc3NpdmVEaXNwbGF5ICYmIG1f
ZnJhbWVDb250ZXh0LT5pbnRlcmxhY2VkICYmIG1fZnJhbWVDb250ZXh0LT5pcGFzcyA+IDEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ZyYW1lQ29udGV4dC0+cm93cCA9IG1fZnJh
bWVDb250ZXh0LT5yb3didWY7CisgICAgLy8gUHJlcGFyZSBmb3IgbmV4dCByb3cuIFJlc2V0IHBv
aW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiB0ZW1wb3JhcnkgYnVmZmVyLgorICAgIG1fZnJhbWVD
b250ZXh0LT5yb3dwID0gMDsKIAogICAgIGlmICghbV9mcmFtZUNvbnRleHQtPmludGVybGFjZWQp
CiAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5pcm93Kys7CkBAIC0yMTMsMzAgKzIxNCwyNSBAQCBi
b29sIEdJRkltYWdlUmVhZGVyOjpkb0xaVyhjb25zdCB1bnNpZ25lZCBjaGFyKiBibG9jaywgc2l6
ZV90IGJ5dGVzSW5CbG9jaykKICAgICAvLyBDb3B5IGFsbCB0aGUgZGVjb2RlciBzdGF0ZSB2YXJp
YWJsZXMgaW50byBsb2NhbHMgc28gdGhlIGNvbXBpbGVyCiAgICAgLy8gd29uJ3Qgd29ycnkgYWJv
dXQgdGhlbSBiZWluZyBhbGlhc2VkLiBUaGUgbG9jYWxzIHdpbGwgYmUgaG9tZWQKICAgICAvLyBi
YWNrIGludG8gdGhlIEdJRiBkZWNvZGVyIHN0cnVjdHVyZSB3aGVuIHdlIGV4aXQuCi0gICAgaW50
IGF2YWlsID0gbV9mcmFtZUNvbnRleHQtPmF2YWlsOwotICAgIGludCBiaXRzID0gbV9mcmFtZUNv
bnRleHQtPmJpdHM7CisgICAgaW50IGF2YWlsID0gbV9sendDb250ZXh0LmF2YWlsOworICAgIGlu
dCBiaXRzID0gbV9sendDb250ZXh0LmJpdHM7CiAgICAgc2l6ZV90IGNudCA9IGJ5dGVzSW5CbG9j
azsKLSAgICBpbnQgY29kZXNpemUgPSBtX2ZyYW1lQ29udGV4dC0+Y29kZXNpemU7Ci0gICAgaW50
IGNvZGVtYXNrID0gbV9mcmFtZUNvbnRleHQtPmNvZGVtYXNrOwotICAgIGludCBvbGRjb2RlID0g
bV9mcmFtZUNvbnRleHQtPm9sZGNvZGU7Ci0gICAgaW50IGNsZWFyQ29kZSA9IG1fZnJhbWVDb250
ZXh0LT5jbGVhckNvZGU7Ci0gICAgdW5zaWduZWQgY2hhciBmaXJzdGNoYXIgPSBtX2ZyYW1lQ29u
dGV4dC0+Zmlyc3RjaGFyOwotICAgIGludCBkYXR1bSA9IG1fZnJhbWVDb250ZXh0LT5kYXR1bTsK
LQotICAgIGlmICghbV9mcmFtZUNvbnRleHQtPnByZWZpeCkgewotICAgICAgICBtX2ZyYW1lQ29u
dGV4dC0+cHJlZml4ID0gbmV3IHVuc2lnbmVkIHNob3J0W01BWF9CSVRTXTsKLSAgICAgICAgbWVt
c2V0KG1fZnJhbWVDb250ZXh0LT5wcmVmaXgsIDAsIE1BWF9CSVRTICogc2l6ZW9mKHNob3J0KSk7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc2hvcnQgKnByZWZpeCA9IG1fZnJhbWVDb250ZXh0LT5w
cmVmaXg7Ci0gICAgdW5zaWduZWQgY2hhciAqc3RhY2twID0gbV9mcmFtZUNvbnRleHQtPnN0YWNr
cDsKLSAgICB1bnNpZ25lZCBjaGFyICpzdWZmaXggPSBtX2ZyYW1lQ29udGV4dC0+c3VmZml4Owot
ICAgIHVuc2lnbmVkIGNoYXIgKnN0YWNrID0gbV9mcmFtZUNvbnRleHQtPnN0YWNrOwotICAgIHVu
c2lnbmVkIGNoYXIgKnJvd3AgPSBtX2ZyYW1lQ29udGV4dC0+cm93cDsKLSAgICB1bnNpZ25lZCBj
aGFyICpyb3dlbmQgPSBtX2ZyYW1lQ29udGV4dC0+cm93ZW5kOworICAgIGludCBjb2Rlc2l6ZSA9
IG1fbHp3Q29udGV4dC5jb2Rlc2l6ZTsKKyAgICBpbnQgY29kZW1hc2sgPSBtX2x6d0NvbnRleHQu
Y29kZW1hc2s7CisgICAgaW50IG9sZGNvZGUgPSBtX2x6d0NvbnRleHQub2xkY29kZTsKKyAgICBp
bnQgY2xlYXJDb2RlID0gbV9sendDb250ZXh0LmNsZWFyQ29kZTsKKyAgICB1bnNpZ25lZCBjaGFy
IGZpcnN0Y2hhciA9IG1fbHp3Q29udGV4dC5maXJzdGNoYXI7CisgICAgaW50IGRhdHVtID0gbV9s
endDb250ZXh0LmRhdHVtOworCisgICAgVmVjdG9yPHVuc2lnbmVkIHNob3J0PiYgcHJlZml4ID0g
bV9sendDb250ZXh0LnByZWZpeDsKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIHN1ZmZpeCA9
IG1fbHp3Q29udGV4dC5zdWZmaXg7CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBzdGFjayA9
IG1fbHp3Q29udGV4dC5zdGFjazsKKyAgICBzaXplX3Qgc3RhY2twID0gbV9sendDb250ZXh0LnN0
YWNrcDsKKyAgICBzaXplX3Qgcm93cCA9IG1fZnJhbWVDb250ZXh0LT5yb3dwOworICAgIHVuc2ln
bmVkIHdpZHRoID0gbV9mcmFtZUNvbnRleHQtPndpZHRoOwogICAgIHVuc2lnbmVkIHJvd3NSZW1h
aW5pbmcgPSBtX2ZyYW1lQ29udGV4dC0+cm93c1JlbWFpbmluZzsKIAotICAgIGlmIChyb3dwID09
IHJvd2VuZCkKKyAgICBpZiAocm93cCA9PSB3aWR0aCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICNkZWZpbmUgT1VUUFVUX1JPVyBcCkBAIC0yNzksOCArMjc1LDggQEAgYm9vbCBHSUZJbWFnZVJl
YWRlcjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciogYmxvY2ssIHNpemVfdCBieXRlc0luQmxv
Y2spCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChvbGRjb2RlID09IC0xKSB7Ci0g
ICAgICAgICAgICAgICAgKnJvd3ArKyA9IHN1ZmZpeFtjb2RlXTsKLSAgICAgICAgICAgICAgICBp
ZiAocm93cCA9PSByb3dlbmQpCisgICAgICAgICAgICAgICAgbV9yb3dCdWZmZXJbcm93cCsrXSA9
IHN1ZmZpeFtjb2RlXTsKKyAgICAgICAgICAgICAgICBpZiAocm93cCA9PSB3aWR0aCkKICAgICAg
ICAgICAgICAgICAgICAgT1VUUFVUX1JPVzsKIAogICAgICAgICAgICAgICAgIGZpcnN0Y2hhciA9
IG9sZGNvZGUgPSBjb2RlOwpAQCAtMjg5LDEwICsyODUsMTAgQEAgYm9vbCBHSUZJbWFnZVJlYWRl
cjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciogYmxvY2ssIHNpemVfdCBieXRlc0luQmxvY2sp
CiAKICAgICAgICAgICAgIGluY29kZSA9IGNvZGU7CiAgICAgICAgICAgICBpZiAoY29kZSA+PSBh
dmFpbCkgewotICAgICAgICAgICAgICAgICpzdGFja3ArKyA9IGZpcnN0Y2hhcjsKKyAgICAgICAg
ICAgICAgICBzdGFja1tzdGFja3ArK10gPSBmaXJzdGNoYXI7CiAgICAgICAgICAgICAgICAgY29k
ZSA9IG9sZGNvZGU7CiAKLSAgICAgICAgICAgICAgICBpZiAoc3RhY2twID09IHN0YWNrICsgTUFY
X0JJVFMpCisgICAgICAgICAgICAgICAgaWYgKHN0YWNrcCA9PSBNQVhfQklUUykKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFs
c2U7CiAgICAgICAgICAgICB9CiAKQEAgLTMwNCwxNCArMzAwLDE0IEBAIGJvb2wgR0lGSW1hZ2VS
ZWFkZXI6OmRvTFpXKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJsb2NrLCBzaXplX3QgYnl0ZXNJbkJs
b2NrKQogICAgICAgICAgICAgICAgIC8vIGFsbG93aW5nIGNvZGUgPj0gYXZhaWwgaGVyZSBsZXRz
IHVzIGJlIG1vcmUgdG9sZXJhbnQgb2YgbWFsZm9ybWVkCiAgICAgICAgICAgICAgICAgLy8gZGF0
YS4gQXMgbG9uZyBhcyBjb2RlIDwgTUFYX0JJVFMsIHRoZSBvbmx5IHJpc2sgaXMgYSBnYXJibGVk
IGltYWdlLAogICAgICAgICAgICAgICAgIC8vIHdoaWNoIGlzIG5vIHdvcnNlIHRoYW4gcmVmdXNp
bmcgdG8gZGlzcGxheSBpdC4KLSAgICAgICAgICAgICAgICAqc3RhY2twKysgPSBzdWZmaXhbY29k
ZV07CisgICAgICAgICAgICAgICAgc3RhY2tbc3RhY2twKytdID0gc3VmZml4W2NvZGVdOwogICAg
ICAgICAgICAgICAgIGNvZGUgPSBwcmVmaXhbY29kZV07CiAKLSAgICAgICAgICAgICAgICBpZiAo
c3RhY2twID09IHN0YWNrICsgTUFYX0JJVFMpCisgICAgICAgICAgICAgICAgaWYgKHN0YWNrcCA9
PSBNQVhfQklUUykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGll
bnQtPnNldEZhaWxlZCgpIDogZmFsc2U7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICpz
dGFja3ArKyA9IGZpcnN0Y2hhciA9IHN1ZmZpeFtjb2RlXTsKKyAgICAgICAgICAgIHN0YWNrW3N0
YWNrcCsrXSA9IGZpcnN0Y2hhciA9IHN1ZmZpeFtjb2RlXTsKIAogICAgICAgICAgICAgLy8gRGVm
aW5lIGEgbmV3IGNvZGV3b3JkIGluIHRoZSBkaWN0aW9uYXJ5LgogICAgICAgICAgICAgaWYgKGF2
YWlsIDwgNDA5NikgewpAQCAtMzMxLDIzICszMjcsMjMgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6
ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciogYmxvY2ssIHNpemVfdCBieXRlc0luQmxvY2spCiAK
ICAgICAgICAgICAgIC8vIENvcHkgdGhlIGRlY29kZWQgZGF0YSBvdXQgdG8gdGhlIHNjYW5saW5l
IGJ1ZmZlci4KICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAqcm93cCsrID0gKi0t
c3RhY2twOwotICAgICAgICAgICAgICAgIGlmIChyb3dwID09IHJvd2VuZCkKKyAgICAgICAgICAg
ICAgICBtX3Jvd0J1ZmZlcltyb3dwKytdID0gc3RhY2tbLS1zdGFja3BdOworICAgICAgICAgICAg
ICAgIGlmIChyb3dwID09IHdpZHRoKQogICAgICAgICAgICAgICAgICAgICBPVVRQVVRfUk9XOwot
ICAgICAgICAgICAgfSB3aGlsZSAoc3RhY2twID4gc3RhY2spOworICAgICAgICAgICAgfSB3aGls
ZSAoc3RhY2twID4gMCk7CiAgICAgICAgIH0KICAgICB9CiAKIEVORDoKICAgICAvLyBIb21lIHRo
ZSBsb2NhbCBjb3BpZXMgb2YgdGhlIEdJRiBkZWNvZGVyIHN0YXRlIHZhcmlhYmxlcy4KLSAgICBt
X2ZyYW1lQ29udGV4dC0+YXZhaWwgPSBhdmFpbDsKLSAgICBtX2ZyYW1lQ29udGV4dC0+Yml0cyA9
IGJpdHM7Ci0gICAgbV9mcmFtZUNvbnRleHQtPmNvZGVzaXplID0gY29kZXNpemU7Ci0gICAgbV9m
cmFtZUNvbnRleHQtPmNvZGVtYXNrID0gY29kZW1hc2s7Ci0gICAgbV9mcmFtZUNvbnRleHQtPm9s
ZGNvZGUgPSBvbGRjb2RlOwotICAgIG1fZnJhbWVDb250ZXh0LT5maXJzdGNoYXIgPSBmaXJzdGNo
YXI7Ci0gICAgbV9mcmFtZUNvbnRleHQtPmRhdHVtID0gZGF0dW07Ci0gICAgbV9mcmFtZUNvbnRl
eHQtPnN0YWNrcCA9IHN0YWNrcDsKKyAgICBtX2x6d0NvbnRleHQuYXZhaWwgPSBhdmFpbDsKKyAg
ICBtX2x6d0NvbnRleHQuYml0cyA9IGJpdHM7CisgICAgbV9sendDb250ZXh0LmNvZGVzaXplID0g
Y29kZXNpemU7CisgICAgbV9sendDb250ZXh0LmNvZGVtYXNrID0gY29kZW1hc2s7CisgICAgbV9s
endDb250ZXh0Lm9sZGNvZGUgPSBvbGRjb2RlOworICAgIG1fbHp3Q29udGV4dC5maXJzdGNoYXIg
PSBmaXJzdGNoYXI7CisgICAgbV9sendDb250ZXh0LmRhdHVtID0gZGF0dW07CisgICAgbV9sendD
b250ZXh0LnN0YWNrcCA9IHN0YWNrcDsKICAgICBtX2ZyYW1lQ29udGV4dC0+cm93cCA9IHJvd3A7
CiAgICAgbV9mcmFtZUNvbnRleHQtPnJvd3NSZW1haW5pbmcgPSByb3dzUmVtYWluaW5nOwogICAg
IHJldHVybiB0cnVlOwpAQCAtMzkwLDQxICszODYsMTIgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6
ZGVjb2RlSW50ZXJuYWwoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgR0lGSW1hZ2VE
ZWMKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR0lGTFpXU3RhcnQ6IHsKLSAg
ICAgICAgICAgIC8vIEluaXRpYWxpemUgTFpXIHBhcnNlci9kZWNvZGVyLgotICAgICAgICAgICAg
aW50IGRhdGFzaXplID0gKmN1cnJlbnRDb21wb25lbnQ7Ci0KLSAgICAgICAgICAgIC8vIFNpbmNl
IHdlIHVzZSBhIGNvZGVzaXplIG9mIDEgbW9yZSB0aGFuIHRoZSBkYXRhc2l6ZSwgd2UgbmVlZCB0
byBlbnN1cmUKLSAgICAgICAgICAgIC8vIHRoYXQgb3VyIGRhdGFzaXplIGlzIHN0cmljdGx5IGxl
c3MgdGhhbiB0aGUgTUFYX0xaV19CSVRTIHZhbHVlICgxMikuCi0gICAgICAgICAgICAvLyBUaGlz
IHNldHMgdGhlIGxhcmdlc3QgcG9zc2libGUgY29kZW1hc2sgY29ycmVjdGx5IGF0IDQwOTUuCi0g
ICAgICAgICAgICBpZiAoZGF0YXNpemUgPj0gTUFYX0xaV19CSVRTKQotICAgICAgICAgICAgICAg
IHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwotICAgICAg
ICAgICAgaW50IGNsZWFyQ29kZSA9IDEgPDwgZGF0YXNpemU7Ci0gICAgICAgICAgICBpZiAoY2xl
YXJDb2RlID49IE1BWF9CSVRTKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2NsaWVudCA/IG1f
Y2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwotCi0gICAgICAgICAgICBpZiAobV9mcmFtZUNv
bnRleHQpIHsKKyAgICAgICAgICAgIGlmIChxdWVyeSA9PSBHSUZJbWFnZURlY29kZXI6OkdJRkZ1
bGxRdWVyeSkgeworICAgICAgICAgICAgICAgIGludCBkYXRhc2l6ZSA9ICpjdXJyZW50Q29tcG9u
ZW50OwogICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5kYXRhc2l6ZSA9IGRhdGFzaXpl
OwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5jbGVhckNvZGUgPSBjbGVhckNvZGU7
Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmF2YWlsID0gbV9mcmFtZUNvbnRleHQt
PmNsZWFyQ29kZSArIDI7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPm9sZGNvZGUg
PSAtMTsKLSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+Y29kZXNpemUgPSBtX2ZyYW1l
Q29udGV4dC0+ZGF0YXNpemUgKyAxOwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5j
b2RlbWFzayA9ICgxIDw8IG1fZnJhbWVDb250ZXh0LT5jb2Rlc2l6ZSkgLSAxOwotICAgICAgICAg
ICAgICAgIG1fZnJhbWVDb250ZXh0LT5kYXR1bSA9IG1fZnJhbWVDb250ZXh0LT5iaXRzID0gMDsK
LQotICAgICAgICAgICAgICAgIC8vIEluaXQgdGhlIHRhYmxlcy4KLSAgICAgICAgICAgICAgICBp
ZiAoIW1fZnJhbWVDb250ZXh0LT5zdWZmaXgpCi0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVD
b250ZXh0LT5zdWZmaXggPSBuZXcgdW5zaWduZWQgY2hhcltNQVhfQklUU107Ci0KLSAgICAgICAg
ICAgICAgICAvLyBDbGVhcmluZyB0aGUgd2hvbGUgc3VmZml4IHRhYmxlIGxldHMgdXMgYmUgbW9y
ZSB0b2xlcmFudCBvZiBiYWQgZGF0YS4KLSAgICAgICAgICAgICAgICBtZW1zZXQobV9mcmFtZUNv
bnRleHQtPnN1ZmZpeCwgMCwgTUFYX0JJVFMpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbV9mcmFtZUNvbnRleHQtPmNsZWFyQ29kZTsgaSsrKQotICAgICAgICAgICAgICAg
ICAgICBtX2ZyYW1lQ29udGV4dC0+c3VmZml4W2ldID0gaTsKLQotICAgICAgICAgICAgICAgIGlm
ICghbV9mcmFtZUNvbnRleHQtPnN0YWNrKQotICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29u
dGV4dC0+c3RhY2sgPSBuZXcgdW5zaWduZWQgY2hhcltNQVhfQklUU107Ci0gICAgICAgICAgICAg
ICAgbV9mcmFtZUNvbnRleHQtPnN0YWNrcCA9IG1fZnJhbWVDb250ZXh0LT5zdGFjazsKKyAgICAg
ICAgICAgICAgICAvLyBJbml0aWFsaXplIExaVyBwYXJzZXIvZGVjb2Rlci4KKyAgICAgICAgICAg
ICAgICBwcmVwYXJlTFpXQ29udGV4dChkYXRhc2l6ZSk7CiAgICAgICAgICAgICB9Ci0KICAgICAg
ICAgICAgIEdFVE4oMSwgR0lGU3ViQmxvY2spOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTcxNCwxNCArNjgxLDEwIEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVy
bmFsKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIEdJRkltYWdlRGVjCiAgICAgICAg
ICAgICAgICAgLyogdGhhbiB0aGUgc2NyZWVuIHNpemUsIHdlIG5lZWQgdG8gcmVhbGxvY2F0ZSBi
dWZmZXJzLiAgICAgKi8KICAgICAgICAgICAgICAgICBpZiAobV9zY3JlZW5XaWR0aCA8IHdpZHRo
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIFhYWCBEZXZpYW50ISAqLwotICAgICAgICAgICAg
ICAgICAgICBkZWxldGUgW11tX2ZyYW1lQ29udGV4dC0+cm93YnVmOwogICAgICAgICAgICAgICAg
ICAgICBtX3NjcmVlbldpZHRoID0gd2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVD
b250ZXh0LT5yb3didWYgPSBuZXcgdW5zaWduZWQgY2hhclttX3NjcmVlbldpZHRoXTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCFtX2ZyYW1lQ29udGV4dC0+cm93YnVmKQotICAgICAgICAg
ICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+cm93YnVmID0gbmV3IHVuc2lnbmVkIGNoYXJbbV9z
Y3JlZW5XaWR0aF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fcm93QnVm
ZmVyLnJlc2l6ZShtX3NjcmVlbldpZHRoKTsKIAotICAgICAgICAgICAgICAgIGlmICghbV9mcmFt
ZUNvbnRleHQtPnJvd2J1ZikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50ID8g
bV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKG1fc2Ny
ZWVuSGVpZ2h0IDwgaGVpZ2h0KQogICAgICAgICAgICAgICAgICAgICBtX3NjcmVlbkhlaWdodCA9
IGhlaWdodDsKIApAQCAtNzQ4LDggKzcxMSw3IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRlY29k
ZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIEdJRkltYWdlRGVjCiAg
ICAgICAgICAgICAgICAgLy8gQ2xlYXIgc3RhdGUgZnJvbSBsYXN0IGltYWdlLgogICAgICAgICAg
ICAgICAgIG1fZnJhbWVDb250ZXh0LT5pcm93ID0gMDsKICAgICAgICAgICAgICAgICBtX2ZyYW1l
Q29udGV4dC0+cm93c1JlbWFpbmluZyA9IG1fZnJhbWVDb250ZXh0LT5oZWlnaHQ7Ci0gICAgICAg
ICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnJvd2VuZCA9IG1fZnJhbWVDb250ZXh0LT5yb3didWYg
KyBtX2ZyYW1lQ29udGV4dC0+d2lkdGg7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQt
PnJvd3AgPSBtX2ZyYW1lQ29udGV4dC0+cm93YnVmOworICAgICAgICAgICAgICAgIG1fZnJhbWVD
b250ZXh0LT5yb3dwID0gMDsKIAogICAgICAgICAgICAgICAgIC8vIGJpdHMgcGVyIHBpeGVsIGlz
IGN1cnJlbnRDb21wb25lbnRbOF0mMHgwNwogICAgICAgICAgICAgfQpAQCAtODQyLDMgKzgwNCwz
NyBAQCB2b2lkIEdJRkltYWdlUmVhZGVyOjpzZXRSZW1haW5pbmdCeXRlcyhzaXplX3QgcmVtYWlu
aW5nQnl0ZXMpCiAgICAgQVNTRVJUKHJlbWFpbmluZ0J5dGVzIDw9IG1fZGF0YS0+c2l6ZSgpKTsK
ICAgICBtX2J5dGVzUmVhZCA9IG1fZGF0YS0+c2l6ZSgpIC0gcmVtYWluaW5nQnl0ZXM7CiB9CisK
K2Jvb2wgR0lGSW1hZ2VSZWFkZXI6OnByZXBhcmVMWldDb250ZXh0KGludCBkYXRhc2l6ZSkKK3sK
KyAgICAvLyBTaW5jZSB3ZSB1c2UgYSBjb2Rlc2l6ZSBvZiAxIG1vcmUgdGhhbiB0aGUgZGF0YXNp
emUsIHdlIG5lZWQgdG8gZW5zdXJlCisgICAgLy8gdGhhdCBvdXIgZGF0YXNpemUgaXMgc3RyaWN0
bHkgbGVzcyB0aGFuIHRoZSBNQVhfTFpXX0JJVFMgdmFsdWUgKDEyKS4KKyAgICAvLyBUaGlzIHNl
dHMgdGhlIGxhcmdlc3QgcG9zc2libGUgY29kZW1hc2sgY29ycmVjdGx5IGF0IDQwOTUuCisgICAg
aWYgKGRhdGFzaXplID49IE1BWF9MWldfQklUUykKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5z
ZXRGYWlsZWQoKTsKKyAgICBpbnQgY2xlYXJDb2RlID0gMSA8PCBkYXRhc2l6ZTsKKyAgICBpZiAo
Y2xlYXJDb2RlID49IE1BWF9CSVRTKQorICAgICAgICByZXR1cm4gbV9jbGllbnQtPnNldEZhaWxl
ZCgpOworCisgICAgbV9sendDb250ZXh0LmNsZWFyQ29kZSA9IGNsZWFyQ29kZTsKKyAgICBtX2x6
d0NvbnRleHQuYXZhaWwgPSBjbGVhckNvZGUgKyAyOworICAgIG1fbHp3Q29udGV4dC5vbGRjb2Rl
ID0gLTE7CisgICAgbV9sendDb250ZXh0LmNvZGVzaXplID0gZGF0YXNpemUgKyAxOworICAgIG1f
bHp3Q29udGV4dC5jb2RlbWFzayA9ICgxIDw8IG1fbHp3Q29udGV4dC5jb2Rlc2l6ZSkgLSAxOwor
ICAgIG1fbHp3Q29udGV4dC5kYXR1bSA9IG1fbHp3Q29udGV4dC5iaXRzID0gMDsKKworICAgIC8v
IEluaXRpYWxpemUgdGhlIHRhYmxlcy4KKyAgICBpZiAobV9sendDb250ZXh0LnN1ZmZpeC5pc0Vt
cHR5KCkpCisgICAgICAgIG1fbHp3Q29udGV4dC5zdWZmaXgucmVzaXplKE1BWF9CSVRTKTsKKyAg
ICBpZiAobV9sendDb250ZXh0LnN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgbV9sendDb250ZXh0
LnN0YWNrLnJlc2l6ZShNQVhfQklUUyk7CisgICAgaWYgKG1fbHp3Q29udGV4dC5wcmVmaXguaXNF
bXB0eSgpKQorICAgICAgICBtX2x6d0NvbnRleHQucHJlZml4LnJlc2l6ZShNQVhfQklUUyk7CisK
KyAgICAvLyBDbGVhcmluZyB0aGUgd2hvbGUgc3VmZml4IHRhYmxlIGxldHMgdXMgYmUgbW9yZSB0
b2xlcmFudCBvZiBiYWQgZGF0YS4KKyAgICBtX2x6d0NvbnRleHQuc3VmZml4LmZpbGwoMCk7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2x6d0NvbnRleHQuY2xlYXJDb2RlOyBpKyspCisgICAg
ICAgIG1fbHp3Q29udGV4dC5zdWZmaXhbaV0gPSBpOworICAgIG1fbHp3Q29udGV4dC5zdGFja3Ag
PSAwOworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCBjMmUz
M2UxNzIzOGM0Y2E4YmJmMDE4NzBjNjYxYWY1YTc3YzE5MGRmLi41MjVhNTdhOGNiNDdjMjQ0N2Ex
ZjM2MDU4YzE3NDczNTE3ODlmZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtNDIsNiAr
NDIsNyBAQAogLy8gc28gd2Ugd2lsbCB0b28uCiAjaW5jbHVkZSAiR0lGSW1hZ2VEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAj
ZGVmaW5lIE1BWF9MWldfQklUUyAgICAgICAgICAxMgogI2RlZmluZSBNQVhfQklUUyAgICAgICAg
ICAgIDQwOTcgLyogMl5NQVhfTFpXX0JJVFMrMSAqLwpAQCAtNzQsMjggKzc1LDE1IEBAIGVudW0g
R0lGU3RhdGUgewogICAgIEdJRkNvbnN1bWVDb21tZW50CiB9OwogCisvLyBGcmFtZSBvdXRwdXQg
c3RhdGUgbWFjaGluZS4KIHN0cnVjdCBHSUZGcmFtZUNvbnRleHQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIExaVyBkZWNvZGVyIHN0YXRlIG1hY2hpbmUu
Ci0gICAgdW5zaWduZWQgY2hhciAqc3RhY2twOyAvLyBDdXJyZW50IHN0YWNrIHBvaW50ZXIuCiAg
ICAgaW50IGRhdGFzaXplOwotICAgIGludCBjb2Rlc2l6ZTsKLSAgICBpbnQgY29kZW1hc2s7Ci0g
ICAgaW50IGNsZWFyQ29kZTsgLy8gQ29kZXdvcmQgdXNlZCB0byB0cmlnZ2VyIGRpY3Rpb25hcnkg
cmVzZXQuCi0gICAgaW50IGF2YWlsOyAvLyBJbmRleCBvZiBuZXh0IGF2YWlsYWJsZSBzbG90IGlu
IGRpY3Rpb25hcnkuCi0gICAgaW50IG9sZGNvZGU7Ci0gICAgdW5zaWduZWQgY2hhciBmaXJzdGNo
YXI7Ci0gICAgaW50IGJpdHM7IC8vIE51bWJlciBvZiB1bnJlYWQgYml0cyBpbiAiZGF0dW0iLgot
ICAgIGludCBkYXR1bTsgLy8gMzItYml0IGlucHV0IGJ1ZmZlci4KLQotICAgIC8vIE91dHB1dCBz
dGF0ZSBtYWNoaW5lLgogICAgIGludCBpcGFzczsgLy8gSW50ZXJsYWNlIHBhc3M7IFJhbmdlcyAx
LTQgaWYgaW50ZXJsYWNlZC4KICAgICB1bnNpZ25lZCByb3dzUmVtYWluaW5nOyAvLyBSb3dzIHJl
bWFpbmluZyB0byBiZSBvdXRwdXQuCiAgICAgdW5zaWduZWQgaXJvdzsgLy8gQ3VycmVudCBvdXRw
dXQgcm93LCBzdGFydGluZyBhdCB6ZXJvLgotICAgIHVuc2lnbmVkIGNoYXIgKnJvd2J1ZjsgLy8g
U2luZ2xlIHNjYW5saW5lIHRlbXBvcmFyeSBidWZmZXIuCi0gICAgdW5zaWduZWQgY2hhciAqcm93
ZW5kOyAvLyBQb2ludGVyIHRvIGVuZCBvZiByb3didWYuCi0gICAgdW5zaWduZWQgY2hhciAqcm93
cDsgLy8gQ3VycmVudCBvdXRwdXQgcG9pbnRlci4KKyAgICBzaXplX3Qgcm93cDsgLy8gQ3VycmVu
dCBvdXRwdXQgcG9pbnRlci4KIAogICAgIC8vIFBhcmFtZXRlcnMgZm9yIGltYWdlIGZyYW1lIGN1
cnJlbnRseSBiZWluZyBkZWNvZGVkLgogICAgIHVuc2lnbmVkIHhPZmZzZXQ7CkBAIC0xMTQsMjYg
KzEwMiwxMSBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBkZWxheVRpbWU7IC8vIERpc3BsYXkg
dGltZSwgaW4gbWlsbGlzZWNvbmRzLCBmb3IgdGhpcyBpbWFnZSBpbiBhIG11bHRpLWltYWdlIEdJ
Ri4KIAotICAgIHVuc2lnbmVkIHNob3J0KiBwcmVmaXg7IC8vIExaVyBkZWNvZGluZyB0YWJsZXMu
Ci0gICAgdW5zaWduZWQgY2hhciogc3VmZml4OyAvLyBMWlcgZGVjb2RpbmcgdGFibGVzLgotICAg
IHVuc2lnbmVkIGNoYXIqIHN0YWNrOyAvLyBCYXNlIG9mIExaVyBkZWNvZGVyIHN0YWNrLgotCiAg
ICAgR0lGRnJhbWVDb250ZXh0KCkKLSAgICAgICAgOiBzdGFja3AoMCkKLSAgICAgICAgLCBkYXRh
c2l6ZSgwKQotICAgICAgICAsIGNvZGVzaXplKDApCi0gICAgICAgICwgY29kZW1hc2soMCkKLSAg
ICAgICAgLCBjbGVhckNvZGUoMCkKLSAgICAgICAgLCBhdmFpbCgwKQotICAgICAgICAsIG9sZGNv
ZGUoMCkKLSAgICAgICAgLCBmaXJzdGNoYXIoMCkKLSAgICAgICAgLCBiaXRzKDApCi0gICAgICAg
ICwgZGF0dW0oMCkKKyAgICAgICAgOiBkYXRhc2l6ZSgwKQogICAgICAgICAsIGlwYXNzKDApCiAg
ICAgICAgICwgcm93c1JlbWFpbmluZygwKQogICAgICAgICAsIGlyb3coMCkKLSAgICAgICAgLCBy
b3didWYoMCkKLSAgICAgICAgLCByb3dlbmQoMCkKICAgICAgICAgLCByb3dwKDApCiAgICAgICAg
ICwgeE9mZnNldCgwKQogICAgICAgICAsIHlPZmZzZXQoMCkKQEAgLTE0OCwyMSArMTIxLDQ1IEBA
IHB1YmxpYzoKICAgICAgICAgLCBpbnRlcmxhY2VkKGZhbHNlKQogICAgICAgICAsIGlzVHJhbnNw
YXJlbnQoZmFsc2UpCiAgICAgICAgICwgZGVsYXlUaW1lKDApCi0gICAgICAgICwgcHJlZml4KDAp
Ci0gICAgICAgICwgc3VmZml4KDApCi0gICAgICAgICwgc3RhY2soMCkKICAgICB7CiAgICAgfQog
ICAgIAogICAgIH5HSUZGcmFtZUNvbnRleHQoKQogICAgIHsKLSAgICAgICAgZGVsZXRlIFtdIHJv
d2J1ZjsKLSAgICAgICAgZGVsZXRlIFtdIHByZWZpeDsKLSAgICAgICAgZGVsZXRlIFtdIHN1ZmZp
eDsKLSAgICAgICAgZGVsZXRlIFtdIHN0YWNrOwogICAgIH0KIH07CiAKKy8vIExaVyBkZWNvZGVy
IHN0YXRlIG1hY2hpbmUuCitzdHJ1Y3QgR0lGTFpXQ29udGV4dCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgR0lGTFpXQ29udGV4dCgpCisgICAgICAgIDogc3Rh
Y2twKDApCisgICAgICAgICwgY29kZXNpemUoMCkKKyAgICAgICAgLCBjb2RlbWFzaygwKQorICAg
ICAgICAsIGNsZWFyQ29kZSgwKQorICAgICAgICAsIGF2YWlsKDApCisgICAgICAgICwgb2xkY29k
ZSgwKQorICAgICAgICAsIGZpcnN0Y2hhcigwKQorICAgICAgICAsIGJpdHMoMCkKKyAgICAgICAg
LCBkYXR1bSgwKQorICAgIHsgfQorCisgICAgc2l6ZV90IHN0YWNrcDsgLy8gQ3VycmVudCBzdGFj
ayBwb2ludGVyLgorICAgIGludCBjb2Rlc2l6ZTsKKyAgICBpbnQgY29kZW1hc2s7CisgICAgaW50
IGNsZWFyQ29kZTsgLy8gQ29kZXdvcmQgdXNlZCB0byB0cmlnZ2VyIGRpY3Rpb25hcnkgcmVzZXQu
CisgICAgaW50IGF2YWlsOyAvLyBJbmRleCBvZiBuZXh0IGF2YWlsYWJsZSBzbG90IGluIGRpY3Rp
b25hcnkuCisgICAgaW50IG9sZGNvZGU7CisgICAgdW5zaWduZWQgY2hhciBmaXJzdGNoYXI7Cisg
ICAgaW50IGJpdHM7IC8vIE51bWJlciBvZiB1bnJlYWQgYml0cyBpbiAiZGF0dW0iLgorICAgIGlu
dCBkYXR1bTsgLy8gMzItYml0IGlucHV0IGJ1ZmZlci4KKworICAgIFZlY3Rvcjx1bnNpZ25lZCBz
aG9ydD4gcHJlZml4OyAvLyBMWlcgZGVjb2RpbmcgdGFibGVzLgorICAgIFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiBzdWZmaXg7IC8vIExaVyBkZWNvZGluZyB0YWJsZXMuCisgICAgVmVjdG9yPHVuc2ln
bmVkIGNoYXI+IHN0YWNrOyAvLyBCYXNlIG9mIExaVyBkZWNvZGVyIHN0YWNrLgorfTsKKwogY2xh
c3MgR0lGSW1hZ2VSZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgpAQCAtMjIyLDYgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBvdXRwdXRSb3coKTsKICAg
ICBib29sIGRvTFpXKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgc2l6ZV90KTsKICAgICB2b2lkIHNl
dFJlbWFpbmluZ0J5dGVzKHNpemVfdCk7CisgICAgYm9vbCBwcmVwYXJlTFpXQ29udGV4dChpbnQg
ZGF0YXNpemUpOwogCiAgICAgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YShzaXplX3QgZGF0YVBv
c2l0aW9uKSBjb25zdAogICAgIHsKQEAgLTI0Niw5ICsyNDQsMTIgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2ltYWdlc0RlY29kZWQ7IC8vIENvdW50cyBjb21wbGV0ZWQgZnJhbWVzIGZvciBh
bmltYXRlZCBHSUZzLgogICAgIGludCBtX2ltYWdlc0NvdW50OyAvLyBDb3VudGVkIGFsbCBmcmFt
ZXMgc2VlbiBzbyBmYXIgKGluY2x1ZGluZyBpbmNvbXBsZXRlIGZyYW1lcykuCiAgICAgaW50IG1f
bG9vcENvdW50OyAvLyBOZXRzY2FwZSBzcGVjaWZpYyBleHRlbnNpb24gYmxvY2sgdG8gY29udHJv
bCB0aGUgbnVtYmVyIG9mIGFuaW1hdGlvbiBsb29wcyBhIEdJRiByZW5kZXJzLgorICAgIFZlY3Rv
cjx1bnNpZ25lZCBjaGFyPiBtX3Jvd0J1ZmZlcjsgLy8gU2luZ2xlIHNjYW5saW5lIHRlbXBvcmFy
eSBidWZmZXIuCiAgICAgCiAgICAgR0lGRnJhbWVDb250ZXh0KiBtX2ZyYW1lQ29udGV4dDsKIAor
ICAgIEdJRkxaV0NvbnRleHQgbV9sendDb250ZXh0OworCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9kYXRhOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191070</attachid>
            <date>2013-03-01 16:46:16 -0800</date>
            <delta_ts>2013-03-04 14:37:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111137-20130301164227.patch</filename>
            <type>text/plain</type>
            <size>21843</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZiM2JhZjlkYWFiZWY0
NTBjNDc1OWU3ODEyMDk0NGNhYmNlMDgyYi4uY2M4MzYxMmUwYjVkZjdhYzhkYzQ5OGFjNGQwODQw
ZTVjMmQ0N2RlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAyLTI4ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW9yZSBjbGVhbnVwIGluIEdJ
RkltYWdlUmVhZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTExMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciBHSUZJbWFnZVJlYWRlclJlYWRlciB3aXRoIHRoZSBmb2xsb3dpbmcgY2hh
bmdlczoKKyAgICAgICAgKyBTZXBhcmF0ZSBHSUZMWldDb250ZXh0IGZvciBkZWNvZGluZyBzdGF0
ZXMuCisgICAgICAgICsgUmVwbGFjZSB1bnNpZ25lZCBjaGFyKiB3aXRoIFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPgorCisgICAgICAgIFRoZXJlIGlzIG5vIGNoYW5nZSBpbiBjb2RlIGJlaGF2aW9yIGFu
ZCBqdXN0IHJlZmFjdG9yaW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIEdJRkltYWdlUmVhZGVyVGVzdC4KKyAgICAgICAgSSBhbHNvIGRpZCBh
IGxvY2FsIHRlc3Rpbmcgb24gYSA1MGsgaW1hZ2UgY29ycHVzIGFuZCBzaG93ZWQgbm8gcmVncmVz
c2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2Rl
ZFJvdyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5oOgorICAgICAgICAoR0lGSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoR0lGSW1hZ2VS
ZWFkZXI6Om91dHB1dFJvdyk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6ZG9MWlcpOgorICAg
ICAgICAoR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKToKKyAgICAgICAgKEdJRkltYWdl
UmVhZGVyOjpwcmVwYXJlTFpXQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQpOgor
ICAgICAgICAoR0lGRnJhbWVDb250ZXh0OjpHSUZGcmFtZUNvbnRleHQpOgorICAgICAgICAoR0lG
RnJhbWVDb250ZXh0Ojp+R0lGRnJhbWVDb250ZXh0KToKKyAgICAgICAgKEdJRkxaV0NvbnRleHQp
OgorICAgICAgICAoR0lGTFpXQ29udGV4dDo6R0lGTFpXQ29udGV4dCk6CisgICAgICAgIChHSUZJ
bWFnZVJlYWRlcik6CisKIDIwMTMtMDMtMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtOZXcgTXVsdGljb2x1bW5dIENoYW5nZSBpblJlbmRlckZsb3dUaHJlYWQg
dG8gZm9sbG93IGNvbnRhaW5pbmcgYmxvY2sgY2hhaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAKaW5kZXggNmE1MTQwOTg0NmMwMDUwMDBjOTI3MGEzZmNhNTg5ODI4OTc1YTNkMi4uYmI4ODQx
NWJiMGM1NjU4ZDAyMmE4MWFlNTQ3YmNjMTk3ZGVjMmMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAKQEAgLTE5MywyMCArMTkzLDIwIEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpCiAgICAgfQogfQogCi1i
b29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwg
dW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCBjaGFyKiByb3dFbmQsIHVuc2lnbmVk
IHJvd051bWJlciwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGJvb2wgd3JpdGVUcmFuc3BhcmVudFBp
eGVscykKK2Jvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFt
ZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIHJvd0J1ZmZlciwgc2l6ZV90IHdp
ZHRoLCBzaXplX3Qgcm93TnVtYmVyLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgYm9vbCB3cml0ZVRy
YW5zcGFyZW50UGl4ZWxzKQogewogICAgIGNvbnN0IEdJRkZyYW1lQ29udGV4dCogZnJhbWVDb250
ZXh0ID0gbV9yZWFkZXItPmZyYW1lQ29udGV4dCgpOwogICAgIC8vIFRoZSBwaXhlbCBkYXRhIGFu
ZCBjb29yZGluYXRlcyBzdXBwbGllZCB0byB1cyBhcmUgcmVsYXRpdmUgdG8gdGhlIGZyYW1lJ3MK
ICAgICAvLyBvcmlnaW4gd2l0aGluIHRoZSBlbnRpcmUgaW1hZ2Ugc2l6ZSwgaS5lLgogICAgIC8v
IChmcmFtZUNvbnRleHQtPnhPZmZzZXQsIGZyYW1lQ29udGV4dC0+eU9mZnNldCkuIFRoZXJlIGlz
IG5vIGd1YXJhbnRlZQotICAgIC8vIHRoYXQgKHJvd0VuZCAtIHJvd0J1ZmZlcikgPT0gKHNpemUo
KS53aWR0aCgpIC0gZnJhbWVDb250ZXh0LT54T2Zmc2V0KSwgc28KKyAgICAvLyB0aGF0IHdpZHRo
ID09IChzaXplKCkud2lkdGgoKSAtIGZyYW1lQ29udGV4dC0+eE9mZnNldCksIHNvCiAgICAgLy8g
d2UgbXVzdCBlbnN1cmUgd2UgZG9uJ3QgcnVuIG9mZiB0aGUgZW5kIG9mIGVpdGhlciB0aGUgc291
cmNlIGRhdGEgb3IgdGhlCiAgICAgLy8gcm93J3MgWC1jb29yZGluYXRlcy4KICAgICBpbnQgeEJl
Z2luID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVDb250ZXh0LT54T2Zmc2V0KTsKICAgICBpbnQg
eUJlZ2luID0gdXBwZXJCb3VuZFNjYWxlZFkoZnJhbWVDb250ZXh0LT55T2Zmc2V0ICsgcm93TnVt
YmVyKTsKLSAgICBpbnQgeEVuZCA9IGxvd2VyQm91bmRTY2FsZWRYKHN0ZDo6bWluKHN0YXRpY19j
YXN0PGludD4oZnJhbWVDb250ZXh0LT54T2Zmc2V0ICsgKHJvd0VuZCAtIHJvd0J1ZmZlcikpLCBz
aXplKCkud2lkdGgoKSkgLSAxLCB4QmVnaW4gKyAxKSArIDE7CisgICAgaW50IHhFbmQgPSBsb3dl
ckJvdW5kU2NhbGVkWChzdGQ6Om1pbihzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lQ29udGV4dC0+eE9m
ZnNldCArIHdpZHRoKSwgc2l6ZSgpLndpZHRoKCkpIC0gMSwgeEJlZ2luICsgMSkgKyAxOwogICAg
IGludCB5RW5kID0gbG93ZXJCb3VuZFNjYWxlZFkoc3RkOjptaW4oc3RhdGljX2Nhc3Q8aW50Pihm
cmFtZUNvbnRleHQtPnlPZmZzZXQgKyByb3dOdW1iZXIgKyByZXBlYXRDb3VudCksIHNpemUoKS5o
ZWlnaHQoKSkgLSAxLCB5QmVnaW4gKyAxKSArIDE7Ci0gICAgaWYgKCFyb3dCdWZmZXIgfHwgKHhC
ZWdpbiA8IDApIHx8ICh5QmVnaW4gPCAwKSB8fCAoeEVuZCA8PSB4QmVnaW4pIHx8ICh5RW5kIDw9
IHlCZWdpbikpCisgICAgaWYgKHJvd0J1ZmZlci5pc0VtcHR5KCkgfHwgKHhCZWdpbiA8IDApIHx8
ICh5QmVnaW4gPCAwKSB8fCAoeEVuZCA8PSB4QmVnaW4pIHx8ICh5RW5kIDw9IHlCZWdpbikpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gR2V0IHRoZSBjb2xvcm1hcC4KQEAgLTIzMCw3
ICsyMzAsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5zaWduZWQg
ZnJhbWVJbmRleCwgdW5zaWduZWQgY2hhciogcm93QnVmZgogICAgIEltYWdlRnJhbWU6OlBpeGVs
RGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcih4QmVnaW4sIHlCZWdpbik7CiAg
ICAgLy8gV3JpdGUgb25lIHJvdydzIHdvcnRoIG9mIGRhdGEgaW50byB0aGUgZnJhbWUuICAKICAg
ICBmb3IgKGludCB4ID0geEJlZ2luOyB4IDwgeEVuZDsgKyt4KSB7Ci0gICAgICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIgc291cmNlVmFsdWUgPSAqKHJvd0J1ZmZlciArIChtX3NjYWxlZCA/IG1fc2Nh
bGVkQ29sdW1uc1t4XSA6IHgpIC0gZnJhbWVDb250ZXh0LT54T2Zmc2V0KTsKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9IHJvd0J1ZmZlclsobV9zY2FsZWQgPyBtX3Nj
YWxlZENvbHVtbnNbeF0gOiB4KSAtIGZyYW1lQ29udGV4dC0+eE9mZnNldF07CiAgICAgICAgIGlm
ICgoIWZyYW1lQ29udGV4dC0+aXNUcmFuc3BhcmVudCB8fCAoc291cmNlVmFsdWUgIT0gZnJhbWVD
b250ZXh0LT50cGl4ZWwpKSAmJiAoc291cmNlVmFsdWUgPCBjb2xvck1hcFNpemUpKSB7CiAgICAg
ICAgICAgICBjb25zdCBzaXplX3QgY29sb3JJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc291
cmNlVmFsdWUpICogMzsKICAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKGN1cnJlbnRBZGRyZXNz
LCBjb2xvck1hcFtjb2xvckluZGV4XSwgY29sb3JNYXBbY29sb3JJbmRleCArIDFdLCBjb2xvck1h
cFtjb2xvckluZGV4ICsgMl0sIDI1NSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggOTk4
MmE0NGUxODc3OWNjZmFiZTNmNTg0MjU4NGNjODEwYTEyNTE0YS4uNTVmOWIzNTY0ZjQxMmM3MDcy
MTkxZDc0MDYxYjE5Njc2MTZjNmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNTYs
NyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpOwogCiAgICAgICAgIC8v
IENhbGxiYWNrcyBmcm9tIHRoZSBHSUYgcmVhZGVyLgotICAgICAgICBib29sIGhhdmVEZWNvZGVk
Um93KHVuc2lnbmVkIGZyYW1lSW5kZXgsIHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWdu
ZWQgY2hhciogcm93RW5kLCB1bnNpZ25lZCByb3dOdW1iZXIsIHVuc2lnbmVkIHJlcGVhdENvdW50
LCBib29sIHdyaXRlVHJhbnNwYXJlbnRQaXhlbHMpOworICAgICAgICBib29sIGhhdmVEZWNvZGVk
Um93KHVuc2lnbmVkIGZyYW1lSW5kZXgsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgcm93
QnVmZmVyLCBzaXplX3Qgd2lkdGgsIHNpemVfdCByb3dOdW1iZXIsIHVuc2lnbmVkIHJlcGVhdENv
dW50LCBib29sIHdyaXRlVHJhbnNwYXJlbnRQaXhlbHMpOwogICAgICAgICBib29sIGZyYW1lQ29t
cGxldGUodW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwgSW1hZ2VG
cmFtZTo6RnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCk7CiAgICAgICAgIHZvaWQg
Z2lmQ29tcGxldGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKaW5kZXggY2U1NTg4YmFj
MDFkNzA3NTJmY2EwZDI0MWViZWM3NGEzZDg1OWMwNS4uNWE5NTZiNzE1ZjYyYzY1ZmRhYjgwY2My
NWRmNTdiNWFiOWEwMDc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCkBAIC0xNDksMTEg
KzE0OSwxMiBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpvdXRwdXRSb3coKQogCiAgICAgLy8gQ0FM
TEJBQ0s6IExldCB0aGUgY2xpZW50IGtub3cgd2UgaGF2ZSBkZWNvZGVkIGEgcm93LgogICAgIGlm
IChtX2NsaWVudCAmJiBtX2ZyYW1lQ29udGV4dAotICAgICAgICAmJiAhbV9jbGllbnQtPmhhdmVE
ZWNvZGVkUm93KG1faW1hZ2VzQ291bnQgLSAxLCBtX2ZyYW1lQ29udGV4dC0+cm93YnVmLCBtX2Zy
YW1lQ29udGV4dC0+cm93ZW5kLAorICAgICAgICAmJiAhbV9jbGllbnQtPmhhdmVEZWNvZGVkUm93
KG1faW1hZ2VzQ291bnQgLSAxLCBtX3Jvd0J1ZmZlciwgbV9mcmFtZUNvbnRleHQtPndpZHRoLAog
ICAgICAgICAgICAgZHJvd1N0YXJ0LCBkcm93RW5kIC0gZHJvd1N0YXJ0ICsgMSwgbV9mcmFtZUNv
bnRleHQtPnByb2dyZXNzaXZlRGlzcGxheSAmJiBtX2ZyYW1lQ29udGV4dC0+aW50ZXJsYWNlZCAm
JiBtX2ZyYW1lQ29udGV4dC0+aXBhc3MgPiAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgbV9mcmFtZUNvbnRleHQtPnJvd3AgPSBtX2ZyYW1lQ29udGV4dC0+cm93YnVmOworICAgIC8v
IFByZXBhcmUgZm9yIG5leHQgcm93LiBSZXNldCBwb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2Yg
dGVtcG9yYXJ5IGJ1ZmZlci4KKyAgICBtX2ZyYW1lQ29udGV4dC0+cm93cCA9IDA7CiAKICAgICBp
ZiAoIW1fZnJhbWVDb250ZXh0LT5pbnRlcmxhY2VkKQogICAgICAgICBtX2ZyYW1lQ29udGV4dC0+
aXJvdysrOwpAQCAtMjEzLDMwICsyMTQsMjUgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZG9MWlco
Y29uc3QgdW5zaWduZWQgY2hhciogYmxvY2ssIHNpemVfdCBieXRlc0luQmxvY2spCiAgICAgLy8g
Q29weSBhbGwgdGhlIGRlY29kZXIgc3RhdGUgdmFyaWFibGVzIGludG8gbG9jYWxzIHNvIHRoZSBj
b21waWxlcgogICAgIC8vIHdvbid0IHdvcnJ5IGFib3V0IHRoZW0gYmVpbmcgYWxpYXNlZC4gVGhl
IGxvY2FscyB3aWxsIGJlIGhvbWVkCiAgICAgLy8gYmFjayBpbnRvIHRoZSBHSUYgZGVjb2RlciBz
dHJ1Y3R1cmUgd2hlbiB3ZSBleGl0LgotICAgIGludCBhdmFpbCA9IG1fZnJhbWVDb250ZXh0LT5h
dmFpbDsKLSAgICBpbnQgYml0cyA9IG1fZnJhbWVDb250ZXh0LT5iaXRzOworICAgIGludCBhdmFp
bCA9IG1fbHp3Q29udGV4dC5hdmFpbDsKKyAgICBpbnQgYml0cyA9IG1fbHp3Q29udGV4dC5iaXRz
OwogICAgIHNpemVfdCBjbnQgPSBieXRlc0luQmxvY2s7Ci0gICAgaW50IGNvZGVzaXplID0gbV9m
cmFtZUNvbnRleHQtPmNvZGVzaXplOwotICAgIGludCBjb2RlbWFzayA9IG1fZnJhbWVDb250ZXh0
LT5jb2RlbWFzazsKLSAgICBpbnQgb2xkY29kZSA9IG1fZnJhbWVDb250ZXh0LT5vbGRjb2RlOwot
ICAgIGludCBjbGVhckNvZGUgPSBtX2ZyYW1lQ29udGV4dC0+Y2xlYXJDb2RlOwotICAgIHVuc2ln
bmVkIGNoYXIgZmlyc3RjaGFyID0gbV9mcmFtZUNvbnRleHQtPmZpcnN0Y2hhcjsKLSAgICBpbnQg
ZGF0dW0gPSBtX2ZyYW1lQ29udGV4dC0+ZGF0dW07Ci0KLSAgICBpZiAoIW1fZnJhbWVDb250ZXh0
LT5wcmVmaXgpIHsKLSAgICAgICAgbV9mcmFtZUNvbnRleHQtPnByZWZpeCA9IG5ldyB1bnNpZ25l
ZCBzaG9ydFtNQVhfQklUU107Ci0gICAgICAgIG1lbXNldChtX2ZyYW1lQ29udGV4dC0+cHJlZml4
LCAwLCBNQVhfQklUUyAqIHNpemVvZihzaG9ydCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHNo
b3J0ICpwcmVmaXggPSBtX2ZyYW1lQ29udGV4dC0+cHJlZml4OwotICAgIHVuc2lnbmVkIGNoYXIg
KnN0YWNrcCA9IG1fZnJhbWVDb250ZXh0LT5zdGFja3A7Ci0gICAgdW5zaWduZWQgY2hhciAqc3Vm
Zml4ID0gbV9mcmFtZUNvbnRleHQtPnN1ZmZpeDsKLSAgICB1bnNpZ25lZCBjaGFyICpzdGFjayA9
IG1fZnJhbWVDb250ZXh0LT5zdGFjazsKLSAgICB1bnNpZ25lZCBjaGFyICpyb3dwID0gbV9mcmFt
ZUNvbnRleHQtPnJvd3A7Ci0gICAgdW5zaWduZWQgY2hhciAqcm93ZW5kID0gbV9mcmFtZUNvbnRl
eHQtPnJvd2VuZDsKKyAgICBpbnQgY29kZXNpemUgPSBtX2x6d0NvbnRleHQuY29kZXNpemU7Cisg
ICAgaW50IGNvZGVtYXNrID0gbV9sendDb250ZXh0LmNvZGVtYXNrOworICAgIGludCBvbGRjb2Rl
ID0gbV9sendDb250ZXh0Lm9sZGNvZGU7CisgICAgaW50IGNsZWFyQ29kZSA9IG1fbHp3Q29udGV4
dC5jbGVhckNvZGU7CisgICAgdW5zaWduZWQgY2hhciBmaXJzdGNoYXIgPSBtX2x6d0NvbnRleHQu
Zmlyc3RjaGFyOworICAgIGludCBkYXR1bSA9IG1fbHp3Q29udGV4dC5kYXR1bTsKKworICAgIFZl
Y3Rvcjx1bnNpZ25lZCBzaG9ydD4mIHByZWZpeCA9IG1fbHp3Q29udGV4dC5wcmVmaXg7CisgICAg
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBzdWZmaXggPSBtX2x6d0NvbnRleHQuc3VmZml4OworICAg
IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgc3RhY2sgPSBtX2x6d0NvbnRleHQuc3RhY2s7CisgICAg
c2l6ZV90IHN0YWNrcCA9IG1fbHp3Q29udGV4dC5zdGFja3A7CisgICAgc2l6ZV90IHJvd3AgPSBt
X2ZyYW1lQ29udGV4dC0+cm93cDsKKyAgICBzaXplX3Qgd2lkdGggPSBtX2ZyYW1lQ29udGV4dC0+
d2lkdGg7CiAgICAgdW5zaWduZWQgcm93c1JlbWFpbmluZyA9IG1fZnJhbWVDb250ZXh0LT5yb3dz
UmVtYWluaW5nOwogCi0gICAgaWYgKHJvd3AgPT0gcm93ZW5kKQorICAgIGlmIChyb3dwID09IHdp
ZHRoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2RlZmluZSBPVVRQVVRfUk9XIFwKQEAgLTI3
OSw4ICsyNzUsOCBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkb0xaVyhjb25zdCB1bnNpZ25lZCBj
aGFyKiBibG9jaywgc2l6ZV90IGJ5dGVzSW5CbG9jaykKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKG9sZGNvZGUgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAqcm93cCsrID0gc3Vm
Zml4W2NvZGVdOwotICAgICAgICAgICAgICAgIGlmIChyb3dwID09IHJvd2VuZCkKKyAgICAgICAg
ICAgICAgICBtX3Jvd0J1ZmZlcltyb3dwKytdID0gc3VmZml4W2NvZGVdOworICAgICAgICAgICAg
ICAgIGlmIChyb3dwID09IHdpZHRoKQogICAgICAgICAgICAgICAgICAgICBPVVRQVVRfUk9XOwog
CiAgICAgICAgICAgICAgICAgZmlyc3RjaGFyID0gb2xkY29kZSA9IGNvZGU7CkBAIC0yODksMjkg
KzI4NSwyOSBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkb0xaVyhjb25zdCB1bnNpZ25lZCBjaGFy
KiBibG9jaywgc2l6ZV90IGJ5dGVzSW5CbG9jaykKIAogICAgICAgICAgICAgaW5jb2RlID0gY29k
ZTsKICAgICAgICAgICAgIGlmIChjb2RlID49IGF2YWlsKSB7Ci0gICAgICAgICAgICAgICAgKnN0
YWNrcCsrID0gZmlyc3RjaGFyOworICAgICAgICAgICAgICAgIHN0YWNrW3N0YWNrcCsrXSA9IGZp
cnN0Y2hhcjsKICAgICAgICAgICAgICAgICBjb2RlID0gb2xkY29kZTsKIAotICAgICAgICAgICAg
ICAgIGlmIChzdGFja3AgPT0gc3RhY2sgKyBNQVhfQklUUykKKyAgICAgICAgICAgICAgICBpZiAo
c3RhY2twID09IE1BWF9CWVRFUykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50
ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIHdoaWxlIChjb2RlID49IGNsZWFyQ29kZSkgewotICAgICAgICAgICAgICAgIGlmIChj
b2RlID49IE1BWF9CSVRTIHx8IGNvZGUgPT0gcHJlZml4W2NvZGVdKQorICAgICAgICAgICAgICAg
IGlmIChjb2RlID49IE1BWF9CWVRFUyB8fCBjb2RlID09IHByZWZpeFtjb2RlXSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFs
c2U7CiAKICAgICAgICAgICAgICAgICAvLyBFdmVuIHRob3VnaCBzdWZmaXhbXSBvbmx5IGhvbGRz
IGNoYXJhY3RlcnMgdGhyb3VnaCBzdWZmaXhbYXZhaWwgLSAxXSwKICAgICAgICAgICAgICAgICAv
LyBhbGxvd2luZyBjb2RlID49IGF2YWlsIGhlcmUgbGV0cyB1cyBiZSBtb3JlIHRvbGVyYW50IG9m
IG1hbGZvcm1lZAotICAgICAgICAgICAgICAgIC8vIGRhdGEuIEFzIGxvbmcgYXMgY29kZSA8IE1B
WF9CSVRTLCB0aGUgb25seSByaXNrIGlzIGEgZ2FyYmxlZCBpbWFnZSwKKyAgICAgICAgICAgICAg
ICAvLyBkYXRhLiBBcyBsb25nIGFzIGNvZGUgPCBNQVhfQllURVMsIHRoZSBvbmx5IHJpc2sgaXMg
YSBnYXJibGVkIGltYWdlLAogICAgICAgICAgICAgICAgIC8vIHdoaWNoIGlzIG5vIHdvcnNlIHRo
YW4gcmVmdXNpbmcgdG8gZGlzcGxheSBpdC4KLSAgICAgICAgICAgICAgICAqc3RhY2twKysgPSBz
dWZmaXhbY29kZV07CisgICAgICAgICAgICAgICAgc3RhY2tbc3RhY2twKytdID0gc3VmZml4W2Nv
ZGVdOwogICAgICAgICAgICAgICAgIGNvZGUgPSBwcmVmaXhbY29kZV07CiAKLSAgICAgICAgICAg
ICAgICBpZiAoc3RhY2twID09IHN0YWNrICsgTUFYX0JJVFMpCisgICAgICAgICAgICAgICAgaWYg
KHN0YWNrcCA9PSBNQVhfQllURVMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2NsaWVu
dCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAqc3RhY2twKysgPSBmaXJzdGNoYXIgPSBzdWZmaXhbY29kZV07CisgICAgICAgICAg
ICBzdGFja1tzdGFja3ArK10gPSBmaXJzdGNoYXIgPSBzdWZmaXhbY29kZV07CiAKICAgICAgICAg
ICAgIC8vIERlZmluZSBhIG5ldyBjb2Rld29yZCBpbiB0aGUgZGljdGlvbmFyeS4KICAgICAgICAg
ICAgIGlmIChhdmFpbCA8IDQwOTYpIHsKQEAgLTMzMSwyMyArMzI3LDIzIEBAIGJvb2wgR0lGSW1h
Z2VSZWFkZXI6OmRvTFpXKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJsb2NrLCBzaXplX3QgYnl0ZXNJ
bkJsb2NrKQogCiAgICAgICAgICAgICAvLyBDb3B5IHRoZSBkZWNvZGVkIGRhdGEgb3V0IHRvIHRo
ZSBzY2FubGluZSBidWZmZXIuCiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgKnJv
d3ArKyA9ICotLXN0YWNrcDsKLSAgICAgICAgICAgICAgICBpZiAocm93cCA9PSByb3dlbmQpCisg
ICAgICAgICAgICAgICAgbV9yb3dCdWZmZXJbcm93cCsrXSA9IHN0YWNrWy0tc3RhY2twXTsKKyAg
ICAgICAgICAgICAgICBpZiAocm93cCA9PSB3aWR0aCkKICAgICAgICAgICAgICAgICAgICAgT1VU
UFVUX1JPVzsKLSAgICAgICAgICAgIH0gd2hpbGUgKHN0YWNrcCA+IHN0YWNrKTsKKyAgICAgICAg
ICAgIH0gd2hpbGUgKHN0YWNrcCA+IDApOwogICAgICAgICB9CiAgICAgfQogCiBFTkQ6CiAgICAg
Ly8gSG9tZSB0aGUgbG9jYWwgY29waWVzIG9mIHRoZSBHSUYgZGVjb2RlciBzdGF0ZSB2YXJpYWJs
ZXMuCi0gICAgbV9mcmFtZUNvbnRleHQtPmF2YWlsID0gYXZhaWw7Ci0gICAgbV9mcmFtZUNvbnRl
eHQtPmJpdHMgPSBiaXRzOwotICAgIG1fZnJhbWVDb250ZXh0LT5jb2Rlc2l6ZSA9IGNvZGVzaXpl
OwotICAgIG1fZnJhbWVDb250ZXh0LT5jb2RlbWFzayA9IGNvZGVtYXNrOwotICAgIG1fZnJhbWVD
b250ZXh0LT5vbGRjb2RlID0gb2xkY29kZTsKLSAgICBtX2ZyYW1lQ29udGV4dC0+Zmlyc3RjaGFy
ID0gZmlyc3RjaGFyOwotICAgIG1fZnJhbWVDb250ZXh0LT5kYXR1bSA9IGRhdHVtOwotICAgIG1f
ZnJhbWVDb250ZXh0LT5zdGFja3AgPSBzdGFja3A7CisgICAgbV9sendDb250ZXh0LmF2YWlsID0g
YXZhaWw7CisgICAgbV9sendDb250ZXh0LmJpdHMgPSBiaXRzOworICAgIG1fbHp3Q29udGV4dC5j
b2Rlc2l6ZSA9IGNvZGVzaXplOworICAgIG1fbHp3Q29udGV4dC5jb2RlbWFzayA9IGNvZGVtYXNr
OworICAgIG1fbHp3Q29udGV4dC5vbGRjb2RlID0gb2xkY29kZTsKKyAgICBtX2x6d0NvbnRleHQu
Zmlyc3RjaGFyID0gZmlyc3RjaGFyOworICAgIG1fbHp3Q29udGV4dC5kYXR1bSA9IGRhdHVtOwor
ICAgIG1fbHp3Q29udGV4dC5zdGFja3AgPSBzdGFja3A7CiAgICAgbV9mcmFtZUNvbnRleHQtPnJv
d3AgPSByb3dwOwogICAgIG1fZnJhbWVDb250ZXh0LT5yb3dzUmVtYWluaW5nID0gcm93c1JlbWFp
bmluZzsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM5MCw0MSArMzg2LDEyIEBAIGJvb2wgR0lGSW1h
Z2VSZWFkZXI6OmRlY29kZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4s
IEdJRkltYWdlRGVjCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEdJRkxaV1N0
YXJ0OiB7Ci0gICAgICAgICAgICAvLyBJbml0aWFsaXplIExaVyBwYXJzZXIvZGVjb2Rlci4KLSAg
ICAgICAgICAgIGludCBkYXRhc2l6ZSA9ICpjdXJyZW50Q29tcG9uZW50OwotCi0gICAgICAgICAg
ICAvLyBTaW5jZSB3ZSB1c2UgYSBjb2Rlc2l6ZSBvZiAxIG1vcmUgdGhhbiB0aGUgZGF0YXNpemUs
IHdlIG5lZWQgdG8gZW5zdXJlCi0gICAgICAgICAgICAvLyB0aGF0IG91ciBkYXRhc2l6ZSBpcyBz
dHJpY3RseSBsZXNzIHRoYW4gdGhlIE1BWF9MWldfQklUUyB2YWx1ZSAoMTIpLgotICAgICAgICAg
ICAgLy8gVGhpcyBzZXRzIHRoZSBsYXJnZXN0IHBvc3NpYmxlIGNvZGVtYXNrIGNvcnJlY3RseSBh
dCA0MDk1LgotICAgICAgICAgICAgaWYgKGRhdGFzaXplID49IE1BWF9MWldfQklUUykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2V0RmFpbGVkKCkgOiBmYWxz
ZTsKLSAgICAgICAgICAgIGludCBjbGVhckNvZGUgPSAxIDw8IGRhdGFzaXplOwotICAgICAgICAg
ICAgaWYgKGNsZWFyQ29kZSA+PSBNQVhfQklUUykKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9j
bGllbnQgPyBtX2NsaWVudC0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKLQotICAgICAgICAgICAgaWYg
KG1fZnJhbWVDb250ZXh0KSB7CisgICAgICAgICAgICBpZiAocXVlcnkgPT0gR0lGSW1hZ2VEZWNv
ZGVyOjpHSUZGdWxsUXVlcnkpIHsKKyAgICAgICAgICAgICAgICBpbnQgZGF0YXNpemUgPSAqY3Vy
cmVudENvbXBvbmVudDsKICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+ZGF0YXNpemUg
PSBkYXRhc2l6ZTsKLSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+Y2xlYXJDb2RlID0g
Y2xlYXJDb2RlOwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5hdmFpbCA9IG1fZnJh
bWVDb250ZXh0LT5jbGVhckNvZGUgKyAyOwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0
LT5vbGRjb2RlID0gLTE7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmNvZGVzaXpl
ID0gbV9mcmFtZUNvbnRleHQtPmRhdGFzaXplICsgMTsKLSAgICAgICAgICAgICAgICBtX2ZyYW1l
Q29udGV4dC0+Y29kZW1hc2sgPSAoMSA8PCBtX2ZyYW1lQ29udGV4dC0+Y29kZXNpemUpIC0gMTsK
LSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+ZGF0dW0gPSBtX2ZyYW1lQ29udGV4dC0+
Yml0cyA9IDA7Ci0KLSAgICAgICAgICAgICAgICAvLyBJbml0IHRoZSB0YWJsZXMuCi0gICAgICAg
ICAgICAgICAgaWYgKCFtX2ZyYW1lQ29udGV4dC0+c3VmZml4KQotICAgICAgICAgICAgICAgICAg
ICBtX2ZyYW1lQ29udGV4dC0+c3VmZml4ID0gbmV3IHVuc2lnbmVkIGNoYXJbTUFYX0JJVFNdOwot
Ci0gICAgICAgICAgICAgICAgLy8gQ2xlYXJpbmcgdGhlIHdob2xlIHN1ZmZpeCB0YWJsZSBsZXRz
IHVzIGJlIG1vcmUgdG9sZXJhbnQgb2YgYmFkIGRhdGEuCi0gICAgICAgICAgICAgICAgbWVtc2V0
KG1fZnJhbWVDb250ZXh0LT5zdWZmaXgsIDAsIE1BWF9CSVRTKTsKLSAgICAgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG1fZnJhbWVDb250ZXh0LT5jbGVhckNvZGU7IGkrKykKLSAgICAg
ICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnN1ZmZpeFtpXSA9IGk7Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoIW1fZnJhbWVDb250ZXh0LT5zdGFjaykKLSAgICAgICAgICAgICAgICAgICAg
bV9mcmFtZUNvbnRleHQtPnN0YWNrID0gbmV3IHVuc2lnbmVkIGNoYXJbTUFYX0JJVFNdOwotICAg
ICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5zdGFja3AgPSBtX2ZyYW1lQ29udGV4dC0+c3Rh
Y2s7CisgICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBMWlcgcGFyc2VyL2RlY29kZXIuCisg
ICAgICAgICAgICAgICAgcHJlcGFyZUxaV0NvbnRleHQoZGF0YXNpemUpOwogICAgICAgICAgICAg
fQotCiAgICAgICAgICAgICBHRVROKDEsIEdJRlN1YkJsb2NrKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC03MTIsMTYgKzY3OSw5IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRl
Y29kZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIEdJRkltYWdlRGVj
CiAgICAgICAgICAgICAgICAgLyogVGhpcyBjYXNlIHdpbGwgbmV2ZXIgYmUgdGFrZW4gaWYgdGhp
cyBpcyB0aGUgZmlyc3QgaW1hZ2UgKi8KICAgICAgICAgICAgICAgICAvKiBiZWluZyBkZWNvZGVk
LiBJZiBhbnkgb2YgdGhlIGxhdGVyIGltYWdlcyBhcmUgbGFyZ2VyICAgICAqLwogICAgICAgICAg
ICAgICAgIC8qIHRoYW4gdGhlIHNjcmVlbiBzaXplLCB3ZSBuZWVkIHRvIHJlYWxsb2NhdGUgYnVm
ZmVycy4gICAgICovCi0gICAgICAgICAgICAgICAgaWYgKG1fc2NyZWVuV2lkdGggPCB3aWR0aCkg
ewotICAgICAgICAgICAgICAgICAgICAvKiBYWFggRGV2aWFudCEgKi8KLSAgICAgICAgICAgICAg
ICAgICAgZGVsZXRlIFtdbV9mcmFtZUNvbnRleHQtPnJvd2J1ZjsKLSAgICAgICAgICAgICAgICAg
ICAgbV9zY3JlZW5XaWR0aCA9IHdpZHRoOwotICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29u
dGV4dC0+cm93YnVmID0gbmV3IHVuc2lnbmVkIGNoYXJbbV9zY3JlZW5XaWR0aF07Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlIGlmICghbV9mcmFtZUNvbnRleHQtPnJvd2J1ZikKLSAgICAgICAgICAg
ICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnJvd2J1ZiA9IG5ldyB1bnNpZ25lZCBjaGFyW21fc2Ny
ZWVuV2lkdGhdOwotCi0gICAgICAgICAgICAgICAgaWYgKCFtX2ZyYW1lQ29udGV4dC0+cm93YnVm
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2V0RmFp
bGVkKCkgOiBmYWxzZTsKKyAgICAgICAgICAgICAgICBtX3NjcmVlbldpZHRoID0gc3RkOjptYXgo
bV9zY3JlZW5XaWR0aCwgd2lkdGgpOworICAgICAgICAgICAgICAgIG1fcm93QnVmZmVyLnJlc2l6
ZShtX3NjcmVlbldpZHRoKTsKKwogICAgICAgICAgICAgICAgIGlmIChtX3NjcmVlbkhlaWdodCA8
IGhlaWdodCkKICAgICAgICAgICAgICAgICAgICAgbV9zY3JlZW5IZWlnaHQgPSBoZWlnaHQ7CiAK
QEAgLTc0OCw4ICs3MDgsNyBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJbnRlcm5hbChz
aXplX3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBHSUZJbWFnZURlYwogICAgICAgICAgICAg
ICAgIC8vIENsZWFyIHN0YXRlIGZyb20gbGFzdCBpbWFnZS4KICAgICAgICAgICAgICAgICBtX2Zy
YW1lQ29udGV4dC0+aXJvdyA9IDA7CiAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnJv
d3NSZW1haW5pbmcgPSBtX2ZyYW1lQ29udGV4dC0+aGVpZ2h0OwotICAgICAgICAgICAgICAgIG1f
ZnJhbWVDb250ZXh0LT5yb3dlbmQgPSBtX2ZyYW1lQ29udGV4dC0+cm93YnVmICsgbV9mcmFtZUNv
bnRleHQtPndpZHRoOwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5yb3dwID0gbV9m
cmFtZUNvbnRleHQtPnJvd2J1ZjsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+cm93
cCA9IDA7CiAKICAgICAgICAgICAgICAgICAvLyBiaXRzIHBlciBwaXhlbCBpcyBjdXJyZW50Q29t
cG9uZW50WzhdJjB4MDcKICAgICAgICAgICAgIH0KQEAgLTg0MiwzICs4MDEsMzcgQEAgdm9pZCBH
SUZJbWFnZVJlYWRlcjo6c2V0UmVtYWluaW5nQnl0ZXMoc2l6ZV90IHJlbWFpbmluZ0J5dGVzKQog
ICAgIEFTU0VSVChyZW1haW5pbmdCeXRlcyA8PSBtX2RhdGEtPnNpemUoKSk7CiAgICAgbV9ieXRl
c1JlYWQgPSBtX2RhdGEtPnNpemUoKSAtIHJlbWFpbmluZ0J5dGVzOwogfQorCitib29sIEdJRklt
YWdlUmVhZGVyOjpwcmVwYXJlTFpXQ29udGV4dChpbnQgZGF0YXNpemUpCit7CisgICAgLy8gU2lu
Y2Ugd2UgdXNlIGEgY29kZXNpemUgb2YgMSBtb3JlIHRoYW4gdGhlIGRhdGFzaXplLCB3ZSBuZWVk
IHRvIGVuc3VyZQorICAgIC8vIHRoYXQgb3VyIGRhdGFzaXplIGlzIHN0cmljdGx5IGxlc3MgdGhh
biB0aGUgTUFYX0xaV19CSVRTIHZhbHVlICgxMikuCisgICAgLy8gVGhpcyBzZXRzIHRoZSBsYXJn
ZXN0IHBvc3NpYmxlIGNvZGVtYXNrIGNvcnJlY3RseSBhdCA0MDk1LgorICAgIGlmIChkYXRhc2l6
ZSA+PSBNQVhfTFpXX0JJVFMpCisgICAgICAgIHJldHVybiBtX2NsaWVudC0+c2V0RmFpbGVkKCk7
CisgICAgaW50IGNsZWFyQ29kZSA9IDEgPDwgZGF0YXNpemU7CisgICAgaWYgKGNsZWFyQ29kZSA+
PSBNQVhfQllURVMpCisgICAgICAgIHJldHVybiBtX2NsaWVudC0+c2V0RmFpbGVkKCk7CisKKyAg
ICBtX2x6d0NvbnRleHQuY2xlYXJDb2RlID0gY2xlYXJDb2RlOworICAgIG1fbHp3Q29udGV4dC5h
dmFpbCA9IGNsZWFyQ29kZSArIDI7CisgICAgbV9sendDb250ZXh0Lm9sZGNvZGUgPSAtMTsKKyAg
ICBtX2x6d0NvbnRleHQuY29kZXNpemUgPSBkYXRhc2l6ZSArIDE7CisgICAgbV9sendDb250ZXh0
LmNvZGVtYXNrID0gKDEgPDwgbV9sendDb250ZXh0LmNvZGVzaXplKSAtIDE7CisgICAgbV9sendD
b250ZXh0LmRhdHVtID0gbV9sendDb250ZXh0LmJpdHMgPSAwOworCisgICAgLy8gSW5pdGlhbGl6
ZSB0aGUgdGFibGVzLgorICAgIGlmIChtX2x6d0NvbnRleHQuc3VmZml4LmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9sendDb250ZXh0LnN1ZmZpeC5yZXNpemUoTUFYX0JZVEVTKTsKKyAgICBpZiAobV9s
endDb250ZXh0LnN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgbV9sendDb250ZXh0LnN0YWNrLnJl
c2l6ZShNQVhfQllURVMpOworICAgIGlmIChtX2x6d0NvbnRleHQucHJlZml4LmlzRW1wdHkoKSkK
KyAgICAgICAgbV9sendDb250ZXh0LnByZWZpeC5yZXNpemUoTUFYX0JZVEVTKTsKKworICAgIC8v
IENsZWFyaW5nIHRoZSB3aG9sZSBzdWZmaXggdGFibGUgbGV0cyB1cyBiZSBtb3JlIHRvbGVyYW50
IG9mIGJhZCBkYXRhLgorICAgIG1fbHp3Q29udGV4dC5zdWZmaXguZmlsbCgwKTsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG1fbHp3Q29udGV4dC5jbGVhckNvZGU7IGkrKykKKyAgICAgICAgbV9s
endDb250ZXh0LnN1ZmZpeFtpXSA9IGk7CisgICAgbV9sendDb250ZXh0LnN0YWNrcCA9IDA7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IGMyZTMzZTE3MjM4
YzRjYThiYmYwMTg3MGM2NjFhZjVhNzdjMTkwZGYuLjkzZjk0OTQzODgzMTJhNTIwOTIyZTMyMWI2
NTM2ZmU1MmY5ODFlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC00Miw5ICs0MiwxMCBA
QAogLy8gc28gd2Ugd2lsbCB0b28uCiAjaW5jbHVkZSAiR0lGSW1hZ2VEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjZGVmaW5l
IE1BWF9MWldfQklUUyAgICAgICAgICAxMgotI2RlZmluZSBNQVhfQklUUyAgICAgICAgICAgIDQw
OTcgLyogMl5NQVhfTFpXX0JJVFMrMSAqLworI2RlZmluZSBNQVhfQllURVMgICAgICAgICAgIDQw
OTcgLyogMl5NQVhfTFpXX0JJVFMrMSAqLwogI2RlZmluZSBNQVhfQ09MT1JTICAgICAgICAgICAy
NTYKICNkZWZpbmUgR0lGX0NPTE9SUyAgICAgICAgICAgICAzCiAKQEAgLTc0LDI4ICs3NSwxNSBA
QCBlbnVtIEdJRlN0YXRlIHsKICAgICBHSUZDb25zdW1lQ29tbWVudAogfTsKIAorLy8gRnJhbWUg
b3V0cHV0IHN0YXRlIG1hY2hpbmUuCiBzdHJ1Y3QgR0lGRnJhbWVDb250ZXh0IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICAvLyBMWlcgZGVjb2RlciBzdGF0ZSBt
YWNoaW5lLgotICAgIHVuc2lnbmVkIGNoYXIgKnN0YWNrcDsgLy8gQ3VycmVudCBzdGFjayBwb2lu
dGVyLgogICAgIGludCBkYXRhc2l6ZTsKLSAgICBpbnQgY29kZXNpemU7Ci0gICAgaW50IGNvZGVt
YXNrOwotICAgIGludCBjbGVhckNvZGU7IC8vIENvZGV3b3JkIHVzZWQgdG8gdHJpZ2dlciBkaWN0
aW9uYXJ5IHJlc2V0LgotICAgIGludCBhdmFpbDsgLy8gSW5kZXggb2YgbmV4dCBhdmFpbGFibGUg
c2xvdCBpbiBkaWN0aW9uYXJ5LgotICAgIGludCBvbGRjb2RlOwotICAgIHVuc2lnbmVkIGNoYXIg
Zmlyc3RjaGFyOwotICAgIGludCBiaXRzOyAvLyBOdW1iZXIgb2YgdW5yZWFkIGJpdHMgaW4gImRh
dHVtIi4KLSAgICBpbnQgZGF0dW07IC8vIDMyLWJpdCBpbnB1dCBidWZmZXIuCi0KLSAgICAvLyBP
dXRwdXQgc3RhdGUgbWFjaGluZS4KICAgICBpbnQgaXBhc3M7IC8vIEludGVybGFjZSBwYXNzOyBS
YW5nZXMgMS00IGlmIGludGVybGFjZWQuCiAgICAgdW5zaWduZWQgcm93c1JlbWFpbmluZzsgLy8g
Um93cyByZW1haW5pbmcgdG8gYmUgb3V0cHV0LgogICAgIHVuc2lnbmVkIGlyb3c7IC8vIEN1cnJl
bnQgb3V0cHV0IHJvdywgc3RhcnRpbmcgYXQgemVyby4KLSAgICB1bnNpZ25lZCBjaGFyICpyb3di
dWY7IC8vIFNpbmdsZSBzY2FubGluZSB0ZW1wb3JhcnkgYnVmZmVyLgotICAgIHVuc2lnbmVkIGNo
YXIgKnJvd2VuZDsgLy8gUG9pbnRlciB0byBlbmQgb2Ygcm93YnVmLgotICAgIHVuc2lnbmVkIGNo
YXIgKnJvd3A7IC8vIEN1cnJlbnQgb3V0cHV0IHBvaW50ZXIuCisgICAgc2l6ZV90IHJvd3A7IC8v
IEN1cnJlbnQgb3V0cHV0IHBvaW50ZXIuCiAKICAgICAvLyBQYXJhbWV0ZXJzIGZvciBpbWFnZSBm
cmFtZSBjdXJyZW50bHkgYmVpbmcgZGVjb2RlZC4KICAgICB1bnNpZ25lZCB4T2Zmc2V0OwpAQCAt
MTE0LDI2ICsxMDIsMTEgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgZGVsYXlUaW1lOyAvLyBE
aXNwbGF5IHRpbWUsIGluIG1pbGxpc2Vjb25kcywgZm9yIHRoaXMgaW1hZ2UgaW4gYSBtdWx0aS1p
bWFnZSBHSUYuCiAKLSAgICB1bnNpZ25lZCBzaG9ydCogcHJlZml4OyAvLyBMWlcgZGVjb2Rpbmcg
dGFibGVzLgotICAgIHVuc2lnbmVkIGNoYXIqIHN1ZmZpeDsgLy8gTFpXIGRlY29kaW5nIHRhYmxl
cy4KLSAgICB1bnNpZ25lZCBjaGFyKiBzdGFjazsgLy8gQmFzZSBvZiBMWlcgZGVjb2RlciBzdGFj
ay4KLQogICAgIEdJRkZyYW1lQ29udGV4dCgpCi0gICAgICAgIDogc3RhY2twKDApCi0gICAgICAg
ICwgZGF0YXNpemUoMCkKLSAgICAgICAgLCBjb2Rlc2l6ZSgwKQotICAgICAgICAsIGNvZGVtYXNr
KDApCi0gICAgICAgICwgY2xlYXJDb2RlKDApCi0gICAgICAgICwgYXZhaWwoMCkKLSAgICAgICAg
LCBvbGRjb2RlKDApCi0gICAgICAgICwgZmlyc3RjaGFyKDApCi0gICAgICAgICwgYml0cygwKQot
ICAgICAgICAsIGRhdHVtKDApCisgICAgICAgIDogZGF0YXNpemUoMCkKICAgICAgICAgLCBpcGFz
cygwKQogICAgICAgICAsIHJvd3NSZW1haW5pbmcoMCkKICAgICAgICAgLCBpcm93KDApCi0gICAg
ICAgICwgcm93YnVmKDApCi0gICAgICAgICwgcm93ZW5kKDApCiAgICAgICAgICwgcm93cCgwKQog
ICAgICAgICAsIHhPZmZzZXQoMCkKICAgICAgICAgLCB5T2Zmc2V0KDApCkBAIC0xNDgsMjEgKzEy
MSw0NSBAQCBwdWJsaWM6CiAgICAgICAgICwgaW50ZXJsYWNlZChmYWxzZSkKICAgICAgICAgLCBp
c1RyYW5zcGFyZW50KGZhbHNlKQogICAgICAgICAsIGRlbGF5VGltZSgwKQotICAgICAgICAsIHBy
ZWZpeCgwKQotICAgICAgICAsIHN1ZmZpeCgwKQotICAgICAgICAsIHN0YWNrKDApCiAgICAgewog
ICAgIH0KICAgICAKICAgICB+R0lGRnJhbWVDb250ZXh0KCkKICAgICB7Ci0gICAgICAgIGRlbGV0
ZSBbXSByb3didWY7Ci0gICAgICAgIGRlbGV0ZSBbXSBwcmVmaXg7Ci0gICAgICAgIGRlbGV0ZSBb
XSBzdWZmaXg7Ci0gICAgICAgIGRlbGV0ZSBbXSBzdGFjazsKICAgICB9CiB9OwogCisvLyBMWlcg
ZGVjb2RlciBzdGF0ZSBtYWNoaW5lLgorc3RydWN0IEdJRkxaV0NvbnRleHQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEdJRkxaV0NvbnRleHQoKQorICAgICAg
ICA6IHN0YWNrcCgwKQorICAgICAgICAsIGNvZGVzaXplKDApCisgICAgICAgICwgY29kZW1hc2so
MCkKKyAgICAgICAgLCBjbGVhckNvZGUoMCkKKyAgICAgICAgLCBhdmFpbCgwKQorICAgICAgICAs
IG9sZGNvZGUoMCkKKyAgICAgICAgLCBmaXJzdGNoYXIoMCkKKyAgICAgICAgLCBiaXRzKDApCisg
ICAgICAgICwgZGF0dW0oMCkKKyAgICB7IH0KKworICAgIHNpemVfdCBzdGFja3A7IC8vIEN1cnJl
bnQgc3RhY2sgcG9pbnRlci4KKyAgICBpbnQgY29kZXNpemU7CisgICAgaW50IGNvZGVtYXNrOwor
ICAgIGludCBjbGVhckNvZGU7IC8vIENvZGV3b3JkIHVzZWQgdG8gdHJpZ2dlciBkaWN0aW9uYXJ5
IHJlc2V0LgorICAgIGludCBhdmFpbDsgLy8gSW5kZXggb2YgbmV4dCBhdmFpbGFibGUgc2xvdCBp
biBkaWN0aW9uYXJ5LgorICAgIGludCBvbGRjb2RlOworICAgIHVuc2lnbmVkIGNoYXIgZmlyc3Rj
aGFyOworICAgIGludCBiaXRzOyAvLyBOdW1iZXIgb2YgdW5yZWFkIGJpdHMgaW4gImRhdHVtIi4K
KyAgICBpbnQgZGF0dW07IC8vIDMyLWJpdCBpbnB1dCBidWZmZXIuCisKKyAgICBWZWN0b3I8dW5z
aWduZWQgc2hvcnQ+IHByZWZpeDsKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gc3VmZml4Owor
ICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBzdGFjazsKK307CisKIGNsYXNzIEdJRkltYWdlUmVh
ZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTIyMiw2ICsy
MTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgb3V0cHV0Um93KCk7CiAgICAgYm9vbCBkb0xaVyhj
b25zdCB1bnNpZ25lZCBjaGFyICosIHNpemVfdCk7CiAgICAgdm9pZCBzZXRSZW1haW5pbmdCeXRl
cyhzaXplX3QpOworICAgIGJvb2wgcHJlcGFyZUxaV0NvbnRleHQoaW50IGRhdGFzaXplKTsKIAog
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEoc2l6ZV90IGRhdGFQb3NpdGlvbikgY29uc3QK
ICAgICB7CkBAIC0yNDYsOSArMjQ0LDEyIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pbWFn
ZXNEZWNvZGVkOyAvLyBDb3VudHMgY29tcGxldGVkIGZyYW1lcyBmb3IgYW5pbWF0ZWQgR0lGcy4K
ICAgICBpbnQgbV9pbWFnZXNDb3VudDsgLy8gQ291bnRlZCBhbGwgZnJhbWVzIHNlZW4gc28gZmFy
IChpbmNsdWRpbmcgaW5jb21wbGV0ZSBmcmFtZXMpLgogICAgIGludCBtX2xvb3BDb3VudDsgLy8g
TmV0c2NhcGUgc3BlY2lmaWMgZXh0ZW5zaW9uIGJsb2NrIHRvIGNvbnRyb2wgdGhlIG51bWJlciBv
ZiBhbmltYXRpb24gbG9vcHMgYSBHSUYgcmVuZGVycy4KKyAgICBWZWN0b3I8dW5zaWduZWQgY2hh
cj4gbV9yb3dCdWZmZXI7IC8vIFNpbmdsZSBzY2FubGluZSB0ZW1wb3JhcnkgYnVmZmVyLgogICAg
IAogICAgIEdJRkZyYW1lQ29udGV4dCogbV9mcmFtZUNvbnRleHQ7CiAKKyAgICBHSUZMWldDb250
ZXh0IG1fbHp3Q29udGV4dDsKKwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191313</attachid>
            <date>2013-03-04 14:37:14 -0800</date>
            <delta_ts>2013-03-04 20:01:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111137-20130304143321.patch</filename>
            <type>text/plain</type>
            <size>29083</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZiM2JhZjlkYWFiZWY0
NTBjNDc1OWU3ODEyMDk0NGNhYmNlMDgyYi4uY2M4MzYxMmUwYjVkZjdhYzhkYzQ5OGFjNGQwODQw
ZTVjMmQ0N2RlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAyLTI4ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW9yZSBjbGVhbnVwIGluIEdJ
RkltYWdlUmVhZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTExMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciBHSUZJbWFnZVJlYWRlclJlYWRlciB3aXRoIHRoZSBmb2xsb3dpbmcgY2hh
bmdlczoKKyAgICAgICAgKyBTZXBhcmF0ZSBHSUZMWldDb250ZXh0IGZvciBkZWNvZGluZyBzdGF0
ZXMuCisgICAgICAgICsgUmVwbGFjZSB1bnNpZ25lZCBjaGFyKiB3aXRoIFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPgorCisgICAgICAgIFRoZXJlIGlzIG5vIGNoYW5nZSBpbiBjb2RlIGJlaGF2aW9yIGFu
ZCBqdXN0IHJlZmFjdG9yaW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIEdJRkltYWdlUmVhZGVyVGVzdC4KKyAgICAgICAgSSBhbHNvIGRpZCBh
IGxvY2FsIHRlc3Rpbmcgb24gYSA1MGsgaW1hZ2UgY29ycHVzIGFuZCBzaG93ZWQgbm8gcmVncmVz
c2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2Rl
ZFJvdyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5oOgorICAgICAgICAoR0lGSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoR0lGSW1hZ2VS
ZWFkZXI6Om91dHB1dFJvdyk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6ZG9MWlcpOgorICAg
ICAgICAoR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKToKKyAgICAgICAgKEdJRkltYWdl
UmVhZGVyOjpwcmVwYXJlTFpXQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQpOgor
ICAgICAgICAoR0lGRnJhbWVDb250ZXh0OjpHSUZGcmFtZUNvbnRleHQpOgorICAgICAgICAoR0lG
RnJhbWVDb250ZXh0Ojp+R0lGRnJhbWVDb250ZXh0KToKKyAgICAgICAgKEdJRkxaV0NvbnRleHQp
OgorICAgICAgICAoR0lGTFpXQ29udGV4dDo6R0lGTFpXQ29udGV4dCk6CisgICAgICAgIChHSUZJ
bWFnZVJlYWRlcik6CisKIDIwMTMtMDMtMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtOZXcgTXVsdGljb2x1bW5dIENoYW5nZSBpblJlbmRlckZsb3dUaHJlYWQg
dG8gZm9sbG93IGNvbnRhaW5pbmcgYmxvY2sgY2hhaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAKaW5kZXggNmE1MTQwOTg0NmMwMDUwMDBjOTI3MGEzZmNhNTg5ODI4OTc1YTNkMi4uYmI4ODQx
NWJiMGM1NjU4ZDAyMmE4MWFlNTQ3YmNjMTk3ZGVjMmMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAKQEAgLTE5MywyMCArMTkzLDIwIEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpCiAgICAgfQogfQogCi1i
b29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwg
dW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCBjaGFyKiByb3dFbmQsIHVuc2lnbmVk
IHJvd051bWJlciwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGJvb2wgd3JpdGVUcmFuc3BhcmVudFBp
eGVscykKK2Jvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFt
ZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIHJvd0J1ZmZlciwgc2l6ZV90IHdp
ZHRoLCBzaXplX3Qgcm93TnVtYmVyLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgYm9vbCB3cml0ZVRy
YW5zcGFyZW50UGl4ZWxzKQogewogICAgIGNvbnN0IEdJRkZyYW1lQ29udGV4dCogZnJhbWVDb250
ZXh0ID0gbV9yZWFkZXItPmZyYW1lQ29udGV4dCgpOwogICAgIC8vIFRoZSBwaXhlbCBkYXRhIGFu
ZCBjb29yZGluYXRlcyBzdXBwbGllZCB0byB1cyBhcmUgcmVsYXRpdmUgdG8gdGhlIGZyYW1lJ3MK
ICAgICAvLyBvcmlnaW4gd2l0aGluIHRoZSBlbnRpcmUgaW1hZ2Ugc2l6ZSwgaS5lLgogICAgIC8v
IChmcmFtZUNvbnRleHQtPnhPZmZzZXQsIGZyYW1lQ29udGV4dC0+eU9mZnNldCkuIFRoZXJlIGlz
IG5vIGd1YXJhbnRlZQotICAgIC8vIHRoYXQgKHJvd0VuZCAtIHJvd0J1ZmZlcikgPT0gKHNpemUo
KS53aWR0aCgpIC0gZnJhbWVDb250ZXh0LT54T2Zmc2V0KSwgc28KKyAgICAvLyB0aGF0IHdpZHRo
ID09IChzaXplKCkud2lkdGgoKSAtIGZyYW1lQ29udGV4dC0+eE9mZnNldCksIHNvCiAgICAgLy8g
d2UgbXVzdCBlbnN1cmUgd2UgZG9uJ3QgcnVuIG9mZiB0aGUgZW5kIG9mIGVpdGhlciB0aGUgc291
cmNlIGRhdGEgb3IgdGhlCiAgICAgLy8gcm93J3MgWC1jb29yZGluYXRlcy4KICAgICBpbnQgeEJl
Z2luID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVDb250ZXh0LT54T2Zmc2V0KTsKICAgICBpbnQg
eUJlZ2luID0gdXBwZXJCb3VuZFNjYWxlZFkoZnJhbWVDb250ZXh0LT55T2Zmc2V0ICsgcm93TnVt
YmVyKTsKLSAgICBpbnQgeEVuZCA9IGxvd2VyQm91bmRTY2FsZWRYKHN0ZDo6bWluKHN0YXRpY19j
YXN0PGludD4oZnJhbWVDb250ZXh0LT54T2Zmc2V0ICsgKHJvd0VuZCAtIHJvd0J1ZmZlcikpLCBz
aXplKCkud2lkdGgoKSkgLSAxLCB4QmVnaW4gKyAxKSArIDE7CisgICAgaW50IHhFbmQgPSBsb3dl
ckJvdW5kU2NhbGVkWChzdGQ6Om1pbihzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lQ29udGV4dC0+eE9m
ZnNldCArIHdpZHRoKSwgc2l6ZSgpLndpZHRoKCkpIC0gMSwgeEJlZ2luICsgMSkgKyAxOwogICAg
IGludCB5RW5kID0gbG93ZXJCb3VuZFNjYWxlZFkoc3RkOjptaW4oc3RhdGljX2Nhc3Q8aW50Pihm
cmFtZUNvbnRleHQtPnlPZmZzZXQgKyByb3dOdW1iZXIgKyByZXBlYXRDb3VudCksIHNpemUoKS5o
ZWlnaHQoKSkgLSAxLCB5QmVnaW4gKyAxKSArIDE7Ci0gICAgaWYgKCFyb3dCdWZmZXIgfHwgKHhC
ZWdpbiA8IDApIHx8ICh5QmVnaW4gPCAwKSB8fCAoeEVuZCA8PSB4QmVnaW4pIHx8ICh5RW5kIDw9
IHlCZWdpbikpCisgICAgaWYgKHJvd0J1ZmZlci5pc0VtcHR5KCkgfHwgKHhCZWdpbiA8IDApIHx8
ICh5QmVnaW4gPCAwKSB8fCAoeEVuZCA8PSB4QmVnaW4pIHx8ICh5RW5kIDw9IHlCZWdpbikpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gR2V0IHRoZSBjb2xvcm1hcC4KQEAgLTIzMCw3
ICsyMzAsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5zaWduZWQg
ZnJhbWVJbmRleCwgdW5zaWduZWQgY2hhciogcm93QnVmZgogICAgIEltYWdlRnJhbWU6OlBpeGVs
RGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcih4QmVnaW4sIHlCZWdpbik7CiAg
ICAgLy8gV3JpdGUgb25lIHJvdydzIHdvcnRoIG9mIGRhdGEgaW50byB0aGUgZnJhbWUuICAKICAg
ICBmb3IgKGludCB4ID0geEJlZ2luOyB4IDwgeEVuZDsgKyt4KSB7Ci0gICAgICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIgc291cmNlVmFsdWUgPSAqKHJvd0J1ZmZlciArIChtX3NjYWxlZCA/IG1fc2Nh
bGVkQ29sdW1uc1t4XSA6IHgpIC0gZnJhbWVDb250ZXh0LT54T2Zmc2V0KTsKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9IHJvd0J1ZmZlclsobV9zY2FsZWQgPyBtX3Nj
YWxlZENvbHVtbnNbeF0gOiB4KSAtIGZyYW1lQ29udGV4dC0+eE9mZnNldF07CiAgICAgICAgIGlm
ICgoIWZyYW1lQ29udGV4dC0+aXNUcmFuc3BhcmVudCB8fCAoc291cmNlVmFsdWUgIT0gZnJhbWVD
b250ZXh0LT50cGl4ZWwpKSAmJiAoc291cmNlVmFsdWUgPCBjb2xvck1hcFNpemUpKSB7CiAgICAg
ICAgICAgICBjb25zdCBzaXplX3QgY29sb3JJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc291
cmNlVmFsdWUpICogMzsKICAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKGN1cnJlbnRBZGRyZXNz
LCBjb2xvck1hcFtjb2xvckluZGV4XSwgY29sb3JNYXBbY29sb3JJbmRleCArIDFdLCBjb2xvck1h
cFtjb2xvckluZGV4ICsgMl0sIDI1NSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggOTk4
MmE0NGUxODc3OWNjZmFiZTNmNTg0MjU4NGNjODEwYTEyNTE0YS4uNTVmOWIzNTY0ZjQxMmM3MDcy
MTkxZDc0MDYxYjE5Njc2MTZjNmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNTYs
NyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpOwogCiAgICAgICAgIC8v
IENhbGxiYWNrcyBmcm9tIHRoZSBHSUYgcmVhZGVyLgotICAgICAgICBib29sIGhhdmVEZWNvZGVk
Um93KHVuc2lnbmVkIGZyYW1lSW5kZXgsIHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWdu
ZWQgY2hhciogcm93RW5kLCB1bnNpZ25lZCByb3dOdW1iZXIsIHVuc2lnbmVkIHJlcGVhdENvdW50
LCBib29sIHdyaXRlVHJhbnNwYXJlbnRQaXhlbHMpOworICAgICAgICBib29sIGhhdmVEZWNvZGVk
Um93KHVuc2lnbmVkIGZyYW1lSW5kZXgsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgcm93
QnVmZmVyLCBzaXplX3Qgd2lkdGgsIHNpemVfdCByb3dOdW1iZXIsIHVuc2lnbmVkIHJlcGVhdENv
dW50LCBib29sIHdyaXRlVHJhbnNwYXJlbnRQaXhlbHMpOwogICAgICAgICBib29sIGZyYW1lQ29t
cGxldGUodW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwgSW1hZ2VG
cmFtZTo6RnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCk7CiAgICAgICAgIHZvaWQg
Z2lmQ29tcGxldGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKaW5kZXggY2U1NTg4YmFj
MDFkNzA3NTJmY2EwZDI0MWViZWM3NGEzZDg1OWMwNS4uYjg3ZjZkZjU3ZTc2OTVkNTViZDM1NzRl
MmMyMzE5MGVkZGY3ZjMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCkBAIC0xNDksMTIg
KzE0OSwxMCBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpvdXRwdXRSb3coKQogCiAgICAgLy8gQ0FM
TEJBQ0s6IExldCB0aGUgY2xpZW50IGtub3cgd2UgaGF2ZSBkZWNvZGVkIGEgcm93LgogICAgIGlm
IChtX2NsaWVudCAmJiBtX2ZyYW1lQ29udGV4dAotICAgICAgICAmJiAhbV9jbGllbnQtPmhhdmVE
ZWNvZGVkUm93KG1faW1hZ2VzQ291bnQgLSAxLCBtX2ZyYW1lQ29udGV4dC0+cm93YnVmLCBtX2Zy
YW1lQ29udGV4dC0+cm93ZW5kLAorICAgICAgICAmJiAhbV9jbGllbnQtPmhhdmVEZWNvZGVkUm93
KG1faW1hZ2VzQ291bnQgLSAxLCBtX2x6d0NvbnRleHQucm93QnVmZmVyLCBtX2ZyYW1lQ29udGV4
dC0+d2lkdGgsCiAgICAgICAgICAgICBkcm93U3RhcnQsIGRyb3dFbmQgLSBkcm93U3RhcnQgKyAx
LCBtX2ZyYW1lQ29udGV4dC0+cHJvZ3Jlc3NpdmVEaXNwbGF5ICYmIG1fZnJhbWVDb250ZXh0LT5p
bnRlcmxhY2VkICYmIG1fZnJhbWVDb250ZXh0LT5pcGFzcyA+IDEpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBtX2ZyYW1lQ29udGV4dC0+cm93cCA9IG1fZnJhbWVDb250ZXh0LT5yb3di
dWY7Ci0KICAgICBpZiAoIW1fZnJhbWVDb250ZXh0LT5pbnRlcmxhY2VkKQogICAgICAgICBtX2Zy
YW1lQ29udGV4dC0+aXJvdysrOwogICAgIGVsc2UgewpAQCAtMjEzLDMwICsyMTEsMjUgQEAgYm9v
bCBHSUZJbWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciogYmxvY2ssIHNpemVf
dCBieXRlc0luQmxvY2spCiAgICAgLy8gQ29weSBhbGwgdGhlIGRlY29kZXIgc3RhdGUgdmFyaWFi
bGVzIGludG8gbG9jYWxzIHNvIHRoZSBjb21waWxlcgogICAgIC8vIHdvbid0IHdvcnJ5IGFib3V0
IHRoZW0gYmVpbmcgYWxpYXNlZC4gVGhlIGxvY2FscyB3aWxsIGJlIGhvbWVkCiAgICAgLy8gYmFj
ayBpbnRvIHRoZSBHSUYgZGVjb2RlciBzdHJ1Y3R1cmUgd2hlbiB3ZSBleGl0LgotICAgIGludCBh
dmFpbCA9IG1fZnJhbWVDb250ZXh0LT5hdmFpbDsKLSAgICBpbnQgYml0cyA9IG1fZnJhbWVDb250
ZXh0LT5iaXRzOworICAgIGludCBhdmFpbCA9IG1fbHp3Q29udGV4dC5hdmFpbDsKKyAgICBpbnQg
Yml0cyA9IG1fbHp3Q29udGV4dC5iaXRzOwogICAgIHNpemVfdCBjbnQgPSBieXRlc0luQmxvY2s7
Ci0gICAgaW50IGNvZGVzaXplID0gbV9mcmFtZUNvbnRleHQtPmNvZGVzaXplOwotICAgIGludCBj
b2RlbWFzayA9IG1fZnJhbWVDb250ZXh0LT5jb2RlbWFzazsKLSAgICBpbnQgb2xkY29kZSA9IG1f
ZnJhbWVDb250ZXh0LT5vbGRjb2RlOwotICAgIGludCBjbGVhckNvZGUgPSBtX2ZyYW1lQ29udGV4
dC0+Y2xlYXJDb2RlOwotICAgIHVuc2lnbmVkIGNoYXIgZmlyc3RjaGFyID0gbV9mcmFtZUNvbnRl
eHQtPmZpcnN0Y2hhcjsKLSAgICBpbnQgZGF0dW0gPSBtX2ZyYW1lQ29udGV4dC0+ZGF0dW07Ci0K
LSAgICBpZiAoIW1fZnJhbWVDb250ZXh0LT5wcmVmaXgpIHsKLSAgICAgICAgbV9mcmFtZUNvbnRl
eHQtPnByZWZpeCA9IG5ldyB1bnNpZ25lZCBzaG9ydFtNQVhfQklUU107Ci0gICAgICAgIG1lbXNl
dChtX2ZyYW1lQ29udGV4dC0+cHJlZml4LCAwLCBNQVhfQklUUyAqIHNpemVvZihzaG9ydCkpOwot
ICAgIH0KLQotICAgIHVuc2lnbmVkIHNob3J0ICpwcmVmaXggPSBtX2ZyYW1lQ29udGV4dC0+cHJl
Zml4OwotICAgIHVuc2lnbmVkIGNoYXIgKnN0YWNrcCA9IG1fZnJhbWVDb250ZXh0LT5zdGFja3A7
Ci0gICAgdW5zaWduZWQgY2hhciAqc3VmZml4ID0gbV9mcmFtZUNvbnRleHQtPnN1ZmZpeDsKLSAg
ICB1bnNpZ25lZCBjaGFyICpzdGFjayA9IG1fZnJhbWVDb250ZXh0LT5zdGFjazsKLSAgICB1bnNp
Z25lZCBjaGFyICpyb3dwID0gbV9mcmFtZUNvbnRleHQtPnJvd3A7Ci0gICAgdW5zaWduZWQgY2hh
ciAqcm93ZW5kID0gbV9mcmFtZUNvbnRleHQtPnJvd2VuZDsKLSAgICB1bnNpZ25lZCByb3dzUmVt
YWluaW5nID0gbV9mcmFtZUNvbnRleHQtPnJvd3NSZW1haW5pbmc7Ci0KLSAgICBpZiAocm93cCA9
PSByb3dlbmQpCisgICAgaW50IGNvZGVzaXplID0gbV9sendDb250ZXh0LmNvZGVzaXplOworICAg
IGludCBjb2RlbWFzayA9IG1fbHp3Q29udGV4dC5jb2RlbWFzazsKKyAgICBpbnQgb2xkY29kZSA9
IG1fbHp3Q29udGV4dC5vbGRjb2RlOworICAgIGludCBjbGVhckNvZGUgPSBtX2x6d0NvbnRleHQu
Y2xlYXJDb2RlOworICAgIHVuc2lnbmVkIGNoYXIgZmlyc3RjaGFyID0gbV9sendDb250ZXh0LmZp
cnN0Y2hhcjsKKyAgICBpbnQgZGF0dW0gPSBtX2x6d0NvbnRleHQuZGF0dW07CisKKyAgICBWZWN0
b3I8dW5zaWduZWQgc2hvcnQ+JiBwcmVmaXggPSBtX2x6d0NvbnRleHQucHJlZml4OworICAgIFZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPiYgc3VmZml4ID0gbV9sendDb250ZXh0LnN1ZmZpeDsKKyAgICBW
ZWN0b3I8dW5zaWduZWQgY2hhcj4mIHN0YWNrID0gbV9sendDb250ZXh0LnN0YWNrOworICAgIHNp
emVfdCBzdGFja3AgPSBtX2x6d0NvbnRleHQuc3RhY2twOworICAgIHNpemVfdCByb3dwID0gbV9s
endDb250ZXh0LnJvd1Bvc2l0aW9uOworICAgIHNpemVfdCB3aWR0aCA9IG1fZnJhbWVDb250ZXh0
LT53aWR0aDsKKyAgICBzaXplX3Qgcm93c1JlbWFpbmluZyA9IG1fZnJhbWVDb250ZXh0LT5yb3dz
UmVtYWluaW5nOworCisgICAgaWYgKHJvd3AgPT0gd2lkdGgpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAjZGVmaW5lIE9VVFBVVF9ST1cgXApAQCAtMjQ0LDcgKzIzNyw4IEBAIGJvb2wgR0lGSW1h
Z2VSZWFkZXI6OmRvTFpXKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJsb2NrLCBzaXplX3QgYnl0ZXNJ
bkJsb2NrKQogICAgICAgICBpZiAoIW91dHB1dFJvdygpKSBcCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7IFwKICAgICAgICAgcm93c1JlbWFpbmluZy0tOyBcCi0gICAgICAgIHJvd3AgPSBtX2Zy
YW1lQ29udGV4dC0+cm93cDsgXAorICAgICAgICByb3dwID0gMDsgXAorICAgICAgICBtX2x6d0Nv
bnRleHQucm93UG9zaXRpb24gPSAwOyBcCiAgICAgICAgIGlmICghcm93c1JlbWFpbmluZykgXAog
ICAgICAgICAgICAgZ290byBFTkQ7IFwKICAgICB9IHdoaWxlICgwKQpAQCAtMjc5LDggKzI3Myw4
IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRvTFpXKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJsb2Nr
LCBzaXplX3QgYnl0ZXNJbkJsb2NrKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
b2xkY29kZSA9PSAtMSkgewotICAgICAgICAgICAgICAgICpyb3dwKysgPSBzdWZmaXhbY29kZV07
Ci0gICAgICAgICAgICAgICAgaWYgKHJvd3AgPT0gcm93ZW5kKQorICAgICAgICAgICAgICAgIG1f
bHp3Q29udGV4dC5yb3dCdWZmZXJbcm93cCsrXSA9IHN1ZmZpeFtjb2RlXTsKKyAgICAgICAgICAg
ICAgICBpZiAocm93cCA9PSB3aWR0aCkKICAgICAgICAgICAgICAgICAgICAgT1VUUFVUX1JPVzsK
IAogICAgICAgICAgICAgICAgIGZpcnN0Y2hhciA9IG9sZGNvZGUgPSBjb2RlOwpAQCAtMjg5LDI5
ICsyODMsMjkgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hh
ciogYmxvY2ssIHNpemVfdCBieXRlc0luQmxvY2spCiAKICAgICAgICAgICAgIGluY29kZSA9IGNv
ZGU7CiAgICAgICAgICAgICBpZiAoY29kZSA+PSBhdmFpbCkgewotICAgICAgICAgICAgICAgICpz
dGFja3ArKyA9IGZpcnN0Y2hhcjsKKyAgICAgICAgICAgICAgICBzdGFja1tzdGFja3ArK10gPSBm
aXJzdGNoYXI7CiAgICAgICAgICAgICAgICAgY29kZSA9IG9sZGNvZGU7CiAKLSAgICAgICAgICAg
ICAgICBpZiAoc3RhY2twID09IHN0YWNrICsgTUFYX0JJVFMpCisgICAgICAgICAgICAgICAgaWYg
KHN0YWNrcCA9PSBNQVhfQllURVMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2NsaWVu
dCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICB3aGlsZSAoY29kZSA+PSBjbGVhckNvZGUpIHsKLSAgICAgICAgICAgICAgICBpZiAo
Y29kZSA+PSBNQVhfQklUUyB8fCBjb2RlID09IHByZWZpeFtjb2RlXSkKKyAgICAgICAgICAgICAg
ICBpZiAoY29kZSA+PSBNQVhfQllURVMgfHwgY29kZSA9PSBwcmVmaXhbY29kZV0pCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZh
bHNlOwogCiAgICAgICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2ggc3VmZml4W10gb25seSBob2xk
cyBjaGFyYWN0ZXJzIHRocm91Z2ggc3VmZml4W2F2YWlsIC0gMV0sCiAgICAgICAgICAgICAgICAg
Ly8gYWxsb3dpbmcgY29kZSA+PSBhdmFpbCBoZXJlIGxldHMgdXMgYmUgbW9yZSB0b2xlcmFudCBv
ZiBtYWxmb3JtZWQKLSAgICAgICAgICAgICAgICAvLyBkYXRhLiBBcyBsb25nIGFzIGNvZGUgPCBN
QVhfQklUUywgdGhlIG9ubHkgcmlzayBpcyBhIGdhcmJsZWQgaW1hZ2UsCisgICAgICAgICAgICAg
ICAgLy8gZGF0YS4gQXMgbG9uZyBhcyBjb2RlIDwgTUFYX0JZVEVTLCB0aGUgb25seSByaXNrIGlz
IGEgZ2FyYmxlZCBpbWFnZSwKICAgICAgICAgICAgICAgICAvLyB3aGljaCBpcyBubyB3b3JzZSB0
aGFuIHJlZnVzaW5nIHRvIGRpc3BsYXkgaXQuCi0gICAgICAgICAgICAgICAgKnN0YWNrcCsrID0g
c3VmZml4W2NvZGVdOworICAgICAgICAgICAgICAgIHN0YWNrW3N0YWNrcCsrXSA9IHN1ZmZpeFtj
b2RlXTsKICAgICAgICAgICAgICAgICBjb2RlID0gcHJlZml4W2NvZGVdOwogCi0gICAgICAgICAg
ICAgICAgaWYgKHN0YWNrcCA9PSBzdGFjayArIE1BWF9CSVRTKQorICAgICAgICAgICAgICAgIGlm
IChzdGFja3AgPT0gTUFYX0JZVEVTKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9jbGll
bnQgPyBtX2NsaWVudC0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgKnN0YWNrcCsrID0gZmlyc3RjaGFyID0gc3VmZml4W2NvZGVdOworICAgICAgICAg
ICAgc3RhY2tbc3RhY2twKytdID0gZmlyc3RjaGFyID0gc3VmZml4W2NvZGVdOwogCiAgICAgICAg
ICAgICAvLyBEZWZpbmUgYSBuZXcgY29kZXdvcmQgaW4gdGhlIGRpY3Rpb25hcnkuCiAgICAgICAg
ICAgICBpZiAoYXZhaWwgPCA0MDk2KSB7CkBAIC0zMzEsMjQgKzMyNSwyNCBAQCBib29sIEdJRklt
YWdlUmVhZGVyOjpkb0xaVyhjb25zdCB1bnNpZ25lZCBjaGFyKiBibG9jaywgc2l6ZV90IGJ5dGVz
SW5CbG9jaykKIAogICAgICAgICAgICAgLy8gQ29weSB0aGUgZGVjb2RlZCBkYXRhIG91dCB0byB0
aGUgc2NhbmxpbmUgYnVmZmVyLgogICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICpy
b3dwKysgPSAqLS1zdGFja3A7Ci0gICAgICAgICAgICAgICAgaWYgKHJvd3AgPT0gcm93ZW5kKQor
ICAgICAgICAgICAgICAgIG1fbHp3Q29udGV4dC5yb3dCdWZmZXJbcm93cCsrXSA9IHN0YWNrWy0t
c3RhY2twXTsKKyAgICAgICAgICAgICAgICBpZiAocm93cCA9PSB3aWR0aCkKICAgICAgICAgICAg
ICAgICAgICAgT1VUUFVUX1JPVzsKLSAgICAgICAgICAgIH0gd2hpbGUgKHN0YWNrcCA+IHN0YWNr
KTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHN0YWNrcCA+IDApOwogICAgICAgICB9CiAgICAgfQog
CiBFTkQ6CiAgICAgLy8gSG9tZSB0aGUgbG9jYWwgY29waWVzIG9mIHRoZSBHSUYgZGVjb2RlciBz
dGF0ZSB2YXJpYWJsZXMuCi0gICAgbV9mcmFtZUNvbnRleHQtPmF2YWlsID0gYXZhaWw7Ci0gICAg
bV9mcmFtZUNvbnRleHQtPmJpdHMgPSBiaXRzOwotICAgIG1fZnJhbWVDb250ZXh0LT5jb2Rlc2l6
ZSA9IGNvZGVzaXplOwotICAgIG1fZnJhbWVDb250ZXh0LT5jb2RlbWFzayA9IGNvZGVtYXNrOwot
ICAgIG1fZnJhbWVDb250ZXh0LT5vbGRjb2RlID0gb2xkY29kZTsKLSAgICBtX2ZyYW1lQ29udGV4
dC0+Zmlyc3RjaGFyID0gZmlyc3RjaGFyOwotICAgIG1fZnJhbWVDb250ZXh0LT5kYXR1bSA9IGRh
dHVtOwotICAgIG1fZnJhbWVDb250ZXh0LT5zdGFja3AgPSBzdGFja3A7Ci0gICAgbV9mcmFtZUNv
bnRleHQtPnJvd3AgPSByb3dwOworICAgIG1fbHp3Q29udGV4dC5hdmFpbCA9IGF2YWlsOworICAg
IG1fbHp3Q29udGV4dC5iaXRzID0gYml0czsKKyAgICBtX2x6d0NvbnRleHQuY29kZXNpemUgPSBj
b2Rlc2l6ZTsKKyAgICBtX2x6d0NvbnRleHQuY29kZW1hc2sgPSBjb2RlbWFzazsKKyAgICBtX2x6
d0NvbnRleHQub2xkY29kZSA9IG9sZGNvZGU7CisgICAgbV9sendDb250ZXh0LmZpcnN0Y2hhciA9
IGZpcnN0Y2hhcjsKKyAgICBtX2x6d0NvbnRleHQuZGF0dW0gPSBkYXR1bTsKKyAgICBtX2x6d0Nv
bnRleHQuc3RhY2twID0gc3RhY2twOworICAgIG1fbHp3Q29udGV4dC5yb3dQb3NpdGlvbiA9IHJv
d3A7CiAgICAgbV9mcmFtZUNvbnRleHQtPnJvd3NSZW1haW5pbmcgPSByb3dzUmVtYWluaW5nOwog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzkwLDQxICszODQsMTMgQEAgYm9vbCBHSUZJbWFnZVJl
YWRlcjo6ZGVjb2RlSW50ZXJuYWwoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgR0lG
SW1hZ2VEZWMKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR0lGTFpXU3RhcnQ6
IHsKLSAgICAgICAgICAgIC8vIEluaXRpYWxpemUgTFpXIHBhcnNlci9kZWNvZGVyLgotICAgICAg
ICAgICAgaW50IGRhdGFzaXplID0gKmN1cnJlbnRDb21wb25lbnQ7Ci0KLSAgICAgICAgICAgIC8v
IFNpbmNlIHdlIHVzZSBhIGNvZGVzaXplIG9mIDEgbW9yZSB0aGFuIHRoZSBkYXRhc2l6ZSwgd2Ug
bmVlZCB0byBlbnN1cmUKLSAgICAgICAgICAgIC8vIHRoYXQgb3VyIGRhdGFzaXplIGlzIHN0cmlj
dGx5IGxlc3MgdGhhbiB0aGUgTUFYX0xaV19CSVRTIHZhbHVlICgxMikuCi0gICAgICAgICAgICAv
LyBUaGlzIHNldHMgdGhlIGxhcmdlc3QgcG9zc2libGUgY29kZW1hc2sgY29ycmVjdGx5IGF0IDQw
OTUuCi0gICAgICAgICAgICBpZiAoZGF0YXNpemUgPj0gTUFYX0xaV19CSVRTKQotICAgICAgICAg
ICAgICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwot
ICAgICAgICAgICAgaW50IGNsZWFyQ29kZSA9IDEgPDwgZGF0YXNpemU7Ci0gICAgICAgICAgICBp
ZiAoY2xlYXJDb2RlID49IE1BWF9CSVRTKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2NsaWVu
dCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwotCi0gICAgICAgICAgICBpZiAobV9m
cmFtZUNvbnRleHQpIHsKKyAgICAgICAgICAgIGlmIChxdWVyeSA9PSBHSUZJbWFnZURlY29kZXI6
OkdJRkZ1bGxRdWVyeSkgeworICAgICAgICAgICAgICAgIGludCBkYXRhc2l6ZSA9ICpjdXJyZW50
Q29tcG9uZW50OwogICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5kYXRhc2l6ZSA9IGRh
dGFzaXplOwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5jbGVhckNvZGUgPSBjbGVh
ckNvZGU7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmF2YWlsID0gbV9mcmFtZUNv
bnRleHQtPmNsZWFyQ29kZSArIDI7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPm9s
ZGNvZGUgPSAtMTsKLSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+Y29kZXNpemUgPSBt
X2ZyYW1lQ29udGV4dC0+ZGF0YXNpemUgKyAxOwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250
ZXh0LT5jb2RlbWFzayA9ICgxIDw8IG1fZnJhbWVDb250ZXh0LT5jb2Rlc2l6ZSkgLSAxOwotICAg
ICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5kYXR1bSA9IG1fZnJhbWVDb250ZXh0LT5iaXRz
ID0gMDsKLQotICAgICAgICAgICAgICAgIC8vIEluaXQgdGhlIHRhYmxlcy4KLSAgICAgICAgICAg
ICAgICBpZiAoIW1fZnJhbWVDb250ZXh0LT5zdWZmaXgpCi0gICAgICAgICAgICAgICAgICAgIG1f
ZnJhbWVDb250ZXh0LT5zdWZmaXggPSBuZXcgdW5zaWduZWQgY2hhcltNQVhfQklUU107Ci0KLSAg
ICAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgd2hvbGUgc3VmZml4IHRhYmxlIGxldHMgdXMg
YmUgbW9yZSB0b2xlcmFudCBvZiBiYWQgZGF0YS4KLSAgICAgICAgICAgICAgICBtZW1zZXQobV9m
cmFtZUNvbnRleHQtPnN1ZmZpeCwgMCwgTUFYX0JJVFMpOwotICAgICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbV9mcmFtZUNvbnRleHQtPmNsZWFyQ29kZTsgaSsrKQotICAgICAgICAg
ICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+c3VmZml4W2ldID0gaTsKLQotICAgICAgICAgICAg
ICAgIGlmICghbV9mcmFtZUNvbnRleHQtPnN0YWNrKQotICAgICAgICAgICAgICAgICAgICBtX2Zy
YW1lQ29udGV4dC0+c3RhY2sgPSBuZXcgdW5zaWduZWQgY2hhcltNQVhfQklUU107Ci0gICAgICAg
ICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnN0YWNrcCA9IG1fZnJhbWVDb250ZXh0LT5zdGFjazsK
KyAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIExaVyBwYXJzZXIvZGVjb2Rlci4KKyAgICAg
ICAgICAgICAgICBpZiAoIW1fbHp3Q29udGV4dC5wcmVwYXJlVG9EZWNvZGUobV9zY3JlZW5XaWR0
aCwgZGF0YXNpemUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2Ns
aWVudC0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAg
R0VUTigxLCBHSUZTdWJCbG9jayk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
NzEyLDE2ICs2NzgsOCBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJbnRlcm5hbChzaXpl
X3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBHSUZJbWFnZURlYwogICAgICAgICAgICAgICAg
IC8qIFRoaXMgY2FzZSB3aWxsIG5ldmVyIGJlIHRha2VuIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGlt
YWdlICovCiAgICAgICAgICAgICAgICAgLyogYmVpbmcgZGVjb2RlZC4gSWYgYW55IG9mIHRoZSBs
YXRlciBpbWFnZXMgYXJlIGxhcmdlciAgICAgKi8KICAgICAgICAgICAgICAgICAvKiB0aGFuIHRo
ZSBzY3JlZW4gc2l6ZSwgd2UgbmVlZCB0byByZWFsbG9jYXRlIGJ1ZmZlcnMuICAgICAqLwotICAg
ICAgICAgICAgICAgIGlmIChtX3NjcmVlbldpZHRoIDwgd2lkdGgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgLyogWFhYIERldmlhbnQhICovCi0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBbXW1f
ZnJhbWVDb250ZXh0LT5yb3didWY7Ci0gICAgICAgICAgICAgICAgICAgIG1fc2NyZWVuV2lkdGgg
PSB3aWR0aDsKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnJvd2J1ZiA9IG5l
dyB1bnNpZ25lZCBjaGFyW21fc2NyZWVuV2lkdGhdOwotICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIW1fZnJhbWVDb250ZXh0LT5yb3didWYpCi0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVD
b250ZXh0LT5yb3didWYgPSBuZXcgdW5zaWduZWQgY2hhclttX3NjcmVlbldpZHRoXTsKLQotICAg
ICAgICAgICAgICAgIGlmICghbV9mcmFtZUNvbnRleHQtPnJvd2J1ZikKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7Cisg
ICAgICAgICAgICAgICAgbV9zY3JlZW5XaWR0aCA9IHN0ZDo6bWF4KG1fc2NyZWVuV2lkdGgsIHdp
ZHRoKTsKKwogICAgICAgICAgICAgICAgIGlmIChtX3NjcmVlbkhlaWdodCA8IGhlaWdodCkKICAg
ICAgICAgICAgICAgICAgICAgbV9zY3JlZW5IZWlnaHQgPSBoZWlnaHQ7CiAKQEAgLTc0OCw4ICs3
MDYsNiBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJbnRlcm5hbChzaXplX3QgZGF0YVBv
c2l0aW9uLCBzaXplX3QgbGVuLCBHSUZJbWFnZURlYwogICAgICAgICAgICAgICAgIC8vIENsZWFy
IHN0YXRlIGZyb20gbGFzdCBpbWFnZS4KICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+
aXJvdyA9IDA7CiAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnJvd3NSZW1haW5pbmcg
PSBtX2ZyYW1lQ29udGV4dC0+aGVpZ2h0OwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0
LT5yb3dlbmQgPSBtX2ZyYW1lQ29udGV4dC0+cm93YnVmICsgbV9mcmFtZUNvbnRleHQtPndpZHRo
OwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5yb3dwID0gbV9mcmFtZUNvbnRleHQt
PnJvd2J1ZjsKIAogICAgICAgICAgICAgICAgIC8vIGJpdHMgcGVyIHBpeGVsIGlzIGN1cnJlbnRD
b21wb25lbnRbOF0mMHgwNwogICAgICAgICAgICAgfQpAQCAtODQyLDMgKzc5OCwzNyBAQCB2b2lk
IEdJRkltYWdlUmVhZGVyOjpzZXRSZW1haW5pbmdCeXRlcyhzaXplX3QgcmVtYWluaW5nQnl0ZXMp
CiAgICAgQVNTRVJUKHJlbWFpbmluZ0J5dGVzIDw9IG1fZGF0YS0+c2l6ZSgpKTsKICAgICBtX2J5
dGVzUmVhZCA9IG1fZGF0YS0+c2l6ZSgpIC0gcmVtYWluaW5nQnl0ZXM7CiB9CisKK2Jvb2wgR0lG
TFpXQ29udGV4dDo6cHJlcGFyZVRvRGVjb2RlKHVuc2lnbmVkIHJvd1dpZHRoLCBpbnQgZGF0YXNp
emUpCit7CisgICAgLy8gU2luY2Ugd2UgdXNlIGEgY29kZXNpemUgb2YgMSBtb3JlIHRoYW4gdGhl
IGRhdGFzaXplLCB3ZSBuZWVkIHRvIGVuc3VyZQorICAgIC8vIHRoYXQgb3VyIGRhdGFzaXplIGlz
IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgTUFYX0xaV19CSVRTIHZhbHVlICgxMikuCisgICAgLy8g
VGhpcyBzZXRzIHRoZSBsYXJnZXN0IHBvc3NpYmxlIGNvZGVtYXNrIGNvcnJlY3RseSBhdCA0MDk1
LgorICAgIGlmIChkYXRhc2l6ZSA+PSBNQVhfTFpXX0JJVFMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBjbGVhckNvZGUgPSAxIDw8IGRhdGFzaXplOworICAgIGlmIChjbGVhckNvZGUgPj0g
TUFYX0JZVEVTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdmFpbCA9IGNsZWFyQ29k
ZSArIDI7CisgICAgb2xkY29kZSA9IC0xOworICAgIGNvZGVzaXplID0gZGF0YXNpemUgKyAxOwor
ICAgIGNvZGVtYXNrID0gKDEgPDwgY29kZXNpemUpIC0gMTsKKyAgICBkYXR1bSA9IGJpdHMgPSAw
OworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGFibGVzIGxhemlseSwgdGhpcyBhbGxvd3MgZnJh
bWUgY291bnQgcXVlcnkgdG8gdXNlIGxlc3MgbWVtb3J5LgorICAgIHN1ZmZpeC5yZXNpemUoTUFY
X0JZVEVTKTsKKyAgICBzdGFjay5yZXNpemUoTUFYX0JZVEVTKTsKKyAgICBwcmVmaXgucmVzaXpl
KE1BWF9CWVRFUyk7CisKKyAgICAvLyBJbml0aWFsaXplIG91dHB1dCByb3cgYnVmZmVyLgorICAg
IHJvd0J1ZmZlci5yZXNpemUocm93V2lkdGgpOworICAgIHJvd1Bvc2l0aW9uID0gMDsKKworICAg
IC8vIENsZWFyaW5nIHRoZSB3aG9sZSBzdWZmaXggdGFibGUgbGV0cyB1cyBiZSBtb3JlIHRvbGVy
YW50IG9mIGJhZCBkYXRhLgorICAgIHN1ZmZpeC5maWxsKDApOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgY2xlYXJDb2RlOyBpKyspCisgICAgICAgIHN1ZmZpeFtpXSA9IGk7CisgICAgc3RhY2tw
ID0gMDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKaW5kZXggYzJl
MzNlMTcyMzhjNGNhOGJiZjAxODcwYzY2MWFmNWE3N2MxOTBkZi4uYWUyYThiYjIxY2Q4MzMxMTZh
OWQxNzg2OGZhZjg3MzliYmRmOTNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKQEAgLTQyLDkg
KzQyLDEwIEBACiAvLyBzbyB3ZSB3aWxsIHRvby4KICNpbmNsdWRlICJHSUZJbWFnZURlY29kZXIu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNkZWZpbmUgTUFYX0xaV19CSVRTICAgICAgICAgIDEyCi0jZGVmaW5lIE1BWF9CSVRTICAgICAg
ICAgICAgNDA5NyAvKiAyXk1BWF9MWldfQklUUysxICovCisjZGVmaW5lIE1BWF9CWVRFUyAgICAg
ICAgICAgNDA5NyAvKiAyXk1BWF9MWldfQklUUysxICovCiAjZGVmaW5lIE1BWF9DT0xPUlMgICAg
ICAgICAgIDI1NgogI2RlZmluZSBHSUZfQ09MT1JTICAgICAgICAgICAgIDMKIApAQCAtNzQsMjgg
Kzc1LDE0IEBAIGVudW0gR0lGU3RhdGUgewogICAgIEdJRkNvbnN1bWVDb21tZW50CiB9OwogCisv
LyBGcmFtZSBvdXRwdXQgc3RhdGUgbWFjaGluZS4KIHN0cnVjdCBHSUZGcmFtZUNvbnRleHQgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIExaVyBkZWNvZGVy
IHN0YXRlIG1hY2hpbmUuCi0gICAgdW5zaWduZWQgY2hhciAqc3RhY2twOyAvLyBDdXJyZW50IHN0
YWNrIHBvaW50ZXIuCiAgICAgaW50IGRhdGFzaXplOwotICAgIGludCBjb2Rlc2l6ZTsKLSAgICBp
bnQgY29kZW1hc2s7Ci0gICAgaW50IGNsZWFyQ29kZTsgLy8gQ29kZXdvcmQgdXNlZCB0byB0cmln
Z2VyIGRpY3Rpb25hcnkgcmVzZXQuCi0gICAgaW50IGF2YWlsOyAvLyBJbmRleCBvZiBuZXh0IGF2
YWlsYWJsZSBzbG90IGluIGRpY3Rpb25hcnkuCi0gICAgaW50IG9sZGNvZGU7Ci0gICAgdW5zaWdu
ZWQgY2hhciBmaXJzdGNoYXI7Ci0gICAgaW50IGJpdHM7IC8vIE51bWJlciBvZiB1bnJlYWQgYml0
cyBpbiAiZGF0dW0iLgotICAgIGludCBkYXR1bTsgLy8gMzItYml0IGlucHV0IGJ1ZmZlci4KLQot
ICAgIC8vIE91dHB1dCBzdGF0ZSBtYWNoaW5lLgogICAgIGludCBpcGFzczsgLy8gSW50ZXJsYWNl
IHBhc3M7IFJhbmdlcyAxLTQgaWYgaW50ZXJsYWNlZC4KLSAgICB1bnNpZ25lZCByb3dzUmVtYWlu
aW5nOyAvLyBSb3dzIHJlbWFpbmluZyB0byBiZSBvdXRwdXQuCi0gICAgdW5zaWduZWQgaXJvdzsg
Ly8gQ3VycmVudCBvdXRwdXQgcm93LCBzdGFydGluZyBhdCB6ZXJvLgotICAgIHVuc2lnbmVkIGNo
YXIgKnJvd2J1ZjsgLy8gU2luZ2xlIHNjYW5saW5lIHRlbXBvcmFyeSBidWZmZXIuCi0gICAgdW5z
aWduZWQgY2hhciAqcm93ZW5kOyAvLyBQb2ludGVyIHRvIGVuZCBvZiByb3didWYuCi0gICAgdW5z
aWduZWQgY2hhciAqcm93cDsgLy8gQ3VycmVudCBvdXRwdXQgcG9pbnRlci4KKyAgICBzaXplX3Qg
cm93c1JlbWFpbmluZzsgLy8gUm93cyByZW1haW5pbmcgdG8gYmUgb3V0cHV0LgorICAgIHNpemVf
dCBpcm93OyAvLyBDdXJyZW50IG91dHB1dCByb3csIHN0YXJ0aW5nIGF0IHplcm8uCiAKICAgICAv
LyBQYXJhbWV0ZXJzIGZvciBpbWFnZSBmcmFtZSBjdXJyZW50bHkgYmVpbmcgZGVjb2RlZC4KICAg
ICB1bnNpZ25lZCB4T2Zmc2V0OwpAQCAtMTE0LDI3ICsxMDEsMTEgQEAgcHVibGljOgogCiAgICAg
dW5zaWduZWQgZGVsYXlUaW1lOyAvLyBEaXNwbGF5IHRpbWUsIGluIG1pbGxpc2Vjb25kcywgZm9y
IHRoaXMgaW1hZ2UgaW4gYSBtdWx0aS1pbWFnZSBHSUYuCiAKLSAgICB1bnNpZ25lZCBzaG9ydCog
cHJlZml4OyAvLyBMWlcgZGVjb2RpbmcgdGFibGVzLgotICAgIHVuc2lnbmVkIGNoYXIqIHN1ZmZp
eDsgLy8gTFpXIGRlY29kaW5nIHRhYmxlcy4KLSAgICB1bnNpZ25lZCBjaGFyKiBzdGFjazsgLy8g
QmFzZSBvZiBMWlcgZGVjb2RlciBzdGFjay4KLQogICAgIEdJRkZyYW1lQ29udGV4dCgpCi0gICAg
ICAgIDogc3RhY2twKDApCi0gICAgICAgICwgZGF0YXNpemUoMCkKLSAgICAgICAgLCBjb2Rlc2l6
ZSgwKQotICAgICAgICAsIGNvZGVtYXNrKDApCi0gICAgICAgICwgY2xlYXJDb2RlKDApCi0gICAg
ICAgICwgYXZhaWwoMCkKLSAgICAgICAgLCBvbGRjb2RlKDApCi0gICAgICAgICwgZmlyc3RjaGFy
KDApCi0gICAgICAgICwgYml0cygwKQotICAgICAgICAsIGRhdHVtKDApCisgICAgICAgIDogZGF0
YXNpemUoMCkKICAgICAgICAgLCBpcGFzcygwKQogICAgICAgICAsIHJvd3NSZW1haW5pbmcoMCkK
ICAgICAgICAgLCBpcm93KDApCi0gICAgICAgICwgcm93YnVmKDApCi0gICAgICAgICwgcm93ZW5k
KDApCi0gICAgICAgICwgcm93cCgwKQogICAgICAgICAsIHhPZmZzZXQoMCkKICAgICAgICAgLCB5
T2Zmc2V0KDApCiAgICAgICAgICwgd2lkdGgoMCkKQEAgLTE0OCwyMSArMTE5LDUxIEBAIHB1Ymxp
YzoKICAgICAgICAgLCBpbnRlcmxhY2VkKGZhbHNlKQogICAgICAgICAsIGlzVHJhbnNwYXJlbnQo
ZmFsc2UpCiAgICAgICAgICwgZGVsYXlUaW1lKDApCi0gICAgICAgICwgcHJlZml4KDApCi0gICAg
ICAgICwgc3VmZml4KDApCi0gICAgICAgICwgc3RhY2soMCkKICAgICB7CiAgICAgfQogICAgIAog
ICAgIH5HSUZGcmFtZUNvbnRleHQoKQogICAgIHsKLSAgICAgICAgZGVsZXRlIFtdIHJvd2J1ZjsK
LSAgICAgICAgZGVsZXRlIFtdIHByZWZpeDsKLSAgICAgICAgZGVsZXRlIFtdIHN1ZmZpeDsKLSAg
ICAgICAgZGVsZXRlIFtdIHN0YWNrOwogICAgIH0KIH07CiAKKy8vIExaVyBkZWNvZGVyIHN0YXRl
IG1hY2hpbmUuCisvLyBGSVhNRTogTWFrZSB0aGlzIGEgY2xhc3MgYW5kIGhpZGUgcHJpdmF0ZSBt
ZW1iZXJzLgorc3RydWN0IEdJRkxaV0NvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIEdJRkxaV0NvbnRleHQoKQorICAgICAgICA6IHN0YWNrcCgwKQor
ICAgICAgICAsIGNvZGVzaXplKDApCisgICAgICAgICwgY29kZW1hc2soMCkKKyAgICAgICAgLCBj
bGVhckNvZGUoMCkKKyAgICAgICAgLCBhdmFpbCgwKQorICAgICAgICAsIG9sZGNvZGUoMCkKKyAg
ICAgICAgLCBmaXJzdGNoYXIoMCkKKyAgICAgICAgLCBiaXRzKDApCisgICAgICAgICwgZGF0dW0o
MCkKKyAgICAgICAgLCByb3dQb3NpdGlvbigwKQorICAgIHsgfQorCisgICAgYm9vbCBwcmVwYXJl
VG9EZWNvZGUodW5zaWduZWQgcm93V2lkdGgsIGludCBkYXRhc2l6ZSk7CisKKyAgICBzaXplX3Qg
c3RhY2twOyAvLyBDdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgaW50IGNvZGVzaXplOworICAg
IGludCBjb2RlbWFzazsKKyAgICBpbnQgY2xlYXJDb2RlOyAvLyBDb2Rld29yZCB1c2VkIHRvIHRy
aWdnZXIgZGljdGlvbmFyeSByZXNldC4KKyAgICBpbnQgYXZhaWw7IC8vIEluZGV4IG9mIG5leHQg
YXZhaWxhYmxlIHNsb3QgaW4gZGljdGlvbmFyeS4KKyAgICBpbnQgb2xkY29kZTsKKyAgICB1bnNp
Z25lZCBjaGFyIGZpcnN0Y2hhcjsKKyAgICBpbnQgYml0czsgLy8gTnVtYmVyIG9mIHVucmVhZCBi
aXRzIGluICJkYXR1bSIuCisgICAgaW50IGRhdHVtOyAvLyAzMi1iaXQgaW5wdXQgYnVmZmVyLgor
ICAgIHNpemVfdCByb3dQb3NpdGlvbjsKKworICAgIFZlY3Rvcjx1bnNpZ25lZCBzaG9ydD4gcHJl
Zml4OworICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBzdWZmaXg7CisgICAgVmVjdG9yPHVuc2ln
bmVkIGNoYXI+IHN0YWNrOworICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiByb3dCdWZmZXI7IC8v
IFNpbmdsZSBzY2FubGluZSB0ZW1wb3JhcnkgYnVmZmVyLgorfTsKKwogY2xhc3MgR0lGSW1hZ2VS
ZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMjQ5LDYg
KzI1MCw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgR0lGRnJhbWVDb250ZXh0KiBtX2ZyYW1lQ29u
dGV4dDsKIAorICAgIEdJRkxaV0NvbnRleHQgbV9sendDb250ZXh0OworCiAgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvZ2lmX2RlY29kZXIuY2MgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9naWZfZGVjb2Rlci5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTBkYWM0MzEwOTU0MmMzY2IwNDBlN2Q1
YjZjYTI0OTVkMDIyYjhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvZ2lmX2RlY29kZXIuY2MKQEAgLTAsMCArMSwyNDggQEAKKyNpbmNsdWRlIDxpb3N0cmVh
bT4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJHSUZJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYktpdC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L1VudXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkRmlsZShjb25zdCBjaGFyKiBmaWxlTmFtZSkKK3sK
KyAgICBGSUxFICogZmlsZTsKKworICAgIGZpbGUgPSBmb3BlbiAoZmlsZU5hbWUsICJyYiIpOwor
ICAgIGlmICghZmlsZSkKKyAgICAgICAgZXhpdCgxKTsKKworICAgIC8vIG9idGFpbiBmaWxlIHNp
emU6CisgICAgZnNlZWsoZmlsZSwgMCwgU0VFS19FTkQpOworICAgIHNpemVfdCBzaXplID0gZnRl
bGwoZmlsZSk7CisgICAgcmV3aW5kKGZpbGUpOworCisgICAgLy8gYWxsb2NhdGUgbWVtb3J5IHRv
IGNvbnRhaW4gdGhlIHdob2xlIGZpbGU6CisgICAgdW5zaWduZWQgY2hhciogYnVmZmVyID0gbmV3
IHVuc2lnbmVkIGNoYXJbc2l6ZV07CisgICAgZnJlYWQoYnVmZmVyLCAxLCBzaXplLCBmaWxlKTsK
KworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShidWZmZXIsIHNpemUpOworfQorCisj
ZGVmaW5lIFNDSEVEVUxFKGkpICBcCisgICAgdGVtcCA9IHNjaGVkdWxlWyhpLTMpJjB4Rl0gXiBz
Y2hlZHVsZVsoaS04KSYweEZdIF4gc2NoZWR1bGVbKGktMTQpJjB4Rl0gXiBzY2hlZHVsZVsoaS0x
NikmMHhGXTsgIFwKKyAgICBzY2hlZHVsZVtpICYgMHhGXSA9IHRlbXAgPDwgMSB8IHRlbXAgPj4g
MzE7CisKKyNkZWZpbmUgUk9VTkQwYShhLGIsYyxkLGUsaSkgIFwKKyAgICBzY2hlZHVsZVtpXSA9
IChibG9ja1tpXSA8PCAyNCkgfCAoKGJsb2NrW2ldICYgMHhGRjAwKSA8PCA4KSB8ICgoYmxvY2tb
aV0gPj4gOCkgJiAweEZGMDApIHwgKGJsb2NrW2ldID4+IDI0KTsgIFwKKyAgICBST1VORFRBSUwo
YSwgYiwgZSwgKChiICYgYykgfCAofmIgJiBkKSksIGksIDB4NUE4Mjc5OTkpCisKKyNkZWZpbmUg
Uk9VTkQwYihhLGIsYyxkLGUsaSkgIFwKKyAgICBTQ0hFRFVMRShpKSAgXAorICAgIFJPVU5EVEFJ
TChhLCBiLCBlLCAoKGIgJiBjKSB8ICh+YiAmIGQpKSwgaSwgMHg1QTgyNzk5OSkKKworI2RlZmlu
ZSBST1VORDEoYSxiLGMsZCxlLGkpICBcCisgICAgU0NIRURVTEUoaSkgIFwKKyAgICBST1VORFRB
SUwoYSwgYiwgZSwgKGIgXiBjIF4gZCksIGksIDB4NkVEOUVCQTEpCisKKyNkZWZpbmUgUk9VTkQy
KGEsYixjLGQsZSxpKSAgXAorICAgIFNDSEVEVUxFKGkpICBcCisgICAgUk9VTkRUQUlMKGEsIGIs
IGUsICgoYiAmIGMpIF4gKGIgJiBkKSBeIChjICYgZCkpLCBpLCAweDhGMUJCQ0RDKQorCisjZGVm
aW5lIFJPVU5EMyhhLGIsYyxkLGUsaSkgIFwKKyAgICBTQ0hFRFVMRShpKSAgXAorICAgIFJPVU5E
VEFJTChhLCBiLCBlLCAoYiBeIGMgXiBkKSwgaSwgMHhDQTYyQzFENikKKworI2RlZmluZSBST1VO
RFRBSUwoYSxiLGUsZixpLGspICBcCisgICAgZSArPSAoYSA8PCA1IHwgYSA+PiAyNykgKyBmICsg
ayArIHNjaGVkdWxlW2kgJiAweEZdOyAgXAorICAgIGIgPSBiIDw8IDMwIHwgYiA+PiAyOworCit2
b2lkIHNoYTFfY29tcHJlc3ModWludDMyX3QgKnN0YXRlLCB1aW50MzJfdCAqYmxvY2spIHsKKyAg
ICB1aW50MzJfdCBhID0gc3RhdGVbMF07CisgICAgdWludDMyX3QgYiA9IHN0YXRlWzFdOworICAg
IHVpbnQzMl90IGMgPSBzdGF0ZVsyXTsKKyAgICB1aW50MzJfdCBkID0gc3RhdGVbM107CisgICAg
dWludDMyX3QgZSA9IHN0YXRlWzRdOworCisgICAgdWludDMyX3Qgc2NoZWR1bGVbMTZdOworICAg
IHVpbnQzMl90IHRlbXA7CisgICAgUk9VTkQwYShhLCBiLCBjLCBkLCBlLCAgMCkKKyAgICBST1VO
RDBhKGUsIGEsIGIsIGMsIGQsICAxKQorICAgIFJPVU5EMGEoZCwgZSwgYSwgYiwgYywgIDIpCisg
ICAgUk9VTkQwYShjLCBkLCBlLCBhLCBiLCAgMykKKyAgICBST1VORDBhKGIsIGMsIGQsIGUsIGEs
ICA0KQorICAgIFJPVU5EMGEoYSwgYiwgYywgZCwgZSwgIDUpCisgICAgUk9VTkQwYShlLCBhLCBi
LCBjLCBkLCAgNikKKyAgICBST1VORDBhKGQsIGUsIGEsIGIsIGMsICA3KQorICAgIFJPVU5EMGEo
YywgZCwgZSwgYSwgYiwgIDgpCisgICAgUk9VTkQwYShiLCBjLCBkLCBlLCBhLCAgOSkKKyAgICBS
T1VORDBhKGEsIGIsIGMsIGQsIGUsIDEwKQorICAgIFJPVU5EMGEoZSwgYSwgYiwgYywgZCwgMTEp
CisgICAgUk9VTkQwYShkLCBlLCBhLCBiLCBjLCAxMikKKyAgICBST1VORDBhKGMsIGQsIGUsIGEs
IGIsIDEzKQorICAgIFJPVU5EMGEoYiwgYywgZCwgZSwgYSwgMTQpCisgICAgUk9VTkQwYShhLCBi
LCBjLCBkLCBlLCAxNSkKKyAgICBST1VORDBiKGUsIGEsIGIsIGMsIGQsIDE2KQorICAgIFJPVU5E
MGIoZCwgZSwgYSwgYiwgYywgMTcpCisgICAgUk9VTkQwYihjLCBkLCBlLCBhLCBiLCAxOCkKKyAg
ICBST1VORDBiKGIsIGMsIGQsIGUsIGEsIDE5KQorICAgIFJPVU5EMShhLCBiLCBjLCBkLCBlLCAy
MCkKKyAgICBST1VORDEoZSwgYSwgYiwgYywgZCwgMjEpCisgICAgUk9VTkQxKGQsIGUsIGEsIGIs
IGMsIDIyKQorICAgIFJPVU5EMShjLCBkLCBlLCBhLCBiLCAyMykKKyAgICBST1VORDEoYiwgYywg
ZCwgZSwgYSwgMjQpCisgICAgUk9VTkQxKGEsIGIsIGMsIGQsIGUsIDI1KQorICAgIFJPVU5EMShl
LCBhLCBiLCBjLCBkLCAyNikKKyAgICBST1VORDEoZCwgZSwgYSwgYiwgYywgMjcpCisgICAgUk9V
TkQxKGMsIGQsIGUsIGEsIGIsIDI4KQorICAgIFJPVU5EMShiLCBjLCBkLCBlLCBhLCAyOSkKKyAg
ICBST1VORDEoYSwgYiwgYywgZCwgZSwgMzApCisgICAgUk9VTkQxKGUsIGEsIGIsIGMsIGQsIDMx
KQorICAgIFJPVU5EMShkLCBlLCBhLCBiLCBjLCAzMikKKyAgICBST1VORDEoYywgZCwgZSwgYSwg
YiwgMzMpCisgICAgUk9VTkQxKGIsIGMsIGQsIGUsIGEsIDM0KQorICAgIFJPVU5EMShhLCBiLCBj
LCBkLCBlLCAzNSkKKyAgICBST1VORDEoZSwgYSwgYiwgYywgZCwgMzYpCisgICAgUk9VTkQxKGQs
IGUsIGEsIGIsIGMsIDM3KQorICAgIFJPVU5EMShjLCBkLCBlLCBhLCBiLCAzOCkKKyAgICBST1VO
RDEoYiwgYywgZCwgZSwgYSwgMzkpCisgICAgUk9VTkQyKGEsIGIsIGMsIGQsIGUsIDQwKQorICAg
IFJPVU5EMihlLCBhLCBiLCBjLCBkLCA0MSkKKyAgICBST1VORDIoZCwgZSwgYSwgYiwgYywgNDIp
CisgICAgUk9VTkQyKGMsIGQsIGUsIGEsIGIsIDQzKQorICAgIFJPVU5EMihiLCBjLCBkLCBlLCBh
LCA0NCkKKyAgICBST1VORDIoYSwgYiwgYywgZCwgZSwgNDUpCisgICAgUk9VTkQyKGUsIGEsIGIs
IGMsIGQsIDQ2KQorICAgIFJPVU5EMihkLCBlLCBhLCBiLCBjLCA0NykKKyAgICBST1VORDIoYywg
ZCwgZSwgYSwgYiwgNDgpCisgICAgUk9VTkQyKGIsIGMsIGQsIGUsIGEsIDQ5KQorICAgIFJPVU5E
MihhLCBiLCBjLCBkLCBlLCA1MCkKKyAgICBST1VORDIoZSwgYSwgYiwgYywgZCwgNTEpCisgICAg
Uk9VTkQyKGQsIGUsIGEsIGIsIGMsIDUyKQorICAgIFJPVU5EMihjLCBkLCBlLCBhLCBiLCA1MykK
KyAgICBST1VORDIoYiwgYywgZCwgZSwgYSwgNTQpCisgICAgUk9VTkQyKGEsIGIsIGMsIGQsIGUs
IDU1KQorICAgIFJPVU5EMihlLCBhLCBiLCBjLCBkLCA1NikKKyAgICBST1VORDIoZCwgZSwgYSwg
YiwgYywgNTcpCisgICAgUk9VTkQyKGMsIGQsIGUsIGEsIGIsIDU4KQorICAgIFJPVU5EMihiLCBj
LCBkLCBlLCBhLCA1OSkKKyAgICBST1VORDMoYSwgYiwgYywgZCwgZSwgNjApCisgICAgUk9VTkQz
KGUsIGEsIGIsIGMsIGQsIDYxKQorICAgIFJPVU5EMyhkLCBlLCBhLCBiLCBjLCA2MikKKyAgICBS
T1VORDMoYywgZCwgZSwgYSwgYiwgNjMpCisgICAgUk9VTkQzKGIsIGMsIGQsIGUsIGEsIDY0KQor
ICAgIFJPVU5EMyhhLCBiLCBjLCBkLCBlLCA2NSkKKyAgICBST1VORDMoZSwgYSwgYiwgYywgZCwg
NjYpCisgICAgUk9VTkQzKGQsIGUsIGEsIGIsIGMsIDY3KQorICAgIFJPVU5EMyhjLCBkLCBlLCBh
LCBiLCA2OCkKKyAgICBST1VORDMoYiwgYywgZCwgZSwgYSwgNjkpCisgICAgUk9VTkQzKGEsIGIs
IGMsIGQsIGUsIDcwKQorICAgIFJPVU5EMyhlLCBhLCBiLCBjLCBkLCA3MSkKKyAgICBST1VORDMo
ZCwgZSwgYSwgYiwgYywgNzIpCisgICAgUk9VTkQzKGMsIGQsIGUsIGEsIGIsIDczKQorICAgIFJP
VU5EMyhiLCBjLCBkLCBlLCBhLCA3NCkKKyAgICBST1VORDMoYSwgYiwgYywgZCwgZSwgNzUpCisg
ICAgUk9VTkQzKGUsIGEsIGIsIGMsIGQsIDc2KQorICAgIFJPVU5EMyhkLCBlLCBhLCBiLCBjLCA3
NykKKyAgICBST1VORDMoYywgZCwgZSwgYSwgYiwgNzgpCisgICAgUk9VTkQzKGIsIGMsIGQsIGUs
IGEsIDc5KQorCisgICAgc3RhdGVbMF0gKz0gYTsKKyAgICBzdGF0ZVsxXSArPSBiOworICAgIHN0
YXRlWzJdICs9IGM7CisgICAgc3RhdGVbM10gKz0gZDsKKyAgICBzdGF0ZVs0XSArPSBlOworfQor
Cit2b2lkIHNoYTFfaGFzaCh1aW50OF90ICptZXNzYWdlLCB1aW50MzJfdCBsZW4sIHVpbnQzMl90
ICpoYXNoKSB7CisgICAgaGFzaFswXSA9IDB4Njc0NTIzMDE7CisgICAgaGFzaFsxXSA9IDB4RUZD
REFCODk7CisgICAgaGFzaFsyXSA9IDB4OThCQURDRkU7CisgICAgaGFzaFszXSA9IDB4MTAzMjU0
NzY7CisgICAgaGFzaFs0XSA9IDB4QzNEMkUxRjA7CisKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkg
PSAwOyBpICsgNjQgPD0gbGVuOyBpICs9IDY0KQorICAgICAgICBzaGExX2NvbXByZXNzKGhhc2gs
ICh1aW50MzJfdCopKG1lc3NhZ2UgKyBpKSk7CisKKyAgICB1aW50MzJfdCBibG9ja1sxNl07Cisg
ICAgdWludDhfdCAqYnl0ZUJsb2NrID0gKHVpbnQ4X3QqKWJsb2NrOworCisgICAgaW50IHJlbSA9
IGxlbiAtIGk7CisgICAgbWVtY3B5KGJ5dGVCbG9jaywgbWVzc2FnZSArIGksIHJlbSk7CisKKyAg
ICBieXRlQmxvY2tbcmVtXSA9IDB4ODA7CisgICAgcmVtKys7CisgICAgaWYgKDY0IC0gcmVtID49
IDgpCisgICAgICAgIG1lbXNldChieXRlQmxvY2sgKyByZW0sIDAsIDU2IC0gcmVtKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgbWVtc2V0KGJ5dGVCbG9jayArIHJlbSwgMCwgNjQgLSByZW0pOworICAg
ICAgICBzaGExX2NvbXByZXNzKGhhc2gsIGJsb2NrKTsKKyAgICAgICAgbWVtc2V0KGJsb2NrLCAw
LCA1Nik7CisgICAgfQorCisgICAgdWludDY0X3QgbG9uZ0xlbiA9ICgodWludDY0X3QpbGVuKSA8
PCAzOworICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCisgICAgICAgIGJ5dGVCbG9ja1s2NCAt
IDEgLSBpXSA9ICh1aW50OF90KShsb25nTGVuID4+IChpICogOCkpOworICAgIHNoYTFfY29tcHJl
c3MoaGFzaCwgYmxvY2spOworfQorCitjbGFzcyBEdW1teVdlYktpdFBsYXRmb3JtU3VwcG9ydCA6
IHB1YmxpYyBXZWJLaXQ6OlBsYXRmb3JtIHsKKyAgcHVibGljOgorICAgIH5EdW1teVdlYktpdFBs
YXRmb3JtU3VwcG9ydCgpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgY3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21WYWx1ZXModW5zaWduZWQgY2hhciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7fQorCisg
ICAgRHVtbXlXZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKSB7fQorfTsKKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KSB7CisgICAgaWYgKGFyZ2MgPT0gMSkgeworICAgICAgICBjb3V0IDw8
ICJnaWZfZGVjb2RlciBbZmlsZV0iIDw8IGVuZGw7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KworICAgIFdlYktpdDo6aW5pdGlhbGl6ZVdpdGhvdXRWOChuZXcgRHVtbXlXZWJLaXRQbGF0Zm9y
bVN1cHBvcnQoKSk7CisKKyAgICBPd25QdHI8R0lGSW1hZ2VEZWNvZGVyPiBkZWNvZGVyKGFkb3B0
UHRyKG5ldyBHSUZJbWFnZURlY29kZXIoSW1hZ2VTb3VyY2U6OkFscGhhTm90UHJlbXVsdGlwbGll
ZCwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCkpKTsKKworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSByZWFkRmlsZShhcmd2WzFdKTsKKyAgICBkZWNvZGVy
LT5zZXREYXRhKGRhdGEuZ2V0KCksIHRydWUpOworCisgICAgY291dCA8PCBkZWNvZGVyLT5mcmFt
ZUNvdW50KCkgPDwgZW5kbDsKKworICAgIGludCBmcmFtZXMgPSBkZWNvZGVyLT5mcmFtZUNvdW50
KCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgeworICAgICAgICBJbWFn
ZUZyYW1lKiBmcmFtZSA9IGRlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpKTsKKworICAgICAg
ICBpZiAoIWZyYW1lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdWludDMyX3Qg
aGFzaFs1XTsKKyAgICAgICAgc2hhMV9oYXNoKCh1aW50OF90KilmcmFtZS0+Z2V0U2tCaXRtYXAo
KS5nZXRQaXhlbHMoKSwKKyAgICAgICAgICAgICAgICAgIGZyYW1lLT5nZXRTa0JpdG1hcCgpLmdl
dFNpemUoKSwKKyAgICAgICAgICAgICAgICAgIGhhc2gpOworCisgICAgICAgIGNvdXQgPDwgaSA8
PCAiICIKKyAgICAgICAgICAgICA8PCBmcmFtZS0+c3RhdHVzKCkgPDwgIiAiCisgICAgICAgICAg
ICAgPDwgaGFzaFswXSA8PCAiICIKKyAgICAgICAgICAgICA8PCBoYXNoWzFdIDw8ICIgIgorICAg
ICAgICAgICAgIDw8IGhhc2hbMl0gPDwgIiAiCisgICAgICAgICAgICAgPDwgaGFzaFszXSA8PCAi
ICIKKyAgICAgICAgICAgICA8PCBoYXNoWzRdCisgICAgICAgICAgICAgPDwgZW5kbDsKKyAgICB9
CisgICAgY291dCA8PCBkZWNvZGVyLT5yZXBldGl0aW9uQ291bnQoKSA8PCBlbmRsOworCisgICAg
cmV0dXJuIDA7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191384</attachid>
            <date>2013-03-04 20:02:02 -0800</date>
            <delta_ts>2013-03-06 11:20:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111137-20130304195809.patch</filename>
            <type>text/plain</type>
            <size>21752</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZiM2JhZjlkYWFiZWY0
NTBjNDc1OWU3ODEyMDk0NGNhYmNlMDgyYi4uY2M4MzYxMmUwYjVkZjdhYzhkYzQ5OGFjNGQwODQw
ZTVjMmQ0N2RlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAyLTI4ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW9yZSBjbGVhbnVwIGluIEdJ
RkltYWdlUmVhZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTExMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciBHSUZJbWFnZVJlYWRlclJlYWRlciB3aXRoIHRoZSBmb2xsb3dpbmcgY2hh
bmdlczoKKyAgICAgICAgKyBTZXBhcmF0ZSBHSUZMWldDb250ZXh0IGZvciBkZWNvZGluZyBzdGF0
ZXMuCisgICAgICAgICsgUmVwbGFjZSB1bnNpZ25lZCBjaGFyKiB3aXRoIFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPgorCisgICAgICAgIFRoZXJlIGlzIG5vIGNoYW5nZSBpbiBjb2RlIGJlaGF2aW9yIGFu
ZCBqdXN0IHJlZmFjdG9yaW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIEdJRkltYWdlUmVhZGVyVGVzdC4KKyAgICAgICAgSSBhbHNvIGRpZCBh
IGxvY2FsIHRlc3Rpbmcgb24gYSA1MGsgaW1hZ2UgY29ycHVzIGFuZCBzaG93ZWQgbm8gcmVncmVz
c2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2Rl
ZFJvdyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5oOgorICAgICAgICAoR0lGSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoR0lGSW1hZ2VS
ZWFkZXI6Om91dHB1dFJvdyk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6ZG9MWlcpOgorICAg
ICAgICAoR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKToKKyAgICAgICAgKEdJRkltYWdl
UmVhZGVyOjpwcmVwYXJlTFpXQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQpOgor
ICAgICAgICAoR0lGRnJhbWVDb250ZXh0OjpHSUZGcmFtZUNvbnRleHQpOgorICAgICAgICAoR0lG
RnJhbWVDb250ZXh0Ojp+R0lGRnJhbWVDb250ZXh0KToKKyAgICAgICAgKEdJRkxaV0NvbnRleHQp
OgorICAgICAgICAoR0lGTFpXQ29udGV4dDo6R0lGTFpXQ29udGV4dCk6CisgICAgICAgIChHSUZJ
bWFnZVJlYWRlcik6CisKIDIwMTMtMDMtMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtOZXcgTXVsdGljb2x1bW5dIENoYW5nZSBpblJlbmRlckZsb3dUaHJlYWQg
dG8gZm9sbG93IGNvbnRhaW5pbmcgYmxvY2sgY2hhaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAKaW5kZXggNmE1MTQwOTg0NmMwMDUwMDBjOTI3MGEzZmNhNTg5ODI4OTc1YTNkMi4uYmI4ODQx
NWJiMGM1NjU4ZDAyMmE4MWFlNTQ3YmNjMTk3ZGVjMmMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAKQEAgLTE5MywyMCArMTkzLDIwIEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpCiAgICAgfQogfQogCi1i
b29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwg
dW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCBjaGFyKiByb3dFbmQsIHVuc2lnbmVk
IHJvd051bWJlciwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGJvb2wgd3JpdGVUcmFuc3BhcmVudFBp
eGVscykKK2Jvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFt
ZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIHJvd0J1ZmZlciwgc2l6ZV90IHdp
ZHRoLCBzaXplX3Qgcm93TnVtYmVyLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgYm9vbCB3cml0ZVRy
YW5zcGFyZW50UGl4ZWxzKQogewogICAgIGNvbnN0IEdJRkZyYW1lQ29udGV4dCogZnJhbWVDb250
ZXh0ID0gbV9yZWFkZXItPmZyYW1lQ29udGV4dCgpOwogICAgIC8vIFRoZSBwaXhlbCBkYXRhIGFu
ZCBjb29yZGluYXRlcyBzdXBwbGllZCB0byB1cyBhcmUgcmVsYXRpdmUgdG8gdGhlIGZyYW1lJ3MK
ICAgICAvLyBvcmlnaW4gd2l0aGluIHRoZSBlbnRpcmUgaW1hZ2Ugc2l6ZSwgaS5lLgogICAgIC8v
IChmcmFtZUNvbnRleHQtPnhPZmZzZXQsIGZyYW1lQ29udGV4dC0+eU9mZnNldCkuIFRoZXJlIGlz
IG5vIGd1YXJhbnRlZQotICAgIC8vIHRoYXQgKHJvd0VuZCAtIHJvd0J1ZmZlcikgPT0gKHNpemUo
KS53aWR0aCgpIC0gZnJhbWVDb250ZXh0LT54T2Zmc2V0KSwgc28KKyAgICAvLyB0aGF0IHdpZHRo
ID09IChzaXplKCkud2lkdGgoKSAtIGZyYW1lQ29udGV4dC0+eE9mZnNldCksIHNvCiAgICAgLy8g
d2UgbXVzdCBlbnN1cmUgd2UgZG9uJ3QgcnVuIG9mZiB0aGUgZW5kIG9mIGVpdGhlciB0aGUgc291
cmNlIGRhdGEgb3IgdGhlCiAgICAgLy8gcm93J3MgWC1jb29yZGluYXRlcy4KICAgICBpbnQgeEJl
Z2luID0gdXBwZXJCb3VuZFNjYWxlZFgoZnJhbWVDb250ZXh0LT54T2Zmc2V0KTsKICAgICBpbnQg
eUJlZ2luID0gdXBwZXJCb3VuZFNjYWxlZFkoZnJhbWVDb250ZXh0LT55T2Zmc2V0ICsgcm93TnVt
YmVyKTsKLSAgICBpbnQgeEVuZCA9IGxvd2VyQm91bmRTY2FsZWRYKHN0ZDo6bWluKHN0YXRpY19j
YXN0PGludD4oZnJhbWVDb250ZXh0LT54T2Zmc2V0ICsgKHJvd0VuZCAtIHJvd0J1ZmZlcikpLCBz
aXplKCkud2lkdGgoKSkgLSAxLCB4QmVnaW4gKyAxKSArIDE7CisgICAgaW50IHhFbmQgPSBsb3dl
ckJvdW5kU2NhbGVkWChzdGQ6Om1pbihzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lQ29udGV4dC0+eE9m
ZnNldCArIHdpZHRoKSwgc2l6ZSgpLndpZHRoKCkpIC0gMSwgeEJlZ2luICsgMSkgKyAxOwogICAg
IGludCB5RW5kID0gbG93ZXJCb3VuZFNjYWxlZFkoc3RkOjptaW4oc3RhdGljX2Nhc3Q8aW50Pihm
cmFtZUNvbnRleHQtPnlPZmZzZXQgKyByb3dOdW1iZXIgKyByZXBlYXRDb3VudCksIHNpemUoKS5o
ZWlnaHQoKSkgLSAxLCB5QmVnaW4gKyAxKSArIDE7Ci0gICAgaWYgKCFyb3dCdWZmZXIgfHwgKHhC
ZWdpbiA8IDApIHx8ICh5QmVnaW4gPCAwKSB8fCAoeEVuZCA8PSB4QmVnaW4pIHx8ICh5RW5kIDw9
IHlCZWdpbikpCisgICAgaWYgKHJvd0J1ZmZlci5pc0VtcHR5KCkgfHwgKHhCZWdpbiA8IDApIHx8
ICh5QmVnaW4gPCAwKSB8fCAoeEVuZCA8PSB4QmVnaW4pIHx8ICh5RW5kIDw9IHlCZWdpbikpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gR2V0IHRoZSBjb2xvcm1hcC4KQEAgLTIzMCw3
ICsyMzAsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5zaWduZWQg
ZnJhbWVJbmRleCwgdW5zaWduZWQgY2hhciogcm93QnVmZgogICAgIEltYWdlRnJhbWU6OlBpeGVs
RGF0YSogY3VycmVudEFkZHJlc3MgPSBidWZmZXIuZ2V0QWRkcih4QmVnaW4sIHlCZWdpbik7CiAg
ICAgLy8gV3JpdGUgb25lIHJvdydzIHdvcnRoIG9mIGRhdGEgaW50byB0aGUgZnJhbWUuICAKICAg
ICBmb3IgKGludCB4ID0geEJlZ2luOyB4IDwgeEVuZDsgKyt4KSB7Ci0gICAgICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIgc291cmNlVmFsdWUgPSAqKHJvd0J1ZmZlciArIChtX3NjYWxlZCA/IG1fc2Nh
bGVkQ29sdW1uc1t4XSA6IHgpIC0gZnJhbWVDb250ZXh0LT54T2Zmc2V0KTsKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9IHJvd0J1ZmZlclsobV9zY2FsZWQgPyBtX3Nj
YWxlZENvbHVtbnNbeF0gOiB4KSAtIGZyYW1lQ29udGV4dC0+eE9mZnNldF07CiAgICAgICAgIGlm
ICgoIWZyYW1lQ29udGV4dC0+aXNUcmFuc3BhcmVudCB8fCAoc291cmNlVmFsdWUgIT0gZnJhbWVD
b250ZXh0LT50cGl4ZWwpKSAmJiAoc291cmNlVmFsdWUgPCBjb2xvck1hcFNpemUpKSB7CiAgICAg
ICAgICAgICBjb25zdCBzaXplX3QgY29sb3JJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc291
cmNlVmFsdWUpICogMzsKICAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKGN1cnJlbnRBZGRyZXNz
LCBjb2xvck1hcFtjb2xvckluZGV4XSwgY29sb3JNYXBbY29sb3JJbmRleCArIDFdLCBjb2xvck1h
cFtjb2xvckluZGV4ICsgMl0sIDI1NSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggOTk4
MmE0NGUxODc3OWNjZmFiZTNmNTg0MjU4NGNjODEwYTEyNTE0YS4uNTVmOWIzNTY0ZjQxMmM3MDcy
MTkxZDc0MDYxYjE5Njc2MTZjNmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNTYs
NyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpOwogCiAgICAgICAgIC8v
IENhbGxiYWNrcyBmcm9tIHRoZSBHSUYgcmVhZGVyLgotICAgICAgICBib29sIGhhdmVEZWNvZGVk
Um93KHVuc2lnbmVkIGZyYW1lSW5kZXgsIHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWdu
ZWQgY2hhciogcm93RW5kLCB1bnNpZ25lZCByb3dOdW1iZXIsIHVuc2lnbmVkIHJlcGVhdENvdW50
LCBib29sIHdyaXRlVHJhbnNwYXJlbnRQaXhlbHMpOworICAgICAgICBib29sIGhhdmVEZWNvZGVk
Um93KHVuc2lnbmVkIGZyYW1lSW5kZXgsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgcm93
QnVmZmVyLCBzaXplX3Qgd2lkdGgsIHNpemVfdCByb3dOdW1iZXIsIHVuc2lnbmVkIHJlcGVhdENv
dW50LCBib29sIHdyaXRlVHJhbnNwYXJlbnRQaXhlbHMpOwogICAgICAgICBib29sIGZyYW1lQ29t
cGxldGUodW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwgSW1hZ2VG
cmFtZTo6RnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCk7CiAgICAgICAgIHZvaWQg
Z2lmQ29tcGxldGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKaW5kZXggY2U1NTg4YmFj
MDFkNzA3NTJmY2EwZDI0MWViZWM3NGEzZDg1OWMwNS4uYjg3ZjZkZjU3ZTc2OTVkNTViZDM1NzRl
MmMyMzE5MGVkZGY3ZjMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCkBAIC0xNDksMTIg
KzE0OSwxMCBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpvdXRwdXRSb3coKQogCiAgICAgLy8gQ0FM
TEJBQ0s6IExldCB0aGUgY2xpZW50IGtub3cgd2UgaGF2ZSBkZWNvZGVkIGEgcm93LgogICAgIGlm
IChtX2NsaWVudCAmJiBtX2ZyYW1lQ29udGV4dAotICAgICAgICAmJiAhbV9jbGllbnQtPmhhdmVE
ZWNvZGVkUm93KG1faW1hZ2VzQ291bnQgLSAxLCBtX2ZyYW1lQ29udGV4dC0+cm93YnVmLCBtX2Zy
YW1lQ29udGV4dC0+cm93ZW5kLAorICAgICAgICAmJiAhbV9jbGllbnQtPmhhdmVEZWNvZGVkUm93
KG1faW1hZ2VzQ291bnQgLSAxLCBtX2x6d0NvbnRleHQucm93QnVmZmVyLCBtX2ZyYW1lQ29udGV4
dC0+d2lkdGgsCiAgICAgICAgICAgICBkcm93U3RhcnQsIGRyb3dFbmQgLSBkcm93U3RhcnQgKyAx
LCBtX2ZyYW1lQ29udGV4dC0+cHJvZ3Jlc3NpdmVEaXNwbGF5ICYmIG1fZnJhbWVDb250ZXh0LT5p
bnRlcmxhY2VkICYmIG1fZnJhbWVDb250ZXh0LT5pcGFzcyA+IDEpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBtX2ZyYW1lQ29udGV4dC0+cm93cCA9IG1fZnJhbWVDb250ZXh0LT5yb3di
dWY7Ci0KICAgICBpZiAoIW1fZnJhbWVDb250ZXh0LT5pbnRlcmxhY2VkKQogICAgICAgICBtX2Zy
YW1lQ29udGV4dC0+aXJvdysrOwogICAgIGVsc2UgewpAQCAtMjEzLDMwICsyMTEsMjUgQEAgYm9v
bCBHSUZJbWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciogYmxvY2ssIHNpemVf
dCBieXRlc0luQmxvY2spCiAgICAgLy8gQ29weSBhbGwgdGhlIGRlY29kZXIgc3RhdGUgdmFyaWFi
bGVzIGludG8gbG9jYWxzIHNvIHRoZSBjb21waWxlcgogICAgIC8vIHdvbid0IHdvcnJ5IGFib3V0
IHRoZW0gYmVpbmcgYWxpYXNlZC4gVGhlIGxvY2FscyB3aWxsIGJlIGhvbWVkCiAgICAgLy8gYmFj
ayBpbnRvIHRoZSBHSUYgZGVjb2RlciBzdHJ1Y3R1cmUgd2hlbiB3ZSBleGl0LgotICAgIGludCBh
dmFpbCA9IG1fZnJhbWVDb250ZXh0LT5hdmFpbDsKLSAgICBpbnQgYml0cyA9IG1fZnJhbWVDb250
ZXh0LT5iaXRzOworICAgIGludCBhdmFpbCA9IG1fbHp3Q29udGV4dC5hdmFpbDsKKyAgICBpbnQg
Yml0cyA9IG1fbHp3Q29udGV4dC5iaXRzOwogICAgIHNpemVfdCBjbnQgPSBieXRlc0luQmxvY2s7
Ci0gICAgaW50IGNvZGVzaXplID0gbV9mcmFtZUNvbnRleHQtPmNvZGVzaXplOwotICAgIGludCBj
b2RlbWFzayA9IG1fZnJhbWVDb250ZXh0LT5jb2RlbWFzazsKLSAgICBpbnQgb2xkY29kZSA9IG1f
ZnJhbWVDb250ZXh0LT5vbGRjb2RlOwotICAgIGludCBjbGVhckNvZGUgPSBtX2ZyYW1lQ29udGV4
dC0+Y2xlYXJDb2RlOwotICAgIHVuc2lnbmVkIGNoYXIgZmlyc3RjaGFyID0gbV9mcmFtZUNvbnRl
eHQtPmZpcnN0Y2hhcjsKLSAgICBpbnQgZGF0dW0gPSBtX2ZyYW1lQ29udGV4dC0+ZGF0dW07Ci0K
LSAgICBpZiAoIW1fZnJhbWVDb250ZXh0LT5wcmVmaXgpIHsKLSAgICAgICAgbV9mcmFtZUNvbnRl
eHQtPnByZWZpeCA9IG5ldyB1bnNpZ25lZCBzaG9ydFtNQVhfQklUU107Ci0gICAgICAgIG1lbXNl
dChtX2ZyYW1lQ29udGV4dC0+cHJlZml4LCAwLCBNQVhfQklUUyAqIHNpemVvZihzaG9ydCkpOwot
ICAgIH0KLQotICAgIHVuc2lnbmVkIHNob3J0ICpwcmVmaXggPSBtX2ZyYW1lQ29udGV4dC0+cHJl
Zml4OwotICAgIHVuc2lnbmVkIGNoYXIgKnN0YWNrcCA9IG1fZnJhbWVDb250ZXh0LT5zdGFja3A7
Ci0gICAgdW5zaWduZWQgY2hhciAqc3VmZml4ID0gbV9mcmFtZUNvbnRleHQtPnN1ZmZpeDsKLSAg
ICB1bnNpZ25lZCBjaGFyICpzdGFjayA9IG1fZnJhbWVDb250ZXh0LT5zdGFjazsKLSAgICB1bnNp
Z25lZCBjaGFyICpyb3dwID0gbV9mcmFtZUNvbnRleHQtPnJvd3A7Ci0gICAgdW5zaWduZWQgY2hh
ciAqcm93ZW5kID0gbV9mcmFtZUNvbnRleHQtPnJvd2VuZDsKLSAgICB1bnNpZ25lZCByb3dzUmVt
YWluaW5nID0gbV9mcmFtZUNvbnRleHQtPnJvd3NSZW1haW5pbmc7Ci0KLSAgICBpZiAocm93cCA9
PSByb3dlbmQpCisgICAgaW50IGNvZGVzaXplID0gbV9sendDb250ZXh0LmNvZGVzaXplOworICAg
IGludCBjb2RlbWFzayA9IG1fbHp3Q29udGV4dC5jb2RlbWFzazsKKyAgICBpbnQgb2xkY29kZSA9
IG1fbHp3Q29udGV4dC5vbGRjb2RlOworICAgIGludCBjbGVhckNvZGUgPSBtX2x6d0NvbnRleHQu
Y2xlYXJDb2RlOworICAgIHVuc2lnbmVkIGNoYXIgZmlyc3RjaGFyID0gbV9sendDb250ZXh0LmZp
cnN0Y2hhcjsKKyAgICBpbnQgZGF0dW0gPSBtX2x6d0NvbnRleHQuZGF0dW07CisKKyAgICBWZWN0
b3I8dW5zaWduZWQgc2hvcnQ+JiBwcmVmaXggPSBtX2x6d0NvbnRleHQucHJlZml4OworICAgIFZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPiYgc3VmZml4ID0gbV9sendDb250ZXh0LnN1ZmZpeDsKKyAgICBW
ZWN0b3I8dW5zaWduZWQgY2hhcj4mIHN0YWNrID0gbV9sendDb250ZXh0LnN0YWNrOworICAgIHNp
emVfdCBzdGFja3AgPSBtX2x6d0NvbnRleHQuc3RhY2twOworICAgIHNpemVfdCByb3dwID0gbV9s
endDb250ZXh0LnJvd1Bvc2l0aW9uOworICAgIHNpemVfdCB3aWR0aCA9IG1fZnJhbWVDb250ZXh0
LT53aWR0aDsKKyAgICBzaXplX3Qgcm93c1JlbWFpbmluZyA9IG1fZnJhbWVDb250ZXh0LT5yb3dz
UmVtYWluaW5nOworCisgICAgaWYgKHJvd3AgPT0gd2lkdGgpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAjZGVmaW5lIE9VVFBVVF9ST1cgXApAQCAtMjQ0LDcgKzIzNyw4IEBAIGJvb2wgR0lGSW1h
Z2VSZWFkZXI6OmRvTFpXKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJsb2NrLCBzaXplX3QgYnl0ZXNJ
bkJsb2NrKQogICAgICAgICBpZiAoIW91dHB1dFJvdygpKSBcCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7IFwKICAgICAgICAgcm93c1JlbWFpbmluZy0tOyBcCi0gICAgICAgIHJvd3AgPSBtX2Zy
YW1lQ29udGV4dC0+cm93cDsgXAorICAgICAgICByb3dwID0gMDsgXAorICAgICAgICBtX2x6d0Nv
bnRleHQucm93UG9zaXRpb24gPSAwOyBcCiAgICAgICAgIGlmICghcm93c1JlbWFpbmluZykgXAog
ICAgICAgICAgICAgZ290byBFTkQ7IFwKICAgICB9IHdoaWxlICgwKQpAQCAtMjc5LDggKzI3Myw4
IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRvTFpXKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJsb2Nr
LCBzaXplX3QgYnl0ZXNJbkJsb2NrKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
b2xkY29kZSA9PSAtMSkgewotICAgICAgICAgICAgICAgICpyb3dwKysgPSBzdWZmaXhbY29kZV07
Ci0gICAgICAgICAgICAgICAgaWYgKHJvd3AgPT0gcm93ZW5kKQorICAgICAgICAgICAgICAgIG1f
bHp3Q29udGV4dC5yb3dCdWZmZXJbcm93cCsrXSA9IHN1ZmZpeFtjb2RlXTsKKyAgICAgICAgICAg
ICAgICBpZiAocm93cCA9PSB3aWR0aCkKICAgICAgICAgICAgICAgICAgICAgT1VUUFVUX1JPVzsK
IAogICAgICAgICAgICAgICAgIGZpcnN0Y2hhciA9IG9sZGNvZGUgPSBjb2RlOwpAQCAtMjg5LDI5
ICsyODMsMjkgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hh
ciogYmxvY2ssIHNpemVfdCBieXRlc0luQmxvY2spCiAKICAgICAgICAgICAgIGluY29kZSA9IGNv
ZGU7CiAgICAgICAgICAgICBpZiAoY29kZSA+PSBhdmFpbCkgewotICAgICAgICAgICAgICAgICpz
dGFja3ArKyA9IGZpcnN0Y2hhcjsKKyAgICAgICAgICAgICAgICBzdGFja1tzdGFja3ArK10gPSBm
aXJzdGNoYXI7CiAgICAgICAgICAgICAgICAgY29kZSA9IG9sZGNvZGU7CiAKLSAgICAgICAgICAg
ICAgICBpZiAoc3RhY2twID09IHN0YWNrICsgTUFYX0JJVFMpCisgICAgICAgICAgICAgICAgaWYg
KHN0YWNrcCA9PSBNQVhfQllURVMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2NsaWVu
dCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICB3aGlsZSAoY29kZSA+PSBjbGVhckNvZGUpIHsKLSAgICAgICAgICAgICAgICBpZiAo
Y29kZSA+PSBNQVhfQklUUyB8fCBjb2RlID09IHByZWZpeFtjb2RlXSkKKyAgICAgICAgICAgICAg
ICBpZiAoY29kZSA+PSBNQVhfQllURVMgfHwgY29kZSA9PSBwcmVmaXhbY29kZV0pCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZh
bHNlOwogCiAgICAgICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2ggc3VmZml4W10gb25seSBob2xk
cyBjaGFyYWN0ZXJzIHRocm91Z2ggc3VmZml4W2F2YWlsIC0gMV0sCiAgICAgICAgICAgICAgICAg
Ly8gYWxsb3dpbmcgY29kZSA+PSBhdmFpbCBoZXJlIGxldHMgdXMgYmUgbW9yZSB0b2xlcmFudCBv
ZiBtYWxmb3JtZWQKLSAgICAgICAgICAgICAgICAvLyBkYXRhLiBBcyBsb25nIGFzIGNvZGUgPCBN
QVhfQklUUywgdGhlIG9ubHkgcmlzayBpcyBhIGdhcmJsZWQgaW1hZ2UsCisgICAgICAgICAgICAg
ICAgLy8gZGF0YS4gQXMgbG9uZyBhcyBjb2RlIDwgTUFYX0JZVEVTLCB0aGUgb25seSByaXNrIGlz
IGEgZ2FyYmxlZCBpbWFnZSwKICAgICAgICAgICAgICAgICAvLyB3aGljaCBpcyBubyB3b3JzZSB0
aGFuIHJlZnVzaW5nIHRvIGRpc3BsYXkgaXQuCi0gICAgICAgICAgICAgICAgKnN0YWNrcCsrID0g
c3VmZml4W2NvZGVdOworICAgICAgICAgICAgICAgIHN0YWNrW3N0YWNrcCsrXSA9IHN1ZmZpeFtj
b2RlXTsKICAgICAgICAgICAgICAgICBjb2RlID0gcHJlZml4W2NvZGVdOwogCi0gICAgICAgICAg
ICAgICAgaWYgKHN0YWNrcCA9PSBzdGFjayArIE1BWF9CSVRTKQorICAgICAgICAgICAgICAgIGlm
IChzdGFja3AgPT0gTUFYX0JZVEVTKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9jbGll
bnQgPyBtX2NsaWVudC0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgKnN0YWNrcCsrID0gZmlyc3RjaGFyID0gc3VmZml4W2NvZGVdOworICAgICAgICAg
ICAgc3RhY2tbc3RhY2twKytdID0gZmlyc3RjaGFyID0gc3VmZml4W2NvZGVdOwogCiAgICAgICAg
ICAgICAvLyBEZWZpbmUgYSBuZXcgY29kZXdvcmQgaW4gdGhlIGRpY3Rpb25hcnkuCiAgICAgICAg
ICAgICBpZiAoYXZhaWwgPCA0MDk2KSB7CkBAIC0zMzEsMjQgKzMyNSwyNCBAQCBib29sIEdJRklt
YWdlUmVhZGVyOjpkb0xaVyhjb25zdCB1bnNpZ25lZCBjaGFyKiBibG9jaywgc2l6ZV90IGJ5dGVz
SW5CbG9jaykKIAogICAgICAgICAgICAgLy8gQ29weSB0aGUgZGVjb2RlZCBkYXRhIG91dCB0byB0
aGUgc2NhbmxpbmUgYnVmZmVyLgogICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICpy
b3dwKysgPSAqLS1zdGFja3A7Ci0gICAgICAgICAgICAgICAgaWYgKHJvd3AgPT0gcm93ZW5kKQor
ICAgICAgICAgICAgICAgIG1fbHp3Q29udGV4dC5yb3dCdWZmZXJbcm93cCsrXSA9IHN0YWNrWy0t
c3RhY2twXTsKKyAgICAgICAgICAgICAgICBpZiAocm93cCA9PSB3aWR0aCkKICAgICAgICAgICAg
ICAgICAgICAgT1VUUFVUX1JPVzsKLSAgICAgICAgICAgIH0gd2hpbGUgKHN0YWNrcCA+IHN0YWNr
KTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHN0YWNrcCA+IDApOwogICAgICAgICB9CiAgICAgfQog
CiBFTkQ6CiAgICAgLy8gSG9tZSB0aGUgbG9jYWwgY29waWVzIG9mIHRoZSBHSUYgZGVjb2RlciBz
dGF0ZSB2YXJpYWJsZXMuCi0gICAgbV9mcmFtZUNvbnRleHQtPmF2YWlsID0gYXZhaWw7Ci0gICAg
bV9mcmFtZUNvbnRleHQtPmJpdHMgPSBiaXRzOwotICAgIG1fZnJhbWVDb250ZXh0LT5jb2Rlc2l6
ZSA9IGNvZGVzaXplOwotICAgIG1fZnJhbWVDb250ZXh0LT5jb2RlbWFzayA9IGNvZGVtYXNrOwot
ICAgIG1fZnJhbWVDb250ZXh0LT5vbGRjb2RlID0gb2xkY29kZTsKLSAgICBtX2ZyYW1lQ29udGV4
dC0+Zmlyc3RjaGFyID0gZmlyc3RjaGFyOwotICAgIG1fZnJhbWVDb250ZXh0LT5kYXR1bSA9IGRh
dHVtOwotICAgIG1fZnJhbWVDb250ZXh0LT5zdGFja3AgPSBzdGFja3A7Ci0gICAgbV9mcmFtZUNv
bnRleHQtPnJvd3AgPSByb3dwOworICAgIG1fbHp3Q29udGV4dC5hdmFpbCA9IGF2YWlsOworICAg
IG1fbHp3Q29udGV4dC5iaXRzID0gYml0czsKKyAgICBtX2x6d0NvbnRleHQuY29kZXNpemUgPSBj
b2Rlc2l6ZTsKKyAgICBtX2x6d0NvbnRleHQuY29kZW1hc2sgPSBjb2RlbWFzazsKKyAgICBtX2x6
d0NvbnRleHQub2xkY29kZSA9IG9sZGNvZGU7CisgICAgbV9sendDb250ZXh0LmZpcnN0Y2hhciA9
IGZpcnN0Y2hhcjsKKyAgICBtX2x6d0NvbnRleHQuZGF0dW0gPSBkYXR1bTsKKyAgICBtX2x6d0Nv
bnRleHQuc3RhY2twID0gc3RhY2twOworICAgIG1fbHp3Q29udGV4dC5yb3dQb3NpdGlvbiA9IHJv
d3A7CiAgICAgbV9mcmFtZUNvbnRleHQtPnJvd3NSZW1haW5pbmcgPSByb3dzUmVtYWluaW5nOwog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzkwLDQxICszODQsMTMgQEAgYm9vbCBHSUZJbWFnZVJl
YWRlcjo6ZGVjb2RlSW50ZXJuYWwoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgR0lG
SW1hZ2VEZWMKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR0lGTFpXU3RhcnQ6
IHsKLSAgICAgICAgICAgIC8vIEluaXRpYWxpemUgTFpXIHBhcnNlci9kZWNvZGVyLgotICAgICAg
ICAgICAgaW50IGRhdGFzaXplID0gKmN1cnJlbnRDb21wb25lbnQ7Ci0KLSAgICAgICAgICAgIC8v
IFNpbmNlIHdlIHVzZSBhIGNvZGVzaXplIG9mIDEgbW9yZSB0aGFuIHRoZSBkYXRhc2l6ZSwgd2Ug
bmVlZCB0byBlbnN1cmUKLSAgICAgICAgICAgIC8vIHRoYXQgb3VyIGRhdGFzaXplIGlzIHN0cmlj
dGx5IGxlc3MgdGhhbiB0aGUgTUFYX0xaV19CSVRTIHZhbHVlICgxMikuCi0gICAgICAgICAgICAv
LyBUaGlzIHNldHMgdGhlIGxhcmdlc3QgcG9zc2libGUgY29kZW1hc2sgY29ycmVjdGx5IGF0IDQw
OTUuCi0gICAgICAgICAgICBpZiAoZGF0YXNpemUgPj0gTUFYX0xaV19CSVRTKQotICAgICAgICAg
ICAgICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwot
ICAgICAgICAgICAgaW50IGNsZWFyQ29kZSA9IDEgPDwgZGF0YXNpemU7Ci0gICAgICAgICAgICBp
ZiAoY2xlYXJDb2RlID49IE1BWF9CSVRTKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2NsaWVu
dCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwotCi0gICAgICAgICAgICBpZiAobV9m
cmFtZUNvbnRleHQpIHsKKyAgICAgICAgICAgIGlmIChxdWVyeSA9PSBHSUZJbWFnZURlY29kZXI6
OkdJRkZ1bGxRdWVyeSkgeworICAgICAgICAgICAgICAgIGludCBkYXRhc2l6ZSA9ICpjdXJyZW50
Q29tcG9uZW50OwogICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5kYXRhc2l6ZSA9IGRh
dGFzaXplOwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5jbGVhckNvZGUgPSBjbGVh
ckNvZGU7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmF2YWlsID0gbV9mcmFtZUNv
bnRleHQtPmNsZWFyQ29kZSArIDI7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPm9s
ZGNvZGUgPSAtMTsKLSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+Y29kZXNpemUgPSBt
X2ZyYW1lQ29udGV4dC0+ZGF0YXNpemUgKyAxOwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250
ZXh0LT5jb2RlbWFzayA9ICgxIDw8IG1fZnJhbWVDb250ZXh0LT5jb2Rlc2l6ZSkgLSAxOwotICAg
ICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5kYXR1bSA9IG1fZnJhbWVDb250ZXh0LT5iaXRz
ID0gMDsKLQotICAgICAgICAgICAgICAgIC8vIEluaXQgdGhlIHRhYmxlcy4KLSAgICAgICAgICAg
ICAgICBpZiAoIW1fZnJhbWVDb250ZXh0LT5zdWZmaXgpCi0gICAgICAgICAgICAgICAgICAgIG1f
ZnJhbWVDb250ZXh0LT5zdWZmaXggPSBuZXcgdW5zaWduZWQgY2hhcltNQVhfQklUU107Ci0KLSAg
ICAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgd2hvbGUgc3VmZml4IHRhYmxlIGxldHMgdXMg
YmUgbW9yZSB0b2xlcmFudCBvZiBiYWQgZGF0YS4KLSAgICAgICAgICAgICAgICBtZW1zZXQobV9m
cmFtZUNvbnRleHQtPnN1ZmZpeCwgMCwgTUFYX0JJVFMpOwotICAgICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbV9mcmFtZUNvbnRleHQtPmNsZWFyQ29kZTsgaSsrKQotICAgICAgICAg
ICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+c3VmZml4W2ldID0gaTsKLQotICAgICAgICAgICAg
ICAgIGlmICghbV9mcmFtZUNvbnRleHQtPnN0YWNrKQotICAgICAgICAgICAgICAgICAgICBtX2Zy
YW1lQ29udGV4dC0+c3RhY2sgPSBuZXcgdW5zaWduZWQgY2hhcltNQVhfQklUU107Ci0gICAgICAg
ICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnN0YWNrcCA9IG1fZnJhbWVDb250ZXh0LT5zdGFjazsK
KyAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIExaVyBwYXJzZXIvZGVjb2Rlci4KKyAgICAg
ICAgICAgICAgICBpZiAoIW1fbHp3Q29udGV4dC5wcmVwYXJlVG9EZWNvZGUobV9zY3JlZW5XaWR0
aCwgZGF0YXNpemUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2Ns
aWVudC0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAg
R0VUTigxLCBHSUZTdWJCbG9jayk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
NzEyLDE2ICs2NzgsOCBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJbnRlcm5hbChzaXpl
X3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBHSUZJbWFnZURlYwogICAgICAgICAgICAgICAg
IC8qIFRoaXMgY2FzZSB3aWxsIG5ldmVyIGJlIHRha2VuIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGlt
YWdlICovCiAgICAgICAgICAgICAgICAgLyogYmVpbmcgZGVjb2RlZC4gSWYgYW55IG9mIHRoZSBs
YXRlciBpbWFnZXMgYXJlIGxhcmdlciAgICAgKi8KICAgICAgICAgICAgICAgICAvKiB0aGFuIHRo
ZSBzY3JlZW4gc2l6ZSwgd2UgbmVlZCB0byByZWFsbG9jYXRlIGJ1ZmZlcnMuICAgICAqLwotICAg
ICAgICAgICAgICAgIGlmIChtX3NjcmVlbldpZHRoIDwgd2lkdGgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgLyogWFhYIERldmlhbnQhICovCi0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBbXW1f
ZnJhbWVDb250ZXh0LT5yb3didWY7Ci0gICAgICAgICAgICAgICAgICAgIG1fc2NyZWVuV2lkdGgg
PSB3aWR0aDsKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnJvd2J1ZiA9IG5l
dyB1bnNpZ25lZCBjaGFyW21fc2NyZWVuV2lkdGhdOwotICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIW1fZnJhbWVDb250ZXh0LT5yb3didWYpCi0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVD
b250ZXh0LT5yb3didWYgPSBuZXcgdW5zaWduZWQgY2hhclttX3NjcmVlbldpZHRoXTsKLQotICAg
ICAgICAgICAgICAgIGlmICghbV9mcmFtZUNvbnRleHQtPnJvd2J1ZikKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7Cisg
ICAgICAgICAgICAgICAgbV9zY3JlZW5XaWR0aCA9IHN0ZDo6bWF4KG1fc2NyZWVuV2lkdGgsIHdp
ZHRoKTsKKwogICAgICAgICAgICAgICAgIGlmIChtX3NjcmVlbkhlaWdodCA8IGhlaWdodCkKICAg
ICAgICAgICAgICAgICAgICAgbV9zY3JlZW5IZWlnaHQgPSBoZWlnaHQ7CiAKQEAgLTc0OCw4ICs3
MDYsNiBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJbnRlcm5hbChzaXplX3QgZGF0YVBv
c2l0aW9uLCBzaXplX3QgbGVuLCBHSUZJbWFnZURlYwogICAgICAgICAgICAgICAgIC8vIENsZWFy
IHN0YXRlIGZyb20gbGFzdCBpbWFnZS4KICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+
aXJvdyA9IDA7CiAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnJvd3NSZW1haW5pbmcg
PSBtX2ZyYW1lQ29udGV4dC0+aGVpZ2h0OwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0
LT5yb3dlbmQgPSBtX2ZyYW1lQ29udGV4dC0+cm93YnVmICsgbV9mcmFtZUNvbnRleHQtPndpZHRo
OwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5yb3dwID0gbV9mcmFtZUNvbnRleHQt
PnJvd2J1ZjsKIAogICAgICAgICAgICAgICAgIC8vIGJpdHMgcGVyIHBpeGVsIGlzIGN1cnJlbnRD
b21wb25lbnRbOF0mMHgwNwogICAgICAgICAgICAgfQpAQCAtODQyLDMgKzc5OCwzNyBAQCB2b2lk
IEdJRkltYWdlUmVhZGVyOjpzZXRSZW1haW5pbmdCeXRlcyhzaXplX3QgcmVtYWluaW5nQnl0ZXMp
CiAgICAgQVNTRVJUKHJlbWFpbmluZ0J5dGVzIDw9IG1fZGF0YS0+c2l6ZSgpKTsKICAgICBtX2J5
dGVzUmVhZCA9IG1fZGF0YS0+c2l6ZSgpIC0gcmVtYWluaW5nQnl0ZXM7CiB9CisKK2Jvb2wgR0lG
TFpXQ29udGV4dDo6cHJlcGFyZVRvRGVjb2RlKHVuc2lnbmVkIHJvd1dpZHRoLCBpbnQgZGF0YXNp
emUpCit7CisgICAgLy8gU2luY2Ugd2UgdXNlIGEgY29kZXNpemUgb2YgMSBtb3JlIHRoYW4gdGhl
IGRhdGFzaXplLCB3ZSBuZWVkIHRvIGVuc3VyZQorICAgIC8vIHRoYXQgb3VyIGRhdGFzaXplIGlz
IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgTUFYX0xaV19CSVRTIHZhbHVlICgxMikuCisgICAgLy8g
VGhpcyBzZXRzIHRoZSBsYXJnZXN0IHBvc3NpYmxlIGNvZGVtYXNrIGNvcnJlY3RseSBhdCA0MDk1
LgorICAgIGlmIChkYXRhc2l6ZSA+PSBNQVhfTFpXX0JJVFMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBjbGVhckNvZGUgPSAxIDw8IGRhdGFzaXplOworICAgIGlmIChjbGVhckNvZGUgPj0g
TUFYX0JZVEVTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdmFpbCA9IGNsZWFyQ29k
ZSArIDI7CisgICAgb2xkY29kZSA9IC0xOworICAgIGNvZGVzaXplID0gZGF0YXNpemUgKyAxOwor
ICAgIGNvZGVtYXNrID0gKDEgPDwgY29kZXNpemUpIC0gMTsKKyAgICBkYXR1bSA9IGJpdHMgPSAw
OworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGFibGVzIGxhemlseSwgdGhpcyBhbGxvd3MgZnJh
bWUgY291bnQgcXVlcnkgdG8gdXNlIGxlc3MgbWVtb3J5LgorICAgIHN1ZmZpeC5yZXNpemUoTUFY
X0JZVEVTKTsKKyAgICBzdGFjay5yZXNpemUoTUFYX0JZVEVTKTsKKyAgICBwcmVmaXgucmVzaXpl
KE1BWF9CWVRFUyk7CisKKyAgICAvLyBJbml0aWFsaXplIG91dHB1dCByb3cgYnVmZmVyLgorICAg
IHJvd0J1ZmZlci5yZXNpemUocm93V2lkdGgpOworICAgIHJvd1Bvc2l0aW9uID0gMDsKKworICAg
IC8vIENsZWFyaW5nIHRoZSB3aG9sZSBzdWZmaXggdGFibGUgbGV0cyB1cyBiZSBtb3JlIHRvbGVy
YW50IG9mIGJhZCBkYXRhLgorICAgIHN1ZmZpeC5maWxsKDApOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgY2xlYXJDb2RlOyBpKyspCisgICAgICAgIHN1ZmZpeFtpXSA9IGk7CisgICAgc3RhY2tw
ID0gMDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKaW5kZXggYzJl
MzNlMTcyMzhjNGNhOGJiZjAxODcwYzY2MWFmNWE3N2MxOTBkZi4uYWUyYThiYjIxY2Q4MzMxMTZh
OWQxNzg2OGZhZjg3MzliYmRmOTNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKQEAgLTQyLDkg
KzQyLDEwIEBACiAvLyBzbyB3ZSB3aWxsIHRvby4KICNpbmNsdWRlICJHSUZJbWFnZURlY29kZXIu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNkZWZpbmUgTUFYX0xaV19CSVRTICAgICAgICAgIDEyCi0jZGVmaW5lIE1BWF9CSVRTICAgICAg
ICAgICAgNDA5NyAvKiAyXk1BWF9MWldfQklUUysxICovCisjZGVmaW5lIE1BWF9CWVRFUyAgICAg
ICAgICAgNDA5NyAvKiAyXk1BWF9MWldfQklUUysxICovCiAjZGVmaW5lIE1BWF9DT0xPUlMgICAg
ICAgICAgIDI1NgogI2RlZmluZSBHSUZfQ09MT1JTICAgICAgICAgICAgIDMKIApAQCAtNzQsMjgg
Kzc1LDE0IEBAIGVudW0gR0lGU3RhdGUgewogICAgIEdJRkNvbnN1bWVDb21tZW50CiB9OwogCisv
LyBGcmFtZSBvdXRwdXQgc3RhdGUgbWFjaGluZS4KIHN0cnVjdCBHSUZGcmFtZUNvbnRleHQgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIExaVyBkZWNvZGVy
IHN0YXRlIG1hY2hpbmUuCi0gICAgdW5zaWduZWQgY2hhciAqc3RhY2twOyAvLyBDdXJyZW50IHN0
YWNrIHBvaW50ZXIuCiAgICAgaW50IGRhdGFzaXplOwotICAgIGludCBjb2Rlc2l6ZTsKLSAgICBp
bnQgY29kZW1hc2s7Ci0gICAgaW50IGNsZWFyQ29kZTsgLy8gQ29kZXdvcmQgdXNlZCB0byB0cmln
Z2VyIGRpY3Rpb25hcnkgcmVzZXQuCi0gICAgaW50IGF2YWlsOyAvLyBJbmRleCBvZiBuZXh0IGF2
YWlsYWJsZSBzbG90IGluIGRpY3Rpb25hcnkuCi0gICAgaW50IG9sZGNvZGU7Ci0gICAgdW5zaWdu
ZWQgY2hhciBmaXJzdGNoYXI7Ci0gICAgaW50IGJpdHM7IC8vIE51bWJlciBvZiB1bnJlYWQgYml0
cyBpbiAiZGF0dW0iLgotICAgIGludCBkYXR1bTsgLy8gMzItYml0IGlucHV0IGJ1ZmZlci4KLQot
ICAgIC8vIE91dHB1dCBzdGF0ZSBtYWNoaW5lLgogICAgIGludCBpcGFzczsgLy8gSW50ZXJsYWNl
IHBhc3M7IFJhbmdlcyAxLTQgaWYgaW50ZXJsYWNlZC4KLSAgICB1bnNpZ25lZCByb3dzUmVtYWlu
aW5nOyAvLyBSb3dzIHJlbWFpbmluZyB0byBiZSBvdXRwdXQuCi0gICAgdW5zaWduZWQgaXJvdzsg
Ly8gQ3VycmVudCBvdXRwdXQgcm93LCBzdGFydGluZyBhdCB6ZXJvLgotICAgIHVuc2lnbmVkIGNo
YXIgKnJvd2J1ZjsgLy8gU2luZ2xlIHNjYW5saW5lIHRlbXBvcmFyeSBidWZmZXIuCi0gICAgdW5z
aWduZWQgY2hhciAqcm93ZW5kOyAvLyBQb2ludGVyIHRvIGVuZCBvZiByb3didWYuCi0gICAgdW5z
aWduZWQgY2hhciAqcm93cDsgLy8gQ3VycmVudCBvdXRwdXQgcG9pbnRlci4KKyAgICBzaXplX3Qg
cm93c1JlbWFpbmluZzsgLy8gUm93cyByZW1haW5pbmcgdG8gYmUgb3V0cHV0LgorICAgIHNpemVf
dCBpcm93OyAvLyBDdXJyZW50IG91dHB1dCByb3csIHN0YXJ0aW5nIGF0IHplcm8uCiAKICAgICAv
LyBQYXJhbWV0ZXJzIGZvciBpbWFnZSBmcmFtZSBjdXJyZW50bHkgYmVpbmcgZGVjb2RlZC4KICAg
ICB1bnNpZ25lZCB4T2Zmc2V0OwpAQCAtMTE0LDI3ICsxMDEsMTEgQEAgcHVibGljOgogCiAgICAg
dW5zaWduZWQgZGVsYXlUaW1lOyAvLyBEaXNwbGF5IHRpbWUsIGluIG1pbGxpc2Vjb25kcywgZm9y
IHRoaXMgaW1hZ2UgaW4gYSBtdWx0aS1pbWFnZSBHSUYuCiAKLSAgICB1bnNpZ25lZCBzaG9ydCog
cHJlZml4OyAvLyBMWlcgZGVjb2RpbmcgdGFibGVzLgotICAgIHVuc2lnbmVkIGNoYXIqIHN1ZmZp
eDsgLy8gTFpXIGRlY29kaW5nIHRhYmxlcy4KLSAgICB1bnNpZ25lZCBjaGFyKiBzdGFjazsgLy8g
QmFzZSBvZiBMWlcgZGVjb2RlciBzdGFjay4KLQogICAgIEdJRkZyYW1lQ29udGV4dCgpCi0gICAg
ICAgIDogc3RhY2twKDApCi0gICAgICAgICwgZGF0YXNpemUoMCkKLSAgICAgICAgLCBjb2Rlc2l6
ZSgwKQotICAgICAgICAsIGNvZGVtYXNrKDApCi0gICAgICAgICwgY2xlYXJDb2RlKDApCi0gICAg
ICAgICwgYXZhaWwoMCkKLSAgICAgICAgLCBvbGRjb2RlKDApCi0gICAgICAgICwgZmlyc3RjaGFy
KDApCi0gICAgICAgICwgYml0cygwKQotICAgICAgICAsIGRhdHVtKDApCisgICAgICAgIDogZGF0
YXNpemUoMCkKICAgICAgICAgLCBpcGFzcygwKQogICAgICAgICAsIHJvd3NSZW1haW5pbmcoMCkK
ICAgICAgICAgLCBpcm93KDApCi0gICAgICAgICwgcm93YnVmKDApCi0gICAgICAgICwgcm93ZW5k
KDApCi0gICAgICAgICwgcm93cCgwKQogICAgICAgICAsIHhPZmZzZXQoMCkKICAgICAgICAgLCB5
T2Zmc2V0KDApCiAgICAgICAgICwgd2lkdGgoMCkKQEAgLTE0OCwyMSArMTE5LDUxIEBAIHB1Ymxp
YzoKICAgICAgICAgLCBpbnRlcmxhY2VkKGZhbHNlKQogICAgICAgICAsIGlzVHJhbnNwYXJlbnQo
ZmFsc2UpCiAgICAgICAgICwgZGVsYXlUaW1lKDApCi0gICAgICAgICwgcHJlZml4KDApCi0gICAg
ICAgICwgc3VmZml4KDApCi0gICAgICAgICwgc3RhY2soMCkKICAgICB7CiAgICAgfQogICAgIAog
ICAgIH5HSUZGcmFtZUNvbnRleHQoKQogICAgIHsKLSAgICAgICAgZGVsZXRlIFtdIHJvd2J1ZjsK
LSAgICAgICAgZGVsZXRlIFtdIHByZWZpeDsKLSAgICAgICAgZGVsZXRlIFtdIHN1ZmZpeDsKLSAg
ICAgICAgZGVsZXRlIFtdIHN0YWNrOwogICAgIH0KIH07CiAKKy8vIExaVyBkZWNvZGVyIHN0YXRl
IG1hY2hpbmUuCisvLyBGSVhNRTogTWFrZSB0aGlzIGEgY2xhc3MgYW5kIGhpZGUgcHJpdmF0ZSBt
ZW1iZXJzLgorc3RydWN0IEdJRkxaV0NvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIEdJRkxaV0NvbnRleHQoKQorICAgICAgICA6IHN0YWNrcCgwKQor
ICAgICAgICAsIGNvZGVzaXplKDApCisgICAgICAgICwgY29kZW1hc2soMCkKKyAgICAgICAgLCBj
bGVhckNvZGUoMCkKKyAgICAgICAgLCBhdmFpbCgwKQorICAgICAgICAsIG9sZGNvZGUoMCkKKyAg
ICAgICAgLCBmaXJzdGNoYXIoMCkKKyAgICAgICAgLCBiaXRzKDApCisgICAgICAgICwgZGF0dW0o
MCkKKyAgICAgICAgLCByb3dQb3NpdGlvbigwKQorICAgIHsgfQorCisgICAgYm9vbCBwcmVwYXJl
VG9EZWNvZGUodW5zaWduZWQgcm93V2lkdGgsIGludCBkYXRhc2l6ZSk7CisKKyAgICBzaXplX3Qg
c3RhY2twOyAvLyBDdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgaW50IGNvZGVzaXplOworICAg
IGludCBjb2RlbWFzazsKKyAgICBpbnQgY2xlYXJDb2RlOyAvLyBDb2Rld29yZCB1c2VkIHRvIHRy
aWdnZXIgZGljdGlvbmFyeSByZXNldC4KKyAgICBpbnQgYXZhaWw7IC8vIEluZGV4IG9mIG5leHQg
YXZhaWxhYmxlIHNsb3QgaW4gZGljdGlvbmFyeS4KKyAgICBpbnQgb2xkY29kZTsKKyAgICB1bnNp
Z25lZCBjaGFyIGZpcnN0Y2hhcjsKKyAgICBpbnQgYml0czsgLy8gTnVtYmVyIG9mIHVucmVhZCBi
aXRzIGluICJkYXR1bSIuCisgICAgaW50IGRhdHVtOyAvLyAzMi1iaXQgaW5wdXQgYnVmZmVyLgor
ICAgIHNpemVfdCByb3dQb3NpdGlvbjsKKworICAgIFZlY3Rvcjx1bnNpZ25lZCBzaG9ydD4gcHJl
Zml4OworICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBzdWZmaXg7CisgICAgVmVjdG9yPHVuc2ln
bmVkIGNoYXI+IHN0YWNrOworICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiByb3dCdWZmZXI7IC8v
IFNpbmdsZSBzY2FubGluZSB0ZW1wb3JhcnkgYnVmZmVyLgorfTsKKwogY2xhc3MgR0lGSW1hZ2VS
ZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMjQ5LDYg
KzI1MCw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgR0lGRnJhbWVDb250ZXh0KiBtX2ZyYW1lQ29u
dGV4dDsKIAorICAgIEdJRkxaV0NvbnRleHQgbV9sendDb250ZXh0OworCiAgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191798</attachid>
            <date>2013-03-06 11:20:53 -0800</date>
            <delta_ts>2013-03-06 12:11:12 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-111137-20130306111658.patch</filename>
            <type>text/plain</type>
            <size>21754</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ4YmJkMzZhOWEyMWE0
MzU3YzA1MzdjNmFmMTA2MjhkY2QxMDc0Yi4uYmIyOGRlYjRmMmMzODMzMjU0NjliOTZmYWU4Njdj
MzJkYzJhNTZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAzLTA1ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW9yZSBjbGVhbnVwIGluIEdJ
RkltYWdlUmVhZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTExMzcKKworICAgICAgICBSZXZpZXdlZCBieSBTdGVwaGVuIFdoaXRlLgorCisgICAg
ICAgIFJlZmFjdG9yIEdJRkltYWdlUmVhZGVyUmVhZGVyIHdpdGggdGhlIGZvbGxvd2luZyBjaGFu
Z2VzOgorICAgICAgICArIFNlcGFyYXRlIEdJRkxaV0NvbnRleHQgZm9yIGRlY29kaW5nIHN0YXRl
cy4KKyAgICAgICAgKyBSZXBsYWNlIHVuc2lnbmVkIGNoYXIqIHdpdGggVmVjdG9yPHVuc2lnbmVk
IGNoYXI+CisKKyAgICAgICAgVGhlcmUgaXMgbm8gY2hhbmdlIGluIGNvZGUgYmVoYXZpb3IgYW5k
IGp1c3QgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGlzIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgR0lGSW1hZ2VSZWFkZXJUZXN0LgorICAgICAgICBJIGFsc28gZGlkIGEg
bG9jYWwgdGVzdGluZyBvbiBhIDUwayBpbWFnZSBjb3JwdXMgYW5kIHNob3dlZCBubyByZWdyZXNz
aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVk
Um93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgIChHSUZJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZJbWFnZVJl
YWRlcjo6b3V0cHV0Um93KToKKyAgICAgICAgKEdJRkltYWdlUmVhZGVyOjpkb0xaVyk6CisgICAg
ICAgIChHSUZJbWFnZVJlYWRlcjo6ZGVjb2RlSW50ZXJuYWwpOgorICAgICAgICAoR0lGSW1hZ2VS
ZWFkZXI6OnByZXBhcmVMWldDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKEdJRkZyYW1lQ29udGV4dCk6Cisg
ICAgICAgIChHSUZGcmFtZUNvbnRleHQ6OkdJRkZyYW1lQ29udGV4dCk6CisgICAgICAgIChHSUZG
cmFtZUNvbnRleHQ6On5HSUZGcmFtZUNvbnRleHQpOgorICAgICAgICAoR0lGTFpXQ29udGV4dCk6
CisgICAgICAgIChHSUZMWldDb250ZXh0OjpHSUZMWldDb250ZXh0KToKKyAgICAgICAgKEdJRklt
YWdlUmVhZGVyKToKKwogMjAxMy0wMy0wNSAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgW0N1c3RvbSBFbGVtZW50c11bVjhdIEN1c3RvbSBFbGVtZW50IGRv
ZXNuJ3QgbmVlZCBpdHMgb3duIFdyYXBwZXJUeXBlSW5mbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCA2YTUxNDA5ODQ2YzAwNTAwMGM5MjcwYTNmY2E1ODk4Mjg5NzVhM2QyLi5iYjg4
NDE1YmIwYzU2NThkMDIyYTgxYWU1NDdiY2MxOTdkZWMyYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMTkzLDIwICsxOTMsMjAgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSkKICAgICB9CiB9CiAK
LWJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4
LCB1bnNpZ25lZCBjaGFyKiByb3dCdWZmZXIsIHVuc2lnbmVkIGNoYXIqIHJvd0VuZCwgdW5zaWdu
ZWQgcm93TnVtYmVyLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgYm9vbCB3cml0ZVRyYW5zcGFyZW50
UGl4ZWxzKQorYm9vbCBHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KHVuc2lnbmVkIGZy
YW1lSW5kZXgsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgcm93QnVmZmVyLCBzaXplX3Qg
d2lkdGgsIHNpemVfdCByb3dOdW1iZXIsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBib29sIHdyaXRl
VHJhbnNwYXJlbnRQaXhlbHMpCiB7CiAgICAgY29uc3QgR0lGRnJhbWVDb250ZXh0KiBmcmFtZUNv
bnRleHQgPSBtX3JlYWRlci0+ZnJhbWVDb250ZXh0KCk7CiAgICAgLy8gVGhlIHBpeGVsIGRhdGEg
YW5kIGNvb3JkaW5hdGVzIHN1cHBsaWVkIHRvIHVzIGFyZSByZWxhdGl2ZSB0byB0aGUgZnJhbWUn
cwogICAgIC8vIG9yaWdpbiB3aXRoaW4gdGhlIGVudGlyZSBpbWFnZSBzaXplLCBpLmUuCiAgICAg
Ly8gKGZyYW1lQ29udGV4dC0+eE9mZnNldCwgZnJhbWVDb250ZXh0LT55T2Zmc2V0KS4gVGhlcmUg
aXMgbm8gZ3VhcmFudGVlCi0gICAgLy8gdGhhdCAocm93RW5kIC0gcm93QnVmZmVyKSA9PSAoc2l6
ZSgpLndpZHRoKCkgLSBmcmFtZUNvbnRleHQtPnhPZmZzZXQpLCBzbworICAgIC8vIHRoYXQgd2lk
dGggPT0gKHNpemUoKS53aWR0aCgpIC0gZnJhbWVDb250ZXh0LT54T2Zmc2V0KSwgc28KICAgICAv
LyB3ZSBtdXN0IGVuc3VyZSB3ZSBkb24ndCBydW4gb2ZmIHRoZSBlbmQgb2YgZWl0aGVyIHRoZSBz
b3VyY2UgZGF0YSBvciB0aGUKICAgICAvLyByb3cncyBYLWNvb3JkaW5hdGVzLgogICAgIGludCB4
QmVnaW4gPSB1cHBlckJvdW5kU2NhbGVkWChmcmFtZUNvbnRleHQtPnhPZmZzZXQpOwogICAgIGlu
dCB5QmVnaW4gPSB1cHBlckJvdW5kU2NhbGVkWShmcmFtZUNvbnRleHQtPnlPZmZzZXQgKyByb3dO
dW1iZXIpOwotICAgIGludCB4RW5kID0gbG93ZXJCb3VuZFNjYWxlZFgoc3RkOjptaW4oc3RhdGlj
X2Nhc3Q8aW50PihmcmFtZUNvbnRleHQtPnhPZmZzZXQgKyAocm93RW5kIC0gcm93QnVmZmVyKSks
IHNpemUoKS53aWR0aCgpKSAtIDEsIHhCZWdpbiArIDEpICsgMTsKKyAgICBpbnQgeEVuZCA9IGxv
d2VyQm91bmRTY2FsZWRYKHN0ZDo6bWluKHN0YXRpY19jYXN0PGludD4oZnJhbWVDb250ZXh0LT54
T2Zmc2V0ICsgd2lkdGgpLCBzaXplKCkud2lkdGgoKSkgLSAxLCB4QmVnaW4gKyAxKSArIDE7CiAg
ICAgaW50IHlFbmQgPSBsb3dlckJvdW5kU2NhbGVkWShzdGQ6Om1pbihzdGF0aWNfY2FzdDxpbnQ+
KGZyYW1lQ29udGV4dC0+eU9mZnNldCArIHJvd051bWJlciArIHJlcGVhdENvdW50KSwgc2l6ZSgp
LmhlaWdodCgpKSAtIDEsIHlCZWdpbiArIDEpICsgMTsKLSAgICBpZiAoIXJvd0J1ZmZlciB8fCAo
eEJlZ2luIDwgMCkgfHwgKHlCZWdpbiA8IDApIHx8ICh4RW5kIDw9IHhCZWdpbikgfHwgKHlFbmQg
PD0geUJlZ2luKSkKKyAgICBpZiAocm93QnVmZmVyLmlzRW1wdHkoKSB8fCAoeEJlZ2luIDwgMCkg
fHwgKHlCZWdpbiA8IDApIHx8ICh4RW5kIDw9IHhCZWdpbikgfHwgKHlFbmQgPD0geUJlZ2luKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBHZXQgdGhlIGNvbG9ybWFwLgpAQCAtMjMw
LDcgKzIzMCw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25l
ZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBjaGFyKiByb3dCdWZmCiAgICAgSW1hZ2VGcmFtZTo6UGl4
ZWxEYXRhKiBjdXJyZW50QWRkcmVzcyA9IGJ1ZmZlci5nZXRBZGRyKHhCZWdpbiwgeUJlZ2luKTsK
ICAgICAvLyBXcml0ZSBvbmUgcm93J3Mgd29ydGggb2YgZGF0YSBpbnRvIHRoZSBmcmFtZS4gIAog
ICAgIGZvciAoaW50IHggPSB4QmVnaW47IHggPCB4RW5kOyArK3gpIHsKLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgY2hhciBzb3VyY2VWYWx1ZSA9ICoocm93QnVmZmVyICsgKG1fc2NhbGVkID8gbV9z
Y2FsZWRDb2x1bW5zW3hdIDogeCkgLSBmcmFtZUNvbnRleHQtPnhPZmZzZXQpOworICAgICAgICBj
b25zdCB1bnNpZ25lZCBjaGFyIHNvdXJjZVZhbHVlID0gcm93QnVmZmVyWyhtX3NjYWxlZCA/IG1f
c2NhbGVkQ29sdW1uc1t4XSA6IHgpIC0gZnJhbWVDb250ZXh0LT54T2Zmc2V0XTsKICAgICAgICAg
aWYgKCghZnJhbWVDb250ZXh0LT5pc1RyYW5zcGFyZW50IHx8IChzb3VyY2VWYWx1ZSAhPSBmcmFt
ZUNvbnRleHQtPnRwaXhlbCkpICYmIChzb3VyY2VWYWx1ZSA8IGNvbG9yTWFwU2l6ZSkpIHsKICAg
ICAgICAgICAgIGNvbnN0IHNpemVfdCBjb2xvckluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
b3VyY2VWYWx1ZSkgKiAzOwogICAgICAgICAgICAgYnVmZmVyLnNldFJHQkEoY3VycmVudEFkZHJl
c3MsIGNvbG9yTWFwW2NvbG9ySW5kZXhdLCBjb2xvck1hcFtjb2xvckluZGV4ICsgMV0sIGNvbG9y
TWFwW2NvbG9ySW5kZXggKyAyXSwgMjU1KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCA5
OTgyYTQ0ZTE4Nzc5Y2NmYWJlM2Y1ODQyNTg0Y2M4MTBhMTI1MTRhLi41NWY5YjM1NjRmNDEyYzcw
NzIxOTFkNzQwNjFiMTk2NzYxNmM2YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC01
Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSk7CiAKICAgICAgICAg
Ly8gQ2FsbGJhY2tzIGZyb20gdGhlIEdJRiByZWFkZXIuCi0gICAgICAgIGJvb2wgaGF2ZURlY29k
ZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNp
Z25lZCBjaGFyKiByb3dFbmQsIHVuc2lnbmVkIHJvd051bWJlciwgdW5zaWduZWQgcmVwZWF0Q291
bnQsIGJvb2wgd3JpdGVUcmFuc3BhcmVudFBpeGVscyk7CisgICAgICAgIGJvb2wgaGF2ZURlY29k
ZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwgY29uc3QgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBy
b3dCdWZmZXIsIHNpemVfdCB3aWR0aCwgc2l6ZV90IHJvd051bWJlciwgdW5zaWduZWQgcmVwZWF0
Q291bnQsIGJvb2wgd3JpdGVUcmFuc3BhcmVudFBpeGVscyk7CiAgICAgICAgIGJvb2wgZnJhbWVD
b21wbGV0ZSh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBmcmFtZUR1cmF0aW9uLCBJbWFn
ZUZyYW1lOjpGcmFtZURpc3Bvc2FsTWV0aG9kIGRpc3Bvc2FsTWV0aG9kKTsKICAgICAgICAgdm9p
ZCBnaWZDb21wbGV0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAppbmRleCBjZTU1ODhi
YWMwMWQ3MDc1MmZjYTBkMjQxZWJlYzc0YTNkODU5YzA1Li5iODdmNmRmNTdlNzY5NWQ1NWJkMzU3
NGUyYzIzMTkwZWRkZjdmMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKQEAgLTE0OSwx
MiArMTQ5LDEwIEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6Om91dHB1dFJvdygpCiAKICAgICAvLyBD
QUxMQkFDSzogTGV0IHRoZSBjbGllbnQga25vdyB3ZSBoYXZlIGRlY29kZWQgYSByb3cuCiAgICAg
aWYgKG1fY2xpZW50ICYmIG1fZnJhbWVDb250ZXh0Ci0gICAgICAgICYmICFtX2NsaWVudC0+aGF2
ZURlY29kZWRSb3cobV9pbWFnZXNDb3VudCAtIDEsIG1fZnJhbWVDb250ZXh0LT5yb3didWYsIG1f
ZnJhbWVDb250ZXh0LT5yb3dlbmQsCisgICAgICAgICYmICFtX2NsaWVudC0+aGF2ZURlY29kZWRS
b3cobV9pbWFnZXNDb3VudCAtIDEsIG1fbHp3Q29udGV4dC5yb3dCdWZmZXIsIG1fZnJhbWVDb250
ZXh0LT53aWR0aCwKICAgICAgICAgICAgIGRyb3dTdGFydCwgZHJvd0VuZCAtIGRyb3dTdGFydCAr
IDEsIG1fZnJhbWVDb250ZXh0LT5wcm9ncmVzc2l2ZURpc3BsYXkgJiYgbV9mcmFtZUNvbnRleHQt
PmludGVybGFjZWQgJiYgbV9mcmFtZUNvbnRleHQtPmlwYXNzID4gMSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1fZnJhbWVDb250ZXh0LT5yb3dwID0gbV9mcmFtZUNvbnRleHQtPnJv
d2J1ZjsKLQogICAgIGlmICghbV9mcmFtZUNvbnRleHQtPmludGVybGFjZWQpCiAgICAgICAgIG1f
ZnJhbWVDb250ZXh0LT5pcm93Kys7CiAgICAgZWxzZSB7CkBAIC0yMTMsMzAgKzIxMSwyNSBAQCBi
b29sIEdJRkltYWdlUmVhZGVyOjpkb0xaVyhjb25zdCB1bnNpZ25lZCBjaGFyKiBibG9jaywgc2l6
ZV90IGJ5dGVzSW5CbG9jaykKICAgICAvLyBDb3B5IGFsbCB0aGUgZGVjb2RlciBzdGF0ZSB2YXJp
YWJsZXMgaW50byBsb2NhbHMgc28gdGhlIGNvbXBpbGVyCiAgICAgLy8gd29uJ3Qgd29ycnkgYWJv
dXQgdGhlbSBiZWluZyBhbGlhc2VkLiBUaGUgbG9jYWxzIHdpbGwgYmUgaG9tZWQKICAgICAvLyBi
YWNrIGludG8gdGhlIEdJRiBkZWNvZGVyIHN0cnVjdHVyZSB3aGVuIHdlIGV4aXQuCi0gICAgaW50
IGF2YWlsID0gbV9mcmFtZUNvbnRleHQtPmF2YWlsOwotICAgIGludCBiaXRzID0gbV9mcmFtZUNv
bnRleHQtPmJpdHM7CisgICAgaW50IGF2YWlsID0gbV9sendDb250ZXh0LmF2YWlsOworICAgIGlu
dCBiaXRzID0gbV9sendDb250ZXh0LmJpdHM7CiAgICAgc2l6ZV90IGNudCA9IGJ5dGVzSW5CbG9j
azsKLSAgICBpbnQgY29kZXNpemUgPSBtX2ZyYW1lQ29udGV4dC0+Y29kZXNpemU7Ci0gICAgaW50
IGNvZGVtYXNrID0gbV9mcmFtZUNvbnRleHQtPmNvZGVtYXNrOwotICAgIGludCBvbGRjb2RlID0g
bV9mcmFtZUNvbnRleHQtPm9sZGNvZGU7Ci0gICAgaW50IGNsZWFyQ29kZSA9IG1fZnJhbWVDb250
ZXh0LT5jbGVhckNvZGU7Ci0gICAgdW5zaWduZWQgY2hhciBmaXJzdGNoYXIgPSBtX2ZyYW1lQ29u
dGV4dC0+Zmlyc3RjaGFyOwotICAgIGludCBkYXR1bSA9IG1fZnJhbWVDb250ZXh0LT5kYXR1bTsK
LQotICAgIGlmICghbV9mcmFtZUNvbnRleHQtPnByZWZpeCkgewotICAgICAgICBtX2ZyYW1lQ29u
dGV4dC0+cHJlZml4ID0gbmV3IHVuc2lnbmVkIHNob3J0W01BWF9CSVRTXTsKLSAgICAgICAgbWVt
c2V0KG1fZnJhbWVDb250ZXh0LT5wcmVmaXgsIDAsIE1BWF9CSVRTICogc2l6ZW9mKHNob3J0KSk7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgc2hvcnQgKnByZWZpeCA9IG1fZnJhbWVDb250ZXh0LT5w
cmVmaXg7Ci0gICAgdW5zaWduZWQgY2hhciAqc3RhY2twID0gbV9mcmFtZUNvbnRleHQtPnN0YWNr
cDsKLSAgICB1bnNpZ25lZCBjaGFyICpzdWZmaXggPSBtX2ZyYW1lQ29udGV4dC0+c3VmZml4Owot
ICAgIHVuc2lnbmVkIGNoYXIgKnN0YWNrID0gbV9mcmFtZUNvbnRleHQtPnN0YWNrOwotICAgIHVu
c2lnbmVkIGNoYXIgKnJvd3AgPSBtX2ZyYW1lQ29udGV4dC0+cm93cDsKLSAgICB1bnNpZ25lZCBj
aGFyICpyb3dlbmQgPSBtX2ZyYW1lQ29udGV4dC0+cm93ZW5kOwotICAgIHVuc2lnbmVkIHJvd3NS
ZW1haW5pbmcgPSBtX2ZyYW1lQ29udGV4dC0+cm93c1JlbWFpbmluZzsKLQotICAgIGlmIChyb3dw
ID09IHJvd2VuZCkKKyAgICBpbnQgY29kZXNpemUgPSBtX2x6d0NvbnRleHQuY29kZXNpemU7Cisg
ICAgaW50IGNvZGVtYXNrID0gbV9sendDb250ZXh0LmNvZGVtYXNrOworICAgIGludCBvbGRjb2Rl
ID0gbV9sendDb250ZXh0Lm9sZGNvZGU7CisgICAgaW50IGNsZWFyQ29kZSA9IG1fbHp3Q29udGV4
dC5jbGVhckNvZGU7CisgICAgdW5zaWduZWQgY2hhciBmaXJzdGNoYXIgPSBtX2x6d0NvbnRleHQu
Zmlyc3RjaGFyOworICAgIGludCBkYXR1bSA9IG1fbHp3Q29udGV4dC5kYXR1bTsKKworICAgIFZl
Y3Rvcjx1bnNpZ25lZCBzaG9ydD4mIHByZWZpeCA9IG1fbHp3Q29udGV4dC5wcmVmaXg7CisgICAg
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBzdWZmaXggPSBtX2x6d0NvbnRleHQuc3VmZml4OworICAg
IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgc3RhY2sgPSBtX2x6d0NvbnRleHQuc3RhY2s7CisgICAg
c2l6ZV90IHN0YWNrcCA9IG1fbHp3Q29udGV4dC5zdGFja3A7CisgICAgc2l6ZV90IHJvd3AgPSBt
X2x6d0NvbnRleHQucm93UG9zaXRpb247CisgICAgc2l6ZV90IHdpZHRoID0gbV9mcmFtZUNvbnRl
eHQtPndpZHRoOworICAgIHNpemVfdCByb3dzUmVtYWluaW5nID0gbV9mcmFtZUNvbnRleHQtPnJv
d3NSZW1haW5pbmc7CisKKyAgICBpZiAocm93cCA9PSB3aWR0aCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICNkZWZpbmUgT1VUUFVUX1JPVyBcCkBAIC0yNDQsNyArMjM3LDggQEAgYm9vbCBHSUZJ
bWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciogYmxvY2ssIHNpemVfdCBieXRl
c0luQmxvY2spCiAgICAgICAgIGlmICghb3V0cHV0Um93KCkpIFwKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsgXAogICAgICAgICByb3dzUmVtYWluaW5nLS07IFwKLSAgICAgICAgcm93cCA9IG1f
ZnJhbWVDb250ZXh0LT5yb3dwOyBcCisgICAgICAgIHJvd3AgPSAwOyBcCisgICAgICAgIG1fbHp3
Q29udGV4dC5yb3dQb3NpdGlvbiA9IDA7IFwKICAgICAgICAgaWYgKCFyb3dzUmVtYWluaW5nKSBc
CiAgICAgICAgICAgICBnb3RvIEVORDsgXAogICAgIH0gd2hpbGUgKDApCkBAIC0yNzksOCArMjcz
LDggQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciogYmxv
Y2ssIHNpemVfdCBieXRlc0luQmxvY2spCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChvbGRjb2RlID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgKnJvd3ArKyA9IHN1ZmZpeFtjb2Rl
XTsKLSAgICAgICAgICAgICAgICBpZiAocm93cCA9PSByb3dlbmQpCisgICAgICAgICAgICAgICAg
bV9sendDb250ZXh0LnJvd0J1ZmZlcltyb3dwKytdID0gc3VmZml4W2NvZGVdOworICAgICAgICAg
ICAgICAgIGlmIChyb3dwID09IHdpZHRoKQogICAgICAgICAgICAgICAgICAgICBPVVRQVVRfUk9X
OwogCiAgICAgICAgICAgICAgICAgZmlyc3RjaGFyID0gb2xkY29kZSA9IGNvZGU7CkBAIC0yODks
MjkgKzI4MywyOSBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkb0xaVyhjb25zdCB1bnNpZ25lZCBj
aGFyKiBibG9jaywgc2l6ZV90IGJ5dGVzSW5CbG9jaykKIAogICAgICAgICAgICAgaW5jb2RlID0g
Y29kZTsKICAgICAgICAgICAgIGlmIChjb2RlID49IGF2YWlsKSB7Ci0gICAgICAgICAgICAgICAg
KnN0YWNrcCsrID0gZmlyc3RjaGFyOworICAgICAgICAgICAgICAgIHN0YWNrW3N0YWNrcCsrXSA9
IGZpcnN0Y2hhcjsKICAgICAgICAgICAgICAgICBjb2RlID0gb2xkY29kZTsKIAotICAgICAgICAg
ICAgICAgIGlmIChzdGFja3AgPT0gc3RhY2sgKyBNQVhfQklUUykKKyAgICAgICAgICAgICAgICBp
ZiAoc3RhY2twID09IE1BWF9CWVRFUykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2xp
ZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIHdoaWxlIChjb2RlID49IGNsZWFyQ29kZSkgewotICAgICAgICAgICAgICAgIGlm
IChjb2RlID49IE1BWF9CSVRTIHx8IGNvZGUgPT0gcHJlZml4W2NvZGVdKQorICAgICAgICAgICAg
ICAgIGlmIChjb2RlID49IE1BWF9CWVRFUyB8fCBjb2RlID09IHByZWZpeFtjb2RlXSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDog
ZmFsc2U7CiAKICAgICAgICAgICAgICAgICAvLyBFdmVuIHRob3VnaCBzdWZmaXhbXSBvbmx5IGhv
bGRzIGNoYXJhY3RlcnMgdGhyb3VnaCBzdWZmaXhbYXZhaWwgLSAxXSwKICAgICAgICAgICAgICAg
ICAvLyBhbGxvd2luZyBjb2RlID49IGF2YWlsIGhlcmUgbGV0cyB1cyBiZSBtb3JlIHRvbGVyYW50
IG9mIG1hbGZvcm1lZAotICAgICAgICAgICAgICAgIC8vIGRhdGEuIEFzIGxvbmcgYXMgY29kZSA8
IE1BWF9CSVRTLCB0aGUgb25seSByaXNrIGlzIGEgZ2FyYmxlZCBpbWFnZSwKKyAgICAgICAgICAg
ICAgICAvLyBkYXRhLiBBcyBsb25nIGFzIGNvZGUgPCBNQVhfQllURVMsIHRoZSBvbmx5IHJpc2sg
aXMgYSBnYXJibGVkIGltYWdlLAogICAgICAgICAgICAgICAgIC8vIHdoaWNoIGlzIG5vIHdvcnNl
IHRoYW4gcmVmdXNpbmcgdG8gZGlzcGxheSBpdC4KLSAgICAgICAgICAgICAgICAqc3RhY2twKysg
PSBzdWZmaXhbY29kZV07CisgICAgICAgICAgICAgICAgc3RhY2tbc3RhY2twKytdID0gc3VmZml4
W2NvZGVdOwogICAgICAgICAgICAgICAgIGNvZGUgPSBwcmVmaXhbY29kZV07CiAKLSAgICAgICAg
ICAgICAgICBpZiAoc3RhY2twID09IHN0YWNrICsgTUFYX0JJVFMpCisgICAgICAgICAgICAgICAg
aWYgKHN0YWNrcCA9PSBNQVhfQllURVMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2Ns
aWVudCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAqc3RhY2twKysgPSBmaXJzdGNoYXIgPSBzdWZmaXhbY29kZV07CisgICAgICAg
ICAgICBzdGFja1tzdGFja3ArK10gPSBmaXJzdGNoYXIgPSBzdWZmaXhbY29kZV07CiAKICAgICAg
ICAgICAgIC8vIERlZmluZSBhIG5ldyBjb2Rld29yZCBpbiB0aGUgZGljdGlvbmFyeS4KICAgICAg
ICAgICAgIGlmIChhdmFpbCA8IDQwOTYpIHsKQEAgLTMzMSwyNCArMzI1LDI0IEBAIGJvb2wgR0lG
SW1hZ2VSZWFkZXI6OmRvTFpXKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJsb2NrLCBzaXplX3QgYnl0
ZXNJbkJsb2NrKQogCiAgICAgICAgICAgICAvLyBDb3B5IHRoZSBkZWNvZGVkIGRhdGEgb3V0IHRv
IHRoZSBzY2FubGluZSBidWZmZXIuCiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAg
KnJvd3ArKyA9ICotLXN0YWNrcDsKLSAgICAgICAgICAgICAgICBpZiAocm93cCA9PSByb3dlbmQp
CisgICAgICAgICAgICAgICAgbV9sendDb250ZXh0LnJvd0J1ZmZlcltyb3dwKytdID0gc3RhY2tb
LS1zdGFja3BdOworICAgICAgICAgICAgICAgIGlmIChyb3dwID09IHdpZHRoKQogICAgICAgICAg
ICAgICAgICAgICBPVVRQVVRfUk9XOwotICAgICAgICAgICAgfSB3aGlsZSAoc3RhY2twID4gc3Rh
Y2spOworICAgICAgICAgICAgfSB3aGlsZSAoc3RhY2twID4gMCk7CiAgICAgICAgIH0KICAgICB9
CiAKIEVORDoKICAgICAvLyBIb21lIHRoZSBsb2NhbCBjb3BpZXMgb2YgdGhlIEdJRiBkZWNvZGVy
IHN0YXRlIHZhcmlhYmxlcy4KLSAgICBtX2ZyYW1lQ29udGV4dC0+YXZhaWwgPSBhdmFpbDsKLSAg
ICBtX2ZyYW1lQ29udGV4dC0+Yml0cyA9IGJpdHM7Ci0gICAgbV9mcmFtZUNvbnRleHQtPmNvZGVz
aXplID0gY29kZXNpemU7Ci0gICAgbV9mcmFtZUNvbnRleHQtPmNvZGVtYXNrID0gY29kZW1hc2s7
Ci0gICAgbV9mcmFtZUNvbnRleHQtPm9sZGNvZGUgPSBvbGRjb2RlOwotICAgIG1fZnJhbWVDb250
ZXh0LT5maXJzdGNoYXIgPSBmaXJzdGNoYXI7Ci0gICAgbV9mcmFtZUNvbnRleHQtPmRhdHVtID0g
ZGF0dW07Ci0gICAgbV9mcmFtZUNvbnRleHQtPnN0YWNrcCA9IHN0YWNrcDsKLSAgICBtX2ZyYW1l
Q29udGV4dC0+cm93cCA9IHJvd3A7CisgICAgbV9sendDb250ZXh0LmF2YWlsID0gYXZhaWw7Cisg
ICAgbV9sendDb250ZXh0LmJpdHMgPSBiaXRzOworICAgIG1fbHp3Q29udGV4dC5jb2Rlc2l6ZSA9
IGNvZGVzaXplOworICAgIG1fbHp3Q29udGV4dC5jb2RlbWFzayA9IGNvZGVtYXNrOworICAgIG1f
bHp3Q29udGV4dC5vbGRjb2RlID0gb2xkY29kZTsKKyAgICBtX2x6d0NvbnRleHQuZmlyc3RjaGFy
ID0gZmlyc3RjaGFyOworICAgIG1fbHp3Q29udGV4dC5kYXR1bSA9IGRhdHVtOworICAgIG1fbHp3
Q29udGV4dC5zdGFja3AgPSBzdGFja3A7CisgICAgbV9sendDb250ZXh0LnJvd1Bvc2l0aW9uID0g
cm93cDsKICAgICBtX2ZyYW1lQ29udGV4dC0+cm93c1JlbWFpbmluZyA9IHJvd3NSZW1haW5pbmc7
CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zOTAsNDEgKzM4NCwxMyBAQCBib29sIEdJRkltYWdl
UmVhZGVyOjpkZWNvZGVJbnRlcm5hbChzaXplX3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBH
SUZJbWFnZURlYwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHSUZMWldTdGFy
dDogewotICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBMWlcgcGFyc2VyL2RlY29kZXIuCi0gICAg
ICAgICAgICBpbnQgZGF0YXNpemUgPSAqY3VycmVudENvbXBvbmVudDsKLQotICAgICAgICAgICAg
Ly8gU2luY2Ugd2UgdXNlIGEgY29kZXNpemUgb2YgMSBtb3JlIHRoYW4gdGhlIGRhdGFzaXplLCB3
ZSBuZWVkIHRvIGVuc3VyZQotICAgICAgICAgICAgLy8gdGhhdCBvdXIgZGF0YXNpemUgaXMgc3Ry
aWN0bHkgbGVzcyB0aGFuIHRoZSBNQVhfTFpXX0JJVFMgdmFsdWUgKDEyKS4KLSAgICAgICAgICAg
IC8vIFRoaXMgc2V0cyB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBjb2RlbWFzayBjb3JyZWN0bHkgYXQg
NDA5NS4KLSAgICAgICAgICAgIGlmIChkYXRhc2l6ZSA+PSBNQVhfTFpXX0JJVFMpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7
Ci0gICAgICAgICAgICBpbnQgY2xlYXJDb2RlID0gMSA8PCBkYXRhc2l6ZTsKLSAgICAgICAgICAg
IGlmIChjbGVhckNvZGUgPj0gTUFYX0JJVFMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY2xp
ZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7Ci0KLSAgICAgICAgICAgIGlmICht
X2ZyYW1lQ29udGV4dCkgeworICAgICAgICAgICAgaWYgKHF1ZXJ5ID09IEdJRkltYWdlRGVjb2Rl
cjo6R0lGRnVsbFF1ZXJ5KSB7CisgICAgICAgICAgICAgICAgaW50IGRhdGFzaXplID0gKmN1cnJl
bnRDb21wb25lbnQ7CiAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmRhdGFzaXplID0g
ZGF0YXNpemU7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmNsZWFyQ29kZSA9IGNs
ZWFyQ29kZTsKLSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+YXZhaWwgPSBtX2ZyYW1l
Q29udGV4dC0+Y2xlYXJDb2RlICsgMjsKLSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+
b2xkY29kZSA9IC0xOwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5jb2Rlc2l6ZSA9
IG1fZnJhbWVDb250ZXh0LT5kYXRhc2l6ZSArIDE7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNv
bnRleHQtPmNvZGVtYXNrID0gKDEgPDwgbV9mcmFtZUNvbnRleHQtPmNvZGVzaXplKSAtIDE7Ci0g
ICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmRhdHVtID0gbV9mcmFtZUNvbnRleHQtPmJp
dHMgPSAwOwotCi0gICAgICAgICAgICAgICAgLy8gSW5pdCB0aGUgdGFibGVzLgotICAgICAgICAg
ICAgICAgIGlmICghbV9mcmFtZUNvbnRleHQtPnN1ZmZpeCkKLSAgICAgICAgICAgICAgICAgICAg
bV9mcmFtZUNvbnRleHQtPnN1ZmZpeCA9IG5ldyB1bnNpZ25lZCBjaGFyW01BWF9CSVRTXTsKLQot
ICAgICAgICAgICAgICAgIC8vIENsZWFyaW5nIHRoZSB3aG9sZSBzdWZmaXggdGFibGUgbGV0cyB1
cyBiZSBtb3JlIHRvbGVyYW50IG9mIGJhZCBkYXRhLgotICAgICAgICAgICAgICAgIG1lbXNldCht
X2ZyYW1lQ29udGV4dC0+c3VmZml4LCAwLCBNQVhfQklUUyk7Ci0gICAgICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBtX2ZyYW1lQ29udGV4dC0+Y2xlYXJDb2RlOyBpKyspCi0gICAgICAg
ICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5zdWZmaXhbaV0gPSBpOwotCi0gICAgICAgICAg
ICAgICAgaWYgKCFtX2ZyYW1lQ29udGV4dC0+c3RhY2spCi0gICAgICAgICAgICAgICAgICAgIG1f
ZnJhbWVDb250ZXh0LT5zdGFjayA9IG5ldyB1bnNpZ25lZCBjaGFyW01BWF9CSVRTXTsKLSAgICAg
ICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+c3RhY2twID0gbV9mcmFtZUNvbnRleHQtPnN0YWNr
OworICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgTFpXIHBhcnNlci9kZWNvZGVyLgorICAg
ICAgICAgICAgICAgIGlmICghbV9sendDb250ZXh0LnByZXBhcmVUb0RlY29kZShtX3NjcmVlbldp
ZHRoLCBkYXRhc2l6ZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2NsaWVudCA/IG1f
Y2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwogICAgICAgICAgICAgfQotCiAgICAgICAgICAg
ICBHRVROKDEsIEdJRlN1YkJsb2NrKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC03MTIsMTYgKzY3OCw4IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKHNp
emVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIEdJRkltYWdlRGVjCiAgICAgICAgICAgICAg
ICAgLyogVGhpcyBjYXNlIHdpbGwgbmV2ZXIgYmUgdGFrZW4gaWYgdGhpcyBpcyB0aGUgZmlyc3Qg
aW1hZ2UgKi8KICAgICAgICAgICAgICAgICAvKiBiZWluZyBkZWNvZGVkLiBJZiBhbnkgb2YgdGhl
IGxhdGVyIGltYWdlcyBhcmUgbGFyZ2VyICAgICAqLwogICAgICAgICAgICAgICAgIC8qIHRoYW4g
dGhlIHNjcmVlbiBzaXplLCB3ZSBuZWVkIHRvIHJlYWxsb2NhdGUgYnVmZmVycy4gICAgICovCi0g
ICAgICAgICAgICAgICAgaWYgKG1fc2NyZWVuV2lkdGggPCB3aWR0aCkgewotICAgICAgICAgICAg
ICAgICAgICAvKiBYWFggRGV2aWFudCEgKi8KLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtd
bV9mcmFtZUNvbnRleHQtPnJvd2J1ZjsKLSAgICAgICAgICAgICAgICAgICAgbV9zY3JlZW5XaWR0
aCA9IHdpZHRoOwotICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+cm93YnVmID0g
bmV3IHVuc2lnbmVkIGNoYXJbbV9zY3JlZW5XaWR0aF07Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmICghbV9mcmFtZUNvbnRleHQtPnJvd2J1ZikKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFt
ZUNvbnRleHQtPnJvd2J1ZiA9IG5ldyB1bnNpZ25lZCBjaGFyW21fc2NyZWVuV2lkdGhdOwotCi0g
ICAgICAgICAgICAgICAgaWYgKCFtX2ZyYW1lQ29udGV4dC0+cm93YnVmKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2V0RmFpbGVkKCkgOiBmYWxzZTsK
KyAgICAgICAgICAgICAgICBtX3NjcmVlbldpZHRoID0gc3RkOjptYXgobV9zY3JlZW5XaWR0aCwg
d2lkdGgpOworCiAgICAgICAgICAgICAgICAgaWYgKG1fc2NyZWVuSGVpZ2h0IDwgaGVpZ2h0KQog
ICAgICAgICAgICAgICAgICAgICBtX3NjcmVlbkhlaWdodCA9IGhlaWdodDsKIApAQCAtNzQ4LDgg
KzcwNiw2IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKHNpemVfdCBkYXRh
UG9zaXRpb24sIHNpemVfdCBsZW4sIEdJRkltYWdlRGVjCiAgICAgICAgICAgICAgICAgLy8gQ2xl
YXIgc3RhdGUgZnJvbSBsYXN0IGltYWdlLgogICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0
LT5pcm93ID0gMDsKICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+cm93c1JlbWFpbmlu
ZyA9IG1fZnJhbWVDb250ZXh0LT5oZWlnaHQ7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRl
eHQtPnJvd2VuZCA9IG1fZnJhbWVDb250ZXh0LT5yb3didWYgKyBtX2ZyYW1lQ29udGV4dC0+d2lk
dGg7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnJvd3AgPSBtX2ZyYW1lQ29udGV4
dC0+cm93YnVmOwogCiAgICAgICAgICAgICAgICAgLy8gYml0cyBwZXIgcGl4ZWwgaXMgY3VycmVu
dENvbXBvbmVudFs4XSYweDA3CiAgICAgICAgICAgICB9CkBAIC04NDIsMyArNzk4LDM3IEBAIHZv
aWQgR0lGSW1hZ2VSZWFkZXI6OnNldFJlbWFpbmluZ0J5dGVzKHNpemVfdCByZW1haW5pbmdCeXRl
cykKICAgICBBU1NFUlQocmVtYWluaW5nQnl0ZXMgPD0gbV9kYXRhLT5zaXplKCkpOwogICAgIG1f
Ynl0ZXNSZWFkID0gbV9kYXRhLT5zaXplKCkgLSByZW1haW5pbmdCeXRlczsKIH0KKworYm9vbCBH
SUZMWldDb250ZXh0OjpwcmVwYXJlVG9EZWNvZGUodW5zaWduZWQgcm93V2lkdGgsIGludCBkYXRh
c2l6ZSkKK3sKKyAgICAvLyBTaW5jZSB3ZSB1c2UgYSBjb2Rlc2l6ZSBvZiAxIG1vcmUgdGhhbiB0
aGUgZGF0YXNpemUsIHdlIG5lZWQgdG8gZW5zdXJlCisgICAgLy8gdGhhdCBvdXIgZGF0YXNpemUg
aXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBNQVhfTFpXX0JJVFMgdmFsdWUgKDEyKS4KKyAgICAv
LyBUaGlzIHNldHMgdGhlIGxhcmdlc3QgcG9zc2libGUgY29kZW1hc2sgY29ycmVjdGx5IGF0IDQw
OTUuCisgICAgaWYgKGRhdGFzaXplID49IE1BWF9MWldfQklUUykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGNsZWFyQ29kZSA9IDEgPDwgZGF0YXNpemU7CisgICAgaWYgKGNsZWFyQ29kZSA+
PSBNQVhfQllURVMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF2YWlsID0gY2xlYXJD
b2RlICsgMjsKKyAgICBvbGRjb2RlID0gLTE7CisgICAgY29kZXNpemUgPSBkYXRhc2l6ZSArIDE7
CisgICAgY29kZW1hc2sgPSAoMSA8PCBjb2Rlc2l6ZSkgLSAxOworICAgIGRhdHVtID0gYml0cyA9
IDA7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSB0YWJsZXMgbGF6aWx5LCB0aGlzIGFsbG93cyBm
cmFtZSBjb3VudCBxdWVyeSB0byB1c2UgbGVzcyBtZW1vcnkuCisgICAgc3VmZml4LnJlc2l6ZShN
QVhfQllURVMpOworICAgIHN0YWNrLnJlc2l6ZShNQVhfQllURVMpOworICAgIHByZWZpeC5yZXNp
emUoTUFYX0JZVEVTKTsKKworICAgIC8vIEluaXRpYWxpemUgb3V0cHV0IHJvdyBidWZmZXIuCisg
ICAgcm93QnVmZmVyLnJlc2l6ZShyb3dXaWR0aCk7CisgICAgcm93UG9zaXRpb24gPSAwOworCisg
ICAgLy8gQ2xlYXJpbmcgdGhlIHdob2xlIHN1ZmZpeCB0YWJsZSBsZXRzIHVzIGJlIG1vcmUgdG9s
ZXJhbnQgb2YgYmFkIGRhdGEuCisgICAgc3VmZml4LmZpbGwoMCk7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBjbGVhckNvZGU7IGkrKykKKyAgICAgICAgc3VmZml4W2ldID0gaTsKKyAgICBzdGFj
a3AgPSAwOworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCBj
MmUzM2UxNzIzOGM0Y2E4YmJmMDE4NzBjNjYxYWY1YTc3YzE5MGRmLi5hZTJhOGJiMjFjZDgzMzEx
NmE5ZDE3ODY4ZmFmODczOWJiZGY5M2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtNDIs
OSArNDIsMTAgQEAKIC8vIHNvIHdlIHdpbGwgdG9vLgogI2luY2x1ZGUgIkdJRkltYWdlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogI2RlZmluZSBNQVhfTFpXX0JJVFMgICAgICAgICAgMTIKLSNkZWZpbmUgTUFYX0JJVFMgICAg
ICAgICAgICA0MDk3IC8qIDJeTUFYX0xaV19CSVRTKzEgKi8KKyNkZWZpbmUgTUFYX0JZVEVTICAg
ICAgICAgICA0MDk3IC8qIDJeTUFYX0xaV19CSVRTKzEgKi8KICNkZWZpbmUgTUFYX0NPTE9SUyAg
ICAgICAgICAgMjU2CiAjZGVmaW5lIEdJRl9DT0xPUlMgICAgICAgICAgICAgMwogCkBAIC03NCwy
OCArNzUsMTQgQEAgZW51bSBHSUZTdGF0ZSB7CiAgICAgR0lGQ29uc3VtZUNvbW1lbnQKIH07CiAK
Ky8vIEZyYW1lIG91dHB1dCBzdGF0ZSBtYWNoaW5lLgogc3RydWN0IEdJRkZyYW1lQ29udGV4dCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gTFpXIGRlY29k
ZXIgc3RhdGUgbWFjaGluZS4KLSAgICB1bnNpZ25lZCBjaGFyICpzdGFja3A7IC8vIEN1cnJlbnQg
c3RhY2sgcG9pbnRlci4KICAgICBpbnQgZGF0YXNpemU7Ci0gICAgaW50IGNvZGVzaXplOwotICAg
IGludCBjb2RlbWFzazsKLSAgICBpbnQgY2xlYXJDb2RlOyAvLyBDb2Rld29yZCB1c2VkIHRvIHRy
aWdnZXIgZGljdGlvbmFyeSByZXNldC4KLSAgICBpbnQgYXZhaWw7IC8vIEluZGV4IG9mIG5leHQg
YXZhaWxhYmxlIHNsb3QgaW4gZGljdGlvbmFyeS4KLSAgICBpbnQgb2xkY29kZTsKLSAgICB1bnNp
Z25lZCBjaGFyIGZpcnN0Y2hhcjsKLSAgICBpbnQgYml0czsgLy8gTnVtYmVyIG9mIHVucmVhZCBi
aXRzIGluICJkYXR1bSIuCi0gICAgaW50IGRhdHVtOyAvLyAzMi1iaXQgaW5wdXQgYnVmZmVyLgot
Ci0gICAgLy8gT3V0cHV0IHN0YXRlIG1hY2hpbmUuCiAgICAgaW50IGlwYXNzOyAvLyBJbnRlcmxh
Y2UgcGFzczsgUmFuZ2VzIDEtNCBpZiBpbnRlcmxhY2VkLgotICAgIHVuc2lnbmVkIHJvd3NSZW1h
aW5pbmc7IC8vIFJvd3MgcmVtYWluaW5nIHRvIGJlIG91dHB1dC4KLSAgICB1bnNpZ25lZCBpcm93
OyAvLyBDdXJyZW50IG91dHB1dCByb3csIHN0YXJ0aW5nIGF0IHplcm8uCi0gICAgdW5zaWduZWQg
Y2hhciAqcm93YnVmOyAvLyBTaW5nbGUgc2NhbmxpbmUgdGVtcG9yYXJ5IGJ1ZmZlci4KLSAgICB1
bnNpZ25lZCBjaGFyICpyb3dlbmQ7IC8vIFBvaW50ZXIgdG8gZW5kIG9mIHJvd2J1Zi4KLSAgICB1
bnNpZ25lZCBjaGFyICpyb3dwOyAvLyBDdXJyZW50IG91dHB1dCBwb2ludGVyLgorICAgIHNpemVf
dCByb3dzUmVtYWluaW5nOyAvLyBSb3dzIHJlbWFpbmluZyB0byBiZSBvdXRwdXQuCisgICAgc2l6
ZV90IGlyb3c7IC8vIEN1cnJlbnQgb3V0cHV0IHJvdywgc3RhcnRpbmcgYXQgemVyby4KIAogICAg
IC8vIFBhcmFtZXRlcnMgZm9yIGltYWdlIGZyYW1lIGN1cnJlbnRseSBiZWluZyBkZWNvZGVkLgog
ICAgIHVuc2lnbmVkIHhPZmZzZXQ7CkBAIC0xMTQsMjcgKzEwMSwxMSBAQCBwdWJsaWM6CiAKICAg
ICB1bnNpZ25lZCBkZWxheVRpbWU7IC8vIERpc3BsYXkgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCBm
b3IgdGhpcyBpbWFnZSBpbiBhIG11bHRpLWltYWdlIEdJRi4KIAotICAgIHVuc2lnbmVkIHNob3J0
KiBwcmVmaXg7IC8vIExaVyBkZWNvZGluZyB0YWJsZXMuCi0gICAgdW5zaWduZWQgY2hhciogc3Vm
Zml4OyAvLyBMWlcgZGVjb2RpbmcgdGFibGVzLgotICAgIHVuc2lnbmVkIGNoYXIqIHN0YWNrOyAv
LyBCYXNlIG9mIExaVyBkZWNvZGVyIHN0YWNrLgotCiAgICAgR0lGRnJhbWVDb250ZXh0KCkKLSAg
ICAgICAgOiBzdGFja3AoMCkKLSAgICAgICAgLCBkYXRhc2l6ZSgwKQotICAgICAgICAsIGNvZGVz
aXplKDApCi0gICAgICAgICwgY29kZW1hc2soMCkKLSAgICAgICAgLCBjbGVhckNvZGUoMCkKLSAg
ICAgICAgLCBhdmFpbCgwKQotICAgICAgICAsIG9sZGNvZGUoMCkKLSAgICAgICAgLCBmaXJzdGNo
YXIoMCkKLSAgICAgICAgLCBiaXRzKDApCi0gICAgICAgICwgZGF0dW0oMCkKKyAgICAgICAgOiBk
YXRhc2l6ZSgwKQogICAgICAgICAsIGlwYXNzKDApCiAgICAgICAgICwgcm93c1JlbWFpbmluZygw
KQogICAgICAgICAsIGlyb3coMCkKLSAgICAgICAgLCByb3didWYoMCkKLSAgICAgICAgLCByb3dl
bmQoMCkKLSAgICAgICAgLCByb3dwKDApCiAgICAgICAgICwgeE9mZnNldCgwKQogICAgICAgICAs
IHlPZmZzZXQoMCkKICAgICAgICAgLCB3aWR0aCgwKQpAQCAtMTQ4LDIxICsxMTksNTEgQEAgcHVi
bGljOgogICAgICAgICAsIGludGVybGFjZWQoZmFsc2UpCiAgICAgICAgICwgaXNUcmFuc3BhcmVu
dChmYWxzZSkKICAgICAgICAgLCBkZWxheVRpbWUoMCkKLSAgICAgICAgLCBwcmVmaXgoMCkKLSAg
ICAgICAgLCBzdWZmaXgoMCkKLSAgICAgICAgLCBzdGFjaygwKQogICAgIHsKICAgICB9CiAgICAg
CiAgICAgfkdJRkZyYW1lQ29udGV4dCgpCiAgICAgewotICAgICAgICBkZWxldGUgW10gcm93YnVm
OwotICAgICAgICBkZWxldGUgW10gcHJlZml4OwotICAgICAgICBkZWxldGUgW10gc3VmZml4Owot
ICAgICAgICBkZWxldGUgW10gc3RhY2s7CiAgICAgfQogfTsKIAorLy8gTFpXIGRlY29kZXIgc3Rh
dGUgbWFjaGluZS4KKy8vIEZJWE1FOiBNYWtlIHRoaXMgYSBjbGFzcyBhbmQgaGlkZSBwcml2YXRl
IG1lbWJlcnMuCitzdHJ1Y3QgR0lGTFpXQ29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgR0lGTFpXQ29udGV4dCgpCisgICAgICAgIDogc3RhY2twKDAp
CisgICAgICAgICwgY29kZXNpemUoMCkKKyAgICAgICAgLCBjb2RlbWFzaygwKQorICAgICAgICAs
IGNsZWFyQ29kZSgwKQorICAgICAgICAsIGF2YWlsKDApCisgICAgICAgICwgb2xkY29kZSgwKQor
ICAgICAgICAsIGZpcnN0Y2hhcigwKQorICAgICAgICAsIGJpdHMoMCkKKyAgICAgICAgLCBkYXR1
bSgwKQorICAgICAgICAsIHJvd1Bvc2l0aW9uKDApCisgICAgeyB9CisKKyAgICBib29sIHByZXBh
cmVUb0RlY29kZSh1bnNpZ25lZCByb3dXaWR0aCwgaW50IGRhdGFzaXplKTsKKworICAgIHNpemVf
dCBzdGFja3A7IC8vIEN1cnJlbnQgc3RhY2sgcG9pbnRlci4KKyAgICBpbnQgY29kZXNpemU7Cisg
ICAgaW50IGNvZGVtYXNrOworICAgIGludCBjbGVhckNvZGU7IC8vIENvZGV3b3JkIHVzZWQgdG8g
dHJpZ2dlciBkaWN0aW9uYXJ5IHJlc2V0LgorICAgIGludCBhdmFpbDsgLy8gSW5kZXggb2YgbmV4
dCBhdmFpbGFibGUgc2xvdCBpbiBkaWN0aW9uYXJ5LgorICAgIGludCBvbGRjb2RlOworICAgIHVu
c2lnbmVkIGNoYXIgZmlyc3RjaGFyOworICAgIGludCBiaXRzOyAvLyBOdW1iZXIgb2YgdW5yZWFk
IGJpdHMgaW4gImRhdHVtIi4KKyAgICBpbnQgZGF0dW07IC8vIDMyLWJpdCBpbnB1dCBidWZmZXIu
CisgICAgc2l6ZV90IHJvd1Bvc2l0aW9uOworCisgICAgVmVjdG9yPHVuc2lnbmVkIHNob3J0PiBw
cmVmaXg7CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHN1ZmZpeDsKKyAgICBWZWN0b3I8dW5z
aWduZWQgY2hhcj4gc3RhY2s7CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHJvd0J1ZmZlcjsg
Ly8gU2luZ2xlIHNjYW5saW5lIHRlbXBvcmFyeSBidWZmZXIuCit9OworCiBjbGFzcyBHSUZJbWFn
ZVJlYWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0yNDks
NiArMjUwLDggQEAgcHJpdmF0ZToKICAgICAKICAgICBHSUZGcmFtZUNvbnRleHQqIG1fZnJhbWVD
b250ZXh0OwogCisgICAgR0lGTFpXQ29udGV4dCBtX2x6d0NvbnRleHQ7CisKICAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>