<?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>52594</bug_id>
          
          <creation_ts>2011-01-17 13:30:04 -0800</creation_ts>
          <short_desc>Move chromium iframe shim code to cross-platform file</short_desc>
          <delta_ts>2011-02-04 13:59:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Hogan">robert</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ananta</cc>
    
    <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>kenneth</cc>
    
    <cc>ojan</cc>
    
    <cc>tulrich</cc>
    
    <cc>vestbo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>335493</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-01-17 13:30:04 -0800</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=46223 for more detail

Relevant unit test is plugins/iframe-shims.html

If you try out plugins/iframe-shims.html in QtTestBrowser, you&apos;ll see the iframe is hidden behind the plugin.

So the z-order is wrong. Hoping Kenneth can shed some light!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335500</commentid>
    <comment_count>1</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-01-17 13:40:25 -0800</bug_when>
    <thetext>The layout test passes btw, but I think that may be bug with the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342081</commentid>
    <comment_count>2</comment_count>
      <attachid>80559</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-01-29 04:52:23 -0800</bug_when>
    <thetext>Created attachment 80559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342153</commentid>
    <comment_count>3</comment_count>
      <attachid>80559</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-01-29 15:03:41 -0800</bug_when>
    <thetext>Comment on attachment 80559
Patch

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

&gt; Source/WebCore/plugins/PluginView.cpp:1531
&gt; +static void getObjectStack(const RenderObject* ro,
&gt; +                           Vector&lt;const RenderObject*&gt;* roStack)

Keep this one line

&gt; Source/WebCore/plugins/PluginView.cpp:1543
&gt; +static bool checkStackOnTop(
&gt; +        const Vector&lt;const RenderObject*&gt;&amp; iframeZstack,
&gt; +        const Vector&lt;const RenderObject*&gt;&amp; pluginZstack)

Also here.

I do not like the name very much, what about isIframeAbovePlugin or so? that seems more webkitish

&gt; Source/WebCore/plugins/PluginView.cpp:1547
&gt; +    for (size_t i1 = 0, i2 = 0;
&gt; +         i1 &lt; iframeZstack.size() &amp;&amp; i2 &lt; pluginZstack.size();
&gt; +         i1++, i2++) {

Are i1 and i2 ever different?

&gt; Source/WebCore/plugins/PluginView.cpp:1584
&gt; +            // Inspect the document order.  Later order means higher
&gt; +            // stacking.

One line

&gt; Source/WebCore/plugins/PluginView.cpp:1609
&gt; +void PluginView::windowCutOutRects(const IntRect&amp; frameRect,
&gt; +                                               Vector&lt;IntRect&gt;&amp; cutOutRects)

One line. I&apos;m not sure cutOut rects is the most descriptive name

&gt; Source/WebCore/plugins/PluginView.cpp:1619
&gt; +    // Get the parent widget

I find the comment a bit redundant

&gt; Source/WebCore/plugins/PluginView.cpp:1624
&gt; +    FrameView* parentFrameView = static_cast&lt;FrameView*&gt;(parentWidget);

There is no toFrameView method?

&gt; Source/WebCore/plugins/PluginView.cpp:1633
&gt; +        const FrameView* frameView =
&gt; +            static_cast&lt;const FrameView*&gt;((*it).get());

one line :-)

&gt; Source/WebCore/plugins/PluginView.cpp:1649
&gt; +                IntPoint point =
&gt; +                    roundedIntPoint(iframeRenderer-&gt;localToAbsolute());

I would keep this on one line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342786</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-01-31 13:29:25 -0800</bug_when>
    <thetext>Isn&apos;t there some way we could put this into shared code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343353</commentid>
    <comment_count>5</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-02-01 11:02:59 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Isn&apos;t there some way we could put this into shared code?

See https://bugs.webkit.org/show_bug.cgi?id=28914#c9

AFAICT Chromium instantiates its own plugin objects and only uses PluginViewNone from the WebCore code.

The functions could be added as simple utility functions in a file PluginViewSupport.cpp and shared there. Would that be acceptable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343526</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-01 14:11:04 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Isn&apos;t there some way we could put this into shared code?
&gt; 
&gt; See https://bugs.webkit.org/show_bug.cgi?id=28914#c9
&gt; 
&gt; AFAICT Chromium instantiates its own plugin objects and only uses PluginViewNone from the WebCore code.

I think we subclass PluginViewBase now.  See WebKit/chromium/src/WebPluginContainerImpl.{h,cpp}


&gt; 
&gt; The functions could be added as simple utility functions in a file PluginViewSupport.cpp and shared there. Would that be acceptable?

Yeah, this is what I was suggesting we do.  Maybe the file could be more specifically named... IFrameShimSupport.{h,cpp}?  That&apos;s not the best name either :-P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344089</commentid>
    <comment_count>7</comment_count>
      <attachid>80938</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-02-02 11:44:52 -0800</bug_when>
    <thetext>Created attachment 80938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344104</commentid>
    <comment_count>8</comment_count>
      <attachid>80942</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-02-02 11:58:59 -0800</bug_when>
    <thetext>Created attachment 80942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344106</commentid>
    <comment_count>9</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-02-02 12:00:30 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Yeah, this is what I was suggesting we do.  Maybe the file could be more specifically named... IFrameShimSupport.{h,cpp}?  That&apos;s not the best name either :-P

Both names suck, so I chose mine! Please r- if you think a file that can take future cross-platform utility functions is a bad idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344146</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-02 12:35:58 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #6)
&gt; &gt; Yeah, this is what I was suggesting we do.  Maybe the file could be more specifically named... IFrameShimSupport.{h,cpp}?  That&apos;s not the best name either :-P
&gt; 
&gt; Both names suck, so I chose mine! Please r- if you think a file that can take future cross-platform utility functions is a bad idea.

In general, WebCore seems to frown at giving files a &quot;utility&quot; style name as that suggests a future dumping ground.  Instead, if we can use a more specific name, then people won&apos;t be tempted to turn this file into a dumping ground.  Implicit in that argument is that dumping grounds are bad :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344278</commentid>
    <comment_count>11</comment_count>
      <attachid>80973</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-02-02 14:46:52 -0800</bug_when>
    <thetext>Created attachment 80973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344279</commentid>
    <comment_count>12</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-02-02 14:47:56 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; 
&gt; Are i1 and i2 ever different?
&gt; 

Updated per your comments. I don&apos;t think i1 and i2 are ever different, so have remove the duplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344280</commentid>
    <comment_count>13</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-02-02 14:48:18 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; In general, WebCore seems to frown at giving files a &quot;utility&quot; style name as that suggests a future dumping ground.  Instead, if we can use a more specific name, then people won&apos;t be tempted to turn this file into a dumping ground.  Implicit in that argument is that dumping grounds are bad :-)

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344289</commentid>
    <comment_count>14</comment_count>
      <attachid>80973</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-02 14:58:12 -0800</bug_when>
    <thetext>Comment on attachment 80973
Patch

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

Sorry, just nit-picking wording at this point.  I hope you find this helpful :)

&gt; Source/WebCore/plugins/IframeShimSupport.h:20
&gt; +#ifndef IframeShimSupport_h

nit: IFrame* instead of Iframe* to match HTMLIFrameElement.h ?

&gt; Source/WebCore/plugins/IframeShimSupport.h:30
&gt; +void windowRectsPluginShouldNotPaintOver(Element*, Widget* parentWidget, const IntRect&amp; frameRect, Vector&lt;IntRect&gt;&amp; cutOutRects);

it might work nicely to use the term &quot;occlusions&quot; here.  the plugin is occluded by iframes on the page.

  {compute,calculate,get}PluginOcclusions

I think the Chromium code is using the term &quot;cut-outs&quot; in the same way that I&apos;m trying to use occlusions.  I suppose you could also use the term &quot;clip&quot; here.

  {compute,calculate,get}PluginClipRects

These seem to say the same thing as &quot;window rects the plugin should not paint over&quot; and are a bit shorter and in the case of &quot;clip rects&quot; more canonical?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344962</commentid>
    <comment_count>15</comment_count>
      <attachid>81107</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-02-03 13:28:54 -0800</bug_when>
    <thetext>Created attachment 81107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344979</commentid>
    <comment_count>16</comment_count>
      <attachid>81107</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-03 13:58:28 -0800</bug_when>
    <thetext>Comment on attachment 81107
Patch

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

Looks good, just one remaining nit.  R=me w/ that resolved.

&gt; Source/WebCore/plugins/IFrameShimSupport.h:30
&gt; +void getPluginOcclusions(Element*, Widget* parentWidget, const IntRect&amp; frameRect, Vector&lt;IntRect&gt;&amp; cutOutRects);

nit-picky nit: rename |cutOutRects| to |occlusions| to be consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345612</commentid>
    <comment_count>17</comment_count>
      <attachid>81245</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-02-04 10:50:25 -0800</bug_when>
    <thetext>Created attachment 81245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345711</commentid>
    <comment_count>18</comment_count>
      <attachid>81245</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-04 12:49:38 -0800</bug_when>
    <thetext>Comment on attachment 81245
Patch

Clearing flags on attachment: 81245

Committed r77660: &lt;http://trac.webkit.org/changeset/77660&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345712</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-04 12:49:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345777</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-04 13:59:52 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 81245:

http/tests/websocket/tests/handshake-fail-by-sub-protocol-mismatch.html bug 53809 (author: abarth@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80559</attachid>
            <date>2011-01-29 04:52:23 -0800</date>
            <delta_ts>2011-02-02 11:44:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52594-20110129125221.patch</filename>
            <type>text/plain</type>
            <size>10517</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjYWExMmI5YjExYjAzMDM2NzJjN2VlZmZiYWI2MWRmMzAyN2RhYTEwLi45MWY0YWEw
YWU2YTNiZDFiNjc3MTFmNzI3MTUwMTE1NGFhNzkxOWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAK
KzIwMTEtMDEtMjkgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjU5NAorCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tp
cHBlZDogVW5za2lwIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwKKwogMjAxMS0wMS0yNyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIENocm9t
aXVtIHRlc3QgZXhwZWN0YXRpb24gdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXgg
M2ZjZTg5MmJlZmJlNGU1NzM2ZWU4MTJkZTAzZWEzZTU2MjFmYmVlZC4uNzU4MjNjOTMxOGU3YWEz
NDEyYjk4NTA5NzM3OGM2NGQzODI5YzRjNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC00
OTE3LDEwICs0OTE3LDYgQEAgZmFzdC9maWxlc3lzdGVtCiBodHRwL3Rlc3RzL2NhbnZhcy93ZWJn
bC9vcmlnaW4tY2xlYW4tY29uZm9ybWFuY2UuaHRtbAogCiAKLSMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MjIzCi0jIFRoZSBXZWJLaXQgcGx1Z2luIGltcGxlbWVu
dGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgaWZyYW1lIHNoaW1zLgotcGx1Z2lucy9pZnJhbWUtc2hp
bXMuaHRtbAotCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njk2
NgogIyBbUXRdIGZhc3QvbWVkaWEvY29sb3ItZG9lcy1ub3QtaW5jbHVkZS1hbHBoYS5odG1sIGZh
aWxzCiBmYXN0L21lZGlhL2NvbG9yLWRvZXMtbm90LWluY2x1ZGUtYWxwaGEuaHRtbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGYyNjMyZWE0NjYwMGNhZDAwN2VhNzgwNGEwZjZhNjQ0NzM2MzMzN2MuLmNhYjlkYTcw
YzYyYzBkNzlkMmZiNzRkYzY1N2FkZDU4MTI0ZmUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NSBAQAorMjAxMS0wMS0yOSAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBpZnJhbWUg
c2hpbXMgZG9uJ3Qgd29yaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTI1OTQKKworICAgICAgICBBZGQgY2hyb21pdW0tc3BlY2lmaWMgY29kZSBmb3Ig
aWRlbnRpZnlpbmcgYW5kIGN1dHRpbmcgb3V0CisgICAgICAgIGlmcmFtZSBzaGltcyBmcm9tIHBs
dWdpbnMgdG8gY3Jvc3MtcGxhdGZvcm0gUGx1Z2luVmlldy4KKyAgICAgICAgQW1lbmQgUGx1Z2lu
Vmlld1F0IHRvIHVzZSB0aGlzIGNvZGUgdG8gaGFuZGxlIHNoaW1zIGNvcnJlY3RseS4KKyAgICAg
ICAgVW5mb3J0dW5hdGVseSwgd2UgY2FuJ3QgcmVtb3ZlIHRoZSBjaHJvbWl1bS1zcGVjaWZpYyBj
b2RlCisgICAgICAgIGZyb20gV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYXMgdGhlIGNocm9t
aXVtIHBvcnQgZG9lcyBub3QKKyAgICAgICAgdXNlIFBsdWdpblZpZXcuCisgICAgICAgCisgICAg
ICAgICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE9iamVj
dFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrU3RhY2tPblRvcCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3Ojp3aW5kb3dDdXRPdXRSZWN0cyk6CisgICAgICAgICogcGx1Z2lu
cy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCk6CisKIDIw
MTEtMDEtMjcgIEdyZWcgQ29sZXR0YSAgPGdyZWcuY29sZXR0YUBub2tpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCmluZGV4IDllMTllM2ViZmM0NTA5ODM3NDBhODY0YzA5MmVkY2JkMmFmYzVhMDUuLjg4
ODEzMDUzYmNmZTE0YTlhNWQ3YmMxYTUxOGY0MjVmMDIwOWJkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBHaXJpc2ggUmFtYWtyaXNobmFuIDxnaXJpc2hAZm9y
d2FyZGJpYXMuaW4+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUyNiw2ICsx
NTI3LDEzNCBAQCB2b2lkIFBsdWdpblZpZXc6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChi
b29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBs
dWdpblZpZXcoMCk7CiB9CiAKK3N0YXRpYyB2b2lkIGdldE9iamVjdFN0YWNrKGNvbnN0IFJlbmRl
ck9iamVjdCogcm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8Y29uc3QgUmVu
ZGVyT2JqZWN0Kj4qIHJvU3RhY2spCit7CisgICAgcm9TdGFjay0+Y2xlYXIoKTsKKyAgICB3aGls
ZSAocm8pIHsKKyAgICAgICAgcm9TdGFjay0+YXBwZW5kKHJvKTsKKyAgICAgICAgcm8gPSByby0+
cGFyZW50KCk7CisgICAgfQorfQorCisvLyBSZXR1cm5zIHRydWUgaWYgc3RhY2sxIGlzIGF0IG9y
IGFib3ZlIHN0YWNrMgorc3RhdGljIGJvb2wgY2hlY2tTdGFja09uVG9wKAorICAgICAgICBjb25z
dCBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIGlmcmFtZVpzdGFjaywKKyAgICAgICAgY29u
c3QgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+JiBwbHVnaW5ac3RhY2spCit7CisgICAgZm9y
IChzaXplX3QgaTEgPSAwLCBpMiA9IDA7CisgICAgICAgICBpMSA8IGlmcmFtZVpzdGFjay5zaXpl
KCkgJiYgaTIgPCBwbHVnaW5ac3RhY2suc2l6ZSgpOworICAgICAgICAgaTErKywgaTIrKykgewor
ICAgICAgICAvLyBUaGUgcm9vdCBpcyBhdCB0aGUgZW5kIG9mIHRoZXNlIHN0YWNrcy4gIFdlIHdh
bnQgdG8gaXRlcmF0ZQorICAgICAgICAvLyByb290LWRvd253YXJkcyBzbyB3ZSBpbmRleCBiYWNr
d2FyZHMgZnJvbSB0aGUgZW5kLgorICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJvMSA9IGlm
cmFtZVpzdGFja1tpZnJhbWVac3RhY2suc2l6ZSgpIC0gMSAtIGkxXTsKKyAgICAgICAgY29uc3Qg
UmVuZGVyT2JqZWN0KiBybzIgPSBwbHVnaW5ac3RhY2tbcGx1Z2luWnN0YWNrLnNpemUoKSAtIDEg
LSBpMl07CisKKyAgICAgICAgaWYgKHJvMSAhPSBybzIpIHsKKyAgICAgICAgICAgIC8vIFdoZW4g
d2UgZmluZCBub2RlcyBpbiB0aGUgc3RhY2sgdGhhdCBhcmUgbm90IHRoZSBzYW1lLCB0aGVuCisg
ICAgICAgICAgICAvLyB3ZSd2ZSBmb3VuZCB0aGUgbm9kZXMganVzdCBiZWxvdyB0aGUgbG93ZXN0
IGNvbW1lbnQgYW5jZXN0b3IuCisgICAgICAgICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggc2hvdWxk
IGJlIG9uIHRvcC4KKworICAgICAgICAgICAgLy8gU2VlIGlmIHotaW5kZXggZGV0ZXJtaW5lcyBh
biBvcmRlci4KKyAgICAgICAgICAgIGlmIChybzEtPnN0eWxlKCkgJiYgcm8yLT5zdHlsZSgpKSB7
CisgICAgICAgICAgICAgICAgaW50IHoxID0gcm8xLT5zdHlsZSgpLT56SW5kZXgoKTsKKyAgICAg
ICAgICAgICAgICBpbnQgejIgPSBybzItPnN0eWxlKCktPnpJbmRleCgpOworICAgICAgICAgICAg
ICAgIGlmICh6MSA+IHoyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBpZiAoejEgPCB6MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB0aGUgcGx1Z2luIGRvZXMgbm90
IGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCBpdCBzdGFja3MgYmVoaW5kIHRoZSBpZnJhbWUuCisg
ICAgICAgICAgICAvLyBUaGlzIGlzIGZvciBtYWludGFpbmluZyBjb21wYXRpYmlsaXR5IHdpdGgg
SUUuCisgICAgICAgICAgICBpZiAocm8yLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IFN0YXRpY1Bv
c2l0aW9uKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIDAndGggZWxlbWVudHMgb2YgdGhlc2Ug
UmVuZGVyT2JqZWN0IGFycmF5cyByZXByZXNlbnQgdGhlIHBsdWdpbiBub2RlIGFuZAorICAgICAg
ICAgICAgICAgIC8vIHRoZSBpZnJhbWUuCisgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwbHVnaW5SZW5kZXJPYmplY3QgPSBwbHVnaW5ac3RhY2tbMF07CisgICAgICAgICAgICAg
ICAgY29uc3QgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJPYmplY3QgPSBpZnJhbWVac3RhY2tb
MF07CisKKyAgICAgICAgICAgICAgICBpZiAocGx1Z2luUmVuZGVyT2JqZWN0LT5zdHlsZSgpICYm
IGlmcmFtZVJlbmRlck9iamVjdC0+c3R5bGUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
cGx1Z2luUmVuZGVyT2JqZWN0LT5zdHlsZSgpLT56SW5kZXgoKSA+IGlmcmFtZVJlbmRlck9iamVj
dC0+c3R5bGUoKS0+ekluZGV4KCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJbnNwZWN0IHRoZSBkb2N1bWVudCBvcmRlci4g
IExhdGVyIG9yZGVyIG1lYW5zIGhpZ2hlcgorICAgICAgICAgICAgLy8gc3RhY2tpbmcuCisgICAg
ICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCA9IHJvMS0+cGFyZW50KCk7CisgICAg
ICAgICAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBBU1NFUlQocGFyZW50ID09IHJvMi0+cGFyZW50KCkpOworCisgICAgICAgICAgICBm
b3IgKGNvbnN0IFJlbmRlck9iamVjdCogcm8gPSBwYXJlbnQtPmZpcnN0Q2hpbGQoKTsgcm87IHJv
ID0gcm8tPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocm8gPT0gcm8xKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKHJv
ID09IHJvMikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBBU1NFUlQoZmFsc2UpOyAvLyBXZSBzaG91bGQgaGF2ZSBzZWVuIHJvMSBh
bmQgcm8yIGJ5IG5vdy4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gUmV0dXJuIGEgc2V0IG9mIHJlY3RhbmdsZXMg
dGhhdCBzaG91bGQgbm90IGJlIG92ZXJkcmF3biBieSB0aGUKKy8vIHBsdWdpbiAoImN1dG91dHMi
KS4gIFRoaXMgaGVscHMgaW1wbGVtZW50IHRoZSAiaWZyYW1lIHNoaW0iCisvLyB0ZWNobmlxdWUg
b2Ygb3ZlcmxheWluZyBhIHdpbmRvd2VkIHBsdWdpbiB3aXRoIGNvbnRlbnQgZnJvbSB0aGUKKy8v
IHBhZ2UuICBJbiBhIG51dHNoZWxsLCBpZnJhbWUgZWxlbWVudHMgc2hvdWxkIG9jY2x1ZGUgcGx1
Z2lucyB3aGVuCisvLyB0aGV5IG9jY3VyIGhpZ2hlciBpbiB0aGUgc3RhY2tpbmcgb3JkZXIuCit2
b2lkIFBsdWdpblZpZXc6OndpbmRvd0N1dE91dFJlY3RzKGNvbnN0IEludFJlY3QmIGZyYW1lUmVj
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9y
PEludFJlY3Q+JiBjdXRPdXRSZWN0cykKK3sKKyAgICBSZW5kZXJPYmplY3QqIHBsdWdpbk5vZGUg
PSBtX2VsZW1lbnQtPnJlbmRlcmVyKCk7CisgICAgQVNTRVJUKHBsdWdpbk5vZGUpOworICAgIGlm
ICghcGx1Z2luTm9kZS0+c3R5bGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3Rvcjxjb25z
dCBSZW5kZXJPYmplY3QqPiBwbHVnaW5ac3RhY2s7CisgICAgVmVjdG9yPGNvbnN0IFJlbmRlck9i
amVjdCo+IGlmcmFtZVpzdGFjazsKKyAgICBnZXRPYmplY3RTdGFjayhwbHVnaW5Ob2RlLCAmcGx1
Z2luWnN0YWNrKTsKKworICAgIC8vIEdldCB0aGUgcGFyZW50IHdpZGdldAorICAgIFdpZGdldCog
cGFyZW50V2lkZ2V0ID0gdGhpcy0+cGFyZW50KCk7CisgICAgaWYgKCFwYXJlbnRXaWRnZXQtPmlz
RnJhbWVWaWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lVmlldyogcGFyZW50RnJh
bWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFyZW50V2lkZ2V0KTsKKworICAgIGNv
bnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPiogY2hpbGRyZW4gPSBwYXJlbnRGcmFtZVZpZXct
PmNoaWxkcmVuKCk7CisgICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gY2hpbGRyZW4tPmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLT5lbmQoKTsgKytp
dCkgeworICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgRnJhbWVWaWV3J3MgYmVjYXVzZSBp
ZnJhbWVzIHNob3cgdXAgYXMgRnJhbWVWaWV3cy4KKyAgICAgICAgaWYgKCEoKml0KS0+aXNGcmFt
ZVZpZXcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNvbnN0IEZyYW1lVmll
dyogZnJhbWVWaWV3ID0KKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEZyYW1lVmlldyo+
KCgqaXQpLmdldCgpKTsKKyAgICAgICAgLy8gQ2hlY2sgdG8gbWFrZSBzdXJlIHdlIGNhbiBnZXQg
Ym90aCB0aGUgZWxlbWVudCBhbmQgdGhlIFJlbmRlck9iamVjdAorICAgICAgICAvLyBmb3IgdGhp
cyBGcmFtZVZpZXcsIGlmIHdlIGNhbid0IGp1c3QgbW92ZSBvbiB0byB0aGUgbmV4dCBvYmplY3Qu
CisgICAgICAgIGlmICghZnJhbWVWaWV3LT5mcmFtZSgpIHx8ICFmcmFtZVZpZXctPmZyYW1lKCkt
Pm93bmVyRWxlbWVudCgpCisgICAgICAgICAgICB8fCAhZnJhbWVWaWV3LT5mcmFtZSgpLT5vd25l
ckVsZW1lbnQoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gZnJhbWVWaWV3LT5mcmFtZSgpLT5vd25lckVsZW1lbnQo
KTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRl
cmVyKCk7CisKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppZnJh
bWVUYWcpCisgICAgICAgICAgICAmJiBpZnJhbWVSZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKKyAgICAgICAgICAgICYmICghaWZyYW1lUmVu
ZGVyZXItPnN0eWxlKCkgfHwgaWZyYW1lUmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFKSkgeworICAgICAgICAgICAgZ2V0T2JqZWN0U3RhY2soaWZyYW1lUmVuZGVyZXIs
ICZpZnJhbWVac3RhY2spOworICAgICAgICAgICAgaWYgKGNoZWNrU3RhY2tPblRvcChpZnJhbWVa
c3RhY2ssIHBsdWdpblpzdGFjaykpIHsKKyAgICAgICAgICAgICAgICBJbnRQb2ludCBwb2ludCA9
CisgICAgICAgICAgICAgICAgICAgIHJvdW5kZWRJbnRQb2ludChpZnJhbWVSZW5kZXJlci0+bG9j
YWxUb0Fic29sdXRlKCkpOworICAgICAgICAgICAgICAgIFJlbmRlckJveCogcmJveCA9IHRvUmVu
ZGVyQm94KGlmcmFtZVJlbmRlcmVyKTsKKyAgICAgICAgICAgICAgICBJbnRTaXplIHNpemUocmJv
eC0+d2lkdGgoKSwgcmJveC0+aGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIGN1dE91dFJlY3Rz
LmFwcGVuZChJbnRSZWN0KHBvaW50LCBzaXplKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA4
ZjhmMTNmNjU5ZjViNDM2MzljOWU0MjQzOGIzYjdjYTU2MWU2MmI0Li5iYWE1ZmQxMThhNDlhNGQ1
MTJmMDdkMTE0YjQ3MGQ5NGRmMmMxZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
aApAQCAtMjc4LDYgKzI3OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBz
ZXRDYWxsaW5nUGx1Z2luKGJvb2wpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgaW52YWxpZGF0ZVdp
bmRvd2xlc3NQbHVnaW5SZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdm9pZCB3aW5kb3dD
dXRPdXRSZWN0cyhjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QsIFZlY3RvcjxJbnRSZWN0PiYgY3V0
T3V0UmVjdHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAppbmRleCA2Y2YzNmU5NjVj
ZjExNGMzOGVkM2RmNTM4N2U1ZmI0OWExNzQ1NDZiLi5mMjViNzhkZmRlODc1NDQ4NGIxZjM0ZWQw
ZTY4ZGQ3YTZiNGZkYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3
UXQuY3BwCkBAIC02MjcsMTAgKzYyNywxOSBAQCB2b2lkIFBsdWdpblZpZXc6OnNldE5QV2luZG93
SWZOZWVkZWQoKQogCiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewogICAgICAgICBwbGF0Zm9ybVBs
dWdpbldpZGdldCgpLT5zZXRHZW9tZXRyeShtX3dpbmRvd1JlY3QpOworCisgICAgICAgIC8vIEN1
dCBvdXQgYXJlYXMgb2YgdGhlIHBsdWdpbiBvY2NsdWRlZCBieSBpZnJhbWUgc2hpbXMKKyAgICAg
ICAgVmVjdG9yPEludFJlY3Q+IGN1dE91dFJlY3RzOworICAgICAgICBRUmVnaW9uIGNsaXBSZWdp
b24gPSBRUmVnaW9uKG1fY2xpcFJlY3QpOworICAgICAgICB3aW5kb3dDdXRPdXRSZWN0cyhtX3dp
bmRvd1JlY3QsIGN1dE91dFJlY3RzKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
dXRPdXRSZWN0cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgY3V0T3V0UmVjdHNbaV0ubW92
ZSgtZnJhbWVSZWN0KCkueCgpLCAtZnJhbWVSZWN0KCkueSgpKTsKKyAgICAgICAgICAgIGNsaXBS
ZWdpb24gPSBjbGlwUmVnaW9uLnN1YnRyYWN0ZWQoUVJlZ2lvbihjdXRPdXRSZWN0c1tpXSkpOwor
ICAgICAgICB9CiAgICAgICAgIC8vIGlmIHNldE1hc2sgaXMgc2V0IHdpdGggYW4gZW1wdHkgUVJl
Z2lvbiwgbm8gY2xpcHBpbmcgd2lsbAogICAgICAgICAvLyBiZSBwZXJmb3JtZWQsIHNvIGluIHRo
YXQgY2FzZSB3ZSBoaWRlIHRoZSBwbHVnaW4gdmlldwotICAgICAgICBwbGF0Zm9ybVBsdWdpbldp
ZGdldCgpLT5zZXRWaXNpYmxlKCFtX2NsaXBSZWN0LmlzRW1wdHkoKSk7Ci0gICAgICAgIHBsYXRm
b3JtUGx1Z2luV2lkZ2V0KCktPnNldE1hc2soUVJlZ2lvbihtX2NsaXBSZWN0KSk7CisgICAgICAg
IHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPnNldFZpc2libGUoIWNsaXBSZWdpb24uaXNFbXB0eSgp
KTsKKyAgICAgICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+c2V0TWFzayhjbGlwUmVnaW9uKTsK
IAogICAgICAgICBtX25wV2luZG93LnggPSBtX3dpbmRvd1JlY3QueCgpOwogICAgICAgICBtX25w
V2luZG93LnkgPSBtX3dpbmRvd1JlY3QueSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80938</attachid>
            <date>2011-02-02 11:44:52 -0800</date>
            <delta_ts>2011-02-02 11:58:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52594-20110202194450.patch</filename>
            <type>text/plain</type>
            <size>22739</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMzFkNWUxZWQ2ODA4NmFkY2FiZTM2MDcwN2UxNDBlYWYwYmU2NGRlLi5mOTU2NTM4
YzgxNDI0MzdhZDk3ZTExZDlkNDdjNDk3ODIwY2UzNDQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDItMDIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY2hyb21pdW0gaWZy
YW1lIHNoaW0gY29kZSB0byBjcm9zcy1wbGF0Zm9ybSBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjU5NAorCisgICAgICAgICogcGxhdGZvcm0v
cXQvU2tpcHBlZDogVW5za2lwIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwKKwogMjAxMS0wMi0w
MiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5z
a2lwIGEgdGVzdCB0aGF0IGp1c3QgbmVlZHMgcGxhdGZvcm0tc3BlY2lmaWMgcmVzdWx0cy4gUmUt
Y2xhc3NpZnkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGI4YWE3Zjg5Yjg4N2MxNzlhZTNk
OTY5ZGM5ZWIyMzc0ZmEzMDBmNDkuLjM2MWVjMjExZjliOGViNzMyODc0N2YxMDBiODVhOGM3Y2Qz
YmEyNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtNDkxNywxMCArNDkxNyw2IEBAIGZh
c3QvZmlsZXN5c3RlbQogaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFuLWNvbmZv
cm1hbmNlLmh0bWwKIAogCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NjIyMwotIyBUaGUgV2ViS2l0IHBsdWdpbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBw
b3J0IGlmcmFtZSBzaGltcy4KLXBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwKLQogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY5NjYKICMgW1F0XSBmYXN0L21lZGlh
L2NvbG9yLWRvZXMtbm90LWluY2x1ZGUtYWxwaGEuaHRtbCBmYWlscwogZmFzdC9tZWRpYS9jb2xv
ci1kb2VzLW5vdC1pbmNsdWRlLWFscGhhLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OTM1NmJmYjQyYjEx
OTIxNTc3NGNmMGJiNTI4ZGFhZDVkMTQ5ZjFkLi4yYzAwMDY3M2Q0ZDk5NWI1Mzc5ZDMyOWUxYmY5
Yzk1YjRhNzI1YzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDItMDIgIFJv
YmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY2hyb21pdW0gaWZyYW1lIHNoaW0gY29kZSB0
byBjcm9zcy1wbGF0Zm9ybSBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjU5NAorCisgICAgICAgIE1vdmUgQ2hyb21pdW0gY29kZSBmb3IgaWRl
bnRpZnlpbmcgYW5kIGN1dHRpbmcgb3V0CisgICAgICAgIGlmcmFtZSBzaGltcyBmcm9tIHBsdWdp
bnMgdG8gY3Jvc3MtcGxhdGZvcm0gdXRpbGl0eSBmaWxlCisgICAgICAgIFBsdWdpblZpZXdTdXBw
b3J0LmNwcC4KKyAgICAgICAgQW1lbmQgUGx1Z2luVmlld1F0IHRvIHVzZSB0aGlzIGNvZGUgdG8g
aGFuZGxlIHNoaW1zIGNvcnJlY3RseS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkIENo
cm9taXVtIHN1cHBvcnQgZm9yIFBsdWdpblZpZXdTdXBwb3J0LmNwcAorICAgICAgICAqIFdlYkNv
cmUucHJvOiBBZGQgUXQgc3VwcG9ydCBmb3IgUGx1Z2luVmlld1N1cHBvcnQuY3BwCisgICAgICAg
ICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdT
dXBwb3J0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRPYmplY3RTdGFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjppZnJhbWVJc0Fib3ZlUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6
OndpbmRvd1JlY3RzUGx1Z2luU2hvdWxkTm90UGFpbnRPdmVyKToKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpblZpZXdTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2lu
Vmlld1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93SWZO
ZWVkZWQpOgorCiAyMDExLTAyLTAyICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0OGM5
ZmZhMmRhZTRlOTc0ZDBkMjM3YzEyZTBmZDcwZDZhMjc0NzM4Li43OWU5Mzc1M2VkNGE4ZjI0ODU1
OGIyMzYwYzc3ZDcyMDk5YjQxMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjA0LDYgKzM2MDQs
OCBAQAogICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2luVmlldy5jcHAnLAogICAgICAgICAgICAg
J3BsdWdpbnMvUGx1Z2luVmlldy5oJywKICAgICAgICAgICAgICdwbHVnaW5zL1BsdWdpblZpZXdO
b25lLmNwcCcsCisgICAgICAgICAgICAncGx1Z2lucy9QbHVnaW5WaWV3U3VwcG9ydC5jcHAnLAor
ICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2luVmlld1N1cHBvcnQuaCcsCiAgICAgICAgICAgICAn
cGx1Z2lucy9ucGFwaS5jcHAnLAogICAgICAgICAgICAgJ3BsdWdpbnMvbnBmdW5jdGlvbnMuaCcs
CiAgICAgICAgICAgICAncmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybwppbmRleCAyMDA0MjQyMDk1YTVhMzQ4N2EzNzkzOGUwNWFhNDRlMjZlZDFjMTYw
Li5iOTVjZmE2NzI2YmM1ZDc5NzNjZjJmZjdiNzlkMjJjNDJkNjAxNTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwpAQCAtMTI5MCw2ICsxMjkwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGx1Z2lucy9QbHVnaW5Q
YWNrYWdlLmNwcCBcCiAgICAgcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIFwKICAgICBwbHVnaW5z
L1BsdWdpblZpZXcuY3BwIFwKKyAgICBwbHVnaW5zL1BsdWdpblZpZXdTdXBwb3J0LmNwcCBcCiAg
ICAgcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAgXAogICAgIHJlbmRlcmluZy9icmVha19s
aW5lcy5jcHAgXAogICAgIHJlbmRlcmluZy9CaWRpUnVuLmNwcCBcCkBAIC0yMjQ5LDYgKzIyNTAs
NyBAQCBIRUFERVJTICs9IFwKICAgICBwbHVnaW5zL1BsdWdpblBhY2thZ2UuaCBcCiAgICAgcGx1
Z2lucy9QbHVnaW5TdHJlYW0uaCBcCiAgICAgcGx1Z2lucy9QbHVnaW5WaWV3LmggXAorICAgIHBs
dWdpbnMvUGx1Z2luVmlld1N1cHBvcnQuaCBcCiAgICAgcGx1Z2lucy93aW4vUGx1Z2luTWVzc2Fn
ZVRocm90dGxlcldpbi5oIFwKICAgICByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmggXAogICAg
IHJlbmRlcmluZy9icmVha19saW5lcy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCmluZGV4IDllMTllM2ViZmM0NTA5ODM3NDBhODY0YzA5MmVkY2JkMmFmYzVhMDUuLjgwOWU5
ODdiMTgyOWRjNDE1N2ZmMGVlMTUzYzNhNzkwZGMyOWRiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMCBHaXJpc2ggUmFtYWtyaXNobmFuIDxnaXJpc2hAZm9yd2Fy
ZGJpYXMuaW4+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXdTdXBwb3J0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2IwYTQ2NjE1ZGQ0
YTMyMGNjMjkxNDk5MTc4ODUwOTI4MDNlYmMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3U3VwcG9ydC5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luVmlld1N1cHBvcnQu
aCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIldpZGdldC5oIgorCisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKworLy8gVGhpcyBmaWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBp
bXBsZW1lbnRpbmcgaWZyYW1lIHNoaW1zLlRoZSBjb2RlCisvLyBpcyBzaGFyZWQgYnkgcGxhdGZv
cm1zIHRoYXQgaW5oZXJpdCBmcm9tIFBsdWdpblZpZXcgKFF0LCBHdGspIGFuZCB0aG9zZSB0aGF0
CisvLyBkbyBub3QgKENocm9taXVtKS4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMg
dm9pZCBnZXRPYmplY3RTdGFjayhjb25zdCBSZW5kZXJPYmplY3QqIHJvLCBWZWN0b3I8Y29uc3Qg
UmVuZGVyT2JqZWN0Kj4qIHJvU3RhY2spCit7CisgICAgcm9TdGFjay0+Y2xlYXIoKTsKKyAgICB3
aGlsZSAocm8pIHsKKyAgICAgICAgcm9TdGFjay0+YXBwZW5kKHJvKTsKKyAgICAgICAgcm8gPSBy
by0+cGFyZW50KCk7CisgICAgfQorfQorCisvLyBSZXR1cm5zIHRydWUgaWYgc3RhY2sxIGlzIGF0
IG9yIGFib3ZlIHN0YWNrMgorc3RhdGljIGJvb2wgaWZyYW1lSXNBYm92ZVBsdWdpbihjb25zdCBW
ZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIGlmcmFtZVpzdGFjaywgY29uc3QgVmVjdG9yPGNv
bnN0IFJlbmRlck9iamVjdCo+JiBwbHVnaW5ac3RhY2spCit7CisgICAgZm9yIChzaXplX3QgaTEg
PSAwLCBpMiA9IDA7CisgICAgICAgICBpMSA8IGlmcmFtZVpzdGFjay5zaXplKCkgJiYgaTIgPCBw
bHVnaW5ac3RhY2suc2l6ZSgpOworICAgICAgICAgaTErKywgaTIrKykgeworICAgICAgICAvLyBU
aGUgcm9vdCBpcyBhdCB0aGUgZW5kIG9mIHRoZXNlIHN0YWNrcy4gIFdlIHdhbnQgdG8gaXRlcmF0
ZQorICAgICAgICAvLyByb290LWRvd253YXJkcyBzbyB3ZSBpbmRleCBiYWNrd2FyZHMgZnJvbSB0
aGUgZW5kLgorICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJvMSA9IGlmcmFtZVpzdGFja1tp
ZnJhbWVac3RhY2suc2l6ZSgpIC0gMSAtIGkxXTsKKyAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0
KiBybzIgPSBwbHVnaW5ac3RhY2tbcGx1Z2luWnN0YWNrLnNpemUoKSAtIDEgLSBpMl07CisKKyAg
ICAgICAgaWYgKHJvMSAhPSBybzIpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gd2UgZmluZCBub2Rl
cyBpbiB0aGUgc3RhY2sgdGhhdCBhcmUgbm90IHRoZSBzYW1lLCB0aGVuCisgICAgICAgICAgICAv
LyB3ZSd2ZSBmb3VuZCB0aGUgbm9kZXMganVzdCBiZWxvdyB0aGUgbG93ZXN0IGNvbW1lbnQgYW5j
ZXN0b3IuCisgICAgICAgICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggc2hvdWxkIGJlIG9uIHRvcC4K
KworICAgICAgICAgICAgLy8gU2VlIGlmIHotaW5kZXggZGV0ZXJtaW5lcyBhbiBvcmRlci4KKyAg
ICAgICAgICAgIGlmIChybzEtPnN0eWxlKCkgJiYgcm8yLT5zdHlsZSgpKSB7CisgICAgICAgICAg
ICAgICAgaW50IHoxID0gcm8xLT5zdHlsZSgpLT56SW5kZXgoKTsKKyAgICAgICAgICAgICAgICBp
bnQgejIgPSBybzItPnN0eWxlKCktPnpJbmRleCgpOworICAgICAgICAgICAgICAgIGlmICh6MSA+
IHoyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBp
ZiAoejEgPCB6MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBJZiB0aGUgcGx1Z2luIGRvZXMgbm90IGhhdmUgYW4gZXhw
bGljaXQgei1pbmRleCBpdCBzdGFja3MgYmVoaW5kIHRoZSBpZnJhbWUuCisgICAgICAgICAgICAv
LyBUaGlzIGlzIGZvciBtYWludGFpbmluZyBjb21wYXRpYmlsaXR5IHdpdGggSUUuCisgICAgICAg
ICAgICBpZiAocm8yLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IFN0YXRpY1Bvc2l0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVGhlIDAndGggZWxlbWVudHMgb2YgdGhlc2UgUmVuZGVyT2JqZWN0
IGFycmF5cyByZXByZXNlbnQgdGhlIHBsdWdpbiBub2RlIGFuZAorICAgICAgICAgICAgICAgIC8v
IHRoZSBpZnJhbWUuCisgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwbHVnaW5S
ZW5kZXJPYmplY3QgPSBwbHVnaW5ac3RhY2tbMF07CisgICAgICAgICAgICAgICAgY29uc3QgUmVu
ZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJPYmplY3QgPSBpZnJhbWVac3RhY2tbMF07CisKKyAgICAg
ICAgICAgICAgICBpZiAocGx1Z2luUmVuZGVyT2JqZWN0LT5zdHlsZSgpICYmIGlmcmFtZVJlbmRl
ck9iamVjdC0+c3R5bGUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luUmVuZGVy
T2JqZWN0LT5zdHlsZSgpLT56SW5kZXgoKSA+IGlmcmFtZVJlbmRlck9iamVjdC0+c3R5bGUoKS0+
ekluZGV4KCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBJbnNwZWN0IHRoZSBkb2N1bWVudCBvcmRlci4gIExhdGVyIG9yZGVy
IG1lYW5zIGhpZ2hlciBzdGFja2luZy4KKyAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCog
cGFyZW50ID0gcm8xLT5wYXJlbnQoKTsKKyAgICAgICAgICAgIGlmICghcGFyZW50KQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIEFTU0VSVChwYXJlbnQgPT0gcm8y
LT5wYXJlbnQoKSk7CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiBybyA9
IHBhcmVudC0+Zmlyc3RDaGlsZCgpOyBybzsgcm8gPSByby0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICAgICAgICAgIGlmIChybyA9PSBybzEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICBpZiAocm8gPT0gcm8yKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChmYWxzZSk7
IC8vIFdlIHNob3VsZCBoYXZlIHNlZW4gcm8xIGFuZCBybzIgYnkgbm93LgorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisv
LyBSZXR1cm4gYSBzZXQgb2YgcmVjdGFuZ2xlcyB0aGF0IHNob3VsZCBub3QgYmUgb3ZlcmRyYXdu
IGJ5IHRoZQorLy8gcGx1Z2luICgiY3V0b3V0cyIpLiAgVGhpcyBoZWxwcyBpbXBsZW1lbnQgdGhl
ICJpZnJhbWUgc2hpbSIKKy8vIHRlY2huaXF1ZSBvZiBvdmVybGF5aW5nIGEgd2luZG93ZWQgcGx1
Z2luIHdpdGggY29udGVudCBmcm9tIHRoZQorLy8gcGFnZS4gIEluIGEgbnV0c2hlbGwsIGlmcmFt
ZSBlbGVtZW50cyBzaG91bGQgb2NjbHVkZSBwbHVnaW5zIHdoZW4KKy8vIHRoZXkgb2NjdXIgaGln
aGVyIGluIHRoZSBzdGFja2luZyBvcmRlci4KK3ZvaWQgd2luZG93UmVjdHNQbHVnaW5TaG91bGRO
b3RQYWludE92ZXIoRWxlbWVudCogZWxlbWVudCwgV2lkZ2V0KiBwYXJlbnRXaWRnZXQsIGNvbnN0
IEludFJlY3QmIGZyYW1lUmVjdCwgVmVjdG9yPEludFJlY3Q+JiBjdXRPdXRSZWN0cykKK3sKKyAg
ICBSZW5kZXJPYmplY3QqIHBsdWdpbk5vZGUgPSBlbGVtZW50LT5yZW5kZXJlcigpOworICAgIEFT
U0VSVChwbHVnaW5Ob2RlKTsKKyAgICBpZiAoIXBsdWdpbk5vZGUtPnN0eWxlKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4gcGx1Z2luWnN0YWNrOwor
ICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiBpZnJhbWVac3RhY2s7CisgICAgZ2V0T2Jq
ZWN0U3RhY2socGx1Z2luTm9kZSwgJnBsdWdpblpzdGFjayk7CisKKyAgICBpZiAoIXBhcmVudFdp
ZGdldC0+aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWVWaWV3KiBw
YXJlbnRGcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnRXaWRnZXQpOwor
CisgICAgY29uc3QgSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+KiBjaGlsZHJlbiA9IHBhcmVudEZy
YW1lVmlldy0+Y2hpbGRyZW4oKTsKKyAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZHJlbi0+YmVnaW4oKTsgaXQgIT0gY2hpbGRyZW4tPmVu
ZCgpOyArK2l0KSB7CisgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBGcmFtZVZpZXcncyBi
ZWNhdXNlIGlmcmFtZXMgc2hvdyB1cCBhcyBGcmFtZVZpZXdzLgorICAgICAgICBpZiAoISgqaXQp
LT5pc0ZyYW1lVmlldygpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgY29uc3Qg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxjb25zdCBGcmFtZVZpZXcqPigoKml0
KS5nZXQoKSk7CisgICAgICAgIC8vIENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBjYW4gZ2V0IGJvdGgg
dGhlIGVsZW1lbnQgYW5kIHRoZSBSZW5kZXJPYmplY3QKKyAgICAgICAgLy8gZm9yIHRoaXMgRnJh
bWVWaWV3LCBpZiB3ZSBjYW4ndCBqdXN0IG1vdmUgb24gdG8gdGhlIG5leHQgb2JqZWN0LgorICAg
ICAgICBpZiAoIWZyYW1lVmlldy0+ZnJhbWUoKSB8fCAhZnJhbWVWaWV3LT5mcmFtZSgpLT5vd25l
ckVsZW1lbnQoKQorICAgICAgICAgICAgfHwgIWZyYW1lVmlldy0+ZnJhbWUoKS0+b3duZXJFbGVt
ZW50KCktPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBIVE1M
RWxlbWVudCogZWxlbWVudCA9IGZyYW1lVmlldy0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7Cisg
ICAgICAgIFJlbmRlck9iamVjdCogaWZyYW1lUmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigp
OworCisgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFn
KQorICAgICAgICAgICAgJiYgaWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCkuaW50ZXJzZWN0cyhmcmFtZVJlY3QpCisgICAgICAgICAgICAmJiAoIWlmcmFtZVJlbmRlcmVy
LT5zdHlsZSgpIHx8IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklT
SUJMRSkpIHsKKyAgICAgICAgICAgIGdldE9iamVjdFN0YWNrKGlmcmFtZVJlbmRlcmVyLCAmaWZy
YW1lWnN0YWNrKTsKKyAgICAgICAgICAgIGlmIChpZnJhbWVJc0Fib3ZlUGx1Z2luKGlmcmFtZVpz
dGFjaywgcGx1Z2luWnN0YWNrKSkgeworICAgICAgICAgICAgICAgIEludFBvaW50IHBvaW50ID0g
cm91bmRlZEludFBvaW50KGlmcmFtZVJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUoKSk7CisgICAg
ICAgICAgICAgICAgUmVuZGVyQm94KiByYm94ID0gdG9SZW5kZXJCb3goaWZyYW1lUmVuZGVyZXIp
OworICAgICAgICAgICAgICAgIEludFNpemUgc2l6ZShyYm94LT53aWR0aCgpLCByYm94LT5oZWln
aHQoKSk7CisgICAgICAgICAgICAgICAgY3V0T3V0UmVjdHMuYXBwZW5kKEludFJlY3QocG9pbnQs
IHNpemUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5W
aWV3U3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3U3VwcG9ydC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU5YjUwMGQ2ZmU2OWVmNmFjMDRkZjMxODY3ZTE0ZjQyMTBhNzQxNTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdTdXBwb3J0
LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBSb2JlcnQgSG9n
YW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBQbHVnaW5WaWV3U3VwcG9ydF9oCisjZGVmaW5lIFBsdWdpblZpZXdTdXBwb3J0
X2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgRWxlbWVudDsKK2NsYXNzIFdpZGdldDsKK2NsYXNzIEludFJlY3Q7CisKK3ZvaWQgd2luZG93
UmVjdHNQbHVnaW5TaG91bGROb3RQYWludE92ZXIoRWxlbWVudCosIFdpZGdldCogcGFyZW50V2lk
Z2V0LCBjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QsIFZlY3RvcjxJbnRSZWN0PiYgY3V0T3V0UmVj
dHMpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQbHVnaW5WaWV3U3Vw
cG9ydF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKaW5kZXgg
NmNmMzZlOTY1Y2YxMTRjMzhlZDNkZjUzODdlNWZiNDlhMTc0NTQ2Yi4uYmM1MzA0MTQ2MWRjNmQw
ZTYwODg4OGJmODk0NWFmZjc5NDBjZjZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQv
UGx1Z2luVmlld1F0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgorI2luY2x1ZGUgIlBsdWdpblZpZXdTdXBwb3J0Lmgi
CiAKICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgIkJyaWRnZS5oIgpAQCAtNjI3LDEwICs2MjgsMTkg
QEAgdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVlZGVkKCkKIAogICAgIGlmIChtX2lz
V2luZG93ZWQpIHsKICAgICAgICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+c2V0R2VvbWV0cnko
bV93aW5kb3dSZWN0KTsKKworICAgICAgICAvLyBDdXQgb3V0IGFyZWFzIG9mIHRoZSBwbHVnaW4g
b2NjbHVkZWQgYnkgaWZyYW1lIHNoaW1zCisgICAgICAgIFZlY3RvcjxJbnRSZWN0PiBjdXRPdXRS
ZWN0czsKKyAgICAgICAgUVJlZ2lvbiBjbGlwUmVnaW9uID0gUVJlZ2lvbihtX2NsaXBSZWN0KTsK
KyAgICAgICAgd2luZG93UmVjdHNQbHVnaW5TaG91bGROb3RQYWludE92ZXIobV9lbGVtZW50LCB0
aGlzLT5wYXJlbnQoKSwgZnJhbWVSZWN0KCksIGN1dE91dFJlY3RzKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjdXRPdXRSZWN0cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAg
Y3V0T3V0UmVjdHNbaV0ubW92ZSgtZnJhbWVSZWN0KCkueCgpLCAtZnJhbWVSZWN0KCkueSgpKTsK
KyAgICAgICAgICAgIGNsaXBSZWdpb24gPSBjbGlwUmVnaW9uLnN1YnRyYWN0ZWQoUVJlZ2lvbihj
dXRPdXRSZWN0c1tpXSkpOworICAgICAgICB9CiAgICAgICAgIC8vIGlmIHNldE1hc2sgaXMgc2V0
IHdpdGggYW4gZW1wdHkgUVJlZ2lvbiwgbm8gY2xpcHBpbmcgd2lsbAogICAgICAgICAvLyBiZSBw
ZXJmb3JtZWQsIHNvIGluIHRoYXQgY2FzZSB3ZSBoaWRlIHRoZSBwbHVnaW4gdmlldwotICAgICAg
ICBwbGF0Zm9ybVBsdWdpbldpZGdldCgpLT5zZXRWaXNpYmxlKCFtX2NsaXBSZWN0LmlzRW1wdHko
KSk7Ci0gICAgICAgIHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPnNldE1hc2soUVJlZ2lvbihtX2Ns
aXBSZWN0KSk7CisgICAgICAgIHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPnNldFZpc2libGUoIWNs
aXBSZWdpb24uaXNFbXB0eSgpKTsKKyAgICAgICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+c2V0
TWFzayhjbGlwUmVnaW9uKTsKIAogICAgICAgICBtX25wV2luZG93LnggPSBtX3dpbmRvd1JlY3Qu
eCgpOwogICAgICAgICBtX25wV2luZG93LnkgPSBtX3dpbmRvd1JlY3QueSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCAxMWEzN2I3NGRjYjE4YTQ2NjU2ZjRkYjdkMmJhYzM0ZWVkYjU2
ZDc5Li41M2Q4YmMyOTUyMmVjOGFhMDUyNTUwNThjN2JhMWE1MGE4YTE0ZDlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDExLTAyLTAyICBSb2JlcnQgSG9n
YW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIGNocm9taXVtIGlmcmFtZSBzaGltIGNvZGUgdG8gY3Jvc3Mt
cGxhdGZvcm0gZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTI1OTQKKworICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcDog
TW92ZSBjb2RlIHRvIFdlYkNvcmUvcGx1Z2luL1BsdWdpblZpZXdTdXBwb3J0LmNwcAorCiAyMDEx
LTAyLTAxICBEYXJpbiBGaXNoZXIgIDxkYXJpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRleCAzN2I2Zjc2YWFiYmQ4YjVh
ODIwNjJjZTg0OTc3OTg1NmY1ZWM0YzM2Li5kMGZiZDk2ZTNiZmQwZTYzYmViNGI0ODdjZjg1MmUx
MjQzOTBhOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVn
aW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
bHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgIktleWJv
YXJkRXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgor
I2luY2x1ZGUgIlBsdWdpblZpZXdTdXBwb3J0LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAj
aW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgi
CkBAIC01NTYsNyArNTU3LDcgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjYWxjdWxh
dGVHZW9tZXRyeShjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QsCiAgICAgY2xpcFJlY3QgPSB3aW5k
b3dDbGlwUmVjdCgpOwogICAgIGNsaXBSZWN0Lm1vdmUoLXdpbmRvd1JlY3QueCgpLCAtd2luZG93
UmVjdC55KCkpOwogCi0gICAgd2luZG93Q3V0T3V0UmVjdHMoZnJhbWVSZWN0LCBjdXRPdXRSZWN0
cyk7CisgICAgd2luZG93UmVjdHNQbHVnaW5TaG91bGROb3RQYWludE92ZXIobV9lbGVtZW50LCB0
aGlzLT5wYXJlbnQoKSwgZnJhbWVSZWN0LCBjdXRPdXRSZWN0cyk7CiAgICAgLy8gQ29udmVydCB0
byB0aGUgcGx1Z2luIHBvc2l0aW9uLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3V0T3V0
UmVjdHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGN1dE91dFJlY3RzW2ldLm1vdmUoLWZyYW1lUmVj
dC54KCksIC1mcmFtZVJlY3QueSgpKTsKQEAgLTU4MSwxMzIgKzU4Miw0IEBAIFdlYkNvcmU6Oklu
dFJlY3QgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6d2luZG93Q2xpcFJlY3QoKSBjb25zdAogICAg
IHJldHVybiBjbGlwUmVjdDsKIH0KIAotc3RhdGljIHZvaWQgZ2V0T2JqZWN0U3RhY2soY29uc3Qg
UmVuZGVyT2JqZWN0KiBybywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjxjb25z
dCBSZW5kZXJPYmplY3QqPiogcm9TdGFjaykKLXsKLSAgICByb1N0YWNrLT5jbGVhcigpOwotICAg
IHdoaWxlIChybykgewotICAgICAgICByb1N0YWNrLT5hcHBlbmQocm8pOwotICAgICAgICBybyA9
IHJvLT5wYXJlbnQoKTsKLSAgICB9Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiBzdGFjazEgaXMg
YXQgb3IgYWJvdmUgc3RhY2syCi1zdGF0aWMgYm9vbCBjaGVja1N0YWNrT25Ub3AoCi0gICAgICAg
IGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgaWZyYW1lWnN0YWNrLAotICAgICAg
ICBjb25zdCBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIHBsdWdpblpzdGFjaykKLXsKLSAg
ICBmb3IgKHNpemVfdCBpMSA9IDAsIGkyID0gMDsKLSAgICAgICAgIGkxIDwgaWZyYW1lWnN0YWNr
LnNpemUoKSAmJiBpMiA8IHBsdWdpblpzdGFjay5zaXplKCk7Ci0gICAgICAgICBpMSsrLCBpMisr
KSB7Ci0gICAgICAgIC8vIFRoZSByb290IGlzIGF0IHRoZSBlbmQgb2YgdGhlc2Ugc3RhY2tzLiAg
V2Ugd2FudCB0byBpdGVyYXRlCi0gICAgICAgIC8vIHJvb3QtZG93bndhcmRzIHNvIHdlIGluZGV4
IGJhY2t3YXJkcyBmcm9tIHRoZSBlbmQuCi0gICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcm8x
ID0gaWZyYW1lWnN0YWNrW2lmcmFtZVpzdGFjay5zaXplKCkgLSAxIC0gaTFdOwotICAgICAgICBj
b25zdCBSZW5kZXJPYmplY3QqIHJvMiA9IHBsdWdpblpzdGFja1twbHVnaW5ac3RhY2suc2l6ZSgp
IC0gMSAtIGkyXTsKLQotICAgICAgICBpZiAocm8xICE9IHJvMikgewotICAgICAgICAgICAgLy8g
V2hlbiB3ZSBmaW5kIG5vZGVzIGluIHRoZSBzdGFjayB0aGF0IGFyZSBub3QgdGhlIHNhbWUsIHRo
ZW4KLSAgICAgICAgICAgIC8vIHdlJ3ZlIGZvdW5kIHRoZSBub2RlcyBqdXN0IGJlbG93IHRoZSBs
b3dlc3QgY29tbWVudCBhbmNlc3Rvci4KLSAgICAgICAgICAgIC8vIERldGVybWluZSB3aGljaCBz
aG91bGQgYmUgb24gdG9wLgotCi0gICAgICAgICAgICAvLyBTZWUgaWYgei1pbmRleCBkZXRlcm1p
bmVzIGFuIG9yZGVyLgotICAgICAgICAgICAgaWYgKHJvMS0+c3R5bGUoKSAmJiBybzItPnN0eWxl
KCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgejEgPSBybzEtPnN0eWxlKCktPnpJbmRleCgpOwot
ICAgICAgICAgICAgICAgIGludCB6MiA9IHJvMi0+c3R5bGUoKS0+ekluZGV4KCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHoxID4gejIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgICAgIGlmICh6MSA8IHoyKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIElmIHRoZSBwbHVnaW4gZG9l
cyBub3QgaGF2ZSBhbiBleHBsaWNpdCB6LWluZGV4IGl0IHN0YWNrcyBiZWhpbmQgdGhlIGlmcmFt
ZS4KLSAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIG1haW50YWluaW5nIGNvbXBhdGliaWxpdHkg
d2l0aCBJRS4KLSAgICAgICAgICAgIGlmIChybzItPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gU3Rh
dGljUG9zaXRpb24pIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgMCd0aCBlbGVtZW50cyBvZiB0
aGVzZSBSZW5kZXJPYmplY3QgYXJyYXlzIHJlcHJlc2VudCB0aGUgcGx1Z2luIG5vZGUgYW5kCi0g
ICAgICAgICAgICAgICAgLy8gdGhlIGlmcmFtZS4KLSAgICAgICAgICAgICAgICBjb25zdCBSZW5k
ZXJPYmplY3QqIHBsdWdpblJlbmRlck9iamVjdCA9IHBsdWdpblpzdGFja1swXTsKLSAgICAgICAg
ICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGlmcmFtZVJlbmRlck9iamVjdCA9IGlmcmFtZVpz
dGFja1swXTsKLQotICAgICAgICAgICAgICAgIGlmIChwbHVnaW5SZW5kZXJPYmplY3QtPnN0eWxl
KCkgJiYgaWZyYW1lUmVuZGVyT2JqZWN0LT5zdHlsZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChwbHVnaW5SZW5kZXJPYmplY3QtPnN0eWxlKCktPnpJbmRleCgpID4gaWZyYW1lUmVuZGVy
T2JqZWN0LT5zdHlsZSgpLT56SW5kZXgoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEluc3BlY3QgdGhlIGRvY3VtZW50IG9y
ZGVyLiAgTGF0ZXIgb3JkZXIgbWVhbnMgaGlnaGVyCi0gICAgICAgICAgICAvLyBzdGFja2luZy4K
LSAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50ID0gcm8xLT5wYXJlbnQoKTsK
LSAgICAgICAgICAgIGlmICghcGFyZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIEFTU0VSVChwYXJlbnQgPT0gcm8yLT5wYXJlbnQoKSk7Ci0KLSAgICAgICAg
ICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiBybyA9IHBhcmVudC0+Zmlyc3RDaGlsZCgpOyBy
bzsgcm8gPSByby0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgIGlmIChybyA9PSBy
bzEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBp
ZiAocm8gPT0gcm8yKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIEFTU0VSVChmYWxzZSk7ICAvLyBXZSBzaG91bGQgaGF2ZSBzZWVu
IHJvMSBhbmQgcm8yIGJ5IG5vdy4KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gUmV0dXJuIGEgc2V0IG9mIHJlY3Rh
bmdsZXMgdGhhdCBzaG91bGQgbm90IGJlIG92ZXJkcmF3biBieSB0aGUKLS8vIHBsdWdpbiAoImN1
dG91dHMiKS4gIFRoaXMgaGVscHMgaW1wbGVtZW50IHRoZSAiaWZyYW1lIHNoaW0iCi0vLyB0ZWNo
bmlxdWUgb2Ygb3ZlcmxheWluZyBhIHdpbmRvd2VkIHBsdWdpbiB3aXRoIGNvbnRlbnQgZnJvbSB0
aGUKLS8vIHBhZ2UuICBJbiBhIG51dHNoZWxsLCBpZnJhbWUgZWxlbWVudHMgc2hvdWxkIG9jY2x1
ZGUgcGx1Z2lucyB3aGVuCi0vLyB0aGV5IG9jY3VyIGhpZ2hlciBpbiB0aGUgc3RhY2tpbmcgb3Jk
ZXIuCi12b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbmRvd0N1dE91dFJlY3RzKGNvbnN0
IEludFJlY3QmIGZyYW1lUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmVjdG9yPEludFJlY3Q+JiBjdXRPdXRSZWN0cykKLXsKLSAgICBSZW5kZXJP
YmplY3QqIHBsdWdpbk5vZGUgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCk7Ci0gICAgQVNTRVJUKHBs
dWdpbk5vZGUpOwotICAgIGlmICghcGx1Z2luTm9kZS0+c3R5bGUoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiBwbHVnaW5ac3RhY2s7Ci0gICAgVmVj
dG9yPGNvbnN0IFJlbmRlck9iamVjdCo+IGlmcmFtZVpzdGFjazsKLSAgICBnZXRPYmplY3RTdGFj
ayhwbHVnaW5Ob2RlLCAmcGx1Z2luWnN0YWNrKTsKLQotICAgIC8vIEdldCB0aGUgcGFyZW50IHdp
ZGdldAotICAgIFdpZGdldCogcGFyZW50V2lkZ2V0ID0gdGhpcy0+cGFyZW50KCk7Ci0gICAgaWYg
KCFwYXJlbnRXaWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZy
YW1lVmlldyogcGFyZW50RnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFyZW50
V2lkZ2V0KTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPiogY2hpbGRyZW4g
PSBwYXJlbnRGcmFtZVZpZXctPmNoaWxkcmVuKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxX
aWRnZXQ+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2hpbGRyZW4tPmJlZ2luKCk7IGl0ICE9IGNo
aWxkcmVuLT5lbmQoKTsgKytpdCkgewotICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgRnJh
bWVWaWV3J3MgYmVjYXVzZSBpZnJhbWVzIHNob3cgdXAgYXMgRnJhbWVWaWV3cy4KLSAgICAgICAg
aWYgKCEoKml0KS0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIGNvbnN0IEZyYW1lVmlldyogZnJhbWVWaWV3ID0KLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PGNvbnN0IEZyYW1lVmlldyo+KCgqaXQpLmdldCgpKTsKLSAgICAgICAgLy8gQ2hlY2sgdG8gbWFr
ZSBzdXJlIHdlIGNhbiBnZXQgYm90aCB0aGUgZWxlbWVudCBhbmQgdGhlIFJlbmRlck9iamVjdAot
ICAgICAgICAvLyBmb3IgdGhpcyBGcmFtZVZpZXcsIGlmIHdlIGNhbid0IGp1c3QgbW92ZSBvbiB0
byB0aGUgbmV4dCBvYmplY3QuCi0gICAgICAgIGlmICghZnJhbWVWaWV3LT5mcmFtZSgpIHx8ICFm
cmFtZVZpZXctPmZyYW1lKCktPm93bmVyRWxlbWVudCgpCi0gICAgICAgICAgICB8fCAhZnJhbWVW
aWV3LT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gZnJhbWVWaWV3LT5mcmFt
ZSgpLT5vd25lckVsZW1lbnQoKTsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJl
ciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7Ci0KLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpCi0gICAgICAgICAgICAmJiBpZnJhbWVSZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKLSAgICAgICAg
ICAgICYmICghaWZyYW1lUmVuZGVyZXItPnN0eWxlKCkgfHwgaWZyYW1lUmVuZGVyZXItPnN0eWxl
KCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSkgewotICAgICAgICAgICAgZ2V0T2JqZWN0U3Rh
Y2soaWZyYW1lUmVuZGVyZXIsICZpZnJhbWVac3RhY2spOwotICAgICAgICAgICAgaWYgKGNoZWNr
U3RhY2tPblRvcChpZnJhbWVac3RhY2ssIHBsdWdpblpzdGFjaykpIHsKLSAgICAgICAgICAgICAg
ICBJbnRQb2ludCBwb2ludCA9Ci0gICAgICAgICAgICAgICAgICAgIHJvdW5kZWRJbnRQb2ludChp
ZnJhbWVSZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCkpOwotICAgICAgICAgICAgICAgIFJlbmRl
ckJveCogcmJveCA9IHRvUmVuZGVyQm94KGlmcmFtZVJlbmRlcmVyKTsKLSAgICAgICAgICAgICAg
ICBJbnRTaXplIHNpemUocmJveC0+d2lkdGgoKSwgcmJveC0+aGVpZ2h0KCkpOwotICAgICAgICAg
ICAgICAgIGN1dE91dFJlY3RzLmFwcGVuZChJbnRSZWN0KHBvaW50LCBzaXplKSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80942</attachid>
            <date>2011-02-02 11:58:59 -0800</date>
            <delta_ts>2011-02-02 14:46:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52594-20110202195857.patch</filename>
            <type>text/plain</type>
            <size>22015</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMzFkNWUxZWQ2ODA4NmFkY2FiZTM2MDcwN2UxNDBlYWYwYmU2NGRlLi5mOTU2NTM4
YzgxNDI0MzdhZDk3ZTExZDlkNDdjNDk3ODIwY2UzNDQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDItMDIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY2hyb21pdW0gaWZy
YW1lIHNoaW0gY29kZSB0byBjcm9zcy1wbGF0Zm9ybSBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjU5NAorCisgICAgICAgICogcGxhdGZvcm0v
cXQvU2tpcHBlZDogVW5za2lwIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwKKwogMjAxMS0wMi0w
MiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5z
a2lwIGEgdGVzdCB0aGF0IGp1c3QgbmVlZHMgcGxhdGZvcm0tc3BlY2lmaWMgcmVzdWx0cy4gUmUt
Y2xhc3NpZnkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGI4YWE3Zjg5Yjg4N2MxNzlhZTNk
OTY5ZGM5ZWIyMzc0ZmEzMDBmNDkuLjM2MWVjMjExZjliOGViNzMyODc0N2YxMDBiODVhOGM3Y2Qz
YmEyNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtNDkxNywxMCArNDkxNyw2IEBAIGZh
c3QvZmlsZXN5c3RlbQogaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFuLWNvbmZv
cm1hbmNlLmh0bWwKIAogCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NjIyMwotIyBUaGUgV2ViS2l0IHBsdWdpbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBw
b3J0IGlmcmFtZSBzaGltcy4KLXBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwKLQogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY5NjYKICMgW1F0XSBmYXN0L21lZGlh
L2NvbG9yLWRvZXMtbm90LWluY2x1ZGUtYWxwaGEuaHRtbCBmYWlscwogZmFzdC9tZWRpYS9jb2xv
ci1kb2VzLW5vdC1pbmNsdWRlLWFscGhhLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OTM1NmJmYjQyYjEx
OTIxNTc3NGNmMGJiNTI4ZGFhZDVkMTQ5ZjFkLi4yYzAwMDY3M2Q0ZDk5NWI1Mzc5ZDMyOWUxYmY5
Yzk1YjRhNzI1YzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDItMDIgIFJv
YmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY2hyb21pdW0gaWZyYW1lIHNoaW0gY29kZSB0
byBjcm9zcy1wbGF0Zm9ybSBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjU5NAorCisgICAgICAgIE1vdmUgQ2hyb21pdW0gY29kZSBmb3IgaWRl
bnRpZnlpbmcgYW5kIGN1dHRpbmcgb3V0CisgICAgICAgIGlmcmFtZSBzaGltcyBmcm9tIHBsdWdp
bnMgdG8gY3Jvc3MtcGxhdGZvcm0gdXRpbGl0eSBmaWxlCisgICAgICAgIFBsdWdpblZpZXdTdXBw
b3J0LmNwcC4KKyAgICAgICAgQW1lbmQgUGx1Z2luVmlld1F0IHRvIHVzZSB0aGlzIGNvZGUgdG8g
aGFuZGxlIHNoaW1zIGNvcnJlY3RseS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkIENo
cm9taXVtIHN1cHBvcnQgZm9yIFBsdWdpblZpZXdTdXBwb3J0LmNwcAorICAgICAgICAqIFdlYkNv
cmUucHJvOiBBZGQgUXQgc3VwcG9ydCBmb3IgUGx1Z2luVmlld1N1cHBvcnQuY3BwCisgICAgICAg
ICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdT
dXBwb3J0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRPYmplY3RTdGFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjppZnJhbWVJc0Fib3ZlUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6
OndpbmRvd1JlY3RzUGx1Z2luU2hvdWxkTm90UGFpbnRPdmVyKToKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpblZpZXdTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2lu
Vmlld1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93SWZO
ZWVkZWQpOgorCiAyMDExLTAyLTAyICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0OGM5
ZmZhMmRhZTRlOTc0ZDBkMjM3YzEyZTBmZDcwZDZhMjc0NzM4Li43OWU5Mzc1M2VkNGE4ZjI0ODU1
OGIyMzYwYzc3ZDcyMDk5YjQxMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjA0LDYgKzM2MDQs
OCBAQAogICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2luVmlldy5jcHAnLAogICAgICAgICAgICAg
J3BsdWdpbnMvUGx1Z2luVmlldy5oJywKICAgICAgICAgICAgICdwbHVnaW5zL1BsdWdpblZpZXdO
b25lLmNwcCcsCisgICAgICAgICAgICAncGx1Z2lucy9QbHVnaW5WaWV3U3VwcG9ydC5jcHAnLAor
ICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2luVmlld1N1cHBvcnQuaCcsCiAgICAgICAgICAgICAn
cGx1Z2lucy9ucGFwaS5jcHAnLAogICAgICAgICAgICAgJ3BsdWdpbnMvbnBmdW5jdGlvbnMuaCcs
CiAgICAgICAgICAgICAncmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybwppbmRleCAyMDA0MjQyMDk1YTVhMzQ4N2EzNzkzOGUwNWFhNDRlMjZlZDFjMTYw
Li5iOTVjZmE2NzI2YmM1ZDc5NzNjZjJmZjdiNzlkMjJjNDJkNjAxNTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwpAQCAtMTI5MCw2ICsxMjkwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGx1Z2lucy9QbHVnaW5Q
YWNrYWdlLmNwcCBcCiAgICAgcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIFwKICAgICBwbHVnaW5z
L1BsdWdpblZpZXcuY3BwIFwKKyAgICBwbHVnaW5zL1BsdWdpblZpZXdTdXBwb3J0LmNwcCBcCiAg
ICAgcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAgXAogICAgIHJlbmRlcmluZy9icmVha19s
aW5lcy5jcHAgXAogICAgIHJlbmRlcmluZy9CaWRpUnVuLmNwcCBcCkBAIC0yMjQ5LDYgKzIyNTAs
NyBAQCBIRUFERVJTICs9IFwKICAgICBwbHVnaW5zL1BsdWdpblBhY2thZ2UuaCBcCiAgICAgcGx1
Z2lucy9QbHVnaW5TdHJlYW0uaCBcCiAgICAgcGx1Z2lucy9QbHVnaW5WaWV3LmggXAorICAgIHBs
dWdpbnMvUGx1Z2luVmlld1N1cHBvcnQuaCBcCiAgICAgcGx1Z2lucy93aW4vUGx1Z2luTWVzc2Fn
ZVRocm90dGxlcldpbi5oIFwKICAgICByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmggXAogICAg
IHJlbmRlcmluZy9icmVha19saW5lcy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld1N1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3U3VwcG9ydC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA0YzhiY2VkMTE5OTk3NDk5YTVjZTk3ZjQx
NDE5YjI3ZTEyYjA4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luVmlld1N1cHBvcnQuY3BwCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblZpZXdTdXBwb3J0LmgiCisKKyNpbmNsdWRl
ICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRNTEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKKy8v
IFRoaXMgZmlsZSBwcm92aWRlcyBwbHVnaW4tcmVsYXRlZCB1dGlsaXR5IGZ1bmN0aW9ucyBzaGFy
ZWQgYnkgcGxhdGZvcm1zIHRoYXQgaW5oZXJpdAorLy8gZnJvbSBQbHVnaW5WaWV3IChlLmcuIFF0
KSBhbmQgdGhvc2UgdGhhdCBkbyBub3QgKGUuZy4gQ2hyb21pdW0pLgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyB2b2lkIGdldE9iamVjdFN0YWNrKGNvbnN0IFJlbmRlck9iamVjdCog
cm8sIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiogcm9TdGFjaykKK3sKKyAgICByb1N0YWNr
LT5jbGVhcigpOworICAgIHdoaWxlIChybykgeworICAgICAgICByb1N0YWNrLT5hcHBlbmQocm8p
OworICAgICAgICBybyA9IHJvLT5wYXJlbnQoKTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdHJ1
ZSBpZiBzdGFjazEgaXMgYXQgb3IgYWJvdmUgc3RhY2syCitzdGF0aWMgYm9vbCBpZnJhbWVJc0Fi
b3ZlUGx1Z2luKGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgaWZyYW1lWnN0YWNr
LCBjb25zdCBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIHBsdWdpblpzdGFjaykKK3sKKyAg
ICBmb3IgKHNpemVfdCBpMSA9IDAsIGkyID0gMDsKKyAgICAgICAgIGkxIDwgaWZyYW1lWnN0YWNr
LnNpemUoKSAmJiBpMiA8IHBsdWdpblpzdGFjay5zaXplKCk7CisgICAgICAgICBpMSsrLCBpMisr
KSB7CisgICAgICAgIC8vIFRoZSByb290IGlzIGF0IHRoZSBlbmQgb2YgdGhlc2Ugc3RhY2tzLiAg
V2Ugd2FudCB0byBpdGVyYXRlCisgICAgICAgIC8vIHJvb3QtZG93bndhcmRzIHNvIHdlIGluZGV4
IGJhY2t3YXJkcyBmcm9tIHRoZSBlbmQuCisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcm8x
ID0gaWZyYW1lWnN0YWNrW2lmcmFtZVpzdGFjay5zaXplKCkgLSAxIC0gaTFdOworICAgICAgICBj
b25zdCBSZW5kZXJPYmplY3QqIHJvMiA9IHBsdWdpblpzdGFja1twbHVnaW5ac3RhY2suc2l6ZSgp
IC0gMSAtIGkyXTsKKworICAgICAgICBpZiAocm8xICE9IHJvMikgeworICAgICAgICAgICAgLy8g
V2hlbiB3ZSBmaW5kIG5vZGVzIGluIHRoZSBzdGFjayB0aGF0IGFyZSBub3QgdGhlIHNhbWUsIHRo
ZW4KKyAgICAgICAgICAgIC8vIHdlJ3ZlIGZvdW5kIHRoZSBub2RlcyBqdXN0IGJlbG93IHRoZSBs
b3dlc3QgY29tbWVudCBhbmNlc3Rvci4KKyAgICAgICAgICAgIC8vIERldGVybWluZSB3aGljaCBz
aG91bGQgYmUgb24gdG9wLgorCisgICAgICAgICAgICAvLyBTZWUgaWYgei1pbmRleCBkZXRlcm1p
bmVzIGFuIG9yZGVyLgorICAgICAgICAgICAgaWYgKHJvMS0+c3R5bGUoKSAmJiBybzItPnN0eWxl
KCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgejEgPSBybzEtPnN0eWxlKCktPnpJbmRleCgpOwor
ICAgICAgICAgICAgICAgIGludCB6MiA9IHJvMi0+c3R5bGUoKS0+ekluZGV4KCk7CisgICAgICAg
ICAgICAgICAgaWYgKHoxID4gejIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIGlmICh6MSA8IHoyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBwbHVnaW4gZG9l
cyBub3QgaGF2ZSBhbiBleHBsaWNpdCB6LWluZGV4IGl0IHN0YWNrcyBiZWhpbmQgdGhlIGlmcmFt
ZS4KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIG1haW50YWluaW5nIGNvbXBhdGliaWxpdHkg
d2l0aCBJRS4KKyAgICAgICAgICAgIGlmIChybzItPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gU3Rh
dGljUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgMCd0aCBlbGVtZW50cyBvZiB0
aGVzZSBSZW5kZXJPYmplY3QgYXJyYXlzIHJlcHJlc2VudCB0aGUgcGx1Z2luIG5vZGUgYW5kCisg
ICAgICAgICAgICAgICAgLy8gdGhlIGlmcmFtZS4KKyAgICAgICAgICAgICAgICBjb25zdCBSZW5k
ZXJPYmplY3QqIHBsdWdpblJlbmRlck9iamVjdCA9IHBsdWdpblpzdGFja1swXTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGlmcmFtZVJlbmRlck9iamVjdCA9IGlmcmFtZVpz
dGFja1swXTsKKworICAgICAgICAgICAgICAgIGlmIChwbHVnaW5SZW5kZXJPYmplY3QtPnN0eWxl
KCkgJiYgaWZyYW1lUmVuZGVyT2JqZWN0LT5zdHlsZSgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChwbHVnaW5SZW5kZXJPYmplY3QtPnN0eWxlKCktPnpJbmRleCgpID4gaWZyYW1lUmVuZGVy
T2JqZWN0LT5zdHlsZSgpLT56SW5kZXgoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEluc3BlY3QgdGhlIGRvY3VtZW50IG9y
ZGVyLiAgTGF0ZXIgb3JkZXIgbWVhbnMgaGlnaGVyIHN0YWNraW5nLgorICAgICAgICAgICAgY29u
c3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSBybzEtPnBhcmVudCgpOworICAgICAgICAgICAgaWYg
KCFwYXJlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgQVNT
RVJUKHBhcmVudCA9PSBybzItPnBhcmVudCgpKTsKKworICAgICAgICAgICAgZm9yIChjb25zdCBS
ZW5kZXJPYmplY3QqIHJvID0gcGFyZW50LT5maXJzdENoaWxkKCk7IHJvOyBybyA9IHJvLT5uZXh0
U2libGluZygpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJvID09IHJvMSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChybyA9PSBybzIpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQVNTRVJUKGZhbHNlKTsgLy8gV2Ugc2hvdWxkIGhhdmUgc2VlbiBybzEgYW5kIHJvMiBieSBu
b3cuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKKy8vIFJldHVybiBhIHNldCBvZiByZWN0YW5nbGVzIHRoYXQgc2hvdWxk
IG5vdCBiZSBvdmVyZHJhd24gYnkgdGhlCisvLyBwbHVnaW4gKCJjdXRvdXRzIikuICBUaGlzIGhl
bHBzIGltcGxlbWVudCB0aGUgImlmcmFtZSBzaGltIgorLy8gdGVjaG5pcXVlIG9mIG92ZXJsYXlp
bmcgYSB3aW5kb3dlZCBwbHVnaW4gd2l0aCBjb250ZW50IGZyb20gdGhlCisvLyBwYWdlLiAgSW4g
YSBudXRzaGVsbCwgaWZyYW1lIGVsZW1lbnRzIHNob3VsZCBvY2NsdWRlIHBsdWdpbnMgd2hlbgor
Ly8gdGhleSBvY2N1ciBoaWdoZXIgaW4gdGhlIHN0YWNraW5nIG9yZGVyLgordm9pZCB3aW5kb3dS
ZWN0c1BsdWdpblNob3VsZE5vdFBhaW50T3ZlcihFbGVtZW50KiBlbGVtZW50LCBXaWRnZXQqIHBh
cmVudFdpZGdldCwgY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0LCBWZWN0b3I8SW50UmVjdD4mIGN1
dE91dFJlY3RzKQoreworICAgIFJlbmRlck9iamVjdCogcGx1Z2luTm9kZSA9IGVsZW1lbnQtPnJl
bmRlcmVyKCk7CisgICAgQVNTRVJUKHBsdWdpbk5vZGUpOworICAgIGlmICghcGx1Z2luTm9kZS0+
c3R5bGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3Qq
PiBwbHVnaW5ac3RhY2s7CisgICAgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+IGlmcmFtZVpz
dGFjazsKKyAgICBnZXRPYmplY3RTdGFjayhwbHVnaW5Ob2RlLCAmcGx1Z2luWnN0YWNrKTsKKwor
ICAgIGlmICghcGFyZW50V2lkZ2V0LT5pc0ZyYW1lVmlldygpKQorICAgICAgICByZXR1cm47CisK
KyAgICBGcmFtZVZpZXcqIHBhcmVudEZyYW1lVmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+
KHBhcmVudFdpZGdldCk7CisKKyAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID4qIGNo
aWxkcmVuID0gcGFyZW50RnJhbWVWaWV3LT5jaGlsZHJlbigpOworICAgIGZvciAoSGFzaFNldDxS
ZWZQdHI8V2lkZ2V0PiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNoaWxkcmVuLT5iZWdpbigpOyBp
dCAhPSBjaGlsZHJlbi0+ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgLy8gV2Ugb25seSBjYXJlIGFi
b3V0IEZyYW1lVmlldydzIGJlY2F1c2UgaWZyYW1lcyBzaG93IHVwIGFzIEZyYW1lVmlld3MuCisg
ICAgICAgIGlmICghKCppdCktPmlzRnJhbWVWaWV3KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBjb25zdCBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHN0YXRpY19jYXN0PGNvbnN0
IEZyYW1lVmlldyo+KCgqaXQpLmdldCgpKTsKKyAgICAgICAgLy8gQ2hlY2sgdG8gbWFrZSBzdXJl
IHdlIGNhbiBnZXQgYm90aCB0aGUgZWxlbWVudCBhbmQgdGhlIFJlbmRlck9iamVjdAorICAgICAg
ICAvLyBmb3IgdGhpcyBGcmFtZVZpZXcsIGlmIHdlIGNhbid0IGp1c3QgbW92ZSBvbiB0byB0aGUg
bmV4dCBvYmplY3QuCisgICAgICAgIGlmICghZnJhbWVWaWV3LT5mcmFtZSgpIHx8ICFmcmFtZVZp
ZXctPmZyYW1lKCktPm93bmVyRWxlbWVudCgpCisgICAgICAgICAgICB8fCAhZnJhbWVWaWV3LT5m
cmFtZSgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gZnJhbWVWaWV3LT5mcmFtZSgpLT5v
d25lckVsZW1lbnQoKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJlciA9IGVs
ZW1lbnQtPnJlbmRlcmVyKCk7CisKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjppZnJhbWVUYWcpCisgICAgICAgICAgICAmJiBpZnJhbWVSZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKS5pbnRlcnNlY3RzKGZyYW1lUmVjdCkKKyAgICAgICAgICAgICYm
ICghaWZyYW1lUmVuZGVyZXItPnN0eWxlKCkgfHwgaWZyYW1lUmVuZGVyZXItPnN0eWxlKCktPnZp
c2liaWxpdHkoKSA9PSBWSVNJQkxFKSkgeworICAgICAgICAgICAgZ2V0T2JqZWN0U3RhY2soaWZy
YW1lUmVuZGVyZXIsICZpZnJhbWVac3RhY2spOworICAgICAgICAgICAgaWYgKGlmcmFtZUlzQWJv
dmVQbHVnaW4oaWZyYW1lWnN0YWNrLCBwbHVnaW5ac3RhY2spKSB7CisgICAgICAgICAgICAgICAg
SW50UG9pbnQgcG9pbnQgPSByb3VuZGVkSW50UG9pbnQoaWZyYW1lUmVuZGVyZXItPmxvY2FsVG9B
YnNvbHV0ZSgpKTsKKyAgICAgICAgICAgICAgICBSZW5kZXJCb3gqIHJib3ggPSB0b1JlbmRlckJv
eChpZnJhbWVSZW5kZXJlcik7CisgICAgICAgICAgICAgICAgSW50U2l6ZSBzaXplKHJib3gtPndp
ZHRoKCksIHJib3gtPmhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBjdXRPdXRSZWN0cy5hcHBl
bmQoSW50UmVjdChwb2ludCwgc2l6ZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXdTdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXdTdXBwb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTliNTAwZDZmZTY5ZWY2YWMwNGRmMzE4Njdl
MTRmNDIxMGE3NDE1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luVmlld1N1cHBvcnQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4uICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBsdWdpblZpZXdTdXBwb3J0X2gKKyNkZWZpbmUg
UGx1Z2luVmlld1N1cHBvcnRfaAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBFbGVtZW50OworY2xhc3MgV2lkZ2V0OworY2xhc3MgSW50UmVj
dDsKKwordm9pZCB3aW5kb3dSZWN0c1BsdWdpblNob3VsZE5vdFBhaW50T3ZlcihFbGVtZW50Kiwg
V2lkZ2V0KiBwYXJlbnRXaWRnZXQsIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCwgVmVjdG9yPElu
dFJlY3Q+JiBjdXRPdXRSZWN0cyk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFBsdWdpblZpZXdTdXBwb3J0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvcXQvUGx1Z2luVmlld1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2lu
Vmlld1F0LmNwcAppbmRleCA2Y2YzNmU5NjVjZjExNGMzOGVkM2RmNTM4N2U1ZmI0OWExNzQ1NDZi
Li5iYzUzMDQxNDYxZGM2ZDBlNjA4ODg4YmY4OTQ1YWZmNzk0MGNmNmZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisjaW5jbHVkZSAiUGx1
Z2luVmlld1N1cHBvcnQuaCIKIAogI2lmIFVTRShKU0MpCiAjaW5jbHVkZSAiQnJpZGdlLmgiCkBA
IC02MjcsMTAgKzYyOCwxOSBAQCB2b2lkIFBsdWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQo
KQogCiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewogICAgICAgICBwbGF0Zm9ybVBsdWdpbldpZGdl
dCgpLT5zZXRHZW9tZXRyeShtX3dpbmRvd1JlY3QpOworCisgICAgICAgIC8vIEN1dCBvdXQgYXJl
YXMgb2YgdGhlIHBsdWdpbiBvY2NsdWRlZCBieSBpZnJhbWUgc2hpbXMKKyAgICAgICAgVmVjdG9y
PEludFJlY3Q+IGN1dE91dFJlY3RzOworICAgICAgICBRUmVnaW9uIGNsaXBSZWdpb24gPSBRUmVn
aW9uKG1fY2xpcFJlY3QpOworICAgICAgICB3aW5kb3dSZWN0c1BsdWdpblNob3VsZE5vdFBhaW50
T3ZlcihtX2VsZW1lbnQsIHRoaXMtPnBhcmVudCgpLCBmcmFtZVJlY3QoKSwgY3V0T3V0UmVjdHMp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1dE91dFJlY3RzLnNpemUoKTsgaSsr
KSB7CisgICAgICAgICAgICBjdXRPdXRSZWN0c1tpXS5tb3ZlKC1mcmFtZVJlY3QoKS54KCksIC1m
cmFtZVJlY3QoKS55KCkpOworICAgICAgICAgICAgY2xpcFJlZ2lvbiA9IGNsaXBSZWdpb24uc3Vi
dHJhY3RlZChRUmVnaW9uKGN1dE91dFJlY3RzW2ldKSk7CisgICAgICAgIH0KICAgICAgICAgLy8g
aWYgc2V0TWFzayBpcyBzZXQgd2l0aCBhbiBlbXB0eSBRUmVnaW9uLCBubyBjbGlwcGluZyB3aWxs
CiAgICAgICAgIC8vIGJlIHBlcmZvcm1lZCwgc28gaW4gdGhhdCBjYXNlIHdlIGhpZGUgdGhlIHBs
dWdpbiB2aWV3Ci0gICAgICAgIHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPnNldFZpc2libGUoIW1f
Y2xpcFJlY3QuaXNFbXB0eSgpKTsKLSAgICAgICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+c2V0
TWFzayhRUmVnaW9uKG1fY2xpcFJlY3QpKTsKKyAgICAgICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQo
KS0+c2V0VmlzaWJsZSghY2xpcFJlZ2lvbi5pc0VtcHR5KCkpOworICAgICAgICBwbGF0Zm9ybVBs
dWdpbldpZGdldCgpLT5zZXRNYXNrKGNsaXBSZWdpb24pOwogCiAgICAgICAgIG1fbnBXaW5kb3cu
eCA9IG1fd2luZG93UmVjdC54KCk7CiAgICAgICAgIG1fbnBXaW5kb3cueSA9IG1fd2luZG93UmVj
dC55KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDExYTM3Yjc0ZGNiMThhNDY2NTZm
NGRiN2QyYmFjMzRlZWRiNTZkNzkuLjUzZDhiYzI5NTIyZWM4YWEwNTI1NTA1OGM3YmExYTUwYThh
MTRkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEt
MDItMDIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY2hyb21pdW0gaWZyYW1lIHNo
aW0gY29kZSB0byBjcm9zcy1wbGF0Zm9ybSBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjU5NAorCisgICAgICAgICogc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuY3BwOiBNb3ZlIGNvZGUgdG8gV2ViQ29yZS9wbHVnaW4vUGx1Z2luVmlld1N1
cHBvcnQuY3BwCisKIDIwMTEtMDItMDEgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4
IDM3YjZmNzZhYWJiZDhiNWE4MjA2MmNlODQ5Nzc5ODU2ZjVlYzRjMzYuLmQwZmJkOTZlM2JmZDBl
NjNiZWI0YjQ4N2NmODUyZTEyNDM5MGE4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC02Nyw2ICs2Nyw3IEBA
CiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNp
bmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGx1Z2luVmlld1N1cHBvcnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiVXNlckdl
c3R1cmVJbmRpY2F0b3IuaCIKQEAgLTU1Niw3ICs1NTcsNyBAQCB2b2lkIFdlYlBsdWdpbkNvbnRh
aW5lckltcGw6OmNhbGN1bGF0ZUdlb21ldHJ5KGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCwKICAg
ICBjbGlwUmVjdCA9IHdpbmRvd0NsaXBSZWN0KCk7CiAgICAgY2xpcFJlY3QubW92ZSgtd2luZG93
UmVjdC54KCksIC13aW5kb3dSZWN0LnkoKSk7CiAKLSAgICB3aW5kb3dDdXRPdXRSZWN0cyhmcmFt
ZVJlY3QsIGN1dE91dFJlY3RzKTsKKyAgICB3aW5kb3dSZWN0c1BsdWdpblNob3VsZE5vdFBhaW50
T3ZlcihtX2VsZW1lbnQsIHRoaXMtPnBhcmVudCgpLCBmcmFtZVJlY3QsIGN1dE91dFJlY3RzKTsK
ICAgICAvLyBDb252ZXJ0IHRvIHRoZSBwbHVnaW4gcG9zaXRpb24uCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjdXRPdXRSZWN0cy5zaXplKCk7IGkrKykKICAgICAgICAgY3V0T3V0UmVjdHNb
aV0ubW92ZSgtZnJhbWVSZWN0LngoKSwgLWZyYW1lUmVjdC55KCkpOwpAQCAtNTgxLDEzMiArNTgy
LDQgQEAgV2ViQ29yZTo6SW50UmVjdCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp3aW5kb3dDbGlw
UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIGNsaXBSZWN0OwogfQogCi1zdGF0aWMgdm9pZCBnZXRP
YmplY3RTdGFjayhjb25zdCBSZW5kZXJPYmplY3QqIHJvLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+KiByb1N0YWNrKQotewotICAgIHJvU3Rh
Y2stPmNsZWFyKCk7Ci0gICAgd2hpbGUgKHJvKSB7Ci0gICAgICAgIHJvU3RhY2stPmFwcGVuZChy
byk7Ci0gICAgICAgIHJvID0gcm8tPnBhcmVudCgpOwotICAgIH0KLX0KLQotLy8gUmV0dXJucyB0
cnVlIGlmIHN0YWNrMSBpcyBhdCBvciBhYm92ZSBzdGFjazIKLXN0YXRpYyBib29sIGNoZWNrU3Rh
Y2tPblRvcCgKLSAgICAgICAgY29uc3QgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+JiBpZnJh
bWVac3RhY2ssCi0gICAgICAgIGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgcGx1
Z2luWnN0YWNrKQotewotICAgIGZvciAoc2l6ZV90IGkxID0gMCwgaTIgPSAwOwotICAgICAgICAg
aTEgPCBpZnJhbWVac3RhY2suc2l6ZSgpICYmIGkyIDwgcGx1Z2luWnN0YWNrLnNpemUoKTsKLSAg
ICAgICAgIGkxKyssIGkyKyspIHsKLSAgICAgICAgLy8gVGhlIHJvb3QgaXMgYXQgdGhlIGVuZCBv
ZiB0aGVzZSBzdGFja3MuICBXZSB3YW50IHRvIGl0ZXJhdGUKLSAgICAgICAgLy8gcm9vdC1kb3du
d2FyZHMgc28gd2UgaW5kZXggYmFja3dhcmRzIGZyb20gdGhlIGVuZC4KLSAgICAgICAgY29uc3Qg
UmVuZGVyT2JqZWN0KiBybzEgPSBpZnJhbWVac3RhY2tbaWZyYW1lWnN0YWNrLnNpemUoKSAtIDEg
LSBpMV07Ci0gICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcm8yID0gcGx1Z2luWnN0YWNrW3Bs
dWdpblpzdGFjay5zaXplKCkgLSAxIC0gaTJdOwotCi0gICAgICAgIGlmIChybzEgIT0gcm8yKSB7
Ci0gICAgICAgICAgICAvLyBXaGVuIHdlIGZpbmQgbm9kZXMgaW4gdGhlIHN0YWNrIHRoYXQgYXJl
IG5vdCB0aGUgc2FtZSwgdGhlbgotICAgICAgICAgICAgLy8gd2UndmUgZm91bmQgdGhlIG5vZGVz
IGp1c3QgYmVsb3cgdGhlIGxvd2VzdCBjb21tZW50IGFuY2VzdG9yLgotICAgICAgICAgICAgLy8g
RGV0ZXJtaW5lIHdoaWNoIHNob3VsZCBiZSBvbiB0b3AuCi0KLSAgICAgICAgICAgIC8vIFNlZSBp
ZiB6LWluZGV4IGRldGVybWluZXMgYW4gb3JkZXIuCi0gICAgICAgICAgICBpZiAocm8xLT5zdHls
ZSgpICYmIHJvMi0+c3R5bGUoKSkgewotICAgICAgICAgICAgICAgIGludCB6MSA9IHJvMS0+c3R5
bGUoKS0+ekluZGV4KCk7Ci0gICAgICAgICAgICAgICAgaW50IHoyID0gcm8yLT5zdHlsZSgpLT56
SW5kZXgoKTsKLSAgICAgICAgICAgICAgICBpZiAoejEgPiB6MikKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgaWYgKHoxIDwgejIpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8g
SWYgdGhlIHBsdWdpbiBkb2VzIG5vdCBoYXZlIGFuIGV4cGxpY2l0IHotaW5kZXggaXQgc3RhY2tz
IGJlaGluZCB0aGUgaWZyYW1lLgotICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgbWFpbnRhaW5p
bmcgY29tcGF0aWJpbGl0eSB3aXRoIElFLgotICAgICAgICAgICAgaWYgKHJvMi0+c3R5bGUoKS0+
cG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikgewotICAgICAgICAgICAgICAgIC8vIFRoZSAw
J3RoIGVsZW1lbnRzIG9mIHRoZXNlIFJlbmRlck9iamVjdCBhcnJheXMgcmVwcmVzZW50IHRoZSBw
bHVnaW4gbm9kZSBhbmQKLSAgICAgICAgICAgICAgICAvLyB0aGUgaWZyYW1lLgotICAgICAgICAg
ICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGx1Z2luUmVuZGVyT2JqZWN0ID0gcGx1Z2luWnN0
YWNrWzBdOwotICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogaWZyYW1lUmVuZGVy
T2JqZWN0ID0gaWZyYW1lWnN0YWNrWzBdOwotCi0gICAgICAgICAgICAgICAgaWYgKHBsdWdpblJl
bmRlck9iamVjdC0+c3R5bGUoKSAmJiBpZnJhbWVSZW5kZXJPYmplY3QtPnN0eWxlKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKS0+ekluZGV4
KCkgPiBpZnJhbWVSZW5kZXJPYmplY3QtPnN0eWxlKCktPnpJbmRleCgpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSW5zcGVj
dCB0aGUgZG9jdW1lbnQgb3JkZXIuICBMYXRlciBvcmRlciBtZWFucyBoaWdoZXIKLSAgICAgICAg
ICAgIC8vIHN0YWNraW5nLgotICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQg
PSBybzEtPnBhcmVudCgpOwotICAgICAgICAgICAgaWYgKCFwYXJlbnQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQVNTRVJUKHBhcmVudCA9PSBybzItPnBhcmVu
dCgpKTsKLQotICAgICAgICAgICAgZm9yIChjb25zdCBSZW5kZXJPYmplY3QqIHJvID0gcGFyZW50
LT5maXJzdENoaWxkKCk7IHJvOyBybyA9IHJvLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJvID09IHJvMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIGlmIChybyA9PSBybzIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUKGZhbHNlKTsgIC8vIFdl
IHNob3VsZCBoYXZlIHNlZW4gcm8xIGFuZCBybzIgYnkgbm93LgotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBSZXR1
cm4gYSBzZXQgb2YgcmVjdGFuZ2xlcyB0aGF0IHNob3VsZCBub3QgYmUgb3ZlcmRyYXduIGJ5IHRo
ZQotLy8gcGx1Z2luICgiY3V0b3V0cyIpLiAgVGhpcyBoZWxwcyBpbXBsZW1lbnQgdGhlICJpZnJh
bWUgc2hpbSIKLS8vIHRlY2huaXF1ZSBvZiBvdmVybGF5aW5nIGEgd2luZG93ZWQgcGx1Z2luIHdp
dGggY29udGVudCBmcm9tIHRoZQotLy8gcGFnZS4gIEluIGEgbnV0c2hlbGwsIGlmcmFtZSBlbGVt
ZW50cyBzaG91bGQgb2NjbHVkZSBwbHVnaW5zIHdoZW4KLS8vIHRoZXkgb2NjdXIgaGlnaGVyIGlu
IHRoZSBzdGFja2luZyBvcmRlci4KLXZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6d2luZG93
Q3V0T3V0UmVjdHMoY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8SW50UmVjdD4mIGN1dE91dFJlY3Rz
KQotewotICAgIFJlbmRlck9iamVjdCogcGx1Z2luTm9kZSA9IG1fZWxlbWVudC0+cmVuZGVyZXIo
KTsKLSAgICBBU1NFUlQocGx1Z2luTm9kZSk7Ci0gICAgaWYgKCFwbHVnaW5Ob2RlLT5zdHlsZSgp
KQotICAgICAgICByZXR1cm47Ci0gICAgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+IHBsdWdp
blpzdGFjazsKLSAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4gaWZyYW1lWnN0YWNrOwot
ICAgIGdldE9iamVjdFN0YWNrKHBsdWdpbk5vZGUsICZwbHVnaW5ac3RhY2spOwotCi0gICAgLy8g
R2V0IHRoZSBwYXJlbnQgd2lkZ2V0Ci0gICAgV2lkZ2V0KiBwYXJlbnRXaWRnZXQgPSB0aGlzLT5w
YXJlbnQoKTsKLSAgICBpZiAoIXBhcmVudFdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgRnJhbWVWaWV3KiBwYXJlbnRGcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxG
cmFtZVZpZXcqPihwYXJlbnRXaWRnZXQpOwotCi0gICAgY29uc3QgSGFzaFNldDxSZWZQdHI8V2lk
Z2V0PiA+KiBjaGlsZHJlbiA9IHBhcmVudEZyYW1lVmlldy0+Y2hpbGRyZW4oKTsKLSAgICBmb3Ig
KEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZHJlbi0+
YmVnaW4oKTsgaXQgIT0gY2hpbGRyZW4tPmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIC8vIFdlIG9u
bHkgY2FyZSBhYm91dCBGcmFtZVZpZXcncyBiZWNhdXNlIGlmcmFtZXMgc2hvdyB1cCBhcyBGcmFt
ZVZpZXdzLgotICAgICAgICBpZiAoISgqaXQpLT5pc0ZyYW1lVmlldygpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgY29uc3QgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPQotICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRnJhbWVWaWV3Kj4oKCppdCkuZ2V0KCkpOwotICAgICAg
ICAvLyBDaGVjayB0byBtYWtlIHN1cmUgd2UgY2FuIGdldCBib3RoIHRoZSBlbGVtZW50IGFuZCB0
aGUgUmVuZGVyT2JqZWN0Ci0gICAgICAgIC8vIGZvciB0aGlzIEZyYW1lVmlldywgaWYgd2UgY2Fu
J3QganVzdCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9iamVjdC4KLSAgICAgICAgaWYgKCFmcmFtZVZp
ZXctPmZyYW1lKCkgfHwgIWZyYW1lVmlldy0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCkKLSAgICAg
ICAgICAgIHx8ICFmcmFtZVZpZXctPmZyYW1lKCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigp
KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQg
PSBmcmFtZVZpZXctPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwotICAgICAgICBSZW5kZXJPYmpl
Y3QqIGlmcmFtZVJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKLQotICAgICAgICBpZiAo
ZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykKLSAgICAgICAgICAgICYm
IGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmludGVyc2VjdHMoZnJh
bWVSZWN0KQotICAgICAgICAgICAgJiYgKCFpZnJhbWVSZW5kZXJlci0+c3R5bGUoKSB8fCBpZnJh
bWVSZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpKSB7Ci0gICAgICAg
ICAgICBnZXRPYmplY3RTdGFjayhpZnJhbWVSZW5kZXJlciwgJmlmcmFtZVpzdGFjayk7Ci0gICAg
ICAgICAgICBpZiAoY2hlY2tTdGFja09uVG9wKGlmcmFtZVpzdGFjaywgcGx1Z2luWnN0YWNrKSkg
ewotICAgICAgICAgICAgICAgIEludFBvaW50IHBvaW50ID0KLSAgICAgICAgICAgICAgICAgICAg
cm91bmRlZEludFBvaW50KGlmcmFtZVJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUoKSk7Ci0gICAg
ICAgICAgICAgICAgUmVuZGVyQm94KiByYm94ID0gdG9SZW5kZXJCb3goaWZyYW1lUmVuZGVyZXIp
OwotICAgICAgICAgICAgICAgIEludFNpemUgc2l6ZShyYm94LT53aWR0aCgpLCByYm94LT5oZWln
aHQoKSk7Ci0gICAgICAgICAgICAgICAgY3V0T3V0UmVjdHMuYXBwZW5kKEludFJlY3QocG9pbnQs
IHNpemUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80973</attachid>
            <date>2011-02-02 14:46:52 -0800</date>
            <delta_ts>2011-02-03 13:28:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52594-20110202224648.patch</filename>
            <type>text/plain</type>
            <size>21697</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMzFkNWUxZWQ2ODA4NmFkY2FiZTM2MDcwN2UxNDBlYWYwYmU2NGRlLi43YjI5Yjgx
YTY1ZDFkY2E5N2NmNDZiMTU4ZDE0MThlYTZlYTUyYzFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDItMDIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY2hyb21pdW0gaWZy
YW1lIHNoaW0gY29kZSB0byBjcm9zcy1wbGF0Zm9ybSBmaWxlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI1OTQKKworICAgICAgICAqIHBsYXRmb3Jt
L3F0L1NraXBwZWQ6IFVuc2tpcCBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCisKIDIwMTEtMDIt
MDIgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
c2tpcCBhIHRlc3QgdGhhdCBqdXN0IG5lZWRzIHBsYXRmb3JtLXNwZWNpZmljIHJlc3VsdHMuIFJl
LWNsYXNzaWZ5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBiOGFhN2Y4OWI4ODdjMTc5YWUz
ZDk2OWRjOWViMjM3NGZhMzAwZjQ5Li4zNjFlYzIxMWY5YjhlYjczMjg3NDdmMTAwYjg1YThjN2Nk
M2JhMjU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTQ5MTcsMTAgKzQ5MTcsNiBAQCBm
YXN0L2ZpbGVzeXN0ZW0KIGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL29yaWdpbi1jbGVhbi1jb25m
b3JtYW5jZS5odG1sCiAKIAotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDYyMjMKLSMgVGhlIFdlYktpdCBwbHVnaW4gaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3Vw
cG9ydCBpZnJhbWUgc2hpbXMuCi1wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCi0KICMgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTY2CiAjIFtRdF0gZmFzdC9tZWRp
YS9jb2xvci1kb2VzLW5vdC1pbmNsdWRlLWFscGhhLmh0bWwgZmFpbHMKIGZhc3QvbWVkaWEvY29s
b3ItZG9lcy1ub3QtaW5jbHVkZS1hbHBoYS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzNTZiZmI0MmIx
MTkyMTU3NzRjZjBiYjUyOGRhYWQ1ZDE0OWYxZC4uYTY2YzliNmYwNjQ3MGJjYTU0OTJjZmMxYmE0
ZjUxYmZhNmRiMmE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTAyLTAyICBS
b2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNocm9taXVtIGlmcmFtZSBzaGltIGNvZGUg
dG8gY3Jvc3MtcGxhdGZvcm0gZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTI1OTQKKworICAgICAgICBNb3ZlIENocm9taXVtIGNvZGUgZm9yIGlk
ZW50aWZ5aW5nIGFuZCBjdXR0aW5nIG91dAorICAgICAgICBpZnJhbWUgc2hpbXMgZnJvbSBwbHVn
aW5zIHRvIGNyb3NzLXBsYXRmb3JtIHV0aWxpdHkgZmlsZQorICAgICAgICBJZnJhbWVTaGltU3Vw
cG9ydC5jcHAuCisgICAgICAgIEFtZW5kIFBsdWdpblZpZXdRdCB0byB1c2UgdGhpcyBjb2RlIHRv
IGhhbmRsZSBzaGltcyBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IEFkZCBD
aHJvbWl1bSBzdXBwb3J0IGZvciBJZnJhbWVTaGltU3VwcG9ydC5jcHAKKyAgICAgICAgKiBXZWJD
b3JlLnBybzogQWRkIFF0IHN1cHBvcnQgZm9yIElmcmFtZVNoaW1TdXBwb3J0LmNwcAorICAgICAg
ICAqIHBsdWdpbnMvSWZyYW1lU2hpbVN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmdldE9iamVjdFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmlmcmFtZUlzQWJvdmVQbHVn
aW4pOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93UmVjdHNQbHVnaW5TaG91bGROb3RQYWludE92
ZXIpOgorICAgICAgICAqIHBsdWdpbnMvSWZyYW1lU2hpbVN1cHBvcnQuaDogQWRkZWQuCisgICAg
ICAgICogcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCk6CisKIDIwMTEtMDItMDIgIERhdmlkIEh5YXR0
ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDQ4YzlmZmEyZGFlNGU5NzRkMGQyMzdjMTJlMGZkNzBkNmEyNzQ3
MzguLmQ4OTJhMWE3YWI1NDc5YTM4NmNhY2RhNjA2YzU5MmM2YjBhZmM5NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTM1ODgsNiArMzU4OCw4IEBACiAgICAgICAgICAgICAncGx1Z2lucy9ET01QbHVn
aW4uaCcsCiAgICAgICAgICAgICAncGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAnLAogICAgICAg
ICAgICAgJ3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuaCcsCisgICAgICAgICAgICAncGx1Z2lucy9J
ZnJhbWVTaGltU3VwcG9ydC5jcHAnLAorICAgICAgICAgICAgJ3BsdWdpbnMvSWZyYW1lU2hpbVN1
cHBvcnQuaCcsCiAgICAgICAgICAgICAncGx1Z2lucy9QbHVnaW5EYXRhLmNwcCcsCiAgICAgICAg
ICAgICAncGx1Z2lucy9QbHVnaW5EYXRhLmgnLAogICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMjAwNDI0MjA5NWE1YTM0ODdhMzc5Mzhl
MDVhYTQ0ZTI2ZWQxYzE2MC4uNGM4YmQwM2Q4MGRkYmUwMzdhMzc2NGM1M2VmZTA3Y2E3ZWE0MzY1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEyODUsNiArMTI4NSw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IHBsYXRmb3JtL1dpZGdldC5jcHAgXAogICAgIHBsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHAgXAogICAgIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIFwKKyAgICBwbHVnaW5zL0lm
cmFtZVNoaW1TdXBwb3J0LmNwcCBcCiAgICAgcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgXAog
ICAgIHBsdWdpbnMvUGx1Z2luRGVidWcuY3BwIFwKICAgICBwbHVnaW5zL1BsdWdpblBhY2thZ2Uu
Y3BwIFwKQEAgLTIyNDUsNiArMjI0Niw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsdWdpbnMvUGx1
Z2luRGF0YS5oIFwKICAgICBwbHVnaW5zL1BsdWdpbkRlYnVnLmggXAogICAgIHBsdWdpbnMvRE9N
UGx1Z2luLmggXAorICAgIHBsdWdpbnMvSWZyYW1lU2hpbVN1cHBvcnQuaCBcCiAgICAgcGx1Z2lu
cy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmggXAogICAgIHBsdWdpbnMvUGx1Z2luUGFja2Fn
ZS5oIFwKICAgICBwbHVnaW5zL1BsdWdpblN0cmVhbS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvSWZyYW1lU2hpbVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9JZnJhbWVTaGltU3VwcG9ydC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY2ZTI5OTI3MzM1Y2MxMTlh
YjAyM2I2MjFlMDg1M2NlMzU0YjlmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvSWZyYW1lU2hpbVN1cHBvcnQuY3BwCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIklmcmFtZVNoaW1TdXBwb3J0LmgiCisKKyNpbmNsdWRlICJF
bGVtZW50LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
KyNpbmNsdWRlICJXaWRnZXQuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKKy8vIFRo
aXMgZmlsZSBwcm92aWRlcyBwbHVnaW4tcmVsYXRlZCB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgaWZy
YW1lIHNoaW1zIGFuZCBpcyBzaGFyZWQgYnkgcGxhdGZvcm1zIHRoYXQgaW5oZXJpdAorLy8gZnJv
bSBQbHVnaW5WaWV3IChlLmcuIFF0KSBhbmQgdGhvc2UgdGhhdCBkbyBub3QgKGUuZy4gQ2hyb21p
dW0pLgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIGdldE9iamVjdFN0YWNr
KGNvbnN0IFJlbmRlck9iamVjdCogcm8sIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiogcm9T
dGFjaykKK3sKKyAgICByb1N0YWNrLT5jbGVhcigpOworICAgIHdoaWxlIChybykgeworICAgICAg
ICByb1N0YWNrLT5hcHBlbmQocm8pOworICAgICAgICBybyA9IHJvLT5wYXJlbnQoKTsKKyAgICB9
Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBpZiBzdGFjazEgaXMgYXQgb3IgYWJvdmUgc3RhY2syCitz
dGF0aWMgYm9vbCBpZnJhbWVJc0Fib3ZlUGx1Z2luKGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJP
YmplY3QqPiYgaWZyYW1lWnN0YWNrLCBjb25zdCBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4m
IHBsdWdpblpzdGFjaykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlmcmFtZVpzdGFj
ay5zaXplKCkgJiYgaSA8IHBsdWdpblpzdGFjay5zaXplKCk7IGkrKykgeworICAgICAgICAvLyBU
aGUgcm9vdCBpcyBhdCB0aGUgZW5kIG9mIHRoZXNlIHN0YWNrcy4gIFdlIHdhbnQgdG8gaXRlcmF0
ZQorICAgICAgICAvLyByb290LWRvd253YXJkcyBzbyB3ZSBpbmRleCBiYWNrd2FyZHMgZnJvbSB0
aGUgZW5kLgorICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJvMSA9IGlmcmFtZVpzdGFja1tp
ZnJhbWVac3RhY2suc2l6ZSgpIC0gMSAtIGldOworICAgICAgICBjb25zdCBSZW5kZXJPYmplY3Qq
IHJvMiA9IHBsdWdpblpzdGFja1twbHVnaW5ac3RhY2suc2l6ZSgpIC0gMSAtIGldOworCisgICAg
ICAgIGlmIChybzEgIT0gcm8yKSB7CisgICAgICAgICAgICAvLyBXaGVuIHdlIGZpbmQgbm9kZXMg
aW4gdGhlIHN0YWNrIHRoYXQgYXJlIG5vdCB0aGUgc2FtZSwgdGhlbgorICAgICAgICAgICAgLy8g
d2UndmUgZm91bmQgdGhlIG5vZGVzIGp1c3QgYmVsb3cgdGhlIGxvd2VzdCBjb21tZW50IGFuY2Vz
dG9yLgorICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHNob3VsZCBiZSBvbiB0b3AuCisK
KyAgICAgICAgICAgIC8vIFNlZSBpZiB6LWluZGV4IGRldGVybWluZXMgYW4gb3JkZXIuCisgICAg
ICAgICAgICBpZiAocm8xLT5zdHlsZSgpICYmIHJvMi0+c3R5bGUoKSkgeworICAgICAgICAgICAg
ICAgIGludCB6MSA9IHJvMS0+c3R5bGUoKS0+ekluZGV4KCk7CisgICAgICAgICAgICAgICAgaW50
IHoyID0gcm8yLT5zdHlsZSgpLT56SW5kZXgoKTsKKyAgICAgICAgICAgICAgICBpZiAoejEgPiB6
MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgaWYg
KHoxIDwgejIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gSWYgdGhlIHBsdWdpbiBkb2VzIG5vdCBoYXZlIGFuIGV4cGxp
Y2l0IHotaW5kZXggaXQgc3RhY2tzIGJlaGluZCB0aGUgaWZyYW1lLgorICAgICAgICAgICAgLy8g
VGhpcyBpcyBmb3IgbWFpbnRhaW5pbmcgY29tcGF0aWJpbGl0eSB3aXRoIElFLgorICAgICAgICAg
ICAgaWYgKHJvMi0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikgeworICAg
ICAgICAgICAgICAgIC8vIFRoZSAwJ3RoIGVsZW1lbnRzIG9mIHRoZXNlIFJlbmRlck9iamVjdCBh
cnJheXMgcmVwcmVzZW50IHRoZSBwbHVnaW4gbm9kZSBhbmQKKyAgICAgICAgICAgICAgICAvLyB0
aGUgaWZyYW1lLgorICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGx1Z2luUmVu
ZGVyT2JqZWN0ID0gcGx1Z2luWnN0YWNrWzBdOworICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRl
ck9iamVjdCogaWZyYW1lUmVuZGVyT2JqZWN0ID0gaWZyYW1lWnN0YWNrWzBdOworCisgICAgICAg
ICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKSAmJiBpZnJhbWVSZW5kZXJP
YmplY3QtPnN0eWxlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9i
amVjdC0+c3R5bGUoKS0+ekluZGV4KCkgPiBpZnJhbWVSZW5kZXJPYmplY3QtPnN0eWxlKCktPnpJ
bmRleCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gSW5zcGVjdCB0aGUgZG9jdW1lbnQgb3JkZXIuICBMYXRlciBvcmRlciBt
ZWFucyBoaWdoZXIgc3RhY2tpbmcuCisgICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBh
cmVudCA9IHJvMS0+cGFyZW50KCk7CisgICAgICAgICAgICBpZiAoIXBhcmVudCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBBU1NFUlQocGFyZW50ID09IHJvMi0+
cGFyZW50KCkpOworCisgICAgICAgICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogcm8gPSBw
YXJlbnQtPmZpcnN0Q2hpbGQoKTsgcm87IHJvID0gcm8tPm5leHRTaWJsaW5nKCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAocm8gPT0gcm8xKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgaWYgKHJvID09IHJvMikKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoZmFsc2UpOyAv
LyBXZSBzaG91bGQgaGF2ZSBzZWVuIHJvMSBhbmQgcm8yIGJ5IG5vdy4KKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8g
UmV0dXJuIGEgc2V0IG9mIHJlY3RhbmdsZXMgdGhhdCBzaG91bGQgbm90IGJlIG92ZXJkcmF3biBi
eSB0aGUKKy8vIHBsdWdpbiAoImN1dG91dHMiKS4gIFRoaXMgaGVscHMgaW1wbGVtZW50IHRoZSAi
aWZyYW1lIHNoaW0iCisvLyB0ZWNobmlxdWUgb2Ygb3ZlcmxheWluZyBhIHdpbmRvd2VkIHBsdWdp
biB3aXRoIGNvbnRlbnQgZnJvbSB0aGUKKy8vIHBhZ2UuICBJbiBhIG51dHNoZWxsLCBpZnJhbWUg
ZWxlbWVudHMgc2hvdWxkIG9jY2x1ZGUgcGx1Z2lucyB3aGVuCisvLyB0aGV5IG9jY3VyIGhpZ2hl
ciBpbiB0aGUgc3RhY2tpbmcgb3JkZXIuCit2b2lkIHdpbmRvd1JlY3RzUGx1Z2luU2hvdWxkTm90
UGFpbnRPdmVyKEVsZW1lbnQqIGVsZW1lbnQsIFdpZGdldCogcGFyZW50V2lkZ2V0LCBjb25zdCBJ
bnRSZWN0JiBmcmFtZVJlY3QsIFZlY3RvcjxJbnRSZWN0PiYgY3V0T3V0UmVjdHMpCit7CisgICAg
UmVuZGVyT2JqZWN0KiBwbHVnaW5Ob2RlID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBBU1NF
UlQocGx1Z2luTm9kZSk7CisgICAgaWYgKCFwbHVnaW5Ob2RlLT5zdHlsZSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+IHBsdWdpblpzdGFjazsKKyAg
ICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4gaWZyYW1lWnN0YWNrOworICAgIGdldE9iamVj
dFN0YWNrKHBsdWdpbk5vZGUsICZwbHVnaW5ac3RhY2spOworCisgICAgaWYgKCFwYXJlbnRXaWRn
ZXQtPmlzRnJhbWVWaWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lVmlldyogcGFy
ZW50RnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFyZW50V2lkZ2V0KTsKKwor
ICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPiogY2hpbGRyZW4gPSBwYXJlbnRGcmFt
ZVZpZXctPmNoaWxkcmVuKCk7CisgICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gY2hpbGRyZW4tPmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLT5lbmQo
KTsgKytpdCkgeworICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgRnJhbWVWaWV3J3MgYmVj
YXVzZSBpZnJhbWVzIHNob3cgdXAgYXMgRnJhbWVWaWV3cy4KKyAgICAgICAgaWYgKCEoKml0KS0+
aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNvbnN0IEZy
YW1lVmlldyogZnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8Y29uc3QgRnJhbWVWaWV3Kj4oKCppdCku
Z2V0KCkpOworICAgICAgICAvLyBDaGVjayB0byBtYWtlIHN1cmUgd2UgY2FuIGdldCBib3RoIHRo
ZSBlbGVtZW50IGFuZCB0aGUgUmVuZGVyT2JqZWN0CisgICAgICAgIC8vIGZvciB0aGlzIEZyYW1l
VmlldywgaWYgd2UgY2FuJ3QganVzdCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9iamVjdC4KKyAgICAg
ICAgaWYgKCFmcmFtZVZpZXctPmZyYW1lKCkgfHwgIWZyYW1lVmlldy0+ZnJhbWUoKS0+b3duZXJF
bGVtZW50KCkKKyAgICAgICAgICAgIHx8ICFmcmFtZVZpZXctPmZyYW1lKCktPm93bmVyRWxlbWVu
dCgpLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgSFRNTEVs
ZW1lbnQqIGVsZW1lbnQgPSBmcmFtZVZpZXctPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOworICAg
ICAgICBSZW5kZXJPYmplY3QqIGlmcmFtZVJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsK
KworICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykK
KyAgICAgICAgICAgICYmIGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
LmludGVyc2VjdHMoZnJhbWVSZWN0KQorICAgICAgICAgICAgJiYgKCFpZnJhbWVSZW5kZXJlci0+
c3R5bGUoKSB8fCBpZnJhbWVSZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lC
TEUpKSB7CisgICAgICAgICAgICBnZXRPYmplY3RTdGFjayhpZnJhbWVSZW5kZXJlciwgJmlmcmFt
ZVpzdGFjayk7CisgICAgICAgICAgICBpZiAoaWZyYW1lSXNBYm92ZVBsdWdpbihpZnJhbWVac3Rh
Y2ssIHBsdWdpblpzdGFjaykpIHsKKyAgICAgICAgICAgICAgICBJbnRQb2ludCBwb2ludCA9IHJv
dW5kZWRJbnRQb2ludChpZnJhbWVSZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCkpOworICAgICAg
ICAgICAgICAgIFJlbmRlckJveCogcmJveCA9IHRvUmVuZGVyQm94KGlmcmFtZVJlbmRlcmVyKTsK
KyAgICAgICAgICAgICAgICBJbnRTaXplIHNpemUocmJveC0+d2lkdGgoKSwgcmJveC0+aGVpZ2h0
KCkpOworICAgICAgICAgICAgICAgIGN1dE91dFJlY3RzLmFwcGVuZChJbnRSZWN0KHBvaW50LCBz
aXplKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSWZyYW1lU2hp
bVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSWZyYW1lU2hpbVN1cHBvcnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41N2QwMjgzODA0ZTkwYzk5NTkxZmQyNmEyYzdjZTNjODkyOWE0YjFhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JZnJhbWVTaGltU3VwcG9ydC5o
CkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFJvYmVydCBIb2dh
biA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBJZnJhbWVTaGltU3VwcG9y
dF9oCisjZGVmaW5lIElmcmFtZVNoaW1TdXBwb3J0X2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRWxlbWVudDsKK2NsYXNzIFdpZGdldDsK
K2NsYXNzIEludFJlY3Q7CisKK3ZvaWQgd2luZG93UmVjdHNQbHVnaW5TaG91bGROb3RQYWludE92
ZXIoRWxlbWVudCosIFdpZGdldCogcGFyZW50V2lkZ2V0LCBjb25zdCBJbnRSZWN0JiBmcmFtZVJl
Y3QsIFZlY3RvcjxJbnRSZWN0PiYgY3V0T3V0UmVjdHMpOworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBJZnJhbWVTaGltU3VwcG9ydF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKaW5kZXggNmNmMzZlOTY1Y2YxMTRjMzhlZDNkZjUzODdl
NWZiNDlhMTc0NTQ2Yi4uYThlZTMxOTg3MzYzYmFkNDY2ODZmMzFkMjdmZDkzNTQyOGNmM2Q2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcApAQCAtNDcsNiAr
NDcsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUgIklmcmFtZVNoaW1TdXBw
b3J0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgpAQCAtNjI3LDEwICs2MjgsMTkgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdp
bmRvd0lmTmVlZGVkKCkKIAogICAgIGlmIChtX2lzV2luZG93ZWQpIHsKICAgICAgICAgcGxhdGZv
cm1QbHVnaW5XaWRnZXQoKS0+c2V0R2VvbWV0cnkobV93aW5kb3dSZWN0KTsKKworICAgICAgICAv
LyBDdXQgb3V0IGFyZWFzIG9mIHRoZSBwbHVnaW4gb2NjbHVkZWQgYnkgaWZyYW1lIHNoaW1zCisg
ICAgICAgIFZlY3RvcjxJbnRSZWN0PiBjdXRPdXRSZWN0czsKKyAgICAgICAgUVJlZ2lvbiBjbGlw
UmVnaW9uID0gUVJlZ2lvbihtX2NsaXBSZWN0KTsKKyAgICAgICAgd2luZG93UmVjdHNQbHVnaW5T
aG91bGROb3RQYWludE92ZXIobV9lbGVtZW50LCB0aGlzLT5wYXJlbnQoKSwgZnJhbWVSZWN0KCks
IGN1dE91dFJlY3RzKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjdXRPdXRSZWN0
cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgY3V0T3V0UmVjdHNbaV0ubW92ZSgtZnJhbWVS
ZWN0KCkueCgpLCAtZnJhbWVSZWN0KCkueSgpKTsKKyAgICAgICAgICAgIGNsaXBSZWdpb24gPSBj
bGlwUmVnaW9uLnN1YnRyYWN0ZWQoUVJlZ2lvbihjdXRPdXRSZWN0c1tpXSkpOworICAgICAgICB9
CiAgICAgICAgIC8vIGlmIHNldE1hc2sgaXMgc2V0IHdpdGggYW4gZW1wdHkgUVJlZ2lvbiwgbm8g
Y2xpcHBpbmcgd2lsbAogICAgICAgICAvLyBiZSBwZXJmb3JtZWQsIHNvIGluIHRoYXQgY2FzZSB3
ZSBoaWRlIHRoZSBwbHVnaW4gdmlldwotICAgICAgICBwbGF0Zm9ybVBsdWdpbldpZGdldCgpLT5z
ZXRWaXNpYmxlKCFtX2NsaXBSZWN0LmlzRW1wdHkoKSk7Ci0gICAgICAgIHBsYXRmb3JtUGx1Z2lu
V2lkZ2V0KCktPnNldE1hc2soUVJlZ2lvbihtX2NsaXBSZWN0KSk7CisgICAgICAgIHBsYXRmb3Jt
UGx1Z2luV2lkZ2V0KCktPnNldFZpc2libGUoIWNsaXBSZWdpb24uaXNFbXB0eSgpKTsKKyAgICAg
ICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+c2V0TWFzayhjbGlwUmVnaW9uKTsKIAogICAgICAg
ICBtX25wV2luZG93LnggPSBtX3dpbmRvd1JlY3QueCgpOwogICAgICAgICBtX25wV2luZG93Lnkg
PSBtX3dpbmRvd1JlY3QueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxMWEzN2I3
NGRjYjE4YTQ2NjU2ZjRkYjdkMmJhYzM0ZWVkYjU2ZDc5Li5jNTczODYzMjQzNTU3ZTgzYzJmZTFk
ZjdjYTIxNzZjOWRmMzdkYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDExLTAyLTAyICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNocm9t
aXVtIGlmcmFtZSBzaGltIGNvZGUgdG8gY3Jvc3MtcGxhdGZvcm0gZmlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI1OTQKKworICAgICAgICAqIHNy
Yy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcDogTW92ZSBjb2RlIHRvIFdlYkNvcmUvcGx1Z2lu
L0lmcmFtZVNoaW1TdXBwb3J0LmNwcAorCiAyMDExLTAyLTAxICBEYXJpbiBGaXNoZXIgIDxkYXJp
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJ
bXBsLmNwcAppbmRleCAzN2I2Zjc2YWFiYmQ4YjVhODIwNjJjZTg0OTc3OTg1NmY1ZWM0YzM2Li40
ZGM5NTBkYTkwN2YzZDViOGJhNTg1NGM3YTBjOWEzZjM3MTliM2NmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAt
NjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisjaW5jbHVkZSAiSWZy
YW1lU2hpbVN1cHBvcnQuaCIKICNpbmNsdWRlICJLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSAi
S2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKQEAgLTU1Niw3ICs1NTcs
NyBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmNhbGN1bGF0ZUdlb21ldHJ5KGNvbnN0
IEludFJlY3QmIGZyYW1lUmVjdCwKICAgICBjbGlwUmVjdCA9IHdpbmRvd0NsaXBSZWN0KCk7CiAg
ICAgY2xpcFJlY3QubW92ZSgtd2luZG93UmVjdC54KCksIC13aW5kb3dSZWN0LnkoKSk7CiAKLSAg
ICB3aW5kb3dDdXRPdXRSZWN0cyhmcmFtZVJlY3QsIGN1dE91dFJlY3RzKTsKKyAgICB3aW5kb3dS
ZWN0c1BsdWdpblNob3VsZE5vdFBhaW50T3ZlcihtX2VsZW1lbnQsIHRoaXMtPnBhcmVudCgpLCBm
cmFtZVJlY3QsIGN1dE91dFJlY3RzKTsKICAgICAvLyBDb252ZXJ0IHRvIHRoZSBwbHVnaW4gcG9z
aXRpb24uCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjdXRPdXRSZWN0cy5zaXplKCk7IGkr
KykKICAgICAgICAgY3V0T3V0UmVjdHNbaV0ubW92ZSgtZnJhbWVSZWN0LngoKSwgLWZyYW1lUmVj
dC55KCkpOwpAQCAtNTgxLDEzMiArNTgyLDQgQEAgV2ViQ29yZTo6SW50UmVjdCBXZWJQbHVnaW5D
b250YWluZXJJbXBsOjp3aW5kb3dDbGlwUmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIGNsaXBSZWN0
OwogfQogCi1zdGF0aWMgdm9pZCBnZXRPYmplY3RTdGFjayhjb25zdCBSZW5kZXJPYmplY3QqIHJv
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+
KiByb1N0YWNrKQotewotICAgIHJvU3RhY2stPmNsZWFyKCk7Ci0gICAgd2hpbGUgKHJvKSB7Ci0g
ICAgICAgIHJvU3RhY2stPmFwcGVuZChybyk7Ci0gICAgICAgIHJvID0gcm8tPnBhcmVudCgpOwot
ICAgIH0KLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmIHN0YWNrMSBpcyBhdCBvciBhYm92ZSBzdGFj
azIKLXN0YXRpYyBib29sIGNoZWNrU3RhY2tPblRvcCgKLSAgICAgICAgY29uc3QgVmVjdG9yPGNv
bnN0IFJlbmRlck9iamVjdCo+JiBpZnJhbWVac3RhY2ssCi0gICAgICAgIGNvbnN0IFZlY3Rvcjxj
b25zdCBSZW5kZXJPYmplY3QqPiYgcGx1Z2luWnN0YWNrKQotewotICAgIGZvciAoc2l6ZV90IGkx
ID0gMCwgaTIgPSAwOwotICAgICAgICAgaTEgPCBpZnJhbWVac3RhY2suc2l6ZSgpICYmIGkyIDwg
cGx1Z2luWnN0YWNrLnNpemUoKTsKLSAgICAgICAgIGkxKyssIGkyKyspIHsKLSAgICAgICAgLy8g
VGhlIHJvb3QgaXMgYXQgdGhlIGVuZCBvZiB0aGVzZSBzdGFja3MuICBXZSB3YW50IHRvIGl0ZXJh
dGUKLSAgICAgICAgLy8gcm9vdC1kb3dud2FyZHMgc28gd2UgaW5kZXggYmFja3dhcmRzIGZyb20g
dGhlIGVuZC4KLSAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBybzEgPSBpZnJhbWVac3RhY2tb
aWZyYW1lWnN0YWNrLnNpemUoKSAtIDEgLSBpMV07Ci0gICAgICAgIGNvbnN0IFJlbmRlck9iamVj
dCogcm8yID0gcGx1Z2luWnN0YWNrW3BsdWdpblpzdGFjay5zaXplKCkgLSAxIC0gaTJdOwotCi0g
ICAgICAgIGlmIChybzEgIT0gcm8yKSB7Ci0gICAgICAgICAgICAvLyBXaGVuIHdlIGZpbmQgbm9k
ZXMgaW4gdGhlIHN0YWNrIHRoYXQgYXJlIG5vdCB0aGUgc2FtZSwgdGhlbgotICAgICAgICAgICAg
Ly8gd2UndmUgZm91bmQgdGhlIG5vZGVzIGp1c3QgYmVsb3cgdGhlIGxvd2VzdCBjb21tZW50IGFu
Y2VzdG9yLgotICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHNob3VsZCBiZSBvbiB0b3Au
Ci0KLSAgICAgICAgICAgIC8vIFNlZSBpZiB6LWluZGV4IGRldGVybWluZXMgYW4gb3JkZXIuCi0g
ICAgICAgICAgICBpZiAocm8xLT5zdHlsZSgpICYmIHJvMi0+c3R5bGUoKSkgewotICAgICAgICAg
ICAgICAgIGludCB6MSA9IHJvMS0+c3R5bGUoKS0+ekluZGV4KCk7Ci0gICAgICAgICAgICAgICAg
aW50IHoyID0gcm8yLT5zdHlsZSgpLT56SW5kZXgoKTsKLSAgICAgICAgICAgICAgICBpZiAoejEg
PiB6MikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAg
aWYgKHoxIDwgejIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gSWYgdGhlIHBsdWdpbiBkb2VzIG5vdCBoYXZlIGFuIGV4
cGxpY2l0IHotaW5kZXggaXQgc3RhY2tzIGJlaGluZCB0aGUgaWZyYW1lLgotICAgICAgICAgICAg
Ly8gVGhpcyBpcyBmb3IgbWFpbnRhaW5pbmcgY29tcGF0aWJpbGl0eSB3aXRoIElFLgotICAgICAg
ICAgICAgaWYgKHJvMi0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikgewot
ICAgICAgICAgICAgICAgIC8vIFRoZSAwJ3RoIGVsZW1lbnRzIG9mIHRoZXNlIFJlbmRlck9iamVj
dCBhcnJheXMgcmVwcmVzZW50IHRoZSBwbHVnaW4gbm9kZSBhbmQKLSAgICAgICAgICAgICAgICAv
LyB0aGUgaWZyYW1lLgotICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGx1Z2lu
UmVuZGVyT2JqZWN0ID0gcGx1Z2luWnN0YWNrWzBdOwotICAgICAgICAgICAgICAgIGNvbnN0IFJl
bmRlck9iamVjdCogaWZyYW1lUmVuZGVyT2JqZWN0ID0gaWZyYW1lWnN0YWNrWzBdOwotCi0gICAg
ICAgICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKSAmJiBpZnJhbWVSZW5k
ZXJPYmplY3QtPnN0eWxlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpblJlbmRl
ck9iamVjdC0+c3R5bGUoKS0+ekluZGV4KCkgPiBpZnJhbWVSZW5kZXJPYmplY3QtPnN0eWxlKCkt
PnpJbmRleCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgLy8gSW5zcGVjdCB0aGUgZG9jdW1lbnQgb3JkZXIuICBMYXRlciBvcmRl
ciBtZWFucyBoaWdoZXIKLSAgICAgICAgICAgIC8vIHN0YWNraW5nLgotICAgICAgICAgICAgY29u
c3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSBybzEtPnBhcmVudCgpOwotICAgICAgICAgICAgaWYg
KCFwYXJlbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQVNT
RVJUKHBhcmVudCA9PSBybzItPnBhcmVudCgpKTsKLQotICAgICAgICAgICAgZm9yIChjb25zdCBS
ZW5kZXJPYmplY3QqIHJvID0gcGFyZW50LT5maXJzdENoaWxkKCk7IHJvOyBybyA9IHJvLT5uZXh0
U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJvID09IHJvMSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChybyA9PSBybzIpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgQVNTRVJUKGZhbHNlKTsgIC8vIFdlIHNob3VsZCBoYXZlIHNlZW4gcm8xIGFuZCBybzIgYnkg
bm93LgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOwotfQotCi0vLyBSZXR1cm4gYSBzZXQgb2YgcmVjdGFuZ2xlcyB0aGF0IHNob3Vs
ZCBub3QgYmUgb3ZlcmRyYXduIGJ5IHRoZQotLy8gcGx1Z2luICgiY3V0b3V0cyIpLiAgVGhpcyBo
ZWxwcyBpbXBsZW1lbnQgdGhlICJpZnJhbWUgc2hpbSIKLS8vIHRlY2huaXF1ZSBvZiBvdmVybGF5
aW5nIGEgd2luZG93ZWQgcGx1Z2luIHdpdGggY29udGVudCBmcm9tIHRoZQotLy8gcGFnZS4gIElu
IGEgbnV0c2hlbGwsIGlmcmFtZSBlbGVtZW50cyBzaG91bGQgb2NjbHVkZSBwbHVnaW5zIHdoZW4K
LS8vIHRoZXkgb2NjdXIgaGlnaGVyIGluIHRoZSBzdGFja2luZyBvcmRlci4KLXZvaWQgV2ViUGx1
Z2luQ29udGFpbmVySW1wbDo6d2luZG93Q3V0T3V0UmVjdHMoY29uc3QgSW50UmVjdCYgZnJhbWVS
ZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0
b3I8SW50UmVjdD4mIGN1dE91dFJlY3RzKQotewotICAgIFJlbmRlck9iamVjdCogcGx1Z2luTm9k
ZSA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKTsKLSAgICBBU1NFUlQocGx1Z2luTm9kZSk7Ci0gICAg
aWYgKCFwbHVnaW5Ob2RlLT5zdHlsZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgVmVjdG9yPGNv
bnN0IFJlbmRlck9iamVjdCo+IHBsdWdpblpzdGFjazsKLSAgICBWZWN0b3I8Y29uc3QgUmVuZGVy
T2JqZWN0Kj4gaWZyYW1lWnN0YWNrOwotICAgIGdldE9iamVjdFN0YWNrKHBsdWdpbk5vZGUsICZw
bHVnaW5ac3RhY2spOwotCi0gICAgLy8gR2V0IHRoZSBwYXJlbnQgd2lkZ2V0Ci0gICAgV2lkZ2V0
KiBwYXJlbnRXaWRnZXQgPSB0aGlzLT5wYXJlbnQoKTsKLSAgICBpZiAoIXBhcmVudFdpZGdldC0+
aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRnJhbWVWaWV3KiBwYXJlbnRG
cmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnRXaWRnZXQpOwotCi0gICAg
Y29uc3QgSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+KiBjaGlsZHJlbiA9IHBhcmVudEZyYW1lVmll
dy0+Y2hpbGRyZW4oKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBjaGlsZHJlbi0+YmVnaW4oKTsgaXQgIT0gY2hpbGRyZW4tPmVuZCgpOyAr
K2l0KSB7Ci0gICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBGcmFtZVZpZXcncyBiZWNhdXNl
IGlmcmFtZXMgc2hvdyB1cCBhcyBGcmFtZVZpZXdzLgotICAgICAgICBpZiAoISgqaXQpLT5pc0Zy
YW1lVmlldygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgY29uc3QgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRnJhbWVWaWV3
Kj4oKCppdCkuZ2V0KCkpOwotICAgICAgICAvLyBDaGVjayB0byBtYWtlIHN1cmUgd2UgY2FuIGdl
dCBib3RoIHRoZSBlbGVtZW50IGFuZCB0aGUgUmVuZGVyT2JqZWN0Ci0gICAgICAgIC8vIGZvciB0
aGlzIEZyYW1lVmlldywgaWYgd2UgY2FuJ3QganVzdCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9iamVj
dC4KLSAgICAgICAgaWYgKCFmcmFtZVZpZXctPmZyYW1lKCkgfHwgIWZyYW1lVmlldy0+ZnJhbWUo
KS0+b3duZXJFbGVtZW50KCkKLSAgICAgICAgICAgIHx8ICFmcmFtZVZpZXctPmZyYW1lKCktPm93
bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBmcmFtZVZpZXctPmZyYW1lKCktPm93bmVyRWxlbWVu
dCgpOwotICAgICAgICBSZW5kZXJPYmplY3QqIGlmcmFtZVJlbmRlcmVyID0gZWxlbWVudC0+cmVu
ZGVyZXIoKTsKLQotICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omlm
cmFtZVRhZykKLSAgICAgICAgICAgICYmIGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCgpLmludGVyc2VjdHMoZnJhbWVSZWN0KQotICAgICAgICAgICAgJiYgKCFpZnJhbWVS
ZW5kZXJlci0+c3R5bGUoKSB8fCBpZnJhbWVSZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUpKSB7Ci0gICAgICAgICAgICBnZXRPYmplY3RTdGFjayhpZnJhbWVSZW5kZXJl
ciwgJmlmcmFtZVpzdGFjayk7Ci0gICAgICAgICAgICBpZiAoY2hlY2tTdGFja09uVG9wKGlmcmFt
ZVpzdGFjaywgcGx1Z2luWnN0YWNrKSkgewotICAgICAgICAgICAgICAgIEludFBvaW50IHBvaW50
ID0KLSAgICAgICAgICAgICAgICAgICAgcm91bmRlZEludFBvaW50KGlmcmFtZVJlbmRlcmVyLT5s
b2NhbFRvQWJzb2x1dGUoKSk7Ci0gICAgICAgICAgICAgICAgUmVuZGVyQm94KiByYm94ID0gdG9S
ZW5kZXJCb3goaWZyYW1lUmVuZGVyZXIpOwotICAgICAgICAgICAgICAgIEludFNpemUgc2l6ZShy
Ym94LT53aWR0aCgpLCByYm94LT5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgY3V0T3V0UmVj
dHMuYXBwZW5kKEludFJlY3QocG9pbnQsIHNpemUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81107</attachid>
            <date>2011-02-03 13:28:54 -0800</date>
            <delta_ts>2011-02-04 10:50:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52594-20110203212852.patch</filename>
            <type>text/plain</type>
            <size>21618</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMzFkNWUxZWQ2ODA4NmFkY2FiZTM2MDcwN2UxNDBlYWYwYmU2NGRlLi43YjI5Yjgx
YTY1ZDFkY2E5N2NmNDZiMTU4ZDE0MThlYTZlYTUyYzFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDItMDIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY2hyb21pdW0gaWZy
YW1lIHNoaW0gY29kZSB0byBjcm9zcy1wbGF0Zm9ybSBmaWxlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI1OTQKKworICAgICAgICAqIHBsYXRmb3Jt
L3F0L1NraXBwZWQ6IFVuc2tpcCBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCisKIDIwMTEtMDIt
MDIgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
c2tpcCBhIHRlc3QgdGhhdCBqdXN0IG5lZWRzIHBsYXRmb3JtLXNwZWNpZmljIHJlc3VsdHMuIFJl
LWNsYXNzaWZ5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBiOGFhN2Y4OWI4ODdjMTc5YWUz
ZDk2OWRjOWViMjM3NGZhMzAwZjQ5Li4zNjFlYzIxMWY5YjhlYjczMjg3NDdmMTAwYjg1YThjN2Nk
M2JhMjU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTQ5MTcsMTAgKzQ5MTcsNiBAQCBm
YXN0L2ZpbGVzeXN0ZW0KIGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL29yaWdpbi1jbGVhbi1jb25m
b3JtYW5jZS5odG1sCiAKIAotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDYyMjMKLSMgVGhlIFdlYktpdCBwbHVnaW4gaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3Vw
cG9ydCBpZnJhbWUgc2hpbXMuCi1wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCi0KICMgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTY2CiAjIFtRdF0gZmFzdC9tZWRp
YS9jb2xvci1kb2VzLW5vdC1pbmNsdWRlLWFscGhhLmh0bWwgZmFpbHMKIGZhc3QvbWVkaWEvY29s
b3ItZG9lcy1ub3QtaW5jbHVkZS1hbHBoYS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzNTZiZmI0MmIx
MTkyMTU3NzRjZjBiYjUyOGRhYWQ1ZDE0OWYxZC4uMmFmN2RjNzNlYTI5ZGIxYjI3NDhlMTRjNmFi
MzNiZTUxNTBhMzY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTAyLTAyICBS
b2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNocm9taXVtIGlmcmFtZSBzaGltIGNvZGUg
dG8gY3Jvc3MtcGxhdGZvcm0gZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTI1OTQKKworICAgICAgICBNb3ZlIENocm9taXVtIGNvZGUgZm9yIGlk
ZW50aWZ5aW5nIGFuZCBjdXR0aW5nIG91dAorICAgICAgICBpZnJhbWUgc2hpbXMgZnJvbSBwbHVn
aW5zIHRvIGNyb3NzLXBsYXRmb3JtIHV0aWxpdHkgZmlsZQorICAgICAgICBJRnJhbWVTaGltU3Vw
cG9ydC5jcHAuCisgICAgICAgIEFtZW5kIFBsdWdpblZpZXdRdCB0byB1c2UgdGhpcyBjb2RlIHRv
IGhhbmRsZSBzaGltcyBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IEFkZCBD
aHJvbWl1bSBzdXBwb3J0IGZvciBJRnJhbWVTaGltU3VwcG9ydC5jcHAKKyAgICAgICAgKiBXZWJD
b3JlLnBybzogQWRkIFF0IHN1cHBvcnQgZm9yIElGcmFtZVNoaW1TdXBwb3J0LmNwcAorICAgICAg
ICAqIHBsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmdldE9iamVjdFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmlmcmFtZUlzQWJvdmVQbHVn
aW4pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UGx1Z2luT2NjbHVzaW9ucyk6CisgICAgICAgICog
cGx1Z2lucy9JRmZyYW1lU2hpbVN1cHBvcnQuaDogQWRkZWQuCisgICAgICAgICogcGx1Z2lucy9x
dC9QbHVnaW5WaWV3UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0TlBX
aW5kb3dJZk5lZWRlZCk6CisKIDIwMTEtMDItMDIgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDQ4YzlmZmEyZGFlNGU5NzRkMGQyMzdjMTJlMGZkNzBkNmEyNzQ3MzguLjhjZWJmOGRiM2Fj
YzY4MjJlMGM2NGUwNmE3Y2ZhMmNhOGRiZTgyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1ODgs
NiArMzU4OCw4IEBACiAgICAgICAgICAgICAncGx1Z2lucy9ET01QbHVnaW4uaCcsCiAgICAgICAg
ICAgICAncGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAnLAogICAgICAgICAgICAgJ3BsdWdpbnMv
RE9NUGx1Z2luQXJyYXkuaCcsCisgICAgICAgICAgICAncGx1Z2lucy9JRnJhbWVTaGltU3VwcG9y
dC5jcHAnLAorICAgICAgICAgICAgJ3BsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuaCcsCiAgICAg
ICAgICAgICAncGx1Z2lucy9QbHVnaW5EYXRhLmNwcCcsCiAgICAgICAgICAgICAncGx1Z2lucy9Q
bHVnaW5EYXRhLmgnLAogICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggMjAwNDI0MjA5NWE1YTM0ODdhMzc5MzhlMDVhYTQ0ZTI2ZWQxYzE2
MC4uM2UzOWY2ZDM3MjE2NTVjOTEwMjE3NmQ2NGQ3NzVlY2ZhNjJjODM1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KQEAgLTEyODUsNiArMTI4NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL1dpZGdl
dC5jcHAgXAogICAgIHBsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgXAogICAgIHBsYXRm
b3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIFwKKyAgICBwbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0
LmNwcCBcCiAgICAgcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgXAogICAgIHBsdWdpbnMvUGx1
Z2luRGVidWcuY3BwIFwKICAgICBwbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwIFwKQEAgLTIyNDUs
NiArMjI0Niw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsdWdpbnMvUGx1Z2luRGF0YS5oIFwKICAg
ICBwbHVnaW5zL1BsdWdpbkRlYnVnLmggXAogICAgIHBsdWdpbnMvRE9NUGx1Z2luLmggXAorICAg
IHBsdWdpbnMvSUZyYW1lU2hpbVN1cHBvcnQuaCBcCiAgICAgcGx1Z2lucy9QbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyLmggXAogICAgIHBsdWdpbnMvUGx1Z2luUGFja2FnZS5oIFwKICAgICBwbHVn
aW5zL1BsdWdpblN0cmVhbS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
SUZyYW1lU2hpbVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGlt
U3VwcG9ydC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM1NTQ1ZmU0Y2IxMDhjOGJlYTQ1MWM5MDE2MDQxNGZj
MDhlNTBjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvSUZyYW1l
U2hpbVN1cHBvcnQuY3BwCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIklGcmFtZVNoaW1TdXBwb3J0LmgiCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MRnJhbWVPd25lckVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJSZW5kZXJCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJXaWRn
ZXQuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKKy8vIFRoaXMgZmlsZSBwcm92aWRl
cyBwbHVnaW4tcmVsYXRlZCB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgaWZyYW1lIHNoaW1zIGFuZCBp
cyBzaGFyZWQgYnkgcGxhdGZvcm1zIHRoYXQgaW5oZXJpdAorLy8gZnJvbSBQbHVnaW5WaWV3IChl
LmcuIFF0KSBhbmQgdGhvc2UgdGhhdCBkbyBub3QgKGUuZy4gQ2hyb21pdW0pLgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIGdldE9iamVjdFN0YWNrKGNvbnN0IFJlbmRlck9i
amVjdCogcm8sIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiogcm9TdGFjaykKK3sKKyAgICBy
b1N0YWNrLT5jbGVhcigpOworICAgIHdoaWxlIChybykgeworICAgICAgICByb1N0YWNrLT5hcHBl
bmQocm8pOworICAgICAgICBybyA9IHJvLT5wYXJlbnQoKTsKKyAgICB9Cit9CisKKy8vIFJldHVy
bnMgdHJ1ZSBpZiBzdGFjazEgaXMgYXQgb3IgYWJvdmUgc3RhY2syCitzdGF0aWMgYm9vbCBpZnJh
bWVJc0Fib3ZlUGx1Z2luKGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiYgaWZyYW1l
WnN0YWNrLCBjb25zdCBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIHBsdWdpblpzdGFjaykK
K3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlmcmFtZVpzdGFjay5zaXplKCkgJiYgaSA8
IHBsdWdpblpzdGFjay5zaXplKCk7IGkrKykgeworICAgICAgICAvLyBUaGUgcm9vdCBpcyBhdCB0
aGUgZW5kIG9mIHRoZXNlIHN0YWNrcy4gIFdlIHdhbnQgdG8gaXRlcmF0ZQorICAgICAgICAvLyBy
b290LWRvd253YXJkcyBzbyB3ZSBpbmRleCBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kLgorICAgICAg
ICBjb25zdCBSZW5kZXJPYmplY3QqIHJvMSA9IGlmcmFtZVpzdGFja1tpZnJhbWVac3RhY2suc2l6
ZSgpIC0gMSAtIGldOworICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJvMiA9IHBsdWdpblpz
dGFja1twbHVnaW5ac3RhY2suc2l6ZSgpIC0gMSAtIGldOworCisgICAgICAgIGlmIChybzEgIT0g
cm8yKSB7CisgICAgICAgICAgICAvLyBXaGVuIHdlIGZpbmQgbm9kZXMgaW4gdGhlIHN0YWNrIHRo
YXQgYXJlIG5vdCB0aGUgc2FtZSwgdGhlbgorICAgICAgICAgICAgLy8gd2UndmUgZm91bmQgdGhl
IG5vZGVzIGp1c3QgYmVsb3cgdGhlIGxvd2VzdCBjb21tZW50IGFuY2VzdG9yLgorICAgICAgICAg
ICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHNob3VsZCBiZSBvbiB0b3AuCisKKyAgICAgICAgICAgIC8v
IFNlZSBpZiB6LWluZGV4IGRldGVybWluZXMgYW4gb3JkZXIuCisgICAgICAgICAgICBpZiAocm8x
LT5zdHlsZSgpICYmIHJvMi0+c3R5bGUoKSkgeworICAgICAgICAgICAgICAgIGludCB6MSA9IHJv
MS0+c3R5bGUoKS0+ekluZGV4KCk7CisgICAgICAgICAgICAgICAgaW50IHoyID0gcm8yLT5zdHls
ZSgpLT56SW5kZXgoKTsKKyAgICAgICAgICAgICAgICBpZiAoejEgPiB6MikKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgaWYgKHoxIDwgejIpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gSWYgdGhlIHBsdWdpbiBkb2VzIG5vdCBoYXZlIGFuIGV4cGxpY2l0IHotaW5kZXggaXQg
c3RhY2tzIGJlaGluZCB0aGUgaWZyYW1lLgorICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgbWFp
bnRhaW5pbmcgY29tcGF0aWJpbGl0eSB3aXRoIElFLgorICAgICAgICAgICAgaWYgKHJvMi0+c3R5
bGUoKS0+cG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikgeworICAgICAgICAgICAgICAgIC8v
IFRoZSAwJ3RoIGVsZW1lbnRzIG9mIHRoZXNlIFJlbmRlck9iamVjdCBhcnJheXMgcmVwcmVzZW50
IHRoZSBwbHVnaW4gbm9kZSBhbmQKKyAgICAgICAgICAgICAgICAvLyB0aGUgaWZyYW1lLgorICAg
ICAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGx1Z2luUmVuZGVyT2JqZWN0ID0gcGx1
Z2luWnN0YWNrWzBdOworICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogaWZyYW1l
UmVuZGVyT2JqZWN0ID0gaWZyYW1lWnN0YWNrWzBdOworCisgICAgICAgICAgICAgICAgaWYgKHBs
dWdpblJlbmRlck9iamVjdC0+c3R5bGUoKSAmJiBpZnJhbWVSZW5kZXJPYmplY3QtPnN0eWxlKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpblJlbmRlck9iamVjdC0+c3R5bGUoKS0+
ekluZGV4KCkgPiBpZnJhbWVSZW5kZXJPYmplY3QtPnN0eWxlKCktPnpJbmRleCgpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
SW5zcGVjdCB0aGUgZG9jdW1lbnQgb3JkZXIuICBMYXRlciBvcmRlciBtZWFucyBoaWdoZXIgc3Rh
Y2tpbmcuCisgICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCA9IHJvMS0+cGFy
ZW50KCk7CisgICAgICAgICAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBBU1NFUlQocGFyZW50ID09IHJvMi0+cGFyZW50KCkpOworCisg
ICAgICAgICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogcm8gPSBwYXJlbnQtPmZpcnN0Q2hp
bGQoKTsgcm87IHJvID0gcm8tPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
cm8gPT0gcm8xKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgaWYgKHJvID09IHJvMikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoZmFsc2UpOyAvLyBXZSBzaG91bGQgaGF2
ZSBzZWVuIHJvMSBhbmQgcm8yIGJ5IG5vdy4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gUmV0dXJuIGEgc2V0IG9m
IHJlY3RhbmdsZXMgdGhhdCBzaG91bGQgbm90IGJlIG92ZXJkcmF3biBieSB0aGUKKy8vIHBsdWdp
biAoImN1dG91dHMiKS4gIFRoaXMgaGVscHMgaW1wbGVtZW50IHRoZSAiaWZyYW1lIHNoaW0iCisv
LyB0ZWNobmlxdWUgb2Ygb3ZlcmxheWluZyBhIHdpbmRvd2VkIHBsdWdpbiB3aXRoIGNvbnRlbnQg
ZnJvbSB0aGUKKy8vIHBhZ2UuICBJbiBhIG51dHNoZWxsLCBpZnJhbWUgZWxlbWVudHMgc2hvdWxk
IG9jY2x1ZGUgcGx1Z2lucyB3aGVuCisvLyB0aGV5IG9jY3VyIGhpZ2hlciBpbiB0aGUgc3RhY2tp
bmcgb3JkZXIuCit2b2lkIGdldFBsdWdpbk9jY2x1c2lvbnMoRWxlbWVudCogZWxlbWVudCwgV2lk
Z2V0KiBwYXJlbnRXaWRnZXQsIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCwgVmVjdG9yPEludFJl
Y3Q+JiBjdXRPdXRSZWN0cykKK3sKKyAgICBSZW5kZXJPYmplY3QqIHBsdWdpbk5vZGUgPSBlbGVt
ZW50LT5yZW5kZXJlcigpOworICAgIEFTU0VSVChwbHVnaW5Ob2RlKTsKKyAgICBpZiAoIXBsdWdp
bk5vZGUtPnN0eWxlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8Y29uc3QgUmVuZGVy
T2JqZWN0Kj4gcGx1Z2luWnN0YWNrOworICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiBp
ZnJhbWVac3RhY2s7CisgICAgZ2V0T2JqZWN0U3RhY2socGx1Z2luTm9kZSwgJnBsdWdpblpzdGFj
ayk7CisKKyAgICBpZiAoIXBhcmVudFdpZGdldC0+aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRnJhbWVWaWV3KiBwYXJlbnRGcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxGcmFt
ZVZpZXcqPihwYXJlbnRXaWRnZXQpOworCisgICAgY29uc3QgSGFzaFNldDxSZWZQdHI8V2lkZ2V0
PiA+KiBjaGlsZHJlbiA9IHBhcmVudEZyYW1lVmlldy0+Y2hpbGRyZW4oKTsKKyAgICBmb3IgKEhh
c2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZHJlbi0+YmVn
aW4oKTsgaXQgIT0gY2hpbGRyZW4tPmVuZCgpOyArK2l0KSB7CisgICAgICAgIC8vIFdlIG9ubHkg
Y2FyZSBhYm91dCBGcmFtZVZpZXcncyBiZWNhdXNlIGlmcmFtZXMgc2hvdyB1cCBhcyBGcmFtZVZp
ZXdzLgorICAgICAgICBpZiAoISgqaXQpLT5pc0ZyYW1lVmlldygpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgY29uc3QgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBzdGF0aWNfY2Fz
dDxjb25zdCBGcmFtZVZpZXcqPigoKml0KS5nZXQoKSk7CisgICAgICAgIC8vIENoZWNrIHRvIG1h
a2Ugc3VyZSB3ZSBjYW4gZ2V0IGJvdGggdGhlIGVsZW1lbnQgYW5kIHRoZSBSZW5kZXJPYmplY3QK
KyAgICAgICAgLy8gZm9yIHRoaXMgRnJhbWVWaWV3LCBpZiB3ZSBjYW4ndCBqdXN0IG1vdmUgb24g
dG8gdGhlIG5leHQgb2JqZWN0LgorICAgICAgICBpZiAoIWZyYW1lVmlldy0+ZnJhbWUoKSB8fCAh
ZnJhbWVWaWV3LT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKQorICAgICAgICAgICAgfHwgIWZyYW1l
Vmlldy0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCktPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGZyYW1lVmlldy0+ZnJh
bWUoKS0+b3duZXJFbGVtZW50KCk7CisgICAgICAgIFJlbmRlck9iamVjdCogaWZyYW1lUmVuZGVy
ZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOworCisgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKQorICAgICAgICAgICAgJiYgaWZyYW1lUmVuZGVyZXIt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkuaW50ZXJzZWN0cyhmcmFtZVJlY3QpCisgICAgICAg
ICAgICAmJiAoIWlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpIHx8IGlmcmFtZVJlbmRlcmVyLT5zdHls
ZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkpIHsKKyAgICAgICAgICAgIGdldE9iamVjdFN0
YWNrKGlmcmFtZVJlbmRlcmVyLCAmaWZyYW1lWnN0YWNrKTsKKyAgICAgICAgICAgIGlmIChpZnJh
bWVJc0Fib3ZlUGx1Z2luKGlmcmFtZVpzdGFjaywgcGx1Z2luWnN0YWNrKSkgeworICAgICAgICAg
ICAgICAgIEludFBvaW50IHBvaW50ID0gcm91bmRlZEludFBvaW50KGlmcmFtZVJlbmRlcmVyLT5s
b2NhbFRvQWJzb2x1dGUoKSk7CisgICAgICAgICAgICAgICAgUmVuZGVyQm94KiByYm94ID0gdG9S
ZW5kZXJCb3goaWZyYW1lUmVuZGVyZXIpOworICAgICAgICAgICAgICAgIEludFNpemUgc2l6ZShy
Ym94LT53aWR0aCgpLCByYm94LT5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgY3V0T3V0UmVj
dHMuYXBwZW5kKEludFJlY3QocG9pbnQsIHNpemUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkNzFjZDBjZWE4MmFlYmM5YjBi
Y2UyNzZlMDYxYzNkNmQzMjkzZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTEgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0Pi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjaWZuZGVmIElGcmFtZVNoaW1TdXBwb3J0X2gKKyNkZWZpbmUgSUZyYW1lU2hpbVN1cHBvcnRf
aAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBFbGVtZW50OworY2xhc3MgV2lkZ2V0OworY2xhc3MgSW50UmVjdDsKKwordm9pZCBnZXRQbHVn
aW5PY2NsdXNpb25zKEVsZW1lbnQqLCBXaWRnZXQqIHBhcmVudFdpZGdldCwgY29uc3QgSW50UmVj
dCYgZnJhbWVSZWN0LCBWZWN0b3I8SW50UmVjdD4mIGN1dE91dFJlY3RzKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSUZyYW1lU2hpbVN1cHBvcnRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCmluZGV4IDZjZjM2ZTk2NWNmMTE0YzM4
ZWQzZGY1Mzg3ZTVmYjQ5YTE3NDU0NmIuLjgyMWNjYjdjNzI0ZTkzN2FjNmNlNjU1MWYyOWE1MWNm
MmM5MjliYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmll
d1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
UGx1Z0luRWxlbWVudC5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJJRnJh
bWVTaGltU3VwcG9ydC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaWYgVVNFKEpTQykKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKQEAgLTYyNywxMCArNjI4LDE5IEBAIHZvaWQgUGx1Z2luVmll
dzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpCiAKICAgICBpZiAobV9pc1dpbmRvd2VkKSB7CiAgICAg
ICAgIHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPnNldEdlb21ldHJ5KG1fd2luZG93UmVjdCk7CisK
KyAgICAgICAgLy8gQ3V0IG91dCBhcmVhcyBvZiB0aGUgcGx1Z2luIG9jY2x1ZGVkIGJ5IGlmcmFt
ZSBzaGltcworICAgICAgICBWZWN0b3I8SW50UmVjdD4gY3V0T3V0UmVjdHM7CisgICAgICAgIFFS
ZWdpb24gY2xpcFJlZ2lvbiA9IFFSZWdpb24obV9jbGlwUmVjdCk7CisgICAgICAgIGdldFBsdWdp
bk9jY2x1c2lvbnMobV9lbGVtZW50LCB0aGlzLT5wYXJlbnQoKSwgZnJhbWVSZWN0KCksIGN1dE91
dFJlY3RzKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjdXRPdXRSZWN0cy5zaXpl
KCk7IGkrKykgeworICAgICAgICAgICAgY3V0T3V0UmVjdHNbaV0ubW92ZSgtZnJhbWVSZWN0KCku
eCgpLCAtZnJhbWVSZWN0KCkueSgpKTsKKyAgICAgICAgICAgIGNsaXBSZWdpb24gPSBjbGlwUmVn
aW9uLnN1YnRyYWN0ZWQoUVJlZ2lvbihjdXRPdXRSZWN0c1tpXSkpOworICAgICAgICB9CiAgICAg
ICAgIC8vIGlmIHNldE1hc2sgaXMgc2V0IHdpdGggYW4gZW1wdHkgUVJlZ2lvbiwgbm8gY2xpcHBp
bmcgd2lsbAogICAgICAgICAvLyBiZSBwZXJmb3JtZWQsIHNvIGluIHRoYXQgY2FzZSB3ZSBoaWRl
IHRoZSBwbHVnaW4gdmlldwotICAgICAgICBwbGF0Zm9ybVBsdWdpbldpZGdldCgpLT5zZXRWaXNp
YmxlKCFtX2NsaXBSZWN0LmlzRW1wdHkoKSk7Ci0gICAgICAgIHBsYXRmb3JtUGx1Z2luV2lkZ2V0
KCktPnNldE1hc2soUVJlZ2lvbihtX2NsaXBSZWN0KSk7CisgICAgICAgIHBsYXRmb3JtUGx1Z2lu
V2lkZ2V0KCktPnNldFZpc2libGUoIWNsaXBSZWdpb24uaXNFbXB0eSgpKTsKKyAgICAgICAgcGxh
dGZvcm1QbHVnaW5XaWRnZXQoKS0+c2V0TWFzayhjbGlwUmVnaW9uKTsKIAogICAgICAgICBtX25w
V2luZG93LnggPSBtX3dpbmRvd1JlY3QueCgpOwogICAgICAgICBtX25wV2luZG93LnkgPSBtX3dp
bmRvd1JlY3QueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxMWEzN2I3NGRjYjE4
YTQ2NjU2ZjRkYjdkMmJhYzM0ZWVkYjU2ZDc5Li4xNWZjZGZmYzZjNWM0NTdhMTQ2OTMyZTM5N2M3
MDBlNTM2MTAyZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDExLTAyLTAyICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNocm9taXVtIGlm
cmFtZSBzaGltIGNvZGUgdG8gY3Jvc3MtcGxhdGZvcm0gZmlsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI1OTQKKworICAgICAgICAqIHNyYy9XZWJQ
bHVnaW5Db250YWluZXJJbXBsLmNwcDogTW92ZSBjb2RlIHRvIFdlYkNvcmUvcGx1Z2luL0lGcmFt
ZVNoaW1TdXBwb3J0LmNwcAorCiAyMDExLTAyLTAxICBEYXJpbiBGaXNoZXIgIDxkYXJpbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNw
cAppbmRleCAzN2I2Zjc2YWFiYmQ4YjVhODIwNjJjZTg0OTc3OTg1NmY1ZWM0YzM2Li4zMzE2ZWYz
ZWJmNDU0YTg3OTdjMzhhZDY0NTI1NTE0MTAzNjNjYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNjMsNiAr
NjMsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisjaW5jbHVkZSAiSUZyYW1lU2hp
bVN1cHBvcnQuaCIKICNpbmNsdWRlICJLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSAiS2V5Ym9h
cmRFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKQEAgLTU1Niw3ICs1NTcsNyBAQCB2
b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmNhbGN1bGF0ZUdlb21ldHJ5KGNvbnN0IEludFJl
Y3QmIGZyYW1lUmVjdCwKICAgICBjbGlwUmVjdCA9IHdpbmRvd0NsaXBSZWN0KCk7CiAgICAgY2xp
cFJlY3QubW92ZSgtd2luZG93UmVjdC54KCksIC13aW5kb3dSZWN0LnkoKSk7CiAKLSAgICB3aW5k
b3dDdXRPdXRSZWN0cyhmcmFtZVJlY3QsIGN1dE91dFJlY3RzKTsKKyAgICBnZXRQbHVnaW5PY2Ns
dXNpb25zKG1fZWxlbWVudCwgdGhpcy0+cGFyZW50KCksIGZyYW1lUmVjdCwgY3V0T3V0UmVjdHMp
OwogICAgIC8vIENvbnZlcnQgdG8gdGhlIHBsdWdpbiBwb3NpdGlvbi4KICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGN1dE91dFJlY3RzLnNpemUoKTsgaSsrKQogICAgICAgICBjdXRPdXRSZWN0
c1tpXS5tb3ZlKC1mcmFtZVJlY3QueCgpLCAtZnJhbWVSZWN0LnkoKSk7CkBAIC01ODEsMTMyICs1
ODIsNCBAQCBXZWJDb3JlOjpJbnRSZWN0IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbmRvd0Ns
aXBSZWN0KCkgY29uc3QKICAgICByZXR1cm4gY2xpcFJlY3Q7CiB9CiAKLXN0YXRpYyB2b2lkIGdl
dE9iamVjdFN0YWNrKGNvbnN0IFJlbmRlck9iamVjdCogcm8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4qIHJvU3RhY2spCi17Ci0gICAgcm9T
dGFjay0+Y2xlYXIoKTsKLSAgICB3aGlsZSAocm8pIHsKLSAgICAgICAgcm9TdGFjay0+YXBwZW5k
KHJvKTsKLSAgICAgICAgcm8gPSByby0+cGFyZW50KCk7Ci0gICAgfQotfQotCi0vLyBSZXR1cm5z
IHRydWUgaWYgc3RhY2sxIGlzIGF0IG9yIGFib3ZlIHN0YWNrMgotc3RhdGljIGJvb2wgY2hlY2tT
dGFja09uVG9wKAotICAgICAgICBjb25zdCBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4mIGlm
cmFtZVpzdGFjaywKLSAgICAgICAgY29uc3QgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+JiBw
bHVnaW5ac3RhY2spCi17Ci0gICAgZm9yIChzaXplX3QgaTEgPSAwLCBpMiA9IDA7Ci0gICAgICAg
ICBpMSA8IGlmcmFtZVpzdGFjay5zaXplKCkgJiYgaTIgPCBwbHVnaW5ac3RhY2suc2l6ZSgpOwot
ICAgICAgICAgaTErKywgaTIrKykgewotICAgICAgICAvLyBUaGUgcm9vdCBpcyBhdCB0aGUgZW5k
IG9mIHRoZXNlIHN0YWNrcy4gIFdlIHdhbnQgdG8gaXRlcmF0ZQotICAgICAgICAvLyByb290LWRv
d253YXJkcyBzbyB3ZSBpbmRleCBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kLgotICAgICAgICBjb25z
dCBSZW5kZXJPYmplY3QqIHJvMSA9IGlmcmFtZVpzdGFja1tpZnJhbWVac3RhY2suc2l6ZSgpIC0g
MSAtIGkxXTsKLSAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBybzIgPSBwbHVnaW5ac3RhY2tb
cGx1Z2luWnN0YWNrLnNpemUoKSAtIDEgLSBpMl07Ci0KLSAgICAgICAgaWYgKHJvMSAhPSBybzIp
IHsKLSAgICAgICAgICAgIC8vIFdoZW4gd2UgZmluZCBub2RlcyBpbiB0aGUgc3RhY2sgdGhhdCBh
cmUgbm90IHRoZSBzYW1lLCB0aGVuCi0gICAgICAgICAgICAvLyB3ZSd2ZSBmb3VuZCB0aGUgbm9k
ZXMganVzdCBiZWxvdyB0aGUgbG93ZXN0IGNvbW1lbnQgYW5jZXN0b3IuCi0gICAgICAgICAgICAv
LyBEZXRlcm1pbmUgd2hpY2ggc2hvdWxkIGJlIG9uIHRvcC4KLQotICAgICAgICAgICAgLy8gU2Vl
IGlmIHotaW5kZXggZGV0ZXJtaW5lcyBhbiBvcmRlci4KLSAgICAgICAgICAgIGlmIChybzEtPnN0
eWxlKCkgJiYgcm8yLT5zdHlsZSgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IHoxID0gcm8xLT5z
dHlsZSgpLT56SW5kZXgoKTsKLSAgICAgICAgICAgICAgICBpbnQgejIgPSBybzItPnN0eWxlKCkt
PnpJbmRleCgpOwotICAgICAgICAgICAgICAgIGlmICh6MSA+IHoyKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoejEgPCB6MikKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAv
LyBJZiB0aGUgcGx1Z2luIGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCBpdCBzdGFj
a3MgYmVoaW5kIHRoZSBpZnJhbWUuCi0gICAgICAgICAgICAvLyBUaGlzIGlzIGZvciBtYWludGFp
bmluZyBjb21wYXRpYmlsaXR5IHdpdGggSUUuCi0gICAgICAgICAgICBpZiAocm8yLT5zdHlsZSgp
LT5wb3NpdGlvbigpID09IFN0YXRpY1Bvc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhl
IDAndGggZWxlbWVudHMgb2YgdGhlc2UgUmVuZGVyT2JqZWN0IGFycmF5cyByZXByZXNlbnQgdGhl
IHBsdWdpbiBub2RlIGFuZAotICAgICAgICAgICAgICAgIC8vIHRoZSBpZnJhbWUuCi0gICAgICAg
ICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwbHVnaW5SZW5kZXJPYmplY3QgPSBwbHVnaW5a
c3RhY2tbMF07Ci0gICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5k
ZXJPYmplY3QgPSBpZnJhbWVac3RhY2tbMF07Ci0KLSAgICAgICAgICAgICAgICBpZiAocGx1Z2lu
UmVuZGVyT2JqZWN0LT5zdHlsZSgpICYmIGlmcmFtZVJlbmRlck9iamVjdC0+c3R5bGUoKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luUmVuZGVyT2JqZWN0LT5zdHlsZSgpLT56SW5k
ZXgoKSA+IGlmcmFtZVJlbmRlck9iamVjdC0+c3R5bGUoKS0+ekluZGV4KCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJbnNw
ZWN0IHRoZSBkb2N1bWVudCBvcmRlci4gIExhdGVyIG9yZGVyIG1lYW5zIGhpZ2hlcgotICAgICAg
ICAgICAgLy8gc3RhY2tpbmcuCi0gICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVu
dCA9IHJvMS0+cGFyZW50KCk7Ci0gICAgICAgICAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBBU1NFUlQocGFyZW50ID09IHJvMi0+cGFy
ZW50KCkpOwotCi0gICAgICAgICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogcm8gPSBwYXJl
bnQtPmZpcnN0Q2hpbGQoKTsgcm87IHJvID0gcm8tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAocm8gPT0gcm8xKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgaWYgKHJvID09IHJvMikKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQoZmFsc2UpOyAgLy8g
V2Ugc2hvdWxkIGhhdmUgc2VlbiBybzEgYW5kIHJvMiBieSBub3cuCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIFJl
dHVybiBhIHNldCBvZiByZWN0YW5nbGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBvdmVyZHJhd24gYnkg
dGhlCi0vLyBwbHVnaW4gKCJjdXRvdXRzIikuICBUaGlzIGhlbHBzIGltcGxlbWVudCB0aGUgImlm
cmFtZSBzaGltIgotLy8gdGVjaG5pcXVlIG9mIG92ZXJsYXlpbmcgYSB3aW5kb3dlZCBwbHVnaW4g
d2l0aCBjb250ZW50IGZyb20gdGhlCi0vLyBwYWdlLiAgSW4gYSBudXRzaGVsbCwgaWZyYW1lIGVs
ZW1lbnRzIHNob3VsZCBvY2NsdWRlIHBsdWdpbnMgd2hlbgotLy8gdGhleSBvY2N1ciBoaWdoZXIg
aW4gdGhlIHN0YWNraW5nIG9yZGVyLgotdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp3aW5k
b3dDdXRPdXRSZWN0cyhjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxJbnRSZWN0PiYgY3V0T3V0UmVj
dHMpCi17Ci0gICAgUmVuZGVyT2JqZWN0KiBwbHVnaW5Ob2RlID0gbV9lbGVtZW50LT5yZW5kZXJl
cigpOwotICAgIEFTU0VSVChwbHVnaW5Ob2RlKTsKLSAgICBpZiAoIXBsdWdpbk5vZGUtPnN0eWxl
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4gcGx1
Z2luWnN0YWNrOwotICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiBpZnJhbWVac3RhY2s7
Ci0gICAgZ2V0T2JqZWN0U3RhY2socGx1Z2luTm9kZSwgJnBsdWdpblpzdGFjayk7Ci0KLSAgICAv
LyBHZXQgdGhlIHBhcmVudCB3aWRnZXQKLSAgICBXaWRnZXQqIHBhcmVudFdpZGdldCA9IHRoaXMt
PnBhcmVudCgpOwotICAgIGlmICghcGFyZW50V2lkZ2V0LT5pc0ZyYW1lVmlldygpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBGcmFtZVZpZXcqIHBhcmVudEZyYW1lVmlldyA9IHN0YXRpY19jYXN0
PEZyYW1lVmlldyo+KHBhcmVudFdpZGdldCk7Ci0KLSAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxX
aWRnZXQ+ID4qIGNoaWxkcmVuID0gcGFyZW50RnJhbWVWaWV3LT5jaGlsZHJlbigpOwotICAgIGZv
ciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNoaWxkcmVu
LT5iZWdpbigpOyBpdCAhPSBjaGlsZHJlbi0+ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgLy8gV2Ug
b25seSBjYXJlIGFib3V0IEZyYW1lVmlldydzIGJlY2F1c2UgaWZyYW1lcyBzaG93IHVwIGFzIEZy
YW1lVmlld3MuCi0gICAgICAgIGlmICghKCppdCktPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICBjb25zdCBGcmFtZVZpZXcqIGZyYW1lVmlldyA9Ci0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBGcmFtZVZpZXcqPigoKml0KS5nZXQoKSk7Ci0gICAg
ICAgIC8vIENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBjYW4gZ2V0IGJvdGggdGhlIGVsZW1lbnQgYW5k
IHRoZSBSZW5kZXJPYmplY3QKLSAgICAgICAgLy8gZm9yIHRoaXMgRnJhbWVWaWV3LCBpZiB3ZSBj
YW4ndCBqdXN0IG1vdmUgb24gdG8gdGhlIG5leHQgb2JqZWN0LgotICAgICAgICBpZiAoIWZyYW1l
Vmlldy0+ZnJhbWUoKSB8fCAhZnJhbWVWaWV3LT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKQotICAg
ICAgICAgICAgfHwgIWZyYW1lVmlldy0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCktPnJlbmRlcmVy
KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVu
dCA9IGZyYW1lVmlldy0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7Ci0gICAgICAgIFJlbmRlck9i
amVjdCogaWZyYW1lUmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwotCi0gICAgICAgIGlm
IChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKQotICAgICAgICAgICAg
JiYgaWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkuaW50ZXJzZWN0cyhm
cmFtZVJlY3QpCi0gICAgICAgICAgICAmJiAoIWlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpIHx8IGlm
cmFtZVJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkpIHsKLSAgICAg
ICAgICAgIGdldE9iamVjdFN0YWNrKGlmcmFtZVJlbmRlcmVyLCAmaWZyYW1lWnN0YWNrKTsKLSAg
ICAgICAgICAgIGlmIChjaGVja1N0YWNrT25Ub3AoaWZyYW1lWnN0YWNrLCBwbHVnaW5ac3RhY2sp
KSB7Ci0gICAgICAgICAgICAgICAgSW50UG9pbnQgcG9pbnQgPQotICAgICAgICAgICAgICAgICAg
ICByb3VuZGVkSW50UG9pbnQoaWZyYW1lUmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZSgpKTsKLSAg
ICAgICAgICAgICAgICBSZW5kZXJCb3gqIHJib3ggPSB0b1JlbmRlckJveChpZnJhbWVSZW5kZXJl
cik7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBzaXplKHJib3gtPndpZHRoKCksIHJib3gtPmhl
aWdodCgpKTsKLSAgICAgICAgICAgICAgICBjdXRPdXRSZWN0cy5hcHBlbmQoSW50UmVjdChwb2lu
dCwgc2l6ZSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81245</attachid>
            <date>2011-02-04 10:50:25 -0800</date>
            <delta_ts>2011-02-04 12:49:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52594-20110204185022.patch</filename>
            <type>text/plain</type>
            <size>21564</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmYjllMGQ1MjBiOWI2YmFlNGRjMmQ0NDIyNDU2MDZjMjU4MDVmYmQ1Li4zNWE0OTI4
ZTBiNTE2M2JmMjU4NGI1OTI3ZmE1N2U2NjZhNTVlMGQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDItMDQgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KKworICAgICAgICBNb3ZlIGNocm9taXVtIGlmcmFt
ZSBzaGltIGNvZGUgdG8gY3Jvc3MtcGxhdGZvcm0gZmlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNTk0CisKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9Ta2lwcGVkOiBVbnNraXAgcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAorCiAyMDExLTAyLTAz
ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBiNTkzNWI0
MWRlOGQzNzg5ZjVhZTQ2ODk4ODEwNDQ0ZmNiMTliNTRmLi40MzllNzAzNGI1N2VlMGNlZGI5MThm
MTI3ZjE2ZDg2ZmUxMjM5NjBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTQ5MTcsMTAg
KzQ5MTcsNiBAQCBmYXN0L2ZpbGVzeXN0ZW0KIGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL29yaWdp
bi1jbGVhbi1jb25mb3JtYW5jZS5odG1sCiAKIAotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDYyMjMKLSMgVGhlIFdlYktpdCBwbHVnaW4gaW1wbGVtZW50YXRpb24g
ZG9lcyBub3Qgc3VwcG9ydCBpZnJhbWUgc2hpbXMuCi1wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1s
Ci0KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTY2CiAjIFtR
dF0gZmFzdC9tZWRpYS9jb2xvci1kb2VzLW5vdC1pbmNsdWRlLWFscGhhLmh0bWwgZmFpbHMKIGZh
c3QvbWVkaWEvY29sb3ItZG9lcy1ub3QtaW5jbHVkZS1hbHBoYS5odG1sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDQ4NzBhNWQwZjhjYWM2ODcxMmQ1Mzg1ZThiZjM3YTY4ZmU1ZDhkYS4uMDc4Nzg0YmYwOGE0OWQ5
ZmNkYzhlNGEwMjExYTEyZDVlZjdhNmIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDExLTAyLTA0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCisKKyAgICAgICAgTW92ZSBjaHJvbWl1bSBpZnJhbWUg
c2hpbSBjb2RlIHRvIGNyb3NzLXBsYXRmb3JtIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNTk0CisKKyAgICAgICAgTW92ZSBDaHJvbWl1bSBj
b2RlIGZvciBpZGVudGlmeWluZyBhbmQgY3V0dGluZyBvdXQKKyAgICAgICAgaWZyYW1lIHNoaW1z
IGZyb20gcGx1Z2lucyB0byBjcm9zcy1wbGF0Zm9ybSB1dGlsaXR5IGZpbGUKKyAgICAgICAgSUZy
YW1lU2hpbVN1cHBvcnQuY3BwLgorICAgICAgICBBbWVuZCBQbHVnaW5WaWV3UXQgdG8gdXNlIHRo
aXMgY29kZSB0byBoYW5kbGUgc2hpbXMgY29ycmVjdGx5LgorCisgICAgICAgICogV2ViQ29yZS5n
eXBpOiBBZGQgQ2hyb21pdW0gc3VwcG9ydCBmb3IgSUZyYW1lU2hpbVN1cHBvcnQuY3BwCisgICAg
ICAgICogV2ViQ29yZS5wcm86IEFkZCBRdCBzdXBwb3J0IGZvciBJRnJhbWVTaGltU3VwcG9ydC5j
cHAKKyAgICAgICAgKiBwbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpnZXRPYmplY3RTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjppZnJhbWVJ
c0Fib3ZlUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsdWdpbk9jY2x1c2lvbnMpOgor
ICAgICAgICAqIHBsdWdpbnMvSUZmcmFtZVNoaW1TdXBwb3J0Lmg6IEFkZGVkLgorICAgICAgICAq
IHBsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZp
ZXc6OnNldE5QV2luZG93SWZOZWVkZWQpOgorCiAyMDExLTAyLTAzICBEaW1pdHJpIEdsYXprb3Yg
IDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11
cmEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTMyZTEzMDY3MGJiMDY3N2FlMTA5Y2NlODJmZjZjYzA2
OGRkMzlhMi4uMzJkNGZjMTc0NjI3NzFiNGNlZjNhZDI3NzlmYjYzOWU0ZjNiOTE3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMzU5Miw2ICszNTkyLDggQEAKICAgICAgICAgICAgICdwbHVnaW5zL0RP
TVBsdWdpbi5oJywKICAgICAgICAgICAgICdwbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcCcsCiAg
ICAgICAgICAgICAncGx1Z2lucy9ET01QbHVnaW5BcnJheS5oJywKKyAgICAgICAgICAgICdwbHVn
aW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcCcsCisgICAgICAgICAgICAncGx1Z2lucy9JRnJhbWVT
aGltU3VwcG9ydC5oJywKICAgICAgICAgICAgICdwbHVnaW5zL1BsdWdpbkRhdGEuY3BwJywKICAg
ICAgICAgICAgICdwbHVnaW5zL1BsdWdpbkRhdGEuaCcsCiAgICAgICAgICAgICAncGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBjYTJlYTRhNWQyMzRlYzdhMTM2
MjM5Y2ZiY2JiMjM3YWM0NmE4ODZjLi43MjRiZmRmYWUyMjZlODgzODM2ZjAyNzNkNDExZDI3YzM0
ZmNjNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTI4Nyw2ICsxMjg3LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgcGxhdGZvcm0vV2lkZ2V0LmNwcCBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcCBcCiAgICAgcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgXAorICAgIHBsdWdp
bnMvSUZyYW1lU2hpbVN1cHBvcnQuY3BwIFwKICAgICBwbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNw
cCBcCiAgICAgcGx1Z2lucy9QbHVnaW5EZWJ1Zy5jcHAgXAogICAgIHBsdWdpbnMvUGx1Z2luUGFj
a2FnZS5jcHAgXApAQCAtMjI0Nyw2ICsyMjQ4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGx1Z2lu
cy9QbHVnaW5EYXRhLmggXAogICAgIHBsdWdpbnMvUGx1Z2luRGVidWcuaCBcCiAgICAgcGx1Z2lu
cy9ET01QbHVnaW4uaCBcCisgICAgcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5oIFwKICAgICBw
bHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuaCBcCiAgICAgcGx1Z2lucy9QbHVnaW5Q
YWNrYWdlLmggXAogICAgIHBsdWdpbnMvUGx1Z2luU3RyZWFtLmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGVhZjA5MGE4NDRh
ZTc4NDVjNWZhNzE2MmVkZTcwODE5MzlhODIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5jcHAKQEAgLTAsMCArMSwxNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSUZyYW1lU2hpbVN1cHBvcnQuaCIKKworI2luY2x1
ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVj
dC5oIgorI2luY2x1ZGUgIldpZGdldC5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKwor
Ly8gVGhpcyBmaWxlIHByb3ZpZGVzIHBsdWdpbi1yZWxhdGVkIHV0aWxpdHkgZnVuY3Rpb25zIGZv
ciBpZnJhbWUgc2hpbXMgYW5kIGlzIHNoYXJlZCBieSBwbGF0Zm9ybXMgdGhhdCBpbmhlcml0Cisv
LyBmcm9tIFBsdWdpblZpZXcgKGUuZy4gUXQpIGFuZCB0aG9zZSB0aGF0IGRvIG5vdCAoZS5nLiBD
aHJvbWl1bSkuCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgZ2V0T2JqZWN0
U3RhY2soY29uc3QgUmVuZGVyT2JqZWN0KiBybywgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+
KiByb1N0YWNrKQoreworICAgIHJvU3RhY2stPmNsZWFyKCk7CisgICAgd2hpbGUgKHJvKSB7Cisg
ICAgICAgIHJvU3RhY2stPmFwcGVuZChybyk7CisgICAgICAgIHJvID0gcm8tPnBhcmVudCgpOwor
ICAgIH0KK30KKworLy8gUmV0dXJucyB0cnVlIGlmIHN0YWNrMSBpcyBhdCBvciBhYm92ZSBzdGFj
azIKK3N0YXRpYyBib29sIGlmcmFtZUlzQWJvdmVQbHVnaW4oY29uc3QgVmVjdG9yPGNvbnN0IFJl
bmRlck9iamVjdCo+JiBpZnJhbWVac3RhY2ssIGNvbnN0IFZlY3Rvcjxjb25zdCBSZW5kZXJPYmpl
Y3QqPiYgcGx1Z2luWnN0YWNrKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaWZyYW1l
WnN0YWNrLnNpemUoKSAmJiBpIDwgcGx1Z2luWnN0YWNrLnNpemUoKTsgaSsrKSB7CisgICAgICAg
IC8vIFRoZSByb290IGlzIGF0IHRoZSBlbmQgb2YgdGhlc2Ugc3RhY2tzLiAgV2Ugd2FudCB0byBp
dGVyYXRlCisgICAgICAgIC8vIHJvb3QtZG93bndhcmRzIHNvIHdlIGluZGV4IGJhY2t3YXJkcyBm
cm9tIHRoZSBlbmQuCisgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcm8xID0gaWZyYW1lWnN0
YWNrW2lmcmFtZVpzdGFjay5zaXplKCkgLSAxIC0gaV07CisgICAgICAgIGNvbnN0IFJlbmRlck9i
amVjdCogcm8yID0gcGx1Z2luWnN0YWNrW3BsdWdpblpzdGFjay5zaXplKCkgLSAxIC0gaV07CisK
KyAgICAgICAgaWYgKHJvMSAhPSBybzIpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gd2UgZmluZCBu
b2RlcyBpbiB0aGUgc3RhY2sgdGhhdCBhcmUgbm90IHRoZSBzYW1lLCB0aGVuCisgICAgICAgICAg
ICAvLyB3ZSd2ZSBmb3VuZCB0aGUgbm9kZXMganVzdCBiZWxvdyB0aGUgbG93ZXN0IGNvbW1lbnQg
YW5jZXN0b3IuCisgICAgICAgICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggc2hvdWxkIGJlIG9uIHRv
cC4KKworICAgICAgICAgICAgLy8gU2VlIGlmIHotaW5kZXggZGV0ZXJtaW5lcyBhbiBvcmRlci4K
KyAgICAgICAgICAgIGlmIChybzEtPnN0eWxlKCkgJiYgcm8yLT5zdHlsZSgpKSB7CisgICAgICAg
ICAgICAgICAgaW50IHoxID0gcm8xLT5zdHlsZSgpLT56SW5kZXgoKTsKKyAgICAgICAgICAgICAg
ICBpbnQgejIgPSBybzItPnN0eWxlKCktPnpJbmRleCgpOworICAgICAgICAgICAgICAgIGlmICh6
MSA+IHoyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBpZiAoejEgPCB6MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB0aGUgcGx1Z2luIGRvZXMgbm90IGhhdmUgYW4g
ZXhwbGljaXQgei1pbmRleCBpdCBzdGFja3MgYmVoaW5kIHRoZSBpZnJhbWUuCisgICAgICAgICAg
ICAvLyBUaGlzIGlzIGZvciBtYWludGFpbmluZyBjb21wYXRpYmlsaXR5IHdpdGggSUUuCisgICAg
ICAgICAgICBpZiAocm8yLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IFN0YXRpY1Bvc2l0aW9uKSB7
CisgICAgICAgICAgICAgICAgLy8gVGhlIDAndGggZWxlbWVudHMgb2YgdGhlc2UgUmVuZGVyT2Jq
ZWN0IGFycmF5cyByZXByZXNlbnQgdGhlIHBsdWdpbiBub2RlIGFuZAorICAgICAgICAgICAgICAg
IC8vIHRoZSBpZnJhbWUuCisgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwbHVn
aW5SZW5kZXJPYmplY3QgPSBwbHVnaW5ac3RhY2tbMF07CisgICAgICAgICAgICAgICAgY29uc3Qg
UmVuZGVyT2JqZWN0KiBpZnJhbWVSZW5kZXJPYmplY3QgPSBpZnJhbWVac3RhY2tbMF07CisKKyAg
ICAgICAgICAgICAgICBpZiAocGx1Z2luUmVuZGVyT2JqZWN0LT5zdHlsZSgpICYmIGlmcmFtZVJl
bmRlck9iamVjdC0+c3R5bGUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luUmVu
ZGVyT2JqZWN0LT5zdHlsZSgpLT56SW5kZXgoKSA+IGlmcmFtZVJlbmRlck9iamVjdC0+c3R5bGUo
KS0+ekluZGV4KCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBJbnNwZWN0IHRoZSBkb2N1bWVudCBvcmRlci4gIExhdGVyIG9y
ZGVyIG1lYW5zIGhpZ2hlciBzdGFja2luZy4KKyAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVj
dCogcGFyZW50ID0gcm8xLT5wYXJlbnQoKTsKKyAgICAgICAgICAgIGlmICghcGFyZW50KQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIEFTU0VSVChwYXJlbnQgPT0g
cm8yLT5wYXJlbnQoKSk7CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiBy
byA9IHBhcmVudC0+Zmlyc3RDaGlsZCgpOyBybzsgcm8gPSByby0+bmV4dFNpYmxpbmcoKSkgewor
ICAgICAgICAgICAgICAgIGlmIChybyA9PSBybzEpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAocm8gPT0gcm8yKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChmYWxz
ZSk7IC8vIFdlIHNob3VsZCBoYXZlIHNlZW4gcm8xIGFuZCBybzIgYnkgbm93LgorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
CisvLyBSZXR1cm4gYSBzZXQgb2YgcmVjdGFuZ2xlcyB0aGF0IHNob3VsZCBub3QgYmUgb3ZlcmRy
YXduIGJ5IHRoZQorLy8gcGx1Z2luICgiY3V0b3V0cyIpLiAgVGhpcyBoZWxwcyBpbXBsZW1lbnQg
dGhlICJpZnJhbWUgc2hpbSIKKy8vIHRlY2huaXF1ZSBvZiBvdmVybGF5aW5nIGEgd2luZG93ZWQg
cGx1Z2luIHdpdGggY29udGVudCBmcm9tIHRoZQorLy8gcGFnZS4gIEluIGEgbnV0c2hlbGwsIGlm
cmFtZSBlbGVtZW50cyBzaG91bGQgb2NjbHVkZSBwbHVnaW5zIHdoZW4KKy8vIHRoZXkgb2NjdXIg
aGlnaGVyIGluIHRoZSBzdGFja2luZyBvcmRlci4KK3ZvaWQgZ2V0UGx1Z2luT2NjbHVzaW9ucyhF
bGVtZW50KiBlbGVtZW50LCBXaWRnZXQqIHBhcmVudFdpZGdldCwgY29uc3QgSW50UmVjdCYgZnJh
bWVSZWN0LCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lvbnMpCit7CisgICAgUmVuZGVyT2JqZWN0
KiBwbHVnaW5Ob2RlID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBBU1NFUlQocGx1Z2luTm9k
ZSk7CisgICAgaWYgKCFwbHVnaW5Ob2RlLT5zdHlsZSgpKQorICAgICAgICByZXR1cm47CisgICAg
VmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+IHBsdWdpblpzdGFjazsKKyAgICBWZWN0b3I8Y29u
c3QgUmVuZGVyT2JqZWN0Kj4gaWZyYW1lWnN0YWNrOworICAgIGdldE9iamVjdFN0YWNrKHBsdWdp
bk5vZGUsICZwbHVnaW5ac3RhY2spOworCisgICAgaWYgKCFwYXJlbnRXaWRnZXQtPmlzRnJhbWVW
aWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lVmlldyogcGFyZW50RnJhbWVWaWV3
ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFyZW50V2lkZ2V0KTsKKworICAgIGNvbnN0IEhh
c2hTZXQ8UmVmUHRyPFdpZGdldD4gPiogY2hpbGRyZW4gPSBwYXJlbnRGcmFtZVZpZXctPmNoaWxk
cmVuKCk7CisgICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gY2hpbGRyZW4tPmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLT5lbmQoKTsgKytpdCkgewor
ICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgRnJhbWVWaWV3J3MgYmVjYXVzZSBpZnJhbWVz
IHNob3cgdXAgYXMgRnJhbWVWaWV3cy4KKyAgICAgICAgaWYgKCEoKml0KS0+aXNGcmFtZVZpZXco
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNvbnN0IEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gc3RhdGljX2Nhc3Q8Y29uc3QgRnJhbWVWaWV3Kj4oKCppdCkuZ2V0KCkpOworICAg
ICAgICAvLyBDaGVjayB0byBtYWtlIHN1cmUgd2UgY2FuIGdldCBib3RoIHRoZSBlbGVtZW50IGFu
ZCB0aGUgUmVuZGVyT2JqZWN0CisgICAgICAgIC8vIGZvciB0aGlzIEZyYW1lVmlldywgaWYgd2Ug
Y2FuJ3QganVzdCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9iamVjdC4KKyAgICAgICAgaWYgKCFmcmFt
ZVZpZXctPmZyYW1lKCkgfHwgIWZyYW1lVmlldy0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCkKKyAg
ICAgICAgICAgIHx8ICFmcmFtZVZpZXctPmZyYW1lKCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJl
cigpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1l
bnQgPSBmcmFtZVZpZXctPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOworICAgICAgICBSZW5kZXJP
YmplY3QqIGlmcmFtZVJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKKworICAgICAgICBp
ZiAoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykKKyAgICAgICAgICAg
ICYmIGlmcmFtZVJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmludGVyc2VjdHMo
ZnJhbWVSZWN0KQorICAgICAgICAgICAgJiYgKCFpZnJhbWVSZW5kZXJlci0+c3R5bGUoKSB8fCBp
ZnJhbWVSZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpKSB7CisgICAg
ICAgICAgICBnZXRPYmplY3RTdGFjayhpZnJhbWVSZW5kZXJlciwgJmlmcmFtZVpzdGFjayk7Cisg
ICAgICAgICAgICBpZiAoaWZyYW1lSXNBYm92ZVBsdWdpbihpZnJhbWVac3RhY2ssIHBsdWdpblpz
dGFjaykpIHsKKyAgICAgICAgICAgICAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2lu
dChpZnJhbWVSZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCkpOworICAgICAgICAgICAgICAgIFJl
bmRlckJveCogcmJveCA9IHRvUmVuZGVyQm94KGlmcmFtZVJlbmRlcmVyKTsKKyAgICAgICAgICAg
ICAgICBJbnRTaXplIHNpemUocmJveC0+d2lkdGgoKSwgcmJveC0+aGVpZ2h0KCkpOworICAgICAg
ICAgICAgICAgIG9jY2x1c2lvbnMuYXBwZW5kKEludFJlY3QocG9pbnQsIHNpemUpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5oIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9JRnJhbWVTaGltU3VwcG9ydC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
NTUxMjZiYzE1YzQ2YjJlOGJhOGNlYzNmZjlkNzM5NDc2OTFkNjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0lGcmFtZVNoaW1TdXBwb3J0LmgKQEAgLTAsMCArMSwz
NCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9i
ZXJ0aG9nYW4ubmV0Pi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIElGcmFtZVNoaW1TdXBwb3J0X2gKKyNkZWZpbmUg
SUZyYW1lU2hpbVN1cHBvcnRfaAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBFbGVtZW50OworY2xhc3MgV2lkZ2V0OworY2xhc3MgSW50UmVj
dDsKKwordm9pZCBnZXRQbHVnaW5PY2NsdXNpb25zKEVsZW1lbnQqLCBXaWRnZXQqIHBhcmVudFdp
ZGdldCwgY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0LCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1c2lv
bnMpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBJRnJhbWVTaGltU3Vw
cG9ydF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKaW5kZXgg
NmNmMzZlOTY1Y2YxMTRjMzhlZDNkZjUzODdlNWZiNDlhMTc0NTQ2Yi4uODIxY2NiN2M3MjRlOTM3
YWM2Y2U2NTUxZjI5YTUxY2YyYzkyOWJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQv
UGx1Z2luVmlld1F0LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5o
IgorI2luY2x1ZGUgIklGcmFtZVNoaW1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNp
ZiBVU0UoSlNDKQogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgpAQCAtNjI3LDEwICs2MjgsMTkg
QEAgdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVlZGVkKCkKIAogICAgIGlmIChtX2lz
V2luZG93ZWQpIHsKICAgICAgICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+c2V0R2VvbWV0cnko
bV93aW5kb3dSZWN0KTsKKworICAgICAgICAvLyBDdXQgb3V0IGFyZWFzIG9mIHRoZSBwbHVnaW4g
b2NjbHVkZWQgYnkgaWZyYW1lIHNoaW1zCisgICAgICAgIFZlY3RvcjxJbnRSZWN0PiBjdXRPdXRS
ZWN0czsKKyAgICAgICAgUVJlZ2lvbiBjbGlwUmVnaW9uID0gUVJlZ2lvbihtX2NsaXBSZWN0KTsK
KyAgICAgICAgZ2V0UGx1Z2luT2NjbHVzaW9ucyhtX2VsZW1lbnQsIHRoaXMtPnBhcmVudCgpLCBm
cmFtZVJlY3QoKSwgY3V0T3V0UmVjdHMpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGN1dE91dFJlY3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBjdXRPdXRSZWN0c1tpXS5t
b3ZlKC1mcmFtZVJlY3QoKS54KCksIC1mcmFtZVJlY3QoKS55KCkpOworICAgICAgICAgICAgY2xp
cFJlZ2lvbiA9IGNsaXBSZWdpb24uc3VidHJhY3RlZChRUmVnaW9uKGN1dE91dFJlY3RzW2ldKSk7
CisgICAgICAgIH0KICAgICAgICAgLy8gaWYgc2V0TWFzayBpcyBzZXQgd2l0aCBhbiBlbXB0eSBR
UmVnaW9uLCBubyBjbGlwcGluZyB3aWxsCiAgICAgICAgIC8vIGJlIHBlcmZvcm1lZCwgc28gaW4g
dGhhdCBjYXNlIHdlIGhpZGUgdGhlIHBsdWdpbiB2aWV3Ci0gICAgICAgIHBsYXRmb3JtUGx1Z2lu
V2lkZ2V0KCktPnNldFZpc2libGUoIW1fY2xpcFJlY3QuaXNFbXB0eSgpKTsKLSAgICAgICAgcGxh
dGZvcm1QbHVnaW5XaWRnZXQoKS0+c2V0TWFzayhRUmVnaW9uKG1fY2xpcFJlY3QpKTsKKyAgICAg
ICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+c2V0VmlzaWJsZSghY2xpcFJlZ2lvbi5pc0VtcHR5
KCkpOworICAgICAgICBwbGF0Zm9ybVBsdWdpbldpZGdldCgpLT5zZXRNYXNrKGNsaXBSZWdpb24p
OwogCiAgICAgICAgIG1fbnBXaW5kb3cueCA9IG1fd2luZG93UmVjdC54KCk7CiAgICAgICAgIG1f
bnBXaW5kb3cueSA9IG1fd2luZG93UmVjdC55KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDZiYWM5MzYwMDYzMDg1MWNhMDYyODI1YTYwZWQwNjkyZmY4NzRhYjMuLjhhOGVkZGYyZjFk
NDc2Y2E1ZmFiY2M5OWE5YWRjZGVkNTEzYzRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDItMDQgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KKworICAgICAgICBN
b3ZlIGNocm9taXVtIGlmcmFtZSBzaGltIGNvZGUgdG8gY3Jvc3MtcGxhdGZvcm0gZmlsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI1OTQKKworICAg
ICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcDogTW92ZSBjb2RlIHRvIFdlYkNv
cmUvcGx1Z2luL0lGcmFtZVNoaW1TdXBwb3J0LmNwcAorCiAyMDExLTAyLTA0ICBJbHlhIFRpa2hv
bm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBs
LmNwcAppbmRleCAzN2I2Zjc2YWFiYmQ4YjVhODIwNjJjZTg0OTc3OTg1NmY1ZWM0YzM2Li4zMzE2
ZWYzZWJmNDU0YTg3OTdjMzhhZDY0NTI1NTE0MTAzNjNjYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNjMs
NiArNjMsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisjaW5jbHVkZSAiSUZyYW1l
U2hpbVN1cHBvcnQuaCIKICNpbmNsdWRlICJLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSAiS2V5
Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKQEAgLTU1Niw3ICs1NTcsNyBA
QCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmNhbGN1bGF0ZUdlb21ldHJ5KGNvbnN0IElu
dFJlY3QmIGZyYW1lUmVjdCwKICAgICBjbGlwUmVjdCA9IHdpbmRvd0NsaXBSZWN0KCk7CiAgICAg
Y2xpcFJlY3QubW92ZSgtd2luZG93UmVjdC54KCksIC13aW5kb3dSZWN0LnkoKSk7CiAKLSAgICB3
aW5kb3dDdXRPdXRSZWN0cyhmcmFtZVJlY3QsIGN1dE91dFJlY3RzKTsKKyAgICBnZXRQbHVnaW5P
Y2NsdXNpb25zKG1fZWxlbWVudCwgdGhpcy0+cGFyZW50KCksIGZyYW1lUmVjdCwgY3V0T3V0UmVj
dHMpOwogICAgIC8vIENvbnZlcnQgdG8gdGhlIHBsdWdpbiBwb3NpdGlvbi4KICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGN1dE91dFJlY3RzLnNpemUoKTsgaSsrKQogICAgICAgICBjdXRPdXRS
ZWN0c1tpXS5tb3ZlKC1mcmFtZVJlY3QueCgpLCAtZnJhbWVSZWN0LnkoKSk7CkBAIC01ODEsMTMy
ICs1ODIsNCBAQCBXZWJDb3JlOjpJbnRSZWN0IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbmRv
d0NsaXBSZWN0KCkgY29uc3QKICAgICByZXR1cm4gY2xpcFJlY3Q7CiB9CiAKLXN0YXRpYyB2b2lk
IGdldE9iamVjdFN0YWNrKGNvbnN0IFJlbmRlck9iamVjdCogcm8sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4qIHJvU3RhY2spCi17Ci0gICAg
cm9TdGFjay0+Y2xlYXIoKTsKLSAgICB3aGlsZSAocm8pIHsKLSAgICAgICAgcm9TdGFjay0+YXBw
ZW5kKHJvKTsKLSAgICAgICAgcm8gPSByby0+cGFyZW50KCk7Ci0gICAgfQotfQotCi0vLyBSZXR1
cm5zIHRydWUgaWYgc3RhY2sxIGlzIGF0IG9yIGFib3ZlIHN0YWNrMgotc3RhdGljIGJvb2wgY2hl
Y2tTdGFja09uVG9wKAotICAgICAgICBjb25zdCBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4m
IGlmcmFtZVpzdGFjaywKLSAgICAgICAgY29uc3QgVmVjdG9yPGNvbnN0IFJlbmRlck9iamVjdCo+
JiBwbHVnaW5ac3RhY2spCi17Ci0gICAgZm9yIChzaXplX3QgaTEgPSAwLCBpMiA9IDA7Ci0gICAg
ICAgICBpMSA8IGlmcmFtZVpzdGFjay5zaXplKCkgJiYgaTIgPCBwbHVnaW5ac3RhY2suc2l6ZSgp
OwotICAgICAgICAgaTErKywgaTIrKykgewotICAgICAgICAvLyBUaGUgcm9vdCBpcyBhdCB0aGUg
ZW5kIG9mIHRoZXNlIHN0YWNrcy4gIFdlIHdhbnQgdG8gaXRlcmF0ZQotICAgICAgICAvLyByb290
LWRvd253YXJkcyBzbyB3ZSBpbmRleCBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kLgotICAgICAgICBj
b25zdCBSZW5kZXJPYmplY3QqIHJvMSA9IGlmcmFtZVpzdGFja1tpZnJhbWVac3RhY2suc2l6ZSgp
IC0gMSAtIGkxXTsKLSAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBybzIgPSBwbHVnaW5ac3Rh
Y2tbcGx1Z2luWnN0YWNrLnNpemUoKSAtIDEgLSBpMl07Ci0KLSAgICAgICAgaWYgKHJvMSAhPSBy
bzIpIHsKLSAgICAgICAgICAgIC8vIFdoZW4gd2UgZmluZCBub2RlcyBpbiB0aGUgc3RhY2sgdGhh
dCBhcmUgbm90IHRoZSBzYW1lLCB0aGVuCi0gICAgICAgICAgICAvLyB3ZSd2ZSBmb3VuZCB0aGUg
bm9kZXMganVzdCBiZWxvdyB0aGUgbG93ZXN0IGNvbW1lbnQgYW5jZXN0b3IuCi0gICAgICAgICAg
ICAvLyBEZXRlcm1pbmUgd2hpY2ggc2hvdWxkIGJlIG9uIHRvcC4KLQotICAgICAgICAgICAgLy8g
U2VlIGlmIHotaW5kZXggZGV0ZXJtaW5lcyBhbiBvcmRlci4KLSAgICAgICAgICAgIGlmIChybzEt
PnN0eWxlKCkgJiYgcm8yLT5zdHlsZSgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IHoxID0gcm8x
LT5zdHlsZSgpLT56SW5kZXgoKTsKLSAgICAgICAgICAgICAgICBpbnQgejIgPSBybzItPnN0eWxl
KCktPnpJbmRleCgpOwotICAgICAgICAgICAgICAgIGlmICh6MSA+IHoyKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoejEgPCB6MikKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAvLyBJZiB0aGUgcGx1Z2luIGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCBpdCBz
dGFja3MgYmVoaW5kIHRoZSBpZnJhbWUuCi0gICAgICAgICAgICAvLyBUaGlzIGlzIGZvciBtYWlu
dGFpbmluZyBjb21wYXRpYmlsaXR5IHdpdGggSUUuCi0gICAgICAgICAgICBpZiAocm8yLT5zdHls
ZSgpLT5wb3NpdGlvbigpID09IFN0YXRpY1Bvc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgLy8g
VGhlIDAndGggZWxlbWVudHMgb2YgdGhlc2UgUmVuZGVyT2JqZWN0IGFycmF5cyByZXByZXNlbnQg
dGhlIHBsdWdpbiBub2RlIGFuZAotICAgICAgICAgICAgICAgIC8vIHRoZSBpZnJhbWUuCi0gICAg
ICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwbHVnaW5SZW5kZXJPYmplY3QgPSBwbHVn
aW5ac3RhY2tbMF07Ci0gICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBpZnJhbWVS
ZW5kZXJPYmplY3QgPSBpZnJhbWVac3RhY2tbMF07Ci0KLSAgICAgICAgICAgICAgICBpZiAocGx1
Z2luUmVuZGVyT2JqZWN0LT5zdHlsZSgpICYmIGlmcmFtZVJlbmRlck9iamVjdC0+c3R5bGUoKSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luUmVuZGVyT2JqZWN0LT5zdHlsZSgpLT56
SW5kZXgoKSA+IGlmcmFtZVJlbmRlck9iamVjdC0+c3R5bGUoKS0+ekluZGV4KCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJ
bnNwZWN0IHRoZSBkb2N1bWVudCBvcmRlci4gIExhdGVyIG9yZGVyIG1lYW5zIGhpZ2hlcgotICAg
ICAgICAgICAgLy8gc3RhY2tpbmcuCi0gICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHBh
cmVudCA9IHJvMS0+cGFyZW50KCk7Ci0gICAgICAgICAgICBpZiAoIXBhcmVudCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBBU1NFUlQocGFyZW50ID09IHJvMi0+
cGFyZW50KCkpOwotCi0gICAgICAgICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogcm8gPSBw
YXJlbnQtPmZpcnN0Q2hpbGQoKTsgcm87IHJvID0gcm8tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAocm8gPT0gcm8xKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgaWYgKHJvID09IHJvMikKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQoZmFsc2UpOyAg
Ly8gV2Ugc2hvdWxkIGhhdmUgc2VlbiBybzEgYW5kIHJvMiBieSBub3cuCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8v
IFJldHVybiBhIHNldCBvZiByZWN0YW5nbGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBvdmVyZHJhd24g
YnkgdGhlCi0vLyBwbHVnaW4gKCJjdXRvdXRzIikuICBUaGlzIGhlbHBzIGltcGxlbWVudCB0aGUg
ImlmcmFtZSBzaGltIgotLy8gdGVjaG5pcXVlIG9mIG92ZXJsYXlpbmcgYSB3aW5kb3dlZCBwbHVn
aW4gd2l0aCBjb250ZW50IGZyb20gdGhlCi0vLyBwYWdlLiAgSW4gYSBudXRzaGVsbCwgaWZyYW1l
IGVsZW1lbnRzIHNob3VsZCBvY2NsdWRlIHBsdWdpbnMgd2hlbgotLy8gdGhleSBvY2N1ciBoaWdo
ZXIgaW4gdGhlIHN0YWNraW5nIG9yZGVyLgotdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp3
aW5kb3dDdXRPdXRSZWN0cyhjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxJbnRSZWN0PiYgY3V0T3V0
UmVjdHMpCi17Ci0gICAgUmVuZGVyT2JqZWN0KiBwbHVnaW5Ob2RlID0gbV9lbGVtZW50LT5yZW5k
ZXJlcigpOwotICAgIEFTU0VSVChwbHVnaW5Ob2RlKTsKLSAgICBpZiAoIXBsdWdpbk5vZGUtPnN0
eWxlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBWZWN0b3I8Y29uc3QgUmVuZGVyT2JqZWN0Kj4g
cGx1Z2luWnN0YWNrOwotICAgIFZlY3Rvcjxjb25zdCBSZW5kZXJPYmplY3QqPiBpZnJhbWVac3Rh
Y2s7Ci0gICAgZ2V0T2JqZWN0U3RhY2socGx1Z2luTm9kZSwgJnBsdWdpblpzdGFjayk7Ci0KLSAg
ICAvLyBHZXQgdGhlIHBhcmVudCB3aWRnZXQKLSAgICBXaWRnZXQqIHBhcmVudFdpZGdldCA9IHRo
aXMtPnBhcmVudCgpOwotICAgIGlmICghcGFyZW50V2lkZ2V0LT5pc0ZyYW1lVmlldygpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBGcmFtZVZpZXcqIHBhcmVudEZyYW1lVmlldyA9IHN0YXRpY19j
YXN0PEZyYW1lVmlldyo+KHBhcmVudFdpZGdldCk7Ci0KLSAgICBjb25zdCBIYXNoU2V0PFJlZlB0
cjxXaWRnZXQ+ID4qIGNoaWxkcmVuID0gcGFyZW50RnJhbWVWaWV3LT5jaGlsZHJlbigpOwotICAg
IGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNoaWxk
cmVuLT5iZWdpbigpOyBpdCAhPSBjaGlsZHJlbi0+ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgLy8g
V2Ugb25seSBjYXJlIGFib3V0IEZyYW1lVmlldydzIGJlY2F1c2UgaWZyYW1lcyBzaG93IHVwIGFz
IEZyYW1lVmlld3MuCi0gICAgICAgIGlmICghKCppdCktPmlzRnJhbWVWaWV3KCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBjb25zdCBGcmFtZVZpZXcqIGZyYW1lVmlldyA9Ci0g
ICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBGcmFtZVZpZXcqPigoKml0KS5nZXQoKSk7Ci0g
ICAgICAgIC8vIENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBjYW4gZ2V0IGJvdGggdGhlIGVsZW1lbnQg
YW5kIHRoZSBSZW5kZXJPYmplY3QKLSAgICAgICAgLy8gZm9yIHRoaXMgRnJhbWVWaWV3LCBpZiB3
ZSBjYW4ndCBqdXN0IG1vdmUgb24gdG8gdGhlIG5leHQgb2JqZWN0LgotICAgICAgICBpZiAoIWZy
YW1lVmlldy0+ZnJhbWUoKSB8fCAhZnJhbWVWaWV3LT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKQot
ICAgICAgICAgICAgfHwgIWZyYW1lVmlldy0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCktPnJlbmRl
cmVyKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBIVE1MRWxlbWVudCogZWxl
bWVudCA9IGZyYW1lVmlldy0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7Ci0gICAgICAgIFJlbmRl
ck9iamVjdCogaWZyYW1lUmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwotCi0gICAgICAg
IGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKQotICAgICAgICAg
ICAgJiYgaWZyYW1lUmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkuaW50ZXJzZWN0
cyhmcmFtZVJlY3QpCi0gICAgICAgICAgICAmJiAoIWlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpIHx8
IGlmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkpIHsKLSAg
ICAgICAgICAgIGdldE9iamVjdFN0YWNrKGlmcmFtZVJlbmRlcmVyLCAmaWZyYW1lWnN0YWNrKTsK
LSAgICAgICAgICAgIGlmIChjaGVja1N0YWNrT25Ub3AoaWZyYW1lWnN0YWNrLCBwbHVnaW5ac3Rh
Y2spKSB7Ci0gICAgICAgICAgICAgICAgSW50UG9pbnQgcG9pbnQgPQotICAgICAgICAgICAgICAg
ICAgICByb3VuZGVkSW50UG9pbnQoaWZyYW1lUmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZSgpKTsK
LSAgICAgICAgICAgICAgICBSZW5kZXJCb3gqIHJib3ggPSB0b1JlbmRlckJveChpZnJhbWVSZW5k
ZXJlcik7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBzaXplKHJib3gtPndpZHRoKCksIHJib3gt
PmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBjdXRPdXRSZWN0cy5hcHBlbmQoSW50UmVjdChw
b2ludCwgc2l6ZSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>