<?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>64220</bug_id>
          
          <creation_ts>2011-07-08 17:24:43 -0700</creation_ts>
          <short_desc>Scrollbar color heuristic needs to be hooked up in WebKit1</short_desc>
          <delta_ts>2011-07-21 12:40:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>adele</cc>
    
    <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>jonlee</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>434409</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-08 17:24:43 -0700</bug_when>
    <thetext>We don&apos;t currently set the color of the scrollbar based on the content for WebKit1 views.

&lt;rdar://problem/9589140&gt;

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434419</commentid>
    <comment_count>1</comment_count>
      <attachid>100192</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-08 17:46:48 -0700</bug_when>
    <thetext>Created attachment 100192
Patch

Not commit-worthy yet, I don&apos;t think that putting this in repaint is the right place, though it&apos;s not clear there&apos;s a better place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435315</commentid>
    <comment_count>2</comment_count>
      <attachid>100192</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-11 17:02:55 -0700</bug_when>
    <thetext>Comment on attachment 100192
Patch

Looking back at the implementation of this that is already checked in:

I was surprised to see that in ScrollbarThemeMac::paint, the knob style is recomputed each time we draw a scrollbar. That is not a good design. Even if setting the style on the painter each time was efficient enough, it’s not conceptually OK to simply draw the scrollbar in a different style without making sure we repaint existing visible scrollbars when the style changes. Generally speaking such things are set up as part of style computation and layout.

It’s also not good that we added a getDocumentBackgroundColor function to Frame. This is not the right class for a function like that. For one thing, we should not be adding new functions to the Frame class at this time since it is just the center of a set of related classes. It is probably reasonable to put this function in the FrameView class.

The name of the getDocumentBackgroundColor function, starting with get, is correct style inside WebKit2, but not correct WebCore. The get prefix should have been removed.

The getDocumentBackgroundColor function gets at renderers without triggering style recalculation first. This is not correct unless the caller somehow guarantees rendering is up to date. Normally a function like this needs to make sure style is calculated before looking at renderers or must only be called when style is guaranteed to be up to date.

After talking to Maciej we agree that the right design for this is to store the scrollbar overlay style in the ScrollableArea. If the scrollbar overlay style changes, the scrollable area then schedules a scrollbar repaint. In the case of a scrollable area that is implemented with ScrollView, it would call a function from the ScrollView class.

We’d also need code to schedule a scrollbar overlay style recalculation that works either immediately or based on a timer. That would be called by any code that could change the background color. This would need to be done any time the color of the document element or the body element changes, presumably in RenderBox::styleDidChange, or any time the view&apos;s base background color changes, which would be in FrameView::setBaseBackgroundColor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437854</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-15 11:31:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
Ok, I&apos;m a lot more familiar with the scrolling code after the last two days, so I&apos;ll take a crack at this and see what happens. Thanks, Darin!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438755</commentid>
    <comment_count>4</comment_count>
      <attachid>101212</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-18 15:03:48 -0700</bug_when>
    <thetext>Created attachment 101212
totally new patch, utilizing Darin&apos;s suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438756</commentid>
    <comment_count>5</comment_count>
      <attachid>101213</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-18 15:05:59 -0700</bug_when>
    <thetext>Created attachment 101213
same as last + radar URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438768</commentid>
    <comment_count>6</comment_count>
      <attachid>101213</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-18 15:22:06 -0700</bug_when>
    <thetext>Comment on attachment 101213
same as last + radar URL

Attachment 101213 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9108002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438774</commentid>
    <comment_count>7</comment_count>
      <attachid>101213</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-18 15:32:52 -0700</bug_when>
    <thetext>Comment on attachment 101213
same as last + radar URL

Attachment 101213 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9117373</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438777</commentid>
    <comment_count>8</comment_count>
      <attachid>101213</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-07-18 15:37:00 -0700</bug_when>
    <thetext>Comment on attachment 101213
same as last + radar URL

Attachment 101213 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9100022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438779</commentid>
    <comment_count>9</comment_count>
      <attachid>101224</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-18 15:40:03 -0700</bug_when>
    <thetext>Created attachment 101224
this time, without breaking all of the other platforms!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438818</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-18 16:45:10 -0700</bug_when>
    <thetext>Interesting. Works great for WK1, but for WK2, somewhere between setting the correct overlay style (I&apos;ve added an updateScrollbarOverlayStyle call to registerScrollbar and setNewPainterForScrollbar) and going to paint, the NSScrollerImp is losing its style (getting reset to default). Will continue investigating (if all else fails, we could just set the cached style during every paint(); we still get 99% of the benefit).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438820</commentid>
    <comment_count>11</comment_count>
      <attachid>101224</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-18 16:49:28 -0700</bug_when>
    <thetext>Comment on attachment 101224
this time, without breaking all of the other platforms!

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

&gt; Source/WebCore/page/FrameView.cpp:333
&gt; +    Color bgColor = documentBackgroundColor();

I’d suggest not abbreviated background to “bg”.

&gt; Source/WebCore/page/FrameView.cpp:2390
&gt; +    // start as invalid colors

I’d suggest changing this comment to sentence style:

    // Start with invalid colors.

&gt; Source/WebCore/platform/ScrollView.cpp:790
&gt; +    if (horizontalScrollbar())
&gt; +        ScrollbarTheme::nativeTheme()-&gt;updateScrollbarOverlayStyle(horizontalScrollbar());
&gt; +    if (verticalScrollbar())
&gt; +        ScrollbarTheme::nativeTheme()-&gt;updateScrollbarOverlayStyle(verticalScrollbar());

Why is this code here instead of in the ScrollableArea base class?

&gt; Source/WebCore/platform/mac/ScrollbarThemeMac.mm:239
&gt; +    switch (style) {
&gt; +        case ScrollbarOverlayStyleDark:
&gt; +            return wkScrollerKnobStyleDark;
&gt; +        case ScrollbarOverlayStyleLight:
&gt; +            return wkScrollerKnobStyleLight;
&gt; +        default:
&gt; +            return wkScrollerKnobStyleDefault;
&gt; +    }

The old indenting style is the correct style for WebKit, believe it or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438834</commentid>
    <comment_count>12</comment_count>
      <attachid>101224</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-18 16:54:49 -0700</bug_when>
    <thetext>Comment on attachment 101224
this time, without breaking all of the other platforms!

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

&gt;&gt; Source/WebCore/page/FrameView.cpp:333
&gt;&gt; +    Color bgColor = documentBackgroundColor();
&gt; 
&gt; I’d suggest not abbreviated background to “bg”.

Ok.

&gt;&gt; Source/WebCore/page/FrameView.cpp:2390
&gt;&gt; +    // start as invalid colors
&gt; 
&gt; I’d suggest changing this comment to sentence style:
&gt; 
&gt;     // Start with invalid colors.

Ok, sure!

&gt;&gt; Source/WebCore/platform/ScrollView.cpp:790
&gt;&gt; +        ScrollbarTheme::nativeTheme()-&gt;updateScrollbarOverlayStyle(verticalScrollbar());
&gt; 
&gt; Why is this code here instead of in the ScrollableArea base class?

Fixed.

&gt;&gt; Source/WebCore/platform/mac/ScrollbarThemeMac.mm:239
&gt;&gt; +    }
&gt; 
&gt; The old indenting style is the correct style for WebKit, believe it or not.

That&apos;s odd; does Xcode reindent code when you copy/paste it around?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438859</commentid>
    <comment_count>13</comment_count>
      <attachid>101242</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-18 17:34:33 -0700</bug_when>
    <thetext>Created attachment 101242
work around &lt;rdar://problem/9797253&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438887</commentid>
    <comment_count>14</comment_count>
      <attachid>101242</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-18 18:12:45 -0700</bug_when>
    <thetext>Comment on attachment 101242
work around &lt;rdar://problem/9797253&gt;

Attachment 101242 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9112503

New failing tests:
fast/css/stylesheet-candidate-nodes-crash.xhtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438895</commentid>
    <comment_count>15</comment_count>
      <attachid>101242</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-18 18:25:35 -0700</bug_when>
    <thetext>Comment on attachment 101242
work around &lt;rdar://problem/9797253&gt;

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

I think the EWS failure was a false positive.

&gt; Source/WebCore/platform/ScrollableArea.cpp:227
&gt; +    if (horizontalScrollbar())
&gt; +        ScrollbarTheme::nativeTheme()-&gt;updateScrollbarOverlayStyle(horizontalScrollbar());
&gt; +    if (verticalScrollbar())
&gt; +        ScrollbarTheme::nativeTheme()-&gt;updateScrollbarOverlayStyle(verticalScrollbar());
&gt; +
&gt; +    if (horizontalScrollbar())
&gt; +        horizontalScrollbar()-&gt;invalidate();
&gt; +
&gt; +    if (verticalScrollbar())
&gt; +        verticalScrollbar()-&gt;invalidate();

Could we merge these if statements for clarity?

&gt; Source/WebCore/platform/mac/ScrollViewMac.mm:215
&gt; +    switch (style) {
&gt; +        case ScrollbarOverlayStyleDark:
&gt; +            return NSScrollerKnobStyleDark;
&gt; +        case ScrollbarOverlayStyleLight:
&gt; +            return NSScrollerKnobStyleLight;
&gt; +        default:
&gt; +            return NSScrollerKnobStyleDefault;
&gt; +    }

Same switch statement indentation problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438926</commentid>
    <comment_count>16</comment_count>
      <attachid>101242</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-18 19:27:12 -0700</bug_when>
    <thetext>Comment on attachment 101242
work around &lt;rdar://problem/9797253&gt;

Rejecting attachment 101242 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-01&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:

  perf/object-keys.html = TEXT PASS


Regressions: Unexpected image mismatch : (5)
  fast/text/atsui-multiple-renderers.html = IMAGE
  fast/text/international/danda-space.html = IMAGE
  fast/text/international/thai-baht-space.html = IMAGE
  fast/text/international/thai-line-breaks.html = IMAGE
  platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html = IMAGE

Regressions: Unexpected DumpRenderTree crashes : (1)
  fast/css/stylesheet-candidate-nodes-crash.xhtml = CRASH



Full output: http://queues.webkit.org/results/9136008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439234</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-19 10:23:42 -0700</bug_when>
    <thetext>(In reply to comment #16)

While the rest of the failures seem to be happening to everyone, this one:

fast/css/stylesheet-candidate-nodes-crash.xhtml = CRASH

seems to be legitimate (can reproduce with patch, cannot without). But the backtrace certainly doesn&apos;t make it obvious how this patch is causing this failure. I&apos;ll take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439238</commentid>
    <comment_count>18</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-19 10:32:28 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; 
&gt; While the rest of the failures seem to be happening to everyone, this one:
&gt; 
&gt; fast/css/stylesheet-candidate-nodes-crash.xhtml = CRASH
&gt; 
&gt; seems to be legitimate (can reproduce with patch, cannot without). But the backtrace certainly doesn&apos;t make it obvious how this patch is causing this failure. I&apos;ll take a look.

It was the updateStyleIfNeeded() added to FrameView::documentBackgroundColor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439240</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-19 10:33:48 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; It was the updateStyleIfNeeded() added to FrameView::documentBackgroundColor.

Very interesting. Maybe we need to make that change all alone in a separate patch and figure out what callers have difficulty.

I guess that could be done *after* this fix if the fix works without it. Or *before* if it really doesn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439247</commentid>
    <comment_count>20</comment_count>
      <attachid>101341</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-19 10:40:34 -0700</bug_when>
    <thetext>Created attachment 101341
remove updateStyleIfNeeded()

&gt; I guess that could be done *after* this fix if the fix works without it. Or *before* if it really doesn&apos;t.

Everything works fine without it as far as my manual tests go (I added it solely because of your comment, though it certainly makes sense), so my vote is for solve that mystery after this patch is landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440174</commentid>
    <comment_count>21</comment_count>
      <attachid>101341</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 18:32:30 -0700</bug_when>
    <thetext>Comment on attachment 101341
remove updateStyleIfNeeded()

Clearing flags on attachment: 101341

Committed r91435: &lt;http://trac.webkit.org/changeset/91435&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440175</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 18:32:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440181</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-20 18:49:54 -0700</bug_when>
    <thetext>It seems like this broke Snow Leopard build:
http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Build%29/builds/32163</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440285</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-20 23:12:39 -0700</bug_when>
    <thetext>This patch appears to have caused valgrind error:

19:02:10 memcheck_analyze.py [ERROR] FAIL! There were 1 errors: 
19:02:10 memcheck_analyze.py [ERROR] Command: src/sconsbuild/Release/test_shell_tests --gtest_filter=-BMPImageDecoderTest.FLAKY_ChunkedDecodingSlow:MediaLeakTest.VideoBear:MediaLeakTest.FAILS_VideoBear:WebFrameTest.GetFullHtmlOfPage:BMPImageDecoderTest.FLAKY_DecodingSlow:BMPImageDecoderTest.FAILS_ChunkedDecodingSlow:MediaLeakTest.FLAKY_VideoBear:MediaLeakTest.ManyVideoBear:BMPImageDecoderTest.DecodingSlow:MediaLeakTest.FAILS_ManyVideoBear:WebFrameTest.FAILS_GetFullHtmlOfPage:MediaLeakTest.FLAKY_ManyVideoBear:BMPImageDecoderTest.ChunkedDecodingSlow:BMPImageDecoderTest.FAILS_DecodingSlow:WebFrameTest.FLAKY_GetFullHtmlOfPage --gtest_print_time
UninitCondition
Conditional jump or move depends on uninitialised value(s)
  WebCore::FrameView::recalculateScrollbarOverlayStyle() (third_party/WebKit/Source/WebCore/page/FrameView.cpp:344)
  WebCore::RenderBox::styleDidChange(WebCore::StyleDifference, WebCore::RenderStyle const*) (third_party/WebKit/Source/WebCore/rendering/RenderBox.cpp:341)
  WebCore::RenderBlock::styleDidChange(WebCore::StyleDifference, WebCore::RenderStyle const*) (third_party/WebKit/Source/WebCore/rendering/RenderBlock.cpp:233)
  WebCore::RenderObject::setStyle(WTF::PassRefPtr&lt;WebCore::RenderStyle&gt;) (third_party/WebKit/Source/WebCore/rendering/RenderObject.cpp:1631)
  WebCore::RenderObject::setAnimatableStyle(WTF::PassRefPtr&lt;WebCore::RenderStyle&gt;) (third_party/WebKit/Source/WebCore/rendering/RenderObject.cpp:1544)
  WebCore::NodeRendererFactory::createRendererAndStyle() (third_party/WebKit/Source/WebCore/dom/NodeRenderingContext.cpp:287)
  WebCore::NodeRendererFactory::createRendererIfNeeded() (third_party/WebKit/Source/WebCore/dom/NodeRenderingContext.cpp:316)
  WebCore::Node::createRendererIfNeeded() (third_party/WebKit/Source/WebCore/dom/Node.cpp:1454)
  WebCore::Element::attach() (third_party/WebKit/Source/WebCore/dom/Element.cpp:1015)
  WTF::PassRefPtr&lt;WebCore::Element&gt; WebCore::HTMLConstructionSite::attach&lt;WebCore::Element&gt;(WebCore::ContainerNode*, WTF::PassRefPtr&lt;WebCore::Element&gt;) (third_party/WebKit/Source/WebCore/html/parser/HTMLConstructionSite.cpp:111)
  WebCore::HTMLConstructionSite::insertHTMLHtmlStartTagBeforeHTML(WebCore::AtomicHTMLToken&amp;) (third_party/WebKit/Source/WebCore/html/parser/HTMLConstructionSite.cpp:186)
  WebCore::HTMLTreeBuilder::defaultForBeforeHTML() (third_party/WebKit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2685)
  WebCore::HTMLTreeBuilder::processEndOfFile(WebCore::AtomicHTMLToken&amp;) (third_party/WebKit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2594)
  WebCore::HTMLTreeBuilder::processToken(WebCore::AtomicHTMLToken&amp;) (third_party/WebKit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp:493)
  WebCore::HTMLTreeBuilder::constructTreeFromAtomicToken(WebCore::AtomicHTMLToken&amp;) (third_party/WebKit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp:462)
  WebCore::HTMLTreeBuilder::constructTreeFromToken(WebCore::HTMLToken&amp;) (third_party/WebKit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp:452)
  WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode) (third_party/WebKit/Source/WebCore/html/parser/HTMLDocumentParser.cpp:276)
  WebCore::HTMLDocumentParser::pumpTokenizerIfPossible(WebCore::HTMLDocumentParser::SynchronousMode) (third_party/WebKit/Source/WebCore/html/parser/HTMLDocumentParser.cpp:175)
  WebCore::HTMLDocumentParser::prepareToStopParsing() (third_party/WebKit/Source/WebCore/html/parser/HTMLDocumentParser.cpp:140)
  WebCore::HTMLDocumentParser::attemptToEnd() (third_party/WebKit/Source/WebCore/html/parser/HTMLDocumentParser.cpp:399)
  WebCore::HTMLDocumentParser::finish() (third_party/WebKit/Source/WebCore/html/parser/HTMLDocumentParser.cpp:426)
  WebCore::DocumentWriter::endIfNotLoadingMainResource() (third_party/WebKit/Source/WebCore/loader/DocumentWriter.cpp:226)
  WebCore::DocumentWriter::end() (third_party/WebKit/Source/WebCore/loader/DocumentWriter.cpp:209)
  WebCore::FrameLoader::init() (third_party/WebKit/Source/WebCore/loader/FrameLoader.cpp:233)
  WebCore::Frame::init() (third_party/WebKit/Source/WebCore/page/Frame.h:286)
  WebKit::WebFrameImpl::initializeAsMainFrame(WebKit::WebViewImpl*) (third_party/WebKit/Source/WebKit/chromium/src/WebFrameImpl.cpp:1883)
  WebKit::WebViewImpl::initializeMainFrame(WebKit::WebFrameClient*) (third_party/WebKit/Source/WebKit/chromium/src/WebViewImpl.cpp:271)
  WebViewHost::Create(_GtkWidget*, TestWebViewDelegate*, WebKit::WebDevToolsAgentClient*, WebPreferences const&amp;) (webkit/tools/test_shell/webview_host_gtk.cc:34)
  TestShell::Initialize(GURL const&amp;) (webkit/tools/test_shell/test_shell_gtk.cc:349)
  TestShell::CreateNewWindow(GURL const&amp;, TestShell**) (webkit/tools/test_shell/test_shell.cc:203)
Suppression (error hash=#1E5287B6D215189B#):
  For more info on using suppressions see http://dev.chromium.org/developers/how-tos/using-valgrind#TOC-Suppressing-Errors
{
   &lt;insert_a_suppression_name_here&gt;
   Memcheck:Cond
   fun:_ZN7WebCore9FrameView32recalculateScrollbarOverlayStyleEv
   fun:_ZN7WebCore9RenderBox14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore11RenderBlock14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
   fun:_ZN7WebCore12RenderObject8setStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
   fun:_ZN7WebCore12RenderObject18setAnimatableStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
   fun:_ZN7WebCore19NodeRendererFactory22createRendererAndStyleEv
   fun:_ZN7WebCore19NodeRendererFactory22createRendererIfNeededEv
   fun:_ZN7WebCore4Node22createRendererIfNeededEv
   fun:_ZN7WebCore7Element6attachEv
   fun:_ZN7WebCore20HTMLConstructionSite6attachINS_7ElementEEEN3WTF10PassRefPtrIT_EEPNS_13ContainerNodeES6_
   fun:_ZN7WebCore20HTMLConstructionSite32insertHTMLHtmlStartTagBeforeHTMLERNS_15AtomicHTMLTokenE
   fun:_ZN7WebCore15HTMLTreeBuilder20defaultForBeforeHTMLEv
   fun:_ZN7WebCore15HTMLTreeBuilder16processEndOfFileERNS_15AtomicHTMLTokenE
   fun:_ZN7WebCore15HTMLTreeBuilder12processTokenERNS_15AtomicHTMLTokenE
   fun:_ZN7WebCore15HTMLTreeBuilder28constructTreeFromAtomicTokenERNS_15AtomicHTMLTokenE
   fun:_ZN7WebCore15HTMLTreeBuilder22constructTreeFromTokenERNS_9HTMLTokenE
   fun:_ZN7WebCore18HTMLDocumentParser13pumpTokenizerENS0_15SynchronousModeE
   fun:_ZN7WebCore18HTMLDocumentParser23pumpTokenizerIfPossibleENS0_15SynchronousModeE
   fun:_ZN7WebCore18HTMLDocumentParser20prepareToStopParsingEv
   fun:_ZN7WebCore18HTMLDocumentParser12attemptToEndEv
   fun:_ZN7WebCore18HTMLDocumentParser6finishEv
   fun:_ZN7WebCore14DocumentWriter27endIfNotLoadingMainResourceEv
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440286</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-20 23:13:15 -0700</bug_when>
    <thetext>It appears that m_scrollbarOverlayStyle added to ScrollableArea is never initialized :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440287</commentid>
    <comment_count>26</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-20 23:16:53 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; It appears that m_scrollbarOverlayStyle added to ScrollableArea is never initialized :(

Eek! It needs to be initialized to ScrollbarOverlayStyleDefault. I&apos;ll do that tomorrow when I get back to my machine.

Is there a way to run valgrind tests on my machine? (though this one should have been caught simply by not making the mistake in the first place)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440288</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-20 23:27:20 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; It appears that m_scrollbarOverlayStyle added to ScrollableArea is never initialized :(
&gt; 
&gt; Eek! It needs to be initialized to ScrollbarOverlayStyleDefault. I&apos;ll do that tomorrow when I get back to my machine.

Indeed!  Fixed in http://trac.webkit.org/changeset/91447.

&gt; Is there a way to run valgrind tests on my machine? (though this one should have been caught simply by not making the mistake in the first place)

There&apos;s a documentation on chromium.org: http://www.chromium.org/developers/how-tos/using-valgrind

But I&apos;ve never used it myself so I&apos;m not sure how much of that is applicable to Mac port.

If anything, Chromium Linux has Valgrind bot:
http://build.chromium.org/p/chromium.webkit/waterfall?builder=Linux%20Valgrind

We also have a shiny Snow Leopard Clang bot:
http://build.chromium.org/p/chromium.webkit/waterfall?builder=Mac%20Clang%20Builder%20%28dbg%29</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440289</commentid>
    <comment_count>28</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-20 23:29:03 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; (In reply to comment #25)
&gt; &gt; &gt; It appears that m_scrollbarOverlayStyle added to ScrollableArea is never initialized :(
&gt; &gt; 
&gt; &gt; Eek! It needs to be initialized to ScrollbarOverlayStyleDefault. I&apos;ll do that tomorrow when I get back to my machine.
&gt; 
&gt; Indeed!  Fixed in http://trac.webkit.org/changeset/91447.

Ah, you&apos;ve been great today, cleaning up after all my mistakes. Thanks!

&gt; &gt; Is there a way to run valgrind tests on my machine? (though this one should have been caught simply by not making the mistake in the first place)
&gt; 
&gt; There&apos;s a documentation on chromium.org: http://www.chromium.org/developers/how-tos/using-valgrind
&gt; 
&gt; But I&apos;ve never used it myself so I&apos;m not sure how much of that is applicable to Mac port.
&gt; 
&gt; If anything, Chromium Linux has Valgrind bot:
&gt; http://build.chromium.org/p/chromium.webkit/waterfall?builder=Linux%20Valgrind
&gt; 
&gt; We also have a shiny Snow Leopard Clang bot:
&gt; http://build.chromium.org/p/chromium.webkit/waterfall?builder=Mac%20Clang%20Builder%20%28dbg%29

Excellent, I&apos;ll take a look!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440580</commentid>
    <comment_count>29</comment_count>
      <attachid>101341</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-07-21 12:40:33 -0700</bug_when>
    <thetext>Comment on attachment 101341
remove updateStyleIfNeeded()

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        No new tests, since this code is only enabled on future versions of Mac OS X.

No longer future!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100192</attachid>
            <date>2011-07-08 17:46:48 -0700</date>
            <delta_ts>2011-07-18 15:03:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>scroller-color.patch</filename>
            <type>text/plain</type>
            <size>1864</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZWM2MmFmLi4wM2I5MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDctMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgU2Nyb2xsYmFyIGNvbG9yIGhldXJpc3RpYyBuZWVkcyB0byBiZSBob29rZWQgdXAg
aW4gV2ViS2l0MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjQyMjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk1ODkxNDA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0
aGlzIGNvZGUgaXMgb25seSBlbmFibGVkIG9uIGZ1dHVyZSB2ZXJzaW9ucyBvZiBNYWMgT1MgWC4K
KworICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6dG9OU1Njcm9sbGVyS25vYlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnBsYXRmb3JtUmVwYWludENvbnRlbnRSZWN0YW5nbGUpOgorCiAyMDExLTA3LTA4ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjkwNjYyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbFZpZXdNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01h
Yy5tbQppbmRleCBmZjJlMTRlLi4xMzM0Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsVmlld01hYy5tbQpAQCAtMTYwLDkgKzE2MCwyNiBAQCBib29sIFNjcm9sbFZp
ZXc6OnBsYXRmb3JtU2Nyb2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgaW5saW5lIE5TU2Nyb2xsZXJLbm9iU3R5bGUg
dG9OU1Njcm9sbGVyS25vYlN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzdHlsZSkKK3sKKyAg
ICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGFy
azoKKyAgICAgICAgICAgIHJldHVybiBOU1Njcm9sbGVyS25vYlN0eWxlRGFyazsKKyAgICAgICAg
Y2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDoKKyAgICAgICAgICAgIHJldHVybiBOU1Nj
cm9sbGVyS25vYlN0eWxlTGlnaHQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gTlNTY3JvbGxlcktub2JTdHlsZURlZmF1bHQ7CisgICAgfQorfQorCiB2b2lkIFNjcm9sbFZp
ZXc6OnBsYXRmb3JtUmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYgcmVjdCwg
Ym9vbCBub3cpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisjaWYgIShk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkgfHwgZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKSkKKyAgICBbc2Nyb2xsVmlldygpIHNldFNjcm9sbGVyS25vYlN0eWxlOnRvTlNTY3Jv
bGxlcktub2JTdHlsZShyZWNvbW1lbmRlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKV07CisjZW5k
aWYKKwogICAgIE5TVmlldyAqdmlldyA9IGRvY3VtZW50VmlldygpOwogICAgIFt2aWV3IHNldE5l
ZWRzRGlzcGxheUluUmVjdDpyZWN0XTsKICAgICBpZiAobm93KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101212</attachid>
            <date>2011-07-18 15:03:48 -0700</date>
            <delta_ts>2011-07-18 15:05:59 -0700</delta_ts>
            <desc>totally new patch, utilizing Darin&apos;s suggestions</desc>
            <filename>0001-Scrollbar-color-heuristic-needs-to-be-hooked-up-in-W.patch</filename>
            <type>text/plain</type>
            <size>23434</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">RnJvbSA1YThjNzQ4Mjc5ODcwMmQ3NDNhMzM3ZTRiNTlmN2ZjZWQwMzg1ZTJjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW0gSG9ydG9uIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CkRhdGU6IE1vbiwgMTggSnVsIDIwMTEgMTU6MDI6MDMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBT
Y3JvbGxiYXIgY29sb3IgaGV1cmlzdGljIG5lZWRzIHRvIGJlIGhvb2tlZCB1cCBpbiBXZWJLaXQx
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyMjAKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKU3RvcmUgdGhlIHNjcm9sbGVyIHN0eWxlIG9uIFNjcm9sbGFi
bGVBcmVhLCBhbmQgcmVjb21wdXRlIGl0IHdoZW5ldmVyCnRoZSBkb2N1bWVudCBvciBib2R5IGVs
ZW1lbnQgYmFja2dyb3VuZCBjb2xvciBjaGFuZ2VzIG9yIHRoZSBiYXNlIGJhY2tncm91bmQKY29s
b3Igb2YgdGhlIHNjcm9sbHZpZXcgY2hhbmdlcy4gQWxzbywgbWFrZSBzdXJlIHRvIHJlcGFpbnQg
dGhlIHNjcm9sbGJhcnMKd2hlbmV2ZXIgdGhlIHN0eWxlIGNoYW5nZXMuCgpObyBuZXcgdGVzdHMs
IHNpbmNlIHRoaXMgY29kZSBpcyBvbmx5IGVuYWJsZWQgb24gZnV0dXJlIHZlcnNpb25zIG9mIE1h
YyBPUyBYLgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgNDMgKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiAg
ICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cCAgICAgICAgICAgICAgICAgICAgfCAgIDQwIC0tLS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAtCiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAgICAgICAgICAgICAgICAgfCAgIDc1ICsrKysrKysrKysrKysr
KysrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggICAgICAgICAgICAgICAg
ICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwICAgICAg
ICAgICB8ICAgMTEgKysrCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggICAg
ICAgICAgICAgfCAgICAzICsKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcCAgICAgICB8ICAgMTEgKysrCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5oICAgICAgICAgfCAgICA1ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZS5oICAgICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxWaWV3TWFjLm1tICAgICB8ICAgMTcgKysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oICB8ICAgIDEgKwogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIHwgICA0MSArKysrKysrLS0tLS0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwICAgICAgICAgICB8ICAgIDIgKwogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSArKysrCiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwICAgfCAgICA3ICsr
LQogMTcgZmlsZXMgY2hhbmdlZCwgMjAyIGluc2VydGlvbnMoKyksIDc4IGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0ZTk2NWJhLi40NDEzMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTEtMDctMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgU2Nyb2xsYmFyIGNvbG9yIGhldXJpc3RpYyBuZWVkcyB0byBiZSBob29rZWQgdXAg
aW4gV2ViS2l0MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjQyMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTdG9yZSB0aGUgc2Nyb2xsZXIgc3R5bGUgb24gU2Nyb2xsYWJsZUFyZWEsIGFuZCByZWNvbXB1
dGUgaXQgd2hlbmV2ZXIKKyAgICAgICAgdGhlIGRvY3VtZW50IG9yIGJvZHkgZWxlbWVudCBiYWNr
Z3JvdW5kIGNvbG9yIGNoYW5nZXMgb3IgdGhlIGJhc2UgYmFja2dyb3VuZAorICAgICAgICBjb2xv
ciBvZiB0aGUgc2Nyb2xsdmlldyBjaGFuZ2VzLiBBbHNvLCBtYWtlIHN1cmUgdG8gcmVwYWludCB0
aGUgc2Nyb2xsYmFycworICAgICAgICB3aGVuZXZlciB0aGUgc3R5bGUgY2hhbmdlcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHNpbmNlIHRoaXMgY29kZSBpcyBvbmx5IGVuYWJsZWQgb24gZnV0
dXJlIHZlcnNpb25zIG9mIE1hYyBPUyBYLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6Z2V0RG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlY2Fs
Y3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2V0QmFzZUJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKTogUmVuYW1lZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNldFNjcm9sbGJhck92ZXJs
YXlTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZTo6dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvU2Nyb2xsVmlld01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvTlNTY3JvbGxlcktu
b2JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9s
bGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1l
TWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6dG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c3R5
bGVEaWRDaGFuZ2UpOgorCiAyMDExLTA3LTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVy
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgSlNDIHRvIHJlcGxhY2UgSlNDZWxsOjpv
cGVyYXRvciBuZXcgd2l0aCBzdGF0aWMgY3JlYXRlIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCAzNTMyMGZmLi42N2JkMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTIzMiw3ICsx
MjMyLDYgQEAgX19aTks3V2ViQ29yZTVGcmFtZTE0c2VsZWN0aW9uSW1hZ2VFYgogX19aTks3V2Vi
Q29yZTVGcmFtZTE1Y29udGVudFJlbmRlcmVyRXYKIF9fWk5LN1dlYkNvcmU1RnJhbWUxNWxheWVy
VHJlZUFzVGV4dEViCiBfX1pOSzdXZWJDb3JlNUZyYW1lMThkb2N1bWVudFR5cGVTdHJpbmdFdgot
X19aTks3V2ViQ29yZTVGcmFtZTI2Z2V0RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3JFdgogX19aTks3
V2ViQ29yZTVGcmFtZTMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0
cmluZ0UKIF9fWk5LN1dlYkNvcmU1RnJhbWU4c2V0dGluZ3NFdgogX19aTks3V2ViQ29yZTVGcmFt
ZTlkb21XaW5kb3dFdgpAQCAtMTMyNSw2ICsxMzI0LDcgQEAgX19aTks3V2ViQ29yZTlGcmFtZVZp
ZXcxM3BhaW50QmVoYXZpb3JFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxOWJhc2VCYWNrZ3Jv
dW5kQ29sb3JFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcyMGlzU29mdHdhcmVSZW5kZXJhYmxl
RXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MjJ3aW5kb3dDbGlwUmVjdEZvckxheWVyRVBLTlNf
MTFSZW5kZXJMYXllckViCitfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzIzZG9jdW1lbnRCYWNrZ3Jv
dW5kQ29sb3JFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcyOGlzRW5jbG9zZWRJbkNvbXBvc2l0
aW5nTGF5ZXJFdgogX19aTks3V2ViQ29yZTlQYWdlQ2FjaGUxMGZyYW1lQ291bnRFdgogX19aTks3
V2ViQ29yZTlQYWdlQ2FjaGUyMWF1dG9yZWxlYXNlZFBhZ2VDb3VudEV2CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCmluZGV4IDFiMmUxYTYuLmYzYWFlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC01MDcs
NDYgKzUwNyw2IEBAIFN0cmluZyBGcmFtZTo6bWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50KiBlCiAgICAgCiAgICAgcmV0dXJuIG1h
dGNoTGFiZWxzQWdhaW5zdFN0cmluZyhsYWJlbHMsIGVsZW1lbnQtPmdldEF0dHJpYnV0ZShpZEF0
dHIpKTsKIH0KLSAgICAKLUNvbG9yIEZyYW1lOjpnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcigp
IGNvbnN0Ci17Ci0gICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01OTU0MD4gV2UgYmxlbmQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YKLSAgICAvLyB0aGUgZG9j
dW1lbnQgYW5kIHRoZSBib2R5IGFnYWluc3QgdGhlIGJhc2UgYmFja2dyb3VuZCBjb2xvciBvZiB0
aGUgZnJhbWUgdmlldy4KLSAgICAvLyBCYWNrZ3JvdW5kIGltYWdlcyBhcmUgdW5mb3J0dW5hdGVs
eSBpbXByYWN0aWNhbCB0byBpbmNsdWRlLgotCi0gICAgLy8gUmV0dXJuIGludmFsaWQgQ29sb3Ig
b2JqZWN0cyB3aGVuZXZlciB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgaW5mb3JtYXRpb24uCi0gICAg
aWYgKCFtX2RvYykKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBFbGVtZW50KiBodG1s
RWxlbWVudCA9IG1fZG9jLT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBib2R5RWxl
bWVudCA9IG1fZG9jLT5ib2R5KCk7Ci0KLSAgICAvLyBzdGFydCBhcyBpbnZhbGlkIGNvbG9ycwot
ICAgIENvbG9yIGh0bWxCYWNrZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3IgYm9keUJhY2tncm91bmRD
b2xvcjsKLSAgICBpZiAoaHRtbEVsZW1lbnQgJiYgaHRtbEVsZW1lbnQtPnJlbmRlcmVyKCkpCi0g
ICAgICAgIGh0bWxCYWNrZ3JvdW5kQ29sb3IgPSBodG1sRWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsK
LSAgICBpZiAoYm9keUVsZW1lbnQgJiYgYm9keUVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAg
IGJvZHlCYWNrZ3JvdW5kQ29sb3IgPSBib2R5RWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICAK
LSAgICBpZiAoIWJvZHlCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGlmICgh
aHRtbEJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gQ29sb3Io
KTsKLSAgICAgICAgcmV0dXJuIHZpZXcoKS0+YmFzZUJhY2tncm91bmRDb2xvcigpLmJsZW5kKGh0
bWxCYWNrZ3JvdW5kQ29sb3IpOwotICAgIH0KLSAgICAKLSAgICBpZiAoIWh0bWxCYWNrZ3JvdW5k
Q29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdmlldygpLT5iYXNlQmFja2dyb3VuZENv
bG9yKCkuYmxlbmQoYm9keUJhY2tncm91bmRDb2xvcik7Ci0gICAgCi0gICAgLy8gV2UgdGFrZSB0
aGUgYWdncmVnYXRlIG9mIHRoZSBiYXNlIGJhY2tncm91bmQgY29sb3IKLSAgICAvLyB0aGUgPGh0
bWw+IGJhY2tncm91bmQgY29sb3IsIGFuZCB0aGUgPGJvZHk+Ci0gICAgLy8gYmFja2dyb3VuZCBj
b2xvciB0byBmaW5kIHRoZSBkb2N1bWVudCBjb2xvci4gVGhlCi0gICAgLy8gYWRkaXRpb24gb2Yg
dGhlIGJhc2UgYmFja2dyb3VuZCBjb2xvciBpcyBub3QKLSAgICAvLyB0ZWNobmljYWxseSBwYXJ0
IG9mIHRoZSBkb2N1bWVudCBiYWNrZ3JvdW5kLCBidXQgaXQKLSAgICAvLyBvdGhlcndpc2UgcG9z
ZXMgcHJvYmxlbXMgd2hlbiB0aGUgYWdncmVnYXRlIGlzIG5vdAotICAgIC8vIGZ1bGx5IG9wYXF1
ZS4KLSAgICByZXR1cm4gdmlldygpLT5iYXNlQmFja2dyb3VuZENvbG9yKCkuYmxlbmQoaHRtbEJh
Y2tncm91bmRDb2xvcikuYmxlbmQoYm9keUJhY2tncm91bmRDb2xvcik7Ci19CiAKIHZvaWQgRnJh
bWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemUs
IGZsb2F0IG1heGltdW1TaHJpbmtSYXRpbywgQWRqdXN0Vmlld1NpemVPck5vdCBzaG91bGRBZGp1
c3RWaWV3U2l6ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA5NTBhNzNmLi42NDg2YzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCkBAIC0xOTIsOCArMTkyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKFJlZ3VsYXJFeHByZXNzaW9uKiwg
SFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZD
ZWxsKTsKICAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGxhYmVscywgRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2Us
IGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpOwogICAgICAgICBTdHJpbmcgbWF0Y2hMYWJlbHNB
Z2FpbnN0RWxlbWVudChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50Kik7Ci0K
LSAgICAgICAgQ29sb3IgZ2V0RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKICAgICAg
ICAgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBOU1N0cmluZyogc2VhcmNoRm9yTGFiZWxz
QmVmb3JlRWxlbWVudChOU0FycmF5KiBsYWJlbHMsIEVsZW1lbnQqLCBzaXplX3QqIHJlc3VsdERp
c3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAppbmRleCBmYzMzMDk4Li4zZjZlZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CkBAIC0zMjUsMjEgKzMyNSwyNCBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFJlbW92ZUhvcml6b250
YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmRpZFJlbW92ZVdoZWVsRXZlbnRIYW5kbGVyKCk7CiB9CiAKLVNjcm9sbGJhck92ZXJs
YXlTdHlsZSBGcmFtZVZpZXc6OnJlY29tbWVuZGVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29u
c3QKK3ZvaWQgRnJhbWVWaWV3OjpyZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgpCiB7
Ci0gICAgQ29sb3IgYmdDb2xvciA9IG1fZnJhbWUtPmdldERvY3VtZW50QmFja2dyb3VuZENvbG9y
KCk7Ci0gICAgaWYgKCFiZ0NvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFNjcm9sbGJh
ck92ZXJsYXlTdHlsZURlZmF1bHQ7Ci0gICAgCi0gICAgLy8gUmVkdWNlIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yIGZyb20gUkdCIHRvIGEgbGlnaHRuZXNzIHZhbHVlCi0gICAgLy8gYW5kIGRldGVybWlu
ZSB3aGljaCBzY3JvbGxiYXIgc3R5bGUgdG8gdXNlIGJhc2VkIG9uIGEgbGlnaHRuZXNzCi0gICAg
Ly8gaGV1cmlzdGljLgotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAg
ICBiZ0NvbG9yLmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7Ci0gICAgaWYgKGxp
Z2h0bmVzcyA+IC41KQotICAgICAgICByZXR1cm4gU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVs
dDsKLSAgICAKLSAgICByZXR1cm4gU2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ7CisgICAgU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlIG9sZE92ZXJsYXlTdHlsZSA9IHNjcm9sbGJhck92ZXJsYXlTdHls
ZSgpOworICAgIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBvdmVybGF5U3R5bGUgPSBTY3JvbGxiYXJP
dmVybGF5U3R5bGVEZWZhdWx0OworCisgICAgQ29sb3IgYmdDb2xvciA9IGRvY3VtZW50QmFja2dy
b3VuZENvbG9yKCk7CisgICAgaWYgKGJnQ29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIC8vIFJl
ZHVjZSB0aGUgYmFja2dyb3VuZCBjb2xvciBmcm9tIFJHQiB0byBhIGxpZ2h0bmVzcyB2YWx1ZQor
ICAgICAgICAvLyBhbmQgZGV0ZXJtaW5lIHdoaWNoIHNjcm9sbGJhciBzdHlsZSB0byB1c2UgYmFz
ZWQgb24gYSBsaWdodG5lc3MKKyAgICAgICAgLy8gaGV1cmlzdGljLgorICAgICAgICBkb3VibGUg
aHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7CisgICAgICAgIGJnQ29sb3IuZ2V0SFNMKGh1ZSwg
c2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKKyAgICAgICAgaWYgKGxpZ2h0bmVzcyA8PSAuNSkKKyAg
ICAgICAgICAgIG92ZXJsYXlTdHlsZSA9IFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OworICAg
IH0KKworICAgIGlmIChvbGRPdmVybGF5U3R5bGUgIT0gb3ZlcmxheVN0eWxlKQorICAgICAgICBz
ZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUob3ZlcmxheVN0eWxlKTsKIH0KIAogdm9pZCBGcmFtZVZp
ZXc6OmNsZWFyKCkKQEAgLTE4OTUsNiArMTg5OCw4IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRCYXNl
QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIG1f
YmFzZUJhY2tncm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZTsKICAgICBlbHNlCiAgICAgICAgIG1f
YmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKKworICAgIHJlY2FsY3VsYXRl
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNr
Z3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciwgYm9vbCB0cmFu
c3BhcmVudCkKQEAgLTIzNjcsNiArMjM3Miw0OCBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZQog
ICAgIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIGNvcm5lclJlY3QpOwog
fQogCitDb2xvciBGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29uc3QKK3sK
KyAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NTQwPiBX
ZSBibGVuZCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgorICAgIC8vIHRoZSBkb2N1bWVudCBhbmQg
dGhlIGJvZHkgYWdhaW5zdCB0aGUgYmFzZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBmcmFtZSB2
aWV3LgorICAgIC8vIEJhY2tncm91bmQgaW1hZ2VzIGFyZSB1bmZvcnR1bmF0ZWx5IGltcHJhY3Rp
Y2FsIHRvIGluY2x1ZGUuCisKKyAgICAvLyBSZXR1cm4gaW52YWxpZCBDb2xvciBvYmplY3RzIHdo
ZW5ldmVyIHRoZXJlIGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi4KKyAgICBpZiAoIWZyYW1l
KCktPmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAgZnJhbWUoKS0+
ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCisgICAgRWxlbWVudCogaHRtbEVs
ZW1lbnQgPSBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBFbGVt
ZW50KiBib2R5RWxlbWVudCA9IGZyYW1lKCktPmRvY3VtZW50KCktPmJvZHkoKTsKKworICAgIC8v
IHN0YXJ0IGFzIGludmFsaWQgY29sb3JzCisgICAgQ29sb3IgaHRtbEJhY2tncm91bmRDb2xvcjsK
KyAgICBDb2xvciBib2R5QmFja2dyb3VuZENvbG9yOworICAgIGlmIChodG1sRWxlbWVudCAmJiBo
dG1sRWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgaHRtbEJhY2tncm91bmRDb2xvciA9IGh0
bWxFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgIGlmIChib2R5RWxlbWVudCAmJiBib2R5RWxl
bWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgYm9keUJhY2tncm91bmRDb2xvciA9IGJvZHlFbGVt
ZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpOworCisgICAgaWYgKCFib2R5QmFja2dyb3VuZENvbG9yLmlzVmFs
aWQoKSkgeworICAgICAgICBpZiAoIWh0bWxCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgICAgIHJldHVybiBiYXNlQmFja2dyb3VuZENv
bG9yKCkuYmxlbmQoaHRtbEJhY2tncm91bmRDb2xvcik7CisgICAgfQorCisgICAgaWYgKCFodG1s
QmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGJhc2VCYWNrZ3JvdW5k
Q29sb3IoKS5ibGVuZChib2R5QmFja2dyb3VuZENvbG9yKTsKKworICAgIC8vIFdlIHRha2UgdGhl
IGFnZ3JlZ2F0ZSBvZiB0aGUgYmFzZSBiYWNrZ3JvdW5kIGNvbG9yCisgICAgLy8gdGhlIDxodG1s
PiBiYWNrZ3JvdW5kIGNvbG9yLCBhbmQgdGhlIDxib2R5PgorICAgIC8vIGJhY2tncm91bmQgY29s
b3IgdG8gZmluZCB0aGUgZG9jdW1lbnQgY29sb3IuIFRoZQorICAgIC8vIGFkZGl0aW9uIG9mIHRo
ZSBiYXNlIGJhY2tncm91bmQgY29sb3IgaXMgbm90CisgICAgLy8gdGVjaG5pY2FsbHkgcGFydCBv
ZiB0aGUgZG9jdW1lbnQgYmFja2dyb3VuZCwgYnV0IGl0CisgICAgLy8gb3RoZXJ3aXNlIHBvc2Vz
IHByb2JsZW1zIHdoZW4gdGhlIGFnZ3JlZ2F0ZSBpcyBub3QKKyAgICAvLyBmdWxseSBvcGFxdWUu
CisgICAgcmV0dXJuIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKS5ibGVuZChodG1sQmFja2dyb3VuZENv
bG9yKS5ibGVuZChib2R5QmFja2dyb3VuZENvbG9yKTsKK30KKwogYm9vbCBGcmFtZVZpZXc6Omhh
c0N1c3RvbVNjcm9sbGJhcnMoKSBjb25zdAogewogICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdp
ZGdldD4gPiogdmlld0NoaWxkcmVuID0gY2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CmluZGV4IGY4MjgzMTkuLjAzNmI1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMTQw
LDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0U2Nyb2xsYmFycygpOwogICAgIHZv
aWQgcmVzZXRTY3JvbGxiYXJzQW5kQ2xlYXJDb250ZW50c1NpemUoKTsKICAgICB2b2lkIGRldGFj
aEN1c3RvbVNjcm9sbGJhcnMoKTsKLSAgICB2aXJ0dWFsIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBy
ZWNvbW1lbmRlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCByZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgpOwogCiAgICAgdm9pZCBjbGVhcigp
OwogCkBAIC0yMjIsNiArMjIyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludE92
ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92
ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogCisgICAgQ29sb3Ig
ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKwogICAgIHN0YXRpYyBkb3VibGUgY3Vy
cmVudFBhaW50VGltZVN0YW1wKCkgeyByZXR1cm4gc0N1cnJlbnRQYWludFRpbWVTdGFtcDsgfSAv
LyByZXR1cm5zIDAgaWYgbm90IHBhaW50aW5nCiAgICAgCiAgICAgdm9pZCB1cGRhdGVMYXlvdXRB
bmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCmluZGV4IGY0ZDA2MzQuLjkyNGRkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCkBAIC03NzksNiArNzc5LDE3IEBAIFNjcm9sbGJhciogU2Nyb2xsVmlldzo6
c2Nyb2xsYmFyQXRQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCiAgICAgcmV0dXJu
IDA7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9s
bGJhck92ZXJsYXlTdHlsZSBvdmVybGF5U3R5bGUpCit7CisgICAgU2Nyb2xsYWJsZUFyZWE6OnNl
dFNjcm9sbGJhck92ZXJsYXlTdHlsZShvdmVybGF5U3R5bGUpOworICAgIHBsYXRmb3JtU2V0U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKG92ZXJsYXlTdHlsZSk7CisKKyAgICBpZiAoaG9yaXpvbnRhbFNj
cm9sbGJhcigpKQorICAgICAgICBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKS0+dXBkYXRl
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKGhvcml6b250YWxTY3JvbGxiYXIoKSk7CisgICAgaWYgKHZl
cnRpY2FsU2Nyb2xsYmFyKCkpCisgICAgICAgIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgp
LT51cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUodmVydGljYWxTY3JvbGxiYXIoKSk7Cit9CisK
IHZvaWQgU2Nyb2xsVmlldzo6d2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiB7CiAg
ICAgLy8gV2UgZG9uJ3QgYWxsb3cgbW91c2Ugd2hlZWxpbmcgdG8gaGFwcGVuIGluIGEgU2Nyb2xs
VmlldyB0aGF0IGhhcyBoYWQgaXRzIHNjcm9sbGJhcnMgZXhwbGljaXRseSBkaXNhYmxlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCAxN2JiOGViLi45ZmFlYTkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0xMDgsNiArMTA4LDggQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhck92ZXJsYXlTdHls
ZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpOworCiAgICAgLy8gQnkgZGVmYXVsdCB5b3Ugb25seSBy
ZWNlaXZlIHBhaW50IGV2ZW50cyBmb3IgdGhlIGFyZWEgdGhhdCBpcyB2aXNpYmxlLiBJbiB0aGUg
Y2FzZSBvZiB1c2luZyBhCiAgICAgLy8gdGlsZWQgYmFja2luZyBzdG9yZSwgdGhpcyBmdW5jdGlv
biBjYW4gYmUgc2V0LCBzbyB0aGF0IHRoZSB2aWV3IHBhaW50cyB0aGUgZW50aXJlIGNvbnRlbnRz
LgogICAgIGJvb2wgcGFpbnRzRW50aXJlQ29udGVudHMoKSBjb25zdCB7IHJldHVybiBtX3BhaW50
c0VudGlyZUNvbnRlbnRzOyB9CkBAIC0zODksNiArMzkxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoYm9vbCByZXBhaW50T25VbnN1cHByZXNz
KTsKICAgICB2b2lkIHBsYXRmb3JtUmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVj
dCYsIGJvb2wgbm93KTsKICAgICBib29sIHBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdDsKKyAg
ICB2b2lkIHBsYXRmb3JtU2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhck92ZXJsYXlT
dHlsZSk7CiAgICAKICAgICB2b2lkIHBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBv
aW50JiwgYm9vbCB1cGRhdGVQb3NpdGlvbkF0QWxsLCBib29sIHVwZGF0ZVBvc2l0aW9uU3luY2hy
b25vdXNseSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApp
bmRleCBmOGU0MGEyLi4zMzU1MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCkBAIC0yMDUsNiArMjA1LDE3IEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6Omhh
c092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3QKICAgICAgICAgfHwgKGhvcml6b250YWxTY3JvbGxi
YXIoKSAmJiBob3Jpem9udGFsU2Nyb2xsYmFyKCktPmlzT3ZlcmxheVNjcm9sbGJhcigpKTsKIH0K
IAordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJh
ck92ZXJsYXlTdHlsZSBvdmVybGF5U3R5bGUpCit7CisgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5
bGUgPSBvdmVybGF5U3R5bGU7CisKKyAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbGJhcigpKQorICAg
ICAgICBob3Jpem9udGFsU2Nyb2xsYmFyKCktPmludmFsaWRhdGUoKTsKKworICAgIGlmICh2ZXJ0
aWNhbFNjcm9sbGJhcigpKQorICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhcigpLT5pbnZhbGlkYXRl
KCk7Cit9CisKIGJvb2wgU2Nyb2xsYWJsZUFyZWE6OmlzUGlubmVkSW5EaXJlY3Rpb24oY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIGNvbnN0CiB7CiAgICAgaWYgKHNjcm9sbERlbHRhLndpZHRo
KCkgPCAwICYmIGlzSG9yaXpvbnRhbFNjcm9sbGVyUGlubmVkVG9NaW5pbXVtUG9zaXRpb24oKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDAyZGI3ODQuLmE5
OGYyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNzcs
NyArNzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVIb3Jpem9udGFs
U2Nyb2xsYmFyKFNjcm9sbGJhciopOwogCiAgICAgYm9vbCBoYXNPdmVybGF5U2Nyb2xsYmFycygp
IGNvbnN0OwotICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHJlY29tbWVuZGVkU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
RGVmYXVsdDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKTsKKyAgICBTY3JvbGxiYXJPdmVybGF5U3R5bGUgc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7IH0K
IAogICAgIFNjcm9sbEFuaW1hdG9yKiBzY3JvbGxBbmltYXRvcigpIGNvbnN0OwogICAgIGNvbnN0
IEludFBvaW50JiBzY3JvbGxPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9yaWdpbjsg
fQpAQCAtMTY4LDYgKzE2OSw4IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBtX3Zl
cnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBTY3JvbGxFbGFzdGljaXR5IG1faG9yaXpvbnRh
bFNjcm9sbEVsYXN0aWNpdHk7CiAKKyAgICBTY3JvbGxiYXJPdmVybGF5U3R5bGUgbV9zY3JvbGxi
YXJPdmVybGF5U3R5bGU7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCmluZGV4IGVkMzZmOTAuLmRk
M2M1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaApAQCAtNTMs
NiArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGlu
dHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3Zlcmxh
eVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyKikgeyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgdGhlbWVDaGFuZ2VkKCkge30KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbFZpZXdNYWMubW0KaW5kZXggZmYyZTE0ZS4uYWVkZWU4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KQEAgLTIwMyw2ICsyMDMsMjMg
QEAgYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgY29uc3QKICAgICByZXR1
cm4gIVtwbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gfHwgIVtbcGxhdGZvcm1XaWRnZXQoKSB3aW5k
b3ddIGlzVmlzaWJsZV07CiB9CiAKK3N0YXRpYyBpbmxpbmUgTlNTY3JvbGxlcktub2JTdHlsZSB0
b05TU2Nyb2xsZXJLbm9iU3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHN0eWxlKQoreworICAg
IHN3aXRjaCAoc3R5bGUpIHsKKyAgICAgICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEYXJr
OgorICAgICAgICAgICAgcmV0dXJuIE5TU2Nyb2xsZXJLbm9iU3R5bGVEYXJrOworICAgICAgICBj
YXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OgorICAgICAgICAgICAgcmV0dXJuIE5TU2Ny
b2xsZXJLbm9iU3R5bGVMaWdodDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBOU1Njcm9sbGVyS25vYlN0eWxlRGVmYXVsdDsKKyAgICB9Cit9CisKK3ZvaWQgU2Nyb2xsVmll
dzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
IG92ZXJsYXlTdHlsZSkKK3sKKyAgICBbc2Nyb2xsVmlldygpIHNldFNjcm9sbGVyS25vYlN0eWxl
OnRvTlNTY3JvbGxlcktub2JTdHlsZShvdmVybGF5U3R5bGUpXTsKK30KKwogdm9pZCBTY3JvbGxW
aWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYgb3JpZ2luLCBib29s
IHVwZGF0ZVBvc2l0aW9uQXRBbGwsIGJvb2wgdXBkYXRlUG9zaXRpb25TeW5jaHJvbm91c2x5KQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgKaW5kZXggOTc3YTY3ZC4uZmJiMmNjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFj
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgK
QEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wg
dXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNj
cm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqKTsKIAogICAgIHZpcnR1YWwgZG91YmxlIGlu
aXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOwogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3Jv
bGxUaW1lckRlbGF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMubW0KaW5kZXggMzhkYTMzNC4uY2JlZDg0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtMjI2LDYgKzIyNiwy
OSBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjp1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25z
dAogI2VuZGlmCiB9CiAKKyNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCitzdGF0aWMgaW5s
aW5lIHdrU2Nyb2xsZXJLbm9iU3R5bGUgdG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKFNjcm9s
bGJhck92ZXJsYXlTdHlsZSBzdHlsZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgICAg
IGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGFyazoKKyAgICAgICAgICAgIHJldHVybiB3a1Nj
cm9sbGVyS25vYlN0eWxlRGFyazsKKyAgICAgICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVM
aWdodDoKKyAgICAgICAgICAgIHJldHVybiB3a1Njcm9sbGVyS25vYlN0eWxlTGlnaHQ7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHlsZURlZmF1
bHQ7CisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNj
cm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyNpZiBVU0UoV0tf
U0NST0xMQkFSX1BBSU5URVIpCisgICAgd2tTZXRTY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKHBh
aW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKSwgdG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxl
KHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkpKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNjcm9sbGJhcik7CisjZW5kaWYKK30KKwogZG91Ymxl
IFNjcm9sbGJhclRoZW1lTWFjOjppbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKQogewogICAg
IHJldHVybiBnSW5pdGlhbEJ1dHRvbkRlbGF5OwpAQCAtNDMyLDIwICs0NTUsNiBAQCBzdGF0aWMg
aW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQgcGFydCkKICAg
ICB9CiB9CiAKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi1zdGF0aWMgaW5saW5lIHdr
U2Nyb2xsZXJLbm9iU3R5bGUgdG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKFNjcm9sbGJhck92
ZXJsYXlTdHlsZSBzdHlsZSkKLXsKLSAgICBzd2l0Y2ggKHN0eWxlKSB7Ci0gICAgY2FzZSBTY3Jv
bGxiYXJPdmVybGF5U3R5bGVEYXJrOgotICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHls
ZURhcms7Ci0gICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDoKLSAgICAgICAgcmV0
dXJuIHdrU2Nyb2xsZXJLbm9iU3R5bGVMaWdodDsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm4gd2tTY3JvbGxlcktub2JTdHlsZURlZmF1bHQ7Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQg
U2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJh
cikKIHsKICNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCkBAIC00ODAsMTAgKzQ4OSw2IEBA
IGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAgCiAgICAgU2Nyb2xsQW5pbWF0b3JNYWMqIHNj
cm9sbEFuaW1hdG9yID0gc3RhdGljX2Nhc3Q8U2Nyb2xsQW5pbWF0b3JNYWMqPihzY3JvbGxiYXIt
PnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbEFuaW1hdG9yKCkpOwogICAgIHNjcm9sbEFuaW1hdG9y
LT5zZXRJc0RyYXdpbmdJbnRvTGF5ZXIoY29udGV4dC0+aXNDQUxheWVyQ29udGV4dCgpKTsKLQot
I2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICB3a1NldFNjcm9sbGJhclBhaW50ZXJL
bm9iU3R5bGUocGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIpLCB0b1Njcm9sbGJhclBhaW50
ZXJLbm9iU3R5bGUoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5yZWNvbW1lbmRlZFNjcm9s
bGJhck92ZXJsYXlTdHlsZSgpKSk7Ci0jZW5kaWYKICAgICAKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRleHQtPmNsaXAoZGFtYWdl
UmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDVkZDVjNDAu
LjE3ZTMwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0zMzcs
NiArMzM3LDggQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgICAgICB9CisK
KyAgICAgICAgZnJhbWUoKS0+dmlldygpLT5yZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHls
ZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDk4YThlYmMuLjZmMGI0OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wNy0xOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KKworICAgICAgICBTY3JvbGxiYXIgY29sb3IgaGV1cmlzdGljIG5lZWRz
IHRvIGJlIGhvb2tlZCB1cCBpbiBXZWJLaXQxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NDIyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN0b3JlIHRoZSBzY3JvbGxlciBzdHlsZSBvbiBTY3JvbGxhYmxl
QXJlYSwgYW5kIHJlY29tcHV0ZSBpdCB3aGVuZXZlcgorICAgICAgICB0aGUgZG9jdW1lbnQgb3Ig
Ym9keSBlbGVtZW50IGJhY2tncm91bmQgY29sb3IgY2hhbmdlcyBvciB0aGUgYmFzZSBiYWNrZ3Jv
dW5kCisgICAgICAgIGNvbG9yIG9mIHRoZSBzY3JvbGx2aWV3IGNoYW5nZXMuIEFsc28sIG1ha2Ug
c3VyZSB0byByZXBhaW50IHRoZSBzY3JvbGxiYXJzCisgICAgICAgIHdoZW5ldmVyIHRoZSBzdHls
ZSBjaGFuZ2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKToK
KwogMjAxMS0wNy0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1ha2UgdXNpbmcgbG93ZXJjYXNlIHBhcmFtZXRlciBuYW1lcyBmb3IgQXBwbGVDb25u
ZWN0IGJlIGEgcGx1Zy1pbiBxdWlyawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNDZmOTllMy4uOTJhYWRjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC01NjEsNyArNTYxLDEy
IEBAIGJvb2wgV2ViRnJhbWU6OmdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKGRvdWJsZSogcmVk
LCBkb3VibGUqIGdyZWVuLCBkb3VibGUqIGJsCiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENvbG9yIGJnQ29sb3IgPSBtX2NvcmVGcmFtZS0+Z2V0
RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKKworICAgIEZyYW1lVmlldyogdmlldyA9IG1fY29y
ZUZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBDb2xvciBiZ0NvbG9yID0gdmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKICAg
ICBpZiAoIWJnQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLS0gCjEu
Ny40LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101213</attachid>
            <date>2011-07-18 15:05:59 -0700</date>
            <delta_ts>2011-07-18 15:40:03 -0700</delta_ts>
            <desc>same as last + radar URL</desc>
            <filename>0001-Scrollbar-color-heuristic-needs-to-be-hooked-up-in-W.patch</filename>
            <type>text/plain</type>
            <size>23530</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">RnJvbSA0NjQyNzQ1OGViNmM0YzM5ZDZlOTRmNjA5YjMzM2VjZmRjYTc3ZTJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW0gSG9ydG9uIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CkRhdGU6IE1vbiwgMTggSnVsIDIwMTEgMTU6MDI6MDMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBT
Y3JvbGxiYXIgY29sb3IgaGV1cmlzdGljIG5lZWRzIHRvIGJlIGhvb2tlZCB1cCBpbiBXZWJLaXQx
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyMjAKIDxyZGFyOi8v
cHJvYmxlbS85NTg5MTQwPgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTdG9yZSB0aGUg
c2Nyb2xsZXIgc3R5bGUgb24gU2Nyb2xsYWJsZUFyZWEsIGFuZCByZWNvbXB1dGUgaXQgd2hlbmV2
ZXIKdGhlIGRvY3VtZW50IG9yIGJvZHkgZWxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIGNoYW5nZXMg
b3IgdGhlIGJhc2UgYmFja2dyb3VuZApjb2xvciBvZiB0aGUgc2Nyb2xsdmlldyBjaGFuZ2VzLiBB
bHNvLCBtYWtlIHN1cmUgdG8gcmVwYWludCB0aGUgc2Nyb2xsYmFycwp3aGVuZXZlciB0aGUgc3R5
bGUgY2hhbmdlcy4KCk5vIG5ldyB0ZXN0cywgc2luY2UgdGhpcyBjb2RlIGlzIG9ubHkgZW5hYmxl
ZCBvbiBmdXR1cmUgdmVyc2lvbnMgb2YgTWFjIE9TIFguCi0tLQogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NCArKysrKysrKysrKysrCiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAgICAgICAgICAgfCAgIDQwIC0t
LS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMiAtCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgICAgICAgICAg
ICAgICAgfCAgIDc1ICsrKysrKysrKysrKysrKysrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmggICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwICAgICAgICAgICB8ICAgMTEgKysrCiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggICAgICAgICAgICAgfCAgICAzICsKIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCAgICAgICB8ICAgMTEgKysrCiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oICAgICAgICAgfCAgICA1ICstCiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oICAgICAgICAgfCAgICAxICsKIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tICAgICB8ICAgMTcgKysr
KysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oICB8ICAg
IDEgKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIHwg
ICA0MSArKysrKysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
ICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxNiArKysrKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcCAgIHwgICAgNyArKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDIwNCBpbnNl
cnRpb25zKCspLCA3OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU5NjViYS4uOWVkZjY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDExLTA3LTE4ICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbGJhciBjb2xvciBoZXVy
aXN0aWMgbmVlZHMgdG8gYmUgaG9va2VkIHVwIGluIFdlYktpdDEKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjIwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS85NTg5MTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFN0b3JlIHRoZSBzY3JvbGxlciBzdHlsZSBvbiBTY3JvbGxhYmxlQXJlYSwgYW5kIHJl
Y29tcHV0ZSBpdCB3aGVuZXZlcgorICAgICAgICB0aGUgZG9jdW1lbnQgb3IgYm9keSBlbGVtZW50
IGJhY2tncm91bmQgY29sb3IgY2hhbmdlcyBvciB0aGUgYmFzZSBiYWNrZ3JvdW5kCisgICAgICAg
IGNvbG9yIG9mIHRoZSBzY3JvbGx2aWV3IGNoYW5nZXMuIEFsc28sIG1ha2Ugc3VyZSB0byByZXBh
aW50IHRoZSBzY3JvbGxiYXJzCisgICAgICAgIHdoZW5ldmVyIHRoZSBzdHlsZSBjaGFuZ2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgdGhpcyBjb2RlIGlzIG9ubHkgZW5hYmxlZCBv
biBmdXR1cmUgdmVyc2lvbnMgb2YgTWFjIE9TIFguCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5p
bjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpn
ZXREb2N1bWVudEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
cmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpzZXRCYXNlQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IpOiBSZW5hbWVkLgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsYmFy
T3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dG9OU1Njcm9s
bGVyS25vYlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFy
VGhlbWVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjp0b1Njcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpzdHlsZURpZENoYW5nZSk6CisKIDIwMTEtMDctMTggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhu
ZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBKU0MgdG8gcmVwbGFjZSBKU0Nl
bGw6Om9wZXJhdG9yIG5ldyB3aXRoIHN0YXRpYyBjcmVhdGUgbWV0aG9kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IDM1MzIwZmYuLjY3YmQwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMjMy
LDcgKzEyMzIsNiBAQCBfX1pOSzdXZWJDb3JlNUZyYW1lMTRzZWxlY3Rpb25JbWFnZUViCiBfX1pO
SzdXZWJDb3JlNUZyYW1lMTVjb250ZW50UmVuZGVyZXJFdgogX19aTks3V2ViQ29yZTVGcmFtZTE1
bGF5ZXJUcmVlQXNUZXh0RWIKIF9fWk5LN1dlYkNvcmU1RnJhbWUxOGRvY3VtZW50VHlwZVN0cmlu
Z0V2Ci1fX1pOSzdXZWJDb3JlNUZyYW1lMjZnZXREb2N1bWVudEJhY2tncm91bmRDb2xvckV2CiBf
X1pOSzdXZWJDb3JlNUZyYW1lMzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNX
VEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTVGcmFtZThzZXR0aW5nc0V2CiBfX1pOSzdXZWJDb3Jl
NUZyYW1lOWRvbVdpbmRvd0V2CkBAIC0xMzI1LDYgKzEzMjQsNyBAQCBfX1pOSzdXZWJDb3JlOUZy
YW1lVmlldzEzcGFpbnRCZWhhdmlvckV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzE5YmFzZUJh
Y2tncm91bmRDb2xvckV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzIwaXNTb2Z0d2FyZVJlbmRl
cmFibGVFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcyMndpbmRvd0NsaXBSZWN0Rm9yTGF5ZXJF
UEtOU18xMVJlbmRlckxheWVyRWIKK19fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MjNkb2N1bWVudEJh
Y2tncm91bmRDb2xvckV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzI4aXNFbmNsb3NlZEluQ29t
cG9zaXRpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlOVBhZ2VDYWNoZTEwZnJhbWVDb3VudEV2CiBf
X1pOSzdXZWJDb3JlOVBhZ2VDYWNoZTIxYXV0b3JlbGVhc2VkUGFnZUNvdW50RXYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggMWIyZTFhNi4uZjNhYWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAg
LTUwNyw0NiArNTA3LDYgQEAgU3RyaW5nIEZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVtZW50
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqIGUKICAgICAKICAgICByZXR1
cm4gbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGxhYmVscywgZWxlbWVudC0+Z2V0QXR0cmlidXRl
KGlkQXR0cikpOwogfQotICAgIAotQ29sb3IgRnJhbWU6OmdldERvY3VtZW50QmFja2dyb3VuZENv
bG9yKCkgY29uc3QKLXsKLSAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU5NTQwPiBXZSBibGVuZCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgotICAgIC8vIHRo
ZSBkb2N1bWVudCBhbmQgdGhlIGJvZHkgYWdhaW5zdCB0aGUgYmFzZSBiYWNrZ3JvdW5kIGNvbG9y
IG9mIHRoZSBmcmFtZSB2aWV3LgotICAgIC8vIEJhY2tncm91bmQgaW1hZ2VzIGFyZSB1bmZvcnR1
bmF0ZWx5IGltcHJhY3RpY2FsIHRvIGluY2x1ZGUuCi0KLSAgICAvLyBSZXR1cm4gaW52YWxpZCBD
b2xvciBvYmplY3RzIHdoZW5ldmVyIHRoZXJlIGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi4K
LSAgICBpZiAoIW1fZG9jKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAgIEVsZW1lbnQq
IGh0bWxFbGVtZW50ID0gbV9kb2MtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIEVsZW1lbnQqIGJv
ZHlFbGVtZW50ID0gbV9kb2MtPmJvZHkoKTsKLQotICAgIC8vIHN0YXJ0IGFzIGludmFsaWQgY29s
b3JzCi0gICAgQ29sb3IgaHRtbEJhY2tncm91bmRDb2xvcjsKLSAgICBDb2xvciBib2R5QmFja2dy
b3VuZENvbG9yOwotICAgIGlmIChodG1sRWxlbWVudCAmJiBodG1sRWxlbWVudC0+cmVuZGVyZXIo
KSkKLSAgICAgICAgaHRtbEJhY2tncm91bmRDb2xvciA9IGh0bWxFbGVtZW50LT5yZW5kZXJlcigp
LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwotICAgIGlmIChib2R5RWxlbWVudCAmJiBib2R5RWxlbWVudC0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgYm9keUJhY2tncm91bmRDb2xvciA9IGJvZHlFbGVtZW50LT5yZW5kZXJlcigpLT5zdHls
ZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwot
ICAgIAotICAgIGlmICghYm9keUJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAg
aWYgKCFodG1sQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBD
b2xvcigpOwotICAgICAgICByZXR1cm4gdmlldygpLT5iYXNlQmFja2dyb3VuZENvbG9yKCkuYmxl
bmQoaHRtbEJhY2tncm91bmRDb2xvcik7Ci0gICAgfQotICAgIAotICAgIGlmICghaHRtbEJhY2tn
cm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB2aWV3KCktPmJhc2VCYWNrZ3Jv
dW5kQ29sb3IoKS5ibGVuZChib2R5QmFja2dyb3VuZENvbG9yKTsKLSAgICAKLSAgICAvLyBXZSB0
YWtlIHRoZSBhZ2dyZWdhdGUgb2YgdGhlIGJhc2UgYmFja2dyb3VuZCBjb2xvcgotICAgIC8vIHRo
ZSA8aHRtbD4gYmFja2dyb3VuZCBjb2xvciwgYW5kIHRoZSA8Ym9keT4KLSAgICAvLyBiYWNrZ3Jv
dW5kIGNvbG9yIHRvIGZpbmQgdGhlIGRvY3VtZW50IGNvbG9yLiBUaGUKLSAgICAvLyBhZGRpdGlv
biBvZiB0aGUgYmFzZSBiYWNrZ3JvdW5kIGNvbG9yIGlzIG5vdAotICAgIC8vIHRlY2huaWNhbGx5
IHBhcnQgb2YgdGhlIGRvY3VtZW50IGJhY2tncm91bmQsIGJ1dCBpdAotICAgIC8vIG90aGVyd2lz
ZSBwb3NlcyBwcm9ibGVtcyB3aGVuIHRoZSBhZ2dyZWdhdGUgaXMgbm90Ci0gICAgLy8gZnVsbHkg
b3BhcXVlLgotICAgIHJldHVybiB2aWV3KCktPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKS5ibGVuZCho
dG1sQmFja2dyb3VuZENvbG9yKS5ibGVuZChib2R5QmFja2dyb3VuZENvbG9yKTsKLX0KIAogdm9p
ZCBGcmFtZTo6c2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgRmxvYXRTaXplJiBwYWdl
U2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBBZGp1c3RWaWV3U2l6ZU9yTm90IHNob3Vs
ZEFkanVzdFZpZXdTaXplKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDk1MGE3M2YuLjY0ODZjMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE5Miw4ICsxOTIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFN0cmluZyBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Np
b24qLCBIVE1MVGFibGVDZWxsRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3Rh
cnRPZkNlbGwpOwogICAgICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50Kiwgc2l6ZV90KiByZXN1bHREaXN0
YW5jZSwgYm9vbCogcmVzdWx0SXNJbkNlbGxBYm92ZSk7CiAgICAgICAgIFN0cmluZyBtYXRjaExh
YmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQq
KTsKLQotICAgICAgICBDb2xvciBnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0Owog
ICAgICAgICAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIE5TU3RyaW5nKiBzZWFyY2hGb3JM
YWJlbHNCZWZvcmVFbGVtZW50KE5TQXJyYXkqIGxhYmVscywgRWxlbWVudCosIHNpemVfdCogcmVz
dWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCmluZGV4IGZjMzMwOTguLjNmNmVlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTMyNSwyMSArMzI1LDI0IEBAIHZvaWQgRnJhbWVWaWV3Ojp3aWxsUmVtb3ZlSG9y
aXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlV2hlZWxFdmVudEhhbmRsZXIoKTsKIH0KIAotU2Nyb2xsYmFy
T3ZlcmxheVN0eWxlIEZyYW1lVmlldzo6cmVjb21tZW5kZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUo
KSBjb25zdAordm9pZCBGcmFtZVZpZXc6OnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KCkKIHsKLSAgICBDb2xvciBiZ0NvbG9yID0gbV9mcmFtZS0+Z2V0RG9jdW1lbnRCYWNrZ3JvdW5k
Q29sb3IoKTsKLSAgICBpZiAoIWJnQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDsKLSAgICAKLSAgICAvLyBSZWR1Y2UgdGhlIGJhY2tn
cm91bmQgY29sb3IgZnJvbSBSR0IgdG8gYSBsaWdodG5lc3MgdmFsdWUKLSAgICAvLyBhbmQgZGV0
ZXJtaW5lIHdoaWNoIHNjcm9sbGJhciBzdHlsZSB0byB1c2UgYmFzZWQgb24gYSBsaWdodG5lc3MK
LSAgICAvLyBoZXVyaXN0aWMuCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNz
OwotICAgIGJnQ29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKLSAgICBp
ZiAobGlnaHRuZXNzID4gLjUpCi0gICAgICAgIHJldHVybiBTY3JvbGxiYXJPdmVybGF5U3R5bGVE
ZWZhdWx0OwotICAgIAotICAgIHJldHVybiBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDsKKyAg
ICBTY3JvbGxiYXJPdmVybGF5U3R5bGUgb2xkT3ZlcmxheVN0eWxlID0gc2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKCk7CisgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG92ZXJsYXlTdHlsZSA9IFNjcm9s
bGJhck92ZXJsYXlTdHlsZURlZmF1bHQ7CisKKyAgICBDb2xvciBiZ0NvbG9yID0gZG9jdW1lbnRC
YWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBpZiAoYmdDb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAg
Ly8gUmVkdWNlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gUkdCIHRvIGEgbGlnaHRuZXNzIHZh
bHVlCisgICAgICAgIC8vIGFuZCBkZXRlcm1pbmUgd2hpY2ggc2Nyb2xsYmFyIHN0eWxlIHRvIHVz
ZSBiYXNlZCBvbiBhIGxpZ2h0bmVzcworICAgICAgICAvLyBoZXVyaXN0aWMuCisgICAgICAgIGRv
dWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKKyAgICAgICAgYmdDb2xvci5nZXRIU0wo
aHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAgICAgICBpZiAobGlnaHRuZXNzIDw9IC41
KQorICAgICAgICAgICAgb3ZlcmxheVN0eWxlID0gU2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ7
CisgICAgfQorCisgICAgaWYgKG9sZE92ZXJsYXlTdHlsZSAhPSBvdmVybGF5U3R5bGUpCisgICAg
ICAgIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShvdmVybGF5U3R5bGUpOwogfQogCiB2b2lkIEZy
YW1lVmlldzo6Y2xlYXIoKQpAQCAtMTg5NSw2ICsxODk4LDggQEAgdm9pZCBGcmFtZVZpZXc6OnNl
dEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKICAgICAg
ICAgbV9iYXNlQmFja2dyb3VuZENvbG9yID0gQ29sb3I6OndoaXRlOwogICAgIGVsc2UKICAgICAg
ICAgbV9iYXNlQmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yOworCisgICAgcmVjYWxj
dWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnVwZGF0
ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29s
IHRyYW5zcGFyZW50KQpAQCAtMjM2Nyw2ICsyMzcyLDQ4IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWlu
dFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNv
cm5lCiAgICAgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVj
dCk7CiB9CiAKK0NvbG9yIEZyYW1lVmlldzo6ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dAoreworICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk1
NDA+IFdlIGJsZW5kIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mCisgICAgLy8gdGhlIGRvY3VtZW50
IGFuZCB0aGUgYm9keSBhZ2FpbnN0IHRoZSBiYXNlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGZy
YW1lIHZpZXcuCisgICAgLy8gQmFja2dyb3VuZCBpbWFnZXMgYXJlIHVuZm9ydHVuYXRlbHkgaW1w
cmFjdGljYWwgdG8gaW5jbHVkZS4KKworICAgIC8vIFJldHVybiBpbnZhbGlkIENvbG9yIG9iamVj
dHMgd2hlbmV2ZXIgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGluZm9ybWF0aW9uLgorICAgIGlmICgh
ZnJhbWUoKS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBmcmFt
ZSgpLT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKKyAgICBFbGVtZW50KiBo
dG1sRWxlbWVudCA9IGZyYW1lKCktPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworICAg
IEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Ym9keSgpOworCisg
ICAgLy8gc3RhcnQgYXMgaW52YWxpZCBjb2xvcnMKKyAgICBDb2xvciBodG1sQmFja2dyb3VuZENv
bG9yOworICAgIENvbG9yIGJvZHlCYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKGh0bWxFbGVtZW50
ICYmIGh0bWxFbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICBodG1sQmFja2dyb3VuZENvbG9y
ID0gaHRtbEVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgaWYgKGJvZHlFbGVtZW50ICYmIGJv
ZHlFbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICBib2R5QmFja2dyb3VuZENvbG9yID0gYm9k
eUVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisKKyAgICBpZiAoIWJvZHlCYWNrZ3JvdW5kQ29sb3Iu
aXNWYWxpZCgpKSB7CisgICAgICAgIGlmICghaHRtbEJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkp
CisgICAgICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAgICAgcmV0dXJuIGJhc2VCYWNrZ3Jv
dW5kQ29sb3IoKS5ibGVuZChodG1sQmFja2dyb3VuZENvbG9yKTsKKyAgICB9CisKKyAgICBpZiAo
IWh0bWxCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gYmFzZUJhY2tn
cm91bmRDb2xvcigpLmJsZW5kKGJvZHlCYWNrZ3JvdW5kQ29sb3IpOworCisgICAgLy8gV2UgdGFr
ZSB0aGUgYWdncmVnYXRlIG9mIHRoZSBiYXNlIGJhY2tncm91bmQgY29sb3IKKyAgICAvLyB0aGUg
PGh0bWw+IGJhY2tncm91bmQgY29sb3IsIGFuZCB0aGUgPGJvZHk+CisgICAgLy8gYmFja2dyb3Vu
ZCBjb2xvciB0byBmaW5kIHRoZSBkb2N1bWVudCBjb2xvci4gVGhlCisgICAgLy8gYWRkaXRpb24g
b2YgdGhlIGJhc2UgYmFja2dyb3VuZCBjb2xvciBpcyBub3QKKyAgICAvLyB0ZWNobmljYWxseSBw
YXJ0IG9mIHRoZSBkb2N1bWVudCBiYWNrZ3JvdW5kLCBidXQgaXQKKyAgICAvLyBvdGhlcndpc2Ug
cG9zZXMgcHJvYmxlbXMgd2hlbiB0aGUgYWdncmVnYXRlIGlzIG5vdAorICAgIC8vIGZ1bGx5IG9w
YXF1ZS4KKyAgICByZXR1cm4gYmFzZUJhY2tncm91bmRDb2xvcigpLmJsZW5kKGh0bWxCYWNrZ3Jv
dW5kQ29sb3IpLmJsZW5kKGJvZHlCYWNrZ3JvdW5kQ29sb3IpOworfQorCiBib29sIEZyYW1lVmll
dzo6aGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0CiB7CiAgICAgY29uc3QgSGFzaFNldDxSZWZQ
dHI8V2lkZ2V0PiA+KiB2aWV3Q2hpbGRyZW4gPSBjaGlsZHJlbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKaW5kZXggZjgyODMxOS4uMDM2YjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBA
IC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRTY3JvbGxiYXJzKCk7CiAg
ICAgdm9pZCByZXNldFNjcm9sbGJhcnNBbmRDbGVhckNvbnRlbnRzU2l6ZSgpOwogICAgIHZvaWQg
ZGV0YWNoQ3VzdG9tU2Nyb2xsYmFycygpOwotICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlIHJlY29tbWVuZGVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIHJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7CiAKICAgICB2b2lkIGNs
ZWFyKCk7CiAKQEAgLTIyMiw2ICsyMjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9u
dGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29u
c3QgSW50UmVjdCYgZGlydHlSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAKKyAgICBD
b2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0OworCiAgICAgc3RhdGljIGRvdWJs
ZSBjdXJyZW50UGFpbnRUaW1lU3RhbXAoKSB7IHJldHVybiBzQ3VycmVudFBhaW50VGltZVN0YW1w
OyB9IC8vIHJldHVybnMgMCBpZiBub3QgcGFpbnRpbmcKICAgICAKICAgICB2b2lkIHVwZGF0ZUxh
eW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAKaW5kZXggZjRkMDYzNC4uOTI0ZGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKQEAgLTc3OSw2ICs3NzksMTcgQEAgU2Nyb2xsYmFyKiBTY3JvbGxW
aWV3OjpzY3JvbGxiYXJBdFBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkKICAgICBy
ZXR1cm4gMDsKIH0KIAordm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUo
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG92ZXJsYXlTdHlsZSkKK3sKKyAgICBTY3JvbGxhYmxlQXJl
YTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKG92ZXJsYXlTdHlsZSk7CisgICAgcGxhdGZvcm1T
ZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUob3ZlcmxheVN0eWxlKTsKKworICAgIGlmIChob3Jpem9u
dGFsU2Nyb2xsYmFyKCkpCisgICAgICAgIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpLT51
cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoaG9yaXpvbnRhbFNjcm9sbGJhcigpKTsKKyAgICBp
ZiAodmVydGljYWxTY3JvbGxiYXIoKSkKKyAgICAgICAgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRo
ZW1lKCktPnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSh2ZXJ0aWNhbFNjcm9sbGJhcigpKTsK
K30KKwogdm9pZCBTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYgZSkK
IHsKICAgICAvLyBXZSBkb24ndCBhbGxvdyBtb3VzZSB3aGVlbGluZyB0byBoYXBwZW4gaW4gYSBT
Y3JvbGxWaWV3IHRoYXQgaGFzIGhhZCBpdHMgc2Nyb2xsYmFycyBleHBsaWNpdGx5IGRpc2FibGVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDE3YmI4ZWIuLjlmYWVhOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTEwOCw2ICsxMDgsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSk7CisKICAgICAvLyBCeSBkZWZhdWx0IHlvdSBv
bmx5IHJlY2VpdmUgcGFpbnQgZXZlbnRzIGZvciB0aGUgYXJlYSB0aGF0IGlzIHZpc2libGUuIElu
IHRoZSBjYXNlIG9mIHVzaW5nIGEKICAgICAvLyB0aWxlZCBiYWNraW5nIHN0b3JlLCB0aGlzIGZ1
bmN0aW9uIGNhbiBiZSBzZXQsIHNvIHRoYXQgdGhlIHZpZXcgcGFpbnRzIHRoZSBlbnRpcmUgY29u
dGVudHMuCiAgICAgYm9vbCBwYWludHNFbnRpcmVDb250ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
cGFpbnRzRW50aXJlQ29udGVudHM7IH0KQEAgLTM4OSw2ICszOTEsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1TZXRTY3JvbGxiYXJzU3VwcHJlc3NlZChib29sIHJlcGFpbnRPblVuc3Vw
cHJlc3MpOwogICAgIHZvaWQgcGxhdGZvcm1SZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJ
bnRSZWN0JiwgYm9vbCBub3cpOwogICAgIGJvb2wgcGxhdGZvcm1Jc09mZnNjcmVlbigpIGNvbnN0
OworICAgIHZvaWQgcGxhdGZvcm1TZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKTsKICAgIAogICAgIHZvaWQgcGxhdGZvcm1TZXRTY3JvbGxPcmlnaW4oY29uc3Qg
SW50UG9pbnQmLCBib29sIHVwZGF0ZVBvc2l0aW9uQXRBbGwsIGJvb2wgdXBkYXRlUG9zaXRpb25T
eW5jaHJvbm91c2x5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCmluZGV4IGY4ZTQwYTIuLjMzNTUwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAKQEAgLTIwNSw2ICsyMDUsMTcgQEAgYm9vbCBTY3JvbGxhYmxlQXJl
YTo6aGFzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAogICAgICAgICB8fCAoaG9yaXpvbnRhbFNj
cm9sbGJhcigpICYmIGhvcml6b250YWxTY3JvbGxiYXIoKS0+aXNPdmVybGF5U2Nyb2xsYmFyKCkp
OwogfQogCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlIG92ZXJsYXlTdHlsZSkKK3sKKyAgICBtX3Njcm9sbGJhck92ZXJs
YXlTdHlsZSA9IG92ZXJsYXlTdHlsZTsKKworICAgIGlmIChob3Jpem9udGFsU2Nyb2xsYmFyKCkp
CisgICAgICAgIGhvcml6b250YWxTY3JvbGxiYXIoKS0+aW52YWxpZGF0ZSgpOworCisgICAgaWYg
KHZlcnRpY2FsU2Nyb2xsYmFyKCkpCisgICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyKCktPmludmFs
aWRhdGUoKTsKK30KKwogYm9vbCBTY3JvbGxhYmxlQXJlYTo6aXNQaW5uZWRJbkRpcmVjdGlvbihj
b25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkgY29uc3QKIHsKICAgICBpZiAoc2Nyb2xsRGVsdGEu
d2lkdGgoKSA8IDAgJiYgaXNIb3Jpem9udGFsU2Nyb2xsZXJQaW5uZWRUb01pbmltdW1Qb3NpdGlv
bigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggMDJkYjc4
NC4uYTk4ZjIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBA
IC03Nyw3ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZUhvcml6
b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAKICAgICBib29sIGhhc092ZXJsYXlTY3JvbGxi
YXJzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JvbGxiYXJPdmVybGF5U3R5bGUgcmVjb21tZW5k
ZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXJPdmVybGF5
U3R5bGVEZWZhdWx0OyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhck92ZXJsYXlTdHls
ZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpOworICAgIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzY3Jv
bGxiYXJPdmVybGF5U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhck92ZXJsYXlTdHls
ZTsgfQogCiAgICAgU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFuaW1hdG9yKCkgY29uc3Q7CiAgICAg
Y29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT3Jp
Z2luOyB9CkBAIC0xNjgsNiArMTY5LDggQEAgcHJpdmF0ZToKICAgICBTY3JvbGxFbGFzdGljaXR5
IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5OwogICAgIFNjcm9sbEVsYXN0aWNpdHkgbV9ob3Jp
em9udGFsU2Nyb2xsRWxhc3RpY2l0eTsKIAorICAgIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBtX3Nj
cm9sbGJhck92ZXJsYXlTdHlsZTsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0Jikg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKaW5kZXggZWQzNmY5
MC4uZGQzYzVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBA
IC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRy
b2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHVzZXNP
dmVybGF5U2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqKSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKSB7fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQppbmRleCBmZjJlMTRlLi5hZWRlZThiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQpAQCAtMjAzLDYgKzIw
MywyMyBAQCBib29sIFNjcm9sbFZpZXc6OnBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdAogICAg
IHJldHVybiAhW3BsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSB8fCAhW1twbGF0Zm9ybVdpZGdldCgp
IHdpbmRvd10gaXNWaXNpYmxlXTsKIH0KIAorc3RhdGljIGlubGluZSBOU1Njcm9sbGVyS25vYlN0
eWxlIHRvTlNTY3JvbGxlcktub2JTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUgc3R5bGUpCit7
CisgICAgc3dpdGNoIChzdHlsZSkgeworICAgICAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHls
ZURhcms6CisgICAgICAgICAgICByZXR1cm4gTlNTY3JvbGxlcktub2JTdHlsZURhcms7CisgICAg
ICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ6CisgICAgICAgICAgICByZXR1cm4g
TlNTY3JvbGxlcktub2JTdHlsZUxpZ2h0OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIE5TU2Nyb2xsZXJLbm9iU3R5bGVEZWZhdWx0OworICAgIH0KK30KKwordm9pZCBTY3Jv
bGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5
U3R5bGUgb3ZlcmxheVN0eWxlKQoreworICAgIFtzY3JvbGxWaWV3KCkgc2V0U2Nyb2xsZXJLbm9i
U3R5bGU6dG9OU1Njcm9sbGVyS25vYlN0eWxlKG92ZXJsYXlTdHlsZSldOworfQorCiB2b2lkIFNj
cm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50JiBvcmlnaW4s
IGJvb2wgdXBkYXRlUG9zaXRpb25BdEFsbCwgYm9vbCB1cGRhdGVQb3NpdGlvblN5bmNocm9ub3Vz
bHkpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAppbmRleCA5NzdhNjdkLi5mYmIy
Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhl
bWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMuaApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhciopOwogCiAgICAgdmlydHVhbCBkb3Vi
bGUgaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7CiAgICAgdmlydHVhbCBkb3VibGUgYXV0
b3Njcm9sbFRpbWVyRGVsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCAzOGRhMzM0Li5jYmVkODRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBAIC0yMjYsNiAr
MjI2LDI5IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnVzZXNPdmVybGF5U2Nyb2xsYmFycygp
IGNvbnN0CiAjZW5kaWYKIH0KIAorI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKK3N0YXRp
YyBpbmxpbmUgd2tTY3JvbGxlcktub2JTdHlsZSB0b1Njcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUo
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAg
ICAgICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEYXJrOgorICAgICAgICAgICAgcmV0dXJu
IHdrU2Nyb2xsZXJLbm9iU3R5bGVEYXJrOworICAgICAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlT
dHlsZUxpZ2h0OgorICAgICAgICAgICAgcmV0dXJuIHdrU2Nyb2xsZXJLbm9iU3R5bGVMaWdodDsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiB3a1Njcm9sbGVyS25vYlN0eWxl
RGVmYXVsdDsKKyAgICB9Cit9CisjZW5kaWYKKwordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBk
YXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoreworI2lmIFVT
RShXS19TQ1JPTExCQVJfUEFJTlRFUikKKyAgICB3a1NldFNjcm9sbGJhclBhaW50ZXJLbm9iU3R5
bGUocGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIpLCB0b1Njcm9sbGJhclBhaW50ZXJLbm9i
U3R5bGUoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJPdmVybGF5U3R5bGUo
KSkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2Nyb2xsYmFyKTsKKyNlbmRpZgorfQorCiBk
b3VibGUgU2Nyb2xsYmFyVGhlbWVNYWM6OmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpCiB7
CiAgICAgcmV0dXJuIGdJbml0aWFsQnV0dG9uRGVsYXk7CkBAIC00MzIsMjAgKzQ1NSw2IEBAIHN0
YXRpYyBpbnQgc2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoU2Nyb2xsYmFyUGFydCBwYXJ0
KQogICAgIH0KIH0KIAotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLXN0YXRpYyBpbmxp
bmUgd2tTY3JvbGxlcktub2JTdHlsZSB0b1Njcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUoU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlIHN0eWxlKQotewotICAgIHN3aXRjaCAoc3R5bGUpIHsKLSAgICBjYXNl
IFNjcm9sbGJhck92ZXJsYXlTdHlsZURhcms6Ci0gICAgICAgIHJldHVybiB3a1Njcm9sbGVyS25v
YlN0eWxlRGFyazsKLSAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OgotICAgICAg
ICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHlsZUxpZ2h0OwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiB3a1Njcm9sbGVyS25vYlN0eWxlRGVmYXVsdDsKLSAgICB9Ci19Ci0jZW5kaWYKLQog
dm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQogewogI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKQEAgLTQ4MCwxMCArNDg5
LDYgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY28KICAgICAKICAgICBTY3JvbGxBbmltYXRvck1h
Yyogc2Nyb2xsQW5pbWF0b3IgPSBzdGF0aWNfY2FzdDxTY3JvbGxBbmltYXRvck1hYyo+KHNjcm9s
bGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsQW5pbWF0b3IoKSk7CiAgICAgc2Nyb2xsQW5p
bWF0b3ItPnNldElzRHJhd2luZ0ludG9MYXllcihjb250ZXh0LT5pc0NBTGF5ZXJDb250ZXh0KCkp
OwotCi0jaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQotICAgIHdrU2V0U2Nyb2xsYmFyUGFp
bnRlcktub2JTdHlsZShwYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhciksIHRvU2Nyb2xsYmFy
UGFpbnRlcktub2JTdHlsZShzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPnJlY29tbWVuZGVk
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkpKTsKLSNlbmRpZgogICAgIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CiAgICAgY29udGV4dC0+Y2xpcChk
YW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNWRk
NWM0MC4uMTdlMzAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTMzNyw2ICszMzcsOCBAQCB2b2lkIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAg
IH0KKworICAgICAgICBmcmFtZSgpLT52aWV3KCktPnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOThhOGViYy4uN2E1ZTg0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTA3LTE4ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbGJhciBjb2xvciBoZXVyaXN0aWMg
bmVlZHMgdG8gYmUgaG9va2VkIHVwIGluIFdlYktpdDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjIwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85
NTg5MTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN0b3JlIHRoZSBzY3JvbGxlciBzdHlsZSBvbiBTY3JvbGxhYmxlQXJlYSwgYW5kIHJlY29tcHV0
ZSBpdCB3aGVuZXZlcgorICAgICAgICB0aGUgZG9jdW1lbnQgb3IgYm9keSBlbGVtZW50IGJhY2tn
cm91bmQgY29sb3IgY2hhbmdlcyBvciB0aGUgYmFzZSBiYWNrZ3JvdW5kCisgICAgICAgIGNvbG9y
IG9mIHRoZSBzY3JvbGx2aWV3IGNoYW5nZXMuIEFsc28sIG1ha2Ugc3VyZSB0byByZXBhaW50IHRo
ZSBzY3JvbGxiYXJzCisgICAgICAgIHdoZW5ldmVyIHRoZSBzdHlsZSBjaGFuZ2VzLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OmdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKToKKwogMjAxMS0wNy0xOCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgdXNpbmcg
bG93ZXJjYXNlIHBhcmFtZXRlciBuYW1lcyBmb3IgQXBwbGVDb25uZWN0IGJlIGEgcGx1Zy1pbiBx
dWlyawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
aW5kZXggNDZmOTllMy4uOTJhYWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC01NjEsNyArNTYxLDEyIEBAIGJvb2wgV2ViRnJhbWU6
OmdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKGRvdWJsZSogcmVkLCBkb3VibGUqIGdyZWVuLCBk
b3VibGUqIGJsCiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIENvbG9yIGJnQ29sb3IgPSBtX2NvcmVGcmFtZS0+Z2V0RG9jdW1lbnRCYWNrZ3JvdW5k
Q29sb3IoKTsKKworICAgIEZyYW1lVmlldyogdmlldyA9IG1fY29yZUZyYW1lLT52aWV3KCk7Cisg
ICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDb2xvciBiZ0NvbG9y
ID0gdmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBpZiAoIWJnQ29sb3IuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLS0gCjEuNy40LjQKCg==
</data>
<flag name="commit-queue"
          id="96055"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101224</attachid>
            <date>2011-07-18 15:40:03 -0700</date>
            <delta_ts>2011-07-18 17:34:33 -0700</delta_ts>
            <desc>this time, without breaking all of the other platforms!</desc>
            <filename>0001-Scrollbar-color-heuristic-needs-to-be-hooked-up-in-W.patch</filename>
            <type>text/plain</type>
            <size>23772</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">RnJvbSA5NDIzYTQ1ZjlmNjk4YWJiM2U1ZmZkZWIzOTZhOTUwMDA5YzM4NWIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW0gSG9ydG9uIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CkRhdGU6IE1vbiwgMTggSnVsIDIwMTEgMTU6MDI6MDMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBT
Y3JvbGxiYXIgY29sb3IgaGV1cmlzdGljIG5lZWRzIHRvIGJlIGhvb2tlZCB1cCBpbiBXZWJLaXQx
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyMjAKIDxyZGFyOi8v
cHJvYmxlbS85NTg5MTQwPgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTdG9yZSB0aGUg
c2Nyb2xsZXIgc3R5bGUgb24gU2Nyb2xsYWJsZUFyZWEsIGFuZCByZWNvbXB1dGUgaXQgd2hlbmV2
ZXIKdGhlIGRvY3VtZW50IG9yIGJvZHkgZWxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIGNoYW5nZXMg
b3IgdGhlIGJhc2UgYmFja2dyb3VuZApjb2xvciBvZiB0aGUgc2Nyb2xsdmlldyBjaGFuZ2VzLiBB
bHNvLCBtYWtlIHN1cmUgdG8gcmVwYWludCB0aGUgc2Nyb2xsYmFycwp3aGVuZXZlciB0aGUgc3R5
bGUgY2hhbmdlcy4KCk5vIG5ldyB0ZXN0cywgc2luY2UgdGhpcyBjb2RlIGlzIG9ubHkgZW5hYmxl
ZCBvbiBmdXR1cmUgdmVyc2lvbnMgb2YgTWFjIE9TIFguCi0tLQogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NCArKysrKysrKysrKysrCiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAgICAgICAgICAgfCAgIDQwIC0t
LS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMiAtCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgICAgICAgICAg
ICAgICAgfCAgIDc1ICsrKysrKysrKysrKysrKysrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmggICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwICAgICAgICAgICB8ICAgMTUgKysrKwogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oICAgICAgICAgICAgIHwgICAgMyArCiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgICAgICAgfCAgIDExICsrKwogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCAgICAgICAgIHwgICAgNSArLQogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCAgICAgICAgIHwgICAgMSArCiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbSAgICAgfCAgIDE3ICsr
KysrCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaCAgfCAg
ICAxICsKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSB8
ICAgNDEgKysrKysrKy0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cCAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTYgKysrKysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAgICB8ICAgIDcgKystCiAxNyBmaWxlcyBjaGFuZ2VkLCAyMDggaW5z
ZXJ0aW9ucygrKSwgNzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRlOTY1YmEuLjllZGY2
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMS0wNy0xOCAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBTY3JvbGxiYXIgY29sb3IgaGV1
cmlzdGljIG5lZWRzIHRvIGJlIGhvb2tlZCB1cCBpbiBXZWJLaXQxCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDIyMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vOTU4OTE0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdG9yZSB0aGUgc2Nyb2xsZXIgc3R5bGUgb24gU2Nyb2xsYWJsZUFyZWEsIGFuZCBy
ZWNvbXB1dGUgaXQgd2hlbmV2ZXIKKyAgICAgICAgdGhlIGRvY3VtZW50IG9yIGJvZHkgZWxlbWVu
dCBiYWNrZ3JvdW5kIGNvbG9yIGNoYW5nZXMgb3IgdGhlIGJhc2UgYmFja2dyb3VuZAorICAgICAg
ICBjb2xvciBvZiB0aGUgc2Nyb2xsdmlldyBjaGFuZ2VzLiBBbHNvLCBtYWtlIHN1cmUgdG8gcmVw
YWludCB0aGUgc2Nyb2xsYmFycworICAgICAgICB3aGVuZXZlciB0aGUgc3R5bGUgY2hhbmdlcy4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIHNpbmNlIHRoaXMgY29kZSBpcyBvbmx5IGVuYWJsZWQg
b24gZnV0dXJlIHZlcnNpb25zIG9mIE1hYyBPUyBYLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
Z2V0RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6c2V0QmFzZUJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKTogUmVuYW1lZC4KKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNldFNjcm9sbGJh
ck92ZXJsYXlTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxiYXJPdmVybGF5U3R5bGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvTlNTY3Jv
bGxlcktub2JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNl
dFNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJh
clRoZW1lTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6dG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6c3R5bGVEaWRDaGFuZ2UpOgorCiAyMDExLTA3LTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFo
bmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgSlNDIHRvIHJlcGxhY2UgSlND
ZWxsOjpvcGVyYXRvciBuZXcgd2l0aCBzdGF0aWMgY3JlYXRlIG1ldGhvZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCAzNTMyMGZmLi42N2JkMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTIz
Miw3ICsxMjMyLDYgQEAgX19aTks3V2ViQ29yZTVGcmFtZTE0c2VsZWN0aW9uSW1hZ2VFYgogX19a
Tks3V2ViQ29yZTVGcmFtZTE1Y29udGVudFJlbmRlcmVyRXYKIF9fWk5LN1dlYkNvcmU1RnJhbWUx
NWxheWVyVHJlZUFzVGV4dEViCiBfX1pOSzdXZWJDb3JlNUZyYW1lMThkb2N1bWVudFR5cGVTdHJp
bmdFdgotX19aTks3V2ViQ29yZTVGcmFtZTI2Z2V0RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3JFdgog
X19aTks3V2ViQ29yZTVGcmFtZTMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04z
V1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU1RnJhbWU4c2V0dGluZ3NFdgogX19aTks3V2ViQ29y
ZTVGcmFtZTlkb21XaW5kb3dFdgpAQCAtMTMyNSw2ICsxMzI0LDcgQEAgX19aTks3V2ViQ29yZTlG
cmFtZVZpZXcxM3BhaW50QmVoYXZpb3JFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxOWJhc2VC
YWNrZ3JvdW5kQ29sb3JFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcyMGlzU29mdHdhcmVSZW5k
ZXJhYmxlRXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MjJ3aW5kb3dDbGlwUmVjdEZvckxheWVy
RVBLTlNfMTFSZW5kZXJMYXllckViCitfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzIzZG9jdW1lbnRC
YWNrZ3JvdW5kQ29sb3JFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcyOGlzRW5jbG9zZWRJbkNv
bXBvc2l0aW5nTGF5ZXJFdgogX19aTks3V2ViQ29yZTlQYWdlQ2FjaGUxMGZyYW1lQ291bnRFdgog
X19aTks3V2ViQ29yZTlQYWdlQ2FjaGUyMWF1dG9yZWxlYXNlZFBhZ2VDb3VudEV2CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCmluZGV4IDFiMmUxYTYuLmYzYWFlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBA
IC01MDcsNDYgKzUwNyw2IEBAIFN0cmluZyBGcmFtZTo6bWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVu
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50KiBlCiAgICAgCiAgICAgcmV0
dXJuIG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhsYWJlbHMsIGVsZW1lbnQtPmdldEF0dHJpYnV0
ZShpZEF0dHIpKTsKIH0KLSAgICAKLUNvbG9yIEZyYW1lOjpnZXREb2N1bWVudEJhY2tncm91bmRD
b2xvcigpIGNvbnN0Ci17Ci0gICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01OTU0MD4gV2UgYmxlbmQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YKLSAgICAvLyB0
aGUgZG9jdW1lbnQgYW5kIHRoZSBib2R5IGFnYWluc3QgdGhlIGJhc2UgYmFja2dyb3VuZCBjb2xv
ciBvZiB0aGUgZnJhbWUgdmlldy4KLSAgICAvLyBCYWNrZ3JvdW5kIGltYWdlcyBhcmUgdW5mb3J0
dW5hdGVseSBpbXByYWN0aWNhbCB0byBpbmNsdWRlLgotCi0gICAgLy8gUmV0dXJuIGludmFsaWQg
Q29sb3Igb2JqZWN0cyB3aGVuZXZlciB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgaW5mb3JtYXRpb24u
Ci0gICAgaWYgKCFtX2RvYykKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBFbGVtZW50
KiBodG1sRWxlbWVudCA9IG1fZG9jLT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBi
b2R5RWxlbWVudCA9IG1fZG9jLT5ib2R5KCk7Ci0KLSAgICAvLyBzdGFydCBhcyBpbnZhbGlkIGNv
bG9ycwotICAgIENvbG9yIGh0bWxCYWNrZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3IgYm9keUJhY2tn
cm91bmRDb2xvcjsKLSAgICBpZiAoaHRtbEVsZW1lbnQgJiYgaHRtbEVsZW1lbnQtPnJlbmRlcmVy
KCkpCi0gICAgICAgIGh0bWxCYWNrZ3JvdW5kQ29sb3IgPSBodG1sRWxlbWVudC0+cmVuZGVyZXIo
KS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKTsKLSAgICBpZiAoYm9keUVsZW1lbnQgJiYgYm9keUVsZW1lbnQtPnJlbmRlcmVyKCkpCi0g
ICAgICAgIGJvZHlCYWNrZ3JvdW5kQ29sb3IgPSBib2R5RWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsK
LSAgICAKLSAgICBpZiAoIWJvZHlCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAg
IGlmICghaHRtbEJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4g
Q29sb3IoKTsKLSAgICAgICAgcmV0dXJuIHZpZXcoKS0+YmFzZUJhY2tncm91bmRDb2xvcigpLmJs
ZW5kKGh0bWxCYWNrZ3JvdW5kQ29sb3IpOwotICAgIH0KLSAgICAKLSAgICBpZiAoIWh0bWxCYWNr
Z3JvdW5kQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdmlldygpLT5iYXNlQmFja2dy
b3VuZENvbG9yKCkuYmxlbmQoYm9keUJhY2tncm91bmRDb2xvcik7Ci0gICAgCi0gICAgLy8gV2Ug
dGFrZSB0aGUgYWdncmVnYXRlIG9mIHRoZSBiYXNlIGJhY2tncm91bmQgY29sb3IKLSAgICAvLyB0
aGUgPGh0bWw+IGJhY2tncm91bmQgY29sb3IsIGFuZCB0aGUgPGJvZHk+Ci0gICAgLy8gYmFja2dy
b3VuZCBjb2xvciB0byBmaW5kIHRoZSBkb2N1bWVudCBjb2xvci4gVGhlCi0gICAgLy8gYWRkaXRp
b24gb2YgdGhlIGJhc2UgYmFja2dyb3VuZCBjb2xvciBpcyBub3QKLSAgICAvLyB0ZWNobmljYWxs
eSBwYXJ0IG9mIHRoZSBkb2N1bWVudCBiYWNrZ3JvdW5kLCBidXQgaXQKLSAgICAvLyBvdGhlcndp
c2UgcG9zZXMgcHJvYmxlbXMgd2hlbiB0aGUgYWdncmVnYXRlIGlzIG5vdAotICAgIC8vIGZ1bGx5
IG9wYXF1ZS4KLSAgICByZXR1cm4gdmlldygpLT5iYXNlQmFja2dyb3VuZENvbG9yKCkuYmxlbmQo
aHRtbEJhY2tncm91bmRDb2xvcikuYmxlbmQoYm9keUJhY2tncm91bmRDb2xvcik7Ci19CiAKIHZv
aWQgRnJhbWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IEZsb2F0U2l6ZSYgcGFn
ZVNpemUsIGZsb2F0IG1heGltdW1TaHJpbmtSYXRpbywgQWRqdXN0Vmlld1NpemVPck5vdCBzaG91
bGRBZGp1c3RWaWV3U2l6ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA5NTBhNzNmLi42NDg2YzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0xOTIsOCArMTkyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKFJlZ3VsYXJFeHByZXNz
aW9uKiwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0
YXJ0T2ZDZWxsKTsKICAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlz
dGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpOwogICAgICAgICBTdHJpbmcgbWF0Y2hM
YWJlbHNBZ2FpbnN0RWxlbWVudChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50
Kik7Ci0KLSAgICAgICAgQ29sb3IgZ2V0RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsK
ICAgICAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBOU1N0cmluZyogc2VhcmNoRm9y
TGFiZWxzQmVmb3JlRWxlbWVudChOU0FycmF5KiBsYWJlbHMsIEVsZW1lbnQqLCBzaXplX3QqIHJl
c3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCBmYzMzMDk4Li4zZjZlZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0zMjUsMjEgKzMyNSwyNCBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFJlbW92ZUhv
cml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPmRpZFJlbW92ZVdoZWVsRXZlbnRIYW5kbGVyKCk7CiB9CiAKLVNjcm9sbGJh
ck92ZXJsYXlTdHlsZSBGcmFtZVZpZXc6OnJlY29tbWVuZGVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KCkgY29uc3QKK3ZvaWQgRnJhbWVWaWV3OjpyZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHls
ZSgpCiB7Ci0gICAgQ29sb3IgYmdDb2xvciA9IG1fZnJhbWUtPmdldERvY3VtZW50QmFja2dyb3Vu
ZENvbG9yKCk7Ci0gICAgaWYgKCFiZ0NvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFNj
cm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ7Ci0gICAgCi0gICAgLy8gUmVkdWNlIHRoZSBiYWNr
Z3JvdW5kIGNvbG9yIGZyb20gUkdCIHRvIGEgbGlnaHRuZXNzIHZhbHVlCi0gICAgLy8gYW5kIGRl
dGVybWluZSB3aGljaCBzY3JvbGxiYXIgc3R5bGUgdG8gdXNlIGJhc2VkIG9uIGEgbGlnaHRuZXNz
Ci0gICAgLy8gaGV1cmlzdGljLgotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVz
czsKLSAgICBiZ0NvbG9yLmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7Ci0gICAg
aWYgKGxpZ2h0bmVzcyA+IC41KQotICAgICAgICByZXR1cm4gU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
RGVmYXVsdDsKLSAgICAKLSAgICByZXR1cm4gU2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ7Cisg
ICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG9sZE92ZXJsYXlTdHlsZSA9IHNjcm9sbGJhck92ZXJs
YXlTdHlsZSgpOworICAgIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBvdmVybGF5U3R5bGUgPSBTY3Jv
bGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OworCisgICAgQ29sb3IgYmdDb2xvciA9IGRvY3VtZW50
QmFja2dyb3VuZENvbG9yKCk7CisgICAgaWYgKGJnQ29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAg
IC8vIFJlZHVjZSB0aGUgYmFja2dyb3VuZCBjb2xvciBmcm9tIFJHQiB0byBhIGxpZ2h0bmVzcyB2
YWx1ZQorICAgICAgICAvLyBhbmQgZGV0ZXJtaW5lIHdoaWNoIHNjcm9sbGJhciBzdHlsZSB0byB1
c2UgYmFzZWQgb24gYSBsaWdodG5lc3MKKyAgICAgICAgLy8gaGV1cmlzdGljLgorICAgICAgICBk
b3VibGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7CisgICAgICAgIGJnQ29sb3IuZ2V0SFNM
KGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKKyAgICAgICAgaWYgKGxpZ2h0bmVzcyA8PSAu
NSkKKyAgICAgICAgICAgIG92ZXJsYXlTdHlsZSA9IFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0
OworICAgIH0KKworICAgIGlmIChvbGRPdmVybGF5U3R5bGUgIT0gb3ZlcmxheVN0eWxlKQorICAg
ICAgICBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUob3ZlcmxheVN0eWxlKTsKIH0KIAogdm9pZCBG
cmFtZVZpZXc6OmNsZWFyKCkKQEAgLTE4OTUsNiArMTg5OCw4IEBAIHZvaWQgRnJhbWVWaWV3Ojpz
ZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiAgICAg
ICAgIG1fYmFzZUJhY2tncm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZTsKICAgICBlbHNlCiAgICAg
ICAgIG1fYmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKKworICAgIHJlY2Fs
Y3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3Ojp1cGRh
dGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciwgYm9v
bCB0cmFuc3BhcmVudCkKQEAgLTIzNjcsNiArMjM3Miw0OCBAQCB2b2lkIEZyYW1lVmlldzo6cGFp
bnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBj
b3JuZQogICAgIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIGNvcm5lclJl
Y3QpOwogfQogCitDb2xvciBGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29u
c3QKK3sKKyAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
NTQwPiBXZSBibGVuZCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgorICAgIC8vIHRoZSBkb2N1bWVu
dCBhbmQgdGhlIGJvZHkgYWdhaW5zdCB0aGUgYmFzZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBm
cmFtZSB2aWV3LgorICAgIC8vIEJhY2tncm91bmQgaW1hZ2VzIGFyZSB1bmZvcnR1bmF0ZWx5IGlt
cHJhY3RpY2FsIHRvIGluY2x1ZGUuCisKKyAgICAvLyBSZXR1cm4gaW52YWxpZCBDb2xvciBvYmpl
Y3RzIHdoZW5ldmVyIHRoZXJlIGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi4KKyAgICBpZiAo
IWZyYW1lKCktPmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAgZnJh
bWUoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCisgICAgRWxlbWVudCog
aHRtbEVsZW1lbnQgPSBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAg
ICBFbGVtZW50KiBib2R5RWxlbWVudCA9IGZyYW1lKCktPmRvY3VtZW50KCktPmJvZHkoKTsKKwor
ICAgIC8vIHN0YXJ0IGFzIGludmFsaWQgY29sb3JzCisgICAgQ29sb3IgaHRtbEJhY2tncm91bmRD
b2xvcjsKKyAgICBDb2xvciBib2R5QmFja2dyb3VuZENvbG9yOworICAgIGlmIChodG1sRWxlbWVu
dCAmJiBodG1sRWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgaHRtbEJhY2tncm91bmRDb2xv
ciA9IGh0bWxFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgIGlmIChib2R5RWxlbWVudCAmJiBi
b2R5RWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgYm9keUJhY2tncm91bmRDb2xvciA9IGJv
ZHlFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworCisgICAgaWYgKCFib2R5QmFja2dyb3VuZENvbG9y
LmlzVmFsaWQoKSkgeworICAgICAgICBpZiAoIWh0bWxCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgp
KQorICAgICAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgICAgIHJldHVybiBiYXNlQmFja2dy
b3VuZENvbG9yKCkuYmxlbmQoaHRtbEJhY2tncm91bmRDb2xvcik7CisgICAgfQorCisgICAgaWYg
KCFodG1sQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGJhc2VCYWNr
Z3JvdW5kQ29sb3IoKS5ibGVuZChib2R5QmFja2dyb3VuZENvbG9yKTsKKworICAgIC8vIFdlIHRh
a2UgdGhlIGFnZ3JlZ2F0ZSBvZiB0aGUgYmFzZSBiYWNrZ3JvdW5kIGNvbG9yCisgICAgLy8gdGhl
IDxodG1sPiBiYWNrZ3JvdW5kIGNvbG9yLCBhbmQgdGhlIDxib2R5PgorICAgIC8vIGJhY2tncm91
bmQgY29sb3IgdG8gZmluZCB0aGUgZG9jdW1lbnQgY29sb3IuIFRoZQorICAgIC8vIGFkZGl0aW9u
IG9mIHRoZSBiYXNlIGJhY2tncm91bmQgY29sb3IgaXMgbm90CisgICAgLy8gdGVjaG5pY2FsbHkg
cGFydCBvZiB0aGUgZG9jdW1lbnQgYmFja2dyb3VuZCwgYnV0IGl0CisgICAgLy8gb3RoZXJ3aXNl
IHBvc2VzIHByb2JsZW1zIHdoZW4gdGhlIGFnZ3JlZ2F0ZSBpcyBub3QKKyAgICAvLyBmdWxseSBv
cGFxdWUuCisgICAgcmV0dXJuIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKS5ibGVuZChodG1sQmFja2dy
b3VuZENvbG9yKS5ibGVuZChib2R5QmFja2dyb3VuZENvbG9yKTsKK30KKwogYm9vbCBGcmFtZVZp
ZXc6Omhhc0N1c3RvbVNjcm9sbGJhcnMoKSBjb25zdAogewogICAgIGNvbnN0IEhhc2hTZXQ8UmVm
UHRyPFdpZGdldD4gPiogdmlld0NoaWxkcmVuID0gY2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCmluZGV4IGY4MjgzMTkuLjAzNmI1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApA
QCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0U2Nyb2xsYmFycygpOwog
ICAgIHZvaWQgcmVzZXRTY3JvbGxiYXJzQW5kQ2xlYXJDb250ZW50c1NpemUoKTsKICAgICB2b2lk
IGRldGFjaEN1c3RvbVNjcm9sbGJhcnMoKTsKLSAgICB2aXJ0dWFsIFNjcm9sbGJhck92ZXJsYXlT
dHlsZSByZWNvbW1lbmRlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCByZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgpOwogCiAgICAgdm9pZCBj
bGVhcigpOwogCkBAIC0yMjIsNiArMjIyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBw
YWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpv
bnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29y
bmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogCisgICAg
Q29sb3IgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKwogICAgIHN0YXRpYyBkb3Vi
bGUgY3VycmVudFBhaW50VGltZVN0YW1wKCkgeyByZXR1cm4gc0N1cnJlbnRQYWludFRpbWVTdGFt
cDsgfSAvLyByZXR1cm5zIDAgaWYgbm90IHBhaW50aW5nCiAgICAgCiAgICAgdm9pZCB1cGRhdGVM
YXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCmluZGV4IGY0ZDA2MzQuLjc2ZWNmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwCkBAIC03NzksNiArNzc5LDE3IEBAIFNjcm9sbGJhciogU2Nyb2xs
Vmlldzo6c2Nyb2xsYmFyQXRQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCiAgICAg
cmV0dXJuIDA7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KFNjcm9sbGJhck92ZXJsYXlTdHlsZSBvdmVybGF5U3R5bGUpCit7CisgICAgU2Nyb2xsYWJsZUFy
ZWE6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShvdmVybGF5U3R5bGUpOworICAgIHBsYXRmb3Jt
U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKG92ZXJsYXlTdHlsZSk7CisKKyAgICBpZiAoaG9yaXpv
bnRhbFNjcm9sbGJhcigpKQorICAgICAgICBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKS0+
dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKGhvcml6b250YWxTY3JvbGxiYXIoKSk7CisgICAg
aWYgKHZlcnRpY2FsU2Nyb2xsYmFyKCkpCisgICAgICAgIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVU
aGVtZSgpLT51cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUodmVydGljYWxTY3JvbGxiYXIoKSk7
Cit9CisKIHZvaWQgU2Nyb2xsVmlldzo6d2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIGUp
CiB7CiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgbW91c2Ugd2hlZWxpbmcgdG8gaGFwcGVuIGluIGEg
U2Nyb2xsVmlldyB0aGF0IGhhcyBoYWQgaXRzIHNjcm9sbGJhcnMgZXhwbGljaXRseSBkaXNhYmxl
ZC4KQEAgLTEyNzksNiArMTI5MCwxMCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Ny
b2xsT3JpZ2luKGNvbnN0IEludFBvaW50JiwgYm9vbCB1cGRhdGVQb3NpdGlvbkF0QQogewogfQog
Cit2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9s
bGJhck92ZXJsYXlTdHlsZSkKK3sKK30KKwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oTUFDKSAm
JiAhUExBVEZPUk0oV1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggMTdi
YjhlYi4uOWZhZWE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtMTA4
LDYgKzEwOCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhdm9pZFNjcm9sbGJhckNy
ZWF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKTsKKwogICAgIC8vIEJ5
IGRlZmF1bHQgeW91IG9ubHkgcmVjZWl2ZSBwYWludCBldmVudHMgZm9yIHRoZSBhcmVhIHRoYXQg
aXMgdmlzaWJsZS4gSW4gdGhlIGNhc2Ugb2YgdXNpbmcgYQogICAgIC8vIHRpbGVkIGJhY2tpbmcg
c3RvcmUsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHNldCwgc28gdGhhdCB0aGUgdmlldyBwYWludHMg
dGhlIGVudGlyZSBjb250ZW50cy4KICAgICBib29sIHBhaW50c0VudGlyZUNvbnRlbnRzKCkgY29u
c3QgeyByZXR1cm4gbV9wYWludHNFbnRpcmVDb250ZW50czsgfQpAQCAtMzg5LDYgKzM5MSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdXBwcmVzc2VkKGJvb2wg
cmVwYWludE9uVW5zdXBwcmVzcyk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlcGFpbnRDb250ZW50UmVj
dGFuZ2xlKGNvbnN0IEludFJlY3QmLCBib29sIG5vdyk7CiAgICAgYm9vbCBwbGF0Zm9ybUlzT2Zm
c2NyZWVuKCkgY29uc3Q7CisgICAgdm9pZCBwbGF0Zm9ybVNldFNjcm9sbGJhck92ZXJsYXlTdHls
ZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpOwogICAgCiAgICAgdm9pZCBwbGF0Zm9ybVNldFNjcm9s
bE9yaWdpbihjb25zdCBJbnRQb2ludCYsIGJvb2wgdXBkYXRlUG9zaXRpb25BdEFsbCwgYm9vbCB1
cGRhdGVQb3NpdGlvblN5bmNocm9ub3VzbHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggZjhlNDBhMi4uMzM1NTA3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtMjA1LDYgKzIwNSwxNyBAQCBib29s
IFNjcm9sbGFibGVBcmVhOjpoYXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0CiAgICAgICAgIHx8
IChob3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgaG9yaXpvbnRhbFNjcm9sbGJhcigpLT5pc092ZXJs
YXlTY3JvbGxiYXIoKSk7CiB9CiAKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNldFNjcm9sbGJhck92
ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUgb3ZlcmxheVN0eWxlKQoreworICAgIG1f
c2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gb3ZlcmxheVN0eWxlOworCisgICAgaWYgKGhvcml6b250
YWxTY3JvbGxiYXIoKSkKKyAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhcigpLT5pbnZhbGlkYXRl
KCk7CisKKyAgICBpZiAodmVydGljYWxTY3JvbGxiYXIoKSkKKyAgICAgICAgdmVydGljYWxTY3Jv
bGxiYXIoKS0+aW52YWxpZGF0ZSgpOworfQorCiBib29sIFNjcm9sbGFibGVBcmVhOjppc1Bpbm5l
ZEluRGlyZWN0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKSBjb25zdAogewogICAgIGlm
IChzY3JvbGxEZWx0YS53aWR0aCgpIDwgMCAmJiBpc0hvcml6b250YWxTY3JvbGxlclBpbm5lZFRv
TWluaW11bVBvc2l0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aAppbmRleCAwMmRiNzg0Li5hOThmMjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmgKQEAgLTc3LDcgKzc3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsUmVtb3ZlSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKIAogICAgIGJvb2wgaGFz
T3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcm9sbGJhck92ZXJsYXlT
dHlsZSByZWNvbW1lbmRlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIFNj
cm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSk7CisgICAgU2Nyb2xsYmFyT3Zl
cmxheVN0eWxlIHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlOyB9CiAKICAgICBTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0b3Io
KSBjb25zdDsKICAgICBjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JvbGxPcmlnaW47IH0KQEAgLTE2OCw2ICsxNjksOCBAQCBwcml2YXRlOgogICAgIFNj
cm9sbEVsYXN0aWNpdHkgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7CiAgICAgU2Nyb2xsRWxh
c3RpY2l0eSBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5OwogCisgICAgU2Nyb2xsYmFyT3Zl
cmxheVN0eWxlIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOworCiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJl
Y3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IEludFJlY3QmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUu
aAppbmRleCBlZDM2ZjkwLi5kZDNjNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhclRoZW1lLmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgdXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhciop
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRoZW1lQ2hhbmdlZCgpIHt9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCmluZGV4IGZmMmUxNGUuLmFl
ZGVlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1t
CkBAIC0yMDMsNiArMjAzLDIzIEBAIGJvb2wgU2Nyb2xsVmlldzo6cGxhdGZvcm1Jc09mZnNjcmVl
bigpIGNvbnN0CiAgICAgcmV0dXJuICFbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIHx8ICFbW3Bs
YXRmb3JtV2lkZ2V0KCkgd2luZG93XSBpc1Zpc2libGVdOwogfQogCitzdGF0aWMgaW5saW5lIE5T
U2Nyb2xsZXJLbm9iU3R5bGUgdG9OU1Njcm9sbGVyS25vYlN0eWxlKFNjcm9sbGJhck92ZXJsYXlT
dHlsZSBzdHlsZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgICAgIGNhc2UgU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlRGFyazoKKyAgICAgICAgICAgIHJldHVybiBOU1Njcm9sbGVyS25vYlN0
eWxlRGFyazsKKyAgICAgICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDoKKyAgICAg
ICAgICAgIHJldHVybiBOU1Njcm9sbGVyS25vYlN0eWxlTGlnaHQ7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gTlNTY3JvbGxlcktub2JTdHlsZURlZmF1bHQ7CisgICAgfQor
fQorCit2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNj
cm9sbGJhck92ZXJsYXlTdHlsZSBvdmVybGF5U3R5bGUpCit7CisgICAgW3Njcm9sbFZpZXcoKSBz
ZXRTY3JvbGxlcktub2JTdHlsZTp0b05TU2Nyb2xsZXJLbm9iU3R5bGUob3ZlcmxheVN0eWxlKV07
Cit9CisKIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50
UG9pbnQmIG9yaWdpbiwgYm9vbCB1cGRhdGVQb3NpdGlvbkF0QWxsLCBib29sIHVwZGF0ZVBvc2l0
aW9uU3luY2hyb25vdXNseSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oCmluZGV4
IDk3N2E2N2QuLmZiYjJjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxiYXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5oCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIHVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyKik7CiAKICAg
ICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsKICAgICB2aXJ0
dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IDM4ZGEzMzQuLmNiZWQ4NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMu
bW0KQEAgLTIyNiw2ICsyMjYsMjkgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6dXNlc092ZXJs
YXlTY3JvbGxiYXJzKCkgY29uc3QKICNlbmRpZgogfQogCisjaWYgVVNFKFdLX1NDUk9MTEJBUl9Q
QUlOVEVSKQorc3RhdGljIGlubGluZSB3a1Njcm9sbGVyS25vYlN0eWxlIHRvU2Nyb2xsYmFyUGFp
bnRlcktub2JTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUgc3R5bGUpCit7CisgICAgc3dpdGNo
IChzdHlsZSkgeworICAgICAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZURhcms6CisgICAg
ICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHlsZURhcms7CisgICAgICAgIGNhc2UgU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ6CisgICAgICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktu
b2JTdHlsZUxpZ2h0OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHdrU2Ny
b2xsZXJLbm9iU3R5bGVEZWZhdWx0OworICAgIH0KK30KKyNlbmRpZgorCit2b2lkIFNjcm9sbGJh
clRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpCit7CisjaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQorICAgIHdrU2V0U2Nyb2xsYmFy
UGFpbnRlcktub2JTdHlsZShwYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhciksIHRvU2Nyb2xs
YmFyUGFpbnRlcktub2JTdHlsZShzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbGJh
ck92ZXJsYXlTdHlsZSgpKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzY3JvbGxiYXIpOwor
I2VuZGlmCit9CisKIGRvdWJsZSBTY3JvbGxiYXJUaGVtZU1hYzo6aW5pdGlhbEF1dG9zY3JvbGxU
aW1lckRlbGF5KCkKIHsKICAgICByZXR1cm4gZ0luaXRpYWxCdXR0b25EZWxheTsKQEAgLTQzMiwy
MCArNDU1LDYgQEAgc3RhdGljIGludCBzY3JvbGxiYXJQYXJ0VG9ISVByZXNzZWRTdGF0ZShTY3Jv
bGxiYXJQYXJ0IHBhcnQpCiAgICAgfQogfQogCi0jaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVS
KQotc3RhdGljIGlubGluZSB3a1Njcm9sbGVyS25vYlN0eWxlIHRvU2Nyb2xsYmFyUGFpbnRlcktu
b2JTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUgc3R5bGUpCi17Ci0gICAgc3dpdGNoIChzdHls
ZSkgewotICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGFyazoKLSAgICAgICAgcmV0dXJu
IHdrU2Nyb2xsZXJLbm9iU3R5bGVEYXJrOwotICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
TGlnaHQ6Ci0gICAgICAgIHJldHVybiB3a1Njcm9sbGVyS25vYlN0eWxlTGlnaHQ7Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIHdrU2Nyb2xsZXJLbm9iU3R5bGVEZWZhdWx0OwotICAgIH0K
LX0KLSNlbmRpZgotCiB2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVFbmFibGVkU3RhdGUo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAjaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQpA
QCAtNDgwLDEwICs0ODksNiBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjbwogICAgIAogICAgIFNj
cm9sbEFuaW1hdG9yTWFjKiBzY3JvbGxBbmltYXRvciA9IHN0YXRpY19jYXN0PFNjcm9sbEFuaW1h
dG9yTWFjKj4oc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxBbmltYXRvcigpKTsK
ICAgICBzY3JvbGxBbmltYXRvci0+c2V0SXNEcmF3aW5nSW50b0xheWVyKGNvbnRleHQtPmlzQ0FM
YXllckNvbnRleHQoKSk7Ci0KLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAgd2tT
ZXRTY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKHBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFy
KSwgdG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEo
KS0+cmVjb21tZW5kZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSkpOwotI2VuZGlmCiAgICAgCiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKICAgICBj
b250ZXh0LT5jbGlwKGRhbWFnZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAppbmRleCA1ZGQ1YzQwLi4xN2UzMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcApAQCAtMzM3LDYgKzMzNyw4IEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNh
bGMoKTsKICAgICAgICAgfQorCisgICAgICAgIGZyYW1lKCktPnZpZXcoKS0+cmVjYWxjdWxhdGVT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5OGE4ZWJj
Li43YTVlODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDctMTggIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2Nyb2xsYmFyIGNv
bG9yIGhldXJpc3RpYyBuZWVkcyB0byBiZSBob29rZWQgdXAgaW4gV2ViS2l0MQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyMjAKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzk1ODkxNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RvcmUgdGhlIHNjcm9sbGVyIHN0eWxlIG9uIFNjcm9sbGFibGVBcmVh
LCBhbmQgcmVjb21wdXRlIGl0IHdoZW5ldmVyCisgICAgICAgIHRoZSBkb2N1bWVudCBvciBib2R5
IGVsZW1lbnQgYmFja2dyb3VuZCBjb2xvciBjaGFuZ2VzIG9yIHRoZSBiYXNlIGJhY2tncm91bmQK
KyAgICAgICAgY29sb3Igb2YgdGhlIHNjcm9sbHZpZXcgY2hhbmdlcy4gQWxzbywgbWFrZSBzdXJl
IHRvIHJlcGFpbnQgdGhlIHNjcm9sbGJhcnMKKyAgICAgICAgd2hlbmV2ZXIgdGhlIHN0eWxlIGNo
YW5nZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Z2V0RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IpOgorCiAy
MDExLTA3LTE4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSB1c2luZyBsb3dlcmNhc2UgcGFyYW1ldGVyIG5hbWVzIGZvciBBcHBsZUNvbm5lY3Qg
YmUgYSBwbHVnLWluIHF1aXJrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAppbmRleCA0NmY5OWUzLi45MmFhZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTU2MSw3ICs1NjEsMTIgQEAg
Ym9vbCBXZWJGcmFtZTo6Z2V0RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoZG91YmxlKiByZWQsIGRv
dWJsZSogZ3JlZW4sIGRvdWJsZSogYmwKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgQ29sb3IgYmdDb2xvciA9IG1fY29yZUZyYW1lLT5nZXREb2N1
bWVudEJhY2tncm91bmRDb2xvcigpOworCisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9jb3JlRnJh
bWUtPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IENvbG9yIGJnQ29sb3IgPSB2aWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwogICAgIGlm
ICghYmdDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotLSAKMS43LjQu
NAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101242</attachid>
            <date>2011-07-18 17:34:33 -0700</date>
            <delta_ts>2011-07-19 10:40:34 -0700</delta_ts>
            <desc>work around &lt;rdar://problem/9797253&gt;</desc>
            <filename>0001-Scrollbar-color-heuristic-needs-to-be-hooked-up-in-W.patch</filename>
            <type>text/plain</type>
            <size>25364</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">RnJvbSAzNjQyMzE2NDkzODc4MjM3ZWJkYzAzM2E3OGY1M2FlNzlhNjhkMDY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW0gSG9ydG9uIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CkRhdGU6IE1vbiwgMTggSnVsIDIwMTEgMTU6MDI6MDMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBT
Y3JvbGxiYXIgY29sb3IgaGV1cmlzdGljIG5lZWRzIHRvIGJlIGhvb2tlZCB1cCBpbiBXZWJLaXQx
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyMjAKIDxyZGFyOi8v
cHJvYmxlbS85NTg5MTQwPgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTdG9yZSB0aGUg
c2Nyb2xsZXIgc3R5bGUgb24gU2Nyb2xsYWJsZUFyZWEsIGFuZCByZWNvbXB1dGUgaXQgd2hlbmV2
ZXIKdGhlIGRvY3VtZW50IG9yIGJvZHkgZWxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIGNoYW5nZXMg
b3IgdGhlIGJhc2UgYmFja2dyb3VuZApjb2xvciBvZiB0aGUgc2Nyb2xsdmlldyBjaGFuZ2VzLiBB
bHNvLCBtYWtlIHN1cmUgdG8gcmVwYWludCB0aGUgc2Nyb2xsYmFycwp3aGVuZXZlciB0aGUgc3R5
bGUgY2hhbmdlcy4KCk5vIG5ldyB0ZXN0cywgc2luY2UgdGhpcyBjb2RlIGlzIG9ubHkgZW5hYmxl
ZCBvbiBmdXR1cmUgdmVyc2lvbnMgb2YgTWFjIE9TIFguCi0tLQogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NCArKysrKysrKysrKysrCiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAgICAgICAgICAgfCAgIDQwIC0t
LS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMiAtCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgICAgICAgICAg
ICAgICAgfCAgIDc1ICsrKysrKysrKysrKysrKysrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmggICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwICAgICAgICAgICB8ICAgMTAgKysrCiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggICAgICAgICAgICAgfCAgICAzICsKIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCAgICAgICB8ICAgMjIgKysrKysrCiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oICAgICAgICAgfCAgICA1ICstCiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oICAgICAgICAgfCAgICAxICsK
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tICAgICB8ICAgMTcg
KysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oICB8
ICAgIDEgKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
IHwgICA0MyArKysrKysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxNiArKysrKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcCAgIHwgICAgNyArKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDIxNiBp
bnNlcnRpb25zKCspLCA3OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU5NjViYS4uOWVk
ZjY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDExLTA3LTE4ICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbGJhciBjb2xvciBo
ZXVyaXN0aWMgbmVlZHMgdG8gYmUgaG9va2VkIHVwIGluIFdlYktpdDEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjIwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS85NTg5MTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFN0b3JlIHRoZSBzY3JvbGxlciBzdHlsZSBvbiBTY3JvbGxhYmxlQXJlYSwgYW5k
IHJlY29tcHV0ZSBpdCB3aGVuZXZlcgorICAgICAgICB0aGUgZG9jdW1lbnQgb3IgYm9keSBlbGVt
ZW50IGJhY2tncm91bmQgY29sb3IgY2hhbmdlcyBvciB0aGUgYmFzZSBiYWNrZ3JvdW5kCisgICAg
ICAgIGNvbG9yIG9mIHRoZSBzY3JvbGx2aWV3IGNoYW5nZXMuIEFsc28sIG1ha2Ugc3VyZSB0byBy
ZXBhaW50IHRoZSBzY3JvbGxiYXJzCisgICAgICAgIHdoZW5ldmVyIHRoZSBzdHlsZSBjaGFuZ2Vz
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgdGhpcyBjb2RlIGlzIG9ubHkgZW5hYmxl
ZCBvbiBmdXR1cmUgdmVyc2lvbnMgb2YgTWFjIE9TIFguCisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
OjpnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IpOiBSZW5hbWVkLgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dG9OU1Nj
cm9sbGVyS25vYlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3Jt
U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjp0b1Njcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjpzdHlsZURpZENoYW5nZSk6CisKIDIwMTEtMDctMTggIE1hcmsgSGFobmVuYmVyZyAgPG1o
YWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBKU0MgdG8gcmVwbGFjZSBK
U0NlbGw6Om9wZXJhdG9yIG5ldyB3aXRoIHN0YXRpYyBjcmVhdGUgbWV0aG9kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDM1MzIwZmYuLjY3YmQwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0x
MjMyLDcgKzEyMzIsNiBAQCBfX1pOSzdXZWJDb3JlNUZyYW1lMTRzZWxlY3Rpb25JbWFnZUViCiBf
X1pOSzdXZWJDb3JlNUZyYW1lMTVjb250ZW50UmVuZGVyZXJFdgogX19aTks3V2ViQ29yZTVGcmFt
ZTE1bGF5ZXJUcmVlQXNUZXh0RWIKIF9fWk5LN1dlYkNvcmU1RnJhbWUxOGRvY3VtZW50VHlwZVN0
cmluZ0V2Ci1fX1pOSzdXZWJDb3JlNUZyYW1lMjZnZXREb2N1bWVudEJhY2tncm91bmRDb2xvckV2
CiBfX1pOSzdXZWJDb3JlNUZyYW1lMzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJL
TjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTVGcmFtZThzZXR0aW5nc0V2CiBfX1pOSzdXZWJD
b3JlNUZyYW1lOWRvbVdpbmRvd0V2CkBAIC0xMzI1LDYgKzEzMjQsNyBAQCBfX1pOSzdXZWJDb3Jl
OUZyYW1lVmlldzEzcGFpbnRCZWhhdmlvckV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzE5YmFz
ZUJhY2tncm91bmRDb2xvckV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzIwaXNTb2Z0d2FyZVJl
bmRlcmFibGVFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcyMndpbmRvd0NsaXBSZWN0Rm9yTGF5
ZXJFUEtOU18xMVJlbmRlckxheWVyRWIKK19fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MjNkb2N1bWVu
dEJhY2tncm91bmRDb2xvckV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzI4aXNFbmNsb3NlZElu
Q29tcG9zaXRpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlOVBhZ2VDYWNoZTEwZnJhbWVDb3VudEV2
CiBfX1pOSzdXZWJDb3JlOVBhZ2VDYWNoZTIxYXV0b3JlbGVhc2VkUGFnZUNvdW50RXYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKaW5kZXggMWIyZTFhNi4uZjNhYWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
QEAgLTUwNyw0NiArNTA3LDYgQEAgU3RyaW5nIEZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVt
ZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqIGUKICAgICAKICAgICBy
ZXR1cm4gbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGxhYmVscywgZWxlbWVudC0+Z2V0QXR0cmli
dXRlKGlkQXR0cikpOwogfQotICAgIAotQ29sb3IgRnJhbWU6OmdldERvY3VtZW50QmFja2dyb3Vu
ZENvbG9yKCkgY29uc3QKLXsKLSAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU5NTQwPiBXZSBibGVuZCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgotICAgIC8v
IHRoZSBkb2N1bWVudCBhbmQgdGhlIGJvZHkgYWdhaW5zdCB0aGUgYmFzZSBiYWNrZ3JvdW5kIGNv
bG9yIG9mIHRoZSBmcmFtZSB2aWV3LgotICAgIC8vIEJhY2tncm91bmQgaW1hZ2VzIGFyZSB1bmZv
cnR1bmF0ZWx5IGltcHJhY3RpY2FsIHRvIGluY2x1ZGUuCi0KLSAgICAvLyBSZXR1cm4gaW52YWxp
ZCBDb2xvciBvYmplY3RzIHdoZW5ldmVyIHRoZXJlIGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlv
bi4KLSAgICBpZiAoIW1fZG9jKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAgIEVsZW1l
bnQqIGh0bWxFbGVtZW50ID0gbV9kb2MtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIEVsZW1lbnQq
IGJvZHlFbGVtZW50ID0gbV9kb2MtPmJvZHkoKTsKLQotICAgIC8vIHN0YXJ0IGFzIGludmFsaWQg
Y29sb3JzCi0gICAgQ29sb3IgaHRtbEJhY2tncm91bmRDb2xvcjsKLSAgICBDb2xvciBib2R5QmFj
a2dyb3VuZENvbG9yOwotICAgIGlmIChodG1sRWxlbWVudCAmJiBodG1sRWxlbWVudC0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgaHRtbEJhY2tncm91bmRDb2xvciA9IGh0bWxFbGVtZW50LT5yZW5kZXJl
cigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOwotICAgIGlmIChib2R5RWxlbWVudCAmJiBib2R5RWxlbWVudC0+cmVuZGVyZXIoKSkK
LSAgICAgICAgYm9keUJhY2tncm91bmRDb2xvciA9IGJvZHlFbGVtZW50LT5yZW5kZXJlcigpLT5z
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
OwotICAgIAotICAgIGlmICghYm9keUJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgaWYgKCFodG1sQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVy
biBDb2xvcigpOwotICAgICAgICByZXR1cm4gdmlldygpLT5iYXNlQmFja2dyb3VuZENvbG9yKCku
YmxlbmQoaHRtbEJhY2tncm91bmRDb2xvcik7Ci0gICAgfQotICAgIAotICAgIGlmICghaHRtbEJh
Y2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB2aWV3KCktPmJhc2VCYWNr
Z3JvdW5kQ29sb3IoKS5ibGVuZChib2R5QmFja2dyb3VuZENvbG9yKTsKLSAgICAKLSAgICAvLyBX
ZSB0YWtlIHRoZSBhZ2dyZWdhdGUgb2YgdGhlIGJhc2UgYmFja2dyb3VuZCBjb2xvcgotICAgIC8v
IHRoZSA8aHRtbD4gYmFja2dyb3VuZCBjb2xvciwgYW5kIHRoZSA8Ym9keT4KLSAgICAvLyBiYWNr
Z3JvdW5kIGNvbG9yIHRvIGZpbmQgdGhlIGRvY3VtZW50IGNvbG9yLiBUaGUKLSAgICAvLyBhZGRp
dGlvbiBvZiB0aGUgYmFzZSBiYWNrZ3JvdW5kIGNvbG9yIGlzIG5vdAotICAgIC8vIHRlY2huaWNh
bGx5IHBhcnQgb2YgdGhlIGRvY3VtZW50IGJhY2tncm91bmQsIGJ1dCBpdAotICAgIC8vIG90aGVy
d2lzZSBwb3NlcyBwcm9ibGVtcyB3aGVuIHRoZSBhZ2dyZWdhdGUgaXMgbm90Ci0gICAgLy8gZnVs
bHkgb3BhcXVlLgotICAgIHJldHVybiB2aWV3KCktPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKS5ibGVu
ZChodG1sQmFja2dyb3VuZENvbG9yKS5ibGVuZChib2R5QmFja2dyb3VuZENvbG9yKTsKLX0KIAog
dm9pZCBGcmFtZTo6c2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgRmxvYXRTaXplJiBw
YWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBBZGp1c3RWaWV3U2l6ZU9yTm90IHNo
b3VsZEFkanVzdFZpZXdTaXplKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDk1MGE3M2YuLjY0ODZj
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE5Miw4ICsxOTIsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFN0cmluZyBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJl
c3Npb24qLCBIVE1MVGFibGVDZWxsRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9t
U3RhcnRPZkNlbGwpOwogICAgICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVu
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50Kiwgc2l6ZV90KiByZXN1bHRE
aXN0YW5jZSwgYm9vbCogcmVzdWx0SXNJbkNlbGxBYm92ZSk7CiAgICAgICAgIFN0cmluZyBtYXRj
aExhYmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1l
bnQqKTsKLQotICAgICAgICBDb2xvciBnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0
OwogICAgICAgICAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIE5TU3RyaW5nKiBzZWFyY2hG
b3JMYWJlbHNCZWZvcmVFbGVtZW50KE5TQXJyYXkqIGxhYmVscywgRWxlbWVudCosIHNpemVfdCog
cmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCmluZGV4IGZjMzMwOTguLjkwZDBmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKQEAgLTMyNSwyMSArMzI1LDI0IEBAIHZvaWQgRnJhbWVWaWV3Ojp3aWxsUmVtb3Zl
SG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICAgICAgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlV2hlZWxFdmVudEhhbmRsZXIoKTsKIH0KIAotU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlIEZyYW1lVmlldzo6cmVjb21tZW5kZWRTY3JvbGxiYXJPdmVybGF5U3R5
bGUoKSBjb25zdAordm9pZCBGcmFtZVZpZXc6OnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlKCkKIHsKLSAgICBDb2xvciBiZ0NvbG9yID0gbV9mcmFtZS0+Z2V0RG9jdW1lbnRCYWNrZ3Jv
dW5kQ29sb3IoKTsKLSAgICBpZiAoIWJnQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4g
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDsKLSAgICAKLSAgICAvLyBSZWR1Y2UgdGhlIGJh
Y2tncm91bmQgY29sb3IgZnJvbSBSR0IgdG8gYSBsaWdodG5lc3MgdmFsdWUKLSAgICAvLyBhbmQg
ZGV0ZXJtaW5lIHdoaWNoIHNjcm9sbGJhciBzdHlsZSB0byB1c2UgYmFzZWQgb24gYSBsaWdodG5l
c3MKLSAgICAvLyBoZXVyaXN0aWMuCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRu
ZXNzOwotICAgIGJnQ29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKLSAg
ICBpZiAobGlnaHRuZXNzID4gLjUpCi0gICAgICAgIHJldHVybiBTY3JvbGxiYXJPdmVybGF5U3R5
bGVEZWZhdWx0OwotICAgIAotICAgIHJldHVybiBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDsK
KyAgICBTY3JvbGxiYXJPdmVybGF5U3R5bGUgb2xkT3ZlcmxheVN0eWxlID0gc2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKCk7CisgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG92ZXJsYXlTdHlsZSA9IFNj
cm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ7CisKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3Ig
PSBkb2N1bWVudEJhY2tncm91bmRDb2xvcigpOworICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNW
YWxpZCgpKSB7CisgICAgICAgIC8vIFJlZHVjZSB0aGUgYmFja2dyb3VuZCBjb2xvciBmcm9tIFJH
QiB0byBhIGxpZ2h0bmVzcyB2YWx1ZQorICAgICAgICAvLyBhbmQgZGV0ZXJtaW5lIHdoaWNoIHNj
cm9sbGJhciBzdHlsZSB0byB1c2UgYmFzZWQgb24gYSBsaWdodG5lc3MKKyAgICAgICAgLy8gaGV1
cmlzdGljLgorICAgICAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7CisgICAg
ICAgIGJhY2tncm91bmRDb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOwor
ICAgICAgICBpZiAobGlnaHRuZXNzIDw9IC41KQorICAgICAgICAgICAgb3ZlcmxheVN0eWxlID0g
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ7CisgICAgfQorCisgICAgaWYgKG9sZE92ZXJsYXlT
dHlsZSAhPSBvdmVybGF5U3R5bGUpCisgICAgICAgIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShv
dmVybGF5U3R5bGUpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6Y2xlYXIoKQpAQCAtMTg5NSw2ICsx
ODk4LDggQEAgdm9pZCBGcmFtZVZpZXc6OnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImIGJhY2tncm91bmRDb2xvcikKICAgICAgICAgbV9iYXNlQmFja2dyb3VuZENvbG9yID0gQ29s
b3I6OndoaXRlOwogICAgIGVsc2UKICAgICAgICAgbV9iYXNlQmFja2dyb3VuZENvbG9yID0gYmFj
a2dyb3VuZENvbG9yOworCisgICAgcmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsK
IH0KIAogdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBD
b2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIHRyYW5zcGFyZW50KQpAQCAtMjM2Nyw2ICsyMzcy
LDQ4IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lCiAgICAgU2Nyb2xsVmlldzo6cGFpbnRTY3Jv
bGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7CiB9CiAKK0NvbG9yIEZyYW1lVmlldzo6ZG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIC8vIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk1NDA+IFdlIGJsZW5kIHRoZSBiYWNrZ3JvdW5kIGNv
bG9yIG9mCisgICAgLy8gdGhlIGRvY3VtZW50IGFuZCB0aGUgYm9keSBhZ2FpbnN0IHRoZSBiYXNl
IGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGZyYW1lIHZpZXcuCisgICAgLy8gQmFja2dyb3VuZCBp
bWFnZXMgYXJlIHVuZm9ydHVuYXRlbHkgaW1wcmFjdGljYWwgdG8gaW5jbHVkZS4KKworICAgIC8v
IFJldHVybiBpbnZhbGlkIENvbG9yIG9iamVjdHMgd2hlbmV2ZXIgdGhlcmUgaXMgaW5zdWZmaWNp
ZW50IGluZm9ybWF0aW9uLgorICAgIGlmICghZnJhbWUoKS0+ZG9jdW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIENvbG9yKCk7CisKKyAgICBmcmFtZSgpLT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlm
TmVlZGVkKCk7CisKKyAgICBFbGVtZW50KiBodG1sRWxlbWVudCA9IGZyYW1lKCktPmRvY3VtZW50
KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gZnJhbWUo
KS0+ZG9jdW1lbnQoKS0+Ym9keSgpOworCisgICAgLy8gU3RhcnQgd2l0aCBpbnZhbGlkIGNvbG9y
cy4KKyAgICBDb2xvciBodG1sQmFja2dyb3VuZENvbG9yOworICAgIENvbG9yIGJvZHlCYWNrZ3Jv
dW5kQ29sb3I7CisgICAgaWYgKGh0bWxFbGVtZW50ICYmIGh0bWxFbGVtZW50LT5yZW5kZXJlcigp
KQorICAgICAgICBodG1sQmFja2dyb3VuZENvbG9yID0gaHRtbEVsZW1lbnQtPnJlbmRlcmVyKCkt
PnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cik7CisgICAgaWYgKGJvZHlFbGVtZW50ICYmIGJvZHlFbGVtZW50LT5yZW5kZXJlcigpKQorICAg
ICAgICBib2R5QmFja2dyb3VuZENvbG9yID0gYm9keUVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisK
KyAgICBpZiAoIWJvZHlCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmICgh
aHRtbEJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gQ29sb3Io
KTsKKyAgICAgICAgcmV0dXJuIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKS5ibGVuZChodG1sQmFja2dy
b3VuZENvbG9yKTsKKyAgICB9CisKKyAgICBpZiAoIWh0bWxCYWNrZ3JvdW5kQ29sb3IuaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm4gYmFzZUJhY2tncm91bmRDb2xvcigpLmJsZW5kKGJvZHlCYWNr
Z3JvdW5kQ29sb3IpOworCisgICAgLy8gV2UgdGFrZSB0aGUgYWdncmVnYXRlIG9mIHRoZSBiYXNl
IGJhY2tncm91bmQgY29sb3IKKyAgICAvLyB0aGUgPGh0bWw+IGJhY2tncm91bmQgY29sb3IsIGFu
ZCB0aGUgPGJvZHk+CisgICAgLy8gYmFja2dyb3VuZCBjb2xvciB0byBmaW5kIHRoZSBkb2N1bWVu
dCBjb2xvci4gVGhlCisgICAgLy8gYWRkaXRpb24gb2YgdGhlIGJhc2UgYmFja2dyb3VuZCBjb2xv
ciBpcyBub3QKKyAgICAvLyB0ZWNobmljYWxseSBwYXJ0IG9mIHRoZSBkb2N1bWVudCBiYWNrZ3Jv
dW5kLCBidXQgaXQKKyAgICAvLyBvdGhlcndpc2UgcG9zZXMgcHJvYmxlbXMgd2hlbiB0aGUgYWdn
cmVnYXRlIGlzIG5vdAorICAgIC8vIGZ1bGx5IG9wYXF1ZS4KKyAgICByZXR1cm4gYmFzZUJhY2tn
cm91bmRDb2xvcigpLmJsZW5kKGh0bWxCYWNrZ3JvdW5kQ29sb3IpLmJsZW5kKGJvZHlCYWNrZ3Jv
dW5kQ29sb3IpOworfQorCiBib29sIEZyYW1lVmlldzo6aGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNv
bnN0CiB7CiAgICAgY29uc3QgSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+KiB2aWV3Q2hpbGRyZW4g
PSBjaGlsZHJlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZjgyODMxOS4uMDM2YjU4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzZXRTY3JvbGxiYXJzKCk7CiAgICAgdm9pZCByZXNldFNjcm9sbGJhcnNBbmRD
bGVhckNvbnRlbnRzU2l6ZSgpOwogICAgIHZvaWQgZGV0YWNoQ3VzdG9tU2Nyb2xsYmFycygpOwot
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHJlY29tbWVuZGVkU2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlY2FsY3VsYXRlU2Nyb2xsYmFy
T3ZlcmxheVN0eWxlKCk7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTIyMiw2ICsyMjIsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYgY29ybmVyUmVjdCk7CiAKKyAgICBDb2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xv
cigpIGNvbnN0OworCiAgICAgc3RhdGljIGRvdWJsZSBjdXJyZW50UGFpbnRUaW1lU3RhbXAoKSB7
IHJldHVybiBzQ3VycmVudFBhaW50VGltZVN0YW1wOyB9IC8vIHJldHVybnMgMCBpZiBub3QgcGFp
bnRpbmcKICAgICAKICAgICB2b2lkIHVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNp
dmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggZjRkMDYzNC4u
NTJkMWZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTc3OSw2
ICs3NzksMTIgQEAgU2Nyb2xsYmFyKiBTY3JvbGxWaWV3OjpzY3JvbGxiYXJBdFBvaW50KGNvbnN0
IEludFBvaW50JiB3aW5kb3dQb2ludCkKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBTY3JvbGxW
aWV3OjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG92ZXJs
YXlTdHlsZSkKK3sKKyAgICBTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KG92ZXJsYXlTdHlsZSk7CisgICAgcGxhdGZvcm1TZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUob3Zl
cmxheVN0eWxlKTsKK30KKwogdm9pZCBTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KFBsYXRmb3JtV2hl
ZWxFdmVudCYgZSkKIHsKICAgICAvLyBXZSBkb24ndCBhbGxvdyBtb3VzZSB3aGVlbGluZyB0byBo
YXBwZW4gaW4gYSBTY3JvbGxWaWV3IHRoYXQgaGFzIGhhZCBpdHMgc2Nyb2xsYmFycyBleHBsaWNp
dGx5IGRpc2FibGVkLgpAQCAtMTI3OSw2ICsxMjg1LDEwIEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxh
dGZvcm1TZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmLCBib29sIHVwZGF0ZVBvc2l0aW9u
QXRBCiB7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJPdmVybGF5
U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKQoreworfQorCiAjZW5kaWYKIAogI2lmICFQTEFU
Rk9STShNQUMpICYmICFQTEFURk9STShXWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
aAppbmRleCAxN2JiOGViLi45ZmFlYTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oCkBAIC0xMDgsNiArMTA4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGF2b2lk
U2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVh
bCB2b2lkIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpOwor
CiAgICAgLy8gQnkgZGVmYXVsdCB5b3Ugb25seSByZWNlaXZlIHBhaW50IGV2ZW50cyBmb3IgdGhl
IGFyZWEgdGhhdCBpcyB2aXNpYmxlLiBJbiB0aGUgY2FzZSBvZiB1c2luZyBhCiAgICAgLy8gdGls
ZWQgYmFja2luZyBzdG9yZSwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgc2V0LCBzbyB0aGF0IHRoZSB2
aWV3IHBhaW50cyB0aGUgZW50aXJlIGNvbnRlbnRzLgogICAgIGJvb2wgcGFpbnRzRW50aXJlQ29u
dGVudHMoKSBjb25zdCB7IHJldHVybiBtX3BhaW50c0VudGlyZUNvbnRlbnRzOyB9CkBAIC0zODks
NiArMzkxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1cHBy
ZXNzZWQoYm9vbCByZXBhaW50T25VbnN1cHByZXNzKTsKICAgICB2b2lkIHBsYXRmb3JtUmVwYWlu
dENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYsIGJvb2wgbm93KTsKICAgICBib29sIHBs
YXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdDsKKyAgICB2b2lkIHBsYXRmb3JtU2V0U2Nyb2xsYmFy
T3ZlcmxheVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSk7CiAgICAKICAgICB2b2lkIHBsYXRm
b3JtU2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50JiwgYm9vbCB1cGRhdGVQb3NpdGlvbkF0
QWxsLCBib29sIHVwZGF0ZVBvc2l0aW9uU3luY2hyb25vdXNseSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCBmOGU0MGEyLi5jOGEwYjEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0xODIsNiArMTgy
LDkgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6d2lsbEVuZExpdmVSZXNpemUoKQogdm9pZCBTY3Jv
bGxhYmxlQXJlYTo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
CiB7CiAgICAgc2Nyb2xsQW5pbWF0b3IoKS0+ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoc2Nyb2xs
YmFyKTsKKworICAgIC8vIDxyZGFyOi8vcHJvYmxlbS85Nzk3MjUzPiBBcHBLaXQgcmVzZXRzIHRo
ZSBzY3JvbGxiYXIncyBzdHlsZSB3aGVuIHlvdSBhdHRhY2ggYSBzY3JvbGxiYXIKKyAgICBzZXRT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkpOwogfQogCiB2b2lk
IFNjcm9sbGFibGVBcmVhOjp3aWxsUmVtb3ZlVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIpCkBAIC0xOTIsNiArMTk1LDkgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6d2lsbFJl
bW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogdm9pZCBTY3JvbGxh
YmxlQXJlYTo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikK
IHsKICAgICBzY3JvbGxBbmltYXRvcigpLT5kaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKHNjcm9s
bGJhcik7CisKKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vOTc5NzI1Mz4gQXBwS2l0IHJlc2V0cyB0
aGUgc2Nyb2xsYmFyJ3Mgc3R5bGUgd2hlbiB5b3UgYXR0YWNoIGEgc2Nyb2xsYmFyCisgICAgc2V0
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKTsKIH0KIAogdm9p
ZCBTY3JvbGxhYmxlQXJlYTo6d2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCkBAIC0yMDUsNiArMjExLDIyIEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6Omhh
c092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3QKICAgICAgICAgfHwgKGhvcml6b250YWxTY3JvbGxi
YXIoKSAmJiBob3Jpem9udGFsU2Nyb2xsYmFyKCktPmlzT3ZlcmxheVNjcm9sbGJhcigpKTsKIH0K
IAordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJh
ck92ZXJsYXlTdHlsZSBvdmVybGF5U3R5bGUpCit7CisgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5
bGUgPSBvdmVybGF5U3R5bGU7CisKKyAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbGJhcigpKQorICAg
ICAgICBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKS0+dXBkYXRlU2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKGhvcml6b250YWxTY3JvbGxiYXIoKSk7CisgICAgaWYgKHZlcnRpY2FsU2Nyb2xsYmFy
KCkpCisgICAgICAgIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpLT51cGRhdGVTY3JvbGxi
YXJPdmVybGF5U3R5bGUodmVydGljYWxTY3JvbGxiYXIoKSk7CisKKyAgICBpZiAoaG9yaXpvbnRh
bFNjcm9sbGJhcigpKQorICAgICAgICBob3Jpem9udGFsU2Nyb2xsYmFyKCktPmludmFsaWRhdGUo
KTsKKworICAgIGlmICh2ZXJ0aWNhbFNjcm9sbGJhcigpKQorICAgICAgICB2ZXJ0aWNhbFNjcm9s
bGJhcigpLT5pbnZhbGlkYXRlKCk7Cit9CisKIGJvb2wgU2Nyb2xsYWJsZUFyZWE6OmlzUGlubmVk
SW5EaXJlY3Rpb24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpIGNvbnN0CiB7CiAgICAgaWYg
KHNjcm9sbERlbHRhLndpZHRoKCkgPCAwICYmIGlzSG9yaXpvbnRhbFNjcm9sbGVyUGlubmVkVG9N
aW5pbXVtUG9zaXRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5o
CmluZGV4IDAyZGI3ODQuLmE5OGYyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaApAQCAtNzcsNyArNzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwogCiAgICAgYm9vbCBoYXNP
dmVybGF5U2Nyb2xsYmFycygpIGNvbnN0OwotICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlIHJlY29tbWVuZGVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3QgeyByZXR1cm4gU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxi
YXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKTsKKyAgICBTY3JvbGxiYXJPdmVy
bGF5U3R5bGUgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxi
YXJPdmVybGF5U3R5bGU7IH0KIAogICAgIFNjcm9sbEFuaW1hdG9yKiBzY3JvbGxBbmltYXRvcigp
IGNvbnN0OwogICAgIGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbE9yaWdpbjsgfQpAQCAtMTY4LDYgKzE2OSw4IEBAIHByaXZhdGU6CiAgICAgU2Ny
b2xsRWxhc3RpY2l0eSBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBTY3JvbGxFbGFz
dGljaXR5IG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7CiAKKyAgICBTY3JvbGxiYXJPdmVy
bGF5U3R5bGUgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVj
dCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29u
c3QgSW50UmVjdCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5o
CmluZGV4IGVkMzZmOTAuLmRkM2M1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWUuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyKikg
eyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCkge30KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KaW5kZXggZmYyZTE0ZS4uYWVk
ZWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0K
QEAgLTIwMyw2ICsyMDMsMjMgQEAgYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUlzT2Zmc2NyZWVu
KCkgY29uc3QKICAgICByZXR1cm4gIVtwbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gfHwgIVtbcGxh
dGZvcm1XaWRnZXQoKSB3aW5kb3ddIGlzVmlzaWJsZV07CiB9CiAKK3N0YXRpYyBpbmxpbmUgTlNT
Y3JvbGxlcktub2JTdHlsZSB0b05TU2Nyb2xsZXJLbm9iU3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlIHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICAgICAgY2FzZSBTY3JvbGxi
YXJPdmVybGF5U3R5bGVEYXJrOgorICAgICAgICAgICAgcmV0dXJuIE5TU2Nyb2xsZXJLbm9iU3R5
bGVEYXJrOworICAgICAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OgorICAgICAg
ICAgICAgcmV0dXJuIE5TU2Nyb2xsZXJLbm9iU3R5bGVMaWdodDsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBOU1Njcm9sbGVyS25vYlN0eWxlRGVmYXVsdDsKKyAgICB9Cit9
CisKK3ZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlIG92ZXJsYXlTdHlsZSkKK3sKKyAgICBbc2Nyb2xsVmlldygpIHNl
dFNjcm9sbGVyS25vYlN0eWxlOnRvTlNTY3JvbGxlcktub2JTdHlsZShvdmVybGF5U3R5bGUpXTsK
K30KKwogdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQ
b2ludCYgb3JpZ2luLCBib29sIHVwZGF0ZVBvc2l0aW9uQXRBbGwsIGJvb2wgdXBkYXRlUG9zaXRp
b25TeW5jaHJvbm91c2x5KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgKaW5kZXgg
OTc3YTY3ZC4uZmJiMmNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbGJhclRoZW1lTWFjLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIAogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgdXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqKTsKIAogICAg
IHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOwogICAgIHZpcnR1
YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggMzhkYTMzNC4uOTQ3NmQ3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bQpAQCAtMTYxLDYgKzE2MSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Ny
b2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBz
Y3JvbGxiYXJQYWludGVyID0gd2tNYWtlU2Nyb2xsYmFyUGFpbnRlcihzY3JvbGxiYXItPmNvbnRy
b2xTaXplKCksIGlzSG9yaXpvbnRhbCk7CiAgICAgc2Nyb2xsYmFyTWFwKCktPmFkZChzY3JvbGxi
YXIsIHNjcm9sbGJhclBhaW50ZXIpOwogICAgIHVwZGF0ZUVuYWJsZWRTdGF0ZShzY3JvbGxiYXIp
OworICAgIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3JvbGxiYXIpOwogI2Vsc2UKICAg
ICBzY3JvbGxiYXJNYXAoKS0+YWRkKHNjcm9sbGJhcik7CiAjZW5kaWYKQEAgLTE3Niw2ICsxNzcs
NyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBXS1Njcm9sbAogewogICAgIHNjcm9sbGJhck1hcCgpLT5zZXQo
c2Nyb2xsYmFyLCBuZXdQYWludGVyKTsKICAgICB1cGRhdGVFbmFibGVkU3RhdGUoc2Nyb2xsYmFy
KTsKKyAgICB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFyKTsKIH0KIAogV0tT
Y3JvbGxiYXJQYWludGVyUmVmIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFy
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQpAQCAtMjI2LDYgKzIyOCwyOSBAQCBib29sIFNjcm9sbGJh
clRoZW1lTWFjOjp1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAogI2VuZGlmCiB9CiAKKyNp
ZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCitzdGF0aWMgaW5saW5lIHdrU2Nyb2xsZXJLbm9i
U3R5bGUgdG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSBz
dHlsZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5
U3R5bGVEYXJrOgorICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHlsZURhcms7CisgICAg
Y2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDoKKyAgICAgICAgcmV0dXJuIHdrU2Nyb2xs
ZXJLbm9iU3R5bGVMaWdodDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gd2tTY3JvbGxl
cktub2JTdHlsZURlZmF1bHQ7CisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVNYWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqIHNjcm9sbGJhcikK
K3sKKyNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCisgICAgd2tTZXRTY3JvbGxiYXJQYWlu
dGVyS25vYlN0eWxlKHBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKSwgdG9TY3JvbGxiYXJQ
YWludGVyS25vYlN0eWxlKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKCkpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNjcm9sbGJhcik7CisjZW5k
aWYKK30KKwogZG91YmxlIFNjcm9sbGJhclRoZW1lTWFjOjppbml0aWFsQXV0b3Njcm9sbFRpbWVy
RGVsYXkoKQogewogICAgIHJldHVybiBnSW5pdGlhbEJ1dHRvbkRlbGF5OwpAQCAtNDMyLDIwICs0
NTcsNiBAQCBzdGF0aWMgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJh
clBhcnQgcGFydCkKICAgICB9CiB9CiAKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi1z
dGF0aWMgaW5saW5lIHdrU2Nyb2xsZXJLbm9iU3R5bGUgdG9TY3JvbGxiYXJQYWludGVyS25vYlN0
eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzdHlsZSkKLXsKLSAgICBzd2l0Y2ggKHN0eWxlKSB7
Ci0gICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEYXJrOgotICAgICAgICByZXR1cm4gd2tT
Y3JvbGxlcktub2JTdHlsZURhcms7Ci0gICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdo
dDoKLSAgICAgICAgcmV0dXJuIHdrU2Nyb2xsZXJLbm9iU3R5bGVMaWdodDsKLSAgICBkZWZhdWx0
OgotICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHlsZURlZmF1bHQ7Ci0gICAgfQotfQot
I2VuZGlmCi0KIHZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZUVuYWJsZWRTdGF0ZShTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKIHsKICNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCkBAIC00
ODAsMTAgKzQ5MSw2IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAgCiAgICAgU2Nyb2xs
QW5pbWF0b3JNYWMqIHNjcm9sbEFuaW1hdG9yID0gc3RhdGljX2Nhc3Q8U2Nyb2xsQW5pbWF0b3JN
YWMqPihzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbEFuaW1hdG9yKCkpOwogICAg
IHNjcm9sbEFuaW1hdG9yLT5zZXRJc0RyYXdpbmdJbnRvTGF5ZXIoY29udGV4dC0+aXNDQUxheWVy
Q29udGV4dCgpKTsKLQotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICB3a1NldFNj
cm9sbGJhclBhaW50ZXJLbm9iU3R5bGUocGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIpLCB0
b1Njcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5y
ZWNvbW1lbmRlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKSk7Ci0jZW5kaWYKICAgICAKICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRl
eHQtPmNsaXAoZGFtYWdlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CmluZGV4IDVkZDVjNDAuLjE3ZTMwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCkBAIC0zMzcsNiArMzM3LDggQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygp
OwogICAgICAgICB9CisKKyAgICAgICAgZnJhbWUoKS0+dmlldygpLT5yZWNhbGN1bGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDk4YThlYmMuLjdh
NWU4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wNy0xOCAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBTY3JvbGxiYXIgY29sb3Ig
aGV1cmlzdGljIG5lZWRzIHRvIGJlIGhvb2tlZCB1cCBpbiBXZWJLaXQxCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDIyMAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vOTU4OTE0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdG9yZSB0aGUgc2Nyb2xsZXIgc3R5bGUgb24gU2Nyb2xsYWJsZUFyZWEsIGFu
ZCByZWNvbXB1dGUgaXQgd2hlbmV2ZXIKKyAgICAgICAgdGhlIGRvY3VtZW50IG9yIGJvZHkgZWxl
bWVudCBiYWNrZ3JvdW5kIGNvbG9yIGNoYW5nZXMgb3IgdGhlIGJhc2UgYmFja2dyb3VuZAorICAg
ICAgICBjb2xvciBvZiB0aGUgc2Nyb2xsdmlldyBjaGFuZ2VzLiBBbHNvLCBtYWtlIHN1cmUgdG8g
cmVwYWludCB0aGUgc2Nyb2xsYmFycworICAgICAgICB3aGVuZXZlciB0aGUgc3R5bGUgY2hhbmdl
cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lOjpnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcik6CisKIDIwMTEt
MDctMTggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIHVzaW5nIGxvd2VyY2FzZSBwYXJhbWV0ZXIgbmFtZXMgZm9yIEFwcGxlQ29ubmVjdCBiZSBh
IHBsdWctaW4gcXVpcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCmluZGV4IDQ2Zjk5ZTMuLjkyYWFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNTYxLDcgKzU2MSwxMiBAQCBib29s
IFdlYkZyYW1lOjpnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcihkb3VibGUqIHJlZCwgZG91Ymxl
KiBncmVlbiwgZG91YmxlKiBibAogewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBDb2xvciBiZ0NvbG9yID0gbV9jb3JlRnJhbWUtPmdldERvY3VtZW50
QmFja2dyb3VuZENvbG9yKCk7CisKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2NvcmVGcmFtZS0+
dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ29s
b3IgYmdDb2xvciA9IHZpZXctPmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYgKCFi
Z0NvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0tIAoxLjcuNC40Cgo=
</data>
<flag name="review"
          id="96094"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="96095"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101341</attachid>
            <date>2011-07-19 10:40:34 -0700</date>
            <delta_ts>2011-07-21 12:40:33 -0700</delta_ts>
            <desc>remove updateStyleIfNeeded()</desc>
            <filename>0001-Scrollbar-color-heuristic-needs-to-be-hooked-up-in-W.patch</filename>
            <type>text/plain</type>
            <size>25247</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">RnJvbSA5OGU3MTYwZWY0YmRhNTJjYzI2MzU1OTJmZjZmMGQ1OTU5YWFiMTkyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW0gSG9ydG9uIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CkRhdGU6IE1vbiwgMTggSnVsIDIwMTEgMTU6MDI6MDMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBT
Y3JvbGxiYXIgY29sb3IgaGV1cmlzdGljIG5lZWRzIHRvIGJlIGhvb2tlZCB1cCBpbiBXZWJLaXQx
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyMjAKIDxyZGFyOi8v
cHJvYmxlbS85NTg5MTQwPgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTdG9yZSB0aGUg
c2Nyb2xsZXIgc3R5bGUgb24gU2Nyb2xsYWJsZUFyZWEsIGFuZCByZWNvbXB1dGUgaXQgd2hlbmV2
ZXIKdGhlIGRvY3VtZW50IG9yIGJvZHkgZWxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIGNoYW5nZXMg
b3IgdGhlIGJhc2UgYmFja2dyb3VuZApjb2xvciBvZiB0aGUgc2Nyb2xsdmlldyBjaGFuZ2VzLiBB
bHNvLCBtYWtlIHN1cmUgdG8gcmVwYWludCB0aGUgc2Nyb2xsYmFycwp3aGVuZXZlciB0aGUgc3R5
bGUgY2hhbmdlcy4KCk5vIG5ldyB0ZXN0cywgc2luY2UgdGhpcyBjb2RlIGlzIG9ubHkgZW5hYmxl
ZCBvbiBmdXR1cmUgdmVyc2lvbnMgb2YgTWFjIE9TIFguCi0tLQogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NCArKysrKysrKysrKysrCiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAgICAgICAgICAgfCAgIDQwIC0t
LS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMiAtCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgICAgICAgICAg
ICAgICAgfCAgIDczICsrKysrKysrKysrKysrKysrLS0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaCAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5jcHAgICAgICAgICAgIHwgICAxMCArKysKIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaCAgICAgICAgICAgICB8ICAgIDMgKwogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwICAgICAgIHwgICAyMSArKysrKysKIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggICAgICAgICB8ICAgIDUgKy0KIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmggICAgICAgICB8ICAgIDEgKwog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0gICAgIHwgICAxNyAr
KysrKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmggIHwg
ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0g
fCAgIDQzICsrKysrKysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxNiArKysrKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcCAgIHwgICAgNyArKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDIxMyBp
bnNlcnRpb25zKCspLCA3OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU5NjViYS4uOWVk
ZjY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDExLTA3LTE4ICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbGJhciBjb2xvciBo
ZXVyaXN0aWMgbmVlZHMgdG8gYmUgaG9va2VkIHVwIGluIFdlYktpdDEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjIwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS85NTg5MTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFN0b3JlIHRoZSBzY3JvbGxlciBzdHlsZSBvbiBTY3JvbGxhYmxlQXJlYSwgYW5k
IHJlY29tcHV0ZSBpdCB3aGVuZXZlcgorICAgICAgICB0aGUgZG9jdW1lbnQgb3IgYm9keSBlbGVt
ZW50IGJhY2tncm91bmQgY29sb3IgY2hhbmdlcyBvciB0aGUgYmFzZSBiYWNrZ3JvdW5kCisgICAg
ICAgIGNvbG9yIG9mIHRoZSBzY3JvbGx2aWV3IGNoYW5nZXMuIEFsc28sIG1ha2Ugc3VyZSB0byBy
ZXBhaW50IHRoZSBzY3JvbGxiYXJzCisgICAgICAgIHdoZW5ldmVyIHRoZSBzdHlsZSBjaGFuZ2Vz
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgdGhpcyBjb2RlIGlzIG9ubHkgZW5hYmxl
ZCBvbiBmdXR1cmUgdmVyc2lvbnMgb2YgTWFjIE9TIFguCisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
OjpnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IpOiBSZW5hbWVkLgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dG9OU1Nj
cm9sbGVyS25vYlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3Jt
U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjp0b1Njcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjpzdHlsZURpZENoYW5nZSk6CisKIDIwMTEtMDctMTggIE1hcmsgSGFobmVuYmVyZyAgPG1o
YWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBKU0MgdG8gcmVwbGFjZSBK
U0NlbGw6Om9wZXJhdG9yIG5ldyB3aXRoIHN0YXRpYyBjcmVhdGUgbWV0aG9kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDM1MzIwZmYuLjY3YmQwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0x
MjMyLDcgKzEyMzIsNiBAQCBfX1pOSzdXZWJDb3JlNUZyYW1lMTRzZWxlY3Rpb25JbWFnZUViCiBf
X1pOSzdXZWJDb3JlNUZyYW1lMTVjb250ZW50UmVuZGVyZXJFdgogX19aTks3V2ViQ29yZTVGcmFt
ZTE1bGF5ZXJUcmVlQXNUZXh0RWIKIF9fWk5LN1dlYkNvcmU1RnJhbWUxOGRvY3VtZW50VHlwZVN0
cmluZ0V2Ci1fX1pOSzdXZWJDb3JlNUZyYW1lMjZnZXREb2N1bWVudEJhY2tncm91bmRDb2xvckV2
CiBfX1pOSzdXZWJDb3JlNUZyYW1lMzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJL
TjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTVGcmFtZThzZXR0aW5nc0V2CiBfX1pOSzdXZWJD
b3JlNUZyYW1lOWRvbVdpbmRvd0V2CkBAIC0xMzI1LDYgKzEzMjQsNyBAQCBfX1pOSzdXZWJDb3Jl
OUZyYW1lVmlldzEzcGFpbnRCZWhhdmlvckV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzE5YmFz
ZUJhY2tncm91bmRDb2xvckV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzIwaXNTb2Z0d2FyZVJl
bmRlcmFibGVFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcyMndpbmRvd0NsaXBSZWN0Rm9yTGF5
ZXJFUEtOU18xMVJlbmRlckxheWVyRWIKK19fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MjNkb2N1bWVu
dEJhY2tncm91bmRDb2xvckV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzI4aXNFbmNsb3NlZElu
Q29tcG9zaXRpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlOVBhZ2VDYWNoZTEwZnJhbWVDb3VudEV2
CiBfX1pOSzdXZWJDb3JlOVBhZ2VDYWNoZTIxYXV0b3JlbGVhc2VkUGFnZUNvdW50RXYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKaW5kZXggMWIyZTFhNi4uZjNhYWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
QEAgLTUwNyw0NiArNTA3LDYgQEAgU3RyaW5nIEZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVt
ZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqIGUKICAgICAKICAgICBy
ZXR1cm4gbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGxhYmVscywgZWxlbWVudC0+Z2V0QXR0cmli
dXRlKGlkQXR0cikpOwogfQotICAgIAotQ29sb3IgRnJhbWU6OmdldERvY3VtZW50QmFja2dyb3Vu
ZENvbG9yKCkgY29uc3QKLXsKLSAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU5NTQwPiBXZSBibGVuZCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgotICAgIC8v
IHRoZSBkb2N1bWVudCBhbmQgdGhlIGJvZHkgYWdhaW5zdCB0aGUgYmFzZSBiYWNrZ3JvdW5kIGNv
bG9yIG9mIHRoZSBmcmFtZSB2aWV3LgotICAgIC8vIEJhY2tncm91bmQgaW1hZ2VzIGFyZSB1bmZv
cnR1bmF0ZWx5IGltcHJhY3RpY2FsIHRvIGluY2x1ZGUuCi0KLSAgICAvLyBSZXR1cm4gaW52YWxp
ZCBDb2xvciBvYmplY3RzIHdoZW5ldmVyIHRoZXJlIGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlv
bi4KLSAgICBpZiAoIW1fZG9jKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAgIEVsZW1l
bnQqIGh0bWxFbGVtZW50ID0gbV9kb2MtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIEVsZW1lbnQq
IGJvZHlFbGVtZW50ID0gbV9kb2MtPmJvZHkoKTsKLQotICAgIC8vIHN0YXJ0IGFzIGludmFsaWQg
Y29sb3JzCi0gICAgQ29sb3IgaHRtbEJhY2tncm91bmRDb2xvcjsKLSAgICBDb2xvciBib2R5QmFj
a2dyb3VuZENvbG9yOwotICAgIGlmIChodG1sRWxlbWVudCAmJiBodG1sRWxlbWVudC0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgaHRtbEJhY2tncm91bmRDb2xvciA9IGh0bWxFbGVtZW50LT5yZW5kZXJl
cigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOwotICAgIGlmIChib2R5RWxlbWVudCAmJiBib2R5RWxlbWVudC0+cmVuZGVyZXIoKSkK
LSAgICAgICAgYm9keUJhY2tncm91bmRDb2xvciA9IGJvZHlFbGVtZW50LT5yZW5kZXJlcigpLT5z
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
OwotICAgIAotICAgIGlmICghYm9keUJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgaWYgKCFodG1sQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVy
biBDb2xvcigpOwotICAgICAgICByZXR1cm4gdmlldygpLT5iYXNlQmFja2dyb3VuZENvbG9yKCku
YmxlbmQoaHRtbEJhY2tncm91bmRDb2xvcik7Ci0gICAgfQotICAgIAotICAgIGlmICghaHRtbEJh
Y2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB2aWV3KCktPmJhc2VCYWNr
Z3JvdW5kQ29sb3IoKS5ibGVuZChib2R5QmFja2dyb3VuZENvbG9yKTsKLSAgICAKLSAgICAvLyBX
ZSB0YWtlIHRoZSBhZ2dyZWdhdGUgb2YgdGhlIGJhc2UgYmFja2dyb3VuZCBjb2xvcgotICAgIC8v
IHRoZSA8aHRtbD4gYmFja2dyb3VuZCBjb2xvciwgYW5kIHRoZSA8Ym9keT4KLSAgICAvLyBiYWNr
Z3JvdW5kIGNvbG9yIHRvIGZpbmQgdGhlIGRvY3VtZW50IGNvbG9yLiBUaGUKLSAgICAvLyBhZGRp
dGlvbiBvZiB0aGUgYmFzZSBiYWNrZ3JvdW5kIGNvbG9yIGlzIG5vdAotICAgIC8vIHRlY2huaWNh
bGx5IHBhcnQgb2YgdGhlIGRvY3VtZW50IGJhY2tncm91bmQsIGJ1dCBpdAotICAgIC8vIG90aGVy
d2lzZSBwb3NlcyBwcm9ibGVtcyB3aGVuIHRoZSBhZ2dyZWdhdGUgaXMgbm90Ci0gICAgLy8gZnVs
bHkgb3BhcXVlLgotICAgIHJldHVybiB2aWV3KCktPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKS5ibGVu
ZChodG1sQmFja2dyb3VuZENvbG9yKS5ibGVuZChib2R5QmFja2dyb3VuZENvbG9yKTsKLX0KIAog
dm9pZCBGcmFtZTo6c2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgRmxvYXRTaXplJiBw
YWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBBZGp1c3RWaWV3U2l6ZU9yTm90IHNo
b3VsZEFkanVzdFZpZXdTaXplKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDk1MGE3M2YuLjY0ODZj
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE5Miw4ICsxOTIsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFN0cmluZyBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJl
c3Npb24qLCBIVE1MVGFibGVDZWxsRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9t
U3RhcnRPZkNlbGwpOwogICAgICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVu
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50Kiwgc2l6ZV90KiByZXN1bHRE
aXN0YW5jZSwgYm9vbCogcmVzdWx0SXNJbkNlbGxBYm92ZSk7CiAgICAgICAgIFN0cmluZyBtYXRj
aExhYmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1l
bnQqKTsKLQotICAgICAgICBDb2xvciBnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0
OwogICAgICAgICAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIE5TU3RyaW5nKiBzZWFyY2hG
b3JMYWJlbHNCZWZvcmVFbGVtZW50KE5TQXJyYXkqIGxhYmVscywgRWxlbWVudCosIHNpemVfdCog
cmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCmluZGV4IGZjMzMwOTguLjc0NGUzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKQEAgLTMyNSwyMSArMzI1LDI0IEBAIHZvaWQgRnJhbWVWaWV3Ojp3aWxsUmVtb3Zl
SG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICAgICAgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+ZGlkUmVtb3ZlV2hlZWxFdmVudEhhbmRsZXIoKTsKIH0KIAotU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlIEZyYW1lVmlldzo6cmVjb21tZW5kZWRTY3JvbGxiYXJPdmVybGF5U3R5
bGUoKSBjb25zdAordm9pZCBGcmFtZVZpZXc6OnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlKCkKIHsKLSAgICBDb2xvciBiZ0NvbG9yID0gbV9mcmFtZS0+Z2V0RG9jdW1lbnRCYWNrZ3Jv
dW5kQ29sb3IoKTsKLSAgICBpZiAoIWJnQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4g
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDsKLSAgICAKLSAgICAvLyBSZWR1Y2UgdGhlIGJh
Y2tncm91bmQgY29sb3IgZnJvbSBSR0IgdG8gYSBsaWdodG5lc3MgdmFsdWUKLSAgICAvLyBhbmQg
ZGV0ZXJtaW5lIHdoaWNoIHNjcm9sbGJhciBzdHlsZSB0byB1c2UgYmFzZWQgb24gYSBsaWdodG5l
c3MKLSAgICAvLyBoZXVyaXN0aWMuCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRu
ZXNzOwotICAgIGJnQ29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKLSAg
ICBpZiAobGlnaHRuZXNzID4gLjUpCi0gICAgICAgIHJldHVybiBTY3JvbGxiYXJPdmVybGF5U3R5
bGVEZWZhdWx0OwotICAgIAotICAgIHJldHVybiBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDsK
KyAgICBTY3JvbGxiYXJPdmVybGF5U3R5bGUgb2xkT3ZlcmxheVN0eWxlID0gc2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKCk7CisgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG92ZXJsYXlTdHlsZSA9IFNj
cm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ7CisKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3Ig
PSBkb2N1bWVudEJhY2tncm91bmRDb2xvcigpOworICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNW
YWxpZCgpKSB7CisgICAgICAgIC8vIFJlZHVjZSB0aGUgYmFja2dyb3VuZCBjb2xvciBmcm9tIFJH
QiB0byBhIGxpZ2h0bmVzcyB2YWx1ZQorICAgICAgICAvLyBhbmQgZGV0ZXJtaW5lIHdoaWNoIHNj
cm9sbGJhciBzdHlsZSB0byB1c2UgYmFzZWQgb24gYSBsaWdodG5lc3MKKyAgICAgICAgLy8gaGV1
cmlzdGljLgorICAgICAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7CisgICAg
ICAgIGJhY2tncm91bmRDb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOwor
ICAgICAgICBpZiAobGlnaHRuZXNzIDw9IC41KQorICAgICAgICAgICAgb3ZlcmxheVN0eWxlID0g
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ7CisgICAgfQorCisgICAgaWYgKG9sZE92ZXJsYXlT
dHlsZSAhPSBvdmVybGF5U3R5bGUpCisgICAgICAgIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShv
dmVybGF5U3R5bGUpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6Y2xlYXIoKQpAQCAtMTg5NSw2ICsx
ODk4LDggQEAgdm9pZCBGcmFtZVZpZXc6OnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImIGJhY2tncm91bmRDb2xvcikKICAgICAgICAgbV9iYXNlQmFja2dyb3VuZENvbG9yID0gQ29s
b3I6OndoaXRlOwogICAgIGVsc2UKICAgICAgICAgbV9iYXNlQmFja2dyb3VuZENvbG9yID0gYmFj
a2dyb3VuZENvbG9yOworCisgICAgcmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsK
IH0KIAogdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBD
b2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIHRyYW5zcGFyZW50KQpAQCAtMjM2Nyw2ICsyMzcy
LDQ2IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lCiAgICAgU2Nyb2xsVmlldzo6cGFpbnRTY3Jv
bGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7CiB9CiAKK0NvbG9yIEZyYW1lVmlldzo6ZG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIC8vIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk1NDA+IFdlIGJsZW5kIHRoZSBiYWNrZ3JvdW5kIGNv
bG9yIG9mCisgICAgLy8gdGhlIGRvY3VtZW50IGFuZCB0aGUgYm9keSBhZ2FpbnN0IHRoZSBiYXNl
IGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGZyYW1lIHZpZXcuCisgICAgLy8gQmFja2dyb3VuZCBp
bWFnZXMgYXJlIHVuZm9ydHVuYXRlbHkgaW1wcmFjdGljYWwgdG8gaW5jbHVkZS4KKworICAgIC8v
IFJldHVybiBpbnZhbGlkIENvbG9yIG9iamVjdHMgd2hlbmV2ZXIgdGhlcmUgaXMgaW5zdWZmaWNp
ZW50IGluZm9ybWF0aW9uLgorICAgIGlmICghZnJhbWUoKS0+ZG9jdW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIENvbG9yKCk7CisKKyAgICBFbGVtZW50KiBodG1sRWxlbWVudCA9IGZyYW1lKCktPmRv
Y3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIEVsZW1lbnQqIGJvZHlFbGVtZW50ID0g
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Ym9keSgpOworCisgICAgLy8gU3RhcnQgd2l0aCBpbnZhbGlk
IGNvbG9ycy4KKyAgICBDb2xvciBodG1sQmFja2dyb3VuZENvbG9yOworICAgIENvbG9yIGJvZHlC
YWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKGh0bWxFbGVtZW50ICYmIGh0bWxFbGVtZW50LT5yZW5k
ZXJlcigpKQorICAgICAgICBodG1sQmFja2dyb3VuZENvbG9yID0gaHRtbEVsZW1lbnQtPnJlbmRl
cmVyKCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvcik7CisgICAgaWYgKGJvZHlFbGVtZW50ICYmIGJvZHlFbGVtZW50LT5yZW5kZXJlcigp
KQorICAgICAgICBib2R5QmFja2dyb3VuZENvbG9yID0gYm9keUVsZW1lbnQtPnJlbmRlcmVyKCkt
PnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cik7CisKKyAgICBpZiAoIWJvZHlCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAg
IGlmICghaHRtbEJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKyAgICAgICAgcmV0dXJuIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKS5ibGVuZChodG1s
QmFja2dyb3VuZENvbG9yKTsKKyAgICB9CisKKyAgICBpZiAoIWh0bWxCYWNrZ3JvdW5kQ29sb3Iu
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gYmFzZUJhY2tncm91bmRDb2xvcigpLmJsZW5kKGJv
ZHlCYWNrZ3JvdW5kQ29sb3IpOworCisgICAgLy8gV2UgdGFrZSB0aGUgYWdncmVnYXRlIG9mIHRo
ZSBiYXNlIGJhY2tncm91bmQgY29sb3IKKyAgICAvLyB0aGUgPGh0bWw+IGJhY2tncm91bmQgY29s
b3IsIGFuZCB0aGUgPGJvZHk+CisgICAgLy8gYmFja2dyb3VuZCBjb2xvciB0byBmaW5kIHRoZSBk
b2N1bWVudCBjb2xvci4gVGhlCisgICAgLy8gYWRkaXRpb24gb2YgdGhlIGJhc2UgYmFja2dyb3Vu
ZCBjb2xvciBpcyBub3QKKyAgICAvLyB0ZWNobmljYWxseSBwYXJ0IG9mIHRoZSBkb2N1bWVudCBi
YWNrZ3JvdW5kLCBidXQgaXQKKyAgICAvLyBvdGhlcndpc2UgcG9zZXMgcHJvYmxlbXMgd2hlbiB0
aGUgYWdncmVnYXRlIGlzIG5vdAorICAgIC8vIGZ1bGx5IG9wYXF1ZS4KKyAgICByZXR1cm4gYmFz
ZUJhY2tncm91bmRDb2xvcigpLmJsZW5kKGh0bWxCYWNrZ3JvdW5kQ29sb3IpLmJsZW5kKGJvZHlC
YWNrZ3JvdW5kQ29sb3IpOworfQorCiBib29sIEZyYW1lVmlldzo6aGFzQ3VzdG9tU2Nyb2xsYmFy
cygpIGNvbnN0CiB7CiAgICAgY29uc3QgSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+KiB2aWV3Q2hp
bGRyZW4gPSBjaGlsZHJlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZjgyODMxOS4u
MDM2YjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzZXRTY3JvbGxiYXJzKCk7CiAgICAgdm9pZCByZXNldFNjcm9sbGJh
cnNBbmRDbGVhckNvbnRlbnRzU2l6ZSgpOwogICAgIHZvaWQgZGV0YWNoQ3VzdG9tU2Nyb2xsYmFy
cygpOwotICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHJlY29tbWVuZGVkU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlY2FsY3VsYXRlU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKCk7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTIyMiw2ICsy
MjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25z
dCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAKKyAgICBDb2xvciBkb2N1bWVudEJhY2tncm91
bmRDb2xvcigpIGNvbnN0OworCiAgICAgc3RhdGljIGRvdWJsZSBjdXJyZW50UGFpbnRUaW1lU3Rh
bXAoKSB7IHJldHVybiBzQ3VycmVudFBhaW50VGltZVN0YW1wOyB9IC8vIHJldHVybnMgMCBpZiBu
b3QgcGFpbnRpbmcKICAgICAKICAgICB2b2lkIHVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRS
ZWN1cnNpdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggZjRk
MDYzNC4uNTJkMWZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAg
LTc3OSw2ICs3NzksMTIgQEAgU2Nyb2xsYmFyKiBTY3JvbGxWaWV3OjpzY3JvbGxiYXJBdFBvaW50
KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBT
Y3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
IG92ZXJsYXlTdHlsZSkKK3sKKyAgICBTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKG92ZXJsYXlTdHlsZSk7CisgICAgcGxhdGZvcm1TZXRTY3JvbGxiYXJPdmVybGF5U3R5
bGUob3ZlcmxheVN0eWxlKTsKK30KKwogdm9pZCBTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KFBsYXRm
b3JtV2hlZWxFdmVudCYgZSkKIHsKICAgICAvLyBXZSBkb24ndCBhbGxvdyBtb3VzZSB3aGVlbGlu
ZyB0byBoYXBwZW4gaW4gYSBTY3JvbGxWaWV3IHRoYXQgaGFzIGhhZCBpdHMgc2Nyb2xsYmFycyBl
eHBsaWNpdGx5IGRpc2FibGVkLgpAQCAtMTI3OSw2ICsxMjg1LDEwIEBAIHZvaWQgU2Nyb2xsVmll
dzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmLCBib29sIHVwZGF0ZVBv
c2l0aW9uQXRBCiB7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJP
dmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKQoreworfQorCiAjZW5kaWYKIAogI2lm
ICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShXWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaAppbmRleCAxN2JiOGViLi45ZmFlYTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCkBAIC0xMDgsNiArMTA4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29s
IGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAg
dmlydHVhbCB2b2lkIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5
bGUpOworCiAgICAgLy8gQnkgZGVmYXVsdCB5b3Ugb25seSByZWNlaXZlIHBhaW50IGV2ZW50cyBm
b3IgdGhlIGFyZWEgdGhhdCBpcyB2aXNpYmxlLiBJbiB0aGUgY2FzZSBvZiB1c2luZyBhCiAgICAg
Ly8gdGlsZWQgYmFja2luZyBzdG9yZSwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgc2V0LCBzbyB0aGF0
IHRoZSB2aWV3IHBhaW50cyB0aGUgZW50aXJlIGNvbnRlbnRzLgogICAgIGJvb2wgcGFpbnRzRW50
aXJlQ29udGVudHMoKSBjb25zdCB7IHJldHVybiBtX3BhaW50c0VudGlyZUNvbnRlbnRzOyB9CkBA
IC0zODksNiArMzkxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0U2Nyb2xsYmFy
c1N1cHByZXNzZWQoYm9vbCByZXBhaW50T25VbnN1cHByZXNzKTsKICAgICB2b2lkIHBsYXRmb3Jt
UmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYsIGJvb2wgbm93KTsKICAgICBi
b29sIHBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdDsKKyAgICB2b2lkIHBsYXRmb3JtU2V0U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSk7CiAgICAKICAgICB2b2lk
IHBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50JiwgYm9vbCB1cGRhdGVQb3Np
dGlvbkF0QWxsLCBib29sIHVwZGF0ZVBvc2l0aW9uU3luY2hyb25vdXNseSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCBmOGU0MGEyLi4xYjVlYmYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0xODIs
NiArMTgyLDkgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6d2lsbEVuZExpdmVSZXNpemUoKQogdm9p
ZCBTY3JvbGxhYmxlQXJlYTo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCiB7CiAgICAgc2Nyb2xsQW5pbWF0b3IoKS0+ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIo
c2Nyb2xsYmFyKTsKKworICAgIC8vIDxyZGFyOi8vcHJvYmxlbS85Nzk3MjUzPiBBcHBLaXQgcmVz
ZXRzIHRoZSBzY3JvbGxiYXIncyBzdHlsZSB3aGVuIHlvdSBhdHRhY2ggYSBzY3JvbGxiYXIKKyAg
ICBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkpOwogfQog
CiB2b2lkIFNjcm9sbGFibGVBcmVhOjp3aWxsUmVtb3ZlVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCkBAIC0xOTIsNiArMTk1LDkgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6
d2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogdm9pZCBT
Y3JvbGxhYmxlQXJlYTo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9s
bGJhcikKIHsKICAgICBzY3JvbGxBbmltYXRvcigpLT5kaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFy
KHNjcm9sbGJhcik7CisKKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vOTc5NzI1Mz4gQXBwS2l0IHJl
c2V0cyB0aGUgc2Nyb2xsYmFyJ3Mgc3R5bGUgd2hlbiB5b3UgYXR0YWNoIGEgc2Nyb2xsYmFyCisg
ICAgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKTsKIH0K
IAogdm9pZCBTY3JvbGxhYmxlQXJlYTo6d2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCkBAIC0yMDUsNiArMjExLDIxIEBAIGJvb2wgU2Nyb2xsYWJsZUFy
ZWE6Omhhc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3QKICAgICAgICAgfHwgKGhvcml6b250YWxT
Y3JvbGxiYXIoKSAmJiBob3Jpem9udGFsU2Nyb2xsYmFyKCktPmlzT3ZlcmxheVNjcm9sbGJhcigp
KTsKIH0KIAordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNj
cm9sbGJhck92ZXJsYXlTdHlsZSBvdmVybGF5U3R5bGUpCit7CisgICAgbV9zY3JvbGxiYXJPdmVy
bGF5U3R5bGUgPSBvdmVybGF5U3R5bGU7CisKKyAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbGJhcigp
KSB7CisgICAgICAgIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpLT51cGRhdGVTY3JvbGxi
YXJPdmVybGF5U3R5bGUoaG9yaXpvbnRhbFNjcm9sbGJhcigpKTsKKyAgICAgICAgaG9yaXpvbnRh
bFNjcm9sbGJhcigpLT5pbnZhbGlkYXRlKCk7CisgICAgfQorICAgIAorICAgIGlmICh2ZXJ0aWNh
bFNjcm9sbGJhcigpKSB7CisgICAgICAgIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpLT51
cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUodmVydGljYWxTY3JvbGxiYXIoKSk7CisgICAgICAg
IHZlcnRpY2FsU2Nyb2xsYmFyKCktPmludmFsaWRhdGUoKTsKKyAgICB9Cit9CisKIGJvb2wgU2Ny
b2xsYWJsZUFyZWE6OmlzUGlubmVkSW5EaXJlY3Rpb24oY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEpIGNvbnN0CiB7CiAgICAgaWYgKHNjcm9sbERlbHRhLndpZHRoKCkgPCAwICYmIGlzSG9yaXpv
bnRhbFNjcm9sbGVyUGlubmVkVG9NaW5pbXVtUG9zaXRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDAyZGI3ODQuLmE5OGYyMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNzcsNyArNzcsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJh
ciopOwogCiAgICAgYm9vbCBoYXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0OwotICAgIHZpcnR1
YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHJlY29tbWVuZGVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KTsKKyAgICBTY3JvbGxiYXJPdmVybGF5U3R5bGUgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7IH0KIAogICAgIFNjcm9sbEFuaW1h
dG9yKiBzY3JvbGxBbmltYXRvcigpIGNvbnN0OwogICAgIGNvbnN0IEludFBvaW50JiBzY3JvbGxP
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9yaWdpbjsgfQpAQCAtMTY4LDYgKzE2OSw4
IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eTsKICAgICBTY3JvbGxFbGFzdGljaXR5IG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7
CiAKKyAgICBTY3JvbGxiYXJPdmVybGF5U3R5bGUgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CisK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCmluZGV4IGVkMzZmOTAuLmRkM2M1ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoU2Nyb2xsYmFyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2Vk
KCkge30KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxWaWV3TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMu
bW0KaW5kZXggZmYyZTE0ZS4uMmFjOGYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbFZpZXdNYWMubW0KQEAgLTIwMyw2ICsyMDMsMjMgQEAgYm9vbCBTY3JvbGxWaWV3
OjpwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgY29uc3QKICAgICByZXR1cm4gIVtwbGF0Zm9ybVdpZGdl
dCgpIHdpbmRvd10gfHwgIVtbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIGlzVmlzaWJsZV07CiB9
CiAKK3N0YXRpYyBpbmxpbmUgTlNTY3JvbGxlcktub2JTdHlsZSB0b05TU2Nyb2xsZXJLbm9iU3R5
bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsK
KyAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZURhcms6CisgICAgICAgIHJldHVybiBOU1Nj
cm9sbGVyS25vYlN0eWxlRGFyazsKKyAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0
OgorICAgICAgICByZXR1cm4gTlNTY3JvbGxlcktub2JTdHlsZUxpZ2h0OworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBOU1Njcm9sbGVyS25vYlN0eWxlRGVmYXVsdDsKKyAgICB9Cit9CisK
K3ZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlIG92ZXJsYXlTdHlsZSkKK3sKKyAgICBbc2Nyb2xsVmlldygpIHNldFNj
cm9sbGVyS25vYlN0eWxlOnRvTlNTY3JvbGxlcktub2JTdHlsZShvdmVybGF5U3R5bGUpXTsKK30K
Kwogdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2lu
dCYgb3JpZ2luLCBib29sIHVwZGF0ZVBvc2l0aW9uQXRBbGwsIGJvb2wgdXBkYXRlUG9zaXRpb25T
eW5jaHJvbm91c2x5KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgKaW5kZXggOTc3
YTY3ZC4uZmJiMmNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbGJhclRoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bGJhclRoZW1lTWFjLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgdXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqKTsKIAogICAgIHZp
cnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOwogICAgIHZpcnR1YWwg
ZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggMzhkYTMzNC4uOTQ3NmQ3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpA
QCAtMTYxLDYgKzE2MSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBzY3Jv
bGxiYXJQYWludGVyID0gd2tNYWtlU2Nyb2xsYmFyUGFpbnRlcihzY3JvbGxiYXItPmNvbnRyb2xT
aXplKCksIGlzSG9yaXpvbnRhbCk7CiAgICAgc2Nyb2xsYmFyTWFwKCktPmFkZChzY3JvbGxiYXIs
IHNjcm9sbGJhclBhaW50ZXIpOwogICAgIHVwZGF0ZUVuYWJsZWRTdGF0ZShzY3JvbGxiYXIpOwor
ICAgIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3JvbGxiYXIpOwogI2Vsc2UKICAgICBz
Y3JvbGxiYXJNYXAoKS0+YWRkKHNjcm9sbGJhcik7CiAjZW5kaWYKQEAgLTE3Niw2ICsxNzcsNyBA
QCB2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBXS1Njcm9sbAogewogICAgIHNjcm9sbGJhck1hcCgpLT5zZXQoc2Ny
b2xsYmFyLCBuZXdQYWludGVyKTsKICAgICB1cGRhdGVFbmFibGVkU3RhdGUoc2Nyb2xsYmFyKTsK
KyAgICB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFyKTsKIH0KIAogV0tTY3Jv
bGxiYXJQYWludGVyUmVmIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQpAQCAtMjI2LDYgKzIyOCwyOSBAQCBib29sIFNjcm9sbGJhclRo
ZW1lTWFjOjp1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAogI2VuZGlmCiB9CiAKKyNpZiBV
U0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCitzdGF0aWMgaW5saW5lIHdrU2Nyb2xsZXJLbm9iU3R5
bGUgdG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzdHls
ZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5
bGVEYXJrOgorICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHlsZURhcms7CisgICAgY2Fz
ZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDoKKyAgICAgICAgcmV0dXJuIHdrU2Nyb2xsZXJL
bm9iU3R5bGVMaWdodDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktu
b2JTdHlsZURlZmF1bHQ7CisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVN
YWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sK
KyNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCisgICAgd2tTZXRTY3JvbGxiYXJQYWludGVy
S25vYlN0eWxlKHBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKSwgdG9TY3JvbGxiYXJQYWlu
dGVyS25vYlN0eWxlKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKCkpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNjcm9sbGJhcik7CisjZW5kaWYK
K30KKwogZG91YmxlIFNjcm9sbGJhclRoZW1lTWFjOjppbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVs
YXkoKQogewogICAgIHJldHVybiBnSW5pdGlhbEJ1dHRvbkRlbGF5OwpAQCAtNDMyLDIwICs0NTcs
NiBAQCBzdGF0aWMgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBh
cnQgcGFydCkKICAgICB9CiB9CiAKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi1zdGF0
aWMgaW5saW5lIHdrU2Nyb2xsZXJLbm9iU3R5bGUgdG9TY3JvbGxiYXJQYWludGVyS25vYlN0eWxl
KFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzdHlsZSkKLXsKLSAgICBzd2l0Y2ggKHN0eWxlKSB7Ci0g
ICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEYXJrOgotICAgICAgICByZXR1cm4gd2tTY3Jv
bGxlcktub2JTdHlsZURhcms7Ci0gICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDoK
LSAgICAgICAgcmV0dXJuIHdrU2Nyb2xsZXJLbm9iU3R5bGVMaWdodDsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gd2tTY3JvbGxlcktub2JTdHlsZURlZmF1bHQ7Ci0gICAgfQotfQotI2Vu
ZGlmCi0KIHZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxi
YXIqIHNjcm9sbGJhcikKIHsKICNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCkBAIC00ODAs
MTAgKzQ5MSw2IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAgCiAgICAgU2Nyb2xsQW5p
bWF0b3JNYWMqIHNjcm9sbEFuaW1hdG9yID0gc3RhdGljX2Nhc3Q8U2Nyb2xsQW5pbWF0b3JNYWMq
PihzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbEFuaW1hdG9yKCkpOwogICAgIHNj
cm9sbEFuaW1hdG9yLT5zZXRJc0RyYXdpbmdJbnRvTGF5ZXIoY29udGV4dC0+aXNDQUxheWVyQ29u
dGV4dCgpKTsKLQotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICB3a1NldFNjcm9s
bGJhclBhaW50ZXJLbm9iU3R5bGUocGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIpLCB0b1Nj
cm9sbGJhclBhaW50ZXJLbm9iU3R5bGUoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5yZWNv
bW1lbmRlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKSk7Ci0jZW5kaWYKICAgICAKICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRleHQt
PmNsaXAoZGFtYWdlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmlu
ZGV4IDVkZDVjNDAuLjE3ZTMwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0zMzcsNiArMzM3LDggQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwog
ICAgICAgICB9CisKKyAgICAgICAgZnJhbWUoKS0+dmlldygpLT5yZWNhbGN1bGF0ZVNjcm9sbGJh
ck92ZXJsYXlTdHlsZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDk4YThlYmMuLjdhNWU4
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wNy0xOCAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBTY3JvbGxiYXIgY29sb3IgaGV1
cmlzdGljIG5lZWRzIHRvIGJlIGhvb2tlZCB1cCBpbiBXZWJLaXQxCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDIyMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vOTU4OTE0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdG9yZSB0aGUgc2Nyb2xsZXIgc3R5bGUgb24gU2Nyb2xsYWJsZUFyZWEsIGFuZCBy
ZWNvbXB1dGUgaXQgd2hlbmV2ZXIKKyAgICAgICAgdGhlIGRvY3VtZW50IG9yIGJvZHkgZWxlbWVu
dCBiYWNrZ3JvdW5kIGNvbG9yIGNoYW5nZXMgb3IgdGhlIGJhc2UgYmFja2dyb3VuZAorICAgICAg
ICBjb2xvciBvZiB0aGUgc2Nyb2xsdmlldyBjaGFuZ2VzLiBBbHNvLCBtYWtlIHN1cmUgdG8gcmVw
YWludCB0aGUgc2Nyb2xsYmFycworICAgICAgICB3aGVuZXZlciB0aGUgc3R5bGUgY2hhbmdlcy4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcik6CisKIDIwMTEtMDct
MTggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IHVzaW5nIGxvd2VyY2FzZSBwYXJhbWV0ZXIgbmFtZXMgZm9yIEFwcGxlQ29ubmVjdCBiZSBhIHBs
dWctaW4gcXVpcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCmluZGV4IDQ2Zjk5ZTMuLjkyYWFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNTYxLDcgKzU2MSwxMiBAQCBib29sIFdl
YkZyYW1lOjpnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcihkb3VibGUqIHJlZCwgZG91YmxlKiBn
cmVlbiwgZG91YmxlKiBibAogewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBDb2xvciBiZ0NvbG9yID0gbV9jb3JlRnJhbWUtPmdldERvY3VtZW50QmFj
a2dyb3VuZENvbG9yKCk7CisKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2NvcmVGcmFtZS0+dmll
dygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ29sb3Ig
YmdDb2xvciA9IHZpZXctPmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYgKCFiZ0Nv
bG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0tIAoxLjcuNC40Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>