<?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>83250</bug_id>
          
          <creation_ts>2012-04-04 23:09:46 -0700</creation_ts>
          <short_desc>When create JavaScriptNode, do not ignore NumberOfOutputChannels parameter.</short_desc>
          <delta_ts>2012-04-09 11:50:02 -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>Web Audio</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Raymond">rgbbones</reporter>
          <assigned_to name="Raymond">rgbbones</assigned_to>
          <cc>abarth</cc>
    
    <cc>crogers</cc>
    
    <cc>ojan</cc>
    
    <cc>rtoy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>596318</commentid>
    <comment_count>0</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-04 23:09:46 -0700</bug_when>
    <thetext>When create JavaScriptNode, do not ignore NumberOfOutputChannels parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596320</commentid>
    <comment_count>1</comment_count>
      <attachid>135761</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-04 23:11:48 -0700</bug_when>
    <thetext>Created attachment 135761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596328</commentid>
    <comment_count>2</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-04 23:25:14 -0700</bug_when>
    <thetext>Hi

This patch is aim to add multi-channel support for JavaScriptAudioNode. For the first step, honor the numberOfOutputChannels parameters when creating JavaScriptAudioNode.

For numberOfInputChannels, I don&apos;t touch it in this patch. And I think we probably don&apos;t need to have this input parameter. I suggest to remove it from the spec. Since the input channels actually depends on the upstream node that the JavaScriptNode connected to. It doesn&apos;t make much sense for the user to define it. And if the user of JavaScriptNode really want to change the input channels number, he should do it by himself for either upmix or downmix. And it can be done at the same time when he processing input data into output buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596337</commentid>
    <comment_count>3</comment_count>
      <attachid>135764</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-04 23:38:20 -0700</bug_when>
    <thetext>Created attachment 135764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596338</commentid>
    <comment_count>4</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-04 23:39:26 -0700</bug_when>
    <thetext>patch updated for compile warning on mac platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596779</commentid>
    <comment_count>5</comment_count>
      <attachid>135764</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-05 12:09:26 -0700</bug_when>
    <thetext>Comment on attachment 135764
Patch

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

Looking pretty good so far:

&gt; Source/WebCore/Modules/webaudio/AudioContext.h:126
&gt; +    PassRefPtr&lt;JavaScriptAudioNode&gt; createJavaScriptNode(size_t bufferSize, size_t numberOfInputChannels, size_t numberOfOutputChannels, ExceptionCode&amp;);

We should add default arguments numberOfInputChannels==2 and numberOfOutputChannels==2

Although the spec should be updated to say this, there is code out there which assumes that it&apos;s OK to call createJavaScriptNode() with a single argument (the bufferSize)

&gt; Source/WebCore/Modules/webaudio/JavaScriptAudioNode.cpp:61
&gt; +    // FIXME: Maybe we shouldn&apos;t have the numberOfInputChannels exported as an input parameter, since it actually depends on upstream node.

I think it could be tricky to depend on upstream node (or nodes) connected to determine numberOfInputChannels because this could easily be changing during the life-time of the JavaScriptAudioNode.  For example if a mixture of mono and stereo AudioBufferSourceNodes are playing one-shot sounds, then sometimes the input would be mono and sometimes stereo, varying from callback-to-callback.  Even worse, the JS callback is not synchronized with these changes...

So, I think it&apos;s best to keep the numberOfInputChannels explicit and fixed.  Then any connections to this input will be up/down mixed as necessary.  Stereo is a good default.

&gt; Source/WebCore/Modules/webaudio/JavaScriptAudioNode.cpp:64
&gt; +    ASSERT(numberOfOutputChannels &gt; 0 &amp;&amp; numberOfOutputChannels &lt;= AudioContext::maxNumberOfChannels());

WebKit style nit: &quot;numberOfOutputChannels &gt; 0&quot; -&gt; &quot;numberOfOutputChannels&quot;

&gt; Source/WebCore/Modules/webaudio/JavaScriptAudioNode.cpp:65
&gt; +    if (numberOfOutputChannels &lt;= 0 || numberOfOutputChannels &gt; AudioContext::maxNumberOfChannels())

WebKit style nit: &quot;numberOfOutputChannels &lt;= 0&quot; -&gt; &quot;!numberOfOutputChannels&quot;

&gt; Source/WebCore/Modules/webaudio/JavaScriptAudioNode.cpp:83
&gt; +    // FIXEME: We probably should remove numberOfInputChannels from input parameters since we actually doesn&apos;t use it.

typo: FIXEME -&gt; FIXME

Also, comment should probably be that we &quot;still&quot; need to implement numberOfInputChannels (for the reasons I explain above)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597123</commentid>
    <comment_count>6</comment_count>
      <attachid>135964</attachid>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-05 18:47:47 -0700</bug_when>
    <thetext>Created attachment 135964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597132</commentid>
    <comment_count>7</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-05 19:17:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
Hi Chris
Thanks for the review. Patch updated.

&gt; We should add default arguments numberOfInputChannels==2 and numberOfOutputChannels==2

Use [Optional] and overload functions to implement it. there is also a approaching of [Optional=defaultisUndefined] etc. But I think we do need to distiguish fn(buffersize) from fn(buffersize, 0, 0). thus I don&apos;t go that way.

&gt; &gt; Source/WebCore/Modules/webaudio/JavaScriptAudioNode.cpp:64
&gt; &gt; +    ASSERT(numberOfOutputChannels &gt; 0 &amp;&amp; numberOfOutputChannels &lt;= AudioContext::maxNumberOfChannels());

Actually I remove this line, since we do want a dom exception been thrown by code below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597776</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-06 15:59:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; Hi Chris
&gt; Thanks for the review. Patch updated.
&gt; 
&gt; &gt; We should add default arguments numberOfInputChannels==2 and numberOfOutputChannels==2
&gt; 
&gt; Use [Optional] and overload functions to implement it. there is also a approaching of [Optional=defaultisUndefined] etc. But I think we do need to distiguish fn(buffersize) from fn(buffersize, 0, 0). thus I don&apos;t go that way.
&gt; 
&gt; &gt; &gt; Source/WebCore/Modules/webaudio/JavaScriptAudioNode.cpp:64
&gt; &gt; &gt; +    ASSERT(numberOfOutputChannels &gt; 0 &amp;&amp; numberOfOutputChannels &lt;= AudioContext::maxNumberOfChannels());
&gt; 
&gt; Actually I remove this line, since we do want a dom exception been thrown by code below.

Hi Raymond, this looks pretty good.  Have you tested this with:
http://chromium.googlecode.com/svn/trunk/samples/audio/javascript-processing.html

and this one:
http://www.oampo.co.uk/labs/technocrat/

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598090</commentid>
    <comment_count>9</comment_count>
    <who name="Raymond">rgbbones</who>
    <bug_when>2012-04-08 18:19:35 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; 
&gt; Hi Raymond, this looks pretty good.  Have you tested this with:
&gt; http://chromium.googlecode.com/svn/trunk/samples/audio/javascript-processing.html
&gt; 
&gt; and this one:
&gt; http://www.oampo.co.uk/labs/technocrat/
&gt; 
&gt; ?

Hi Chris

I just tested them, yes, they works.

And actually, since there are no layout test for javascriptAudioNode, I also have written one locally to verify my code, say setting channels etc.

I would like to provide another patch for layout test case, after this patch is accepted. To have more time to think about the test case coverage.

So, if this patch is good, could you help to land it ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598406</commentid>
    <comment_count>10</comment_count>
      <attachid>135964</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-09 10:33:39 -0700</bug_when>
    <thetext>Comment on attachment 135964
Patch

Thanks Raymond.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598478</commentid>
    <comment_count>11</comment_count>
      <attachid>135964</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 11:49:57 -0700</bug_when>
    <thetext>Comment on attachment 135964
Patch

Clearing flags on attachment: 135964

Committed r113600: &lt;http://trac.webkit.org/changeset/113600&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598479</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 11:50:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135761</attachid>
            <date>2012-04-04 23:11:48 -0700</date>
            <delta_ts>2012-04-04 23:38:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83250-20120405141728.patch</filename>
            <type>text/plain</type>
            <size>11743</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJmNjBjNDFkNTI0M2Mw
ZWVmZTUxMDE4MWI1MGE5Y2MwOTY3NzQzNS4uYTFhODEzYjc2ODMzNGFkYTA0NTAzYzVlNmFiOGZi
NjUwN2FkMzU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA0LTA0ICBSYXlt
b25kIExpdSAgPHJheW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBXaGVuIGNyZWF0ZSBK
YXZhU2NyaXB0Tm9kZSwgZG8gbm90IGlnbm9yZSBOdW1iZXJPZk91dHB1dENoYW5uZWxzIHBhcmFt
ZXRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
MjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NvbnRleHQ6OmNyZWF0ZUphdmFTY3JpcHROb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoQXVkaW9Db250ZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3Jp
cHRBdWRpb05vZGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkphdmFTY3JpcHRBdWRpb05vZGU6OkphdmFTY3JpcHRBdWRpb05vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjpwcm9jZXNzKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaDoKKyAgICAgICAgKEphdmFTY3JpcHRBdWRpb05v
ZGUpOgorCiAyMDEyLTA0LTA0ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBDYWxsIGhpc3RvZ3JhbUVudW1lcmF0aW9uIGRpcmVjdGx5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZjEyM2Zk
OTRhMjkyMjRjM2IxNTMyMzljYzg1MGIwMDliMDNkNjdlZC4uYWFiMWRmODllYTY3YTljMTZmZDZh
M2EyYTU2YjYyYzY5NWUxZmRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzY5LDExICszNjksMTYgQEAgUGFzc1JlZlB0cjxN
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFFbGVt
ZW50U291cmNlKEgKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+
IEF1ZGlvQ29udGV4dDo6Y3JlYXRlSmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUpCitQ
YXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlSmF2YVNj
cmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7Ci0gICAgUmVm
UHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IG5vZGUgPSBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpjcmVh
dGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgYnVmZmVyU2l6ZSk7Cisg
ICAgUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IG5vZGUgPSBKYXZhU2NyaXB0QXVkaW9Ob2Rl
OjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgYnVmZmVyU2l6
ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKworICAg
IGlmICghbm9kZS5nZXQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KIAogICAgIHJlZk5vZGUobm9kZS5nZXQoKSk7IC8vIGNvbnRleHQga2Vl
cHMgcmVmZXJlbmNlIHVudGlsIHdlIHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNh
bGxiYWNrcwogICAgIHJldHVybiBub2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggYWRjMzk4MmUwMmM4YWQ1OWFmNGU3OWJjNTExZjIw
MDdkYmQzMTA2NC4uNjQ2MzNhYmFhYTE5MzY2OTRmMjgwOWY3ZTM4OWMyYjI2YzQ2MDM2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0x
MjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q29udm9sdmVyTm9kZT4gY3Jl
YXRlQ29udm9sdmVyKCk7CiAgICAgUGFzc1JlZlB0cjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBj
cmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsgICAgCiAgICAgUGFzc1JlZlB0cjxSZWFsdGltZUFu
YWx5c2VyTm9kZT4gY3JlYXRlQW5hbHlzZXIoKTsKLSAgICBQYXNzUmVmUHRyPEphdmFTY3JpcHRB
dWRpb05vZGU+IGNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplKTsKKyAgICBQ
YXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IGNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVf
dCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8QXVkaW9D
aGFubmVsU3BsaXR0ZXI+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcigpOwogICAgIFBhc3NSZWZQdHI8
QXVkaW9DaGFubmVsTWVyZ2VyPiBjcmVhdGVDaGFubmVsTWVyZ2VyKCk7CiAgICAgUGFzc1JlZlB0
cjxPc2NpbGxhdG9yPiBjcmVhdGVPc2NpbGxhdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggMWY4MWQ2NjM4M2NhZmFlODg5
ODQ4MDM2MTg0NDVmMjEwZjUxZWExNi4uNDZlYzk1MjRlYzQ0ZDFmZDQ1MzU5OTU3MTc4OTU1ZDJk
NDgyMzRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmlkbApAQCAtNzEsNyArNzEsOCBAQCBtb2R1bGUgd2ViYXVkaW8gewogICAgICAgICBD
b252b2x2ZXJOb2RlIGNyZWF0ZUNvbnZvbHZlcigpOwogICAgICAgICBEeW5hbWljc0NvbXByZXNz
b3JOb2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOwogICAgICAgICBSZWFsdGltZUFuYWx5
c2VyTm9kZSBjcmVhdGVBbmFseXNlcigpOwotICAgICAgICBKYXZhU2NyaXB0QXVkaW9Ob2RlIGNy
ZWF0ZUphdmFTY3JpcHROb2RlKGluIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSk7CisgICAgICAg
IEphdmFTY3JpcHRBdWRpb05vZGUgY3JlYXRlSmF2YVNjcmlwdE5vZGUoaW4gdW5zaWduZWQgbG9u
ZyBidWZmZXJTaXplLCBpbiB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRDaGFubmVscywgaW4g
dW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzKQorICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE9zY2lsbGF0b3IgY3JlYXRlT3NjaWxsYXRvcigpOwog
ICAgICAgICBXYXZlVGFibGUgY3JlYXRlV2F2ZVRhYmxlKGluIEZsb2F0MzJBcnJheSByZWFsLCBp
biBGbG9hdDMyQXJyYXkgaW1hZykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVk
aW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1
ZGlvTm9kZS5jcHAKaW5kZXggZWEzZDdhYWFhN2M0NmE3ZDIzMjVlNjM2MWQ4NmJmYmFlN2ViNTM1
Ni4uNWU1NjYzMGU0YzFiZWRlMDRhNmYzODg3MWYyZjFkODE3ZmMzY2I3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUu
Y3BwCkBAIC00MiwxOCArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IHNpemVf
dCBEZWZhdWx0QnVmZmVyU2l6ZSA9IDQwOTY7CiAKLVBhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlv
Tm9kZT4gSmF2YVNjcmlwdEF1ZGlvTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBKYXZhU2NyaXB0QXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUsIG51
bWJlck9mSW5wdXRzLCBudW1iZXJPZk91dHB1dHMpKTsKLX0KLQotSmF2YVNjcmlwdEF1ZGlvTm9k
ZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cywgdW5zaWdu
ZWQgbnVtYmVyT2ZPdXRwdXRzKQotICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
Ci0gICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4KDApCi0gICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4
Rm9yRXZlbnQoMCkKLSAgICAsIG1fYnVmZmVyU2l6ZShidWZmZXJTaXplKQotICAgICwgbV9idWZm
ZXJSZWFkV3JpdGVJbmRleCgwKQotICAgICwgbV9pc1JlcXVlc3RPdXRzdGFuZGluZyhmYWxzZSkK
K1Bhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gSmF2YVNjcmlwdEF1ZGlvTm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZl
clNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscykKIHsKICAgICAvLyBDaGVjayBmb3IgdmFsaWQgYnVmZmVyIHNpemUuCiAg
ICAgc3dpdGNoIChidWZmZXJTaXplKSB7CkBAIC02NCwyMiArNTMsMzUgQEAgSmF2YVNjcmlwdEF1
ZGlvTm9kZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUKICAgICBjYXNlIDQwOTY6CiAgICAgY2FzZSA4MTkyOgogICAgIGNhc2UgMTYz
ODQ6Ci0gICAgICAgIG1fYnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIG1fYnVmZmVyU2l6ZSA9IERlZmF1bHRCdWZmZXJTaXplOwor
ICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgICAgIAotICAgIC8vIFJlZ2FyZGxlc3Mgb2Yg
dGhlIGFsbG93ZWQgYnVmZmVyIHNpemVzIGFib3ZlLCB3ZSBzdGlsbCBuZWVkIHRvIHByb2Nlc3Mg
YXQgdGhlIGdyYW51bGFyaXR5IG9mIHRoZSBBdWRpb05vZGUuCisKKyAgICAvLyBGSVhNRTogTWF5
YmUgd2Ugc2hvdWxkbid0IGhhdmUgdGhlIG51bWJlck9mSW5wdXRDaGFubmVscyBleHBvcnRlZCBh
cyBhbiBpbnB1dCBwYXJhbWV0ZXIsIHNpbmNlIGl0IGFjdHVhbGx5IGRlcGVuZHMgb24gdXBzdHJl
YW0gbm9kZS4KKyAgICBBU1NFUlRfVU5VU0VEKG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzIDw9IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsK
KworICAgIEFTU0VSVChudW1iZXJPZk91dHB1dENoYW5uZWxzID4gMCAmJiBudW1iZXJPZk91dHB1
dENoYW5uZWxzIDw9IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsKKyAgICBp
ZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyA8PSAwIHx8IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMg
PiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEphdmFTY3JpcHRBdWRpb05vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKSk7Cit9CisKK0phdmFTY3JpcHRBdWRpb05vZGU6OkphdmFTY3JpcHRBdWRp
b05vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKQorICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCisg
ICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4KDApCisgICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4Rm9y
RXZlbnQoMCkKKyAgICAsIG1fYnVmZmVyU2l6ZShidWZmZXJTaXplKQorICAgICwgbV9idWZmZXJS
ZWFkV3JpdGVJbmRleCgwKQorICAgICwgbV9pc1JlcXVlc3RPdXRzdGFuZGluZyhmYWxzZSkKK3sK
KyAgICAvLyBSZWdhcmRsZXNzIG9mIHRoZSBhbGxvd2VkIGJ1ZmZlciBzaXplcywgd2Ugc3RpbGwg
bmVlZCB0byBwcm9jZXNzIGF0IHRoZSBncmFudWxhcml0eSBvZiB0aGUgQXVkaW9Ob2RlLgogICAg
IGlmIChtX2J1ZmZlclNpemUgPCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpCiAg
ICAgICAgIG1fYnVmZmVyU2l6ZSA9IEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lczsK
IAotICAgIC8vIEZJWE1FOiBSaWdodCBub3cgd2UncmUgaGFyZGNvZGVkIHRvIHNpbmdsZSBpbnB1
dCBhbmQgc2luZ2xlIG91dHB1dC4KLSAgICAvLyBBbHRob3VnaCB0aGUgc3BlY2lmaWNhdGlvbiBz
YXlzIHRoaXMgaXMgT0sgZm9yIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uLCBtdWx0aXBsZSBpbnB1
dHMgYW5kIG91dHB1dHMgd291bGQgYmUgZ29vZC4KLSAgICBBU1NFUlRfVU5VU0VEKG51bWJlck9m
SW5wdXRzLCBudW1iZXJPZklucHV0cyA9PSAxKTsKLSAgICBBU1NFUlRfVU5VU0VEKG51bWJlck9m
T3V0cHV0cywgbnVtYmVyT2ZPdXRwdXRzID09IDEpOwogICAgIGFkZElucHV0KGFkb3B0UHRyKG5l
dyBBdWRpb05vZGVJbnB1dCh0aGlzKSkpOwotICAgIGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVk
aW9Ob2RlT3V0cHV0KHRoaXMsIDIpKSk7CisgICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRp
b05vZGVPdXRwdXQodGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpKTsKIAogICAgIHNldE5v
ZGVUeXBlKE5vZGVUeXBlSmF2YVNjcmlwdCk7CiAKQEAgLTEwMiw3ICsxMDQsNyBAQCB2b2lkIEph
dmFTY3JpcHRBdWRpb05vZGU6OmluaXRpYWxpemUoKQogICAgIC8vIFRoZXNlIEF1ZGlvQnVmZmVy
cyB3aWxsIGJlIGRpcmVjdGx5IGFjY2Vzc2VkIGluIHRoZSBtYWluIHRocmVhZCBieSBKYXZhU2Ny
aXB0LgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsKICAgICAgICAgbV9p
bnB1dEJ1ZmZlcnMuYXBwZW5kKEF1ZGlvQnVmZmVyOjpjcmVhdGUoMiwgYnVmZmVyU2l6ZSgpLCBz
YW1wbGVSYXRlKSk7Ci0gICAgICAgIG1fb3V0cHV0QnVmZmVycy5hcHBlbmQoQXVkaW9CdWZmZXI6
OmNyZWF0ZSgyLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpKTsKKyAgICAgICAgbV9vdXRwdXRC
dWZmZXJzLmFwcGVuZChBdWRpb0J1ZmZlcjo6Y3JlYXRlKHRoaXMtPm91dHB1dCgwKS0+bnVtYmVy
T2ZDaGFubmVscygpLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpKTsKICAgICB9CiAKICAgICBB
dWRpb05vZGU6OmluaXRpYWxpemUoKTsKQEAgLTE1NSwxNiArMTU3LDE1IEBAIHZvaWQgSmF2YVNj
cmlwdEF1ZGlvTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICBy
ZXR1cm47CiAgICAgICAgIAogICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscyA9IGlu
cHV0QnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscyA9IG91dHB1dEJ1cy0+bnVtYmVyT2ZDaGFubmVscygpOwogICAgIAotICAgIGJvb2wg
Y2hhbm5lbHNBcmVHb29kID0gKG51bWJlck9mSW5wdXRDaGFubmVscyA9PSAxIHx8IG51bWJlck9m
SW5wdXRDaGFubmVscyA9PSAyKSAmJiBvdXRwdXRCdXMtPm51bWJlck9mQ2hhbm5lbHMoKSA9PSAy
OworICAgIGJvb2wgY2hhbm5lbHNBcmVHb29kID0gKG51bWJlck9mSW5wdXRDaGFubmVscyA9PSAx
IHx8IG51bWJlck9mSW5wdXRDaGFubmVscyA9PSAyKTsKICAgICBBU1NFUlQoY2hhbm5lbHNBcmVH
b29kKTsKICAgICBpZiAoIWNoYW5uZWxzQXJlR29vZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Y29uc3QgZmxvYXQqIHNvdXJjZUwgPSBpbnB1dEJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOwogICAg
IGNvbnN0IGZsb2F0KiBzb3VyY2VSID0gbnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gMSA/IGlucHV0
QnVzLT5jaGFubmVsKDEpLT5kYXRhKCkgOiAwOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBv
dXRwdXRCdXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7Ci0gICAgZmxvYXQqIGRlc3RpbmF0
aW9uUiA9IG91dHB1dEJ1cy0+Y2hhbm5lbCgxKS0+bXV0YWJsZURhdGEoKTsKIAogICAgIC8vIENv
cHkgZnJvbSB0aGUgaW5wdXQgdG8gdGhlIGlucHV0IGJ1ZmZlci4gIFNlZSAiYnVmZmVyc0FyZUdv
b2QiIGNoZWNrIGFib3ZlIGZvciBzYWZldHkuCiAgICAgc2l6ZV90IGJ5dGVzVG9Db3B5ID0gc2l6
ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2VzczsKQEAgLTE3OCw5ICsxNzksOSBAQCB2b2lkIEph
dmFTY3JpcHRBdWRpb05vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAg
ICAgbWVtY3B5KGlucHV0QnVmZmVyLT5nZXRDaGFubmVsRGF0YSgxKS0+ZGF0YSgpICsgbV9idWZm
ZXJSZWFkV3JpdGVJbmRleCwgc291cmNlTCwgYnl0ZXNUb0NvcHkpOwogICAgIH0KICAgICAKLSAg
ICAvLyBDb3B5IGZyb20gdGhlIG91dHB1dCBidWZmZXIgdG8gdGhlIG91dHB1dC4gIFNlZSAiYnVm
ZmVyc0FyZUdvb2QiIGNoZWNrIGFib3ZlIGZvciBzYWZldHkuCi0gICAgbWVtY3B5KGRlc3RpbmF0
aW9uTCwgb3V0cHV0QnVmZmVyLT5nZXRDaGFubmVsRGF0YSgwKS0+ZGF0YSgpICsgbV9idWZmZXJS
ZWFkV3JpdGVJbmRleCwgYnl0ZXNUb0NvcHkpOwotICAgIG1lbWNweShkZXN0aW5hdGlvblIsIG91
dHB1dEJ1ZmZlci0+Z2V0Q2hhbm5lbERhdGEoMSktPmRhdGEoKSArIG1fYnVmZmVyUmVhZFdyaXRl
SW5kZXgsIGJ5dGVzVG9Db3B5KTsKKyAgICAvLyBDb3B5IGZyb20gdGhlIG91dHB1dCBidWZmZXIg
dG8gdGhlIG91dHB1dC4gCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mT3V0
cHV0Q2hhbm5lbHM7ICsraSkKKyAgICAgICAgbWVtY3B5KG91dHB1dEJ1cy0+Y2hhbm5lbChpKS0+
bXV0YWJsZURhdGEoKSwgb3V0cHV0QnVmZmVyLT5nZXRDaGFubmVsRGF0YShpKS0+ZGF0YSgpICsg
bV9idWZmZXJSZWFkV3JpdGVJbmRleCwgYnl0ZXNUb0NvcHkpOwogCiAgICAgLy8gVXBkYXRlIHRo
ZSBidWZmZXJpbmcgaW5kZXguCiAgICAgbV9idWZmZXJSZWFkV3JpdGVJbmRleCA9IChtX2J1ZmZl
clJlYWRXcml0ZUluZGV4ICsgZnJhbWVzVG9Qcm9jZXNzKSAlIGJ1ZmZlclNpemUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2Rl
LmgKaW5kZXggNjUwNDljYjE0NDI4OGZhOWUyYzFjMDRiNDliOWY2NDdiODgwYWExNS4uYjk0MGUx
YThkNWQ2YmM1NDI2OWRkZGU0NGRmNjJkZDkxMjNkZDY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmgKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgdmFsdWUgY29udHJvbHMgaG93IGZyZXF1ZW50
bHkgdGhlIG9uYXVkaW9wcm9jZXNzIGV2ZW50IGhhbmRsZXIgaXMgY2FsbGVkIGFuZCBob3cgbWFu
eSBzYW1wbGUtZnJhbWVzIG5lZWQgdG8gYmUgcHJvY2Vzc2VkIGVhY2ggY2FsbC4KICAgICAvLyBM
b3dlciBudW1iZXJzIGZvciBidWZmZXJTaXplIHdpbGwgcmVzdWx0IGluIGEgbG93ZXIgKGJldHRl
cikgbGF0ZW5jeS4gSGlnaGVyIG51bWJlcnMgd2lsbCBiZSBuZWNlc3NhcnkgdG8gYXZvaWQgYXVk
aW8gYnJlYWt1cCBhbmQgZ2xpdGNoZXMuCiAgICAgLy8gVGhlIHZhbHVlIGNob3NlbiBtdXN0IGNh
cmVmdWxseSBiYWxhbmNlIGJldHdlZW4gbGF0ZW5jeSBhbmQgYXVkaW8gcXVhbGl0eS4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0
KiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9m
SW5wdXRzID0gMSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzID0gMSk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCosIGZsb2F0
IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+
SmF2YVNjcmlwdEF1ZGlvTm9kZSgpOwogCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRv
dWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgSmF2YVNjcmlwdEF1ZGlv
Tm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CisgICAg
SmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXpl
X3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIHN0YXRpYyB2b2lkIGZpcmVQcm9jZXNzRXZl
bnREaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSk7CiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135764</attachid>
            <date>2012-04-04 23:38:20 -0700</date>
            <delta_ts>2012-04-05 18:47:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83250-20120405144359.patch</filename>
            <type>text/plain</type>
            <size>11935</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJmNjBjNDFkNTI0M2Mw
ZWVmZTUxMDE4MWI1MGE5Y2MwOTY3NzQzNS4uYTFhODEzYjc2ODMzNGFkYTA0NTAzYzVlNmFiOGZi
NjUwN2FkMzU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA0LTA0ICBSYXlt
b25kIExpdSAgPHJheW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBXaGVuIGNyZWF0ZSBK
YXZhU2NyaXB0Tm9kZSwgZG8gbm90IGlnbm9yZSBOdW1iZXJPZk91dHB1dENoYW5uZWxzIHBhcmFt
ZXRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
MjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NvbnRleHQ6OmNyZWF0ZUphdmFTY3JpcHROb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoQXVkaW9Db250ZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3Jp
cHRBdWRpb05vZGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkphdmFTY3JpcHRBdWRpb05vZGU6OkphdmFTY3JpcHRBdWRpb05vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjpwcm9jZXNzKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaDoKKyAgICAgICAgKEphdmFTY3JpcHRBdWRpb05v
ZGUpOgorCiAyMDEyLTA0LTA0ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBDYWxsIGhpc3RvZ3JhbUVudW1lcmF0aW9uIGRpcmVjdGx5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZjEyM2Zk
OTRhMjkyMjRjM2IxNTMyMzljYzg1MGIwMDliMDNkNjdlZC4uYWFiMWRmODllYTY3YTljMTZmZDZh
M2EyYTU2YjYyYzY5NWUxZmRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzY5LDExICszNjksMTYgQEAgUGFzc1JlZlB0cjxN
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFFbGVt
ZW50U291cmNlKEgKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+
IEF1ZGlvQ29udGV4dDo6Y3JlYXRlSmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUpCitQ
YXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlSmF2YVNj
cmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7Ci0gICAgUmVm
UHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IG5vZGUgPSBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpjcmVh
dGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgYnVmZmVyU2l6ZSk7Cisg
ICAgUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IG5vZGUgPSBKYXZhU2NyaXB0QXVkaW9Ob2Rl
OjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgYnVmZmVyU2l6
ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKworICAg
IGlmICghbm9kZS5nZXQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KIAogICAgIHJlZk5vZGUobm9kZS5nZXQoKSk7IC8vIGNvbnRleHQga2Vl
cHMgcmVmZXJlbmNlIHVudGlsIHdlIHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNh
bGxiYWNrcwogICAgIHJldHVybiBub2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggYWRjMzk4MmUwMmM4YWQ1OWFmNGU3OWJjNTExZjIw
MDdkYmQzMTA2NC4uNjQ2MzNhYmFhYTE5MzY2OTRmMjgwOWY3ZTM4OWMyYjI2YzQ2MDM2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0x
MjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q29udm9sdmVyTm9kZT4gY3Jl
YXRlQ29udm9sdmVyKCk7CiAgICAgUGFzc1JlZlB0cjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBj
cmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsgICAgCiAgICAgUGFzc1JlZlB0cjxSZWFsdGltZUFu
YWx5c2VyTm9kZT4gY3JlYXRlQW5hbHlzZXIoKTsKLSAgICBQYXNzUmVmUHRyPEphdmFTY3JpcHRB
dWRpb05vZGU+IGNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplKTsKKyAgICBQ
YXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IGNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVf
dCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8QXVkaW9D
aGFubmVsU3BsaXR0ZXI+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcigpOwogICAgIFBhc3NSZWZQdHI8
QXVkaW9DaGFubmVsTWVyZ2VyPiBjcmVhdGVDaGFubmVsTWVyZ2VyKCk7CiAgICAgUGFzc1JlZlB0
cjxPc2NpbGxhdG9yPiBjcmVhdGVPc2NpbGxhdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggMWY4MWQ2NjM4M2NhZmFlODg5
ODQ4MDM2MTg0NDVmMjEwZjUxZWExNi4uNDZlYzk1MjRlYzQ0ZDFmZDQ1MzU5OTU3MTc4OTU1ZDJk
NDgyMzRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmlkbApAQCAtNzEsNyArNzEsOCBAQCBtb2R1bGUgd2ViYXVkaW8gewogICAgICAgICBD
b252b2x2ZXJOb2RlIGNyZWF0ZUNvbnZvbHZlcigpOwogICAgICAgICBEeW5hbWljc0NvbXByZXNz
b3JOb2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOwogICAgICAgICBSZWFsdGltZUFuYWx5
c2VyTm9kZSBjcmVhdGVBbmFseXNlcigpOwotICAgICAgICBKYXZhU2NyaXB0QXVkaW9Ob2RlIGNy
ZWF0ZUphdmFTY3JpcHROb2RlKGluIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSk7CisgICAgICAg
IEphdmFTY3JpcHRBdWRpb05vZGUgY3JlYXRlSmF2YVNjcmlwdE5vZGUoaW4gdW5zaWduZWQgbG9u
ZyBidWZmZXJTaXplLCBpbiB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRDaGFubmVscywgaW4g
dW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzKQorICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE9zY2lsbGF0b3IgY3JlYXRlT3NjaWxsYXRvcigpOwog
ICAgICAgICBXYXZlVGFibGUgY3JlYXRlV2F2ZVRhYmxlKGluIEZsb2F0MzJBcnJheSByZWFsLCBp
biBGbG9hdDMyQXJyYXkgaW1hZykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVk
aW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1
ZGlvTm9kZS5jcHAKaW5kZXggZWEzZDdhYWFhN2M0NmE3ZDIzMjVlNjM2MWQ4NmJmYmFlN2ViNTM1
Ni4uYjdlODVkNzU3YTVjMjJhOWU2MzJlZDY3ZjJlMTY5MzAyZWIwZDlmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUu
Y3BwCkBAIC00MiwxOCArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IHNpemVf
dCBEZWZhdWx0QnVmZmVyU2l6ZSA9IDQwOTY7CiAKLVBhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlv
Tm9kZT4gSmF2YVNjcmlwdEF1ZGlvTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBKYXZhU2NyaXB0QXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUsIG51
bWJlck9mSW5wdXRzLCBudW1iZXJPZk91dHB1dHMpKTsKLX0KLQotSmF2YVNjcmlwdEF1ZGlvTm9k
ZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cywgdW5zaWdu
ZWQgbnVtYmVyT2ZPdXRwdXRzKQotICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
Ci0gICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4KDApCi0gICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4
Rm9yRXZlbnQoMCkKLSAgICAsIG1fYnVmZmVyU2l6ZShidWZmZXJTaXplKQotICAgICwgbV9idWZm
ZXJSZWFkV3JpdGVJbmRleCgwKQotICAgICwgbV9pc1JlcXVlc3RPdXRzdGFuZGluZyhmYWxzZSkK
K1Bhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gSmF2YVNjcmlwdEF1ZGlvTm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZl
clNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscykKIHsKICAgICAvLyBDaGVjayBmb3IgdmFsaWQgYnVmZmVyIHNpemUuCiAg
ICAgc3dpdGNoIChidWZmZXJTaXplKSB7CkBAIC02NCwyMiArNTMsMzggQEAgSmF2YVNjcmlwdEF1
ZGlvTm9kZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUKICAgICBjYXNlIDQwOTY6CiAgICAgY2FzZSA4MTkyOgogICAgIGNhc2UgMTYz
ODQ6Ci0gICAgICAgIG1fYnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIG1fYnVmZmVyU2l6ZSA9IERlZmF1bHRCdWZmZXJTaXplOwor
ICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgICAgIAotICAgIC8vIFJlZ2FyZGxlc3Mgb2Yg
dGhlIGFsbG93ZWQgYnVmZmVyIHNpemVzIGFib3ZlLCB3ZSBzdGlsbCBuZWVkIHRvIHByb2Nlc3Mg
YXQgdGhlIGdyYW51bGFyaXR5IG9mIHRoZSBBdWRpb05vZGUuCisKKyAgICAvLyBGSVhNRTogTWF5
YmUgd2Ugc2hvdWxkbid0IGhhdmUgdGhlIG51bWJlck9mSW5wdXRDaGFubmVscyBleHBvcnRlZCBh
cyBhbiBpbnB1dCBwYXJhbWV0ZXIsIHNpbmNlIGl0IGFjdHVhbGx5IGRlcGVuZHMgb24gdXBzdHJl
YW0gbm9kZS4KKyAgICBBU1NFUlRfVU5VU0VEKG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzIDw9IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsK
KworICAgIEFTU0VSVChudW1iZXJPZk91dHB1dENoYW5uZWxzID4gMCAmJiBudW1iZXJPZk91dHB1
dENoYW5uZWxzIDw9IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsKKyAgICBp
ZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyA8PSAwIHx8IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMg
PiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEphdmFTY3JpcHRBdWRpb05vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKSk7Cit9CisKK0phdmFTY3JpcHRBdWRpb05vZGU6OkphdmFTY3JpcHRBdWRp
b05vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKQorICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCisg
ICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4KDApCisgICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4Rm9y
RXZlbnQoMCkKKyAgICAsIG1fYnVmZmVyU2l6ZShidWZmZXJTaXplKQorICAgICwgbV9idWZmZXJS
ZWFkV3JpdGVJbmRleCgwKQorICAgICwgbV9pc1JlcXVlc3RPdXRzdGFuZGluZyhmYWxzZSkKK3sK
KyAgICAvLyBSZWdhcmRsZXNzIG9mIHRoZSBhbGxvd2VkIGJ1ZmZlciBzaXplcywgd2Ugc3RpbGwg
bmVlZCB0byBwcm9jZXNzIGF0IHRoZSBncmFudWxhcml0eSBvZiB0aGUgQXVkaW9Ob2RlLgogICAg
IGlmIChtX2J1ZmZlclNpemUgPCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpCiAg
ICAgICAgIG1fYnVmZmVyU2l6ZSA9IEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lczsK
IAotICAgIC8vIEZJWE1FOiBSaWdodCBub3cgd2UncmUgaGFyZGNvZGVkIHRvIHNpbmdsZSBpbnB1
dCBhbmQgc2luZ2xlIG91dHB1dC4KLSAgICAvLyBBbHRob3VnaCB0aGUgc3BlY2lmaWNhdGlvbiBz
YXlzIHRoaXMgaXMgT0sgZm9yIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uLCBtdWx0aXBsZSBpbnB1
dHMgYW5kIG91dHB1dHMgd291bGQgYmUgZ29vZC4KLSAgICBBU1NFUlRfVU5VU0VEKG51bWJlck9m
SW5wdXRzLCBudW1iZXJPZklucHV0cyA9PSAxKTsKLSAgICBBU1NFUlRfVU5VU0VEKG51bWJlck9m
T3V0cHV0cywgbnVtYmVyT2ZPdXRwdXRzID09IDEpOworICAgIC8vIEZJWEVNRTogV2UgcHJvYmFi
bHkgc2hvdWxkIHJlbW92ZSBudW1iZXJPZklucHV0Q2hhbm5lbHMgZnJvbSBpbnB1dCBwYXJhbWV0
ZXJzIHNpbmNlIHdlIGFjdHVhbGx5IGRvZXNuJ3QgdXNlIGl0LgorICAgIEFTU0VSVF9VTlVTRUQo
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZklucHV0Q2hhbm5lbHMgPiAwKTsKKwogICAg
IGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkpOwotICAgIGFkZE91
dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIDIpKSk7CisgICAgYWRkT3V0
cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscykpKTsKIAogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlSmF2YVNjcmlwdCk7CiAKQEAgLTEw
Miw3ICsxMDcsNyBAQCB2b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OmluaXRpYWxpemUoKQogICAg
IC8vIFRoZXNlIEF1ZGlvQnVmZmVycyB3aWxsIGJlIGRpcmVjdGx5IGFjY2Vzc2VkIGluIHRoZSBt
YWluIHRocmVhZCBieSBKYXZhU2NyaXB0LgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAy
OyArK2kpIHsKICAgICAgICAgbV9pbnB1dEJ1ZmZlcnMuYXBwZW5kKEF1ZGlvQnVmZmVyOjpjcmVh
dGUoMiwgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSk7Ci0gICAgICAgIG1fb3V0cHV0QnVmZmVy
cy5hcHBlbmQoQXVkaW9CdWZmZXI6OmNyZWF0ZSgyLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUp
KTsKKyAgICAgICAgbV9vdXRwdXRCdWZmZXJzLmFwcGVuZChBdWRpb0J1ZmZlcjo6Y3JlYXRlKHRo
aXMtPm91dHB1dCgwKS0+bnVtYmVyT2ZDaGFubmVscygpLCBidWZmZXJTaXplKCksIHNhbXBsZVJh
dGUpKTsKICAgICB9CiAKICAgICBBdWRpb05vZGU6OmluaXRpYWxpemUoKTsKQEAgLTE1NSwxNiAr
MTYwLDE1IEBAIHZvaWQgSmF2YVNjcmlwdEF1ZGlvTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscyA9IGlucHV0QnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IG91dHB1dEJ1cy0+bnVtYmVyT2ZDaGFubmVs
cygpOwogICAgIAotICAgIGJvb2wgY2hhbm5lbHNBcmVHb29kID0gKG51bWJlck9mSW5wdXRDaGFu
bmVscyA9PSAxIHx8IG51bWJlck9mSW5wdXRDaGFubmVscyA9PSAyKSAmJiBvdXRwdXRCdXMtPm51
bWJlck9mQ2hhbm5lbHMoKSA9PSAyOworICAgIGJvb2wgY2hhbm5lbHNBcmVHb29kID0gKG51bWJl
ck9mSW5wdXRDaGFubmVscyA9PSAxIHx8IG51bWJlck9mSW5wdXRDaGFubmVscyA9PSAyKTsKICAg
ICBBU1NFUlQoY2hhbm5lbHNBcmVHb29kKTsKICAgICBpZiAoIWNoYW5uZWxzQXJlR29vZCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgZmxvYXQqIHNvdXJjZUwgPSBpbnB1dEJ1cy0+Y2hh
bm5lbCgwKS0+ZGF0YSgpOwogICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VSID0gbnVtYmVyT2ZJbnB1
dENoYW5uZWxzID4gMSA/IGlucHV0QnVzLT5jaGFubmVsKDEpLT5kYXRhKCkgOiAwOwotICAgIGZs
b2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7
Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG91dHB1dEJ1cy0+Y2hhbm5lbCgxKS0+bXV0YWJs
ZURhdGEoKTsKIAogICAgIC8vIENvcHkgZnJvbSB0aGUgaW5wdXQgdG8gdGhlIGlucHV0IGJ1ZmZl
ci4gIFNlZSAiYnVmZmVyc0FyZUdvb2QiIGNoZWNrIGFib3ZlIGZvciBzYWZldHkuCiAgICAgc2l6
ZV90IGJ5dGVzVG9Db3B5ID0gc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2VzczsKQEAgLTE3
OCw5ICsxODIsOSBAQCB2b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OnByb2Nlc3Moc2l6ZV90IGZy
YW1lc1RvUHJvY2VzcykKICAgICAgICAgbWVtY3B5KGlucHV0QnVmZmVyLT5nZXRDaGFubmVsRGF0
YSgxKS0+ZGF0YSgpICsgbV9idWZmZXJSZWFkV3JpdGVJbmRleCwgc291cmNlTCwgYnl0ZXNUb0Nv
cHkpOwogICAgIH0KICAgICAKLSAgICAvLyBDb3B5IGZyb20gdGhlIG91dHB1dCBidWZmZXIgdG8g
dGhlIG91dHB1dC4gIFNlZSAiYnVmZmVyc0FyZUdvb2QiIGNoZWNrIGFib3ZlIGZvciBzYWZldHku
Ci0gICAgbWVtY3B5KGRlc3RpbmF0aW9uTCwgb3V0cHV0QnVmZmVyLT5nZXRDaGFubmVsRGF0YSgw
KS0+ZGF0YSgpICsgbV9idWZmZXJSZWFkV3JpdGVJbmRleCwgYnl0ZXNUb0NvcHkpOwotICAgIG1l
bWNweShkZXN0aW5hdGlvblIsIG91dHB1dEJ1ZmZlci0+Z2V0Q2hhbm5lbERhdGEoMSktPmRhdGEo
KSArIG1fYnVmZmVyUmVhZFdyaXRlSW5kZXgsIGJ5dGVzVG9Db3B5KTsKKyAgICAvLyBDb3B5IGZy
b20gdGhlIG91dHB1dCBidWZmZXIgdG8gdGhlIG91dHB1dC4gCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7ICsraSkKKyAgICAgICAgbWVtY3B5KG91
dHB1dEJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSwgb3V0cHV0QnVmZmVyLT5nZXRDaGFu
bmVsRGF0YShpKS0+ZGF0YSgpICsgbV9idWZmZXJSZWFkV3JpdGVJbmRleCwgYnl0ZXNUb0NvcHkp
OwogCiAgICAgLy8gVXBkYXRlIHRoZSBidWZmZXJpbmcgaW5kZXguCiAgICAgbV9idWZmZXJSZWFk
V3JpdGVJbmRleCA9IChtX2J1ZmZlclJlYWRXcml0ZUluZGV4ICsgZnJhbWVzVG9Qcm9jZXNzKSAl
IGJ1ZmZlclNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9KYXZhU2NyaXB0QXVkaW9Ob2RlLmgKaW5kZXggNjUwNDljYjE0NDI4OGZhOWUyYzFjMDRiNDli
OWY2NDdiODgwYWExNS4uYjk0MGUxYThkNWQ2YmM1NDI2OWRkZGU0NGRmNjJkZDkxMjNkZDY4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVk
aW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0
QXVkaW9Ob2RlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgdmFsdWUg
Y29udHJvbHMgaG93IGZyZXF1ZW50bHkgdGhlIG9uYXVkaW9wcm9jZXNzIGV2ZW50IGhhbmRsZXIg
aXMgY2FsbGVkIGFuZCBob3cgbWFueSBzYW1wbGUtZnJhbWVzIG5lZWQgdG8gYmUgcHJvY2Vzc2Vk
IGVhY2ggY2FsbC4KICAgICAvLyBMb3dlciBudW1iZXJzIGZvciBidWZmZXJTaXplIHdpbGwgcmVz
dWx0IGluIGEgbG93ZXIgKGJldHRlcikgbGF0ZW5jeS4gSGlnaGVyIG51bWJlcnMgd2lsbCBiZSBu
ZWNlc3NhcnkgdG8gYXZvaWQgYXVkaW8gYnJlYWt1cCBhbmQgZ2xpdGNoZXMuCiAgICAgLy8gVGhl
IHZhbHVlIGNob3NlbiBtdXN0IGNhcmVmdWxseSBiYWxhbmNlIGJldHdlZW4gbGF0ZW5jeSBhbmQg
YXVkaW8gcXVhbGl0eS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNp
emUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzID0gMSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRz
ID0gMSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNp
Z25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpOwogCiAgICAgdmlydHVhbCB+SmF2YVNjcmlwdEF1ZGlvTm9kZSgpOwogCkBAIC04MSw3ICs4
MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IE9WRVJSSURFOwog
Ci0gICAgSmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRl
LCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0cyk7CisgICAgSmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqLCBm
bG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIHN0YXRp
YyB2b2lkIGZpcmVQcm9jZXNzRXZlbnREaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSk7CiAgICAgdm9p
ZCBmaXJlUHJvY2Vzc0V2ZW50KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135964</attachid>
            <date>2012-04-05 18:47:47 -0700</date>
            <delta_ts>2012-04-09 11:49:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83250-20120406095327.patch</filename>
            <type>text/plain</type>
            <size>12502</size>
            <attacher name="Raymond">rgbbones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGYwYjc0MzYzODliN2Ix
NjBiOGY4ZmU1MzA0NmE3MjZmMjZmZWYyYi4uNDE5ZGY4MTVkNzcyOWUxYzBkMDVjMjAzYjUyZmU1
MWM5NzA3M2NmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTA1ICBSYXlt
b25kIExpdSAgPHJheW1vbmQubGl1QGludGVsLmNvbT4KKworICAgICAgICBXaGVuIGNyZWF0ZSBK
YXZhU2NyaXB0Tm9kZSwgZG8gbm90IGlnbm9yZSBOdW1iZXJPZk91dHB1dENoYW5uZWxzIHBhcmFt
ZXRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
MjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NvbnRleHQ6OmNyZWF0ZUphdmFTY3JpcHROb2RlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgIChBdWRpb0Nv
bnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZTo6SmF2YVNjcmlwdEF1
ZGlvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRBdWRpb05vZGU6OnByb2Nlc3MpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oOgorICAgICAg
ICAoSmF2YVNjcmlwdEF1ZGlvTm9kZSk6CisKIDIwMTItMDQtMDUgIE9saXZlciBIdW50ICA8b2xp
dmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFdlYkNvcmUgdXNlIGpzQ2FzdCByYXRoZXIg
dGhhbiBzdGF0aWNfY2FzdCBmb3IgY2FzdGluZyBKU0Mgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IGYxMjNmZDk0YTI5
MjI0YzNiMTUzMjM5Y2M4NTBiMDA5YjAzZDY3ZWQuLmU4OTg0NjczZmY3YjU1MmU0NmMxOTYyOGU3
ZGU5MzZjZGE5NjQ1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKQEAgLTM2OSwxMSArMzY5LDI4IEBAIFBhc3NSZWZQdHI8TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhRWxlbWVudFNv
dXJjZShICiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBBdWRp
b0NvbnRleHQ6OmNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplKQorUGFzc1Jl
ZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUphdmFTY3JpcHRO
b2RlKHNpemVfdCBidWZmZXJTaXplLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBTZXQg
bnVtYmVyIG9mIGlucHV0L291dHB1dCBjaGFubmVscyB0byBzdGVyZW8gYnkgZGVmYXVsdC4KKyAg
ICByZXR1cm4gY3JlYXRlSmF2YVNjcmlwdE5vZGUoYnVmZmVyU2l6ZSwgMiwgMiwgZWMpOworfQor
CitQYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlSmF2
YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIFNldCBudW1iZXIgb2Ygb3V0cHV0IGNo
YW5uZWxzIHRvIHN0ZXJlbyBieSBkZWZhdWx0LgorICAgIHJldHVybiBjcmVhdGVKYXZhU2NyaXB0
Tm9kZShidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIDIsIGVjKTsKK30KKworUGFz
c1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUphdmFTY3Jp
cHROb2RlKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBz
aXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAgIFJlZlB0
cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBub2RlID0gSmF2YVNjcmlwdEF1ZGlvTm9kZTo6Y3JlYXRl
KHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCksIGJ1ZmZlclNpemUpOworICAg
IFJlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBub2RlID0gSmF2YVNjcmlwdEF1ZGlvTm9kZTo6
Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCksIGJ1ZmZlclNpemUs
IG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisKKyAgICBp
ZiAoIW5vZGUuZ2V0KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CiAKICAgICByZWZOb2RlKG5vZGUuZ2V0KCkpOyAvLyBjb250ZXh0IGtlZXBz
IHJlZmVyZW5jZSB1bnRpbCB3ZSBzdG9wIG1ha2luZyBqYXZhc2NyaXB0IHJlbmRlcmluZyBjYWxs
YmFja3MKICAgICByZXR1cm4gbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IGFkYzM5ODJlMDJjOGFkNTlhZjRlNzliYzUxMWYyMDA3
ZGJkMzEwNjQuLjJkNzlhMmFkNjgyOWM4MGY2NzU1ZDhlZjc2NDdhZjRlN2RmNjUwMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMTIz
LDcgKzEyMyw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENvbnZvbHZlck5vZGU+IGNyZWF0
ZUNvbnZvbHZlcigpOwogICAgIFBhc3NSZWZQdHI8RHluYW1pY3NDb21wcmVzc29yTm9kZT4gY3Jl
YXRlRHluYW1pY3NDb21wcmVzc29yKCk7ICAgIAogICAgIFBhc3NSZWZQdHI8UmVhbHRpbWVBbmFs
eXNlck5vZGU+IGNyZWF0ZUFuYWx5c2VyKCk7Ci0gICAgUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVk
aW9Ob2RlPiBjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3QgYnVmZmVyU2l6ZSk7CisgICAgUGFz
c1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3Qg
YnVmZmVyU2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SmF2YVNjcmlwdEF1
ZGlvTm9kZT4gY3JlYXRlSmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEph
dmFTY3JpcHRBdWRpb05vZGU+IGNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXpl
LCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0
ZXI+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcigpOwogICAgIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVs
TWVyZ2VyPiBjcmVhdGVDaGFubmVsTWVyZ2VyKCk7CiAgICAgUGFzc1JlZlB0cjxPc2NpbGxhdG9y
PiBjcmVhdGVPc2NpbGxhdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggMWY4MWQ2NjM4M2NhZmFlODg5ODQ4MDM2MTg0NDVm
MjEwZjUxZWExNi4uZWQwNWE5NGE5YTJjN2ZlZDVhMmY1MTczMmI1YzIwOTljZDg0YTFkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApA
QCAtNzEsNyArNzEsOCBAQCBtb2R1bGUgd2ViYXVkaW8gewogICAgICAgICBDb252b2x2ZXJOb2Rl
IGNyZWF0ZUNvbnZvbHZlcigpOwogICAgICAgICBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGNyZWF0
ZUR5bmFtaWNzQ29tcHJlc3NvcigpOwogICAgICAgICBSZWFsdGltZUFuYWx5c2VyTm9kZSBjcmVh
dGVBbmFseXNlcigpOwotICAgICAgICBKYXZhU2NyaXB0QXVkaW9Ob2RlIGNyZWF0ZUphdmFTY3Jp
cHROb2RlKGluIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSk7CisgICAgICAgIEphdmFTY3JpcHRB
dWRpb05vZGUgY3JlYXRlSmF2YVNjcmlwdE5vZGUoaW4gdW5zaWduZWQgbG9uZyBidWZmZXJTaXpl
LCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBpbiBb
T3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBPc2NpbGxhdG9yIGNyZWF0ZU9zY2ls
bGF0b3IoKTsKICAgICAgICAgV2F2ZVRhYmxlIGNyZWF0ZVdhdmVUYWJsZShpbiBGbG9hdDMyQXJy
YXkgcmVhbCwgaW4gRmxvYXQzMkFycmF5IGltYWcpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vSmF2
YVNjcmlwdEF1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0ph
dmFTY3JpcHRBdWRpb05vZGUuY3BwCmluZGV4IGVhM2Q3YWFhYTdjNDZhN2QyMzI1ZTYzNjFkODZi
ZmJhZTdlYjUzNTYuLjgxYzFkYzc2YmQxNWI5ODU1YWY4YmRhNjI5MGE0ZTdiMzk0ZTc4M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlv
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0
QXVkaW9Ob2RlLmNwcApAQCAtNDIsMTggKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
b25zdCBzaXplX3QgRGVmYXVsdEJ1ZmZlclNpemUgPSA0MDk2OwogCi1QYXNzUmVmUHRyPEphdmFT
Y3JpcHRBdWRpb05vZGU+IEphdmFTY3JpcHRBdWRpb05vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQq
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0cywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKQotewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSmF2YVNjcmlwdEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBidWZm
ZXJTaXplLCBudW1iZXJPZklucHV0cywgbnVtYmVyT2ZPdXRwdXRzKSk7Ci19Ci0KLUphdmFTY3Jp
cHRBdWRpb05vZGU6OkphdmFTY3JpcHRBdWRpb05vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKLSAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKQotICAgICwgbV9kb3VibGVCdWZmZXJJbmRleCgwKQotICAgICwgbV9kb3VibGVC
dWZmZXJJbmRleEZvckV2ZW50KDApCi0gICAgLCBtX2J1ZmZlclNpemUoYnVmZmVyU2l6ZSkKLSAg
ICAsIG1fYnVmZmVyUmVhZFdyaXRlSW5kZXgoMCkKLSAgICAsIG1faXNSZXF1ZXN0T3V0c3RhbmRp
bmcoZmFsc2UpCitQYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IEphdmFTY3JpcHRBdWRp
b05vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNp
emVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVk
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIHZhbGlkIGJ1ZmZl
ciBzaXplLgogICAgIHN3aXRjaCAoYnVmZmVyU2l6ZSkgewpAQCAtNjQsMjIgKzUzLDM3IEBAIEph
dmFTY3JpcHRBdWRpb05vZGU6OkphdmFTY3JpcHRBdWRpb05vZGUoQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlCiAgICAgY2FzZSA0MDk2OgogICAgIGNhc2UgODE5MjoKICAg
ICBjYXNlIDE2Mzg0OgotICAgICAgICBtX2J1ZmZlclNpemUgPSBidWZmZXJTaXplOwogICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBtX2J1ZmZlclNpemUgPSBEZWZhdWx0QnVm
ZmVyU2l6ZTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgICAgICAKLSAgICAvLyBSZWdh
cmRsZXNzIG9mIHRoZSBhbGxvd2VkIGJ1ZmZlciBzaXplcyBhYm92ZSwgd2Ugc3RpbGwgbmVlZCB0
byBwcm9jZXNzIGF0IHRoZSBncmFudWxhcml0eSBvZiB0aGUgQXVkaW9Ob2RlLgorCisgICAgLy8g
RklYTUU6IFdlIHN0aWxsIG5lZWQgdG8gaW1wbGVtZW50IG51bWJlck9mSW5wdXRDaGFubmVscy4K
KyAgICBBU1NFUlRfVU5VU0VEKG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzIDw9IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsKKworICAgIGlm
ICghbnVtYmVyT2ZPdXRwdXRDaGFubmVscyB8fCBudW1iZXJPZk91dHB1dENoYW5uZWxzID4gQXVk
aW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKYXZhU2NyaXB0QXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUsIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscykpOworfQorCitKYXZhU2NyaXB0QXVkaW9Ob2RlOjpKYXZhU2NyaXB0QXVkaW9Ob2Rl
KEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNp
emUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscykKKyAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQorICAgICwg
bV9kb3VibGVCdWZmZXJJbmRleCgwKQorICAgICwgbV9kb3VibGVCdWZmZXJJbmRleEZvckV2ZW50
KDApCisgICAgLCBtX2J1ZmZlclNpemUoYnVmZmVyU2l6ZSkKKyAgICAsIG1fYnVmZmVyUmVhZFdy
aXRlSW5kZXgoMCkKKyAgICAsIG1faXNSZXF1ZXN0T3V0c3RhbmRpbmcoZmFsc2UpCit7CisgICAg
Ly8gUmVnYXJkbGVzcyBvZiB0aGUgYWxsb3dlZCBidWZmZXIgc2l6ZXMsIHdlIHN0aWxsIG5lZWQg
dG8gcHJvY2VzcyBhdCB0aGUgZ3JhbnVsYXJpdHkgb2YgdGhlIEF1ZGlvTm9kZS4KICAgICBpZiAo
bV9idWZmZXJTaXplIDwgQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKQogICAgICAg
ICBtX2J1ZmZlclNpemUgPSBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXM7CiAKLSAg
ICAvLyBGSVhNRTogUmlnaHQgbm93IHdlJ3JlIGhhcmRjb2RlZCB0byBzaW5nbGUgaW5wdXQgYW5k
IHNpbmdsZSBvdXRwdXQuCi0gICAgLy8gQWx0aG91Z2ggdGhlIHNwZWNpZmljYXRpb24gc2F5cyB0
aGlzIGlzIE9LIGZvciBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiwgbXVsdGlwbGUgaW5wdXRzIGFu
ZCBvdXRwdXRzIHdvdWxkIGJlIGdvb2QuCi0gICAgQVNTRVJUX1VOVVNFRChudW1iZXJPZklucHV0
cywgbnVtYmVyT2ZJbnB1dHMgPT0gMSk7Ci0gICAgQVNTRVJUX1VOVVNFRChudW1iZXJPZk91dHB1
dHMsIG51bWJlck9mT3V0cHV0cyA9PSAxKTsKKyAgICAvLyBGSVhNRTogV2Ugc3RpbGwgbmVlZCB0
byBpbXBsZW1lbnQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLgorICAgIEFTU0VSVF9VTlVTRUQobnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZklucHV0Q2hhbm5lbHMgPiAwKTsKKwogICAgIGFk
ZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkpOwotICAgIGFkZE91dHB1
dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIDIpKSk7CisgICAgYWRkT3V0cHV0
KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cykpKTsKIAogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlSmF2YVNjcmlwdCk7CiAKQEAgLTEwMiw3
ICsxMDYsNyBAQCB2b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OmluaXRpYWxpemUoKQogICAgIC8v
IFRoZXNlIEF1ZGlvQnVmZmVycyB3aWxsIGJlIGRpcmVjdGx5IGFjY2Vzc2VkIGluIHRoZSBtYWlu
IHRocmVhZCBieSBKYXZhU2NyaXB0LgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyOyAr
K2kpIHsKICAgICAgICAgbV9pbnB1dEJ1ZmZlcnMuYXBwZW5kKEF1ZGlvQnVmZmVyOjpjcmVhdGUo
MiwgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSk7Ci0gICAgICAgIG1fb3V0cHV0QnVmZmVycy5h
cHBlbmQoQXVkaW9CdWZmZXI6OmNyZWF0ZSgyLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpKTsK
KyAgICAgICAgbV9vdXRwdXRCdWZmZXJzLmFwcGVuZChBdWRpb0J1ZmZlcjo6Y3JlYXRlKHRoaXMt
Pm91dHB1dCgwKS0+bnVtYmVyT2ZDaGFubmVscygpLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUp
KTsKICAgICB9CiAKICAgICBBdWRpb05vZGU6OmluaXRpYWxpemUoKTsKQEAgLTE1NSwxNiArMTU5
LDE1IEBAIHZvaWQgSmF2YVNjcmlwdEF1ZGlvTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIHVuc2lnbmVkIG51bWJlck9m
SW5wdXRDaGFubmVscyA9IGlucHV0QnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IG91dHB1dEJ1cy0+bnVtYmVyT2ZDaGFubmVscygp
OwogICAgIAotICAgIGJvb2wgY2hhbm5lbHNBcmVHb29kID0gKG51bWJlck9mSW5wdXRDaGFubmVs
cyA9PSAxIHx8IG51bWJlck9mSW5wdXRDaGFubmVscyA9PSAyKSAmJiBvdXRwdXRCdXMtPm51bWJl
ck9mQ2hhbm5lbHMoKSA9PSAyOworICAgIGJvb2wgY2hhbm5lbHNBcmVHb29kID0gKG51bWJlck9m
SW5wdXRDaGFubmVscyA9PSAxIHx8IG51bWJlck9mSW5wdXRDaGFubmVscyA9PSAyKTsKICAgICBB
U1NFUlQoY2hhbm5lbHNBcmVHb29kKTsKICAgICBpZiAoIWNoYW5uZWxzQXJlR29vZCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgY29uc3QgZmxvYXQqIHNvdXJjZUwgPSBpbnB1dEJ1cy0+Y2hhbm5l
bCgwKS0+ZGF0YSgpOwogICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VSID0gbnVtYmVyT2ZJbnB1dENo
YW5uZWxzID4gMSA/IGlucHV0QnVzLT5jaGFubmVsKDEpLT5kYXRhKCkgOiAwOwotICAgIGZsb2F0
KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7Ci0g
ICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG91dHB1dEJ1cy0+Y2hhbm5lbCgxKS0+bXV0YWJsZURh
dGEoKTsKIAogICAgIC8vIENvcHkgZnJvbSB0aGUgaW5wdXQgdG8gdGhlIGlucHV0IGJ1ZmZlci4g
IFNlZSAiYnVmZmVyc0FyZUdvb2QiIGNoZWNrIGFib3ZlIGZvciBzYWZldHkuCiAgICAgc2l6ZV90
IGJ5dGVzVG9Db3B5ID0gc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2VzczsKQEAgLTE3OCw5
ICsxODEsOSBAQCB2b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1l
c1RvUHJvY2VzcykKICAgICAgICAgbWVtY3B5KGlucHV0QnVmZmVyLT5nZXRDaGFubmVsRGF0YSgx
KS0+ZGF0YSgpICsgbV9idWZmZXJSZWFkV3JpdGVJbmRleCwgc291cmNlTCwgYnl0ZXNUb0NvcHkp
OwogICAgIH0KICAgICAKLSAgICAvLyBDb3B5IGZyb20gdGhlIG91dHB1dCBidWZmZXIgdG8gdGhl
IG91dHB1dC4gIFNlZSAiYnVmZmVyc0FyZUdvb2QiIGNoZWNrIGFib3ZlIGZvciBzYWZldHkuCi0g
ICAgbWVtY3B5KGRlc3RpbmF0aW9uTCwgb3V0cHV0QnVmZmVyLT5nZXRDaGFubmVsRGF0YSgwKS0+
ZGF0YSgpICsgbV9idWZmZXJSZWFkV3JpdGVJbmRleCwgYnl0ZXNUb0NvcHkpOwotICAgIG1lbWNw
eShkZXN0aW5hdGlvblIsIG91dHB1dEJ1ZmZlci0+Z2V0Q2hhbm5lbERhdGEoMSktPmRhdGEoKSAr
IG1fYnVmZmVyUmVhZFdyaXRlSW5kZXgsIGJ5dGVzVG9Db3B5KTsKKyAgICAvLyBDb3B5IGZyb20g
dGhlIG91dHB1dCBidWZmZXIgdG8gdGhlIG91dHB1dC4gCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7ICsraSkKKyAgICAgICAgbWVtY3B5KG91dHB1
dEJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSwgb3V0cHV0QnVmZmVyLT5nZXRDaGFubmVs
RGF0YShpKS0+ZGF0YSgpICsgbV9idWZmZXJSZWFkV3JpdGVJbmRleCwgYnl0ZXNUb0NvcHkpOwog
CiAgICAgLy8gVXBkYXRlIHRoZSBidWZmZXJpbmcgaW5kZXguCiAgICAgbV9idWZmZXJSZWFkV3Jp
dGVJbmRleCA9IChtX2J1ZmZlclJlYWRXcml0ZUluZGV4ICsgZnJhbWVzVG9Qcm9jZXNzKSAlIGJ1
ZmZlclNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
SmF2YVNjcmlwdEF1ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9K
YXZhU2NyaXB0QXVkaW9Ob2RlLmgKaW5kZXggNjUwNDljYjE0NDI4OGZhOWUyYzFjMDRiNDliOWY2
NDdiODgwYWExNS4uYjk0MGUxYThkNWQ2YmM1NDI2OWRkZGU0NGRmNjJkZDkxMjNkZDY4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9O
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVk
aW9Ob2RlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgdmFsdWUgY29u
dHJvbHMgaG93IGZyZXF1ZW50bHkgdGhlIG9uYXVkaW9wcm9jZXNzIGV2ZW50IGhhbmRsZXIgaXMg
Y2FsbGVkIGFuZCBob3cgbWFueSBzYW1wbGUtZnJhbWVzIG5lZWQgdG8gYmUgcHJvY2Vzc2VkIGVh
Y2ggY2FsbC4KICAgICAvLyBMb3dlciBudW1iZXJzIGZvciBidWZmZXJTaXplIHdpbGwgcmVzdWx0
IGluIGEgbG93ZXIgKGJldHRlcikgbGF0ZW5jeS4gSGlnaGVyIG51bWJlcnMgd2lsbCBiZSBuZWNl
c3NhcnkgdG8gYXZvaWQgYXVkaW8gYnJlYWt1cCBhbmQgZ2xpdGNoZXMuCiAgICAgLy8gVGhlIHZh
bHVlIGNob3NlbiBtdXN0IGNhcmVmdWxseSBiYWxhbmNlIGJldHdlZW4gbGF0ZW5jeSBhbmQgYXVk
aW8gcXVhbGl0eS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUs
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRzID0gMSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzID0g
MSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMp
OwogCiAgICAgdmlydHVhbCB+SmF2YVNjcmlwdEF1ZGlvTm9kZSgpOwogCkBAIC04MSw3ICs4MSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IE9WRVJSSURFOwogCi0g
ICAgSmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCBz
aXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0cyk7CisgICAgSmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqLCBmbG9h
dCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIHN0YXRpYyB2
b2lkIGZpcmVQcm9jZXNzRXZlbnREaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSk7CiAgICAgdm9pZCBm
aXJlUHJvY2Vzc0V2ZW50KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>