<?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>45567</bug_id>
          
          <creation_ts>2010-09-10 15:35:06 -0700</creation_ts>
          <short_desc>Get accelerated compositing working with WebKit2 on Windows</short_desc>
          <delta_ts>2011-04-05 11:45:27 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>53805</dependson>
    
    <dependson>57046</dependson>
    
    <dependson>57060</dependson>
    
    <dependson>57388</dependson>
    
    <dependson>57598</dependson>
    
    <dependson>57599</dependson>
    
    <dependson>57606</dependson>
    
    <dependson>57774</dependson>
    
    <dependson>57792</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Adam Roben (:aroben)">aroben</assigned_to>
          <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarrin</cc>
    
    <cc>noam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>277482</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-10 15:35:06 -0700</bug_when>
    <thetext>Need to hook up compositing layers between the web- and UI processes on Windows.
&lt;rdar://problem/8147830&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277487</commentid>
    <comment_count>1</comment_count>
      <attachid>67249</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-10 15:43:42 -0700</bug_when>
    <thetext>Created attachment 67249
Baby steps: stub out some LayerBackedDrawingArea methods for Windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277489</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-10 15:47:03 -0700</bug_when>
    <thetext>Attachment 67249 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/win/LayerBackedDrawingAreaProxyWin.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/WebPage/win/LayerBackedDrawingAreaWin.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/WebPage/win/LayerBackedDrawingAreaWin.cpp:87:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 3 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277502</commentid>
    <comment_count>3</comment_count>
      <attachid>67249</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-10 16:05:51 -0700</bug_when>
    <thetext>Comment on attachment 67249
Baby steps: stub out some LayerBackedDrawingArea methods for Windows

Need to add some more files to the vcproj</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310035</commentid>
    <comment_count>4</comment_count>
      <attachid>74064</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-16 16:59:25 -0800</bug_when>
    <thetext>Created attachment 74064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310037</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-16 16:59:59 -0800</bug_when>
    <thetext>I see some unwanted changes in the vcproj. I&apos;ll fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310038</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-16 17:01:30 -0800</bug_when>
    <thetext>Attachment 74064 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebKit2/ChangeLog&apos;, u&apos;WebKit2/UIProcess/LayerBackedDrawingAreaProxy.cpp&apos;, u&apos;WebKit2/UIProcess/win/LayerBackedDrawingAreaProxyWin.cpp&apos;, u&apos;WebKit2/UIProcess/win/WebView.cpp&apos;, u&apos;WebKit2/UIProcess/win/WebView.h&apos;, u&apos;WebKit2/WebProcess/WebPage/LayerBackedDrawingArea.cpp&apos;, u&apos;WebKit2/WebProcess/WebPage/win/LayerBackedDrawingAreaWin.cpp&apos;, u&apos;WebKit2/win/WebKit2.vcproj&apos;]&quot; exit_code: 1
WebKit2/UIProcess/win/WebView.cpp:664:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310043</commentid>
    <comment_count>7</comment_count>
      <attachid>74064</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-16 17:11:24 -0800</bug_when>
    <thetext>Comment on attachment 74064
Patch

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

&gt; WebKit2/UIProcess/win/WebView.cpp:672
&gt; +        case DrawingAreaProxy::ChunkedUpdateDrawingAreaType: {
&gt; +            newDrawingArea = ChunkedUpdateDrawingAreaProxy::create(this);
&gt; +            break;
&gt; +        }
&gt; +        case DrawingAreaProxy::LayerBackedDrawingAreaType: {
&gt; +            newDrawingArea = LayerBackedDrawingAreaProxy::create(this);
&gt; +            break;

If these proxies took a cross-platform object, this whole function could be in WebPageProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310334</commentid>
    <comment_count>8</comment_count>
      <attachid>74064</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-17 09:25:43 -0800</bug_when>
    <thetext>Comment on attachment 74064
Patch

http://trac.webkit.org/changeset/72212</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332698</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-11 15:01:54 -0800</bug_when>
    <thetext>I talked with Anders, Simon, and Chris about this a little bit today. They told me about the changes Anders is making to do compositing in the web process into a shared surface on Mac, and for the UI process to handle actually displaying that surface on screen. We also talked about three approaches for Windows:

1) Proxy all GraphicsLayer calls over to the UI process, and do the compositing there. Layer contents would be rendered into shared bitmaps, then copied to VRAM in the UI process by Core Animation.
2) Use the IDirect3D9Ex APIs that were added in Vista to make CA render to a shared texture in the web process, then let the UI process put that texture on screen.
3) Use the IDirect3D9 APIs to make CA render to a shared bitmap in the web process, then let the UI process put that bitmap on screen.

A stumbling block with (1) is how to make &lt;video&gt; work. &lt;video&gt; currently uses image queues, which won&apos;t work cross-process. So that option seems unusable for now.

(2) is probably the most similar to the proposed Mac design. It will require some changes in Core Animation for it to work, however. It also won&apos;t work on Windows XP.

(3) will work on Windows XP and won&apos;t require any changes in Core Animation, but might have poor performance relative to (2) due to copying from VRAM to system memory on every frame.

Simon did some experiments with (2) and (3) and they both seem doable. He said that his initial performance tests of (3) showed no noticeable difference from Safari 5.0.3.

I think the best way forward is to get (3) working first. If performance seems degraded, we can then work on making (2) work on Vista and newer, and decide what to do about XP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364177</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-08 14:58:18 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; 3) Use the IDirect3D9 APIs to make CA render to a shared bitmap in the web process, then let the UI process put that bitmap on screen.

It would be convenient if we could use a CAImageQueue to transport the images cross-process and get the timing correct. But unfortunately CAImageQueue doesn&apos;t work cross-process on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364179</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-08 14:59:44 -0800</bug_when>
    <thetext>Seems like we&apos;ll need to have the web process render a little bit into the future, if possible, to account for the delay between rendering in the web process and displaying in the UI process. Otherwise we could get audio/video sync issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364184</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-08 15:20:25 -0800</bug_when>
    <thetext>Perhaps rendering future frames should be done after the initial patch. It sounds tricky!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368540</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-16 14:21:07 -0700</bug_when>
    <thetext>I just talked to Anders about the copy-into-bitmap approach. Here&apos;s what we came up with:

1) Add a &quot;render into a bitmap&quot; mode to WKCACFView. This mode consists of three parts:
  a) A way to put a WKCACFView into this mode
  b) A call to tell WKCACFView to render into a specific HBITMAP
  c) A callback that WKCACFView will call when rendering is complete
WKCACFView will not render automatically when in this mode. It will render a single frame when a bitmap is given to it. Maybe the callback in (c) should be passed the next time it thinks it needs to render.

2) Add a way for LayerTreeHost to tell DrawingAreaImpl to send a given ShareableBitmap in an Update message to the UI process. We&apos;ll use this to send the bitmap that WKCACFView rendered into to the UI process.

3) Add a way to tell DrawingAreaImpl not to send Enter/ExitAcceleratedCompositing messages to the UI process. With the above rendering model, the UI process won&apos;t need to know that we&apos;re in accelerated compositing mode at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374224</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-27 14:48:37 -0700</bug_when>
    <thetext>I have things working pretty well. Jotting down some remaining bugs I&apos;ve noticed:

1) Scrolling on &lt;http://neography.com/experiment/circles/solarsystem/&gt; is laggy.
2) Animations don&apos;t restart when resumePainting is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374225</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-27 14:50:10 -0700</bug_when>
    <thetext>3) The whole view goes blank during resizing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374228</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-27 14:57:00 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; 3) The whole view goes blank during resizing.

This is happening because the LayerTreeHost isn&apos;t getting to participate in the UpdateBackingStoreState message correctly. We need to wait for the LayerTreeHost to render the next frame before sending back the DidUpdateBackingStoreState message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374838</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-28 15:32:21 -0700</bug_when>
    <thetext>I was having trouble getting DrawingAreaImpl to play nicely with an asynchronously-painting LayerTreeHost. I decided to make LayerTreeHost paint synchronously. This has the advantage of matching the way we paint in non-composited mode (so DrawingAreaImpl will require few changes), but the disadvantage of blocking the main thread while we wait for the readback from the GPU to happen.

This seems to be working pretty well, though the framerate isn&apos;t quite as high as in WK1. However, on Windows 7 everything is being painted black in composited mode. I believe this is due to a difference in behavior between D3D on XP and on 7: GetRenderTargetData is filling the alpha channel with 255 on XP but 0 on 7.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374852</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-28 15:51:31 -0700</bug_when>
    <thetext>Using synchronous painting fixes bugs 1 and 3 mentioned in comment 14 and comment 15.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374858</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-28 16:04:32 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; However, on Windows 7 everything is being painted black in composited mode. I believe this is due to a difference in behavior between D3D on XP and on 7: GetRenderTargetData is filling the alpha channel with 255 on XP but 0 on 7.

Changing ShareableBitmap::paint to use ::StretchDIBits instead of CG calls fixes this problem. GDI ignores the alpha channel completely, so it doesn&apos;t matter that it&apos;s 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374876</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-28 16:24:51 -0700</bug_when>
    <thetext>I guess another option would be to use kCGImageAlphaNoneSkipFirst in ShareableBitmap::createGraphicsContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374898</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-28 16:55:02 -0700</bug_when>
    <thetext>::StretchDIBits has its own problems. It doesn&apos;t support transparency, and it has a wacky bug that needs to be worked around: &lt;http://wiki.allegro.cc/index.php?title=StretchDIBits&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376960</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-30 23:01:39 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; 2) Animations don&apos;t restart when resumePainting is called.

I&apos;m still running into this. In addition, the web process and UI process get into an Update/DidUpdate loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379577</commentid>
    <comment_count>23</comment_count>
      <attachid>88238</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-05 08:18:43 -0700</bug_when>
    <thetext>Created attachment 88238
Make accelerated compositing work in WebKit2 on Windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379588</commentid>
    <comment_count>24</comment_count>
      <attachid>88238</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-04-05 08:34:33 -0700</bug_when>
    <thetext>Comment on attachment 88238
Make accelerated compositing work in WebKit2 on Windows

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

&gt; Source/WebKit2/WebProcess/WebPage/ca/win/LayerTreeHostCAWin.cpp:190
&gt; +void LayerTreeHostCAWin::sizeDidChange(const WebCore::IntSize&amp; newSize)

No need for WebCore:: here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379602</commentid>
    <comment_count>25</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-05 08:54:05 -0700</bug_when>
    <thetext>Attachment 88238 did not build on win:
Build output: http://queues.webkit.org/results/8336326</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379659</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-05 09:43:07 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Attachment 88238 [details] did not build on win:
&gt; Build output: http://queues.webkit.org/results/8336326

Looks like the build failed because the patch for bug 57792 hasn&apos;t landed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379745</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-05 11:03:09 -0700</bug_when>
    <thetext>Committed r82960: &lt;http://trac.webkit.org/changeset/82960&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379776</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-05 11:45:27 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; 2) Animations don&apos;t restart when resumePainting is called.

This is now bug 57868.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67249</attachid>
            <date>2010-09-10 15:43:42 -0700</date>
            <delta_ts>2010-09-10 16:05:51 -0700</delta_ts>
            <desc>Baby steps: stub out some LayerBackedDrawingArea methods for Windows</desc>
            <filename>bug-45567-20100910154340.patch</filename>
            <type>text/plain</type>
            <size>7540</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
Y2ZjYWU0MjdlNWQ2MDBhYjRjZWJlODhhZTMyY2ZlYmM4NzgzMDNiYy4uZmM4NjUwZmYyODU5MWMz
MjU5ZmNiZjdiZGFkNjBhMmYyOGNmODkxMSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wOS0xMCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
d29ya2luZyB3aXRoIFdlYktpdDIgb24gV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU1NjcKKworICAgICAgICBBZGQgTGF5ZXJCYWNrZWRE
cmF3aW5nQXJlYSBzdHVicyBmb3IgV2luZG93cyAodW51c2VkIGF0IHByZXNlbnQpLgorCisgICAg
ICAgICogVUlQcm9jZXNzL3dpbi9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlXaW4uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5OjpwbGF0
Zm9ybVNldFNpemUpOgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tlZERyYXdpbmdBcmVhUHJv
eHk6OmF0dGFjaENvbXBvc2l0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFj
a2VkRHJhd2luZ0FyZWFQcm94eTo6ZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0xheWVyQmFja2VkRHJhd2luZ0FyZWFXaW4uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6cGxhdGZvcm1J
bml0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6cGxhdGZvcm1D
bGVhcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2VkRHJhd2luZ0FyZWE6OmF0dGFjaENv
bXBvc2l0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2VkRHJhd2luZ0Fy
ZWE6OmRldGFjaENvbXBvc2l0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFj
a2VkRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYyk6
CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2VkRHJhd2luZ0FyZWE6OnN5bmNDb21wb3NpdGlu
Z0xheWVycyk6CisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDEwLTA5LTEwICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vTGF5ZXJCYWNrZWRE
cmF3aW5nQXJlYVByb3h5V2luLmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9MYXllckJhY2tl
ZERyYXdpbmdBcmVhUHJveHlXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkZWEwMGE4NTk1NzQ5ODg1Njdi
NGU0OWY1NzRhZjAyOGY3NjhkM2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQyL1VJUHJvY2Vz
cy93aW4vTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5V2luLmNwcApAQCAtMCwwICsxLDUxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkxheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eS5oIgor
CisjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVk
ZSAiV0tWaWV3LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBMYXllckJhY2tlZERyYXdp
bmdBcmVhUHJveHk6OnBsYXRmb3JtU2V0U2l6ZSgpCit7CisKK30KKwordm9pZCBMYXllckJhY2tl
ZERyYXdpbmdBcmVhUHJveHk6OmF0dGFjaENvbXBvc2l0aW5nQ29udGV4dCh1aW50MzJfdCBjb250
ZXh0SUQpCit7Cit9CisKK3ZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5OjpkZXRhY2hD
b21wb3NpdGluZ0NvbnRleHQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9MYXllckJhY2tlZERyYXdpbmdB
cmVhV2luLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9MYXllckJhY2tlZERy
YXdpbmdBcmVhV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjZjZjJmNzY3YzEzYjkxNWUyM2RjNDdiNjQ5
MmFlOTY5ZGJhZjQzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2luL0xheWVyQmFja2VkRHJhd2luZ0FyZWFXaW4uY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAi
TGF5ZXJCYWNrZWREcmF3aW5nQXJlYS5oIgorCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VLaW5kcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVW
aWV3Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVhOjpwbGF0Zm9ybUluaXQoKQorewor
fQorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnBsYXRmb3JtQ2xlYXIoKQoreworCisg
ICAgbV9hdHRhY2hlZCA9IGZhbHNlOworfQorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6
OmF0dGFjaENvbXBvc2l0aW5nQ29udGV4dCgpCit7CisgICAgaWYgKG1fYXR0YWNoZWQpCisgICAg
ICAgIHJldHVybjsKKworLy8gICAgbV9iYWNraW5nTGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRl
Rm9yVGhpc0xheWVyT25seSgpOworICAgICAgICAKKyAgICBtX2F0dGFjaGVkID0gdHJ1ZTsKKwor
fQorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OmRldGFjaENvbXBvc2l0aW5nQ29udGV4
dCgpCit7CisgICAgbV9iYWNraW5nTGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CisgICAgbV9i
YWNraW5nTGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworfQor
Cit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQoreworICAgIG1fYmFja2luZ0xheWVyLT5yZW1v
dmVBbGxDaGlsZHJlbigpOworICAgIGlmIChsYXllcikKKyAgICAgICAgbV9iYWNraW5nTGF5ZXIt
PmFkZENoaWxkKGxheWVyKTsKKyAgICBtX2JhY2tpbmdMYXllci0+c3luY0NvbXBvc2l0aW5nU3Rh
dGVGb3JUaGlzTGF5ZXJPbmx5KCk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6
c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpCit7CisKK30KKwordm9pZCBMYXllckJhY2tl
ZERyYXdpbmdBcmVhOjpzeW5jQ29tcG9zaXRpbmdMYXllcnMoKQoreworICAgIGJvb2wgZGlkU3lu
YyA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c3luY0NvbXBv
c2l0aW5nU3RhdGVSZWN1cnNpdmUoKTsKKyAgICBpZiAoIWRpZFN5bmMpIHsKKyAgICAKKyAgICB9
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2ogYi9X
ZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagppbmRleCBhODdmYzk3ZjIyNTBjNjA1M2NhNjk2ZDM4
MzcwZWU0ZDFhNDY4ZWIxLi5hYWQwNWE1MGIxMjdkYWU3YmM4ZDhmMzg2ZGI5ZTQ2MTI5NTc0Y2Q0
IDEwMDc1NQotLS0gYS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagorKysgYi9XZWJLaXQyL3dp
bi9XZWJLaXQyLnZjcHJvagpAQCAtNzY3LDYgKzc2NywxMCBAQAogCQkJCQkJPg0KIAkJCQkJPC9G
aWxlPg0KIAkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2Vi
UGFnZVx3aW5cTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVdpbi5jcHAiDQorCQkJCQkJPg0KKwkJCQkJ
PC9GaWxlPg0KKwkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3Nc
V2ViUGFnZVx3aW5cV2ViUGFnZVdpbi5jcHAiDQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KQEAg
LTE2MTYsNiArMTYyMCwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXHdpblxMYXllckJhY2tlZERyYXdpbmdBcmVh
UHJveHlXaW4uY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1x3aW5cV2ViQ29udGV4dFdpbi5jcHAiDQogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74064</attachid>
            <date>2010-11-16 16:59:25 -0800</date>
            <delta_ts>2010-11-17 09:25:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45567-20101116165924.patch</filename>
            <type>text/plain</type>
            <size>15782</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
ZGQyOWEyNmZmYjFiNmIxYWU1OGJjMTcyMzRlMzMzOWE0YmYyNWE2OC4uMDliZjYxMGY3ZDIwMWIx
MmM0YjA1ZGJkYTQ2NTFjM2E2MDdmNzliNyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0xMS0xNiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDU1NjcKKyAgICAgICAgQWRkIHN0dWJiZWQtb3V0IGxheWVyLWJhY2tlZCBk
cmF3aW5nIGFyZWEgZm9yIFdpbmRvd3MuCisKKyAgICAgICAgQWRkIGltcGxlbWVudGF0aW9ucyBv
ZiBMYXllckJhY2tlZERyYXdpbmdBcmVhIGFuZAorICAgICAgICBMYXllckJhY2tlZERyYXdpbmdB
cmVhUHJveHkgZm9yIFdpbmRvd3MsIGFuZCBhZGQgdGhlbQorICAgICAgICB0byB0aGUgdmNwcm9q
LgorCisgICAgICAgICogVUlQcm9jZXNzL0xheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlXaW4u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5
OjpwYWdlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5Ojpw
bGF0Zm9ybVNldFNpemUpOgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tlZERyYXdpbmdBcmVh
UHJveHk6OmF0dGFjaENvbXBvc2l0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
QmFja2VkRHJhd2luZ0FyZWFQcm94eTo6ZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5OjpwYWludCk6CisgICAgICAg
ICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
cGFnZURpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OnBhZ2VEaWRMZWF2ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3Ojpzd2l0Y2hUb0RyYXdpbmdBcmVhVHlwZUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL3dpbi9MYXllckJhY2tlZERyYXdpbmdBcmVhV2luLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OkxheWVyQmFja2VkRHJhd2luZ0FyZWE6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyQmFja2VkRHJhd2luZ0FyZWE6OnBsYXRmb3JtQ2xlYXIpOgorICAgICAgICAo
V2ViS2l0OjpMYXllckJhY2tlZERyYXdpbmdBcmVhOjphdHRhY2hDb21wb3NpdGluZ0NvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tlZERyYXdpbmdBcmVhOjpkZXRhY2hDb21wb3Np
dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tlZERyYXdpbmdBcmVhOjpz
ZXRSb290Q29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2VkRHJh
d2luZ0FyZWE6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMpOgorICAgICAgICAoV2ViS2l0
OjpMYXllckJhY2tlZERyYXdpbmdBcmVhOjpzeW5jQ29tcG9zaXRpbmdMYXllcnMpOgorICAgICAg
ICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKwogMjAxMC0xMS0xNiAgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+LCBaYWxhbiBCdWp0YXMgIDx6YnVqdGFzQGdt
YWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5LmNwcCBiL1dl
YktpdDIvVUlQcm9jZXNzL0xheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggNTM0
ODg4MmViOGVhNDI2ZTRhYjZmZWY2M2IyOGIwZTc2NGFmMTExOC4uNDExZWYzZmU4Y2ZjZmM1Mjc5
MTU5MTIyN2ZhNmVhYzhkMmI2Yjg3MyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9MYXll
ckJhY2tlZERyYXdpbmdBcmVhUHJveHkuY3BwCkBAIC01NSw5ICs1NSwxMSBAQCBMYXllckJhY2tl
ZERyYXdpbmdBcmVhUHJveHk6On5MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkoKQogewogfQog
CisjaWYgIVBMQVRGT1JNKFdJTikKIHZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5Ojpw
YWludChjb25zdCBJbnRSZWN0JiByZWN0LCBQbGF0Zm9ybURyYXdpbmdDb250ZXh0IGNvbnRleHQp
CiB7CiB9CisjZW5kaWYKIAogdm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHk6OnNldFNp
emUoY29uc3QgSW50U2l6ZSYgdmlld1NpemUpCiB7CkBAIC04Miw3ICs4NCw3IEBAIHZvaWQgTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5OjpzZXRTaXplKGNvbnN0IEludFNpemUmIHZpZXdTaXpl
KQogICAgIHBhZ2UtPnByb2Nlc3MoKS0+c2VuZChEcmF3aW5nQXJlYU1lc3NhZ2U6OlNldFNpemUs
IHBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihpbmZvKCkuaWQsIHZpZXdTaXplKSk7CiB9CiAK
LSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShXSU4p
CiB2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eTo6cGxhdGZvcm1TZXRTaXplKCkKIHsK
IH0KZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9MYXllckJhY2tlZERyYXdpbmdB
cmVhUHJveHlXaW4uY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL0xheWVyQmFja2VkRHJhd2lu
Z0FyZWFQcm94eVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M0YThiODM4ZDZmOWNkNDAxOGI1ZmU4NTVl
NTBmYzkxNTM4MGVkYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9M
YXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlXaW4uY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5LmgiCisKKyNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3Nh
Z2VLaW5kcy5oIgorI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCIKKyNp
bmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworV2ViUGFnZVByb3h5KiBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHk6
OnBhZ2UoKQoreworICAgIHJldHVybiBtX3dlYlZpZXctPnBhZ2UoKTsKK30KKwordm9pZCBMYXll
ckJhY2tlZERyYXdpbmdBcmVhUHJveHk6OnBsYXRmb3JtU2V0U2l6ZSgpCit7Cit9CisKK3ZvaWQg
TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5OjphdHRhY2hDb21wb3NpdGluZ0NvbnRleHQodWlu
dDMyX3QgY29udGV4dElEKQoreworCit9CisKK3ZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVBy
b3h5OjpkZXRhY2hDb21wb3NpdGluZ0NvbnRleHQoKQoreworfQorCit2b2lkIExheWVyQmFja2Vk
RHJhd2luZ0FyZWFQcm94eTo6cGFpbnQoY29uc3QgSW50UmVjdCYsIFBsYXRmb3JtRHJhd2luZ0Nv
bnRleHQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IDM5
MzhlMjkyYWY5MjU3ZWQ2OGZlMTFiZTA3ZmU5M2ViZmM3MjRkOWYuLjNiOGVlYzU1NjNlMmQwNjRm
NmJiZjRhNGMzNDVhMTQyNzQ3MTU0NDggMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJWaWV3LmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5
LmgiCiAjaW5jbHVkZSAiRmluZEluZGljYXRvci5oIgorI2luY2x1ZGUgIkxheWVyQmFja2VkRHJh
d2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKICNpbmNsdWRlICJOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eVdpbi5oIgpA
QCAtNjQ0LDExICs2NDUsNDEgQEAgdm9pZCBXZWJWaWV3OjpzZXRGaW5kSW5kaWNhdG9yKFBhc3NS
ZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCkKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiB2b2lkIFdlYlZpZXc6OnBhZ2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoKQogeworICAgIHN3aXRjaFRvRHJhd2luZ0FyZWFUeXBlSWZOZWNlc3NhcnkoRHJhd2lu
Z0FyZWFQcm94eTo6TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVR5cGUpOwogfQogCiB2b2lkIFdlYlZp
ZXc6OnBhZ2VEaWRMZWF2ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQogeworICAgIHN3aXRjaFRv
RHJhd2luZ0FyZWFUeXBlSWZOZWNlc3NhcnkoRHJhd2luZ0FyZWFQcm94eTo6Q2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhVHlwZSk7CiB9CisKK3ZvaWQgV2ViVmlldzo6c3dpdGNoVG9EcmF3aW5nQXJl
YVR5cGVJZk5lY2Vzc2FyeShEcmF3aW5nQXJlYVByb3h5OjpUeXBlIHR5cGUpCit7CisgICAgRHJh
d2luZ0FyZWFCYXNlOjpUeXBlIGV4aXN0aW5nRHJhd2luZ0FyZWFUeXBlID0gbV9wYWdlLT5kcmF3
aW5nQXJlYSgpID8gbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5pbmZvKCkudHlwZSA6IERyYXdpbmdB
cmVhQmFzZTo6Tm9uZTsKKyAgICBpZiAoZXhpc3RpbmdEcmF3aW5nQXJlYVR5cGUgPT0gdHlwZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IG5ld0RyYXdp
bmdBcmVhOworICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIERyYXdpbmdBcmVhUHJv
eHk6Ok5vbmU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEcmF3aW5nQXJlYVBy
b3h5OjpDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFUeXBlOiB7CisgICAgICAgICAgICBuZXdEcmF3
aW5nQXJlYSA9IENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpjcmVhdGUodGhpcyk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERyYXdpbmdBcmVhUHJv
eHk6OkxheWVyQmFja2VkRHJhd2luZ0FyZWFUeXBlOiB7CisgICAgICAgICAgICBuZXdEcmF3aW5n
QXJlYSA9IExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eTo6Y3JlYXRlKHRoaXMpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9wYWdlLT5kcmF3aW5n
QXJlYSgpKQorICAgICAgICBuZXdEcmF3aW5nQXJlYS0+c2V0U2l6ZShtX3BhZ2UtPmRyYXdpbmdB
cmVhKCktPnNpemUoKSk7CisKKyAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPmRldGFjaENvbXBv
c2l0aW5nQ29udGV4dCgpOworICAgIG1fcGFnZS0+c2V0RHJhd2luZ0FyZWEobmV3RHJhd2luZ0Fy
ZWEucmVsZWFzZSgpKTsKK30KKwogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIAogSFdORCBXZWJWaWV3OjpuYXRpdmVXaW5kb3coKQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuaCBiL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgK
aW5kZXggN2M1ZTEyOGJiZjdiM2NjNjEwNjkxNjU5NTg5ZjZmMDg1YTYzMjAyZi4uMDdjYzAwMTAz
MzQyMWU2OGM2Nzg4MjJjYmRhN2QwMDlmYTZhOTE3NyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5o
CkBAIC0xMTIsNiArMTEyLDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmcoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZExlYXZlQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZygpOworICAgIHZvaWQgc3dpdGNoVG9EcmF3aW5nQXJlYVR5cGVJZk5lY2Vzc2FyeShEcmF3aW5n
QXJlYVByb3h5OjpUeXBlKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBIV05EIG5hdGl2ZVdpbmRv
dygpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJCYWNrZWRE
cmF3aW5nQXJlYS5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllckJhY2tlZERy
YXdpbmdBcmVhLmNwcAppbmRleCBlYzBlNGYxMDE5MDdhMWNmNDYzMDBiNDAzNjJmNDViMDE3Y2Rh
NzczLi45NmQ3YzkzMzEwZWRlNTEzN2E2OGU4ZmZhM2E2NTZjZDdmMWZiN2E5IDEwMDY0NAotLS0g
YS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllckJhY2tlZERyYXdpbmdBcmVhLmNwcAor
KysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllckJhY2tlZERyYXdpbmdBcmVhLmNw
cApAQCAtMTk3LDcgKzE5Nyw3IEBAIGJvb2wgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6c2hvd1Jl
cGFpbnRDb3VudGVyKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiAhUExBVEZP
Uk0oTUFDKQorI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShXSU4pCiB2b2lkIExheWVy
QmFja2VkRHJhd2luZ0FyZWE6OmF0dGFjaENvbXBvc2l0aW5nQ29udGV4dChHcmFwaGljc0xheWVy
KikKIHsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9MYXll
ckJhY2tlZERyYXdpbmdBcmVhV2luLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dp
bi9MYXllckJhY2tlZERyYXdpbmdBcmVhV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDdlMWY1Nzk5MDcz
ZWM3ZmMzNzI3ZGIyNDFiNTI0NWJlZDUzMDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0xheWVyQmFja2VkRHJhd2luZ0FyZWFXaW4uY3BwCkBAIC0w
LDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorCisjaW5jbHVkZSAiTGF5ZXJCYWNrZWREcmF3aW5nQXJlYS5oIgorCisjaW5jbHVkZSAiRHJh
d2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVWaWV3Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XS0NBQ0ZMYXll
clJlbmRlcmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSW5zdGFuY2VIYW5kbGUuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnBsYXRmb3JtSW5pdCgpCit7Cit9CisKK3ZvaWQgTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYTo6cGxhdGZvcm1DbGVhcigpCit7Cit9CisKK3ZvaWQgTGF5ZXJC
YWNrZWREcmF3aW5nQXJlYTo6YXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCkKK3sKK30KKwordm9p
ZCBMYXllckJhY2tlZERyYXdpbmdBcmVhOjpkZXRhY2hDb21wb3NpdGluZ0NvbnRleHQoKQorewor
fQorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVy
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQoreworfQorCit2b2lkIExheWVyQmFja2Vk
RHJhd2luZ0FyZWE6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKQoreworfQorCit2b2lk
IExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnN5bmNDb21wb3NpdGluZ0xheWVycygpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2ogYi9XZWJLaXQy
L3dpbi9XZWJLaXQyLnZjcHJvagppbmRleCBmODBiN2E3OTUyNWFhZjAyZTE4YWFlZjg1NzljOWY0
MGU5ZmU3N2NhLi41ZDU0NjZhOTVhODg3NjlmODg5MDM4NDRjYzc0Y2ZlZjlkNzUyZjc2IDEwMDc1
NQotLS0gYS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagorKysgYi9XZWJLaXQyL3dpbi9XZWJL
aXQyLnZjcHJvagpAQCAtNjY4LDIzICs2NjgsMjMgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQog
CQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElcY1xXS0NvbnRleHRN
ZW51SXRlbS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElcY1x3aW5cV0tD
ZXJ0aWZpY2F0ZUluZm9XaW4uY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxl
DQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElcY1xXS0NvbnRleHRNZW51SXRlbS5o
Ig0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQVBJXGNcd2luXFdLQ2VydGlmaWNhdGVJ
bmZvV2luLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0
aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCINCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLQ29udGV4dE1lbnVJdGVtLmNwcCINCiAJ
CQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxT
aGFyZWRcQVBJXGNcd2luXFdLQ2VydGlmaWNhdGVJbmZvV2luLmNwcCINCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLQ29udGV4dE1lbnVJdGVtLmgiDQogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxj
XHdpblxXS0NlcnRpZmljYXRlSW5mb1dpbi5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFy
ZWRcQVBJXGNcV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+
DQogCQkJCTxGaWxlDQpAQCAtMTIxMiw2ICsxMjEyLDE0IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2Vc
TGF5ZXJCYWNrZWREcmF3aW5nQXJlYS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJ
PEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXExheWVyQmFj
a2VkRHJhd2luZ0FyZWEuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcUGFnZU92ZXJsYXkuY3BwIg0K
IAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtMTI4Myw2ICsxMjkxLDEwIEBACiAJCQkJCQk+DQog
CQkJCQk8L0ZpbGU+DQogCQkJCQk8RmlsZQ0KKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJv
Y2Vzc1xXZWJQYWdlXHdpblxMYXllckJhY2tlZERyYXdpbmdBcmVhV2luLmNwcCINCisJCQkJCQk+
DQorCQkJCQk8L0ZpbGU+DQorCQkJCQk8RmlsZQ0KIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2Vi
UHJvY2Vzc1xXZWJQYWdlXHdpblxXZWJJbnNwZWN0b3JXaW4uY3BwIg0KIAkJCQkJCT4NCiAJCQkJ
CTwvRmlsZT4NCkBAIC0xMzQ0LDI3ICsxMzU2LDI3IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
IAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVu
ZGxlXEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2Vi
UHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAi
DQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0i
Li5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJbmplY3RlZEJ1bmRsZUNsaWVudC5oIg0KKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEluamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUN
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlBy
b2Nlc3NcSW5qZWN0ZWRCdW5kbGVcSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0LmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVc
SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgiDQogCQkJCQk+DQogCQkJCTwvRmls
ZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3Rl
ZEJ1bmRsZVxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIg0KKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEluamVjdGVkQnVuZGxlQ2xp
ZW50LmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEluamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVj
dGVkQnVuZGxlXEluamVjdGVkQnVuZGxlQ2xpZW50LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4N
CiAJCQkJPEZpbGUNCkBAIC0xNTA2LDE1ICsxNTE4LDE1IEBACiAJCQkJCQkJPg0KIAkJCQkJCTwv
RmlsZT4NCiAJCQkJCQk8RmlsZQ0KLQkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3Nc
SW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVQYWdlUHJpdmF0ZS5oIg0KKwkJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVQYWdl
T3ZlcmxheS5jcHAiDQogCQkJCQkJCT4NCiAJCQkJCQk8L0ZpbGU+DQogCQkJCQkJPEZpbGUNCi0J
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdL
QnVuZGxlUGFnZU92ZXJsYXkuY3BwIg0KKwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nl
c3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVQYWdlT3ZlcmxheS5oIg0KIAkJCQkJCQk+
DQogCQkJCQkJPC9GaWxlPg0KIAkJCQkJCTxGaWxlDQotCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
V2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZVBhZ2VPdmVybGF5LmgiDQor
CQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xX
S0J1bmRsZVBhZ2VQcml2YXRlLmgiDQogCQkJCQkJCT4NCiAJCQkJCQk8L0ZpbGU+DQogCQkJCQkJ
PEZpbGUNCkBAIC0xNzA5LDYgKzE3MjEsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXExheWVyQmFja2VkRHJhd2luZ0Fy
ZWFQcm94eS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxVSVByb2Nlc3NcTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5LmgiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nl
c3NcUGFnZUNsaWVudC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTIxNDcsMTAgKzIxNjcs
MTAgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcRG93bmxvYWRzXERvd25sb2Fk
UHJveHkuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KLSAgICAJCQk8RmlsZQ0KLSAgICAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcRG93bmxvYWRzXERvd25sb2FkUHJveHkubWVzc2Fn
ZXMuaW4iDQotICAgIAkJCQk+DQotICAgIAkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXERvd25sb2Fkc1xEb3dubG9hZFByb3h5Lm1lc3NhZ2Vz
LmluIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQogCQkJPC9GaWx0ZXI+DQogCQkJPEZpbHRlcg0K
IAkJCQlOYW1lPSJMYXVuY2hlciINCkBAIC0yMTkyLDYgKzIyMTIsMTAgQEAKIAkJCQkJPg0KIAkJ
CQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1x3
aW5cTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5V2luLmNwcCINCisJCQkJCT4NCisJCQkJPC9G
aWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3Ncd2luXFdl
YkNvbnRleHRNZW51UHJveHlXaW4uY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88238</attachid>
            <date>2011-04-05 08:18:43 -0700</date>
            <delta_ts>2011-04-05 08:34:33 -0700</delta_ts>
            <desc>Make accelerated compositing work in WebKit2 on Windows</desc>
            <filename>bug-45567-20110405111941.patch</filename>
            <type>text/plain</type>
            <size>20579</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzZjE4OWE1YWI0YWUzYjRh
Mjg2MmM0ZmM3MmQxOTkyOTZhMGQxNzQyLi4wMjU3ZDI1NThjOGE2MzVmYmY2OWFlZjU3M2IzMDY1
NzRhMmU4N2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTEtMDQtMDUgIEFkYW0g
Um9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgYWNjZWxlcmF0ZWQgY29t
cG9zaXRpbmcgd29yayBpbiBXZWJLaXQyIG9uIFdpbmRvd3MKKworICAgICAgICBMYXllclRyZWVI
b3N0Q0FXaW4gdXNlcyBXS0NBQ0ZWaWV3IHRvIHJlbmRlciBlYWNoIGZyYW1lIHRvIGFuIGltYWdl
LCB0aGVuIGhhcworICAgICAgICBEcmF3aW5nQXJlYUltcGwgc2VuZCB0aGF0IGltYWdlIG92ZXIg
dG8gdGhlIFVJIHByb2Nlc3MgKGp1c3QgbGlrZSBpdCBkb2VzIGZvcgorICAgICAgICBub24tYWNj
ZWxlcmF0ZWQgcmVuZGVyaW5nKS4gSXQncyB1bmZvcnR1bmF0ZSB0aGF0IHRoaXMgcmVxdWlyZXMg
cmVhZGluZyBldmVyeSBmcmFtZSBiYWNrCisgICAgICAgIGZyb20gdGhlIEdQVSBpbnRvIHN5c3Rl
bSBtZW1vcnkuIE1vcmUgZWZmaWNpZW50IHNvbHV0aW9ucyBjYW4gYmUgZXhwbG9yZWQgaW4gdGhl
IGZ1dHVyZS4KKworICAgICAgICBGaXhlcyA8aHR0cDovL3dlYmtpdC5vcmcvYi80NTU2Nz4uCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOiBBZGRlZCAkKFdlYktpdDIpIHRvIHRoZSBWUEFUSCBzbyB0aGF0IERlcml2
ZWRTb3VyY2VzLm1ha2UgY2FuIGJlCisgICAgICAgIGZvdW5kIHdoZW4gdXNlZCBhcyBhIHRhcmdl
dCBkZXBlbmRlbmN5LiBBZGRlZCBydWxlcyB0byBnZW5lcmF0ZSBhIEhlYWRlckRldGVjdGlvbi5o
IGZpbGUgb24KKyAgICAgICAgV2luZG93cy4gSWYgd2UgY2FuIGZpbmQgV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucyBoZWFkZXJzLCB3ZSBkZWZpbmUgSEFWRV9XS1FDQSBpbgorICAgICAgICBIZWFk
ZXJEZXRlY3Rpb24uaC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUltcGw6OnNldExheWVySG9z
dE5lZWRzRGlzcGxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
SW1wbC5oOgorICAgICAgICBBZGRlZCBzZXRMYXllckhvc3ROZWVkc0Rpc3BsYXkuIExldHMgdGhl
IGxheWVyIGhvc3QgdGVsbCB0aGUgRHJhd2luZ0FyZWFJbXBsIHRoYXQgaXQgaGFzIGEKKyAgICAg
ICAgbmV3IGZyYW1lIHRvIHJlbmRlci4gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgbGF5
ZXIgaG9zdHMgdGhhdCBwYXJ0aWNpcGF0ZSBpbgorICAgICAgICBEcmF3aW5nQXJlYUltcGwncyBk
aXNwbGF5IG1lY2hhbmlzbS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRy
ZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKTogT25s
eSB0cnkgdG8gaW5zdGFudGlhdGUgTGF5ZXJUcmVlSG9zdENBV2luIGlmIHdlIGhhdmUKKyAgICAg
ICAgV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywgc2luY2UgaXQgZGVwZW5kcyBvbiB0aGF0IGxp
YnJhcnkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogUmVtb3ZlZCBjb2RlIHRo
YXQgZm9yY2VkIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHRvIGJlCisgICAgICAgIGRpc2FibGVk
IG9uIFdpbmRvd3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvY2Evd2luL0xheWVy
VHJlZUhvc3RDQVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyRHVtbXlXaW5kb3dD
bGFzcyk6IFJlZ2lzdGVycyB0aGUgd2luZG93IGNsYXNzIHdlIHVzZSBmb3IgdGhlIGR1bW15IHdp
bmRvdy4KKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRHVtbXlXaW5kb3cpOiBDcmVhdGVzIHRoZSBk
dW1teSB3aW5kb3cgd2UgcGFzcyB0byBXS0NBQ0ZWaWV3IHNvIHRoYXQgRDNEIGNhbgorICAgICAg
ICBkZXRlcm1pbmUgdGhlIGRpc3BsYXkgbW9kZSwgZXRjLiAoVGhlIHdpbmRvdyBpcyBuZXZlciBz
aG93biBvbiBzY3JlZW4uKQorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Q0FXaW46Okxh
eWVyVHJlZUhvc3RDQVdpbik6IEluaXRpYWxpemUgbmV3IG1lbWJlcnMuCisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3RDQVdpbjo6cGxhdGZvcm1Jbml0aWFsaXplKTogQ3JlYXRlIG91ciBk
dW1teSB3aW5kb3cgYW5kIHZpZXcgYW5kCisgICAgICAgIGFzc29jaWF0ZSB0aGUgdHdvLiBXZSBz
ZXQgb3Vyc2VsdmVzIGFzIHRoZSB2aWV3J3MgY29udGV4dCdzIHVzZXIgZGF0YSBzbyB0aGF0Cisg
ICAgICAgIFBsYXRmb3JtQ0FMYXllciBjYW4gZ2V0IG91ciBBYnN0cmFjdENBQ0ZMYXllclRyZWVI
b3N0IHBvaW50ZXIgYXMgbmVlZGVkLgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Q0FX
aW46OmludmFsaWRhdGUpOiBDYW5jZWwgYW55IHBlbmRpbmcgZmx1c2hlcywgdGVhciBkb3duIG91
ciB2aWV3LAorICAgICAgICBhbmQgZGVzdHJveSB0aGUgZHVtbXkgd2luZG93IGlmIG5vIG90aGVy
IGxheWVyIGhvc3QgaXMgdXNpbmcgaXQuCisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RD
QVdpbjo6c2NoZWR1bGVMYXllckZsdXNoKTogQXNrIExheWVyQ2hhbmdlc0ZsdXNoZXIgdG8gY2Fs
bCB1cyBiYWNrCisgICAgICAgIHNvb24gdG8gcGVyZm9ybSB0aGUgZmx1c2guCisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3RDQVdpbjo6cGFydGljaXBhdGVzSW5EaXNwbGF5KTogQWRkZWQu
IFJldHVybnMgdHJ1ZSwgc2luY2Ugd2UgcmVuZGVyCisgICAgICAgIGVhY2ggZnJhbWUgdG8gYW4g
aW1hZ2UuCisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RDQVdpbjo6bmVlZHNEaXNwbGF5
KTogQWRkZWQuIFJldHVybnMgdHJ1ZSBpZiBpdCdzIG5vdyB0aW1lIHRvCisgICAgICAgIGRpc3Bs
YXlSZXR1cm5zIHRydWUgaWYgaXQncyBub3cgdGltZSB0byBkaXNwbGF5LgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0Q0FXaW46OnRpbWVVbnRpbE5leHREaXNwbGF5KTogQWRkZWQuIFJl
dHVybnMgaG93IG1hbnkgc2Vjb25kcyByZW1haW4KKyAgICAgICAgYmVmb3JlIHdlIG5lZWQgdG8g
ZGlzcGxheSBhZ2Fpbi4KKyAgICAgICAgKFdlYktpdDo6c2l6ZSk6IEFkZGVkLiBIZWxwZXIgZnVu
Y3Rpb24gdG8gZ2V0IHRoZSBzaXplIG9mIGEgV0tDQUNGSW1hZ2UuCisgICAgICAgIChXZWJLaXQ6
OnRvU2hhcmVhYmxlQml0bWFwKTogQWRkZWQuIEhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGEg
V0tDQUNGSW1hZ2UgdG8gYQorICAgICAgICBTaGFyZWFibGVCaXRtYXAuCisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3RDQVdpbjo6ZGlzcGxheSk6IEFkZGVkLiBSZW5kZXJzIHRoZSBuZXh0
IGZyYW1lIHRvIGFuIGltYWdlIGFuZCBzdHVmZnMKKyAgICAgICAgdGhlIGltYWdlIGludG8gdGhl
IFVwZGF0ZUluZm8gc3RydWN0LgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Q0FXaW46
OnNpemVEaWRDaGFuZ2UpOiBBZGRlZC4gVGVsbHMgdGhlIHZpZXcgYWJvdXQgdGhlIG5ldyBzaXpl
LgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Q0FXaW46OmZvcmNlUmVwYWludCk6IEFk
ZGVkLiBGbHVzaGVzIGFueSBwZW5kaW5nIGNoYW5nZXMgdG8gdGhlIHZpZXcuCisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3RDQVdpbjo6Y29udGV4dERpZENoYW5nZUNhbGxiYWNrKTogQWRk
ZWQuIFdLQ0FDRlZpZXcgY2FsbHMgdGhpcworICAgICAgICB3aGVuZXZlciBhbnkgY2hhbmdlcyBt
YWRlIHRvIHRoZSB2aWV3IG9yIGl0cyBsYXllciB0cmVlIGhhdmUgYmVlbiBmbHVzaGVkLiBKdXN0
IGNhbGxzCisgICAgICAgIHRocm91Z2ggdG8gY29udGV4dERpZENoYW5nZS4KKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdENBV2luOjpjb250ZXh0RGlkQ2hhbmdlKTogQWRkZWQuIFRlbGxz
IGxheWVycyB0aGF0IHRoZXkndmUgc3RhcnRlZAorICAgICAgICBhbmltYXRpbmcsIGFuZCB0ZWxs
cyB0aGUgRHJhd2luZ0FyZWFJbXBsIHRoYXQgd2UgbmVlZCB0byBkaXNwbGF5IGFnYWluLgorICAg
ICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Q0FXaW46OnJvb3RMYXllcik6IEFkZGVkLiBHZXRz
IHRoZSByb290IGxheWVyJ3MgUGxhdGZvcm1DQUxheWVyLgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVIb3N0Q0FXaW46OmFkZFBlbmRpbmdBbmltYXRlZExheWVyKTogQWRkZWQuIFN0b3JlcyB0
aGUgbGF5ZXIgc28gdGhhdCB3ZQorICAgICAgICBjYW4gdGVsbCBpdCBhbmltYXRpb25zIGhhdmUg
c3RhcnRlZCB0aGUgbmV4dCB0aW1lIHdlIGdldCBhIGNvbnRleHREaWRDaGFuZ2UgY2FsbGJhY2su
CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RDQVdpbjo6bGF5ZXJUcmVlRGlkQ2hhbmdl
KTogQWRkZWQuIFNjaGVkdWxlcyBhIGZsdXNoLCB1bmxlc3Mgd2UncmUKKyAgICAgICAgYWxyZWFk
eSBpbiB0aGUgcHJvY2VzcyBvZiBmbHVzaGluZy4gVGhpcyBjb2RlIGNhbWUgZnJvbSBXZWJDb3Jl
OjpXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC4KKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9z
dENBV2luOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3cpOiBBZGRlZC4gUGVyZm9ybXMgdGhl
IGZsdXNoLiBUaGlzCisgICAgICAgIGNvZGUgd2FzIGFkYXB0ZWQgZnJvbSBXZWJDb3JlOjpXS0NB
Q0ZWaWV3TGF5ZXJUcmVlSG9zdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9jYS93
aW4vTGF5ZXJUcmVlSG9zdENBV2luLmg6IFdyYXBwZWQgdGhpcyB3aG9sZSBoZWFkZXIgaW4gSEFW
RShXS1FDQSksCisgICAgICAgIHNpbmNlIHRoaXMgY2xhc3Mgb25seSB3b3JrcyB3aGVuIFdlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMgaXMgYXZhaWxhYmxlLiBBZGRlZCBhIGJ1bmNoIG9mCisgICAg
ICAgIG5ldyBtZW1iZXJzLgorCiAyMDExLTA0LTA0ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgYSB3YXkgZm9yIExheWVyVHJlZUhvc3QgdG8gcGFydGljaXBh
dGUgaW4gRHJhd2luZ0FyZWFJbXBsJ3Mgbm9ybWFsIGRpc3BsYXkgbWVjaGFuaXNtCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2ZjMwZGQ0Y2MwZDQzZWI0MWQwZjk4NTFlYjBkYWM3
ZWM2NWQwNzI1Li40ZGUzMTg4YmFiYjM3ZWQ3ZjkwYjc2MTA2NTg5ZDUwZjQ2MmQ1YzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIxLDYgKzIxLDcgQEAKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAogVlBBVEggPSBcCisgICAgJChXZWJLaXQyKSBcCiAgICAgJChXZWJLaXQyKS9QbHVnaW5Q
cm9jZXNzIFwKICAgICAkKFdlYktpdDIpL1NoYXJlZC9QbHVnaW5zIFwKICAgICAkKFdlYktpdDIp
L1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZSBcCkBAIC0xMDAsMyArMTAxLDE2IEBAIGFsbCA6
IFwKICVNZXNzYWdlcy5oIDogJS5tZXNzYWdlcy5pbiAkKFNDUklQVFMpCiAJQGVjaG8gR2VuZXJh
dGluZyBtZXNzYWdlIHJlY2VpdmVyIGZvciAkKi4uLgogCUBweXRob24gJChXZWJLaXQyKS9TY3Jp
cHRzL2dlbmVyYXRlLW1lc3NhZ2VzLWhlYWRlci5weSAkPCA+ICRACisKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyMgV2luZG93cy1zcGVjaWZpYyBydWxlcworCitpZmVxICgkKE9TKSxX
aW5kb3dzX05UKQorCithbGwgOiBIZWFkZXJEZXRlY3Rpb24uaAorCitIZWFkZXJEZXRlY3Rpb24u
aCA6IERlcml2ZWRTb3VyY2VzLm1ha2UKKwlpZiBbIC1mICIkKFdFQktJVE9VVFBVVERJUikvaW5j
bHVkZS9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnNC
YXNlLmgiIF0gfHwgWyAtZiAiJChXRUJLSVRMSUJSQVJJRVNESVIpL2luY2x1ZGUvV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zQmFzZS5oIiBdOyB0aGVu
IGVjaG8gIiNkZWZpbmUgSEFWRV9XS1FDQSAxIiA+ICRAOyBlbHNlIGVjaG8gPiAkQDsgZmkKKwor
ZW5kaWYgIyBXaW5kb3dzX05UCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IGNmZDYzZjRlNzk1NzlhN2U1NzYxMGM0
ODM1ZmMwMGE0OGVhYmEwMTIuLjM4YThlYzM5ZDUzMTZhMzc1NDZmYmZmZGI3ZmE5M2YwOWMwN2Qx
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYUltcGwuY3BwCkBAIC0xOTIsNiArMTkyLDEzIEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBs
OjpzZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIHNl
dE5lZWRzRGlzcGxheShyZWN0KTsKIH0KIAordm9pZCBEcmF3aW5nQXJlYUltcGw6OnNldExheWVy
SG9zdE5lZWRzRGlzcGxheSgpCit7CisgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdCk7CisgICAg
QVNTRVJUKG1fbGF5ZXJUcmVlSG9zdC0+cGFydGljaXBhdGVzSW5EaXNwbGF5KCkpOworICAgIHNj
aGVkdWxlRGlzcGxheSgpOworfQorCiB2b2lkIERyYXdpbmdBcmVhSW1wbDo6bGF5ZXJIb3N0RGlk
Rmx1c2hMYXllcnMoKQogewogICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oCmluZGV4
IDllOTM4NjllY2VmYTBiOWUwZTYwYzM3ZTBhNDBjMWE0NjgxM2NjZjkuLjQ3MWJhNTYwYzI3NDA4
YmNhMjA1ZmJiZjI2NWM2NGRkODFhYTQ0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPERyYXdpbmdBcmVhSW1wbD4gY3JlYXRlKFdlYlBh
Z2UqLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+RHJh
d2luZ0FyZWFJbXBsKCk7CiAKKyAgICB2b2lkIHNldExheWVySG9zdE5lZWRzRGlzcGxheSgpOwog
ICAgIHZvaWQgbGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcAppbmRl
eCA1YzY4OGUzZmQ1YjJlYWY3ZjUyMDkxODQzYmMzMGRiYTUyZDJkNDJlLi5iODIwNjM3MWE4YzZl
YmVlYWEyNTg1ZDMwNTMwOTIwM2Q2Y2RhNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwCkBAIC00NCwxMiArNDQsMTAgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhc3NSZWZQdHI8TGF5ZXJUcmVlSG9zdD4gTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UpCiB7Ci0jaWYgUExBVEZPUk0oQ0EpCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIHJldHVybiBMYXllclRyZWVIb3N0Q0FNYWM6OmNyZWF0ZSh3ZWJQ
YWdlKTsKLSNlbGlmIFBMQVRGT1JNKFdJTikKKyNlbGlmIFBMQVRGT1JNKFdJTikgJiYgSEFWRShX
S1FDQSkKICAgICByZXR1cm4gTGF5ZXJUcmVlSG9zdENBV2luOjpjcmVhdGUod2ViUGFnZSk7Ci0j
ZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4OTUyYjZmOTUwM2Y4NjlmYmI3Zjcy
YmViZDllMWNjNzBkOTJiMjk0Li40OTc0OWM5MTdlOTZlOTMzNDMwYWIwMDM1MDAwNzczMjU0YzA1
YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0xNDExLDE2ICsxNDExLDkgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBzZXR0aW5ncy0+c2V0RGVmYXVs
dEZvbnRTaXplKHN0b3JlLmdldFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpk
ZWZhdWx0Rm9udFNpemVLZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXREZWZhdWx0Rml4ZWRGb250
U2l6ZShzdG9yZS5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGVmYXVs
dEZpeGVkRm9udFNpemVLZXkoKSkpOwogCi0jaWYgUExBVEZPUk0oV0lOKQotICAgIC8vIFRlbXBv
cmFyaWx5IHR1cm4gb2ZmIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHVudGlsIHdlIGhhdmUgYSBn
b29kIHNvbHV0aW9uIGZvciByZW5kZXJpbmcgaXQuCi0gICAgc2V0dGluZ3MtPnNldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKLSAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0
ZWREcmF3aW5nRW5hYmxlZChmYWxzZSk7Ci0gICAgc2V0dGluZ3MtPnNldENhbnZhc1VzZXNBY2Nl
bGVyYXRlZERyYXdpbmcoZmFsc2UpOwotI2Vsc2UKICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGlu
Z3MtPnNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkS2V5KCkpKTsKICAg
ICBzZXR0aW5ncy0+c2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhzdG9yZS5nZXRCb29s
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdp
bmdLZXkoKSkpOwotI2VuZGlmCiAgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ0JvcmRl
cnNWaXNpYmxlS2V5KCkpKTsKICAgICBzZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHN0
b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y29tcG9zaXRpbmdSZXBh
aW50Q291bnRlcnNWaXNpYmxlS2V5KCkpKTsKICAgICBzZXR0aW5ncy0+c2V0V2ViR0xFbmFibGVk
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6d2ViR0xFbmFibGVk
S2V5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9j
YS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmNwcAppbmRleCBjOWE3MTEwYTY0ODlk
MjE2NjgzZGM5YTAzNWI2YmUwOThhNjA0NDQ4Li4xZmJjMzkxZjJhYmQzNzNiNjA3NjlkMTVhNDgy
ZWQ0ZDIzYjE1ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvY2Evd2luL0xheWVyVHJlZUhvc3RDQVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uY3BwCkBAIC0yNiwxMSAr
MjYsNTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMYXllclRyZWVIb3N0Q0FX
aW4uaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaWYgSEFWRShXS1FDQSkKKworI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW1w
bC5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIlVwZGF0ZUluZm8u
aCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQUJhc2UuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
TGF5ZXJDaGFuZ2VzRmx1c2hlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
V2ViQ29yZUluc3RhbmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9XS0NBQ0ZJbWFnZS5oPgorI2luY2x1ZGUgPFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
V0tDQUNGVmlldy5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCisjaWZkZWYgREVC
VUdfQUxMCisjcHJhZ21hIGNvbW1lbnQobGliLCAiV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9uc19k
ZWJ1ZyIpCisjZWxzZQorI3ByYWdtYSBjb21tZW50KGxpYiwgIldlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMiKQorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorc3RhdGljIEhXTkQgZHVtbXlXaW5kb3c7CitzdGF0aWMgTFBDV1NUUiBkdW1t
eVdpbmRvd0NsYXNzID0gTCJMYXllclRyZWVIb3N0Q0FXaW5kb3dDbGFzcyI7CitzdGF0aWMgc2l6
ZV90IHZhbGlkTGF5ZXJUcmVlSG9zdENvdW50OworCitzdGF0aWMgdm9pZCByZWdpc3RlckR1bW15
V2luZG93Q2xhc3MoKQoreworICAgIHN0YXRpYyBib29sIGRpZFJlZ2lzdGVyOworICAgIGlmIChk
aWRSZWdpc3RlcikKKyAgICAgICAgcmV0dXJuOworICAgIGRpZFJlZ2lzdGVyID0gdHJ1ZTsKKwor
ICAgIFdORENMQVNTVyB3bmRDbGFzcyA9IHswfTsKKyAgICB3bmRDbGFzcy5scHN6Q2xhc3NOYW1l
ID0gZHVtbXlXaW5kb3dDbGFzczsKKyAgICB3bmRDbGFzcy5scGZuV25kUHJvYyA9IDo6RGVmV2lu
ZG93UHJvY1c7CisgICAgd25kQ2xhc3MuaEluc3RhbmNlID0gaW5zdGFuY2VIYW5kbGUoKTsKKwor
ICAgIDo6UmVnaXN0ZXJDbGFzc1coJnduZENsYXNzKTsKK30KKworLy8gVGhpcyB3aW5kb3cgaXMg
bmV2ZXIgc2hvd24uIEl0IGlzIG9ubHkgbmVlZGVkIHNvIHRoYXQgRDNEIGNhbiBkZXRlcm1pbmUg
dGhlIGRpc3BsYXkgbW9kZSwgZXRjLgorc3RhdGljIEhXTkQgY3JlYXRlRHVtbXlXaW5kb3coKQor
eworICAgIHJlZ2lzdGVyRHVtbXlXaW5kb3dDbGFzcygpOworICAgIHJldHVybiA6OkNyZWF0ZVdp
bmRvd1coZHVtbXlXaW5kb3dDbGFzcywgMCwgV1NfUE9QVVAsIDAsIDAsIDEwLCAxMCwgMCwgMCwg
aW5zdGFuY2VIYW5kbGUoKSwgMCk7Cit9CisKIFBhc3NSZWZQdHI8TGF5ZXJUcmVlSG9zdENBV2lu
PiBMYXllclRyZWVIb3N0Q0FXaW46OmNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIFJl
ZlB0cjxMYXllclRyZWVIb3N0Q0FXaW4+IGhvc3QgPSBhZG9wdFJlZihuZXcgTGF5ZXJUcmVlSG9z
dENBV2luKHdlYlBhZ2UpKTsKQEAgLTQwLDYgKzg3LDggQEAgUGFzc1JlZlB0cjxMYXllclRyZWVI
b3N0Q0FXaW4+IExheWVyVHJlZUhvc3RDQVdpbjo6Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UpCiAK
IExheWVyVHJlZUhvc3RDQVdpbjo6TGF5ZXJUcmVlSG9zdENBV2luKFdlYlBhZ2UqIHdlYlBhZ2Up
CiAgICAgOiBMYXllclRyZWVIb3N0Q0Eod2ViUGFnZSkKKyAgICAsIG1faXNGbHVzaGluZ0xheWVy
Q2hhbmdlcyhmYWxzZSkKKyAgICAsIG1fbmV4dERpc3BsYXlUaW1lKDApCiB7CiB9CiAKQEAgLTQ5
LDE0ICs5OCwxNzQgQEAgTGF5ZXJUcmVlSG9zdENBV2luOjp+TGF5ZXJUcmVlSG9zdENBV2luKCkK
IAogdm9pZCBMYXllclRyZWVIb3N0Q0FXaW46OnBsYXRmb3JtSW5pdGlhbGl6ZShMYXllclRyZWVD
b250ZXh0JikKIHsKLSAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvNDU1Njc+IElt
cGxlbWVudCB0aGlzIQotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgKyt2YWxpZExheWVyVHJl
ZUhvc3RDb3VudDsKKyAgICBpZiAoIWR1bW15V2luZG93KQorICAgICAgICBkdW1teVdpbmRvdyA9
IGNyZWF0ZUR1bW15V2luZG93KCk7CisKKyAgICBtX3ZpZXcuYWRvcHRDRihXS0NBQ0ZWaWV3Q3Jl
YXRlKGtXS0NBQ0ZWaWV3RHJhd2luZ0Rlc3RpbmF0aW9uSW1hZ2UpKTsKKyAgICBXS0NBQ0ZWaWV3
U2V0Q29udGV4dFVzZXJEYXRhKG1fdmlldy5nZXQoKSwgc3RhdGljX2Nhc3Q8QWJzdHJhY3RDQUNG
TGF5ZXJUcmVlSG9zdCo+KHRoaXMpKTsKKyAgICBXS0NBQ0ZWaWV3U2V0TGF5ZXIobV92aWV3Lmdl
dCgpLCByb290TGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKKyAgICBXS0NBQ0ZWaWV3U2V0Q29u
dGV4dERpZENoYW5nZUNhbGxiYWNrKG1fdmlldy5nZXQoKSwgY29udGV4dERpZENoYW5nZUNhbGxi
YWNrLCB0aGlzKTsKKworICAgIENHUmVjdCBib3VuZHMgPSBtX3dlYlBhZ2UtPmJvdW5kcygpOwor
ICAgIFdLQ0FDRlZpZXdVcGRhdGUobV92aWV3LmdldCgpLCBkdW1teVdpbmRvdywgJmJvdW5kcyk7
Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdENBV2luOjppbnZhbGlkYXRlKCkKK3sKKyAgICBMYXll
ckNoYW5nZXNGbHVzaGVyOjpzaGFyZWQoKS5jYW5jZWxQZW5kaW5nRmx1c2godGhpcyk7CisKKyAg
ICBXS0NBQ0ZWaWV3VXBkYXRlKG1fdmlldy5nZXQoKSwgMCwgMCk7CisgICAgV0tDQUNGVmlld1Nl
dENvbnRleHRVc2VyRGF0YShtX3ZpZXcuZ2V0KCksIDApOworICAgIFdLQ0FDRlZpZXdTZXRMYXll
cihtX3ZpZXcuZ2V0KCksIDApOworICAgIFdLQ0FDRlZpZXdTZXRDb250ZXh0RGlkQ2hhbmdlQ2Fs
bGJhY2sobV92aWV3LmdldCgpLCAwLCAwKTsKKworICAgIExheWVyVHJlZUhvc3RDQTo6aW52YWxp
ZGF0ZSgpOworCisgICAgaWYgKC0tdmFsaWRMYXllclRyZWVIb3N0Q291bnQpCisgICAgICAgIHJl
dHVybjsKKyAgICA6OkRlc3Ryb3lXaW5kb3coZHVtbXlXaW5kb3cpOworICAgIGR1bW15V2luZG93
ID0gMDsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0Q0FXaW46OnNjaGVkdWxlTGF5ZXJGbHVzaCgp
CiB7Ci0gICAgLy8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9yZy9iLzQ1NTY3PiBJbXBsZW1lbnQg
dGhpcyEKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIExheWVyQ2hhbmdlc0ZsdXNoZXI6OnNo
YXJlZCgpLmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24odGhpcyk7Cit9CisKK2Jvb2wgTGF5
ZXJUcmVlSG9zdENBV2luOjpwYXJ0aWNpcGF0ZXNJbkRpc3BsYXkoKQoreworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIExheWVyVHJlZUhvc3RDQVdpbjo6bmVlZHNEaXNwbGF5KCkKK3sKKyAg
ICByZXR1cm4gdGltZVVudGlsTmV4dERpc3BsYXkoKSA8PSAwOworfQorCitkb3VibGUgTGF5ZXJU
cmVlSG9zdENBV2luOjp0aW1lVW50aWxOZXh0RGlzcGxheSgpCit7CisgICAgcmV0dXJuIG1fbmV4
dERpc3BsYXlUaW1lIC0gY3VycmVudFRpbWUoKTsKK30KKworc3RhdGljIEludFNpemUgc2l6ZShX
S0NBQ0ZJbWFnZVJlZiBpbWFnZSkKK3sKKyAgICByZXR1cm4gSW50U2l6ZShXS0NBQ0ZJbWFnZUdl
dFdpZHRoKGltYWdlKSwgV0tDQUNGSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKK30KKworc3RhdGlj
IFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiB0b1NoYXJlYWJsZUJpdG1hcChXS0NBQ0ZJbWFn
ZVJlZiBpbWFnZSkKK3sKKyAgICBzaXplX3QgZmlsZU1hcHBpbmdTaXplOworICAgIEhBTkRMRSBt
YXBwaW5nID0gV0tDQUNGSW1hZ2VDb3B5RmlsZU1hcHBpbmcoaW1hZ2UsICZmaWxlTWFwcGluZ1Np
emUpOworICAgIGlmICghbWFwcGluZykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8
U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFkb3B0KG1hcHBpbmcs
IGZpbGVNYXBwaW5nU2l6ZSwgU2hhcmVkTWVtb3J5OjpSZWFkV3JpdGUpOworICAgIGlmICghc2hh
cmVkTWVtb3J5KSB7CisgICAgICAgIDo6Q2xvc2VIYW5kbGUobWFwcGluZyk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKworICAgIC8vIFdLQ0FDRkltYWdlIG5ldmVyIGhhcyBhbiBhbHBoYSBj
aGFubmVsLgorICAgIHJldHVybiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzaXplKGltYWdlKSwg
MCwgc2hhcmVkTWVtb3J5LnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdENBV2lu
OjpkaXNwbGF5KFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCit7CisgICAgQ0dQb2ludCBpbWFnZU9y
aWdpbjsKKyAgICBDRlRpbWVJbnRlcnZhbCBuZXh0RHJhd1RpbWU7CisgICAgUmV0YWluUHRyPFdL
Q0FDRkltYWdlUmVmPiBpbWFnZShBZG9wdENGLCBXS0NBQ0ZWaWV3Q29weURyYXduSW1hZ2UobV92
aWV3LmdldCgpLCAmaW1hZ2VPcmlnaW4sICZuZXh0RHJhd1RpbWUpKTsKKyAgICBtX25leHREaXNw
bGF5VGltZSA9IG5leHREcmF3VGltZSAtIENBQ3VycmVudE1lZGlhVGltZSgpICsgY3VycmVudFRp
bWUoKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm47CisgICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwID0gdG9TaGFyZWFibGVCaXRtYXAoaW1hZ2UuZ2V0KCkpOworICAg
IGlmICghYml0bWFwKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFiaXRtYXAtPmNyZWF0ZUhh
bmRsZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSkpCisgICAgICAgIHJldHVybjsKKyAgICB1cGRh
dGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMgPSBJbnRSZWN0KEludFBvaW50KGltYWdlT3JpZ2luLngs
IG1fd2ViUGFnZS0+c2l6ZSgpLmhlaWdodCgpIC0gaW1hZ2VPcmlnaW4ueSAtIGJpdG1hcC0+c2l6
ZSgpLmhlaWdodCgpKSwgYml0bWFwLT5zaXplKCkpOworICAgIHVwZGF0ZUluZm8udXBkYXRlUmVj
dHMuYXBwZW5kKHVwZGF0ZUluZm8udXBkYXRlUmVjdEJvdW5kcyk7Cit9CisKK3ZvaWQgTGF5ZXJU
cmVlSG9zdENBV2luOjpzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1Np
emUpCit7CisgICAgTGF5ZXJUcmVlSG9zdENBOjpzaXplRGlkQ2hhbmdlKG5ld1NpemUpOworICAg
IENHUmVjdCBib3VuZHMgPSBDR1JlY3RNYWtlKDAsIDAsIG5ld1NpemUud2lkdGgoKSwgbmV3U2l6
ZS5oZWlnaHQoKSk7CisgICAgV0tDQUNGVmlld1VwZGF0ZShtX3ZpZXcuZ2V0KCksIGR1bW15V2lu
ZG93LCAmYm91bmRzKTsKKyAgICBXS0NBQ0ZWaWV3Rmx1c2hDb250ZXh0KG1fdmlldy5nZXQoKSk7
Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdENBV2luOjpmb3JjZVJlcGFpbnQoKQoreworICAgIExh
eWVyVHJlZUhvc3RDQTo6Zm9yY2VSZXBhaW50KCk7CisgICAgV0tDQUNGVmlld0ZsdXNoQ29udGV4
dChtX3ZpZXcuZ2V0KCkpOworfQorCit2b2lkIExheWVyVHJlZUhvc3RDQVdpbjo6Y29udGV4dERp
ZENoYW5nZUNhbGxiYWNrKFdLQ0FDRlZpZXdSZWYgdmlldywgdm9pZCogaW5mbykKK3sKKyAgICBM
YXllclRyZWVIb3N0Q0FXaW4qIGhvc3QgPSBzdGF0aWNfY2FzdDxMYXllclRyZWVIb3N0Q0FXaW4q
PihpbmZvKTsKKyAgICBBU1NFUlRfQVJHKHZpZXcsIHZpZXcgPT0gaG9zdC0+bV92aWV3KTsKKyAg
ICBob3N0LT5jb250ZXh0RGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdENBV2lu
Ojpjb250ZXh0RGlkQ2hhbmdlKCkKK3sKKyAgICAvLyBTZW5kIGN1cnJlbnRUaW1lIHRvIHRoZSBw
ZW5kaW5nIGFuaW1hdGlvbnMuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IENBQ0YgaW4gYSBj
YWxsYmFjaworICAgIC8vIHdoaWNoIG9jY3VycyBhZnRlciB0aGUgZHJhd0luQ29udGV4dCBjYWxs
cy4gU28gY3VycmVudFRpbWUgaXMgdmVyeSBjbG9zZSB0byB0aGUgdGltZQorICAgIC8vIHRoZSBh
bmltYXRpb25zIGFjdHVhbGx5IHN0YXJ0CisgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjpj
dXJyZW50VGltZSgpOworCisgICAgSGFzaFNldDxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiA+Ojpp
dGVyYXRvciBlbmQgPSBtX3BlbmRpbmdBbmltYXRlZExheWVycy5lbmQoKTsKKyAgICBmb3IgKEhh
c2hTZXQ8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gPjo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdB
bmltYXRlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5h
bmltYXRpb25TdGFydGVkKGN1cnJlbnRUaW1lKTsKKworICAgIG1fcGVuZGluZ0FuaW1hdGVkTGF5
ZXJzLmNsZWFyKCk7CisKKyAgICBtX25leHREaXNwbGF5VGltZSA9IDA7CisgICAgc3RhdGljX2Nh
c3Q8RHJhd2luZ0FyZWFJbXBsKj4obV93ZWJQYWdlLT5kcmF3aW5nQXJlYSgpKS0+c2V0TGF5ZXJI
b3N0TmVlZHNEaXNwbGF5KCk7Cit9CisKK1BsYXRmb3JtQ0FMYXllciogTGF5ZXJUcmVlSG9zdENB
V2luOjpyb290TGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHcmFwaGlj
c0xheWVyQ0EqPihMYXllclRyZWVIb3N0Q0E6OnJvb3RMYXllcigpKS0+cGxhdGZvcm1DQUxheWVy
KCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdENBV2luOjphZGRQZW5kaW5nQW5pbWF0ZWRMYXll
cihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbGF5ZXIpCit7CisgICAgbV9wZW5kaW5nQW5p
bWF0ZWRMYXllcnMuYWRkKGxheWVyKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0Q0FXaW46Omxh
eWVyVHJlZURpZENoYW5nZSgpCit7CisgICAgaWYgKG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcykg
eworICAgICAgICAvLyBUaGUgbGF5ZXIgdHJlZSBpcyBjaGFuZ2luZyBhcyBhIHJlc3VsdCBvZiBm
bHVzaGluZyBHcmFwaGljc0xheWVyIGNoYW5nZXMgdG8gdGhlaXIKKyAgICAgICAgLy8gdW5kZXJs
eWluZyBQbGF0Zm9ybUNBTGF5ZXJzLiBXZSdsbCBmbHVzaCB0aG9zZSBjaGFuZ2VzIHRvIHRoZSBj
b250ZXh0IGFzIHBhcnQgb2YgdGhhdAorICAgICAgICAvLyBwcm9jZXNzLCBzbyB0aGVyZSdzIG5v
IG5lZWQgdG8gc2NoZWR1bGUgYW5vdGhlciBmbHVzaCBoZXJlLgorICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8gVGhlIGxheWVyIHRyZWUgaXMgY2hhbmdpbmcgYXMgYSByZXN1bHQgb2Yg
c29tZW9uZSBtb2RpZnlpbmcgYSBQbGF0Zm9ybUNBTGF5ZXIgdGhhdCBkb2Vzbid0CisgICAgLy8g
aGF2ZSBhIGNvcnJlc3BvbmRpbmcgR3JhcGhpY3NMYXllci4gU2NoZWR1bGUgYSBmbHVzaCBzaW5j
ZSB3ZSB3b24ndCBzY2hlZHVsZSBvbmUgdGhyb3VnaCB0aGUKKyAgICAvLyBub3JtYWwgR3JhcGhp
Y3NMYXllciBtZWNoYW5pc21zLgorICAgIExheWVyQ2hhbmdlc0ZsdXNoZXI6OnNoYXJlZCgpLmZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24odGhpcyk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9z
dENBV2luOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3coKQoreworICAgIFJlZlB0cjxMYXll
clRyZWVIb3N0Q0E+IHByb3RlY3Rvcih0aGlzKTsKKworICAgIG1faXNGbHVzaGluZ0xheWVyQ2hh
bmdlcyA9IHRydWU7CisKKyAgICAvLyBGbHVzaCBjaGFuZ2VzIHN0b3JlZCB1cCBpbiBHcmFwaGlj
c0xheWVycyB0byB0aGVpciB1bmRlcmx5aW5nIFBsYXRmb3JtQ0FMYXllcnMsIGlmCisgICAgLy8g
cmVxdWVzdGVkLgorICAgIHBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7CisKKyAgICAvLyBG
bHVzaCBjaGFuZ2VzIHN0b3JlZCB1cCBpbiBQbGF0Zm9ybUNBTGF5ZXJzIHRvIHRoZSBjb250ZXh0
IHNvIHRoZXkgd2lsbCBiZSByZW5kZXJlZC4KKyAgICBXS0NBQ0ZWaWV3Rmx1c2hDb250ZXh0KG1f
dmlldy5nZXQoKSk7CisKKyAgICBtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMgPSBmYWxzZTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFdLUUNBKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVI
b3N0Q0FXaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5
ZXJUcmVlSG9zdENBV2luLmgKaW5kZXggMjFiM2M1OGQxOTRiYzZiMTU2OTVmMzM0ZDVlNzkzYjEx
OTZmMWFkZC4uZjkzYWQ3NzdkODdmM2NiY2IzMTYyYTAzMDAwMTFlZjNiNDM2OTk1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVI
b3N0Q0FXaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvY2Evd2lu
L0xheWVyVHJlZUhvc3RDQVdpbi5oCkBAIC0yNiwxMSArMjYsMjAgQEAKICNpZm5kZWYgTGF5ZXJU
cmVlSG9zdENBV2luX2gKICNkZWZpbmUgTGF5ZXJUcmVlSG9zdENBV2luX2gKIAorI2luY2x1ZGUg
IkhlYWRlckRldGVjdGlvbi5oIgorCisjaWYgSEFWRShXS1FDQSkKKwogI2luY2x1ZGUgIkxheWVy
VHJlZUhvc3RDQS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9z
dC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCit0eXBlZGVmIHN0cnVjdCBfV0tDQUNGVmlldyogV0tDQUNGVmlld1JlZjsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIExheWVyVHJlZUhvc3RDQVdpbiA6IHB1YmxpYyBMYXllclRy
ZWVIb3N0Q0EgeworY2xhc3MgTGF5ZXJUcmVlSG9zdENBV2luIDogcHVibGljIExheWVyVHJlZUhv
c3RDQSwgcHJpdmF0ZSBXZWJDb3JlOjpBYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllclRyZWVIb3N0Q0FXaW4+IGNyZWF0ZShXZWJQ
YWdlKik7CiAgICAgdmlydHVhbCB+TGF5ZXJUcmVlSG9zdENBV2luKCk7CkBAIC0zOCwxMyArNDcs
MzYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBMYXllclRyZWVIb3N0Q0FXaW4o
V2ViUGFnZSopOwogCisgICAgc3RhdGljIHZvaWQgY29udGV4dERpZENoYW5nZUNhbGxiYWNrKFdL
Q0FDRlZpZXdSZWYsIHZvaWQqIGluZm8pOworICAgIHZvaWQgY29udGV4dERpZENoYW5nZSgpOwor
CiAgICAgLy8gTGF5ZXJUcmVlSG9zdAorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpOworICAgIHZpcnR1YWwgdm9pZCBzaXplRGlk
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpOwogICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZUxheWVyRmx1c2goKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFydGljaXBhdGVzSW5E
aXNwbGF5KCk7CisgICAgdmlydHVhbCBib29sIG5lZWRzRGlzcGxheSgpOworICAgIHZpcnR1YWwg
ZG91YmxlIHRpbWVVbnRpbE5leHREaXNwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXko
VXBkYXRlSW5mbyYpOwogCiAgICAgLy8gTGF5ZXJUcmVlSG9zdENBCiAgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZShMYXllclRyZWVDb250ZXh0Jik7CisKKyAgICAvLyBBYnN0cmFj
dENBQ0ZMYXllclRyZWVIb3N0CisgICAgdmlydHVhbCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIq
IHJvb3RMYXllcigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5nQW5pbWF0ZWRM
YXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4pOworICAgIHZpcnR1YWwg
dm9pZCBsYXllclRyZWVEaWRDaGFuZ2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hQZW5kaW5n
TGF5ZXJDaGFuZ2VzTm93KCk7CisKKyAgICBSZXRhaW5QdHI8V0tDQUNGVmlld1JlZj4gbV92aWV3
OworICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gPiBtX3BlbmRp
bmdBbmltYXRlZExheWVyczsKKyAgICBib29sIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlczsKKyAg
ICBkb3VibGUgbV9uZXh0RGlzcGxheVRpbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAorI2VuZGlmIC8vIEhBVkUoV0tRQ0EpCisKICNlbmRpZiAvLyBMYXllclRyZWVIb3N0Q0FXaW5f
aAo=
</data>
<flag name="review"
          id="80715"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>