<?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>112345</bug_id>
          
          <creation_ts>2013-03-14 07:19:39 -0700</creation_ts>
          <short_desc>[CoordGfx] requestAnimationFrame performance issues</short_desc>
          <delta_ts>2013-05-13 13:02:53 -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>WebKit Qt</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>
          <dependson>116055</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Milian Wolff">milian.wolff</reporter>
          <assigned_to name="Noam Rosenthal">noam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>helder.correia</cc>
    
    <cc>jturcotte</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>855178</commentid>
    <comment_count>0</comment_count>
    <who name="Milian Wolff">milian.wolff</who>
    <bug_when>2013-03-14 07:19:39 -0700</bug_when>
    <thetext>See also: https://lists.webkit.org/pipermail/webkit-qt/2013-March/003546.html

Short version is: window.requestAnimationFrame has performance issues on QtWebKit and performs worse than a simple window.setTimeout approach.

Code to reproduce the issue:

``` test.qml ```
import QtQuick 2.0
import QtWebKit 3.0
import QtWebKit.experimental 1.0

WebView {
  id: webView
  height: 500
  width: 500
  url: &quot;test.html&quot;
  experimental {
    preferences.developerExtrasEnabled: true
  }
}
``````

``` test.html ```
&lt;DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;rAF test&lt;/title&gt;
    &lt;script type=&quot;text/javascript&quot;&gt;
      function animateRAF() {
        window.requestAnimationFrame(animateRAF);
      }
      function animateTimer() {
        window.setTimeout(17, animateTimer)
      }
      // abysmal performance
      window.onload = animateRAF;
      // nice performance
      // window.onload = animateTimer;
    &lt;/script&gt;
  &lt;body&gt;
    &lt;h1&gt;rAF test&lt;/h1&gt;
  &lt;/body&gt;
&lt;/html&gt;
``````

The animateRAF version above makes my system noticeably sluggish and I see a high CPU load:
  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM     TIME+ COMMAND                                                                        
25016 milian    20   0 2578m  55m  36m S  54.9  0.7   0:10.93 qmlscene                                                                       
  312 root      20   0  206m  92m  65m S  48.2  1.2   8:41.84 X                                                                              
25024 milian    30  10 1827m  48m  38m S  12.0  0.6   0:01.89 QtWebProcess

Using animateTimer instead I do not see any of the above processed in the top 20 of top at all.

I am using a git checkout of WebKit master with bd8ce398ed4dd2ce92f8db61d7e97b43a534297a, i.e. https://bugs.webkit.org/show_bug.cgi?id=112095 applied. That helped a bit but rAF is still unusable for me.

perf top -G, while running the rAF version of the above, shows this:

-  46.09%  [kernel]                             [k] ioread32                                                                                ◆
   - ioread32                                                                                                                               ▒
      - 53.13% 0xffffffffa05e80f6                                                                                                           ▒
         - 68.79% nouveau_gem_ioctl_pushbuf                                                                                                 ▒
              0xffffffffa02ee3f3                                                                                                            ▒
              do_vfs_ioctl                                                                                                                  ▒
              sys_ioctl                                                                                                                     ▒
              system_call_fastpath                                                                                                          ▒
              __GI___ioctl                                                                                                                  ▒
         - 31.21% nv84_fence_sync                                                                                                           ▒
              nouveau_fence_sync                                                                                                            ▒
              validate_sync.isra.3                                                                                                          ▒
              validate_list                                                                                                                 ▒
              nouveau_gem_ioctl_pushbuf                                                                                                     ▒
              drm_ioctl                                                                                                                     ▒
              do_vfs_ioctl                                                                                                                  ▒
              sys_ioctl                                                                                                                     ▒
              system_call_fastpath                                                                                                          ▒
              __GI___ioctl                                                                                                                  ▒
        34.81% _nouveau_gpuobj_rd32                                                                                                         ▒
           nv84_fence_read                                                                                                                  ▒
           nouveau_fence_done                                                                                                               ▒
        9.60% nouveau_dma_wait                                                                                                              ▒
        1.17% nv50_crtc_cursor_set                                                                                                          ▒
           drm_mode_cursor_ioctl                                                                                                            ▒
           drm_ioctl                                                                                                                        ▒
           do_vfs_ioctl                                                                                                                     ▒
           sys_ioctl                                                                                                                        ▒
           system_call_fastpath                                                                                                             ▒
           __GI___ioctl                                                                                                                     ▒
        0.88% nv50_vm_flush

I.e. the painting seems to be an issue. So apparently rAF triggers excessive repaints. Is this maybe also a driver problem of noveau?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885987</commentid>
    <comment_count>1</comment_count>
      <attachid>200980</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-05-07 14:52:00 -0700</bug_when>
    <thetext>Created attachment 200980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887073</commentid>
    <comment_count>2</comment_count>
      <attachid>201276</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-05-09 14:10:55 -0700</bug_when>
    <thetext>Created attachment 201276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887082</commentid>
    <comment_count>3</comment_count>
      <attachid>201276</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2013-05-09 14:21:25 -0700</bug_when>
    <thetext>Comment on attachment 201276
Patch

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

Very nice patch!

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:436
&gt; +    m_lastAnimationServiceTime = WTF::monotonicallyIncreasingTime();

I think you could pass m_lastAnimationServiceTime as parameter to serviceScriptedAnimations, since in practice we are doing the same work twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887085</commentid>
    <comment_count>4</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-05-09 14:31:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 201276 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201276&amp;action=review
&gt; 
&gt; Very nice patch!
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:436
&gt; &gt; +    m_lastAnimationServiceTime = WTF::monotonicallyIncreasingTime();
&gt; 
&gt; I think you could pass m_lastAnimationServiceTime as parameter to serviceScriptedAnimations, since in practice we are doing the same work twice.

Right, of course :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887112</commentid>
    <comment_count>5</comment_count>
      <attachid>201288</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-05-09 15:17:34 -0700</bug_when>
    <thetext>Created attachment 201288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888193</commentid>
    <comment_count>6</comment_count>
      <attachid>201288</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-05-13 04:53:28 -0700</bug_when>
    <thetext>Comment on attachment 201288
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:664
&gt; +    m_layerFlushTimer.startOneShot(std::max&lt;double&gt;(0., WTF::monotonicallyIncreasingTime() + MinimalTimeoutForAnimations - m_lastAnimationServiceTime));

If we&apos;re 5ms into the frame, I think the timer should be scheduled for 11ms to reach the target, but that&apos;s not what we&apos;ll get here.
Example:
WTF::monotonicallyIncreasingTime() = 37, MinimalTimeoutForAnimations = 16, m_lastAnimationServiceTime = 32.
WTF::monotonicallyIncreasingTime() + MinimalTimeoutForAnimations - m_lastAnimationServiceTime = 37 + 16 - 32 = 21
So maybe it should be: MinimalTimeoutForAnimations - (WTF::monotonicallyIncreasingTime() - m_lastAnimationServiceTime) = 16 - (37 - 32) = 11

I&apos;m also not sure if this can be lower than zero assuming that (WTF::monotonicallyIncreasingTime() &gt;= m_lastAnimationServiceTime) always holds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888199</commentid>
    <comment_count>7</comment_count>
      <attachid>201288</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-05-13 05:13:27 -0700</bug_when>
    <thetext>Comment on attachment 201288
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:664
&gt;&gt; +    m_layerFlushTimer.startOneShot(std::max&lt;double&gt;(0., WTF::monotonicallyIncreasingTime() + MinimalTimeoutForAnimations - m_lastAnimationServiceTime));
&gt; 
&gt; If we&apos;re 5ms into the frame, I think the timer should be scheduled for 11ms to reach the target, but that&apos;s not what we&apos;ll get here.
&gt; Example:
&gt; WTF::monotonicallyIncreasingTime() = 37, MinimalTimeoutForAnimations = 16, m_lastAnimationServiceTime = 32.
&gt; WTF::monotonicallyIncreasingTime() + MinimalTimeoutForAnimations - m_lastAnimationServiceTime = 37 + 16 - 32 = 21
&gt; So maybe it should be: MinimalTimeoutForAnimations - (WTF::monotonicallyIncreasingTime() - m_lastAnimationServiceTime) = 16 - (37 - 32) = 11
&gt; 
&gt; I&apos;m also not sure if this can be lower than zero assuming that (WTF::monotonicallyIncreasingTime() &gt;= m_lastAnimationServiceTime) always holds.

Oops, it should be  + MinimalTimeoutForAnimations + m_lastAnimationServiceTime - WTF::monotonicallyIncreasingTime()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888243</commentid>
    <comment_count>8</comment_count>
      <attachid>201559</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-05-13 07:05:50 -0700</bug_when>
    <thetext>Created attachment 201559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888260</commentid>
    <comment_count>9</comment_count>
      <attachid>201559</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-05-13 07:36:29 -0700</bug_when>
    <thetext>Comment on attachment 201559
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888262</commentid>
    <comment_count>10</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-05-13 07:43:17 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 201559 [details])
&gt; LGTM
Thanks! Based on the webkit summit we&apos;re allowed to r+ patches that touch only port-specific directories (including CoordinatedGraphics) without WK2 owner review. Guess we&apos;re still waiting for the email about it from Sam...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888271</commentid>
    <comment_count>11</comment_count>
      <attachid>201559</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-05-13 07:59:17 -0700</bug_when>
    <thetext>Comment on attachment 201559
Patch

(In reply to comment #10)
&gt; &gt; LGTM
&gt; Thanks! Based on the webkit summit we&apos;re allowed to r+ patches that touch only port-specific directories (including CoordinatedGraphics) without WK2 owner review. Guess we&apos;re still waiting for the email about it from Sam...

Ok, that&apos;s good to know :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888285</commentid>
    <comment_count>12</comment_count>
      <attachid>201559</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-13 08:28:27 -0700</bug_when>
    <thetext>Comment on attachment 201559
Patch

Clearing flags on attachment: 201559

Committed r150015: &lt;http://trac.webkit.org/changeset/150015&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888286</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-13 08:28:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888481</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-05-13 13:00:59 -0700</bug_when>
    <thetext>This patch appears to have caused the following regression on EFL:
http://build.webkit.org/results/EFL%20Linux%2064-bit%20Debug%20WK2/r150018%20(12196)/fast/animation/request-animation-frame-too-rapid-pretty-diff.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200980</attachid>
            <date>2013-05-07 14:52:00 -0700</date>
            <delta_ts>2013-05-09 14:10:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112345-20130507235100.patch</filename>
            <type>text/plain</type>
            <size>11978</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVjZjgwYTFjMjc2YTU0
NDkxZjY0ZTBhMmRmNGNiN2UwNzMyYzM4Mi4uZDMwMjYzMjAzZmFhNGI2YmYxMjViMWM5MWU1Mjdm
ZDZkNmMxYWRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBOb2Ft
IFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29vcmRHZnhdIHJlcXVl
c3RBbmltYXRpb25GcmFtZSBwZXJmb3JtYW5jZSBpc3N1ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgY3VycmVudCByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUgbG9naWMgZnJvbSBDb29yZGluYXRlZEdyYXBoaWNzLiBUaGUgbmV3IGxvZ2ljCisg
ICAgICAgIGlzIGVudGlyZWx5IGluIFdlYktpdDIgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgaW4gZmFzdC9hbmltYXRpb25zLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgorCiAyMDEz
LTA1LTA3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2xlYW4gdXAgS2V5ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDQ4M2FkMjdkNDY2Y2U0YTIxOTRmZjJkYzIzZGI2MmY1NGQ5YTUwY2MuLjZhMzk1YjUwZDQ0
ZWEwZmMxNTZiMTRiOWFhMTNlMDJjMDc2ZmRlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBA
QAorMjAxMy0wNS0wNyAgTm9hbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nvb3JkR2Z4XSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcGVyZm9ybWFuY2UgaXNzdWVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIzNDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIHRo
ZSBsb2dpYyBvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaW4gQ29vcmRpbmF0ZWQgR3JhcGhpY3Mu
CisgICAgICAgIEluc3RlYWQgb2Ygc2VuZGluZyBhbiBJUEMgbWVzc2FnZSBmb3IgZXZlcnkgc2No
ZWR1bGVBbmltYXRpb24oKSBjYWxsLCB3ZSB0aHJvdHRsZSB0aG9zZQorICAgICAgICBjYWxscyBh
bmQgb25seSBzZW5kIHRoZSBJUEMgbWVzc2FnZSBvbmNlIGFmdGVyIGxheW91dCwgaW4gY2FzZSBh
IGNvbW1pdCBtZXNzYWdlIHdhc24ndAorICAgICAgICBzZW5kLgorCisgICAgICAgIFRoaXMgZW5z
dXJlcyB0aGF0IHdlIG1ha2UgYSByb3VuZCB0cmlwIHRvIHRoZSBjb21wb3NpdG9yIGZvciBlYWNo
IGZyYW1lLCBidXQgbm90IGZvciBlYWNoCisgICAgICAgIGZyYW1lIHJlcXVlc3QuCisKKyAgICAg
ICAgVGhpcyBoYXMgc2hvd24gdG8gaW1wcm92ZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcGVyZm9y
bWFuY2UgZnJvbSBiZWluZyA1MCUgc2xvd2VyIHRoYW4gcmVndWxhcgorICAgICAgICB0aW1lb3V0
IHRvIGJlaW5nIG9ubHkgMTIlIHNsb3dlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnJlcXVlc3RBbmltYXRpb25G
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpzY2hlZHVsZUFuaW1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0Lm1lc3NhZ2VzLmluOgorCiAyMDEzLTA1LTA3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgS2V5ZnJhbWVWYWx1ZUxpc3QgYW5k
IHJlbGF0ZWQgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBmZjMwYTVlOGE0NGIwYzZjZDU3MTdmYTNlYzRl
NmViZDMzYzQwZTA1Li4wMzI1MGZmMTI0YzQwMjJjNzA2MDI0NmUzMDA1YTk4N2FkOTY3NzYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcApAQCAtNTksOSArNTksNiBAQCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZShDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbgogICAgIDog
bV9jbGllbnQoY2xpZW50KQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcm9vdExh
eWVySUQoSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJRCkKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpCi0gICAgLCBtX2FuaW1hdGlvbkZyYW1lUmVxdWVzdGVkKGZhbHNlKQotI2Vu
ZGlmCiAgICAgLCBtX2JhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCiAgICAgLCBtX3NldERy
YXdzQmFja2dyb3VuZChmYWxzZSkKIHsKQEAgLTExNiwyOSArMTEzLDggQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cmkKIAogICAgIGlmIChsYXllci0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmlu
Z0FuaW1hdGlvbnMoKSkKICAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVWaWV3cG9ydCwgdGhpcykpOwotCi0jaWYgRU5BQkxF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIGlmIChtX2FuaW1hdGlvbkZyYW1lUmVxdWVz
dGVkKSB7Ci0gICAgICAgIG1fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICAg
ICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjph
bmltYXRpb25GcmFtZVJlYWR5LCB0aGlzKSk7Ci0gICAgfQotI2VuZGlmCiB9CiAKLSNpZiBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6YW5pbWF0aW9uRnJhbWVSZWFkeSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5hbmltYXRpb25GcmFtZVJlYWR5
KCk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZXF1ZXN0QW5pbWF0aW9u
RnJhbWUoKQotewotICAgIG1fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ZWQgPSB0cnVlOwotfQotI2Vu
ZGlmCi0KIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvR3JhcGhpY3NDb250
ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQpCiB7CiAgICAgaWYg
KCFtX3RleHR1cmVNYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmgKaW5kZXggMzA3OTY1MjMxYzNlZmI0NjJiYWNjZjM3ZDY1MTFm
MzVjN2VlNjRmZS4uOWU4M2ZjNWJlMjU2ZWJlMjg2OTQwYjRlODlkOGU5NWYyYzUwMzBlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
aApAQCAtNTMsOSArNTMsNiBAQCBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzsKIGNsYXNz
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50KCkgeyB9Ci0jaWYgRU5BQkxFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKQotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25GcmFtZVJlYWR5KCkg
PSAwOwotI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVWaWV3cG9ydCgpID0gMDsKQEAgLTEwMSwxMCArOTgsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHNldERyYXdz
QmFja2dyb3VuZChib29sIGVuYWJsZSkgeyBtX3NldERyYXdzQmFja2dyb3VuZCA9IGVuYWJsZTsg
fQogCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIHZvaWQgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lKCk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICB2b2lkIHNldFJvb3RM
YXllcklEKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRMYXllclN0YXRlKENvb3Jk
aW5hdGVkTGF5ZXJJRCwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKQEAg
LTEzNyw5ICsxMzAsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaE9uTWFpblRocmVh
ZChjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydCgpOwot
I2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKLSAgICB2b2lkIGFuaW1hdGlvbkZy
YW1lUmVhZHkoKTsKLSNlbmRpZgogICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdm9p
ZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKIApAQCAtMTk0LDkgKzE4NCw2IEBAIHByaXZhdGU6CiAg
ICAgQ29vcmRpbmF0ZWRMYXllcklEIG1fcm9vdExheWVySUQ7CiAgICAgRmxvYXRQb2ludCBtX3Nj
cm9sbFBvc2l0aW9uOwogICAgIEZsb2F0UG9pbnQgbV9yZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9z
aXRpb247Ci0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIGJvb2wgbV9h
bmltYXRpb25GcmFtZVJlcXVlc3RlZDsKLSNlbmRpZgogICAgIENvbG9yIG1fYmFja2dyb3VuZENv
bG9yOwogICAgIGJvb2wgbV9zZXREcmF3c0JhY2tncm91bmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCAxODBlYWNiZWJj
OTk2NjViZTdjYzUxOTViNjdhYjc4NWFlMTZlOWRjLi40ODc3MDAxYzk4NDI4MmQ0NWUyZDQ5MTcx
ZWM1MGE0MGFhZDFiYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC0xNDMsMTQgKzE0Myw4IEBAIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OnJlbmRlck5leHRGcmFtZSgpCiAjaWYgRU5BQkxFKFJFUVVF
U1RfQU5JTUFUSU9OX0ZSQU1FKQogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkKIHsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlcXVlc3RBbmltYXRpb25GcmFtZSwgbV9zY2VuZS5nZXQo
KSkpOwogICAgIHVwZGF0ZVZpZXdwb3J0KCk7CiB9Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHk6OmFuaW1hdGlvbkZyYW1lUmVhZHkoKQotewotICAgIG1fZHJhd2luZ0FyZWFQ
cm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6QW5pbWF0aW9uRnJhbWVSZWFkeSgpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2Uo
KS0+cGFnZUlEKCkpOwotfQogI2VuZGlmCiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OnB1cmdlQmFja2luZ1N0b3JlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAppbmRleCA1ZGRhNWM0MDMxMWJlNGVhOGVmNDVmMmMx
OGU5YWU2YWUyNTZkMWZhLi40MDI1NTBkYWE4OGZkNzQ5YzFhMWU0MmJmNTBiNmZjMGUyYjhhOWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
LmgKQEAgLTc5LDEwICs3OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZpc2libGVDb250ZW50
c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgdHJhamVjdG9yeVZlY3Rvcik7CiAgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lKiBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSBjb25zdCB7IHJldHVybiBtX3NjZW5lLmdl
dCgpOyB9CiAKLSAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQgTWV0aG9kcy4K
LSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAgdmlydHVhbCB2b2lkIGFu
aW1hdGlvbkZyYW1lUmVhZHkoKSBPVkVSUklERTsKLSNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVWaWV3cG9ydCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJh
bWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCkgT1ZF
UlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcAppbmRleCAwOWE3OGU0ZTAzNDNhMTk1NTNkZWY1NTBmMjI4YmM5Yjgw
N2M5OTc3Li5iYjcxMzU4YjYyYmNiZDA5N2U5MDlhYzFlNGFmY2NkNmE4MjYwN2NiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAKQEAgLTk0LDYgKzk0LDcgQEAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSogd2ViUGFnZSkKICAgICAsIG1fbGF5ZXJGbHVzaFNj
aGVkdWxpbmdFbmFibGVkKHRydWUpCiAgICAgLCBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJ
RCgwKQogICAgICwgbV9hbmltYXRpb25zTG9ja2VkKGZhbHNlKQorICAgICwgbV9kaWRSZXF1ZXN0
QW5pbWF0aW9uRnJhbWUoZmFsc2UpCiB7CiAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0
aW5ncygpLT5zZXRTY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQodHJ1ZSk7CiAgICAgbV93ZWJQ
YWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5D
b21wb3NpdG9yKHRydWUpOwpAQCAtMjY4LDYgKzI2OSwxMCBAQCBib29sIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKICAgICAgICAgbV93YWl0aW5n
Rm9yVUlQcm9jZXNzID0gdHJ1ZTsKICAgICAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSBmYWxzZTsK
ICAgICB9CisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgIGVsc2UgaWYg
KG1fZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKQorICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpSZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoKSk7CisjZW5kaWYKIAogICAgIGlmIChtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCkg
ewogICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENh
bGxiYWNrKG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEKSk7CkBAIC02NDksMTEgKzY1NCwx
MCBAQCBHcmFwaGljc0xheWVyRmFjdG9yeSogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpncmFw
aGljc0xheWVyRmFjdG9yeSgpCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQog
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjaGVkdWxlQW5pbWF0aW9uKCkKIHsKLSAg
ICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
OjpSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSk7Ci19CisgICAgaWYgKG1fd2FpdGluZ0ZvclVJUHJv
Y2VzcykKKyAgICAgICAgcmV0dXJuOwogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
YW5pbWF0aW9uRnJhbWVSZWFkeSgpCi17CisgICAgbV9kaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
PSB0cnVlOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDZjMDViYjk4ZTcxYjI4ZTBjOTIxMDZlMmUyYmNiNWU4MzNhMTc1MTUuLjdhYjJmMzJiN2VmZTkw
OTY2YmZmOTYxYmI4Zjc3NWNkNGY0MTRjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xNDcsOSArMTQ3LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGxheWVyRmx1c2hUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdD4qKTsKIAogICAgIHZvaWQgc2NoZWR1bGVSZWxlYXNlSW5h
Y3RpdmVBdGxhc2VzKCk7Ci0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAg
IHZvaWQgYW5pbWF0aW9uRnJhbWVSZWFkeSgpOwotI2VuZGlmCiAKICAgICB2b2lkIHJlbGVhc2VJ
bmFjdGl2ZUF0bGFzZXNUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdD4qKTsKIApAQCAtMjAyLDYgKzE5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xh
eWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZDsKICAgICB1aW50NjRfdCBtX2ZvcmNlUmVwYWludEFz
eW5jQ2FsbGJhY2tJRDsKICAgICBib29sIG1fYW5pbWF0aW9uc0xvY2tlZDsKKyAgICBib29sIG1f
ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KaW5kZXggZTczMjFkYmViYTRhNDc5YTIyNDhkNWE0ZTA2
YjA0YjJjOGZjMmQ5ZS4uZTE3MDViN2VkMThmYTBmMzNiN2E0ZjBjN2Q1YmQ3Mjc1MTZjZTk4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgpAQCAtMjQsOSArMjQsNiBAQCBtZXNzYWdlcyAt
PiBDb29yZGluYXRlZExheWVyVHJlZUhvc3QgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFZpc2li
bGVDb250ZW50c1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgdHJhamVjdG9yeVZlY3RvcnkpCiAgICAgUmVuZGVyTmV4dEZyYW1l
KCkKICAgICBQdXJnZUJhY2tpbmdTdG9yZXMoKQotI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKLSAgICBBbmltYXRpb25GcmFtZVJlYWR5KCkKLSNlbmRpZgogICAgIENvbW1pdFNj
cm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBXZWJDb3JlOjpJbnRTaXplIG9mZnNldCkKIH0K
ICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201276</attachid>
            <date>2013-05-09 14:10:55 -0700</date>
            <delta_ts>2013-05-09 15:17:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112345-20130509230952.patch</filename>
            <type>text/plain</type>
            <size>14194</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJmMDZjZWYzNDcxMzQw
MmY5NDIzMzRhZGYzMDM3NDg0OTEyNDdhOS4uNjUyNTdiYWZkY2JkMjNmODViYjAzYzk5YmI2NTgw
ZjJiMjAwYWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBOb2Ft
IFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29vcmRHZnhdIHJlcXVl
c3RBbmltYXRpb25GcmFtZSBwZXJmb3JtYW5jZSBpc3N1ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgY3VycmVudCByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUgbG9naWMgZnJvbSBDb29yZGluYXRlZEdyYXBoaWNzLiBUaGUgbmV3IGxvZ2ljCisg
ICAgICAgIGlzIGVudGlyZWx5IGluIFdlYktpdDIgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgaW4gZmFzdC9hbmltYXRpb25zLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgorCiAyMDEz
LTA1LTA1ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBHcmFw
aGljc0xheWVycyBzaG91bGQgYmUgYXdhcmUgb2Ygcm91bmRlZCByZWN0IGNsaXBwaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMjY2NGI3ZWI1MzA1MTYzZDZhMzgyODA3YmUwYmYyYzVlNTU0N2Q0MS4uOGJjYWRh
MmJkNzllMmEyOTAwMzNiZWY0ZGM5NTEyMjdkYTRhOTJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDEzLTA1LTA3ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBbQ29vcmRHZnhdIHJlcXVlc3RBbmltYXRpb25GcmFtZSBwZXJmb3JtYW5jZSBpc3N1
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5n
ZWQgdGhlIGxvZ2ljIG9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSBpbiBDb29yZGluYXRlZCBHcmFw
aGljcy4KKyAgICAgICAgV2UgZG9uJ3Qgc2VuZCBhbnkgSVBDIG1lc3NhZ2VzIGZvciByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUuIEluc3RlYWQsIHdlIGRvIG9uZSBvZiB0d28gdGhpbmdzOgorICAgICAg
ICAtIElmIHRoZXJlIGlzIGFscmVhZHkgYSBmcmFtZSBwZW5kaW5nIGluIHRoZSBVSSBwcm9jZXNz
LCBkbyBub3RoaW5nLCBhcyB0aGUgYW5pbWF0aW9ucyB3b3VsZAorICAgICAgICAgIGJlIHNlcnZp
Y2VkIHdoZW4gdGhlIGZyYW1lIGlzIHJldHVybmVkIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAg
ICAgLSBJZiB0aGVyZSBpcyBubyBmcmFtZSBwZW5kaW5nLCB3ZSBzY2hlZHVsZSBhIGZsdXNoLCBt
YWtpbmcgc3VyZSB0aGF0IHRoYXQgZmx1c2ggb2NjdXJzIGF0IAorICAgICAgICAgIGxlYXN0IDEv
NjAgc2Vjb25kcyBhZnRlciB0aGUgbGFzdCBhbmltYXRpb24gc2VydmljZSwgc28gdGhhdCB3ZSBk
b24ndCBnZXQgYW4gaW5maW5pdGUgbG9vcAorICAgICAgICAgIG9mIGZsdXNoZXMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5OjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbjoKKwogMjAxMy0wNS0wOCAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFr
ZSB0aGUgV2ViTmV0d29ya0luZm9NYW5hZ2VyIGEgc3VwcGxlbWVudCB0byB0aGUgV2ViUHJvY2Vz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcAppbmRleCBmZjMwYTVlOGE0NGIwYzZjZDU3MTdmYTNlYzRlNmViZDMzYzQwZTA1Li4w
MzI1MGZmMTI0YzQwMjJjNzA2MDI0NmUzMDA1YTk4N2FkOTY3NzYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNTks
OSArNTksNiBAQCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZShDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbgogICAgIDogbV9jbGllbnQoY2xpZW50
KQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcm9vdExheWVySUQoSW52YWxpZENv
b3JkaW5hdGVkTGF5ZXJJRCkKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0g
ICAgLCBtX2FuaW1hdGlvbkZyYW1lUmVxdWVzdGVkKGZhbHNlKQotI2VuZGlmCiAgICAgLCBtX2Jh
Y2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCiAgICAgLCBtX3NldERyYXdzQmFja2dyb3VuZChm
YWxzZSkKIHsKQEAgLTExNiwyOSArMTEzLDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cmkKIAog
ICAgIGlmIChsYXllci0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSkK
ICAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjp1cGRhdGVWaWV3cG9ydCwgdGhpcykpOwotCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKQotICAgIGlmIChtX2FuaW1hdGlvbkZyYW1lUmVxdWVzdGVkKSB7Ci0gICAgICAg
IG1fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphbmltYXRpb25GcmFtZVJl
YWR5LCB0aGlzKSk7Ci0gICAgfQotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YW5pbWF0aW9uRnJh
bWVSZWFkeSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5hbmltYXRpb25GcmFtZVJlYWR5KCk7Ci19Ci0KLXZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKQotewotICAg
IG1fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ZWQgPSB0cnVlOwotfQotI2VuZGlmCi0KIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQpCiB7CiAgICAgaWYgKCFtX3RleHR1cmVNYXBw
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmgKaW5kZXggMzA3OTY1MjMxYzNlZmI0NjJiYWNjZjM3ZDY1MTFmMzVjN2VlNjRmZS4uOWU4
M2ZjNWJlMjU2ZWJlMjg2OTQwYjRlODlkOGU5NWYyYzUwMzBlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtNTMsOSArNTMs
NiBAQCBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzsKIGNsYXNzIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lQ2xpZW50KCkgeyB9Ci0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25GcmFtZVJlYWR5KCkgPSAwOwotI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyTmV4dEZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9y
dCgpID0gMDsKQEAgLTEwMSwxMCArOTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29s
IGVuYWJsZSkgeyBtX3NldERyYXdzQmFja2dyb3VuZCA9IGVuYWJsZTsgfQogCi0jaWYgRU5BQkxF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KCk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICB2b2lkIHNldFJvb3RMYXllcklEKENvb3JkaW5h
dGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCwg
Y29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKQEAgLTEzNyw5ICsxMzAsNiBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaE9uTWFpblRocmVhZChjb25zdCBGdW5jdGlv
bjx2b2lkKCk+Jik7CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydCgpOwotI2lmIEVOQUJMRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkKLSAgICB2b2lkIGFuaW1hdGlvbkZyYW1lUmVhZHkoKTsKLSNl
bmRpZgogICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdT
dG9yZXMoKTsKIApAQCAtMTk0LDkgKzE4NCw2IEBAIHByaXZhdGU6CiAgICAgQ29vcmRpbmF0ZWRM
YXllcklEIG1fcm9vdExheWVySUQ7CiAgICAgRmxvYXRQb2ludCBtX3Njcm9sbFBvc2l0aW9uOwog
ICAgIEZsb2F0UG9pbnQgbV9yZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb247Ci0jaWYgRU5B
QkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIGJvb2wgbV9hbmltYXRpb25GcmFtZVJl
cXVlc3RlZDsKLSNlbmRpZgogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wg
bV9zZXREcmF3c0JhY2tncm91bmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCAxODBlYWNiZWJjOTk2NjViZTdjYzUxOTVi
NjdhYjc4NWFlMTZlOWRjLi5lYmU5NDg0MjRkYmEyOTliNGE4Yjc5YmMzZTg5NDhhOTk3NzdlNDBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkuY3BwCkBAIC0xNDAsMTkgKzE0MCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OnJlbmRlck5leHRGcmFtZSgpCiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCkt
PnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpSZW5k
ZXJOZXh0RnJhbWUoKSwgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKIH0K
IAotI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKLXZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHk6OnJlcXVlc3RBbmltYXRpb25GcmFtZSgpCi17Ci0gICAgZGlzcGF0
Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZXF1ZXN0QW5pbWF0aW9u
RnJhbWUsIG1fc2NlbmUuZ2V0KCkpKTsKLSAgICB1cGRhdGVWaWV3cG9ydCgpOwotfQotCi12b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjphbmltYXRpb25GcmFtZVJlYWR5KCkKLXsK
LSAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkFuaW1hdGlvbkZyYW1lUmVhZHkoKSwgbV9kcmF3
aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKLX0KLSNlbmRpZgotCiB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewogICAgIG1f
ZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6UHVyZ2VCYWNraW5nU3RvcmVzKCksIG1fZHJhd2luZ0FyZWFQ
cm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuaAppbmRleCA1ZGRhNWM0MDMxMWJlNGVhOGVmNDVmMmMxOGU5
YWU2YWUyNTZkMWZhLi40NjZkZWE0NTRjYTljNWVkODZhNTQxYjc0OGE1MTEyOGZiNmQ4MTJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgK
QEAgLTcxLDE4ICs3MSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbW1pdENvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsK
ICAgICB2b2lkIHNldEFuaW1hdGlvbnNMb2NrZWQoYm9vbCk7Ci0jaWYgRU5BQkxFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKQotICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7Ci0jZW5k
aWYKICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwog
CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpOwogICAgIFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
KCkgY29uc3QgeyByZXR1cm4gbV9zY2VuZS5nZXQoKTsgfQogCi0gICAgLy8gQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lQ2xpZW50IE1ldGhvZHMuCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25GcmFtZVJlYWR5KCkgT1ZFUlJJREU7
Ci0jZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlld3BvcnQoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBmM2FhNThlNjEwN2JhNTI5YmI4Njc3Yzg2MDc0ZGUwODY2NjJhMTM1Li44NTVhY2VlYmQ3OGU2
MDY4MmY1MjdjY2Q4MDFmMjBmNGIyZTA4ZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzUs
MTEgKzM1LDYgQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgewog
ICAgIFVwZGF0ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlELCBXZWJLaXQ6OldlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKICAgICBDbGVhckltYWdlQmFja2luZ0NvbnRl
bnRzKHVpbnQ2NF90IGltYWdlSUQpCiAgICAgUmVtb3ZlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGlt
YWdlSUQpCi0KLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAgUmVxdWVz
dEFuaW1hdGlvbkZyYW1lKCkKLSNlbmRpZgotCiAgICAgU2V0QmFja2dyb3VuZENvbG9yKFdlYkNv
cmU6OkNvbG9yIGNvbG9yKQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCAwOWE3OGU0ZTAzNDNh
MTk1NTNkZWY1NTBmMjI4YmM5YjgwN2M5OTc3Li41ZjU4ZWQ2NWI5OGEzYmIzOWRlZTY4YmViZDc2
NTc2ZTNiN2Q3YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTk0LDYgKzk0LDkgQEAgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSogd2ViUGFnZSkK
ICAgICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUpCiAgICAgLCBtX2ZvcmNl
UmVwYWludEFzeW5jQ2FsbGJhY2tJRCgwKQogICAgICwgbV9hbmltYXRpb25zTG9ja2VkKGZhbHNl
KQorI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICAsIG1fbGFzdEFuaW1h
dGlvblNlcnZpY2VUaW1lKDApCisjZW5kaWYKIHsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnNldHRpbmdzKCktPnNldFNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCh0cnVlKTsKICAgICBt
X3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CkBAIC0xMzksNyArMTQyLDcgQEAgdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNjaGVkdWxlTGF5ZXJGbHVzaCgpCiAgICAgaWYgKCFtX2xheWVyRmx1
c2hTY2hlZHVsaW5nRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2xheWVy
Rmx1c2hUaW1lci5pc0FjdGl2ZSgpKQorICAgIGlmICghbV9sYXllckZsdXNoVGltZXIuaXNBY3Rp
dmUoKSB8fCBtX2xheWVyRmx1c2hUaW1lci5uZXh0RmlyZUludGVydmFsKCkgPiAwKQogICAgICAg
ICBtX2xheWVyRmx1c2hUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKQEAgLTQzMCw2ICs0MzMs
NyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c3luY0Rpc3BsYXlTdGF0ZSgpCiAj
aWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAmJiAhVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX1RJTUVSKSAmJiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlf
TU9OSVRPUikKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgcHJldmlvdXNseSByZWdpc3RlcmVk
IGFuaW1hdGlvbiBjYWxsYmFja3MgYXJlIGJlaW5nIGV4ZWN1dGVkIGJlZm9yZSB3ZSBmbHVzaCB0
aGUgbGF5ZXJzLgogICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXco
KS0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhjdXJyZW50VGltZSgpKTsKKyAgICBtX2xhc3RB
bmltYXRpb25TZXJ2aWNlVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7
CiAjZW5kaWYKIAogICAgIG1fd2ViUGFnZS0+bGF5b3V0SWZOZWVkZWQoKTsKQEAgLTY0OSwxMSAr
NjUzLDE1IEBAIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJB
TUUpCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2NoZWR1bGVBbmltYXRpb24oKQog
ewotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OlJlcXVlc3RBbmltYXRpb25GcmFtZSgpKTsKLX0KKyAgICBpZiAobV93YWl0aW5nRm9y
VUlQcm9jZXNzKQorICAgICAgICByZXR1cm47CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjphbmltYXRpb25GcmFtZVJlYWR5KCkKLXsKKyAgICBpZiAobV9sYXllckZsdXNoVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc3BlYywgckFGIGNhbGxiYWNrcyBzaG91bGQgbm90IGJlIGZh
c3RlciB0aGFuIDYwRlBTLgorICAgIHN0YXRpYyBjb25zdCBkb3VibGUgTWluaW1hbFRpbWVvdXRG
b3JBbmltYXRpb25zID0gMS4gLyA2MC47CisgICAgbV9sYXllckZsdXNoVGltZXIuc3RhcnRPbmVT
aG90KHN0ZDo6bWF4PGRvdWJsZT4oMC4sIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkgKyBNaW5pbWFsVGltZW91dEZvckFuaW1hdGlvbnMgLSBtX2xhc3RBbmltYXRpb25TZXJ2aWNl
VGltZSkpOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDZjMDViYjk4ZTcxYjI4ZTBjOTIxMDZlMmUyYmNiNWU4MzNhMTc1MTUuLjA1ZDYxYmFhNDE4YTNk
MzM2NjRlOWNjZmRmNTdjZTAxMDAwNGE1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xNDcsOSArMTQ3LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGxheWVyRmx1c2hUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdD4qKTsKIAogICAgIHZvaWQgc2NoZWR1bGVSZWxlYXNlSW5h
Y3RpdmVBdGxhc2VzKCk7Ci0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAg
IHZvaWQgYW5pbWF0aW9uRnJhbWVSZWFkeSgpOwotI2VuZGlmCiAKICAgICB2b2lkIHJlbGVhc2VJ
bmFjdGl2ZUF0bGFzZXNUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdD4qKTsKIApAQCAtMjAyLDYgKzE5OSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9s
YXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7CiAgICAgdWludDY0X3QgbV9mb3JjZVJlcGFpbnRB
c3luY0NhbGxiYWNrSUQ7CiAgICAgYm9vbCBtX2FuaW1hdGlvbnNMb2NrZWQ7CisKKyNpZiBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgZG91YmxlIG1fbGFzdEFuaW1hdGlvblNl
cnZpY2VUaW1lOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5tZXNzYWdlcy5pbgppbmRleCBlNzMyMWRiZWJhNGE0NzlhMjI0OGQ1YTRlMDZiMDRiMmM4
ZmMyZDllLi5lMTcwNWI3ZWQxOGZhMGYzM2I3YTRmMGM3ZDViZDcyNzUxNmNlOThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Lm1lc3NhZ2VzLmluCkBAIC0yNCw5ICsyNCw2IEBAIG1lc3NhZ2VzIC0+IENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdCBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0VmlzaWJsZUNvbnRl
bnRzUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCwgV2ViQ29yZTo6
RmxvYXRQb2ludCB0cmFqZWN0b3J5VmVjdG9yeSkKICAgICBSZW5kZXJOZXh0RnJhbWUoKQogICAg
IFB1cmdlQmFja2luZ1N0b3JlcygpCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQotICAgIEFuaW1hdGlvbkZyYW1lUmVhZHkoKQotI2VuZGlmCiAgICAgQ29tbWl0U2Nyb2xsT2Zm
c2V0KHVpbnQzMl90IGxheWVySUQsIFdlYkNvcmU6OkludFNpemUgb2Zmc2V0KQogfQogI2VuZGlm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201288</attachid>
            <date>2013-05-09 15:17:34 -0700</date>
            <delta_ts>2013-05-13 07:05:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112345-20130510001631.patch</filename>
            <type>text/plain</type>
            <size>14301</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJmMDZjZWYzNDcxMzQw
MmY5NDIzMzRhZGYzMDM3NDg0OTEyNDdhOS4uNjUyNTdiYWZkY2JkMjNmODViYjAzYzk5YmI2NTgw
ZjJiMjAwYWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBOb2Ft
IFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29vcmRHZnhdIHJlcXVl
c3RBbmltYXRpb25GcmFtZSBwZXJmb3JtYW5jZSBpc3N1ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgY3VycmVudCByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUgbG9naWMgZnJvbSBDb29yZGluYXRlZEdyYXBoaWNzLiBUaGUgbmV3IGxvZ2ljCisg
ICAgICAgIGlzIGVudGlyZWx5IGluIFdlYktpdDIgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgaW4gZmFzdC9hbmltYXRpb25zLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgorCiAyMDEz
LTA1LTA1ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBHcmFw
aGljc0xheWVycyBzaG91bGQgYmUgYXdhcmUgb2Ygcm91bmRlZCByZWN0IGNsaXBwaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMjY2NGI3ZWI1MzA1MTYzZDZhMzgyODA3YmUwYmYyYzVlNTU0N2Q0MS4uOGJjYWRh
MmJkNzllMmEyOTAwMzNiZWY0ZGM5NTEyMjdkYTRhOTJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDEzLTA1LTA3ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBbQ29vcmRHZnhdIHJlcXVlc3RBbmltYXRpb25GcmFtZSBwZXJmb3JtYW5jZSBpc3N1
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5n
ZWQgdGhlIGxvZ2ljIG9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSBpbiBDb29yZGluYXRlZCBHcmFw
aGljcy4KKyAgICAgICAgV2UgZG9uJ3Qgc2VuZCBhbnkgSVBDIG1lc3NhZ2VzIGZvciByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUuIEluc3RlYWQsIHdlIGRvIG9uZSBvZiB0d28gdGhpbmdzOgorICAgICAg
ICAtIElmIHRoZXJlIGlzIGFscmVhZHkgYSBmcmFtZSBwZW5kaW5nIGluIHRoZSBVSSBwcm9jZXNz
LCBkbyBub3RoaW5nLCBhcyB0aGUgYW5pbWF0aW9ucyB3b3VsZAorICAgICAgICAgIGJlIHNlcnZp
Y2VkIHdoZW4gdGhlIGZyYW1lIGlzIHJldHVybmVkIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAg
ICAgLSBJZiB0aGVyZSBpcyBubyBmcmFtZSBwZW5kaW5nLCB3ZSBzY2hlZHVsZSBhIGZsdXNoLCBt
YWtpbmcgc3VyZSB0aGF0IHRoYXQgZmx1c2ggb2NjdXJzIGF0IAorICAgICAgICAgIGxlYXN0IDEv
NjAgc2Vjb25kcyBhZnRlciB0aGUgbGFzdCBhbmltYXRpb24gc2VydmljZSwgc28gdGhhdCB3ZSBk
b24ndCBnZXQgYW4gaW5maW5pdGUgbG9vcAorICAgICAgICAgIG9mIGZsdXNoZXMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5OjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbjoKKwogMjAxMy0wNS0wOCAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFr
ZSB0aGUgV2ViTmV0d29ya0luZm9NYW5hZ2VyIGEgc3VwcGxlbWVudCB0byB0aGUgV2ViUHJvY2Vz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcAppbmRleCBmZjMwYTVlOGE0NGIwYzZjZDU3MTdmYTNlYzRlNmViZDMzYzQwZTA1Li4w
MzI1MGZmMTI0YzQwMjJjNzA2MDI0NmUzMDA1YTk4N2FkOTY3NzYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNTks
OSArNTksNiBAQCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZShDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbgogICAgIDogbV9jbGllbnQoY2xpZW50
KQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcm9vdExheWVySUQoSW52YWxpZENv
b3JkaW5hdGVkTGF5ZXJJRCkKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0g
ICAgLCBtX2FuaW1hdGlvbkZyYW1lUmVxdWVzdGVkKGZhbHNlKQotI2VuZGlmCiAgICAgLCBtX2Jh
Y2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCiAgICAgLCBtX3NldERyYXdzQmFja2dyb3VuZChm
YWxzZSkKIHsKQEAgLTExNiwyOSArMTEzLDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cmkKIAog
ICAgIGlmIChsYXllci0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSkK
ICAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjp1cGRhdGVWaWV3cG9ydCwgdGhpcykpOwotCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKQotICAgIGlmIChtX2FuaW1hdGlvbkZyYW1lUmVxdWVzdGVkKSB7Ci0gICAgICAg
IG1fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphbmltYXRpb25GcmFtZVJl
YWR5LCB0aGlzKSk7Ci0gICAgfQotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YW5pbWF0aW9uRnJh
bWVSZWFkeSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5hbmltYXRpb25GcmFtZVJlYWR5KCk7Ci19Ci0KLXZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKQotewotICAg
IG1fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ZWQgPSB0cnVlOwotfQotI2VuZGlmCi0KIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQpCiB7CiAgICAgaWYgKCFtX3RleHR1cmVNYXBw
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmgKaW5kZXggMzA3OTY1MjMxYzNlZmI0NjJiYWNjZjM3ZDY1MTFmMzVjN2VlNjRmZS4uOWU4
M2ZjNWJlMjU2ZWJlMjg2OTQwYjRlODlkOGU5NWYyYzUwMzBlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtNTMsOSArNTMs
NiBAQCBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzsKIGNsYXNzIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lQ2xpZW50KCkgeyB9Ci0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25GcmFtZVJlYWR5KCkgPSAwOwotI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyTmV4dEZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9y
dCgpID0gMDsKQEAgLTEwMSwxMCArOTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29s
IGVuYWJsZSkgeyBtX3NldERyYXdzQmFja2dyb3VuZCA9IGVuYWJsZTsgfQogCi0jaWYgRU5BQkxF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KCk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICB2b2lkIHNldFJvb3RMYXllcklEKENvb3JkaW5h
dGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCwg
Y29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKQEAgLTEzNyw5ICsxMzAsNiBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaE9uTWFpblRocmVhZChjb25zdCBGdW5jdGlv
bjx2b2lkKCk+Jik7CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydCgpOwotI2lmIEVOQUJMRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkKLSAgICB2b2lkIGFuaW1hdGlvbkZyYW1lUmVhZHkoKTsKLSNl
bmRpZgogICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdT
dG9yZXMoKTsKIApAQCAtMTk0LDkgKzE4NCw2IEBAIHByaXZhdGU6CiAgICAgQ29vcmRpbmF0ZWRM
YXllcklEIG1fcm9vdExheWVySUQ7CiAgICAgRmxvYXRQb2ludCBtX3Njcm9sbFBvc2l0aW9uOwog
ICAgIEZsb2F0UG9pbnQgbV9yZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb247Ci0jaWYgRU5B
QkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIGJvb2wgbV9hbmltYXRpb25GcmFtZVJl
cXVlc3RlZDsKLSNlbmRpZgogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wg
bV9zZXREcmF3c0JhY2tncm91bmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCAxODBlYWNiZWJjOTk2NjViZTdjYzUxOTVi
NjdhYjc4NWFlMTZlOWRjLi5lYmU5NDg0MjRkYmEyOTliNGE4Yjc5YmMzZTg5NDhhOTk3NzdlNDBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkuY3BwCkBAIC0xNDAsMTkgKzE0MCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OnJlbmRlck5leHRGcmFtZSgpCiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCkt
PnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpSZW5k
ZXJOZXh0RnJhbWUoKSwgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKIH0K
IAotI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKLXZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHk6OnJlcXVlc3RBbmltYXRpb25GcmFtZSgpCi17Ci0gICAgZGlzcGF0
Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZXF1ZXN0QW5pbWF0aW9u
RnJhbWUsIG1fc2NlbmUuZ2V0KCkpKTsKLSAgICB1cGRhdGVWaWV3cG9ydCgpOwotfQotCi12b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjphbmltYXRpb25GcmFtZVJlYWR5KCkKLXsK
LSAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkFuaW1hdGlvbkZyYW1lUmVhZHkoKSwgbV9kcmF3
aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKLX0KLSNlbmRpZgotCiB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewogICAgIG1f
ZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6UHVyZ2VCYWNraW5nU3RvcmVzKCksIG1fZHJhd2luZ0FyZWFQ
cm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuaAppbmRleCA1ZGRhNWM0MDMxMWJlNGVhOGVmNDVmMmMxOGU5
YWU2YWUyNTZkMWZhLi40NjZkZWE0NTRjYTljNWVkODZhNTQxYjc0OGE1MTEyOGZiNmQ4MTJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgK
QEAgLTcxLDE4ICs3MSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbW1pdENvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsK
ICAgICB2b2lkIHNldEFuaW1hdGlvbnNMb2NrZWQoYm9vbCk7Ci0jaWYgRU5BQkxFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKQotICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7Ci0jZW5k
aWYKICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwog
CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpOwogICAgIFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
KCkgY29uc3QgeyByZXR1cm4gbV9zY2VuZS5nZXQoKTsgfQogCi0gICAgLy8gQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lQ2xpZW50IE1ldGhvZHMuCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25GcmFtZVJlYWR5KCkgT1ZFUlJJREU7
Ci0jZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlld3BvcnQoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBmM2FhNThlNjEwN2JhNTI5YmI4Njc3Yzg2MDc0ZGUwODY2NjJhMTM1Li44NTVhY2VlYmQ3OGU2
MDY4MmY1MjdjY2Q4MDFmMjBmNGIyZTA4ZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzUs
MTEgKzM1LDYgQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgewog
ICAgIFVwZGF0ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlELCBXZWJLaXQ6OldlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKICAgICBDbGVhckltYWdlQmFja2luZ0NvbnRl
bnRzKHVpbnQ2NF90IGltYWdlSUQpCiAgICAgUmVtb3ZlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGlt
YWdlSUQpCi0KLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAgUmVxdWVz
dEFuaW1hdGlvbkZyYW1lKCkKLSNlbmRpZgotCiAgICAgU2V0QmFja2dyb3VuZENvbG9yKFdlYkNv
cmU6OkNvbG9yIGNvbG9yKQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCAwOWE3OGU0ZTAzNDNh
MTk1NTNkZWY1NTBmMjI4YmM5YjgwN2M5OTc3Li43M2FmMWNkZmU1ODg1MTc5N2Q2ZDA1MjY0YjFj
MmUwOGFkZjY4Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTk0LDYgKzk0LDkgQEAgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSogd2ViUGFnZSkK
ICAgICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUpCiAgICAgLCBtX2ZvcmNl
UmVwYWludEFzeW5jQ2FsbGJhY2tJRCgwKQogICAgICwgbV9hbmltYXRpb25zTG9ja2VkKGZhbHNl
KQorI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICAsIG1fbGFzdEFuaW1h
dGlvblNlcnZpY2VUaW1lKDApCisjZW5kaWYKIHsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnNldHRpbmdzKCktPnNldFNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCh0cnVlKTsKICAgICBt
X3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CkBAIC0xMzksNyArMTQyLDcgQEAgdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNjaGVkdWxlTGF5ZXJGbHVzaCgpCiAgICAgaWYgKCFtX2xheWVyRmx1
c2hTY2hlZHVsaW5nRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2xheWVy
Rmx1c2hUaW1lci5pc0FjdGl2ZSgpKQorICAgIGlmICghbV9sYXllckZsdXNoVGltZXIuaXNBY3Rp
dmUoKSB8fCBtX2xheWVyRmx1c2hUaW1lci5uZXh0RmlyZUludGVydmFsKCkgPiAwKQogICAgICAg
ICBtX2xheWVyRmx1c2hUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKQEAgLTQyOSw3ICs0MzIs
OCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c3luY0Rpc3BsYXlTdGF0ZSgpCiB7
CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAmJiAhVVNFKFJFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FX1RJTUVSKSAmJiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BM
QVlfTU9OSVRPUikKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgcHJldmlvdXNseSByZWdpc3Rl
cmVkIGFuaW1hdGlvbiBjYWxsYmFja3MgYXJlIGJlaW5nIGV4ZWN1dGVkIGJlZm9yZSB3ZSBmbHVz
aCB0aGUgbGF5ZXJzLgotICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZp
ZXcoKS0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhjdXJyZW50VGltZSgpKTsKKyAgICBtX2xh
c3RBbmltYXRpb25TZXJ2aWNlVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7CisgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5zZXJ2
aWNlU2NyaXB0ZWRBbmltYXRpb25zKG1fbGFzdEFuaW1hdGlvblNlcnZpY2VUaW1lKTsKICNlbmRp
ZgogCiAgICAgbV93ZWJQYWdlLT5sYXlvdXRJZk5lZWRlZCgpOwpAQCAtNjQ5LDExICs2NTMsMTUg
QEAgR3JhcGhpY3NMYXllckZhY3RvcnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhp
Y3NMYXllckZhY3RvcnkoKQogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKIHZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY2hlZHVsZUFuaW1hdGlvbigpCiB7Ci0gICAg
bV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkpOwotfQorICAgIGlmIChtX3dhaXRpbmdGb3JVSVByb2Nl
c3MpCisgICAgICAgIHJldHVybjsKIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmFu
aW1hdGlvbkZyYW1lUmVhZHkoKQoteworICAgIGlmIChtX2xheWVyRmx1c2hUaW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHJlcXVlc3RB
bmltYXRpb25GcmFtZSBzcGVjLCByQUYgY2FsbGJhY2tzIHNob3VsZCBub3QgYmUgZmFzdGVyIHRo
YW4gNjBGUFMuCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBNaW5pbWFsVGltZW91dEZvckFuaW1h
dGlvbnMgPSAxLiAvIDYwLjsKKyAgICBtX2xheWVyRmx1c2hUaW1lci5zdGFydE9uZVNob3Qoc3Rk
OjptYXg8ZG91YmxlPigwLiwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSArIE1p
bmltYWxUaW1lb3V0Rm9yQW5pbWF0aW9ucyAtIG1fbGFzdEFuaW1hdGlvblNlcnZpY2VUaW1lKSk7
CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggNmMwNWJi
OThlNzFiMjhlMGM5MjEwNmUyZTJiY2I1ZTgzM2ExNzUxNS4uMDVkNjFiYWE0MThhM2QzMzY2NGU5
Y2NmZGY1N2NlMDEwMDA0YTVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTE0Nyw5ICsxNDcsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgbGF5ZXJGbHVzaFRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8Q29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0PiopOwogCiAgICAgdm9pZCBzY2hlZHVsZVJlbGVhc2VJbmFjdGl2ZUF0
bGFzZXMoKTsKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAgdm9pZCBh
bmltYXRpb25GcmFtZVJlYWR5KCk7Ci0jZW5kaWYKIAogICAgIHZvaWQgcmVsZWFzZUluYWN0aXZl
QXRsYXNlc1RpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
PiopOwogCkBAIC0yMDIsNiArMTk5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xheWVyRmx1
c2hTY2hlZHVsaW5nRW5hYmxlZDsKICAgICB1aW50NjRfdCBtX2ZvcmNlUmVwYWludEFzeW5jQ2Fs
bGJhY2tJRDsKICAgICBib29sIG1fYW5pbWF0aW9uc0xvY2tlZDsKKworI2lmIEVOQUJMRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uU2VydmljZVRp
bWU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1l
c3NhZ2VzLmluCmluZGV4IGU3MzIxZGJlYmE0YTQ3OWEyMjQ4ZDVhNGUwNmIwNGIyYzhmYzJkOWUu
LmUxNzA1YjdlZDE4ZmEwZjMzYjdhNGYwYzdkNWJkNzI3NTE2Y2U5OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QubWVzc2FnZXMuaW4KQEAgLTI0LDkgKzI0LDYgQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRWaXNpYmxlQ29udGVudHNSZWN0
KFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0LCBXZWJDb3JlOjpGbG9hdFBv
aW50IHRyYWplY3RvcnlWZWN0b3J5KQogICAgIFJlbmRlck5leHRGcmFtZSgpCiAgICAgUHVyZ2VC
YWNraW5nU3RvcmVzKCkKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAg
QW5pbWF0aW9uRnJhbWVSZWFkeSgpCi0jZW5kaWYKICAgICBDb21taXRTY3JvbGxPZmZzZXQodWlu
dDMyX3QgbGF5ZXJJRCwgV2ViQ29yZTo6SW50U2l6ZSBvZmZzZXQpCiB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201559</attachid>
            <date>2013-05-13 07:05:50 -0700</date>
            <delta_ts>2013-05-13 08:28:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112345-20130513170448.patch</filename>
            <type>text/plain</type>
            <size>14301</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJmMDZjZWYzNDcxMzQw
MmY5NDIzMzRhZGYzMDM3NDg0OTEyNDdhOS4uNjUyNTdiYWZkY2JkMjNmODViYjAzYzk5YmI2NTgw
ZjJiMjAwYWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBOb2Ft
IFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29vcmRHZnhdIHJlcXVl
c3RBbmltYXRpb25GcmFtZSBwZXJmb3JtYW5jZSBpc3N1ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgY3VycmVudCByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUgbG9naWMgZnJvbSBDb29yZGluYXRlZEdyYXBoaWNzLiBUaGUgbmV3IGxvZ2ljCisg
ICAgICAgIGlzIGVudGlyZWx5IGluIFdlYktpdDIgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgaW4gZmFzdC9hbmltYXRpb25zLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgorCiAyMDEz
LTA1LTA1ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBHcmFw
aGljc0xheWVycyBzaG91bGQgYmUgYXdhcmUgb2Ygcm91bmRlZCByZWN0IGNsaXBwaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMjY2NGI3ZWI1MzA1MTYzZDZhMzgyODA3YmUwYmYyYzVlNTU0N2Q0MS4uOGJjYWRh
MmJkNzllMmEyOTAwMzNiZWY0ZGM5NTEyMjdkYTRhOTJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDEzLTA1LTA3ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBbQ29vcmRHZnhdIHJlcXVlc3RBbmltYXRpb25GcmFtZSBwZXJmb3JtYW5jZSBpc3N1
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5n
ZWQgdGhlIGxvZ2ljIG9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSBpbiBDb29yZGluYXRlZCBHcmFw
aGljcy4KKyAgICAgICAgV2UgZG9uJ3Qgc2VuZCBhbnkgSVBDIG1lc3NhZ2VzIGZvciByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUuIEluc3RlYWQsIHdlIGRvIG9uZSBvZiB0d28gdGhpbmdzOgorICAgICAg
ICAtIElmIHRoZXJlIGlzIGFscmVhZHkgYSBmcmFtZSBwZW5kaW5nIGluIHRoZSBVSSBwcm9jZXNz
LCBkbyBub3RoaW5nLCBhcyB0aGUgYW5pbWF0aW9ucyB3b3VsZAorICAgICAgICAgIGJlIHNlcnZp
Y2VkIHdoZW4gdGhlIGZyYW1lIGlzIHJldHVybmVkIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAg
ICAgLSBJZiB0aGVyZSBpcyBubyBmcmFtZSBwZW5kaW5nLCB3ZSBzY2hlZHVsZSBhIGZsdXNoLCBt
YWtpbmcgc3VyZSB0aGF0IHRoYXQgZmx1c2ggb2NjdXJzIGF0IAorICAgICAgICAgIGxlYXN0IDEv
NjAgc2Vjb25kcyBhZnRlciB0aGUgbGFzdCBhbmltYXRpb24gc2VydmljZSwgc28gdGhhdCB3ZSBk
b24ndCBnZXQgYW4gaW5maW5pdGUgbG9vcAorICAgICAgICAgIG9mIGZsdXNoZXMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5OjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbjoKKwogMjAxMy0wNS0wOCAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFr
ZSB0aGUgV2ViTmV0d29ya0luZm9NYW5hZ2VyIGEgc3VwcGxlbWVudCB0byB0aGUgV2ViUHJvY2Vz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcAppbmRleCBmZjMwYTVlOGE0NGIwYzZjZDU3MTdmYTNlYzRlNmViZDMzYzQwZTA1Li4w
MzI1MGZmMTI0YzQwMjJjNzA2MDI0NmUzMDA1YTk4N2FkOTY3NzYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNTks
OSArNTksNiBAQCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZShDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbgogICAgIDogbV9jbGllbnQoY2xpZW50
KQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcm9vdExheWVySUQoSW52YWxpZENv
b3JkaW5hdGVkTGF5ZXJJRCkKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0g
ICAgLCBtX2FuaW1hdGlvbkZyYW1lUmVxdWVzdGVkKGZhbHNlKQotI2VuZGlmCiAgICAgLCBtX2Jh
Y2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCiAgICAgLCBtX3NldERyYXdzQmFja2dyb3VuZChm
YWxzZSkKIHsKQEAgLTExNiwyOSArMTEzLDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cmkKIAog
ICAgIGlmIChsYXllci0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSkK
ICAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjp1cGRhdGVWaWV3cG9ydCwgdGhpcykpOwotCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKQotICAgIGlmIChtX2FuaW1hdGlvbkZyYW1lUmVxdWVzdGVkKSB7Ci0gICAgICAg
IG1fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphbmltYXRpb25GcmFtZVJl
YWR5LCB0aGlzKSk7Ci0gICAgfQotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YW5pbWF0aW9uRnJh
bWVSZWFkeSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5hbmltYXRpb25GcmFtZVJlYWR5KCk7Ci19Ci0KLXZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKQotewotICAg
IG1fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0ZWQgPSB0cnVlOwotfQotI2VuZGlmCi0KIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQpCiB7CiAgICAgaWYgKCFtX3RleHR1cmVNYXBw
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmgKaW5kZXggMzA3OTY1MjMxYzNlZmI0NjJiYWNjZjM3ZDY1MTFmMzVjN2VlNjRmZS4uOWU4
M2ZjNWJlMjU2ZWJlMjg2OTQwYjRlODlkOGU5NWYyYzUwMzBlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtNTMsOSArNTMs
NiBAQCBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzsKIGNsYXNzIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lQ2xpZW50KCkgeyB9Ci0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25GcmFtZVJlYWR5KCkgPSAwOwotI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyTmV4dEZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9y
dCgpID0gMDsKQEAgLTEwMSwxMCArOTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29s
IGVuYWJsZSkgeyBtX3NldERyYXdzQmFja2dyb3VuZCA9IGVuYWJsZTsgfQogCi0jaWYgRU5BQkxF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KCk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICB2b2lkIHNldFJvb3RMYXllcklEKENvb3JkaW5h
dGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCwg
Y29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKQEAgLTEzNyw5ICsxMzAsNiBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaE9uTWFpblRocmVhZChjb25zdCBGdW5jdGlv
bjx2b2lkKCk+Jik7CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydCgpOwotI2lmIEVOQUJMRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkKLSAgICB2b2lkIGFuaW1hdGlvbkZyYW1lUmVhZHkoKTsKLSNl
bmRpZgogICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdT
dG9yZXMoKTsKIApAQCAtMTk0LDkgKzE4NCw2IEBAIHByaXZhdGU6CiAgICAgQ29vcmRpbmF0ZWRM
YXllcklEIG1fcm9vdExheWVySUQ7CiAgICAgRmxvYXRQb2ludCBtX3Njcm9sbFBvc2l0aW9uOwog
ICAgIEZsb2F0UG9pbnQgbV9yZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb247Ci0jaWYgRU5B
QkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIGJvb2wgbV9hbmltYXRpb25GcmFtZVJl
cXVlc3RlZDsKLSNlbmRpZgogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wg
bV9zZXREcmF3c0JhY2tncm91bmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCAxODBlYWNiZWJjOTk2NjViZTdjYzUxOTVi
NjdhYjc4NWFlMTZlOWRjLi5lYmU5NDg0MjRkYmEyOTliNGE4Yjc5YmMzZTg5NDhhOTk3NzdlNDBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkuY3BwCkBAIC0xNDAsMTkgKzE0MCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OnJlbmRlck5leHRGcmFtZSgpCiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCkt
PnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpSZW5k
ZXJOZXh0RnJhbWUoKSwgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKIH0K
IAotI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKLXZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHk6OnJlcXVlc3RBbmltYXRpb25GcmFtZSgpCi17Ci0gICAgZGlzcGF0
Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZXF1ZXN0QW5pbWF0aW9u
RnJhbWUsIG1fc2NlbmUuZ2V0KCkpKTsKLSAgICB1cGRhdGVWaWV3cG9ydCgpOwotfQotCi12b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjphbmltYXRpb25GcmFtZVJlYWR5KCkKLXsK
LSAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkFuaW1hdGlvbkZyYW1lUmVhZHkoKSwgbV9kcmF3
aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKLX0KLSNlbmRpZgotCiB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewogICAgIG1f
ZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6UHVyZ2VCYWNraW5nU3RvcmVzKCksIG1fZHJhd2luZ0FyZWFQ
cm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuaAppbmRleCA1ZGRhNWM0MDMxMWJlNGVhOGVmNDVmMmMxOGU5
YWU2YWUyNTZkMWZhLi40NjZkZWE0NTRjYTljNWVkODZhNTQxYjc0OGE1MTEyOGZiNmQ4MTJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgK
QEAgLTcxLDE4ICs3MSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbW1pdENvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsK
ICAgICB2b2lkIHNldEFuaW1hdGlvbnNMb2NrZWQoYm9vbCk7Ci0jaWYgRU5BQkxFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKQotICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7Ci0jZW5k
aWYKICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwog
CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpOwogICAgIFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
KCkgY29uc3QgeyByZXR1cm4gbV9zY2VuZS5nZXQoKTsgfQogCi0gICAgLy8gQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lQ2xpZW50IE1ldGhvZHMuCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25GcmFtZVJlYWR5KCkgT1ZFUlJJREU7
Ci0jZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlld3BvcnQoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBmM2FhNThlNjEwN2JhNTI5YmI4Njc3Yzg2MDc0ZGUwODY2NjJhMTM1Li44NTVhY2VlYmQ3OGU2
MDY4MmY1MjdjY2Q4MDFmMjBmNGIyZTA4ZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzUs
MTEgKzM1LDYgQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgewog
ICAgIFVwZGF0ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlELCBXZWJLaXQ6OldlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKICAgICBDbGVhckltYWdlQmFja2luZ0NvbnRl
bnRzKHVpbnQ2NF90IGltYWdlSUQpCiAgICAgUmVtb3ZlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGlt
YWdlSUQpCi0KLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAgUmVxdWVz
dEFuaW1hdGlvbkZyYW1lKCkKLSNlbmRpZgotCiAgICAgU2V0QmFja2dyb3VuZENvbG9yKFdlYkNv
cmU6OkNvbG9yIGNvbG9yKQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCAwOWE3OGU0ZTAzNDNh
MTk1NTNkZWY1NTBmMjI4YmM5YjgwN2M5OTc3Li42Y2M0MTQ4YjgzMzc3NGUzN2NjZWVjMjFjZDIx
MDdkZTM5ODA2ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTk0LDYgKzk0LDkgQEAgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSogd2ViUGFnZSkK
ICAgICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUpCiAgICAgLCBtX2ZvcmNl
UmVwYWludEFzeW5jQ2FsbGJhY2tJRCgwKQogICAgICwgbV9hbmltYXRpb25zTG9ja2VkKGZhbHNl
KQorI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICAsIG1fbGFzdEFuaW1h
dGlvblNlcnZpY2VUaW1lKDApCisjZW5kaWYKIHsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnNldHRpbmdzKCktPnNldFNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCh0cnVlKTsKICAgICBt
X3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CkBAIC0xMzksNyArMTQyLDcgQEAgdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNjaGVkdWxlTGF5ZXJGbHVzaCgpCiAgICAgaWYgKCFtX2xheWVyRmx1
c2hTY2hlZHVsaW5nRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2xheWVy
Rmx1c2hUaW1lci5pc0FjdGl2ZSgpKQorICAgIGlmICghbV9sYXllckZsdXNoVGltZXIuaXNBY3Rp
dmUoKSB8fCBtX2xheWVyRmx1c2hUaW1lci5uZXh0RmlyZUludGVydmFsKCkgPiAwKQogICAgICAg
ICBtX2xheWVyRmx1c2hUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKQEAgLTQyOSw3ICs0MzIs
OCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c3luY0Rpc3BsYXlTdGF0ZSgpCiB7
CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAmJiAhVVNFKFJFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FX1RJTUVSKSAmJiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BM
QVlfTU9OSVRPUikKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgcHJldmlvdXNseSByZWdpc3Rl
cmVkIGFuaW1hdGlvbiBjYWxsYmFja3MgYXJlIGJlaW5nIGV4ZWN1dGVkIGJlZm9yZSB3ZSBmbHVz
aCB0aGUgbGF5ZXJzLgotICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZp
ZXcoKS0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhjdXJyZW50VGltZSgpKTsKKyAgICBtX2xh
c3RBbmltYXRpb25TZXJ2aWNlVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7CisgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5zZXJ2
aWNlU2NyaXB0ZWRBbmltYXRpb25zKG1fbGFzdEFuaW1hdGlvblNlcnZpY2VUaW1lKTsKICNlbmRp
ZgogCiAgICAgbV93ZWJQYWdlLT5sYXlvdXRJZk5lZWRlZCgpOwpAQCAtNjQ5LDExICs2NTMsMTUg
QEAgR3JhcGhpY3NMYXllckZhY3RvcnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhp
Y3NMYXllckZhY3RvcnkoKQogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKIHZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY2hlZHVsZUFuaW1hdGlvbigpCiB7Ci0gICAg
bV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkpOwotfQorICAgIGlmIChtX3dhaXRpbmdGb3JVSVByb2Nl
c3MpCisgICAgICAgIHJldHVybjsKIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmFu
aW1hdGlvbkZyYW1lUmVhZHkoKQoteworICAgIGlmIChtX2xheWVyRmx1c2hUaW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHJlcXVlc3RB
bmltYXRpb25GcmFtZSBzcGVjLCByQUYgY2FsbGJhY2tzIHNob3VsZCBub3QgYmUgZmFzdGVyIHRo
YW4gNjBGUFMuCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBNaW5pbWFsVGltZW91dEZvckFuaW1h
dGlvbnMgPSAxLiAvIDYwLjsKKyAgICBtX2xheWVyRmx1c2hUaW1lci5zdGFydE9uZVNob3Qoc3Rk
OjptYXg8ZG91YmxlPigwLiwgTWluaW1hbFRpbWVvdXRGb3JBbmltYXRpb25zIC0gV1RGOjptb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSArIG1fbGFzdEFuaW1hdGlvblNlcnZpY2VUaW1lKSk7
CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggNmMwNWJi
OThlNzFiMjhlMGM5MjEwNmUyZTJiY2I1ZTgzM2ExNzUxNS4uMDVkNjFiYWE0MThhM2QzMzY2NGU5
Y2NmZGY1N2NlMDEwMDA0YTVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTE0Nyw5ICsxNDcsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgbGF5ZXJGbHVzaFRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8Q29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0PiopOwogCiAgICAgdm9pZCBzY2hlZHVsZVJlbGVhc2VJbmFjdGl2ZUF0
bGFzZXMoKTsKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAgdm9pZCBh
bmltYXRpb25GcmFtZVJlYWR5KCk7Ci0jZW5kaWYKIAogICAgIHZvaWQgcmVsZWFzZUluYWN0aXZl
QXRsYXNlc1RpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
PiopOwogCkBAIC0yMDIsNiArMTk5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xheWVyRmx1
c2hTY2hlZHVsaW5nRW5hYmxlZDsKICAgICB1aW50NjRfdCBtX2ZvcmNlUmVwYWludEFzeW5jQ2Fs
bGJhY2tJRDsKICAgICBib29sIG1fYW5pbWF0aW9uc0xvY2tlZDsKKworI2lmIEVOQUJMRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uU2VydmljZVRp
bWU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1l
c3NhZ2VzLmluCmluZGV4IGU3MzIxZGJlYmE0YTQ3OWEyMjQ4ZDVhNGUwNmIwNGIyYzhmYzJkOWUu
LmUxNzA1YjdlZDE4ZmEwZjMzYjdhNGYwYzdkNWJkNzI3NTE2Y2U5OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QubWVzc2FnZXMuaW4KQEAgLTI0LDkgKzI0LDYgQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRWaXNpYmxlQ29udGVudHNSZWN0
KFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0LCBXZWJDb3JlOjpGbG9hdFBv
aW50IHRyYWplY3RvcnlWZWN0b3J5KQogICAgIFJlbmRlck5leHRGcmFtZSgpCiAgICAgUHVyZ2VC
YWNraW5nU3RvcmVzKCkKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAg
QW5pbWF0aW9uRnJhbWVSZWFkeSgpCi0jZW5kaWYKICAgICBDb21taXRTY3JvbGxPZmZzZXQodWlu
dDMyX3QgbGF5ZXJJRCwgV2ViQ29yZTo6SW50U2l6ZSBvZmZzZXQpCiB9CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>