<?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>173022</bug_id>
          
          <creation_ts>2017-06-06 11:37:19 -0700</creation_ts>
          <short_desc>[Web Audio] createScriptProcessor throws IndexSizeError for valid arguments</short_desc>
          <delta_ts>2017-06-07 21:31:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin King">king7532</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1316136</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin King">king7532</who>
    <bug_when>2017-06-06 11:37:19 -0700</bug_when>
    <thetext>Safari Version 11.0 (13604.1.21.7) on macOS 10.13 Beta (17A264c)

Go to http://test.webrtc.org and hit start, you will get this error

Microphone test [ FAILED ] Failed to get access to local media due to error: IndexSizeError&quot;

{&quot;ts&quot;:1496772961420,&quot;name&quot;:&quot;getusermedia&quot;,&quot;id&quot;:3,&quot;args&quot;:{&quot;status&quot;:&quot;fail&quot;,&quot;error&quot;:{&quot;code&quot;:1,&quot;name&quot;:&quot;IndexSizeError&quot;,&quot;message&quot;:&quot;The index is not in the allowed range.&quot;,&quot;line&quot;:10,&quot;column&quot;:15801,&quot;sourceURL&quot;:&quot;https://test.webrtc.org/main.js&quot;}}},

Full report:

https://test.webrtc.org/report/AMIfv97ilE0n4dR2Lt5LLqYfS-vjdKKe31HoB4tWaw40JI3gOIq4TtS9NO3-IFfCPR3OjoE9FA8VqKXeiwqIjRZoxTfDEGkzIywyN2WzhR8kA2XHEKIljthyyqmuGf7UctRFGypFdoksXWHLR7UJ4hTDBcKo7a4pCQ</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316570</commentid>
    <comment_count>1</comment_count>
    <who name="Benjamin King">king7532</who>
    <bug_when>2017-06-07 11:48:22 -0700</bug_when>
    <thetext>The IndexSizeError is thrown by:

audioContext.createScriptProcessor(this.bufferSize,this.inputChannelCount,this.outputChannelCount)

this.bufferSize = 0
this.inputChannelCount = 6
this.outputChannelCount = 2

Steps to reproduce:
1. https://test.webrtc.org
2. Click start
3. Click on Audio Capture under Microphone to see the error message

Reproducible using Safari Technology Preview Release 32 (Safari 11.0, WebKit 12604.1.23.0.4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316719</commentid>
    <comment_count>2</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-06-07 17:03:33 -0700</bug_when>
    <thetext>We&apos;re not picking a good default buffer size.

If I breakpoint in the script and override this.bufferSize to 256, the microphone test passes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316738</commentid>
    <comment_count>3</comment_count>
      <attachid>312261</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-06-07 17:59:39 -0700</bug_when>
    <thetext>Created attachment 312261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316744</commentid>
    <comment_count>4</comment_count>
      <attachid>312261</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-07 18:15:19 -0700</bug_when>
    <thetext>Comment on attachment 312261
Patch

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

Other than the compile error, looks good to me.

&gt; Source/WebCore/ChangeLog:11
&gt; +        The Web Audio spec defines a default behavior when clients pass in a value of 0
&gt; +        for bufferSize to the createScriptProcessor() method.

Can you link to the relevant spec here?

Is it time for me to do the BaseAudioContext split?

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:511
&gt; +    case 256:
&gt; +    case 512:
&gt; +    case 1024:
&gt; +    case 2048:
&gt; +    case 4096:
&gt; +    case 8192:
&gt; +    case 16384:

I&apos;m really curious if if there any compilers that would generate this code for:
auto v = std::log2(bufferSize);
return v &gt;= 8 &amp;&amp; v &lt;= 14;

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:539
&gt; +    return node;

This will need to be WTFMove(node) to get it to work with the ExceptionOr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316773</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-06-07 19:56:58 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 312261 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=312261&amp;action=review
&gt; 
&gt; Other than the compile error, looks good to me.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        The Web Audio spec defines a default behavior when clients pass in a value of 0
&gt; &gt; +        for bufferSize to the createScriptProcessor() method.
&gt; 
&gt; Can you link to the relevant spec here?

Sure.

&gt; Is it time for me to do the BaseAudioContext split?

No time like the present! (So, yes?)

&gt; &gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:511
&gt; &gt; +    case 256:
&gt; &gt; +    case 512:
&gt; &gt; +    case 1024:
&gt; &gt; +    case 2048:
&gt; &gt; +    case 4096:
&gt; &gt; +    case 8192:
&gt; &gt; +    case 16384:
&gt; 
&gt; I&apos;m really curious if if there any compilers that would generate this code
&gt; for:
&gt; auto v = std::log2(bufferSize);
&gt; return v &gt;= 8 &amp;&amp; v &lt;= 14;

Probably not; the spec wants to reject, e.g., 257 through 511, and I don&apos;t believe that line above has the same effect.

&gt; &gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:539
&gt; &gt; +    return node;
&gt; 
&gt; This will need to be WTFMove(node) to get it to work with the ExceptionOr;

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316776</commentid>
    <comment_count>6</comment_count>
      <attachid>312268</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-06-07 19:59:45 -0700</bug_when>
    <thetext>Created attachment 312268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316783</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-07 20:10:30 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:511
&gt; &gt; &gt; +    case 256:
&gt; &gt; &gt; +    case 512:
&gt; &gt; &gt; +    case 1024:
&gt; &gt; &gt; +    case 2048:
&gt; &gt; &gt; +    case 4096:
&gt; &gt; &gt; +    case 8192:
&gt; &gt; &gt; +    case 16384:
&gt; &gt; 
&gt; &gt; I&apos;m really curious if if there any compilers that would generate this code
&gt; &gt; for:
&gt; &gt; auto v = std::log2(bufferSize);
&gt; &gt; return v &gt;= 8 &amp;&amp; v &lt;= 14;
&gt; 
&gt; Probably not; the spec wants to reject, e.g., 257 through 511, and I don&apos;t
&gt; believe that line above has the same effect.

It doesn&apos;t, I was being dumb.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316789</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-07 20:17:44 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #7)
&gt; &gt; &gt; &gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:511
&gt; &gt; &gt; &gt; +    case 256:
&gt; &gt; &gt; &gt; +    case 512:
&gt; &gt; &gt; &gt; +    case 1024:
&gt; &gt; &gt; &gt; +    case 2048:
&gt; &gt; &gt; &gt; +    case 4096:
&gt; &gt; &gt; &gt; +    case 8192:
&gt; &gt; &gt; &gt; +    case 16384:
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m really curious if if there any compilers that would generate this code
&gt; &gt; &gt; for:
&gt; &gt; &gt; auto v = std::log2(bufferSize);
&gt; &gt; &gt; return v &gt;= 8 &amp;&amp; v &lt;= 14;
&gt; &gt; 
&gt; &gt; Probably not; the spec wants to reject, e.g., 257 through 511, and I don&apos;t
&gt; &gt; believe that line above has the same effect.
&gt; 
&gt; It doesn&apos;t, I was being dumb.

These two (using the lovely, hasOneBitSet aka isPowerOf2 helper), on the other hand, would work:

inline bool hasOneBitSet(T value)
{
    return !((value - 1) &amp; value) &amp;&amp; value;
}

static bool usingLog(unsigned input)
{
    if (!hasOneBitSet(input))
        return false;
    auto v = std::log2(input);
    return v &gt;= 8 &amp;&amp; v &lt;= 14;
}

static bool manualLog(unsigned input)
{
    if (!hasOneBitSet(input))
        return false;

    int v = 0;
    while (input &gt;&gt;= 1)
        ++v;
    return v &gt;= 8 &amp;&amp; v &lt;= 14;
}

But neither are as straightforward (or probably fast) as the switch statement. I just enjoy silly power of two games.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316790</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-07 20:20:57 -0700</bug_when>
    <thetext>Ok, last one I promise, this ones my favorite though:

static bool log2builting(unsigned input)
{
    if (!hasOneBitSet(input))
        return false;
    int v = __builtin_ctz(input);
    return v &gt;= 8 &amp;&amp; v &lt;= 14;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316793</commentid>
    <comment_count>10</comment_count>
      <attachid>312269</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-06-07 20:25:42 -0700</bug_when>
    <thetext>Created attachment 312269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316796</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-06-07 20:30:02 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #9)
&gt;     int v = __builtin_ctz(input);

Oh, ffs. [1]

[1] https://en.wikipedia.org/wiki/Find_first_set</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316797</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-06-07 20:30:45 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #11)
&gt; (In reply to Sam Weinig from comment #9)
&gt; &gt;     int v = __builtin_ctz(input);
&gt; 
&gt; Oh, ffs. [1]
&gt; 
&gt; [1] https://en.wikipedia.org/wiki/Find_first_set

And yes, that last one _is_ the best one. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316803</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-07 20:38:51 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #12)
&gt; (In reply to Jer Noble from comment #11)
&gt; &gt; (In reply to Sam Weinig from comment #9)
&gt; &gt; &gt;     int v = __builtin_ctz(input);
&gt; &gt; 
&gt; &gt; Oh, ffs. [1]
&gt; &gt; 
&gt; &gt; [1] https://en.wikipedia.org/wiki/Find_first_set
&gt; 
&gt; And yes, that last one _is_ the best one. :)

I found better (well, it lets the compiler to a bit better)!

static bool log2builting(unsigned input)
{
    if (__builtin_popcount(value) != 1)
        return false;
    int v = __builtin_ctz(input);
    return v &gt;= 8 &amp;&amp; v &lt;= 14;
}

I am dead inside.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316815</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-06-07 21:25:09 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #13)
&gt; (In reply to Jer Noble from comment #12)
&gt; &gt; (In reply to Jer Noble from comment #11)
&gt; &gt; &gt; (In reply to Sam Weinig from comment #9)
&gt; &gt; &gt; &gt;     int v = __builtin_ctz(input);
&gt; &gt; &gt; 
&gt; &gt; &gt; Oh, ffs. [1]
&gt; &gt; &gt; 
&gt; &gt; &gt; [1] https://en.wikipedia.org/wiki/Find_first_set
&gt; &gt; 
&gt; &gt; And yes, that last one _is_ the best one. :)
&gt; 
&gt; I found better (well, it lets the compiler to a bit better)!
&gt; 
&gt; static bool log2builting(unsigned input)
&gt; {
&gt;     if (__builtin_popcount(value) != 1)
&gt;         return false;
&gt;     int v = __builtin_ctz(input);
&gt;     return v &gt;= 8 &amp;&amp; v &lt;= 14;
&gt; }
&gt; 
&gt; I am dead inside.

Sir, you are nerd inside.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316816</commentid>
    <comment_count>15</comment_count>
      <attachid>312269</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 21:31:35 -0700</bug_when>
    <thetext>Comment on attachment 312269
Patch

Clearing flags on attachment: 312269

Committed r217919: &lt;http://trac.webkit.org/changeset/217919&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316817</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 21:31:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312261</attachid>
            <date>2017-06-07 17:59:39 -0700</date>
            <delta_ts>2017-06-07 19:59:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173022-20170607175938.patch</filename>
            <type>text/plain</type>
            <size>10515</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM4MWVkZGEyMTdkOTNj
ODczYjA2NDUxMTYxNGJmNGQyN2RiMGU4NS4uZDc0NTg2YzFmYzI5ODFjZjI5MzkyODE4NzUyMzIw
NTk5NjdjM2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA2LTA3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgQXVkaW9dIGNyZWF0
ZVNjcmlwdFByb2Nlc3NvciB0aHJvd3MgSW5kZXhTaXplRXJyb3IgZm9yIHZhbGlkIGFyZ3VtZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMDIy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
ZCB0ZXN0OiB3ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLmh0bWwKKworICAgICAgICBUaGUg
V2ViIEF1ZGlvIHNwZWMgZGVmaW5lcyBhIGRlZmF1bHQgYmVoYXZpb3Igd2hlbiBjbGllbnRzIHBh
c3MgaW4gYSB2YWx1ZSBvZiAwCisgICAgICAgIGZvciBidWZmZXJTaXplIHRvIHRoZSBjcmVhdGVT
Y3JpcHRQcm9jZXNzb3IoKSBtZXRob2QuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZVNj
cmlwdFByb2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oOgorCiAyMDE3LTA2LTA2
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEV4ZW1wdCBleGNs
dXNpdmVseSB3YWxsLXBvd2VyZWQgZGV2aWNlcyBmcm9tIGhhcmR3YXJlIGNvZGVjIHJlcXVpcmVt
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAKaW5kZXggODg0ZDYyYzQ5NWU0YjZjYjYzMzlhMmEwMDg2YWU5NTk2ZmVhZGE4MS4uNWIwODlm
OTE0YzRjZjc2ZWY2N2Y5ODc5ZTcwMWM1NzFlYWY1ZjQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKICNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgog
I2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgog
I2luY2x1ZGUgIkJpcXVhZEZpbHRlck5vZGUuaCIKICNpbmNsdWRlICJDaGFubmVsTWVyZ2VyTm9k
ZS5oIgogI2luY2x1ZGUgIkNoYW5uZWxTcGxpdHRlck5vZGUuaCIKQEAgLTQ4OCwxMyArNDg5LDU0
IEBAIEV4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gQXVkaW9Db250ZXh0Ojpj
cmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAgIGF1dG8gbm9kZSA9IFNjcmlwdFByb2Nlc3Nv
ck5vZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgYnVm
ZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsK
IAotICAgIGlmICghbm9kZSkKKyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDYgSnVuZSAyMDE3
CisgICAgLy8gIGh0dHBzOi8vd2ViYXVkaW8uZ2l0aHViLmlvL3dlYi1hdWRpby1hcGkvI3dpZGwt
QmFzZUF1ZGlvQ29udGV4dC1jcmVhdGVTY3JpcHRQcm9jZXNzb3ItU2NyaXB0UHJvY2Vzc29yTm9k
ZS11bnNpZ25lZC1sb25nLWJ1ZmZlclNpemUtdW5zaWduZWQtbG9uZy1udW1iZXJPZklucHV0Q2hh
bm5lbHMtdW5zaWduZWQtbG9uZy1udW1iZXJPZk91dHB1dENoYW5uZWxzCisKKyAgICAvLyBUaGUg
YnVmZmVyU2l6ZSBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyB0aGUgYnVmZmVyIHNpemUgaW4gdW5pdHMg
b2Ygc2FtcGxlLWZyYW1lcy4gSWYgaXQncyBub3QgcGFzc2VkIGluLAorICAgIC8vIG9yIGlmIHRo
ZSB2YWx1ZSBpcyAwLCB0aGVuIHRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGNob29zZSB0aGUgYmVz
dCBidWZmZXIgc2l6ZSBmb3IgdGhlIGdpdmVuIGVudmlyb25tZW50LAorICAgIC8vIHdoaWNoIHdp
bGwgYmUgY29uc3RhbnQgcG93ZXIgb2YgMiB0aHJvdWdob3V0IHRoZSBsaWZldGltZSBvZiB0aGUg
bm9kZS4gLi4uIElmIHRoZSB2YWx1ZSBvZiB0aGlzIHBhcmFtZXRlcgorICAgIC8vIGlzIG5vdCBv
bmUgb2YgdGhlIGFsbG93ZWQgcG93ZXItb2YtMiB2YWx1ZXMgbGlzdGVkIGFib3ZlLCBhbiBJbmRl
eFNpemVFcnJvciBtdXN0IGJlIHRocm93bi4KKyAgICBzd2l0Y2ggKGJ1ZmZlclNpemUpIHsKKyAg
ICBjYXNlIDA6CisgICAgICAgIC8vIFBpY2sgYSB2YWx1ZSBiZXR3ZWVuIDI1NiAoMl44KSBhbmQg
MTYzODQgKDJeMTQpLCBiYXNlZCBvbiB0aGUgYnVmZmVyIHNpemUgb2YgdGhlIGN1cnJlbnQgQXVk
aW9TZXNzaW9uOgorICAgICAgICBidWZmZXJTaXplID0gMSA8PCBzdGQ6Om1heDxzaXplX3Q+KDgs
IHN0ZDo6bWluPHNpemVfdD4oMTQsIHN0ZDo6bG9nMihBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Np
b24oKS5idWZmZXJTaXplKCkpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjU2OgorICAg
IGNhc2UgNTEyOgorICAgIGNhc2UgMTAyNDoKKyAgICBjYXNlIDIwNDg6CisgICAgY2FzZSA0MDk2
OgorICAgIGNhc2UgODE5MjoKKyAgICBjYXNlIDE2Mzg0OgorICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5ERVhfU0laRV9FUlIgfTsKKyAg
ICB9CiAKLSAgICByZWZOb2RlKCpub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50
aWwgd2Ugc3RvcCBtYWtpbmcgamF2YXNjcmlwdCByZW5kZXJpbmcgY2FsbGJhY2tzCi0gICAgcmV0
dXJuIG5vZGUucmVsZWFzZU5vbk51bGwoKTsKKyAgICAvLyBBbiBJbmRleFNpemVFcnJvciBleGNl
cHRpb24gbXVzdCBiZSB0aHJvd24gaWYgYnVmZmVyU2l6ZSBvciBudW1iZXJPZklucHV0Q2hhbm5l
bHMgb3IgbnVtYmVyT2ZPdXRwdXRDaGFubmVscworICAgIC8vIGFyZSBvdXRzaWRlIHRoZSB2YWxp
ZCByYW5nZS4gSXQgaXMgaW52YWxpZCBmb3IgYm90aCBudW1iZXJPZklucHV0Q2hhbm5lbHMgYW5k
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgdG8gYmUgemVyby4KKyAgICAvLyBJbiB0aGlzIGNhc2Ug
YW4gSW5kZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJvd24uCisKKyAgICBpZiAoIW51bWJlck9mSW5w
dXRDaGFubmVscyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisKKyAgICAvLyBUaGlzIHBhcmFtZXRlciBb
bnVtYmVyT2ZJbnB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMg
Zm9yIHRoaXMgbm9kZSdzIGlucHV0LiBWYWx1ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBtdXN0IGJl
IHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0IGJlIHRocm93biBpZiB0aGUgbnVt
YmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBpZiAobnVtYmVyT2ZJbnB1
dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1i
ZXJPZk91dHB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9y
IHRoaXMgbm9kZSdzIG91dHB1dC4gVmFsdWVzIG9mCisgICAgLy8gdXAgdG8gMzIgbXVzdCBiZSBz
dXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0aHJvd24gaWYgdGhlIG51bWJl
ciBvZiBjaGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAgaWYgKG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworCisgICAgYXV0byBub2RlID0gU2NyaXB0UHJvY2Vz
c29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBi
dWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMp
OworCisgICAgcmVmTm9kZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwg
d2Ugc3RvcCBtYWtpbmcgamF2YXNjcmlwdCByZW5kZXJpbmcgY2FsbGJhY2tzCisgICAgcmV0dXJu
IG5vZGU7CiB9CiAKIFJlZjxCaXF1YWRGaWx0ZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJp
cXVhZEZpbHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGwKaW5kZXggZTUyMjZhM2YxY2FjY2E4MTlmODA5M2JhZjM3NGQwOTA1Yjg2YzA0
My4uYTExNDIwMmIwMWY4YjMzNzhmZjY2YmU3M2E5ZjBiOTYzZTM1MjdhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtODUsNyAr
ODUsNyBAQCBlbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKICAgICBDb252b2x2ZXJOb2RlIGNyZWF0
ZUNvbnZvbHZlcigpOwogICAgIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1pY3ND
b21wcmVzc29yKCk7CiAgICAgQW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7Ci0gICAgW01h
eVRocm93RXhjZXB0aW9uXSBTY3JpcHRQcm9jZXNzb3JOb2RlIGNyZWF0ZVNjcmlwdFByb2Nlc3Nv
cih1bnNpZ25lZCBsb25nIGJ1ZmZlclNpemUsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1
dENoYW5uZWxzID0gMik7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBTY3JpcHRQcm9jZXNzb3JO
b2RlIGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIGJ1ZmZlclNp
emUgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRDaGFubmVscyA9IDIs
IG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IDIpOwogICAg
IE9zY2lsbGF0b3JOb2RlIGNyZWF0ZU9zY2lsbGF0b3IoKTsKICAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIFBlcmlvZGljV2F2ZSBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5IHJlYWwsIEZs
b2F0MzJBcnJheSBpbWFnKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggYjk1ZTA5M2QwNWUxNGM2MWYy
OTBmZTFkMGMzZTYzNTM5MTIwNTVjOC4uMjUwZjgzZTIyODFkMTFmY2E2MzNkNzE0MDlkMjQ2ZTlm
NTI0MzJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC00MSwzMSArNDEsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9jZXNzb3JO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXpl
X3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKQorUmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+IFNjcmlwdFBy
b2Nlc3Nvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVu
c2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiB7Ci0gICAgLy8gQ2hlY2sgZm9yIHZhbGlk
IGJ1ZmZlciBzaXplLgotICAgIHN3aXRjaCAoYnVmZmVyU2l6ZSkgewotICAgIGNhc2UgMjU2Ogot
ICAgIGNhc2UgNTEyOgotICAgIGNhc2UgMTAyNDoKLSAgICBjYXNlIDIwNDg6Ci0gICAgY2FzZSA0
MDk2OgotICAgIGNhc2UgODE5MjoKLSAgICBjYXNlIDE2Mzg0OgotICAgICAgICBicmVhazsKLSAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIW51
bWJlck9mSW5wdXRDaGFubmVscyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gQXVkaW9D
b250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJl
ck9mQ2hhbm5lbHMoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTY3JpcHRQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZl
clNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCmluZGV4IDRjNmJhZmU5NDhhN2NkMDNhZDVjZTg2YTFkZjI2YzU1NjgzNDE2
YTIuLjY3YzE0NGZjMWMxZDQ2MmI4ODMzY2ZlN2MyNDU3NzUyN2UxODM0OTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5o
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhv
dyBmcmVxdWVudGx5IHRoZSBvbmF1ZGlvcHJvY2VzcyBldmVudCBoYW5kbGVyIGlzIGNhbGxlZCBh
bmQgaG93IG1hbnkgc2FtcGxlLWZyYW1lcyBuZWVkIHRvIGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwu
CiAgICAgLy8gTG93ZXIgbnVtYmVycyBmb3IgYnVmZmVyU2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxv
d2VyIChiZXR0ZXIpIGxhdGVuY3kuIEhpZ2hlciBudW1iZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRv
IGF2b2lkIGF1ZGlvIGJyZWFrdXAgYW5kIGdsaXRjaGVzLgogICAgIC8vIFRoZSB2YWx1ZSBjaG9z
ZW4gbXVzdCBjYXJlZnVsbHkgYmFsYW5jZSBiZXR3ZWVuIGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxp
dHkuCi0gICAgc3RhdGljIFJlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51
bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7Cisg
ICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0Jiwg
ZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CiAKICAgICB2aXJ0
dWFsIH5TY3JpcHRQcm9jZXNzb3JOb2RlKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OTFiNWY5YWVmNjM3ZWFhZjIx
ZjMzYThjNWFmNzdkMjI5NmI3NDE2Li42ZGY0OWMzYmFkN2FhMDhlOTE0OTdlOTZiODZhZjY3NDU2
ODRmYjI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDYtMDcgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBdWRpb10gY3JlYXRlU2NyaXB0UHJv
Y2Vzc29yIHRocm93cyBJbmRleFNpemVFcnJvciBmb3IgdmFsaWQgYXJndW1lbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMwMjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmF1ZGlvL2phdmFz
Y3JpcHRhdWRpb25vZGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmF1ZGlvL2phdmFzY3Jp
cHRhdWRpb25vZGUuaHRtbDoKKwogMjAxNy0wNi0wNyAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlYmFzZWxpbmUgYW5kIGVuYWJsZSBtZWRpYS9tb2Rlcm4t
bWVkaWEtY29udHJvbHMvY29udHJvbHMtdmlzaWJpbGl0eS1zdXBwb3J0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUtZXhwZWN0ZWQudHh0CmluZGV4
IGVkNGJmODJmNzYwZDE0ZWNjODVmYTc3MmI2ZTI5NTQwZDM2YThkOTAuLjdmMWFhZDg0YjUzNzNi
NDEzMmYwNmY1MTJmMGUyMTBlMmEzMmQ5N2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1
ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUtZXhwZWN0ZWQudHh0CkBAIC04LDYgKzgsNyBAQCBQ
QVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIFNjcmlwdFByb2Nlc3Nvck5vZGUgd2l0aCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMgPSAyIGFuZAogUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBTY3JpcHRQ
cm9jZXNzb3JOb2RlIHdpdGggbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMCBhbmQgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscyA9IDEuCiBQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIFNjcmlwdFByb2Nl
c3Nvck5vZGUgd2l0aCBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAwIGFuZCBudW1iZXJPZk91dHB1
dENoYW5uZWxzID0gMi4KIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24gZm9yIGlsbGVnYWwgYnVm
ZmVyU2l6ZS4KK1BBU1MgU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgU2NyaXB0UHJvY2Vzc29yTm9kZSB3
aXRoIGJ1ZmZlclNpemUgPSAwLgogUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBTY3JpcHRQcm9j
ZXNzb3JOb2RlIHdpdGggYnVmZmVyU2l6ZSA9IDI1Ni4KIFBBU1MgU3VjY2Vzc2Z1bGx5IGNyZWF0
ZWQgU2NyaXB0UHJvY2Vzc29yTm9kZSB3aXRoIGJ1ZmZlclNpemUgPSA1MTIuCiBQQVNTIFN1Y2Nl
c3NmdWxseSBjcmVhdGVkIFNjcmlwdFByb2Nlc3Nvck5vZGUgd2l0aCBidWZmZXJTaXplID0gMTAy
NC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUuaHRtbAppbmRl
eCA2NmEyZTEwZDYyNzZjYzhlZTQ4ZjFiYzNmNjA5MmIzYjIyN2JhNGEyLi42ZGQ0ZWNkZDZkZjMy
ZTNiODUxZTE3Mzk5ODZkMDUxOTYzMDJiZTU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJh
dWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
amF2YXNjcmlwdGF1ZGlvbm9kZS5odG1sCkBAIC0xMjMsNiArMTIzLDcgQEAgZnVuY3Rpb24gcnVu
VGVzdCgpIHsKICAgICAgICAgdGVzdFBhc3NlZCgiRXhjZXB0aW9uIHdhcyB0aHJvd24gZm9yIGls
bGVnYWwgYnVmZmVyU2l6ZS4iKTsKICAgICB9CiAKKyAgICBkb0J1ZmZlclNpemVUZXN0KDApOwog
ICAgIGRvQnVmZmVyU2l6ZVRlc3QoMjU2KTsKICAgICBkb0J1ZmZlclNpemVUZXN0KDUxMik7CiAg
ICAgZG9CdWZmZXJTaXplVGVzdCgxMDI0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312268</attachid>
            <date>2017-06-07 19:59:45 -0700</date>
            <delta_ts>2017-06-07 20:25:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173022-20170607195944.patch</filename>
            <type>text/plain</type>
            <size>10584</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM4MWVkZGEyMTdkOTNj
ODczYjA2NDUxMTYxNGJmNGQyN2RiMGU4NS4uZjU3MWRjMmI5YTZlYTM0NGQ1ZjQ2ZGYyZjRiZWNi
ZmYxODQ0ZmM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA2LTA3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgQXVkaW9dIGNyZWF0
ZVNjcmlwdFByb2Nlc3NvciB0aHJvd3MgSW5kZXhTaXplRXJyb3IgZm9yIHZhbGlkIGFyZ3VtZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMDIy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
ZCB0ZXN0OiB3ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLmh0bWwKKworICAgICAgICBUaGUg
V2ViIEF1ZGlvIHNwZWMgKDxodHRwczovL3dlYmF1ZGlvLmdpdGh1Yi5pby93ZWItYXVkaW8tYXBp
Lz4sIDA2IEp1bmUgMjAxNykgZGVmaW5lcyBhIGRlZmF1bHQgYmVoYXZpb3Igd2hlbgorICAgICAg
ICBjbGllbnRzIHBhc3MgaW4gYSB2YWx1ZSBvZiAwIGZvciBidWZmZXJTaXplIHRvIHRoZSBjcmVh
dGVTY3JpcHRQcm9jZXNzb3IoKSBtZXRob2QuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0
ZVNjcmlwdFByb2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oOgorCiAyMDE3LTA2
LTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEV4ZW1wdCBl
eGNsdXNpdmVseSB3YWxsLXBvd2VyZWQgZGV2aWNlcyBmcm9tIGhhcmR3YXJlIGNvZGVjIHJlcXVp
cmVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAKaW5kZXggODg0ZDYyYzQ5NWU0YjZjYjYzMzlhMmEwMDg2YWU5NTk2ZmVhZGE4MS4uZjg0
MDhkYTNlMjc1Zjg1ZjhkN2Q3MzQ5ODliM2NlMjc2ZTkzNzM3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKICNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5o
IgogI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIkJpcXVhZEZpbHRlck5vZGUuaCIKICNpbmNsdWRlICJDaGFubmVsTWVyZ2Vy
Tm9kZS5oIgogI2luY2x1ZGUgIkNoYW5uZWxTcGxpdHRlck5vZGUuaCIKQEAgLTQ4OCwxMyArNDg5
LDU0IEBAIEV4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gQXVkaW9Db250ZXh0
OjpjcmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAgIGF1dG8gbm9kZSA9IFNjcmlwdFByb2Nl
c3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwg
YnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KTsKIAotICAgIGlmICghbm9kZSkKKyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDYgSnVuZSAy
MDE3CisgICAgLy8gIGh0dHBzOi8vd2ViYXVkaW8uZ2l0aHViLmlvL3dlYi1hdWRpby1hcGkvI3dp
ZGwtQmFzZUF1ZGlvQ29udGV4dC1jcmVhdGVTY3JpcHRQcm9jZXNzb3ItU2NyaXB0UHJvY2Vzc29y
Tm9kZS11bnNpZ25lZC1sb25nLWJ1ZmZlclNpemUtdW5zaWduZWQtbG9uZy1udW1iZXJPZklucHV0
Q2hhbm5lbHMtdW5zaWduZWQtbG9uZy1udW1iZXJPZk91dHB1dENoYW5uZWxzCisKKyAgICAvLyBU
aGUgYnVmZmVyU2l6ZSBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyB0aGUgYnVmZmVyIHNpemUgaW4gdW5p
dHMgb2Ygc2FtcGxlLWZyYW1lcy4gSWYgaXQncyBub3QgcGFzc2VkIGluLAorICAgIC8vIG9yIGlm
IHRoZSB2YWx1ZSBpcyAwLCB0aGVuIHRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGNob29zZSB0aGUg
YmVzdCBidWZmZXIgc2l6ZSBmb3IgdGhlIGdpdmVuIGVudmlyb25tZW50LAorICAgIC8vIHdoaWNo
IHdpbGwgYmUgY29uc3RhbnQgcG93ZXIgb2YgMiB0aHJvdWdob3V0IHRoZSBsaWZldGltZSBvZiB0
aGUgbm9kZS4gLi4uIElmIHRoZSB2YWx1ZSBvZiB0aGlzIHBhcmFtZXRlcgorICAgIC8vIGlzIG5v
dCBvbmUgb2YgdGhlIGFsbG93ZWQgcG93ZXItb2YtMiB2YWx1ZXMgbGlzdGVkIGFib3ZlLCBhbiBJ
bmRleFNpemVFcnJvciBtdXN0IGJlIHRocm93bi4KKyAgICBzd2l0Y2ggKGJ1ZmZlclNpemUpIHsK
KyAgICBjYXNlIDA6CisgICAgICAgIC8vIFBpY2sgYSB2YWx1ZSBiZXR3ZWVuIDI1NiAoMl44KSBh
bmQgMTYzODQgKDJeMTQpLCBiYXNlZCBvbiB0aGUgYnVmZmVyIHNpemUgb2YgdGhlIGN1cnJlbnQg
QXVkaW9TZXNzaW9uOgorICAgICAgICBidWZmZXJTaXplID0gMSA8PCBzdGQ6Om1heDxzaXplX3Q+
KDgsIHN0ZDo6bWluPHNpemVfdD4oMTQsIHN0ZDo6bG9nMihBdWRpb1Nlc3Npb246OnNoYXJlZFNl
c3Npb24oKS5idWZmZXJTaXplKCkpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjU2Ogor
ICAgIGNhc2UgNTEyOgorICAgIGNhc2UgMTAyNDoKKyAgICBjYXNlIDIwNDg6CisgICAgY2FzZSA0
MDk2OgorICAgIGNhc2UgODE5MjoKKyAgICBjYXNlIDE2Mzg0OgorICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5ERVhfU0laRV9FUlIgfTsK
KyAgICB9CiAKLSAgICByZWZOb2RlKCpub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2Ug
dW50aWwgd2Ugc3RvcCBtYWtpbmcgamF2YXNjcmlwdCByZW5kZXJpbmcgY2FsbGJhY2tzCi0gICAg
cmV0dXJuIG5vZGUucmVsZWFzZU5vbk51bGwoKTsKKyAgICAvLyBBbiBJbmRleFNpemVFcnJvciBl
eGNlcHRpb24gbXVzdCBiZSB0aHJvd24gaWYgYnVmZmVyU2l6ZSBvciBudW1iZXJPZklucHV0Q2hh
bm5lbHMgb3IgbnVtYmVyT2ZPdXRwdXRDaGFubmVscworICAgIC8vIGFyZSBvdXRzaWRlIHRoZSB2
YWxpZCByYW5nZS4gSXQgaXMgaW52YWxpZCBmb3IgYm90aCBudW1iZXJPZklucHV0Q2hhbm5lbHMg
YW5kIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgdG8gYmUgemVyby4KKyAgICAvLyBJbiB0aGlzIGNh
c2UgYW4gSW5kZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJvd24uCisKKyAgICBpZiAoIW51bWJlck9m
SW5wdXRDaGFubmVscyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisKKyAgICAvLyBUaGlzIHBhcmFtZXRl
ciBbbnVtYmVyT2ZJbnB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5l
bHMgZm9yIHRoaXMgbm9kZSdzIGlucHV0LiBWYWx1ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBtdXN0
IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0IGJlIHRocm93biBpZiB0aGUg
bnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBpZiAobnVtYmVyT2ZJ
bnB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtu
dW1iZXJPZk91dHB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMg
Zm9yIHRoaXMgbm9kZSdzIG91dHB1dC4gVmFsdWVzIG9mCisgICAgLy8gdXAgdG8gMzIgbXVzdCBi
ZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0aHJvd24gaWYgdGhlIG51
bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAgaWYgKG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworCisgICAgYXV0byBub2RlID0gU2NyaXB0UHJv
Y2Vzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgp
LCBidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpOworCisgICAgcmVmTm9kZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50
aWwgd2Ugc3RvcCBtYWtpbmcgamF2YXNjcmlwdCByZW5kZXJpbmcgY2FsbGJhY2tzCisgICAgcmV0
dXJuIFdURk1vdmUobm9kZSk7CiB9CiAKIFJlZjxCaXF1YWRGaWx0ZXJOb2RlPiBBdWRpb0NvbnRl
eHQ6OmNyZWF0ZUJpcXVhZEZpbHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggZTUyMjZhM2YxY2FjY2E4MTlmODA5M2JhZjM3
NGQwOTA1Yjg2YzA0My4uYTExNDIwMmIwMWY4YjMzNzhmZjY2YmU3M2E5ZjBiOTYzZTM1MjdhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmlk
bApAQCAtODUsNyArODUsNyBAQCBlbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKICAgICBDb252b2x2
ZXJOb2RlIGNyZWF0ZUNvbnZvbHZlcigpOwogICAgIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3Jl
YXRlRHluYW1pY3NDb21wcmVzc29yKCk7CiAgICAgQW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2Vy
KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTY3JpcHRQcm9jZXNzb3JOb2RlIGNyZWF0ZVNj
cmlwdFByb2Nlc3Nvcih1bnNpZ25lZCBsb25nIGJ1ZmZlclNpemUsIG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBu
dW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBTY3Jp
cHRQcm9jZXNzb3JOb2RlIGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihvcHRpb25hbCB1bnNpZ25lZCBs
b25nIGJ1ZmZlclNpemUgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRD
aGFubmVscyA9IDIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyA9IDIpOwogICAgIE9zY2lsbGF0b3JOb2RlIGNyZWF0ZU9zY2lsbGF0b3IoKTsKICAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIFBlcmlvZGljV2F2ZSBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFy
cmF5IHJlYWwsIEZsb2F0MzJBcnJheSBpbWFnKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggYjk1ZTA5
M2QwNWUxNGM2MWYyOTBmZTFkMGMzZTYzNTM5MTIwNTVjOC4uMjUwZjgzZTIyODFkMTFmY2E2MzNk
NzE0MDlkMjQ2ZTlmNTI0MzJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC00MSwzMSArNDEsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBTY3Jp
cHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQorUmVmPFNjcmlwdFByb2Nlc3Nvck5v
ZGU+IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiB7Ci0gICAgLy8gQ2hl
Y2sgZm9yIHZhbGlkIGJ1ZmZlciBzaXplLgotICAgIHN3aXRjaCAoYnVmZmVyU2l6ZSkgewotICAg
IGNhc2UgMjU2OgotICAgIGNhc2UgNTEyOgotICAgIGNhc2UgMTAyNDoKLSAgICBjYXNlIDIwNDg6
Ci0gICAgY2FzZSA0MDk2OgotICAgIGNhc2UgODE5MjoKLSAgICBjYXNlIDE2Mzg0OgotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0K
LSAgICBpZiAoIW51bWJlck9mSW5wdXRDaGFubmVscyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAobnVtYmVyT2ZJbnB1dENoYW5u
ZWxzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPiBBdWRpb0NvbnRl
eHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JpcHRQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUsIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDRjNmJhZmU5NDhhN2NkMDNhZDVjZTg2YTFk
ZjI2YzU1NjgzNDE2YTIuLjY3YzE0NGZjMWMxZDQ2MmI4ODMzY2ZlN2MyNDU3NzUyN2UxODM0OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIHZhbHVl
IGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBvbmF1ZGlvcHJvY2VzcyBldmVudCBoYW5kbGVy
IGlzIGNhbGxlZCBhbmQgaG93IG1hbnkgc2FtcGxlLWZyYW1lcyBuZWVkIHRvIGJlIHByb2Nlc3Nl
ZCBlYWNoIGNhbGwuCiAgICAgLy8gTG93ZXIgbnVtYmVycyBmb3IgYnVmZmVyU2l6ZSB3aWxsIHJl
c3VsdCBpbiBhIGxvd2VyIChiZXR0ZXIpIGxhdGVuY3kuIEhpZ2hlciBudW1iZXJzIHdpbGwgYmUg
bmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvIGJyZWFrdXAgYW5kIGdsaXRjaGVzLgogICAgIC8vIFRo
ZSB2YWx1ZSBjaG9zZW4gbXVzdCBjYXJlZnVsbHkgYmFsYW5jZSBiZXR3ZWVuIGxhdGVuY3kgYW5k
IGF1ZGlvIHF1YWxpdHkuCi0gICAgc3RhdGljIFJlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUs
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscyk7CisgICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVk
IG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7
CiAKICAgICB2aXJ0dWFsIH5TY3JpcHRQcm9jZXNzb3JOb2RlKCk7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OTFiNWY5
YWVmNjM3ZWFhZjIxZjMzYThjNWFmNzdkMjI5NmI3NDE2Li42ZGY0OWMzYmFkN2FhMDhlOTE0OTdl
OTZiODZhZjY3NDU2ODRmYjI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDYtMDcgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBdWRpb10gY3Jl
YXRlU2NyaXB0UHJvY2Vzc29yIHRocm93cyBJbmRleFNpemVFcnJvciBmb3IgdmFsaWQgYXJndW1l
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMw
MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdl
YmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmF1
ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUuaHRtbDoKKwogMjAxNy0wNi0wNyAgQW50b2luZSBRdWlu
dCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlYmFzZWxpbmUgYW5kIGVuYWJsZSBt
ZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvY29udHJvbHMtdmlzaWJpbGl0eS1zdXBwb3J0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUtZXhwZWN0
ZWQudHh0CmluZGV4IGVkNGJmODJmNzYwZDE0ZWNjODVmYTc3MmI2ZTI5NTQwZDM2YThkOTAuLjdm
MWFhZDg0YjUzNzNiNDEzMmYwNmY1MTJmMGUyMTBlMmEzMmQ5N2YgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUtZXhwZWN0ZWQudHh0CkBAIC04
LDYgKzgsNyBAQCBQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIFNjcmlwdFByb2Nlc3Nvck5vZGUg
d2l0aCBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyIGFuZAogUEFTUyBTdWNjZXNzZnVsbHkgY3Jl
YXRlZCBTY3JpcHRQcm9jZXNzb3JOb2RlIHdpdGggbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMCBh
bmQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IDEuCiBQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVk
IFNjcmlwdFByb2Nlc3Nvck5vZGUgd2l0aCBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAwIGFuZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzID0gMi4KIFBBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24gZm9y
IGlsbGVnYWwgYnVmZmVyU2l6ZS4KK1BBU1MgU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgU2NyaXB0UHJv
Y2Vzc29yTm9kZSB3aXRoIGJ1ZmZlclNpemUgPSAwLgogUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRl
ZCBTY3JpcHRQcm9jZXNzb3JOb2RlIHdpdGggYnVmZmVyU2l6ZSA9IDI1Ni4KIFBBU1MgU3VjY2Vz
c2Z1bGx5IGNyZWF0ZWQgU2NyaXB0UHJvY2Vzc29yTm9kZSB3aXRoIGJ1ZmZlclNpemUgPSA1MTIu
CiBQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIFNjcmlwdFByb2Nlc3Nvck5vZGUgd2l0aCBidWZm
ZXJTaXplID0gMTAyNC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3Jp
cHRhdWRpb25vZGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25v
ZGUuaHRtbAppbmRleCA2NmEyZTEwZDYyNzZjYzhlZTQ4ZjFiYzNmNjA5MmIzYjIyN2JhNGEyLi42
ZGQ0ZWNkZDZkZjMyZTNiODUxZTE3Mzk5ODZkMDUxOTYzMDJiZTU5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS5odG1sCkBAIC0xMjMsNiArMTIzLDcgQEAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAgICAgdGVzdFBhc3NlZCgiRXhjZXB0aW9uIHdhcyB0
aHJvd24gZm9yIGlsbGVnYWwgYnVmZmVyU2l6ZS4iKTsKICAgICB9CiAKKyAgICBkb0J1ZmZlclNp
emVUZXN0KDApOwogICAgIGRvQnVmZmVyU2l6ZVRlc3QoMjU2KTsKICAgICBkb0J1ZmZlclNpemVU
ZXN0KDUxMik7CiAgICAgZG9CdWZmZXJTaXplVGVzdCgxMDI0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312269</attachid>
            <date>2017-06-07 20:25:42 -0700</date>
            <delta_ts>2017-06-07 21:31:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173022-20170607202540.patch</filename>
            <type>text/plain</type>
            <size>10651</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM4MWVkZGEyMTdkOTNj
ODczYjA2NDUxMTYxNGJmNGQyN2RiMGU4NS4uZjU3MWRjMmI5YTZlYTM0NGQ1ZjQ2ZGYyZjRiZWNi
ZmYxODQ0ZmM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA2LTA3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgQXVkaW9dIGNyZWF0
ZVNjcmlwdFByb2Nlc3NvciB0aHJvd3MgSW5kZXhTaXplRXJyb3IgZm9yIHZhbGlkIGFyZ3VtZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMDIy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
ZCB0ZXN0OiB3ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLmh0bWwKKworICAgICAgICBUaGUg
V2ViIEF1ZGlvIHNwZWMgKDxodHRwczovL3dlYmF1ZGlvLmdpdGh1Yi5pby93ZWItYXVkaW8tYXBp
Lz4sIDA2IEp1bmUgMjAxNykgZGVmaW5lcyBhIGRlZmF1bHQgYmVoYXZpb3Igd2hlbgorICAgICAg
ICBjbGllbnRzIHBhc3MgaW4gYSB2YWx1ZSBvZiAwIGZvciBidWZmZXJTaXplIHRvIHRoZSBjcmVh
dGVTY3JpcHRQcm9jZXNzb3IoKSBtZXRob2QuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0
ZVNjcmlwdFByb2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oOgorCiAyMDE3LTA2
LTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEV4ZW1wdCBl
eGNsdXNpdmVseSB3YWxsLXBvd2VyZWQgZGV2aWNlcyBmcm9tIGhhcmR3YXJlIGNvZGVjIHJlcXVp
cmVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAKaW5kZXggODg0ZDYyYzQ5NWU0YjZjYjYzMzlhMmEwMDg2YWU5NTk2ZmVhZGE4MS4uNjQ3
MjdkNWEwNTNjNjE5MzU0ZGU4NjliNTc1MjNmNzM4MDIyZTM1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKICNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5o
IgogI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIkJpcXVhZEZpbHRlck5vZGUuaCIKICNpbmNsdWRlICJDaGFubmVsTWVyZ2Vy
Tm9kZS5oIgogI2luY2x1ZGUgIkNoYW5uZWxTcGxpdHRlck5vZGUuaCIKQEAgLTQ4OCwxMyArNDg5
LDU4IEBAIEV4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gQXVkaW9Db250ZXh0
OjpjcmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAgIGF1dG8gbm9kZSA9IFNjcmlwdFByb2Nl
c3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwg
YnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KTsKIAotICAgIGlmICghbm9kZSkKKyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDYgSnVuZSAy
MDE3CisgICAgLy8gIGh0dHBzOi8vd2ViYXVkaW8uZ2l0aHViLmlvL3dlYi1hdWRpby1hcGkvI3dp
ZGwtQmFzZUF1ZGlvQ29udGV4dC1jcmVhdGVTY3JpcHRQcm9jZXNzb3ItU2NyaXB0UHJvY2Vzc29y
Tm9kZS11bnNpZ25lZC1sb25nLWJ1ZmZlclNpemUtdW5zaWduZWQtbG9uZy1udW1iZXJPZklucHV0
Q2hhbm5lbHMtdW5zaWduZWQtbG9uZy1udW1iZXJPZk91dHB1dENoYW5uZWxzCisKKyAgICAvLyBU
aGUgYnVmZmVyU2l6ZSBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyB0aGUgYnVmZmVyIHNpemUgaW4gdW5p
dHMgb2Ygc2FtcGxlLWZyYW1lcy4gSWYgaXQncyBub3QgcGFzc2VkIGluLAorICAgIC8vIG9yIGlm
IHRoZSB2YWx1ZSBpcyAwLCB0aGVuIHRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGNob29zZSB0aGUg
YmVzdCBidWZmZXIgc2l6ZSBmb3IgdGhlIGdpdmVuIGVudmlyb25tZW50LAorICAgIC8vIHdoaWNo
IHdpbGwgYmUgY29uc3RhbnQgcG93ZXIgb2YgMiB0aHJvdWdob3V0IHRoZSBsaWZldGltZSBvZiB0
aGUgbm9kZS4gLi4uIElmIHRoZSB2YWx1ZSBvZiB0aGlzIHBhcmFtZXRlcgorICAgIC8vIGlzIG5v
dCBvbmUgb2YgdGhlIGFsbG93ZWQgcG93ZXItb2YtMiB2YWx1ZXMgbGlzdGVkIGFib3ZlLCBhbiBJ
bmRleFNpemVFcnJvciBtdXN0IGJlIHRocm93bi4KKyAgICBzd2l0Y2ggKGJ1ZmZlclNpemUpIHsK
KyAgICBjYXNlIDA6CisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAgICAgIC8vIFBpY2sgYSB2
YWx1ZSBiZXR3ZWVuIDI1NiAoMl44KSBhbmQgMTYzODQgKDJeMTQpLCBiYXNlZCBvbiB0aGUgYnVm
ZmVyIHNpemUgb2YgdGhlIGN1cnJlbnQgQXVkaW9TZXNzaW9uOgorICAgICAgICBidWZmZXJTaXpl
ID0gMSA8PCBzdGQ6Om1heDxzaXplX3Q+KDgsIHN0ZDo6bWluPHNpemVfdD4oMTQsIHN0ZDo6bG9n
MihBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5idWZmZXJTaXplKCkpKSk7CisjZWxzZQor
ICAgICAgICBidWZmZXJTaXplID0gMjA0ODsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIDI1NjoKKyAgICBjYXNlIDUxMjoKKyAgICBjYXNlIDEwMjQ6CisgICAgY2FzZSAyMDQ4Ogor
ICAgIGNhc2UgNDA5NjoKKyAgICBjYXNlIDgxOTI6CisgICAgY2FzZSAxNjM4NDoKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOREVYX1NJ
WkVfRVJSIH07CisgICAgfQogCi0gICAgcmVmTm9kZSgqbm9kZSk7IC8vIGNvbnRleHQga2VlcHMg
cmVmZXJlbmNlIHVudGlsIHdlIHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNhbGxi
YWNrcwotICAgIHJldHVybiBub2RlLnJlbGVhc2VOb25OdWxsKCk7CisgICAgLy8gQW4gSW5kZXhT
aXplRXJyb3IgZXhjZXB0aW9uIG11c3QgYmUgdGhyb3duIGlmIGJ1ZmZlclNpemUgb3IgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzIG9yIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMKKyAgICAvLyBhcmUgb3V0
c2lkZSB0aGUgdmFsaWQgcmFuZ2UuIEl0IGlzIGludmFsaWQgZm9yIGJvdGggbnVtYmVyT2ZJbnB1
dENoYW5uZWxzIGFuZCBudW1iZXJPZk91dHB1dENoYW5uZWxzIHRvIGJlIHplcm8uCisgICAgLy8g
SW4gdGhpcyBjYXNlIGFuIEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhyb3duLgorCisgICAgaWYg
KCFudW1iZXJPZklucHV0Q2hhbm5lbHMgJiYgIW51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworCisgICAgLy8gVGhp
cyBwYXJhbWV0ZXIgW251bWJlck9mSW5wdXRDaGFubmVsc10gZGV0ZXJtaW5lcyB0aGUgbnVtYmVy
IG9mIGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBpbnB1dC4gVmFsdWVzIG9mCisgICAgLy8gdXAg
dG8gMzIgbXVzdCBiZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0aHJv
d24gaWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAgaWYg
KG51bWJlck9mSW5wdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisKKyAgICAvLyBUaGlzIHBh
cmFtZXRlciBbbnVtYmVyT2ZPdXRwdXRDaGFubmVsc10gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9m
IGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBvdXRwdXQuIFZhbHVlcyBvZgorICAgIC8vIHVwIHRv
IDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRlZEVycm9yIG11c3QgYmUgdGhyb3du
IGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1cHBvcnRlZC4KKworICAgIGlmIChu
dW1iZXJPZk91dHB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKworICAgIGF1dG8gbm9kZSA9
IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNh
bXBsZVJhdGUoKSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKTsKKworICAgIHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVm
ZXJlbmNlIHVudGlsIHdlIHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNhbGxiYWNr
cworICAgIHJldHVybiBXVEZNb3ZlKG5vZGUpOwogfQogCiBSZWY8QmlxdWFkRmlsdGVyTm9kZT4g
QXVkaW9Db250ZXh0OjpjcmVhdGVCaXF1YWRGaWx0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCmluZGV4IGU1MjI2YTNmMWNhY2NhODE5
ZjgwOTNiYWYzNzRkMDkwNWI4NmMwNDMuLmExMTQyMDJiMDFmOGIzMzc4ZmY2NmJlNzNhOWYwYjk2
M2UzNTI3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGwKQEAgLTg1LDcgKzg1LDcgQEAgZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CiAg
ICAgQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIoKTsKICAgICBEeW5hbWljc0NvbXByZXNz
b3JOb2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOwogICAgIEFuYWx5c2VyTm9kZSBjcmVh
dGVBbmFseXNlcigpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU2NyaXB0UHJvY2Vzc29yTm9k
ZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3IodW5zaWduZWQgbG9uZyBidWZmZXJTaXplLCBvcHRpb25h
bCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRDaGFubmVscyA9IDIsIG9wdGlvbmFsIHVuc2ln
bmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IDIpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwg
dW5zaWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMgPSAyKTsKICAgICBPc2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7
CiAgICAgW01heVRocm93RXhjZXB0aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZl
KEZsb2F0MzJBcnJheSByZWFsLCBGbG9hdDMyQXJyYXkgaW1hZyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmlu
ZGV4IGI5NWUwOTNkMDVlMTRjNjFmMjkwZmUxZDBjM2U2MzUzOTEyMDU1YzguLjI1MGY4M2UyMjgx
ZDExZmNhNjMzZDcxNDA5ZDI0NmU5ZjUyNDMyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNDEsMzEg
KzQxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2NyaXB0UHJvY2Vzc29y
Tm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1JlZjxTY3JpcHRQ
cm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQogewot
ICAgIC8vIENoZWNrIGZvciB2YWxpZCBidWZmZXIgc2l6ZS4KLSAgICBzd2l0Y2ggKGJ1ZmZlclNp
emUpIHsKLSAgICBjYXNlIDI1NjoKLSAgICBjYXNlIDUxMjoKLSAgICBjYXNlIDEwMjQ6Ci0gICAg
Y2FzZSAyMDQ4OgotICAgIGNhc2UgNDA5NjoKLSAgICBjYXNlIDgxOTI6Ci0gICAgY2FzZSAxNjM4
NDoKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfQotCi0gICAgaWYgKCFudW1iZXJPZklucHV0Q2hhbm5lbHMgJiYgIW51bWJlck9mT3V0
cHV0Q2hhbm5lbHMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKG51bWJlck9m
SW5wdXRDaGFubmVscyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzID4g
QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NyaXB0UHJvY2Vzc29yTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlLCBidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAppbmRleCA0YzZiYWZlOTQ4YTdjZDAz
YWQ1Y2U4NmExZGYyNmM1NTY4MzQxNmEyLi42N2MxNDRmYzFjMWQ0NjJiODgzM2NmZTdjMjQ1Nzc1
MjdlMTgzNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1NjcmlwdFByb2Nlc3Nvck5vZGUuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VGhpcyB2YWx1ZSBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgb25hdWRpb3Byb2Nlc3MgZXZl
bnQgaGFuZGxlciBpcyBjYWxsZWQgYW5kIGhvdyBtYW55IHNhbXBsZS1mcmFtZXMgbmVlZCB0byBi
ZSBwcm9jZXNzZWQgZWFjaCBjYWxsLgogICAgIC8vIExvd2VyIG51bWJlcnMgZm9yIGJ1ZmZlclNp
emUgd2lsbCByZXN1bHQgaW4gYSBsb3dlciAoYmV0dGVyKSBsYXRlbmN5LiBIaWdoZXIgbnVtYmVy
cyB3aWxsIGJlIG5lY2Vzc2FyeSB0byBhdm9pZCBhdWRpbyBicmVha3VwIGFuZCBnbGl0Y2hlcy4K
ICAgICAvLyBUaGUgdmFsdWUgY2hvc2VuIG11c3QgY2FyZWZ1bGx5IGJhbGFuY2UgYmV0d2VlbiBs
YXRlbmN5IGFuZCBhdWRpbyBxdWFsaXR5LgotICAgIHN0YXRpYyBSZWZQdHI8U2NyaXB0UHJvY2Vz
c29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBi
dWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXpl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+U2NyaXB0UHJvY2Vzc29yTm9kZSgpOwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNzkxYjVmOWFlZjYzN2VhYWYyMWYzM2E4YzVhZjc3ZDIyOTZiNzQxNi4uNmRmNDljM2JhZDdh
YTA4ZTkxNDk3ZTk2Yjg2YWY2NzQ1Njg0ZmIyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3
LTA2LTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIg
QXVkaW9dIGNyZWF0ZVNjcmlwdFByb2Nlc3NvciB0aHJvd3MgSW5kZXhTaXplRXJyb3IgZm9yIHZh
bGlkIGFyZ3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTczMDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLmh0bWw6CisKIDIwMTctMDYtMDcgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5lIGFu
ZCBlbmFibGUgbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2NvbnRyb2xzLXZpc2liaWxpdHkt
c3VwcG9ydApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlv
bm9kZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9u
b2RlLWV4cGVjdGVkLnR4dAppbmRleCBlZDRiZjgyZjc2MGQxNGVjYzg1ZmE3NzJiNmUyOTU0MGQz
NmE4ZDkwLi43ZjFhYWQ4NGI1MzczYjQxMzJmMDZmNTEyZjBlMjEwZTJhMzJkOTdmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLWV4cGVjdGVk
LnR4dApAQCAtOCw2ICs4LDcgQEAgUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBTY3JpcHRQcm9j
ZXNzb3JOb2RlIHdpdGggbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiBhbmQKIFBBU1MgU3VjY2Vz
c2Z1bGx5IGNyZWF0ZWQgU2NyaXB0UHJvY2Vzc29yTm9kZSB3aXRoIG51bWJlck9mSW5wdXRDaGFu
bmVscyA9IDAgYW5kIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAxLgogUEFTUyBTdWNjZXNzZnVs
bHkgY3JlYXRlZCBTY3JpcHRQcm9jZXNzb3JOb2RlIHdpdGggbnVtYmVyT2ZJbnB1dENoYW5uZWxz
ID0gMCBhbmQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IDIuCiBQQVNTIEV4Y2VwdGlvbiB3YXMg
dGhyb3duIGZvciBpbGxlZ2FsIGJ1ZmZlclNpemUuCitQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVk
IFNjcmlwdFByb2Nlc3Nvck5vZGUgd2l0aCBidWZmZXJTaXplID0gMC4KIFBBU1MgU3VjY2Vzc2Z1
bGx5IGNyZWF0ZWQgU2NyaXB0UHJvY2Vzc29yTm9kZSB3aXRoIGJ1ZmZlclNpemUgPSAyNTYuCiBQ
QVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIFNjcmlwdFByb2Nlc3Nvck5vZGUgd2l0aCBidWZmZXJT
aXplID0gNTEyLgogUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBTY3JpcHRQcm9jZXNzb3JOb2Rl
IHdpdGggYnVmZmVyU2l6ZSA9IDEwMjQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRp
by9qYXZhc2NyaXB0YXVkaW9ub2RlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9qYXZhc2Ny
aXB0YXVkaW9ub2RlLmh0bWwKaW5kZXggNjZhMmUxMGQ2Mjc2Y2M4ZWU0OGYxYmMzZjYwOTJiM2Iy
MjdiYTRhMi4uNmRkNGVjZGQ2ZGYzMmUzYjg1MWUxNzM5OTg2ZDA1MTk2MzAyYmU1OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUuaHRtbApAQCAtMTIzLDYg
KzEyMyw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgICAgIHRlc3RQYXNzZWQoIkV4Y2Vw
dGlvbiB3YXMgdGhyb3duIGZvciBpbGxlZ2FsIGJ1ZmZlclNpemUuIik7CiAgICAgfQogCisgICAg
ZG9CdWZmZXJTaXplVGVzdCgwKTsKICAgICBkb0J1ZmZlclNpemVUZXN0KDI1Nik7CiAgICAgZG9C
dWZmZXJTaXplVGVzdCg1MTIpOwogICAgIGRvQnVmZmVyU2l6ZVRlc3QoMTAyNCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>