<?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>23556</bug_id>
          
          <creation_ts>2009-01-26 15:37:43 -0800</creation_ts>
          <short_desc>Right-to-left pages should be scrollable to reveal left overflow</short_desc>
          <delta_ts>2011-03-07 12:08:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>525.x (Safari 3.2)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://tendu.tombigel.com/he</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>54485</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tom Bigelajzen">tombigel</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>hbono</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>jshin</cc>
    
    <cc>mitz</cc>
    
    <cc>playmobil</cc>
    
    <cc>progame+wk</cc>
    
    <cc>robin.qiu</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tombigel</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>107101</commentid>
    <comment_count>0</comment_count>
    <who name="Tom Bigelajzen">tombigel</who>
    <bug_when>2009-01-26 15:37:43 -0800</bug_when>
    <thetext>Tested on: 
Sfari 3.2.1 - XP, 
Midori 0.12 - Ubuntu (libwebkit 1.01.4+r40220)
Google Chrome 1.0.154.43 - XP

In every page I browsed where &lt;body dir=&quot;rtl&quot;&gt; or body{direction:rtl} is defined, there is no horizontal scrollbar when the window is narrower then the page width.

To reproduce - browse any Hebrew/Arabic page (you can try mine - http://tombigel.com or http://tendu.tombigel.com)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107102</commentid>
    <comment_count>1</comment_count>
    <who name="Tom Bigelajzen">tombigel</who>
    <bug_when>2009-01-26 15:39:58 -0800</bug_when>
    <thetext>Just a fix for last comment, tombigel.com is in english so it doesn&apos;t help here... sorry, force of habbit.
http://tendu.tombigel.com/he is in hebrew</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107310</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-28 02:51:09 -0800</bug_when>
    <thetext>Confirmed with r40246.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107322</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-01-28 07:15:44 -0800</bug_when>
    <thetext>Duplicate of bug 3352?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107341</commentid>
    <comment_count>4</comment_count>
    <who name="Tom Bigelajzen">tombigel</who>
    <bug_when>2009-01-28 09:57:11 -0800</bug_when>
    <thetext>I don&apos;t think so.
This bug is a specific bug for RTL pages.
the same page without RTL definition renders just fine (you can press the &quot;english&quot; link in tendu.tombigel.com, and see, same HTML, english content, no direction:rtl on &lt;body&gt;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114318</commentid>
    <comment_count>5</comment_count>
      <attachid>28754</attachid>
    <who name="Yoah Bar-David">yoah</who>
    <bug_when>2009-03-19 09:13:24 -0700</bug_when>
    <thetext>Created attachment 28754
Simpler example, toggling rtl toggles also the bottom scrollbar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118365</commentid>
    <comment_count>6</comment_count>
      <attachid>29675</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-04-22 00:10:39 -0700</bug_when>
    <thetext>Created attachment 29675
A workaround fix

As far as I investigated on my MacBook, it is an edge-case problem caused by discrepancy (sorry, I cannot figure out any better words) between FrameView and RenderBlock.
FrameView trims the left side of its children when their offsetLeft is negative. (It is an expected behavior.) On the other hand, RenderBlock::determineHorizontalPosition may set a negative value to the offsetLeft value of an RTL element wider than the window width. (It is also an expected behavior.)
So, when FrameView has a child RTL element wider than the window width, RenderBlock::determineHorizontalPosition set a negative value to the offsetLeft value of the RTL element and FrameView trims its left side without displaying a horizontal scrollbar.

Even Though I&apos;m not confident this is a right fix, I wrote a workaround fix and a layout test for this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118366</commentid>
    <comment_count>7</comment_count>
      <attachid>29676</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-04-22 00:23:16 -0700</bug_when>
    <thetext>Created attachment 29676
a workaround fix 2

Sorry, I attached a wrong fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118956</commentid>
    <comment_count>8</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-04-27 02:10:19 -0700</bug_when>
    <thetext>Are there any persons who can review my fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121257</commentid>
    <comment_count>9</comment_count>
    <who name="Yair Yogev">progame+wk</who>
    <bug_when>2009-05-14 04:19:21 -0700</bug_when>
    <thetext>still stuck in review? :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122504</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-21 19:15:46 -0700</bug_when>
    <thetext>I just emailed hyatt and mitz directly asking for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122566</commentid>
    <comment_count>11</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 00:03:17 -0700</bug_when>
    <thetext>The patch sounds conceptually right to me, but it would be nice to have input from an expert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122880</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-05-23 12:35:39 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; The patch sounds conceptually right to me, but it would be nice to have input
&gt; from an expert.

I agree on both counts.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122893</commentid>
    <comment_count>13</comment_count>
      <attachid>29676</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-05-23 16:25:05 -0700</bug_when>
    <thetext>Comment on attachment 29676
a workaround fix 2

I don&apos;t really understand why only the &lt;body&gt; would be special cased here.  This may need more discussion, as I really don&apos;t understand the intent of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122894</commentid>
    <comment_count>14</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-05-23 16:26:22 -0700</bug_when>
    <thetext>What do other browsers do in this situation (quirks and strict mode)?  It&apos;s not clear to me that shrinking the width of an element is the right thing to do here.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160762</commentid>
    <comment_count>15</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-11-05 01:15:47 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; What do other browsers do in this situation (quirks and strict mode)?  It&apos;s not
&gt; clear to me that shrinking the width of an element is the right thing to do
&gt; here.

Sorry for my very slow response.
To show the test file in my fix 2 with IE8 and Firefox 3, their &quot;document.getElementById(&apos;test&apos;).offsetLeft&quot; values become negative. So, my workaround, which moves the &lt;body&gt; element so that the above value always become non-negative, is wrong in terms of browser compatibility.
I&apos;m finding other solutions for this bug.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165231</commentid>
    <comment_count>16</comment_count>
      <attachid>43559</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-11-19 23:42:34 -0800</bug_when>
    <thetext>Created attachment 43559
A workaround fix 3

(In reply to comment #15)
&gt; I&apos;m finding other solutions for this bug.

I have updated my fix to increase the left margin of an RTL element to prevent its child elements (whose directions are also RTL) from being clipped.
Even tough I&apos;m not confident this is the right fix, is it possible to review this change and give me your comments?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165701</commentid>
    <comment_count>17</comment_count>
      <attachid>43559</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-11-22 02:10:42 -0800</bug_when>
    <thetext>Comment on attachment 43559
A workaround fix 3

I&apos;m not a reviewer, but here are my comments.
Hyatt or Dan should probably give their opinion on whether there&apos;s a better fix.

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; +        // Update the minimal left position.
Can you add some more details and point to the bug URL from the comment.

&gt; +        m_rtlMinChildPosition = min(chPos, m_rtlMinChildPosition);
ASSERT(m_rtlMinChildPosition &lt;= 0);

&gt; +    // Reset the minimal left position for RTL child elements before start layouting children.
// Reset before preforming child layout.
&gt; +    m_rtlMinChildPosition = 0;

&gt; +    // Override the RenderBox::marginLeft().
// Override RenderBox::marginLeft().
 
&gt; Property changes on: LayoutTests/fast/text/international/rtl-unexpected-underflow.html
&gt; ___________________________________________________________________
&gt; Name: svn:executable
&gt;    + *
Is this OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165964</commentid>
    <comment_count>18</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-11-23 16:49:47 -0800</bug_when>
    <thetext>It&apos;s also http://crbug.com/10533</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167343</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:32:45 -0800</bug_when>
    <thetext>style-queue successfully ran check-webkit-style on attachment 43559 without any errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175500</commentid>
    <comment_count>20</comment_count>
      <attachid>43559</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-29 04:44:16 -0800</bug_when>
    <thetext>Comment on attachment 43559
A workaround fix 3

Please try to pare down the comments. It&apos;s not necessary to have a comment (often lengthy) every time int m_rtlMinChildPosition appears. This hurts readability. Try to limit your comments to saying *why* the code is doing something, rather than *what* it is doing. &quot;what&quot; should be apparent from the code. I also agree with Jeremy&apos;s comment that the &quot;less than or equal to 0&quot; condition is best documented with an ASSERT, in which case I expect the multiple comments explaining that it is less than or equal to 0 are not necessary.

r- to clean this up. The change otherwise looks ok to me, assuming it matches what other browsers do, but it may help to have a rendering expert chime in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177560</commentid>
    <comment_count>21</comment_count>
      <attachid>45958</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-01-06 03:31:22 -0800</bug_when>
    <thetext>Created attachment 45958
Workaround fix 4

Jeremy and Maciej,

Thank you for your review and sorry for my slow response.

(In reply to comment #17)
&gt; (From update of attachment 43559 [details])
&gt; I&apos;m not a reviewer, but here are my comments.
&gt; Hyatt or Dan should probably give their opinion on whether there&apos;s a better
&gt; fix.
&gt; 
&gt; &gt; Index: WebCore/ChangeLog
&gt; &gt; ===================================================================
&gt; &gt; +        // Update the minimal left position.
&gt; Can you add some more details and point to the bug URL from the comment.

Thank you for noticing this. I have added some more comments why we need the leftmost position to fix this issue.

&gt; &gt; +        m_rtlMinChildPosition = min(chPos, m_rtlMinChildPosition);
&gt; ASSERT(m_rtlMinChildPosition &lt;= 0);

Done.

&gt; &gt; +    // Reset the minimal left position for RTL child elements before start layouting children.
&gt; // Reset before preforming child layout.
&gt; &gt; +    m_rtlMinChildPosition = 0;
&gt; 
&gt; &gt; +    // Override the RenderBox::marginLeft().
&gt; // Override RenderBox::marginLeft().

Done.
 
&gt; &gt; Property changes on: LayoutTests/fast/text/international/rtl-unexpected-underflow.html
&gt; &gt; ___________________________________________________________________
&gt; &gt; Name: svn:executable
&gt; &gt;    + *
&gt; Is this OK?

Oops, I forgot changing the file permission and line-endings when I copied this file from Windows. I have changed them to remove this property.

(In reply to comment #20)
&gt; (From update of attachment 43559 [details])
&gt; Please try to pare down the comments. It&apos;s not necessary to have a comment
&gt; (often lengthy) every time int m_rtlMinChildPosition appears. This hurts
&gt; readability. Try to limit your comments to saying *why* the code is doing
&gt; something, rather than *what* it is doing. &quot;what&quot; should be apparent from the
&gt; code. I also agree with Jeremy&apos;s comment that the &quot;less than or equal to 0&quot;
&gt; condition is best documented with an ASSERT, in which case I expect the
&gt; multiple comments explaining that it is less than or equal to 0 are not
&gt; necessary.
&gt; 
&gt; r- to clean this up. The change otherwise looks ok to me, assuming it matches
&gt; what other browsers do, but it may help to have a rendering expert chime in.

Thank you for your comments. I tend to write more garbage comments when I&apos;m less confident of it. I deleted some garbage comments in my previous change. Nevertheless, I&apos;m still not so confident of this change because &apos;offsetLeft&apos; values are not so consistent among browsers and I&apos;m not sure what values I should rely on. (This change makes Safari look similar with other browsers, though.)

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177561</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-06 03:34:14 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45958 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177730</commentid>
    <comment_count>23</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-01-06 13:29:44 -0800</bug_when>
    <thetext>This will affect computed style. Is it really how this works in other browsers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180574</commentid>
    <comment_count>24</comment_count>
      <attachid>45958</attachid>
    <who name="">mitz</who>
    <bug_when>2010-01-13 23:50:51 -0800</bug_when>
    <thetext>Comment on attachment 45958
Workaround fix 4

This doesn’t look like the right approach to fixing this bug. There is no apparent reason why it should involve increasing the size of RenderBlock, and this seems to account only for block children of blocks in normal flow. Changing the margin like has all sorts of consequences, e.g. affecting computed style. I don’t understand why any of this is necessary unless the body element is RTL. Looking at what Firefox does, it seems to be the only consideration. This patch also doesn’t address the initial position of the horizontal scrollbar on a RTL page. It maintains a lot of asymmetry between the RTL and LTR cases.

I think the correct approach should be similar to a case that already behaves correctly: RTL blocks with overflow: scroll. The logic for those is in RenderLayer. They mirror the behavior of LTR blocks with overflow: scroll. RenderView should behave the same with respect to the direction of the body element. Currently it has a LTR bias: docWidth() considers the rightmost position and the right edges of child boxes. layout() adds overflow to the right but never to the left, etc.

The correct place to fix this is mainly in RenderView, but some changes to FrameView and Frame will probably be needed too. I suggest studying the RenderLayer code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180641</commentid>
    <comment_count>25</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-01-14 02:41:25 -0800</bug_when>
    <thetext>Thank you for your comments and sorry for my slow response.
I have been reading the rendering code of WebKit to find better solutions for this bug. (I noticed my change was not a good one and this was the reason why I wasn&apos;t confident of it. ) This suggestion definitely helps it.

Regards,

Hironori Bono

(In reply to comment #24)
&gt; (From update of attachment 45958 [details])
&gt; This doesn’t look like the right approach to fixing this bug. There is no
&gt; apparent reason why it should involve increasing the size of RenderBlock, and
&gt; this seems to account only for block children of blocks in normal flow.
&gt; Changing the margin like has all sorts of consequences, e.g. affecting computed
&gt; style. I don’t understand why any of this is necessary unless the body element
&gt; is RTL. Looking at what Firefox does, it seems to be the only consideration.
&gt; This patch also doesn’t address the initial position of the horizontal
&gt; scrollbar on a RTL page. It maintains a lot of asymmetry between the RTL and
&gt; LTR cases.
&gt; 
&gt; I think the correct approach should be similar to a case that already behaves
&gt; correctly: RTL blocks with overflow: scroll. The logic for those is in
&gt; RenderLayer. They mirror the behavior of LTR blocks with overflow: scroll.
&gt; RenderView should behave the same with respect to the direction of the body
&gt; element. Currently it has a LTR bias: docWidth() considers the rightmost
&gt; position and the right edges of child boxes. layout() adds overflow to the
&gt; right but never to the left, etc.
&gt;
&gt; The correct place to fix this is mainly in RenderView, but some changes to
&gt; FrameView and Frame will probably be needed too. I suggest studying the
&gt; RenderLayer code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183971</commentid>
    <comment_count>26</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-01-23 02:02:09 -0800</bug_when>
    <thetext>&lt;rdar://problem/5710505&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211546</commentid>
    <comment_count>27</comment_count>
      <attachid>53150</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-04-11 23:05:47 -0700</bug_when>
    <thetext>Created attachment 53150
A proposed fix 5

Sorry for my slow update.
I have updated my change to change the RenderView class instead of changing the RenderBlock class as suggested by mitz@webkit.org. (This change also changes the RenderBox class not only to synchronize the text direction of a RenderView object with the one of a &lt;body&gt; element, but also to paint the background of a RenderView object with the color of the &lt;body&gt; element.) Unfortunately, this change uses a pixel test because I haven&apos;t find any good ideas to write a text test for this bug. Would it be possible to review the updated change and give me your comments?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211724</commentid>
    <comment_count>28</comment_count>
      <attachid>53150</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-04-12 14:08:18 -0700</bug_when>
    <thetext>Comment on attachment 53150
A proposed fix 5

Obligatory disclaimer: I&apos;m not a reviewer, but here are my comments.

&gt; Index: WebCore/rendering/RenderBox.cpp
&gt; ===================================================================
&gt; --- WebCore/rendering/RenderBox.cpp	(revision 57464)
&gt; +++ WebCore/rendering/RenderBox.cpp	(working copy)
&gt; @@ -182,9 +182,12 @@ void RenderBox::styleDidChange(StyleDiff
&gt; +    if (isBody()) {
&gt;          document()-&gt;setTextColor(style()-&gt;color());
&gt; +        if (view() &amp;&amp; view()-&gt;style())

Can view() or view()-&gt;style() ever be NULL? Same goes for other places in the patch.

&gt;  void RenderBox::updateBoxModelInfoFromStyle()
&gt; @@ -608,7 +611,11 @@ void RenderBox::paintRootBoxDecorations(
&gt; +    // The bounding rectangle of an RTL view is (min(leftmostPosition(), 0), 0, docWidth(), docHeight())
&gt; +    // So, we also include the leftmost position for RTL views so we can fill its entire canvas.
Great comment.

&gt; +    if (view() &amp;&amp; view()-&gt;style()-&gt;direction() == RTL &amp;&amp; view()-&gt;leftmostPosition() &lt; 0)
Again, are you sure you need to null-check view() ?

&gt; @@ -117,6 +117,14 @@ void RenderView::layout()
&gt; +    if (style() &amp;&amp; style()-&gt;direction() == RTL &amp;&amp; leftmostPosition() &lt; 0) {
Using a temp. variable may ease readability here a bit since you use the same expression in the return statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212302</commentid>
    <comment_count>29</comment_count>
      <attachid>53324</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-04-14 02:24:59 -0700</bug_when>
    <thetext>Created attachment 53324
A proposed fix 6

Jeremy,

Thank you for your comments.
I have updated my patch to replaced null-checks with ASSERT() expressions and to use temporary variables.

Regards,

Hironori Bono

(In reply to comment #28)
&gt; (From update of attachment 53150 [details])
&gt; Obligatory disclaimer: I&apos;m not a reviewer, but here are my comments.
&gt; 
&gt; &gt; Index: WebCore/rendering/RenderBox.cpp
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/rendering/RenderBox.cpp	(revision 57464)
&gt; &gt; +++ WebCore/rendering/RenderBox.cpp	(working copy)
&gt; &gt; @@ -182,9 +182,12 @@ void RenderBox::styleDidChange(StyleDiff
&gt; &gt; +    if (isBody()) {
&gt; &gt;          document()-&gt;setTextColor(style()-&gt;color());
&gt; &gt; +        if (view() &amp;&amp; view()-&gt;style())
&gt; 
&gt; Can view() or view()-&gt;style() ever be NULL? Same goes for other places in the
&gt; patch.
&gt; 
&gt; &gt;  void RenderBox::updateBoxModelInfoFromStyle()
&gt; &gt; @@ -608,7 +611,11 @@ void RenderBox::paintRootBoxDecorations(
&gt; &gt; +    // The bounding rectangle of an RTL view is (min(leftmostPosition(), 0), 0, docWidth(), docHeight())
&gt; &gt; +    // So, we also include the leftmost position for RTL views so we can fill its entire canvas.
&gt; Great comment.
&gt; 
&gt; &gt; +    if (view() &amp;&amp; view()-&gt;style()-&gt;direction() == RTL &amp;&amp; view()-&gt;leftmostPosition() &lt; 0)
&gt; Again, are you sure you need to null-check view() ?
&gt; 
&gt; &gt; @@ -117,6 +117,14 @@ void RenderView::layout()
&gt; &gt; +    if (style() &amp;&amp; style()-&gt;direction() == RTL &amp;&amp; leftmostPosition() &lt; 0) {
&gt; Using a temp. variable may ease readability here a bit since you use the same
&gt; expression in the return statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227143</commentid>
    <comment_count>30</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-05-17 23:08:24 -0700</bug_when>
    <thetext>It seems this change has not been reviewed by WebKit reviewers for more than a month. Someone who has better connection with WebKit reviewers should take over this issue rather than I continue working for it?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228583</commentid>
    <comment_count>31</comment_count>
    <who name="Yair Yogev">progame+wk</who>
    <bug_when>2010-05-20 14:51:26 -0700</bug_when>
    <thetext>it&apos;s pretty sad (and surprising!) nobody is willing to review such as important fix (possibly the most needed RTL related one). i do hope you won&apos;t give up though :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228647</commentid>
    <comment_count>32</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-05-20 17:26:52 -0700</bug_when>
    <thetext>I&apos;m not a reviewer, but I took a brief look.  I&apos;m not sure why we would scroll the renderview all the way over to the left in this case - in firefox it appears that this does not occur (i.e. when loading the test page in firefox the scrollbar is all the way to the right).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228674</commentid>
    <comment_count>33</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-05-20 18:30:49 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; I&apos;m not a reviewer, but I took a brief look.  I&apos;m not sure why we would scroll the renderview all the way over to the left in this case - in firefox it appears that this does not occur (i.e. when loading the test page in firefox the scrollbar is all the way to the right).

Thank you for your comment. Even though I notice this issue, I personally would like to file another bug for this scrollbar issue rather than integrating its fix into this change. (I&apos;m afraid it makes this change more complicated and may make it less popular among WebKit reviewers.)

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229407</commentid>
    <comment_count>34</comment_count>
      <attachid>53324</attachid>
    <who name="">mitz</who>
    <bug_when>2010-05-22 23:39:00 -0700</bug_when>
    <thetext>Comment on attachment 53324
A proposed fix 6

&gt; +    if (isBody()) {
&gt;          document()-&gt;setTextColor(style()-&gt;color());
&gt; +        ASSERT(view() &amp;&amp; view()-&gt;style());

1. In principle, rather than asserting a conjunction, you should assert each condition separately, so that if the assertion fails, you know which condition was false.
2. In this case, and in similar cases in this patch, I find that it is pointless to assert that a pointer is non-null if you are immediately going to dereference it.

&gt; +        view()-&gt;style()-&gt;setDirection(style()-&gt;direction());

It’s wrong to mutate the RenderView’s style like this. In general, it is almost never a good idea to change a RenderStyle anywhere other than in the style selector. This holds true in this case as well. After this code runs, if the &lt;html&gt; element’s style is recomputed, it may inherit the wrong direction from the root, e.g.

&lt;html&gt;
    &lt;body style=&quot;direction: rtl;&quot;&gt;
        &lt;script&gt;
            document.body.offsetTop; // force style recalc and layout
            document.documentElement.style.color = &quot;red&quot;;
            document.body.offsetTop;
            alert(getComputedStyle(document.documentElement).direction);
        &lt;/script&gt;
    &lt;/body&gt;
&lt;/html&gt;

would alert &quot;rtl&quot; instead of &quot;ltr&quot;.

It is also not clear to me that this behavior should be limited to when the &lt;body&gt; element has direction: rtl. What about the case where the &lt;html&gt; element has it but &lt;body&gt; is ltr?

&gt; +    if (style()-&gt;direction() == RTL) {
&gt; +        int left = leftmostPosition();
&gt; +        if (left &lt; 0) {
&gt; +            setHasOverflowClip(true);

I don’t understand this. What side effect of hasOverflowClip() are you trying to achieve? It seems really dangerous to set hasOverflowClip() for the root, and very strange to touch this flag during layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229605</commentid>
    <comment_count>35</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-05-23 22:30:28 -0700</bug_when>
    <thetext>Thank you for your comments. Unfortunately, I have totally lost confidence that I can continue working for this issue. (These comments clearly show I don&apos;t have good knowledge about WebKit.) I wish someone who has better knowledge about WebKit takes over this issue.

Regards,

Hironori Bono 

(In reply to comment #34)
&gt; (From update of attachment 53324 [details])
&gt; &gt; +    if (isBody()) {
&gt; &gt;          document()-&gt;setTextColor(style()-&gt;color());
&gt; &gt; +        ASSERT(view() &amp;&amp; view()-&gt;style());
&gt; 
&gt; 1. In principle, rather than asserting a conjunction, you should assert each condition separately, so that if the assertion fails, you know which condition was false.
&gt; 2. In this case, and in similar cases in this patch, I find that it is pointless to assert that a pointer is non-null if you are immediately going to dereference it.
&gt; 
&gt; &gt; +        view()-&gt;style()-&gt;setDirection(style()-&gt;direction());
&gt; 
&gt; It’s wrong to mutate the RenderView’s style like this. In general, it is almost never a good idea to change a RenderStyle anywhere other than in the style selector. This holds true in this case as well. After this code runs, if the &lt;html&gt; element’s style is recomputed, it may inherit the wrong direction from the root, e.g.
&gt; 
&gt; &lt;html&gt;
&gt;     &lt;body style=&quot;direction: rtl;&quot;&gt;
&gt;         &lt;script&gt;
&gt;             document.body.offsetTop; // force style recalc and layout
&gt;             document.documentElement.style.color = &quot;red&quot;;
&gt;             document.body.offsetTop;
&gt;             alert(getComputedStyle(document.documentElement).direction);
&gt;         &lt;/script&gt;
&gt;     &lt;/body&gt;
&gt; &lt;/html&gt;
&gt; 
&gt; would alert &quot;rtl&quot; instead of &quot;ltr&quot;.
&gt; 
&gt; It is also not clear to me that this behavior should be limited to when the &lt;body&gt; element has direction: rtl. What about the case where the &lt;html&gt; element has it but &lt;body&gt; is ltr?
&gt; 
&gt; &gt; +    if (style()-&gt;direction() == RTL) {
&gt; &gt; +        int left = leftmostPosition();
&gt; &gt; +        if (left &lt; 0) {
&gt; &gt; +            setHasOverflowClip(true);
&gt; 
&gt; I don’t understand this. What side effect of hasOverflowClip() are you trying to achieve? It seems really dangerous to set hasOverflowClip() for the root, and very strange to touch this flag during layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251591</commentid>
    <comment_count>36</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-07-14 19:26:44 -0700</bug_when>
    <thetext>(In reply to comment #34)

&gt; It is also not clear to me that this behavior should be limited to when the &lt;body&gt; element has direction: rtl. What about the case where the &lt;html&gt; element has it but &lt;body&gt; is ltr?

I tested this a while back and found that indeed, in Firefox, the body element’s direction is the only one that matters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256245</commentid>
    <comment_count>37</comment_count>
      <attachid>62608</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-07-26 14:37:16 -0700</bug_when>
    <thetext>Created attachment 62608
patch w/ layout test

The patch works for Chromium in 3 platforms, but it does not work well in MAC port where ScrollView is a platformWidget.

The problem in MAC  port is:

For RTL page, the horizontal scrollbar should be at the very right when page is loaded at first time. I am re-setting the scroll position in 
(void)setScrollOriginX:(int)scrollOriginX inside WebDynamicScrollBarsView.mm. Please refer to FIXME in the file.
But apparently, it is not the right place to reset it.

Resetting the scroll position there makes the scroll position reset to its original position for RTL page when page reload, page zoom, page resize, and might also window.scrollX (although I do not understand why there is write operation in this read-only access), which are all wrong. Please refer to the FIXMEs in the layout test file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256276</commentid>
    <comment_count>38</comment_count>
      <attachid>62608</attachid>
    <who name="">mitz</who>
    <bug_when>2010-07-26 15:21:32 -0700</bug_when>
    <thetext>Comment on attachment 62608
patch w/ layout test

Thanks for tackling this bug! I think the ScrollView-based approach is a good one.

&gt; Index: WebCore/ChangeLog

&gt; +        Add frame horizontal scroll bar for RTL page.

This is not a very good description of the change. This bug also doesn’t have a very good title, so maybe we can fix both.

&gt; +        https://bugs.webkit.org/show_bug.cgi?id=23556
&gt; +
&gt; +        For RTL page, save left layout overflow and include it into the document        size during layout. Use the left layout overflow when scroll and paint

Extra space (or missing newline) up there.

&gt; +        the page. Behavior on LTR page should be untouched since left layout 
&gt; +        overflow is set as 0 for LTR page.
&gt; +
&gt; +        Test: fast/dom/horizontal_scrollbar_in_rtl.html

We typically use dashes, not underscores, in test names. I think this could use more than one test. For example, test a RTL page with right overflow.

&gt; +    // Do not move setScrollOriginX() to other places, otherwise,
&gt; +    // content painted and scroll might not work correctly when page resize.

I don’t understand this comment. Is it warning me not to move the code somewhere else? I don’t think that’s necessary.

&gt; +    ScrollView::setScrollOriginX(abs(root-&gt;leftLayoutOverflow()));

No need to use abs() here. leftLayoutOverflow() is always non-positive, so you can just use -root-&gt;leftLayoutOverflow().

&gt; +    // Adjust scroll position to above the minimum value. y-axis should not be
&gt; +    // negative. The minimum value for x-axis is the left layout overflow,
&gt; +    // which should be zero for non RTL page and the negative of m_scrollOriginX
&gt; +    // for RTL page.

“non RTL” is “LTR” :-)

At the platform level, I think you don’t need to refer to the page, but just say that m_scrollOriginX sets the minimum.

Perhaps for symmetry you can define a minimumScrollPosition() method.

&gt; -    IntSize maxScrollPosition(contentsWidth() - visibleWidth(), contentsHeight() - visibleHeight());
&gt; +    IntSize maxScrollPosition(contentsWidth() - visibleWidth() - m_scrollOriginX, contentsHeight() - visibleHeight());
&gt; +    maxScrollPosition.clampNegativeToZero();

Can this just use the maximumScrollPosition() method?

&gt;      IntSize scroll = desiredOffset.shrunkTo(maxScrollPosition);
&gt; -    scroll.clampNegativeToZero();
&gt; - 
&gt; +    // Adjust scroll position to above the minimum value. y-axis should not be
&gt; +    // negative. The minimum value for x-axis is the left layout overflow,
&gt; +    // which should be zero for non RTL page and the negative of m_scrollOriginX
&gt; +    // for RTL page.
&gt; +    scroll = scroll.expandedTo(IntSize(-m_scrollOriginX, 0));
&gt; +

Same comments about the comment and same suggestion to define a minimumScrollPosition() method.

&gt; +void ScrollView::setScrollOriginX(int x)
&gt; +{ 
&gt; +    m_scrollOriginX = x;
&gt; +#if PLATFORM(MAC)
&gt; +    platformSetScrollOriginX();
&gt; +#endif
&gt; +}

This should check for platformWidget(), not do a compile-time PLATFORM check. Do you even need to set m_scrollOriginX if there is a platform widget, or can you just change platformSetScrollOriginX() to take a parameter and pass x to it?

&gt; +    void setScrollOriginX(int x);

Please omit the “x” here.

&gt; +    int m_scrollOriginX; // Only non-zero for RTL page.

This comment is not very helpful. It might help if it explained what the value means and what it does, but I think it’s not really necessary to comment on member variables.

&gt; +    void platformSetScrollOriginX();

I suggest that this method take a parameter (see above).

&gt; +    // leftmostPosition() is not always 0 for LTR page, for example http://www.apple.com/startpage/.

This is not a helpful comment, and the example page will change in the future.

This clips out left overflow in LTR pages, but where is the part that clips out right overflow in RTL pages?

&gt; +    int leftOverflow = m_bodyIsRTL ? std::min(0, leftmostPosition()) : 0;
&gt; +    addLayoutOverflow(IntRect(leftOverflow, 0, docWidth(leftOverflow), docHeight()));

…

&gt; -int RenderView::docWidth() const
&gt; +int RenderView::docWidth(int leftOverflow) const
&gt;  {
&gt; -    int w = rightmostPosition();
&gt; +    int w = rightmostPosition() - leftOverflow;

I would like to suggest something a bit different: add a docLeft() method that returns 0 for LTR pages and leftmostPosition() for RTL pages; then change the docWidth() computation of w to return rightmostPosition() for LTR pages and width() - leftmostPosition() for RTL pages. I think this will also clip out right overflow for those pages.

&gt; +    void setBodyIsRTL(bool bodyIsRTL) { m_bodyIsRTL = bodyIsRTL; }

In recent years, I have tried to make all booleans be about LTR, not RTL, so this would be …bodyIsLTR (with the reverse meaning). Another option is to have a setPageDirection() method that takes a TextDirection type argument.
&gt; +        In MAC port, set and get the original x-axis scroll position.

It’s Mac, not MAC (also in other places in this patch).

Really good! I can’t quite understand what’s going on on Mac without applying the patch and trying it out, which I am going to do later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256875</commentid>
    <comment_count>39</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-07-27 15:07:22 -0700</bug_when>
    <thetext>Thanks for the quick review and comments!
I&apos;ve updated the patch according to all comments except adding test case of RTL page with right overflow which I will be working on.

Please see my detail reply below.

Thanks


(In reply to comment #38)
&gt; (From update of attachment 62608 [details])
&gt; Thanks for tackling this bug! I think the ScrollView-based approach is a good one.
&gt; 
&gt; &gt; Index: WebCore/ChangeLog
&gt; 
&gt; &gt; +        Add frame horizontal scroll bar for RTL page.
&gt; 
&gt; This is not a very good description of the change. This bug also doesn’t have a very good title, so maybe we can fix both.

Changed to use the updated bug title.

&gt; 
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=23556
&gt; &gt; +
&gt; &gt; +        For RTL page, save left layout overflow and include it into the document        size during layout. Use the left layout overflow when scroll and paint
&gt; 
&gt; Extra space (or missing newline) up there.

Done.

&gt; 
&gt; &gt; +        the page. Behavior on LTR page should be untouched since left layout 
&gt; &gt; +        overflow is set as 0 for LTR page.
&gt; &gt; +
&gt; &gt; +        Test: fast/dom/horizontal_scrollbar_in_rtl.html
&gt; 
&gt; We typically use dashes, not underscores, in test names. I think this could use more than one test. For example, test a RTL page with right overflow.


Done update test name. Will work on adding test RTL page with right overflow.

&gt; 
&gt; &gt; +    // Do not move setScrollOriginX() to other places, otherwise,
&gt; &gt; +    // content painted and scroll might not work correctly when page resize.
&gt; 
&gt; I don’t understand this comment. Is it warning me not to move the code somewhere else? I don’t think that’s necessary.

removed.

&gt; 
&gt; &gt; +    ScrollView::setScrollOriginX(abs(root-&gt;leftLayoutOverflow()));
&gt; 
&gt; No need to use abs() here. leftLayoutOverflow() is always non-positive, so you can just use -root-&gt;leftLayoutOverflow().

Done.

&gt; 
&gt; &gt; +    // Adjust scroll position to above the minimum value. y-axis should not be
&gt; &gt; +    // negative. The minimum value for x-axis is the left layout overflow,
&gt; &gt; +    // which should be zero for non RTL page and the negative of m_scrollOriginX
&gt; &gt; +    // for RTL page.
&gt; 
&gt; “non RTL” is “LTR” :-)
&gt; 
&gt; At the platform level, I think you don’t need to refer to the page, but just say that m_scrollOriginX sets the minimum.
&gt; 
&gt; Perhaps for symmetry you can define a minimumScrollPosition() method.

Added minimumScrollPosition() and adjustScrollPositionWithinRange().


&gt; 
&gt; &gt; -    IntSize maxScrollPosition(contentsWidth() - visibleWidth(), contentsHeight() - visibleHeight());
&gt; &gt; +    IntSize maxScrollPosition(contentsWidth() - visibleWidth() - m_scrollOriginX, contentsHeight() - visibleHeight());
&gt; &gt; +    maxScrollPosition.clampNegativeToZero();
&gt; 
&gt; Can this just use the maximumScrollPosition() method?

I did not combine them before since one is IntSize and the other is IntPoint.

I changed it to use adjustScrollPositionWithinRange() and did conversion between IntSize and IntPoint on input parameter and return value.



&gt; 
&gt; &gt;      IntSize scroll = desiredOffset.shrunkTo(maxScrollPosition);
&gt; &gt; -    scroll.clampNegativeToZero();
&gt; &gt; - 
&gt; &gt; +    // Adjust scroll position to above the minimum value. y-axis should not be
&gt; &gt; +    // negative. The minimum value for x-axis is the left layout overflow,
&gt; &gt; +    // which should be zero for non RTL page and the negative of m_scrollOriginX
&gt; &gt; +    // for RTL page.
&gt; &gt; +    scroll = scroll.expandedTo(IntSize(-m_scrollOriginX, 0));
&gt; &gt; +
&gt; 
&gt; Same comments about the comment and same suggestion to define a minimumScrollPosition() method.

Done.

&gt; 
&gt; &gt; +void ScrollView::setScrollOriginX(int x)
&gt; &gt; +{ 
&gt; &gt; +    m_scrollOriginX = x;
&gt; &gt; +#if PLATFORM(MAC)
&gt; &gt; +    platformSetScrollOriginX();
&gt; &gt; +#endif
&gt; &gt; +}
&gt; 
&gt; This should check for platformWidget(), not do a compile-time PLATFORM check. Do you even need to set m_scrollOriginX if there is a platform widget, or can you just change platformSetScrollOriginX() to take a parameter and pass x to it?

Done.


&gt; 
&gt; &gt; +    void setScrollOriginX(int x);
&gt; 
&gt; Please omit the “x” here.

Done.


&gt; 
&gt; &gt; +    int m_scrollOriginX; // Only non-zero for RTL page.
&gt; 
&gt; This comment is not very helpful. It might help if it explained what the value means and what it does, but I think it’s not really necessary to comment on member variables.

Change the comments to explain what the value is and how it is used.

&gt; 
&gt; &gt; +    void platformSetScrollOriginX();
&gt; 
&gt; I suggest that this method take a parameter (see above).

Done.

&gt; 
&gt; &gt; +    // leftmostPosition() is not always 0 for LTR page, for example http://www.apple.com/startpage/.
&gt; 
&gt; This is not a helpful comment, and the example page will change in the future.
&gt; 
&gt; This clips out left overflow in LTR pages, but where is the part that clips out right overflow in RTL pages?


Changed the comment to be &quot;clip out left overflow in LTR page&quot;.  right overflow is clipped by using &quot;width() - leftmostposition()&quot; as docWidth as you suggested below.


&gt; 
&gt; &gt; +    int leftOverflow = m_bodyIsRTL ? std::min(0, leftmostPosition()) : 0;
&gt; &gt; +    addLayoutOverflow(IntRect(leftOverflow, 0, docWidth(leftOverflow), docHeight()));
&gt; 
&gt; …
&gt; 
&gt; &gt; -int RenderView::docWidth() const
&gt; &gt; +int RenderView::docWidth(int leftOverflow) const
&gt; &gt;  {
&gt; &gt; -    int w = rightmostPosition();
&gt; &gt; +    int w = rightmostPosition() - leftOverflow;
&gt; 
&gt; I would like to suggest something a bit different: add a docLeft() method that returns 0 for LTR pages and leftmostPosition() for RTL pages; then change the docWidth() computation of w to return rightmostPosition() for LTR pages and width() - leftmostPosition() for RTL pages. I think this will also clip out right overflow for those pages.

Added docLeft(). And Changed the docWidth() computation as you suggested.


&gt; 
&gt; &gt; +    void setBodyIsRTL(bool bodyIsRTL) { m_bodyIsRTL = bodyIsRTL; }
&gt; 
&gt; In recent years, I have tried to make all booleans be about LTR, not RTL, so this would be …bodyIsLTR (with the reverse meaning). Another option is to have a setPageDirection() method that takes a TextDirection type argument.

Changed to bodyIsLTR.


&gt; &gt; +        In MAC port, set and get the original x-axis scroll position.
&gt; 
&gt; It’s Mac, not MAC (also in other places in this patch).

Done.


&gt; 
&gt; Really good! I can’t quite understand what’s going on on Mac without applying the patch and trying it out, which I am going to do later.

Thanks a lot for helping me to figure it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256878</commentid>
    <comment_count>40</comment_count>
      <attachid>62753</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-07-27 15:11:22 -0700</bug_when>
    <thetext>Created attachment 62753
patch w/ layout test

updated patch per Mitz&apos;s suggestions (except adding test case for RTL page with right overflow which I will work on).

You do not need to review the patch. I will upload another one for review after it is working for Mac port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270537</commentid>
    <comment_count>41</comment_count>
      <attachid>65719</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2010-08-27 09:24:25 -0700</bug_when>
    <thetext>Created attachment 65719
Another patch just for reference

When I was going to commit my patch, I found Xiaomei has already done this. Sadly.... What a waste of my time. I should have added myself to the cc list.
Anyway, there is a little difference between xiaomei&apos;s. Maybe it will be a little useful to her/him as a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270739</commentid>
    <comment_count>42</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-08-27 14:15:30 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; Created an attachment (id=65719) [details]
&gt; Another patch just for reference
&gt; 
&gt; When I was going to commit my patch, I found Xiaomei has already done this. Sadly.... What a waste of my time. I should have added myself to the cc list.
&gt; Anyway, there is a little difference between xiaomei&apos;s. Maybe it will be a little useful to her/him as a reference.


Thanks for the upload.
Looks like the patch wont work for Safari in Mac either. We need to get this fixed (to pass layout test) to check the patch in, otherwise, we need to make this as non-safari-in-mac patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272347</commentid>
    <comment_count>43</comment_count>
      <attachid>66098</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-08-31 14:00:46 -0700</bug_when>
    <thetext>Created attachment 66098
patch w/ layout test

The patch is not completed for Mac port:
1. For RTL page, the horizontal scroll bar is at the very left (instead of very right as in Firefox and Chromium with the patch) when page first loaded.
2. For RTL page, horizontal scrollbar does not behave completely correct for zoom in and out. For example, zooming in and then out should keep the horizontal scrollbar at the same position as it was before zooming. But it is not the case for Safari in Mac.

See test file horizontal-scrollbar-in-rtl.html for detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272365</commentid>
    <comment_count>44</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-31 14:18:24 -0700</bug_when>
    <thetext>Attachment 66098 did not build on qt:
Build output: http://queues.webkit.org/results/3845187</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272448</commentid>
    <comment_count>45</comment_count>
      <attachid>66128</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-08-31 15:49:18 -0700</bug_when>
    <thetext>Created attachment 66128
patch w/ layout test

fix compilation error in QT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283945</commentid>
    <comment_count>46</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-09-23 14:22:55 -0700</bug_when>
    <thetext>Looks like Dan is busy. Wondering could David and Simon review the patch?

I believe this fix is pretty important for RTL users. Although it does not work completely for Safari in Mac, it is a big improvement comparing with cutting off the left part of the content.

I am hoping the patch could be submitted and someone from Apple knowing the codebase better to work on the issues in Mac port. (Or I could make this not-for-platformWidget-scrollview patch if that is desired).

Thanks in advance and appreciate your attention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291817</commentid>
    <comment_count>47</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-10-08 12:42:17 -0700</bug_when>
    <thetext>*** Bug 15489 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294616</commentid>
    <comment_count>48</comment_count>
    <who name="Yair Yogev">progame+wk</who>
    <bug_when>2010-10-15 00:44:25 -0700</bug_when>
    <thetext>in some cultures, silence is approval (maybe that&apos;s the case here ;) )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298218</commentid>
    <comment_count>49</comment_count>
      <attachid>66128</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-22 15:29:47 -0700</bug_when>
    <thetext>Comment on attachment 66128
patch w/ layout test

The scroll stuff looks fine.  I don&apos;t like the m_bodyIsLTR variable though.  If a different direction is explicitly specified on the root element, this should supercede the body&apos;s direction.  In addition, XML documents will typically set the direction on the root.

Since the time this patch has been worked on, I committed a fix that propagates both direction and writing-mode on the root element (&lt;html&gt;) up to the RenderView&apos;s style.  This means the RenderView itself now matches the direction and writing-mode of the &lt;html&gt;.  Rather than doing this m_bodyIsLTR hack, I think we should probably expand the propagation code I added to also propagate from the body.  It should only do this though if the &lt;html&gt; element didn&apos;t explicitly have its direction set.

You can see this code in CSSStyleSelector::styleForDocument and then it also dynamically updates the style in styleDidChange.

You may want to consider an initial checkin that just works with the RenderView&apos;s direction (using test cases that set RTL on &lt;html&gt;) and work on the propagation code from the &lt;body&gt; in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298220</commentid>
    <comment_count>50</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-22 15:32:46 -0700</bug_when>
    <thetext>Actually I have to fix the body propagation issue for writing-mode anyway, so I can just handle that part for you in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298224</commentid>
    <comment_count>51</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-22 15:40:04 -0700</bug_when>
    <thetext>I filed 

https://bugs.webkit.org/show_bug.cgi?id=48157

to cover the &lt;body&gt; propagation issue.  Once I fix that, the RenderView will have the correct directionality set right on its style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299142</commentid>
    <comment_count>52</comment_count>
      <attachid>71805</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-10-25 15:44:15 -0700</bug_when>
    <thetext>Created attachment 71805
patch w/ layout test

The patch is not completed for Mac port (if PLATFORM(MAC) &amp;&amp; defined __OBJC__) where ScrollView is defined as PlatformWidget. In which, 
1. For RTL page, the horizontal scroll bar is at the very left (instead of very right as in Firefox and Chromium with the patch) when page first loaded. Ideally, scrollbar should be at the very right when page first loaded. But it should *not* reset to this original position when page reload or zooming. 
2. For RTL page, horizontal scrollbar does not behave completely correct for zoom in and out. For example, zooming in and then out should keep the horizontal scrollbar at the same position as it was before zooming. But it is not the case for Safari in Mac.

See test file horizontal-scrollbar-in-rtl.html for detail. I need some help to figure out where are the correct places to make above 2 cases work. Or maybe case 1. is not possible for Safari in Mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300422</commentid>
    <comment_count>53</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-10-27 11:58:48 -0700</bug_when>
    <thetext>xji: I may be mistaken but looks like your patch regresses bug 24118</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300654</commentid>
    <comment_count>54</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-10-27 15:46:57 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; xji: I may be mistaken but looks like your patch regresses bug 24118

Yes, you are right. 

After picking up r70456 where dhyatt did propagation direction from &lt;body&gt;,
the testing URL http://www.dentalspace.co.il works correctly with horizontal scrollbar.
And the test case you posted (https://bug-24118-attachments.webkit.org/attachment.cgi?id=72065) works correctly with horizontal scrollbar.

But the problem happens when you switch body direction. Seems the style change did not propagate correctly to RenderView.

It is the same case if the original body direction is set as &quot;ltr&quot; in your test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310211</commentid>
    <comment_count>55</comment_count>
      <attachid>74099</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-11-17 05:04:44 -0800</bug_when>
    <thetext>Created attachment 74099
Snapshot

Snapshot of current work, this now appears to work on Safari with caveats listed below.

Known issues with this patch:
* History save/restore of scrollbar position doesn&apos;t work correctly.
* fast/dom/horizontal-scrollbar-in-rtl.html layout test reloads itself in a loop and thus can&apos;t be run manually in Safari.

The scrollbar thumb isn&apos;t updated when switching document direction programmatically though this appears to be an existing bug with style propagation.  Probably best to address this in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310222</commentid>
    <comment_count>56</comment_count>
      <attachid>74100</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-11-17 05:45:51 -0800</bug_when>
    <thetext>Created attachment 74100
Snapshot

Rebased on ToT + style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310274</commentid>
    <comment_count>57</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-11-17 07:36:43 -0800</bug_when>
    <thetext>The reason that save/restore of the scrollbar position isn&apos;t working appears to be that the call to [documentView scrollPoint:] which I added in [WebDynamicScrollBarsView refreshInitialScrollbarPosition] is firing off a notification which runs through the same code path as if the user had moved the scrollbar.

This has 2 undesirable effects:
* Looks like this may dispatch a JS scroll event.
* FrameView::setWasScrolledByUser() is called.

The call to FrameView::setWasScrolledByUser() causes the code in HistoryController::restoreScrollPositionAndViewState() to think that the user has moved the scrollbar manually (view-&gt;wasScrolledByUser() returns true) and so doesn&apos;t override it with the saved position.

Relevant part of stack trace:
#0	0x101881f0c in WebCore::FrameView::setWasScrolledByUser at FrameView.cpp:2054
#1	0x1018039b5 in WebCore::EventHandler::setFrameWasScrolledByUser at EventHandler.cpp:2767
#2	0x101803a8c in WebCore::EventHandler::sendScrollEvent at EventHandler.cpp:2758
#3	0x101884f39 in WebCore::FrameView::scrollPositionChanged at FrameView.cpp:1262
#4	0x10188503f in WebCore::FrameView::scrollPositionChangedViaPlatformWidget at FrameView.cpp:1257
#5	0x100f7c516 in -[WebHTMLView(WebPrivate) _frameOrBoundsChanged] at WebHTMLView.mm:1208
#6	0x7fff8706f84e in _nsnote_callback
#7	0x7fff832d2a90 in __CFXNotificationPost
#8	0x7fff832bf008 in _CFXNotificationPostNotification
#9	0x7fff870667b8 in -[NSNotificationCenter postNotificationName:object:userInfo:]
#10	0x7fff862e3479 in -[NSView _postBoundsChangeNotification]
#11	0x7fff863f8073 in -[NSView translateOriginToPoint:]
#12	0x7fff863bb07a in -[NSClipView _immediateScrollToPoint:]
#13	0x100f1e9f7 in -[WebClipView _immediateScrollToPoint:] at WebClipView.mm:99
#14	0x7fff863bac05 in -[NSClipView scrollToPoint:]
#15	0x7fff863f7bc6 in -[NSScrollView scrollClipView:toPoint:]
#16	0x7fff86335bbc in -[NSClipView _scrollTo:animate:]
#17	0x7fff863b2af9 in -[NSClipView _scrollPoint:fromView:]
#18	0x7fff863b2a7a in -[NSView scrollPoint:]
#19	0x100f329f6 in -[WebDynamicScrollBarsView refreshInitialScrollbarPosition] at WebDynamicScrollBarsView.mm:171

Does anyone have any suggestions on the proper way to set the initial scrollbar position?  If not, I&apos;ll try to add state to FrameView to identify this situation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310678</commentid>
    <comment_count>58</comment_count>
      <attachid>74197</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-11-17 19:36:52 -0800</bug_when>
    <thetext>Created attachment 74197
snapshot

add patch fixing scrollbar repositioning when document&apos;s direction changes (only works for non platformWidget).

The patch does not work for platformWidget ScrollView in 3 areas:
1. scrollbar reset to right-most position when page reload. (should have a layout test to cover it).
2. scrolling and scrollbar position does not work well in zoom-in/out. The scroll position should be updated so the content  stays in relatively the same position. (has layout test).
3. scrollbar does not reposition when document&apos;s direction changes, for example, scrollbar should be changed from left-most position to right-most position when document changes from left-to-right to right-to-left directionality. This is related to case 1. (has layout test).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310835</commentid>
    <comment_count>59</comment_count>
      <attachid>74233</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-11-18 06:45:51 -0800</bug_when>
    <thetext>Created attachment 74233
patch

dhyatt,mitz: Could you take a look please?

Updated patch with following changes:
1)History restore now works correctly, see note below.
2) Minor cleanup of horizontal-scrollbar-in-rtl.html.
3) Added layout test to make sure no scroll events are fired on initial display.

I chatted with dhyatt a bit on irc on how the platformWidget code should update the initial scrollbar position.  The logical option would be to call FrameView:: setScrollPosition(), however the only place where we know that a horizontal scrollbar has been created is in [WebDynamicScrollView updateScrollers] and calling out to FrameView from there would be a layering violation.  The other problem is that FrameView:: setScrollPosition() triggers a JS scroll event, which is not something we want to do when setting the initial scrollbar position.

The patch moves the scrollers by calling [documentView scrollPoint:] and works around the problem in comment #57 by short-circuiting the notification callback if it detects that the scroller is having it&apos;s initial position set programmatically.

If you think there&apos;s a better way of doing this, I&apos;d appreciate a suggestion for an alternate approach.

Known issues with this patch:
1) scrollbar location not updated when programmatically setting direction for platformWidget code.
2) resize test in horizontal-scrollbar-in-rtl.html  fails on mac platform.

I think that neither of these are regressions from the current behavior, and if it&apos;s OK I&apos;d like to address them in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310851</commentid>
    <comment_count>60</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-18 07:19:20 -0800</bug_when>
    <thetext>Attachment 74233 did not build on mac:
Build output: http://queues.webkit.org/results/6247022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310878</commentid>
    <comment_count>61</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-11-18 09:11:02 -0800</bug_when>
    <thetext>I think the build error is an issue with the Mac EWS, I&apos;ve pinged Eric.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311011</commentid>
    <comment_count>62</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-18 11:44:09 -0800</bug_when>
    <thetext>I think the ews hit some variant of bug 49212 which affects Snow Leopard machines which run the layout tests repeatedly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311231</commentid>
    <comment_count>63</comment_count>
      <attachid>74338</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-11-18 18:39:53 -0800</bug_when>
    <thetext>Created attachment 74338
patch w/ layout test

updated expected result for fast/block/basic/truncation-rtl.html and ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311234</commentid>
    <comment_count>64</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-11-18 18:44:38 -0800</bug_when>
    <thetext>&gt; Known issues with this patch:
&gt; 2) resize test in horizontal-scrollbar-in-rtl.html  fails on mac platform.
&gt; 

resize works. zooming test fails: scrolling and scrollbar position is not updated correctly so the content  stays in relatively the same position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312145</commentid>
    <comment_count>65</comment_count>
      <attachid>74338</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-11-21 11:11:53 -0800</bug_when>
    <thetext>Comment on attachment 74338
patch w/ layout test

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

Looking pretty good now.  One more round should do it.  I just don&apos;t like the directionChanged stuff, but everything else looks fine.

&gt; WebCore/page/FrameView.cpp:453
&gt; +    if (size == contentsSize() &amp;&amp; root-&gt;directionChanged())

directionChanged() doesn&apos;t seem necessary to me.  It seems like you can just check if scrollOriginX changes from zero to non-zero.

&gt; WebCore/platform/ScrollView.cpp:1038
&gt; +    // FIXME: need corresponding functionality from platformWidget.

Does this FIXME still apply?

&gt; WebCore/rendering/RenderBox.cpp:316
&gt; +            if (viewStyle-&gt;direction() != style()-&gt;direction())
&gt; +                viewRenderer-&gt;setDirectionChanged();

As mentioned above, I don&apos;t think this directionChanged() boolean should be necessary.

&gt; WebCore/rendering/RenderBox.cpp:772
&gt; +    // its margins, and including its left layout overflow.
&gt; +    int bx = tx - marginLeft() + view()-&gt;leftLayoutOverflow();

I don&apos;t like the addition to the comment.  You&apos;re still just covering the entire canvas when you include leftLayoutOverflow, so I don&apos;t think you needed to change the comment at all.

&gt; WebCore/rendering/RenderView.h:166
&gt; +    void setDirectionChanged() {m_directionChanged = true;}
&gt; +    bool directionChanged() {return m_directionChanged;}
&gt; +    void resetDirectionChanged() {m_directionChanged = false;}

Remove if you can.  I don&apos;t think you should need it.

&gt; WebCore/rendering/RenderView.h:182
&gt; +    int docWidth(int) const;

Include the parameter name here.  It isn&apos;t obvious what the parameter is, so the name should be there.

&gt; WebCore/rendering/RenderView.h:243
&gt; +    bool m_directionChanged;

Remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313253</commentid>
    <comment_count>66</comment_count>
      <attachid>74752</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-11-24 05:35:01 -0800</bug_when>
    <thetext>Created attachment 74752
Patch w/layout tests

David: Thanks for the review!

The FIXME is indeed still relevant, I&apos;ll take care of it and the issues with zooming in a followup patch if that&apos;s ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313256</commentid>
    <comment_count>67</comment_count>
      <attachid>74753</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-11-24 05:41:58 -0800</bug_when>
    <thetext>Created attachment 74753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314357</commentid>
    <comment_count>68</comment_count>
      <attachid>75017</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-11-29 05:05:47 -0800</bug_when>
    <thetext>Created attachment 75017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314358</commentid>
    <comment_count>69</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-11-29 05:08:57 -0800</bug_when>
    <thetext>Diff from previous patch:
* Re-added workaround for 4213314 which I accidentally removed in previous versions.
* Rebased on ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314633</commentid>
    <comment_count>70</comment_count>
      <attachid>75017</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-11-29 14:12:32 -0800</bug_when>
    <thetext>Comment on attachment 75017
Patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314751</commentid>
    <comment_count>71</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-11-29 17:11:31 -0800</bug_when>
    <thetext>Committed r72852: &lt;http://trac.webkit.org/changeset/72852&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314771</commentid>
    <comment_count>72</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-29 17:40:12 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/72852 might have broken Qt Linux Release
The following tests are not passing:
fast/block/basic/truncation-rtl.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363453</commentid>
    <comment_count>73</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-03-07 11:45:50 -0800</bug_when>
    <thetext>This doesn&apos;t work in all cases: bug 55889.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363472</commentid>
    <comment_count>74</comment_count>
    <who name="Yair Yogev">progame+wk</who>
    <bug_when>2011-03-07 12:08:59 -0800</bug_when>
    <thetext>Simon, this feature is currently completely broken because of the regression apparently caused by http://trac.webkit.org/changeset/76831/
see Bug 55077 for details.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>28754</attachid>
            <date>2009-03-19 09:13:24 -0700</date>
            <delta_ts>2009-03-19 09:13:24 -0700</delta_ts>
            <desc>Simpler example, toggling rtl toggles also the bottom scrollbar</desc>
            <filename>chromertl.html</filename>
            <type>text/html</type>
            <size>259</size>
            <attacher name="Yoah Bar-David">yoah</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8Ym9keSBkaXI9InJ0bCI+DQo8ZGl2IHN0eWxlPSJ3aWR0aDogMjAwMHB4OyBib3Jk
ZXI6IDFweCBzb2xpZCByZWQ7Ij4NCkluIGEgd2lkZSBkaXYsIHNjcm9sbGJhciBzaG91bGQgYmUg
b24gYm90dG9tDQo8L2Rpdj4NCjwvYm9keT4NCjxhIGhyZWY9IiMiIG9uY2xpY2s9ImRvY3VtZW50
LmJvZHkuZGlyPSdydGwnIj5ydGw8L2E+DQo8YSBocmVmPSIjIiBvbmNsaWNrPSJkb2N1bWVudC5i
b2R5LmRpcj0nbHRyJyI+bHRyPC9hPg0KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29675</attachid>
            <date>2009-04-22 00:10:39 -0700</date>
            <delta_ts>2009-04-22 00:23:16 -0700</delta_ts>
            <desc>A workaround fix</desc>
            <filename>issue23556-patch1.txt</filename>
            <type>text/plain</type>
            <size>5098</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Mjc0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDQtMjEgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QSBGaXggZm9yIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTY+
CisKKyAgICAgICAgRnJhbWVWaWV3IHRyaW1zIGEgY2hpbGQgZWxlbWVudCB3aG9zZSBvZmZzZXRM
ZWZ0IHZhbHVlIGlzIG5lZ2F0aXZlLiBPbiB0aGUgb3RoZXIgaGFuZCwKKyAgICAgICAgUmVuZGVy
QmxvY2s6OmRldGVybWluZUhvcml6b250YWxQb3NpdGlvbiBtYXkgc2V0IG5lZ2F0aXZlIG9mZnNl
dExlZnQgdmFsdWUgdG8gYW4gUlRMIGJvZHkgZWxlbWVudAorICAgICAgICB3aWRlciB0aGFuIHRo
ZSB3aW5kb3cgd2lkdGguIEV2ZW4gdGhvdWdoIGl0IGlzIGFuIGV4cGVjdGVkIGJlaGF2aW9yIGZv
ciBlbGVtZW50dHMgZXhjZXB0IGJvZHkgZWxlbWVudHMsCisgICAgICAgIGl0IG1ha2VzIEZyYW1l
VmlldyB0cmltIHRoZSBsZWZ0IHNpZGUgb2YgaXRzIGNoaWxkIGVsZW1lbnRzIGFuZCBwcmV2ZW50
cyBGcmFtZVZpZXcgZnJvbSBkaXNwbGF5aW5nIGEKKyAgICAgICAgaG9yaXpvbnRhbCBzY3JvbGxi
YXIuCisgICAgICAgIFRvIGZpeCB0aGlzIHByb2JsZW0sIHRoaXMgY2hhbmdlIHByZXZlbnRzIGFu
IFJUTCBib2R5IGVsZW1lbnQgZnJvbSBjYXVzaW5nIGFuIHVuZGVyZmxvdyB3aGlsZSBjYWxjdWxh
dGluZworICAgICAgICBpdHMgbGVmdCBwb3NpdGlvbi4KKworICAgICAgICBUZXN0OiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9ydGwtdW5leHBlY3RlZC11bmRlcmZsb3cuaHRtbAorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpkZXRlcm1pbmVIb3Jpem9udGFsUG9zaXRpb24pOgorCiAyMDA5LTA0LTIxICBKb2huIEFi
ZC1FbC1NYWxlayAgPGphbUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0
cmkgR2xhemtvdi4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDQy
NzM2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjAzLDYgKzEyMDMsMTYgQEAgdm9pZCBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lSG9yaXpv
bnRhbFBvcwogICAgIH0gZWxzZSB7CiAgICAgICAgIGludCB4UG9zID0gd2lkdGgoKSAtIGJvcmRl
clJpZ2h0KCkgLSBwYWRkaW5nUmlnaHQoKSAtIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKICAg
ICAgICAgaW50IGNoUG9zID0geFBvcyAtIChjaGlsZC0+d2lkdGgoKSArIGNoaWxkLT5tYXJnaW5S
aWdodCgpKTsKKyAgICAgICAgaWYgKG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoYm9keVRh
ZykpIHsKKyAgICAgICAgICAgIGludCB4TWluID0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQo
KTsKKyAgICAgICAgICAgIGlmIChjaFBvcyA8IHhNaW4pIHsKKyAgICAgICAgICAgICAgLy8gQnVn
IDIzNTU2OiBGcmFtZVZpZXcgdHJpbXMgYSBib2R5IGVsZW1lbnQgd2hvc2Ugb2Zmc2V0TGVmdCBp
cyBuZWdhdGl2ZS4gVGhpcyBwcmV2ZW50cyBGcmFtZVZpZXcKKyAgICAgICAgICAgICAgLy8gZnJv
bSBkaXNwbGF5aW5nIGEgc2Nyb2xsYmFyIGluIGFuIFJUTCBwYWdlIHdoaWNoIGNvbnRhaW5zIGFu
IGVsZW1lbnQgd2lkZXIgdGhhbiB0aGUgd2luZG93IHdpZHRoLgorICAgICAgICAgICAgICAvLyBT
bywgd2Ugc2hvdWxkIHByZXZlbnQgfGNoUG9zfCBmcm9tIGNhdXNpbmcgYW4gdW5kZXJmbG93IHdo
ZW4gdGhpcyBpcyBhIGJvZHkgZWxlbWVudC4KKyAgICAgICAgICAgICAgeFBvcyA9IHhQb3MgLSBj
aFBvcyArIHhNaW47CisgICAgICAgICAgICAgIGNoUG9zID0geE1pbjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQogICAgICAgICBpZiAoY2hpbGQtPmF2b2lkc0Zsb2F0cygpKSB7CiAgICAgICAg
ICAgICBpbnQgcmlnaHRPZmYgPSByaWdodE9mZnNldChoZWlnaHQoKSwgZmFsc2UpOwogICAgICAg
ICAgICAgaWYgKHN0eWxlKCktPnRleHRBbGlnbigpICE9IFdFQktJVF9DRU5URVIgJiYgY2hpbGQt
PnN0eWxlKCktPm1hcmdpblJpZ2h0KCkudHlwZSgpICE9IEF1dG8pIHsKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDQyNzQxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMDktMDQtMjEgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSB0
ZXN0IGZvciA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTU2Pgor
ICAgICAgICBJbnN0ZWFkIG9mIGNoZWNraW5nIGlmIEZyYW1lVmlldyBzaG93cyBhIGhvcml6b250
YWwgc2Nyb2xsYmFyLCB0aGlzIHRlc3QgY2hlY2tzIHRoZSBvZmZzZXRMZWZ0IHZhbHVlIG9mIGEK
KyAgICAgICAgY2hpbGQgUlRMIGVsZW1lbnQgb2YgYSBib2R5IGVsZW1lbnQgYW5kIHZlcmlmeSBp
dCBpcyBwb3NpdGl2ZSBiZWNhdXNlIEZyYW1lVmlldyB0cmltcyBpdHMgbGVmdCBzaWRlIHdpdGhv
dXQKKyAgICAgICAgZGlzcGxheWluZyBhIGhvcml6b250YWwgc2Nyb2xsYmFyIGlmIHRoaXMgdmFs
dWUgYmVjb21lcyBuZWdhdGl2ZS4KKworICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFs
L3J0bC11bmV4cGVjdGVkLXVuZGVyZmxvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmV4cGVjdGVkLXVuZGVyZmxvdy5odG1sOiBB
ZGRlZC4KKwogMjAwOS0wNC0yMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIC0gdGVzdCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY3NTUxMzc+IEFjdGlvbiBkaWN0aW9u
YXJ5IGZvciBwb2xpY3kKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFs
L3J0bC11bmV4cGVjdGVkLXVuZGVyZmxvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZXhwZWN0ZWQtdW5kZXJmbG93
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL3J0bC11bmV4cGVjdGVkLXVuZGVyZmxvdy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0IHRlc3RzIGlmIHRoZSBiZWxvdyBSVEwgZWxl
bWVudCBpcyBkaXNwbGF5ZWQgd2l0aG91dCBiZWluZyB0cmltbWVkLiBJZiB0aGlzIHRlc3Qgc3Vj
Y2VlZHMsIHlvdSBjYW4gc2VlIGEgc3RyaW5nICJTVUNDRUVERUQiIGJlbG93LgordGVzdAorU1VD
Q0VFREVECkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtdW5l
eHBlY3RlZC11bmRlcmZsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9ydGwtdW5leHBlY3RlZC11bmRlcmZsb3cuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmV4cGVjdGVk
LXVuZGVyZmxvdy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPlRlc3QgYW4gdW5leHBlY3RlZCB1bmRlcmZsb3cgZm9yIFJUTCBlbGVtZW50
czwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorZnVuY3Rpb24gbGF5b3V0VGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0
Jyk7CisgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jykub2Zmc2V0TGVmdCA+
PSAwKSB7CisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgPSAiU1VDQ0VFREVEIjsKKyAgICB9IGVs
c2UgeworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ID0gIkZBSUxFRCI7CisgICAgfQorfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBkaXI9InJ0bCI+Cis8ZGl2IGRpcj0ibHRyIj5UaGlzIHRl
c3QgdGVzdHMgaWYgdGhlIGJlbG93IFJUTCBlbGVtZW50IGlzIGRpc3BsYXllZCB3aXRob3V0IGJl
aW5nIHRyaW1tZWQuIElmIHRoaXMgdGVzdCBzdWNjZWVkcywgeW91IGNhbiBzZWUgYSBzdHJpbmcg
IlNVQ0NFRURFRCIgYmVsb3cuPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0IiBzdHlsZT0id2lkdGg6IDEy
MCU7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiPnRlc3Q8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCIg
Y29udGVudGVkaXRhYmxlPSJ0cnVlIiBkaXI9Imx0ciI+PC9kaXY+Cis8c2NyaXB0IGxhbmd1YWdl
PSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorbGF5b3V0VGVzdCgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29676</attachid>
            <date>2009-04-22 00:23:16 -0700</date>
            <delta_ts>2009-11-19 23:42:34 -0800</delta_ts>
            <desc>a workaround fix 2</desc>
            <filename>issue23556-patch2.txt</filename>
            <type>text/plain</type>
            <size>5108</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Mjc0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDQtMjEgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QSBGaXggZm9yIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTY+
CisKKyAgICAgICAgRnJhbWVWaWV3IHRyaW1zIGEgY2hpbGQgZWxlbWVudCB3aG9zZSBvZmZzZXRM
ZWZ0IHZhbHVlIGlzIG5lZ2F0aXZlLiBPbiB0aGUgb3RoZXIgaGFuZCwKKyAgICAgICAgUmVuZGVy
QmxvY2s6OmRldGVybWluZUhvcml6b250YWxQb3NpdGlvbiBtYXkgc2V0IG5lZ2F0aXZlIG9mZnNl
dExlZnQgdmFsdWUgdG8gYW4gUlRMIGJvZHkgZWxlbWVudAorICAgICAgICB3aWRlciB0aGFuIHRo
ZSB3aW5kb3cgd2lkdGguIEV2ZW4gdGhvdWdoIGl0IGlzIGFuIGV4cGVjdGVkIGJlaGF2aW9yIGZv
ciBlbGVtZW50dHMgZXhjZXB0IGJvZHkgZWxlbWVudHMsCisgICAgICAgIGl0IG1ha2VzIEZyYW1l
VmlldyB0cmltIHRoZSBsZWZ0IHNpZGUgb2YgaXRzIGNoaWxkIGVsZW1lbnRzIGFuZCBwcmV2ZW50
cyBGcmFtZVZpZXcgZnJvbSBkaXNwbGF5aW5nIGEKKyAgICAgICAgaG9yaXpvbnRhbCBzY3JvbGxi
YXIuCisgICAgICAgIFRvIGZpeCB0aGlzIHByb2JsZW0sIHRoaXMgY2hhbmdlIHByZXZlbnRzIGFu
IFJUTCBib2R5IGVsZW1lbnQgZnJvbSBjYXVzaW5nIGFuIHVuZGVyZmxvdyB3aGlsZSBjYWxjdWxh
dGluZworICAgICAgICBpdHMgbGVmdCBwb3NpdGlvbi4KKworICAgICAgICBUZXN0OiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9ydGwtdW5leHBlY3RlZC11bmRlcmZsb3cuaHRtbAorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpkZXRlcm1pbmVIb3Jpem9udGFsUG9zaXRpb24pOgorCiAyMDA5LTA0LTIxICBKb2huIEFi
ZC1FbC1NYWxlayAgPGphbUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0
cmkgR2xhemtvdi4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDQy
NzM2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjAzLDYgKzEyMDMsMTYgQEAgdm9pZCBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lSG9yaXpv
bnRhbFBvcwogICAgIH0gZWxzZSB7CiAgICAgICAgIGludCB4UG9zID0gd2lkdGgoKSAtIGJvcmRl
clJpZ2h0KCkgLSBwYWRkaW5nUmlnaHQoKSAtIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKICAg
ICAgICAgaW50IGNoUG9zID0geFBvcyAtIChjaGlsZC0+d2lkdGgoKSArIGNoaWxkLT5tYXJnaW5S
aWdodCgpKTsKKyAgICAgICAgaWYgKG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoYm9keVRh
ZykpIHsKKyAgICAgICAgICAgIGludCB4TWluID0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQo
KTsKKyAgICAgICAgICAgIGlmIChjaFBvcyA8IHhNaW4pIHsKKyAgICAgICAgICAgICAgICAvLyBC
dWcgMjM1NTY6IEZyYW1lVmlldyB0cmltcyBhIGJvZHkgZWxlbWVudCB3aG9zZSBvZmZzZXRMZWZ0
IGlzIG5lZ2F0aXZlLiBUaGlzIHByZXZlbnRzIEZyYW1lVmlldworICAgICAgICAgICAgICAgIC8v
IGZyb20gZGlzcGxheWluZyBhIHNjcm9sbGJhciBpbiBhbiBSVEwgcGFnZSB3aGljaCBjb250YWlu
cyBhbiBlbGVtZW50IHdpZGVyIHRoYW4gdGhlIHdpbmRvdyB3aWR0aC4KKyAgICAgICAgICAgICAg
ICAvLyBTbywgd2Ugc2hvdWxkIHByZXZlbnQgfGNoUG9zfCBmcm9tIGNhdXNpbmcgYW4gdW5kZXJm
bG93IHdoZW4gdGhpcyBpcyBhIGJvZHkgZWxlbWVudC4KKyAgICAgICAgICAgICAgICB4UG9zID0g
eFBvcyAtIGNoUG9zICsgeE1pbjsKKyAgICAgICAgICAgICAgICBjaFBvcyA9IHhNaW47CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKGNoaWxkLT5hdm9pZHNGbG9hdHMoKSkg
ewogICAgICAgICAgICAgaW50IHJpZ2h0T2ZmID0gcmlnaHRPZmZzZXQoaGVpZ2h0KCksIGZhbHNl
KTsKICAgICAgICAgICAgIGlmIChzdHlsZSgpLT50ZXh0QWxpZ24oKSAhPSBXRUJLSVRfQ0VOVEVS
ICYmIGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLnR5cGUoKSAhPSBBdXRvKSB7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA0Mjc0MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA5LTA0LTIxICBIaXJvbm9yaSBCb25vICA8aGJvbm9A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEEgdGVzdCBmb3IgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU1Nj4KKyAgICAgICAgSW5zdGVhZCBvZiBjaGVja2luZyBpZiBGcmFtZVZpZXcgc2hvd3Mg
YSBob3Jpem9udGFsIHNjcm9sbGJhciwgdGhpcyB0ZXN0IGNoZWNrcyB0aGUgb2Zmc2V0TGVmdCB2
YWx1ZSBvZiBhCisgICAgICAgIGNoaWxkIFJUTCBlbGVtZW50IG9mIGEgYm9keSBlbGVtZW50IGFu
ZCB2ZXJpZnkgaXQgaXMgcG9zaXRpdmUgYmVjYXVzZSBGcmFtZVZpZXcgdHJpbXMgaXRzIGxlZnQg
c2lkZSB3aXRob3V0CisgICAgICAgIGRpc3BsYXlpbmcgYSBob3Jpem9udGFsIHNjcm9sbGJhciBp
ZiB0aGlzIHZhbHVlIGJlY29tZXMgbmVnYXRpdmUuCisKKyAgICAgICAgKiBmYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9ydGwtdW5leHBlY3RlZC11bmRlcmZsb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtdW5leHBlY3RlZC11bmRlcmZs
b3cuaHRtbDogQWRkZWQuCisKIDIwMDktMDQtMjEgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxl
LmNvbT4KIAogICAgICAgICAtIHRlc3QgZm9yIDxyZGFyOi8vcHJvYmxlbS82NzU1MTM3PiBBY3Rp
b24gZGljdGlvbmFyeSBmb3IgcG9saWN5CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9ydGwtdW5leHBlY3RlZC11bmRlcmZsb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmV4cGVjdGVk
LXVuZGVyZmxvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtdW5leHBlY3RlZC11bmRlcmZsb3ctZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdCB0ZXN0cyBpZiB0aGUgYmVs
b3cgUlRMIGVsZW1lbnQgaXMgZGlzcGxheWVkIHdpdGhvdXQgYmVpbmcgdHJpbW1lZC4gSWYgdGhp
cyB0ZXN0IHN1Y2NlZWRzLCB5b3UgY2FuIHNlZSBhIHN0cmluZyAiU1VDQ0VFREVEIiBiZWxvdy4K
K3Rlc3QKK1NVQ0NFRURFRApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvcnRsLXVuZXhwZWN0ZWQtdW5kZXJmbG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZXhwZWN0ZWQtdW5kZXJmbG93Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwt
dW5leHBlY3RlZC11bmRlcmZsb3cuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAor
PGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGFuIHVuZXhwZWN0ZWQgdW5kZXJmbG93IGZvciBS
VEwgZWxlbWVudHM8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGxheW91dFRlc3QoKSB7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpOworICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpLm9m
ZnNldExlZnQgPj0gMCkgeworICAgICAgICByZXN1bHQuaW5uZXJUZXh0ID0gIlNVQ0NFRURFRCI7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCA9ICJGQUlMRUQiOworICAg
IH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgZGlyPSJydGwiPgorPGRpdiBkaXI9Imx0
ciI+VGhpcyB0ZXN0IHRlc3RzIGlmIHRoZSBiZWxvdyBSVEwgZWxlbWVudCBpcyBkaXNwbGF5ZWQg
d2l0aG91dCBiZWluZyB0cmltbWVkLiBJZiB0aGlzIHRlc3Qgc3VjY2VlZHMsIHlvdSBjYW4gc2Vl
IGEgc3RyaW5nICJTVUNDRUVERUQiIGJlbG93LjwvZGl2PgorPGRpdiBpZD0idGVzdCIgc3R5bGU9
IndpZHRoOiAxMjAlOyBib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij50ZXN0PC9kaXY+Cis8ZGl2IGlk
PSJyZXN1bHQiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgZGlyPSJsdHIiPjwvZGl2PgorPHNjcmlw
dCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2xheW91dFRl
c3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="14832"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43559</attachid>
            <date>2009-11-19 23:42:34 -0800</date>
            <delta_ts>2010-01-06 03:31:22 -0800</delta_ts>
            <desc>A workaround fix 3</desc>
            <filename>issue23556-patch4.txt</filename>
            <type>text/plain</type>
            <size>8582</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTIyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDktMTEtMTkgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QSBmaXggZm9yIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMzU1Nj4uCisgICAgICAgIE9uIFJUTCBw
YWdlcywgaG9yaXpvbnRhbCBzY3JvbGxiYXIgaXMgbWlzc2luZworCisgICAgICAgIEZvciBhbiBS
VEwgZWxlbWVudCBhbmQgaXRzIGNoaWxkIGVsZW1lbnRzIHdoaWNoIGFyZSBhbHNvIFJUTCBidXQg
d2lkZXIgdGhhbiB0aGVpciBwYXJlbnQsCisgICAgICAgIHRoZSBsZWZ0IHBvc2l0aW9ucyBvZiB0
aGVzZSBjaGlsZCBlbGVtZW50cyBiZWNvbWUgbGVzcyB0aGFuIDAuIEluIHRoaXMgY2FzZSwgUmVu
ZGVyQmxvY2sKKyAgICAgICAgcmV0dXJucyB0aGUgaW5jb3JyZWN0IHdpZHRoIHRvIEZyYW1lVmll
dyBhbmQgRnJhbWVWaWV3IGNsaXBzIHRoZSBjaGlsZCBlbGVtZW50cy4KKyAgICAgICAgVG8gZml4
IHRoaXMgdW5leHBlY3RlZCBjbGlwcGluZywgdGhpcyBjaGFuZ2Ugc2F2ZXMgdGhlIG1pbmltYWwg
bGVmdCBwb3NpdGlvbiBmb3IgdGhlIGNoaWxkCisgICAgICAgIGVsZW1lbnRzIGFuZCBpbmNyZWFz
ZXMgdGhlIGxlZnQgbWFyZ2luIG9mIHRoZSBwYXJlbnQgZWxlbWVudCBzbyB0aGUgcGFyZW50IGVs
ZW1lbnQgY2FuCisgICAgICAgIHJldHVybiB0aGUgY29ycmVjdCB3aWR0aCB0byBGcmFtZVZpZXcu
CisgICAgICAgIFRvIHRlc3QgdGhpcyBpc3N1ZSwgd2UgY2hlY2sgdGhlIGxlZnQgcG9zaXRpb25z
IG9mIHN1Y2ggY2hpbGQgZWxlbWVudHMgYW5kIHZlcmlmeQorICAgICAgICB0aGV5IGFyZSBncmVh
dGVyIHRoYW4gMC4KKworICAgICAgICBUZXN0OiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwt
dW5leHBlY3RlZC11bmRlcmZsb3cuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcDogQWRkZWQgY29kZSB0aGF0IGNhbGN1bGF0ZXMgdGhlIG1pbmltYWwgbGVmdCBwb3Np
dGlvbiBpbiB0aGUKKyAgICAgICAgY2hpbGQgZWxlbWVudHMgd2hvc2UgZGlyZWN0aW9ucyBhcmUg
UlRMLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZXRlcm1pbmVIb3Jpem9udGFsUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrQ2hpbGRyZW4pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOiBBZGRlZCBtX3J0bE1pbkNoaWxkUG9zaXRp
b24gYW5kIG92ZXJyaWRlIG1hcmdpbkxlZnQoKSB0bworICAgICAgICBjYWxjdWxhdGUgdGhlIGNv
cnJlY3QgbGVmdCBtYXJnaW4gd2hlbiBpdHMgZGlyZWN0aW9uIGlzIFJUTC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjptYXJnaW5MZWZ0KToKKwogMjAwOS0xMS0xOSAgQnJpYW4gV2Vp
bnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiA1MTIy
NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTIyLDYgKzEyMiw3IEBAIFJlbmRlckJsb2NrOjpSZW5kZXJCbG9jayhOb2RlKiBub2RlKQog
ICAgICAgLCBtX2lubGluZUNvbnRpbnVhdGlvbigwKQogICAgICAgLCBtX21heE1hcmdpbigwKQog
ICAgICAgLCBtX2xpbmVIZWlnaHQoLTEpCisgICAgICAsIG1fcnRsTWluQ2hpbGRQb3NpdGlvbigw
KQogewogICAgIHNldENoaWxkcmVuSW5saW5lKHRydWUpOwogfQpAQCAtMTE2NCw2ICsxMTY1LDkg
QEAgdm9pZCBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lSG9yaXpvbnRhbFBvcwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGludCB4UG9zID0gd2lkdGgoKSAtIGJvcmRlclJpZ2h0KCkgLSBwYWRkaW5nUmln
aHQoKSAtIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKICAgICAgICAgaW50IGNoUG9zID0geFBv
cyAtIChjaGlsZC0+d2lkdGgoKSArIGNoaWxkLT5tYXJnaW5SaWdodCgpKTsKKworICAgICAgICAv
LyBVcGRhdGUgdGhlIG1pbmltYWwgbGVmdCBwb3NpdGlvbi4KKyAgICAgICAgbV9ydGxNaW5DaGls
ZFBvc2l0aW9uID0gbWluKGNoUG9zLCBtX3J0bE1pbkNoaWxkUG9zaXRpb24pOwogICAgICAgICBp
ZiAoY2hpbGQtPmF2b2lkc0Zsb2F0cygpKSB7CiAgICAgICAgICAgICBpbnQgcmlnaHRPZmYgPSBy
aWdodE9mZnNldChoZWlnaHQoKSwgZmFsc2UpOwogICAgICAgICAgICAgaWYgKHN0eWxlKCktPnRl
eHRBbGlnbigpICE9IFdFQktJVF9DRU5URVIgJiYgY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0
KCkudHlwZSgpICE9IEF1dG8pIHsKQEAgLTEyNTgsNiArMTI2Miw5IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmxheW91dEJsb2NrQ2hpbGRyZW4oYm8KICAgICBpbnQgcHJldmlvdXNGbG9hdEJvdHRvbSA9
IDA7CiAgICAgbWF4RmxvYXRCb3R0b20gPSAwOwogCisgICAgLy8gUmVzZXQgdGhlIG1pbmltYWwg
bGVmdCBwb3NpdGlvbiBmb3IgUlRMIGNoaWxkIGVsZW1lbnRzIGJlZm9yZSBzdGFydCBsYXlvdXRp
bmcgY2hpbGRyZW4uCisgICAgbV9ydGxNaW5DaGlsZFBvc2l0aW9uID0gMDsKKwogICAgIFJlbmRl
ckJveCogbmV4dCA9IGZpcnN0Q2hpbGRCb3goKTsKIAogICAgIHdoaWxlIChuZXh0KSB7CkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJldmlzaW9uIDUxMjI2KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSwxMyBAQCBw
dWJsaWM6CiAgICAgLy8gc3R5bGUgZnJvbSB0aGlzIFJlbmRlckJsb2NrLgogICAgIFJlbmRlckJs
b2NrKiBjcmVhdGVBbm9ueW1vdXNCbG9jayhib29sIGlzRmxleGlibGVCb3ggPSBmYWxzZSkgY29u
c3Q7CiAKKyAgICAvLyBPdmVycmlkZSB0aGUgUmVuZGVyQm94OjptYXJnaW5MZWZ0KCkuCisgICAg
Ly8gSW5jcmVhc2UgdGhlIGxlZnQgbWFyZ2luIGVub3VnaCB0byBkaXNwbGF5IHRoZSBjaGlsZCBl
bGVtZW50cyB3aGVuIHRoaXMgZWxlbWVudCBpcyBhbiBSVEwKKyAgICAvLyBlbGVtZW50IGFuZCB0
aGVyZSBhcmUgY2hpbGQgZWxlbWVudHMgd2hpY2ggYXJlIGFsc28gUlRMIGJ1dCB3aWRlciB0aGFu
IHRoaXMgZWxlbWVudC4KKyAgICAvLyAoU2luY2UgbV9ydGxNaW5DaGlsZFBvc2l0aW9uIGlzIGFs
d2F5cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMCwgdGhlIHJldHVybiB2YWx1ZSBpcyBhbHdheXMK
KyAgICAvLyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbV9tYXJnaW5MZWZ0LikKKyAgICB2aXJ0
dWFsIGludCBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW5MZWZ0IC0gbV9ydGxN
aW5DaGlsZFBvc2l0aW9uOyB9CisKIHByb3RlY3RlZDoKICAgICB2b2lkIG1vdmVDaGlsZFRvKFJl
bmRlck9iamVjdCogdG8sIFJlbmRlck9iamVjdENoaWxkTGlzdCogdG9DaGlsZExpc3QsIFJlbmRl
ck9iamVjdCogY2hpbGQpOwogICAgIHZvaWQgbW92ZUNoaWxkVG8oUmVuZGVyT2JqZWN0KiB0bywg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB0b0NoaWxkTGlzdCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCwgUmVuZGVyT2JqZWN0KiBjaGlsZCk7CkBAIC01MTYsNiArNTIzLDE1IEBAIHByaXZhdGU6
CiAgICAgUmVuZGVyTGluZUJveExpc3QgbV9saW5lQm94ZXM7ICAgLy8gQWxsIG9mIHRoZSByb290
IGxpbmUgYm94ZXMgY3JlYXRlZCBmb3IgdGhpcyBibG9jayBmbG93LiAgRm9yIGV4YW1wbGUsIDxk
aXY+SGVsbG88YnI+d29ybGQuPC9kaXY+IHdpbGwgaGF2ZSB0d28gdG90YWwgbGluZXMgZm9yIHRo
ZSA8ZGl2Pi4KIAogICAgIG11dGFibGUgaW50IG1fbGluZUhlaWdodDsKKworICAgIC8vIFRoZSBt
aW5pbWFsIGxlZnQgcG9zaXRpb24gZm9yIHRoZSBjaGlsZCBlbGVtZW50cyB3aG9zZSBkaXJlY3Rp
b25zIGFyZSBSVEwuCisgICAgLy8gV2hlbiBhbiBSVEwgZWxlbWVudCBoYXMgY2hpbGQgZWxlbWVu
dHMgd2hpY2ggYXJlIHdpZGVyIHRoYW4gdGhpcyBSVEwgZWxlbWVudCwgdGhlaXIgbGVmdAorICAg
IC8vIHBvc2l0aW9ucyBiZWNvbWUgbGVzcyB0aGFuIDAgYW5kIHRoaXMgUlRMIGVsZW1lbnQgcmV0
dXJucyBpbmNvcnJlY3Qgd2lkdGggdG8gaXRzIHBhcmVudC4KKyAgICAvLyBUbyBwcmV2ZW50IHJl
bmRlcmVycyBmcm9tIGNsaXBwaW5nIHN1Y2ggY2hpbGQgZWxlbWVudHMgd2l0aCB0aGlzIGluY29y
cmVjdCB3aWR0aCwgd2UKKyAgICAvLyByZW1lbWJlciB0aGUgbWluaW1hbCB2YWx1ZSBvZiB0aGVp
ciBsZWZ0IHBvc2l0aW9ucyBhbmQgaW5jcmVhc2UgdGhlIGxlZnQgbWFyZ2luCisgICAgLy8gb2Yg
dGhpcyBlbGVtZW50IHdoZW4gaXRzIGRpcmVjdGlvbiBpcyBSVEwuCisgICAgLy8gKFRoaXMgdmFs
dWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMC4pCisgICAgaW50IG1fcnRsTWluQ2hp
bGRQb3NpdGlvbjsKIH07CiAKIGlubGluZSBSZW5kZXJCbG9jayogdG9SZW5kZXJCbG9jayhSZW5k
ZXJPYmplY3QqIG9iamVjdCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxMjI2KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMTEtMTkg
IEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBmaXggZm9yIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMzU1Nj4uCisgICAgICAgIE9uIFJUTCBwYWdlcywgaG9yaXpvbnRhbCBzY3JvbGxiYXIg
aXMgbWlzc2luZworCisgICAgICAgIEZvciBhbiBSVEwgZWxlbWVudCBhbmQgaXRzIGNoaWxkIGVs
ZW1lbnRzIHdoaWNoIGFyZSBhbHNvIFJUTCBidXQgd2lkZXIgdGhhbiB0aGVpciBwYXJlbnQsCisg
ICAgICAgIHRoZSBsZWZ0IHBvc2l0aW9ucyBvZiB0aGVzZSBjaGlsZCBlbGVtZW50cyBiZWNvbWUg
bGVzcyB0aGFuIDAuIEluIHRoaXMgY2FzZSwgUmVuZGVyQmxvY2sKKyAgICAgICAgcmV0dXJucyB0
aGUgaW5jb3JyZWN0IHdpZHRoIHRvIEZyYW1lVmlldyBhbmQgRnJhbWVWaWV3IGNsaXBzIHRoZSBj
aGlsZCBlbGVtZW50cy4KKyAgICAgICAgVG8gZml4IHRoaXMgdW5leHBlY3RlZCBjbGlwcGluZywg
dGhpcyBjaGFuZ2Ugc2F2ZXMgdGhlIG1pbmltYWwgbGVmdCBwb3NpdGlvbiBmb3IgdGhlIGNoaWxk
CisgICAgICAgIGVsZW1lbnRzIGFuZCBpbmNyZWFzZXMgdGhlIGxlZnQgbWFyZ2luIG9mIHRoZSBw
YXJlbnQgZWxlbWVudCBzbyB0aGUgcGFyZW50IGVsZW1lbnQgY2FuCisgICAgICAgIHJldHVybiB0
aGUgY29ycmVjdCB3aWR0aCB0byBGcmFtZVZpZXcuCisgICAgICAgIFRvIHRlc3QgdGhpcyBpc3N1
ZSwgd2UgY2hlY2sgdGhlIGxlZnQgcG9zaXRpb25zIG9mIHN1Y2ggUlRMIGNoaWxkIGVsZW1lbnRz
IGFuZCB2ZXJpZnkKKyAgICAgICAgdGhleSBhcmUgZ3JlYXRlciB0aGFuIDAuCisKKyAgICAgICAg
KiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtdW5leHBlY3RlZC11bmRlcmZsb3ctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtdW5l
eHBlY3RlZC11bmRlcmZsb3cuaHRtbDogQWRkZWQuCisKIDIwMDktMTEtMTkgIEJldGggRGFraW4g
IDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZXhwZWN0ZWQt
dW5kZXJmbG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9ydGwtdW5leHBlY3RlZC11bmRlcmZsb3ctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVu
ZXhwZWN0ZWQtdW5kZXJmbG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
IEBACitUaGlzIHRlc3QgdGVzdHMgaWYgdGhlIGJlbG93IDxkaXY+IGVsZW1lbnRzIGFyZSBkaXNw
bGF5ZWQgd2l0aG91dCBiZWluZyBjbGlwcGVkLiBJZiB0aGlzIHRlc3Qgc3VjY2VlZHMsIHlvdSBj
YW4gc2VlIGEgc3RyaW5nICJTVUNDRUVERUQiIGJlbG93LgorCit0ZXN0MAordGVzdDEKK1NVQ0NF
RURFRApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZXhw
ZWN0ZWQtdW5kZXJmbG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2ludGVybmF0aW9uYWwvcnRsLXVuZXhwZWN0ZWQtdW5kZXJmbG93Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtdW5leHBlY3RlZC11
bmRlcmZsb3cuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOCBAQAorPGh0bWw+DQorPGhl
YWQ+DQorPHRpdGxlPlJUTCBvdmVyZmxvdzwvdGl0bGU+DQorPC9oZWFkPg0KKzxib2R5IGRpcj0i
cnRsIj4NCis8cCBkaXI9Imx0ciI+VGhpcyB0ZXN0IHRlc3RzIGlmIHRoZSBiZWxvdyAmbHQ7ZGl2
Jmd0OyBlbGVtZW50cyBhcmUgZGlzcGxheWVkIHdpdGhvdXQgYmVpbmcgY2xpcHBlZC4gSWYgdGhp
cyB0ZXN0IHN1Y2NlZWRzLCB5b3UgY2FuIHNlZSBhIHN0cmluZyAiU1VDQ0VFREVEIiBiZWxvdy48
L3A+DQorPGRpdiBpZD0idGVzdDAiIHN0eWxlPSJ3aWR0aDogMTEwJTsgYm9yZGVyOiAxcHggc29s
aWQgcmVkOyI+dGVzdDA8L2Rpdj4NCis8ZGl2IGlkPSJ0ZXN0MSIgc3R5bGU9IndpZHRoOiAxMjAl
OyBib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij50ZXN0MTwvZGl2Pg0KKzxkaXYgaWQ9InJlc3VsdCIg
Y29udGVudGVkaXRhYmxlPSJ0cnVlIiBkaXI9Imx0ciI+PC9kaXY+DQorPHNjcmlwdCBsYW5ndWFn
ZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQ0KKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOw0KK3ZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyk7
DQorDQorLy8gUmV0cmlldmUgdGhlIGxlZnQgcG9zaXRpb25zIG9mIHRoZSA8ZGl2PiBlbGVtZW50
cy4NCit2YXIgbGVmdDAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDAnKS5vZmZzZXRM
ZWZ0Ow0KK3ZhciBsZWZ0MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MScpLm9mZnNl
dExlZnQ7DQorDQorLy8gQ29tcGFyZSB0aGUgbGVmdCBwb3NpdGlvbnMgYW5kIHZlcmlmeSBpZiB0
aGV5IGFyZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCwgaS5lLiB0aGV5IGFyZSBub3QgY2xp
cHBlZC4NCisvLyBBbHNvLCBjaGVjayBpZiB0aGUgZWxlbWVudHMgYXJlIHBsYWNlZCBjb3JyZWN0
bHksIGkuZS4gdGhlIGxlZnQgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgZ3JlYXRl
ciB0aGFuDQorLy8gdGhlIG9uZSBvZiB0aGUgc2Vjb25kIGVsZW1lbnQgYmVjYXVzZSB0aGUgZmly
c3Qgb25lIGlzIG5hcnJvd2VyIHRoYW4gdGhlIHNlY29uZCBvbmUuDQoraWYgKGxlZnQxID49IDAg
JiYgbGVmdDAgPj0gbGVmdDEpDQorICAgIHJlc3VsdC5pbm5lclRleHQgPSAiU1VDQ0VFREVEIjsN
CitlbHNlDQorICAgIHJlc3VsdC5pbm5lclRleHQgPSAiRkFJTEVEIjsNCis8L3NjcmlwdD4NCis8
L2JvZHk+DQorPC9odG1sPg0KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmV4cGVjdGVkLXVuZGVyZmxvdy5odG1sCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgo=
</data>
<flag name="review"
          id="25300"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45958</attachid>
            <date>2010-01-06 03:31:22 -0800</date>
            <delta_ts>2010-04-11 23:05:47 -0700</delta_ts>
            <desc>Workaround fix 4</desc>
            <filename>issue23556-patch6.txt</filename>
            <type>text/plain</type>
            <size>7749</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mjg0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDEtMDUgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QSBmaXggZm9yIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMzU1Nj4uCisgICAgICAgIE9uIFJUTCBw
YWdlcywgaG9yaXpvbnRhbCBzY3JvbGxiYXIgaXMgbWlzc2luZworCisgICAgICAgIEZvciBhbiBS
VEwgZWxlbWVudCBhbmQgaXRzIGNoaWxkIGVsZW1lbnRzIHdoaWNoIGFyZSB3aWRlciB0aGFuIHRo
ZWlyIHBhcmVudCwgdGhlaXIgbGVmdAorICAgICAgICBwb3NpdGlvbnMgYmVjb21lIDwgMCBhbmQg
dGhlIFJUTCBlbGVtZW50IHJldHVybnMgdGhlIGluY29ycmVjdCB3aWR0aCB0byBpdHMgcGFyZW50
LgorICAgICAgICBUaGlzIGNoYW5nZSBzYXZlcyB0aGUgbGVmdG1vc3QgcG9zaXRpb24gZm9yIHN1
Y2ggY2hpbGQgZWxlbWVudHMgYW5kIGluY3JlYXNlcyB0aGUgbGVmdAorICAgICAgICBtYXJnaW4g
c28gdGhlIFJUTCBlbGVtZW50IGNhbiByZXR1cm4gdGhlIGNvcnJlY3Qgd2lkdGguCisgICAgICAg
IFRvIHRlc3QgdGhpcyBpc3N1ZSwgd2UgY2hlY2sgdGhlIGxlZnQgcG9zaXRpb25zIG9mIHN1Y2gg
Y2hpbGQgZWxlbWVudHMgYW5kIHZlcmlmeQorICAgICAgICB0aGV5IGFyZSBncmVhdGVyIHRoYW4g
MC4KKworICAgICAgICBUZXN0OiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtdW5leHBlY3Rl
ZC11bmRlcmZsb3cuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDog
QWRkZWQgY29kZSB0aGF0IGNhbGN1bGF0ZXMgdGhlIGxlZnRtb3N0IHBvc2l0aW9uIGZvciB0aGUK
KyAgICAgICAgY2hpbGQgZWxlbWVudHMgb2YgYW4gUlRMIGVsZW1lbnQgYW5kIGluY3JlYXNlcyB0
aGUgbGVmdCBtYXJnaW4gb2YgdGhlIFJUTCBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OlJlbmRlckJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpk
ZXRlcm1pbmVIb3Jpem9udGFsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmxheW91dEJsb2NrQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
Om1hcmdpbkxlZnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorCiAyMDEw
LTAxLTA1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAko
cmV2aXNpb24gNTI4NDcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsNyBAQCBSZW5kZXJCbG9jazo6UmVuZGVyQmxvY2so
Tm9kZSogbm9kZSkKICAgICAgICwgbV9pbmxpbmVDb250aW51YXRpb24oMCkKICAgICAgICwgbV9t
YXhNYXJnaW4oMCkKICAgICAgICwgbV9saW5lSGVpZ2h0KC0xKQorICAgICAgLCBtX3J0bE1pbkNo
aWxkUG9zaXRpb24oMCkKIHsKICAgICBzZXRDaGlsZHJlbklubGluZSh0cnVlKTsKIH0KQEAgLTEx
NjksNiArMTE3MCwxNSBAQCB2b2lkIFJlbmRlckJsb2NrOjpkZXRlcm1pbmVIb3Jpem9udGFsUG9z
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW50IHhQb3MgPSB3aWR0aCgpIC0gYm9yZGVyUmlnaHQo
KSAtIHBhZGRpbmdSaWdodCgpIC0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCgpOwogICAgICAgICBp
bnQgY2hQb3MgPSB4UG9zIC0gKGNoaWxkLT53aWR0aCgpICsgY2hpbGQtPm1hcmdpblJpZ2h0KCkp
OworCisgICAgICAgIC8vIFdoZW4gYW4gUlRMIGVsZW1lbnQgaGFzIGNoaWxkcmVuIHdpZGVyIHRo
YW4gaXQgKGkuZS4gY2hQb3MgPCAwKSwgd2UgbmVlZCB0byBpbmNyZWFzZSB0aGUgd2lkdGggb2YK
KyAgICAgICAgLy8gdGhpcyBSVEwgZWxlbWVudCB0byBwcmV2ZW50IHN1Y2ggY2hpbGRyZW4gZnJv
bSBiZWluZyBjbGlwcGVkLiAoU2VlIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMzU1Nj4uKQorICAg
ICAgICAvLyBUbyBpbmNyZWFzZSB0aGUgd2lkdGggb2YgdGhpcyBlbGVtZW50LCB3ZSBzYXZlIHRo
ZSBsZWZ0bW9zdCBwb3NpdGlvbiBvZiBpdHMgY2hpbGRyZW4gYW5kIGluY3JlYXNlCisgICAgICAg
IC8vIGl0cyBsZWZ0IG1hcmdpbiBieSB0aGlzIHZhbHVlLiAoV2UgZG9uJ3QgaW5jcmVhc2UgdGhl
IHdpZHRoIGRpcmVjdGx5IGJ1dCB0aGUgbGVmdCBtYXJnaW4gc28gd2UKKyAgICAgICAgLy8gY2Fu
IG1vdmUgTFRSIGNoaWxkcmVuIHJpZ2h0IHdoZW4gd2UgaW5jcmVhc2UgdGhlIHdpZHRoLikKKyAg
ICAgICAgbV9ydGxNaW5DaGlsZFBvc2l0aW9uID0gbWluKGNoUG9zLCBtX3J0bE1pbkNoaWxkUG9z
aXRpb24pOworICAgICAgICBBU1NFUlQobV9ydGxNaW5DaGlsZFBvc2l0aW9uIDw9IDApOworCiAg
ICAgICAgIGlmIChjaGlsZC0+YXZvaWRzRmxvYXRzKCkpIHsKICAgICAgICAgICAgIGludCByaWdo
dE9mZiA9IHJpZ2h0T2Zmc2V0KGhlaWdodCgpLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoc3R5
bGUoKS0+dGV4dEFsaWduKCkgIT0gV0VCS0lUX0NFTlRFUiAmJiBjaGlsZC0+c3R5bGUoKS0+bWFy
Z2luUmlnaHQoKS50eXBlKCkgIT0gQXV0bykgewpAQCAtMTI2Myw2ICsxMjczLDggQEAgdm9pZCBS
ZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZHJlbihibwogICAgIGludCBwcmV2aW91c0Zsb2F0
Qm90dG9tID0gMDsKICAgICBtYXhGbG9hdEJvdHRvbSA9IDA7CiAKKyAgICBtX3J0bE1pbkNoaWxk
UG9zaXRpb24gPSAwOworCiAgICAgUmVuZGVyQm94KiBuZXh0ID0gZmlyc3RDaGlsZEJveCgpOwog
CiAgICAgd2hpbGUgKG5leHQpIHsKQEAgLTUwNzcsNiArNTA4OSwxMiBAQCBSZW5kZXJCbG9jayog
UmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91CiAgICAgcmV0dXJuIG5ld0JveDsKIH0KIAoraW50
IFJlbmRlckJsb2NrOjptYXJnaW5MZWZ0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9ydGxNaW5D
aGlsZFBvc2l0aW9uIDw9IDApOworICAgIHJldHVybiBtX21hcmdpbkxlZnQgLSBtX3J0bE1pbkNo
aWxkUG9zaXRpb247Cit9CisKIGNvbnN0IGNoYXIqIFJlbmRlckJsb2NrOjpyZW5kZXJOYW1lKCkg
Y29uc3QKIHsKICAgICBpZiAoaXNCb2R5KCkpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJ
KHJldmlzaW9uIDUyODQ3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw5IEBAIHB1YmxpYzoKICAgICAvLyBzdHlsZSBmcm9t
IHRoaXMgUmVuZGVyQmxvY2suCiAgICAgUmVuZGVyQmxvY2sqIGNyZWF0ZUFub255bW91c0Jsb2Nr
KGJvb2wgaXNGbGV4aWJsZUJveCA9IGZhbHNlKSBjb25zdDsKIAorICAgIC8vIE92ZXJyaWRlIFJl
bmRlckJveDo6bWFyZ2luTGVmdCgpLgorICAgIHZpcnR1YWwgaW50IG1hcmdpbkxlZnQoKSBjb25z
dDsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgbW92ZUNoaWxkVG8oUmVuZGVyT2JqZWN0KiB0bywg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB0b0NoaWxkTGlzdCwgUmVuZGVyT2JqZWN0KiBjaGlsZCk7
CiAgICAgdm9pZCBtb3ZlQ2hpbGRUbyhSZW5kZXJPYmplY3QqIHRvLCBSZW5kZXJPYmplY3RDaGls
ZExpc3QqIHRvQ2hpbGRMaXN0LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkLCBSZW5kZXJPYmpl
Y3QqIGNoaWxkKTsKQEAgLTUxNiw2ICs1MTksOSBAQCBwcml2YXRlOgogICAgIFJlbmRlckxpbmVC
b3hMaXN0IG1fbGluZUJveGVzOyAgIC8vIEFsbCBvZiB0aGUgcm9vdCBsaW5lIGJveGVzIGNyZWF0
ZWQgZm9yIHRoaXMgYmxvY2sgZmxvdy4gIEZvciBleGFtcGxlLCA8ZGl2PkhlbGxvPGJyPndvcmxk
LjwvZGl2PiB3aWxsIGhhdmUgdHdvIHRvdGFsIGxpbmVzIGZvciB0aGUgPGRpdj4uCiAKICAgICBt
dXRhYmxlIGludCBtX2xpbmVIZWlnaHQ7CisKKyAgICAvLyBUaGUgbGVmdG1vc3QgcG9zaXRpb24g
b2YgdGhlIGNoaWxkIGVsZW1lbnRzIHdoZW4gdGhpcyBlbGVtZW50IGlzIFJUTC4KKyAgICBpbnQg
bV9ydGxNaW5DaGlsZFBvc2l0aW9uOwogfTsKIAogaW5saW5lIFJlbmRlckJsb2NrKiB0b1JlbmRl
ckJsb2NrKFJlbmRlck9iamVjdCogb2JqZWN0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTI4NDgpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAor
MjAxMC0wMS0wNSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGZpeCBmb3IgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzIzNTU2Pi4KKyAgICAgICAgT24gUlRMIHBhZ2VzLCBob3Jpem9udGFs
IHNjcm9sbGJhciBpcyBtaXNzaW5nCisKKyAgICAgICAgRm9yIGFuIFJUTCBlbGVtZW50IGFuZCBp
dHMgY2hpbGQgZWxlbWVudHMgd2hpY2ggYXJlIHdpZGVyIHRoYW4gdGhlaXIgcGFyZW50LCB0aGVp
ciBsZWZ0CisgICAgICAgIHBvc2l0aW9ucyBiZWNvbWUgPCAwIGFuZCB0aGUgUlRMIGVsZW1lbnQg
cmV0dXJucyB0aGUgaW5jb3JyZWN0IHdpZHRoIHRvIGl0cyBwYXJlbnQuCisgICAgICAgIFRoaXMg
Y2hhbmdlIHNhdmVzIHRoZSBsZWZ0bW9zdCBwb3NpdGlvbiBmb3Igc3VjaCBjaGlsZCBlbGVtZW50
cyBhbmQgaW5jcmVhc2VzIHRoZSBsZWZ0CisgICAgICAgIG1hcmdpbiBzbyB0aGUgUlRMIGVsZW1l
bnQgY2FuIHJldHVybiB0aGUgY29ycmVjdCB3aWR0aC4KKyAgICAgICAgVG8gdGVzdCB0aGlzIGlz
c3VlLCB3ZSBjaGVjayB0aGUgbGVmdCBwb3NpdGlvbnMgb2Ygc3VjaCBjaGlsZCBlbGVtZW50cyBh
bmQgdmVyaWZ5CisgICAgICAgIHRoZXkgYXJlIGdyZWF0ZXIgdGhhbiAwLgorCisgICAgICAgICog
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZXhwZWN0ZWQtdW5kZXJmbG93LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZXhw
ZWN0ZWQtdW5kZXJmbG93Lmh0bWw6IEFkZGVkLgorCiAyMDEwLTAxLTA1ICBLZW50IFRhbXVyYSAg
PHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hv
d2lhay4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmV4
cGVjdGVkLXVuZGVyZmxvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZXhwZWN0ZWQtdW5kZXJmbG93LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFs
L3J0bC11bmV4cGVjdGVkLXVuZGVyZmxvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNSBAQAorVGhpcyB0ZXN0IHRlc3RzIGlmIHRoZSBiZWxvdyA8ZGl2PiBlbGVtZW50cyBh
cmUgZGlzcGxheWVkIHdpdGhvdXQgYmVpbmcgY2xpcHBlZC4gSWYgdGhpcyB0ZXN0IHN1Y2NlZWRz
LCB5b3UgY2FuIHNlZSBhIHN0cmluZyAiU1VDQ0VFREVEIiBiZWxvdy4KKwordGVzdDAKK3Rlc3Qx
CitTVUNDRUVERUQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0
bC11bmV4cGVjdGVkLXVuZGVyZmxvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmV4cGVjdGVkLXVuZGVyZmxvdy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZXhw
ZWN0ZWQtdW5kZXJmbG93Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAKKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+UlRMIG92ZXJmbG93PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGRp
cj0icnRsIj4KKzxwIGRpcj0ibHRyIj5UaGlzIHRlc3QgdGVzdHMgaWYgdGhlIGJlbG93ICZsdDtk
aXYmZ3Q7IGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgd2l0aG91dCBiZWluZyBjbGlwcGVkLiBJZiB0
aGlzIHRlc3Qgc3VjY2VlZHMsIHlvdSBjYW4gc2VlIGEgc3RyaW5nICJTVUNDRUVERUQiIGJlbG93
LjwvcD4KKzxkaXYgaWQ9InRlc3QwIiBzdHlsZT0id2lkdGg6IDExMCU7IGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsiPnRlc3QwPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0MSIgc3R5bGU9IndpZHRoOiAxMjAl
OyBib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij50ZXN0MTwvZGl2PgorPGRpdiBpZD0icmVzdWx0IiBj
b250ZW50ZWRpdGFibGU9InRydWUiIGRpcj0ibHRyIj48L2Rpdj4KKzxzY3JpcHQgbGFuZ3VhZ2U9
ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Cit2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpOworCisv
LyBSZXRyaWV2ZSB0aGUgbGVmdCBwb3NpdGlvbnMgb2YgdGhlIDxkaXY+IGVsZW1lbnRzLgordmFy
IGxlZnQwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QwJykub2Zmc2V0TGVmdDsKK3Zh
ciBsZWZ0MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MScpLm9mZnNldExlZnQ7CisK
Ky8vIENvbXBhcmUgdGhlIGxlZnQgcG9zaXRpb25zIGFuZCB2ZXJpZnkgaWYgdGhleSBhcmUgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGkuZS4gdGhleSBhcmUgbm90IGNsaXBwZWQuCisvLyBB
bHNvLCBjaGVjayBpZiB0aGUgZWxlbWVudHMgYXJlIHBsYWNlZCBjb3JyZWN0bHksIGkuZS4gdGhl
IGxlZnQgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgZ3JlYXRlciB0aGFuCisvLyB0
aGUgb25lIG9mIHRoZSBzZWNvbmQgZWxlbWVudCBiZWNhdXNlIHRoZSBmaXJzdCBvbmUgaXMgbmFy
cm93ZXIgdGhhbiB0aGUgc2Vjb25kIG9uZS4KK2lmIChsZWZ0MSA+PSAwICYmIGxlZnQwID49IGxl
ZnQxKQorICAgIHJlc3VsdC5pbm5lclRleHQgPSAiU1VDQ0VFREVEIjsKK2Vsc2UKKyAgICByZXN1
bHQuaW5uZXJUZXh0ID0gIkZBSUxFRCI7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="28140"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53150</attachid>
            <date>2010-04-11 23:05:47 -0700</date>
            <delta_ts>2010-04-14 02:24:59 -0700</delta_ts>
            <desc>A proposed fix 5</desc>
            <filename>issue23556-patch8.txt</filename>
            <type>text/plain</type>
            <size>38893</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzQ2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDQtMTEgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QSBmaXggZm9yIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMzU1Nj4uCisgICAgICAgIE9uIFJUTCBw
YWdlcywgaG9yaXpvbnRhbCBzY3JvbGxiYXIgaXMgbWlzc2luZworCisgICAgICAgIFRoaXMgY2hh
bmdlIGFkanVzdHMgdGhlIHNjcm9sbCBvZmZzZXQgb2YgYW4gUlRMIFJlbmRlclZpZXcgb2JqZWN0
IHRvIHByZXZlbnQgaXQgZnJvbQorICAgICAgICBjbGlwcGluZyB0aGUgZWxlbWVudHMgd2lkZXIg
dGhhbiBpdHMgd2lkdGguIFRvIGltcGxlbWVudCB0aGlzLCB0aGlzIGNoYW5nZSBhbHNvIGNvcGll
cworICAgICAgICB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgYSA8Ym9keT4gZWxlbWVudCB0byB0aGUg
UmVuZGVyVmlldyBvYmplY3QgYW5kIHBhaW50IGl0cyBiYWNrZ3JvdW5kCisgICAgICAgIHdpdGgg
dGhlIGNvbG9yIHNwZWNpZmllZCBpbiBhIDxib2R5PiBlbGVtZW50LgorCisgICAgICAgIFRlc3Q6
IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmRlcmZsb3cuaHRtbAorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnN0
eWxlRGlkQ2hhbmdlKTogQ29weSB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgYSA8Ym9keT4gZWxlbWVu
dCB0byBSZW5kZXJWaWV3IHNvIFJlbmRlclZpZXcgY2FuIGFkanVzdCBpdHMgc2Nyb2xsIG9mZnNl
dC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRSb290Qm94RGVjb3JhdGlvbnMp
OiBQYWludCB0aGUgYmFja2dyb3VuZCBvZiBhbiBSVEwgUmVuZGVyVmlldyB3aXRoIHRoZSBjb2xv
ciBvZiBhIDxib2R5PiBlbGVtZW50LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6IEFkanVzdCB0aGUgc2Ny
b2xsIG9mZnNldCBmb3IgUlRMIFJlbmRlclZpZXdzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Vmlldzo6ZG9jV2lkdGgpOiBBZGp1c3QgdGhlIGRvY3VtZW50IHdpZHRoIGZvciBSVEwgUmVuZGVy
Vmlld3MuCisKIDIwMTAtMDQtMTEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI1NzQ2OC4KSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gNTc0NjQpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsOSArMTgyLDEyIEBAIHZv
aWQgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmYKICAgICAgICAgfQogICAgIH0K
IAotICAgIC8vIFNldCB0aGUgdGV4dCBjb2xvciBpZiB3ZSdyZSB0aGUgYm9keS4KLSAgICBpZiAo
aXNCb2R5KCkpCisgICAgLy8gU2V0IHRoZSB0ZXh0IGNvbG9yIGFuZCBkaXJlY3Rpb24gaWYgd2Un
cmUgdGhlIGJvZHkuCisgICAgaWYgKGlzQm9keSgpKSB7CiAgICAgICAgIGRvY3VtZW50KCktPnNl
dFRleHRDb2xvcihzdHlsZSgpLT5jb2xvcigpKTsKKyAgICAgICAgaWYgKHZpZXcoKSAmJiB2aWV3
KCktPnN0eWxlKCkpCisgICAgICAgICAgICB2aWV3KCktPnN0eWxlKCktPnNldERpcmVjdGlvbihz
dHlsZSgpLT5kaXJlY3Rpb24oKSk7CisgICAgfQogfQogCiB2b2lkIFJlbmRlckJveDo6dXBkYXRl
Qm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKQEAgLTYwOCw3ICs2MTEsMTEgQEAgdm9pZCBSZW5kZXJC
b3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKAogICAgIC8vIENTUzIgMTQuMjoKICAgICAvLyBU
aGUgYmFja2dyb3VuZCBvZiB0aGUgYm94IGdlbmVyYXRlZCBieSB0aGUgcm9vdCBlbGVtZW50IGNv
dmVycyB0aGUgZW50aXJlIGNhbnZhcyBpbmNsdWRpbmcKICAgICAvLyBpdHMgbWFyZ2lucy4KKyAg
ICAvLyBUaGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIGFuIFJUTCB2aWV3IGlzIChtaW4obGVmdG1v
c3RQb3NpdGlvbigpLCAwKSwgMCwgZG9jV2lkdGgoKSwgZG9jSGVpZ2h0KCkpCisgICAgLy8gU28s
IHdlIGFsc28gaW5jbHVkZSB0aGUgbGVmdG1vc3QgcG9zaXRpb24gZm9yIFJUTCB2aWV3cyBzbyB3
ZSBjYW4gZmlsbCBpdHMgZW50aXJlIGNhbnZhcy4KICAgICBpbnQgYnggPSB0eCAtIG1hcmdpbkxl
ZnQoKTsKKyAgICBpZiAodmlldygpICYmIHZpZXcoKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0g
UlRMICYmIHZpZXcoKS0+bGVmdG1vc3RQb3NpdGlvbigpIDwgMCkKKyAgICAgICAgYnggKz0gdmll
dygpLT5sZWZ0bW9zdFBvc2l0aW9uKCk7CiAgICAgaW50IGJ5ID0gdHkgLSBtYXJnaW5Ub3AoKTsK
ICAgICBpbnQgYncgPSBtYXgodyArIG1hcmdpbkxlZnQoKSArIG1hcmdpblJpZ2h0KCkgKyBib3Jk
ZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpLCBydyk7CiAgICAgaW50IGJoID0gbWF4KGggKyBtYXJn
aW5Ub3AoKSArIG1hcmdpbkJvdHRvbSgpICsgYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSwg
cmgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDU3NDY0KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2
ICsxMTcsMTQgQEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgICAgICB9CiAgICAgfQog
CisgICAgLy8gV2hlbiBhbiBSVEwgcGFnZSBoYXMgYW4gZWxlbWVudCB3aWRlciB0aGFuIHRoZSBs
ZW5ndGggb2YgdGhpcyB2aWV3LCB0aGUgbGVmdG1vc3QgcG9zaXRpb24gb2YgdGhpcyB2aWV3Cisg
ICAgLy8gYmVjb21lcyA8IDAuIFNvLCB3ZSBhZGp1c3QgdGhlIHNjcm9sbCBvZmZzZXQgb2YgdGhp
cyB2aWV3IHNvIHdlIGNhbiBkaXNwbGF5IHRoZSBlbnRpcmUgcmVjdGFuZ2xlIG9mIHRoaXMKKyAg
ICAvLyB2aWV3LCBpLmUuIChtaW4obGVmdG1vc3RQb3NpdGlvbigpLCAwKSwgMCwgZG9jV2lkdGgo
KSwgZG9jSGVpZ2h0KCkpLgorICAgIGlmIChzdHlsZSgpICYmIHN0eWxlKCktPmRpcmVjdGlvbigp
ID09IFJUTCAmJiBsZWZ0bW9zdFBvc2l0aW9uKCkgPCAwKSB7CisgICAgICAgIHNldEhhc092ZXJm
bG93Q2xpcCh0cnVlKTsKKyAgICAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9YT2Zmc2V0KGxlZnRtb3N0
UG9zaXRpb24oKSk7CisgICAgfQorCiAgICAgQVNTRVJUKCFtX2xheW91dFN0YXRlKTsKICAgICBM
YXlvdXRTdGF0ZSBzdGF0ZTsKICAgICAvLyBGSVhNRTogTWF5IGJlIGJldHRlciB0byBwdXNoIGEg
Y2xpcCBhbmQgYXZvaWQgaXNzdWluZyBvZmZzY3JlZW4gcmVwYWludHMuCkBAIC02MTQsNyArNjIy
LDcgQEAgaW50IFJlbmRlclZpZXc6OmRvY1dpZHRoKCkgY29uc3QKICAgICAgICAgICAgIHcgPSBk
dzsKICAgICB9CiAKLSAgICByZXR1cm4gdzsKKyAgICByZXR1cm4gc3R5bGUoKS0+ZGlyZWN0aW9u
KCkgPT0gUlRMICYmIGxlZnRtb3N0UG9zaXRpb24oKSA8IDAgPyB3IC0gbGVmdG1vc3RQb3NpdGlv
bigpIDogdzsKIH0KIAogaW50IFJlbmRlclZpZXc6OnZpZXdIZWlnaHQoKSBjb25zdApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTc0NjkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNC0xMSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBIGZpeCBmb3IgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzNTU2Pi4KKyAgICAgICAgT24g
UlRMIHBhZ2VzLCBob3Jpem9udGFsIHNjcm9sbGJhciBpcyBtaXNzaW5nCisKKyAgICAgICAgVGhp
cyBuZXcgdGVzdCB2ZXJpZmllcyB0aGF0IGFuIFJUTCBSZW5kZXJWaWV3IGNhbiByZW5kZXIgdGhl
IGVsZW1lbnRzIHdpZGVyIHRoYW4gaXRzCisgICAgICAgIHdpZHRoIHdpdGhvdXQgY2xpcHBpbmcu
CisKKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtdW5kZXJmbG93Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9y
dGwtdW5kZXJmbG93LWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZGVyZmxvdy1leHBlY3RlZC5wbmc6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9y
dGwtdW5kZXJmbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMDQtMTEgIFRvbnkgQ2hh
bmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQsIGxheW91dCB0
ZXN0IGZpeCBmb3IgUVQgYm90cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL3J0bC11bmRlcmZsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtdW5kZXJmbG93Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtdW5kZXJmbG93Lmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+UlRMIHVu
ZGVyZmxvdzwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keSBkaXI9InJ0bCI+Cis8cCBkaXI9Imx0ciI+
VGhpcyB0ZXN0IHRlc3RzIGlmIHRoZSBiZWxvdyAmbHQ7ZGl2Jmd0OyBlbGVtZW50cyBhcmUgZGlz
cGxheWVkIHdpdGhvdXQgYmVpbmcgY2xpcHBlZC4gSWYgdGhpcyB0ZXN0IHN1Y2NlZWRzLCB5b3Ug
Y2FuIHNlZSBhIGhvcml6b250YWwgc2Nyb2xsYmFyIGF0IHRoZSBib3R0b20gb2YgdGhpcyBwYWdl
LjwvcD4KKzxkaXYgaWQ9InRlc3QwIiBzdHlsZT0id2lkdGg6IDExMCU7IGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsiPnRlc3QwPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0MSIgc3R5bGU9IndpZHRoOiAxMjAl
OyBib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij50ZXN0MTwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0
bC11bmRlcmZsb3ctZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmRlcmZsb3ctZXhwZWN0
ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZGVyZmxvdy1leHBlY3RlZC5jaGVja3N1bQkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSBAQAorZTdlMTNkY2FjMzk2MGQ4YjViMTIyYjIxYTBmZmMyZDYK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZGVyZmxvdy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL3J0bC11bmRlcmZsb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmRlcmZsb3ctZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg1ODUgc2Nyb2xsV2lkdGggOTUwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NTg1CitsYXllciBhdCAoMTUwLDApIHNpemUgODAweDU4NSBiYWNrZ3JvdW5kQ2xpcCBhdCAo
MCwwKSBzaXplIDgwMHg1ODUgY2xpcCBhdCAoMCwwKSBzaXplIDgwMHg1ODUgb3V0bGluZUNsaXAg
YXQgKDAsMCkgc2l6ZSA4MDB4NTg1CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDgwMHg1ODUKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NjkKKyAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgzNgorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3ODF4MzYKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA3ODE6ICJUaGlzIHRlc3QgdGVzdHMgaWYgdGhlIGJlbG93IDxkaXY+IGVsZW1l
bnRzIGFyZSBkaXNwbGF5ZWQgd2l0aG91dCBiZWluZyBjbGlwcGVkLiBJZiB0aGlzIHRlc3Qgc3Vj
Y2VlZHMsIHlvdSBjYW4gc2VlIGEgaG9yaXpvbnRhbCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwxOCkgd2lkdGggMjIxOiAic2Nyb2xsYmFyIGF0IHRoZSBib3R0b20gb2YgdGhpcyBwYWdlLiIK
KyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgtODAsNTIpIHNpemUgODY0eDIwIFtib3JkZXI6
ICgxcHggc29saWQgI0ZGMDAwMCldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoODM0
LDEpIHNpemUgMjl4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoODM0LDEpIHdpZHRoIDI5OiAi
dGVzdDAiCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoLTE1OCw3Mikgc2l6ZSA5NDJ4MjAg
W2JvcmRlcjogKDFweCBzb2xpZCAjRkYwMDAwKV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICg5MTIsMSkgc2l6ZSAyOXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICg5MTIsMSkgd2lk
dGggMjk6ICJ0ZXN0MSIKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9ydGwtdW5kZXJmbG93LWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5v
dCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0g
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZGVyZmxvdy1leHBl
Y3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtCgoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQXlBQUFBSllDQVlBQUFDYWRv
SndBQUFETzJsRFExQkpRME1nVUhKdlptbHNaUUFBZUFHRgpsRXRvMUZBVWh2K01LWUswZ3FpMUZw
VGdRb3UwSlQ3UWlsRGJhYlhXa1hFWSs5QWl5RFJ6WnhwTk16R1pHUitJU0VIYytWcUtHeCtJCml5
cmlRcnBRY0tVTGtVTHJhMUVFY2FVaWlFSTNVc2IvSnUxTUtsWXZKUGx5em4vUDY0WUFWUTlUam1O
Rk5HRFl6cnZKcnFoMjZQQ0EKdG5nQ1ZhaEJOYmhTaHVlMEp4TDdmYVpXUHVldjZiZFFwR1d5U2Nh
SzlSMlkrTFJ0OWYxTGoyTHY2NTcyK3A3NStubHZOUzRUQW9wRwo2NHBzd0ZzbER3YThWL0xKdkpP
bjVvaGtZeWlWSmp2a1JyY24yVUcrUVY2YURmRmdpTlBDTTRDcU5tcHlodU15VG1RRnVhVm9aR1hN
ClViSnVwMDJiUENYdGFjOFlwb2I5Um43SVdkREdsWThCcld1QVJTOHJ0Z0VQR0wwTHJGcGZzVFhV
QVN2N2diRXRGZHZQcEQ4ZnBYYmMKeTJ6WjdJZFRxcU9zNlVPcDlITTlzUGdhTUhPMVZQcDFxMVNh
dWMwY3JPT1paUlRjb3E5bFljb3JJS2czMk0zNHlUbGFpSU9lZkZVTApjSk56N0Y4Q3hDNEExejhD
R3g0QXl4OERpUnFnWndjaTU5bHVjT1hGS2M0RjZNZzVwMTB6TzVUWE51djZkcTJkUnl1MGJ0dG9i
dFJTCmxxWDVMazl6aFNmY29rZzNZOWdxY003K1dzWjd0YkI3RC9MSi9pTG5oTGQ3bHBXUmRLcVRz
MFF6Mi9xU0ZwMjd5WTNrZXhselR6ZTUKZ2RkVXh0M1RHN0N5MGN4Mzl3UWM2Yk90T005RmFpSjE5
bUQ4QUpueEZkWEpSK1U4Skk5NHhZTXlwbTgvbHRxWElOZlRuanllaTBsTgpMZmUyblJucTRSbEpW
cXd6UXgzeFdYN3RGcEl5N3pwcTdqaVcvODJ6dHNoekhJWUZBUk0yN3pZMEpOR0ZLSnJnd0VVT0dY
cE1La3hhCnBWL1Fhc0xEOGI4cUxTVEt1eXdxdXZDWmV6NzdlMDZnd04weWZoK2ljWXcwbGlObytq
djltLzVHdjZuZjBiOWVxUzgwVkR3ajdsSFQKR0wvOG5YRmxabG1OakJ2VUtPUExtb0w0QnF0dHA5
ZENsdFpoWGtGUFhsbmZGSzR1WTErcEwzczBtVU5jakUrSHVoU2hURTBZWkR6Wgp0ZXkrU0xiNEp2
eDhjOWtXbWg2MUw4NCtxYXZrZXFPT0habXNmbkUyWEExci83T3JZTkt5cS9Ea2paQXVQR3VocmxV
M3FkMXFpN29ECm1ycExiVk5iMVU2KzdWVDNsM2YwY2xZbVRySnVsOVduMklPTjAvUldUcm95V3dU
L0ZuNHgvQzkxQ1Z1NHBxSEpmMmpDeldWTVMvaU8KNFBZZmQwajVML3dOQVlVVkRYeExPenNBQUNB
QVNVUkJWSGdCN2QwSHZDVlhYVGp3czd0djB4dHBoQkpJRkVJU0RCQVFnZ1FRcEhlVgpEaUlLK3FF
cFJZb0NmMEE2S0NoVlFFRnBFaEJVQWdoSUNRaElpeEpNcEVOSWFKSkNBaUZsazkzTi9NL3ZKT2N4
TzdsMzdudHYzNTczCmR2YzduMzE3Nzl3cDU4eDNmdmZlODd0elptWk5sNGRrSUVDQUFBRUNCQWdR
SUVDQVFBT0J0UTNLVUFRQkFnUUlFQ0JBZ0FBQkFnU0sKZ0FSRUlCQWdRSUFBQVFJRUNCQWcwRXhB
QXRLTVdrRUVDQkFnUUlBQUFRSUVDRWhBeEFBQkFnUUlFQ0JBZ0FBQkFzMEVKQ0ROcUJWRQpnQUFC
QWdRSUVDQkFnSUFFUkF3UUlFQ0FBQUVDQkFnUUlOQk1RQUxTakZwQkJBZ1FJRUNBQUFFQ0JBaElR
TVFBQVFJRUNCQWdRSUFBCkFRTE5CQ1FnemFnVlJJQUFBUUlFQ0JBZ1FJQ0FCRVFNckhxQkN5KzhN
SDMvKzkrZldzK2YvT1FuNlZ2Zit0YlU2VHZyaEdrdS8vZC8KLzVkT091bWtkTjU1NTgya21XVS9j
d1c5R1dKZFAvemhEM3V2TFB6cHBaZGVtajc3MmM4dWZJRVZtSFB6NXMzcDYxLy8rbnpKMC96bgpa
OWpHVDdZSHMyMU1zT1RWYjZ0OXVWTDdaTGc5UzRhNWNzRlpzYjJjbnh0THFldldmTmJNMnJhbDFH
ZWh5d3pqWXlYcnNwd3hzNXpmCk9TdHBzdEQ5dUwzTnQ1ejdlakhiTGdGWmpKWjVsMDNnbnZlOFo3
ckdOYTZSZnV1M2Zpczk3R0VQUyt2V3JVdS8vTXUvbkI3NjBJZW0KTzkvNXptblhYWGROYjMzclc5
Tjczdk9lTXQvYjN2YTJxV1UvNXpuUFNiLzkyNzg5ZGZyT09tR1N5eXRmK2NyMEwvL3lMNlV4Zi9U
UgpSNmY0d3BzMkxNUisyckxEMS8vaEgvNGhIWERBQWVuZDczNzNjTkxNOGYvNnIvOUt2L1pydjdh
cTkvRXBwNXlTYm5hem02VkhQZXBSCjg5c3p5WDkrNGpaK3NqMlliV09DSmE5K1crM0xsZG9uazda
bnlUaFhMamdXMjh2NXViR1VlbTdOWjAyVU43WnRTNm5QUXBlWkZCOHIKVlpmRnhzeS8vL3UvcDd2
ZTlhNXB6Wm8xNlFZM3VFRjZ3eHZlTUwvWnkvMmRzMUltOHh1MGd6MVo3TDVlMXMzdkRBUldRT0Qr
OTc5LwpsMytCbnk5NXQ5MTI2Mzd2OTM1dmZ2eWYvdW1mdXRlLy92VmxQRGVVdXhlKzhJWHowNFpQ
THJyb291N0hQLzd4OE9XWjQvbFhzdTRECkgvakF6UG5HWnBpMWpsblR4OVpkcHkxMUhVT1hDeTY0
b0F2bnl5Ky92S3o2RzkvNFJpMWkvbkZZMWl6NytRVVg4T1NRUXc3cC92cXYKLzNvQmMxNTFsci82
cTcvcXJuNzFxMTkxd2lwNjVZLy8rSSs3My9pTjM1aXYwZEIvZmtLako2dlZiQmhqalRnV1ZjeTIy
cGNydFUrRwoyN01vakFrekQyTjd1RStYODNOalF2SGRzTHpoUEZ2eldUUGN0dUc2dCtYNE1ENVdz
aTZMalpsUGZlcFRYVzZjZHM5NzN2UG1pYmJGCmQ4NVNUV2JGekh5bFI1NHN4enBHVnI5aWt4YTdy
NWVyb282QUxHczZaMlVMRlhqQ0U1NlFybmExcTAyZC9UZC84emZUc2NjZVc2YlAKemMyVlgxYW16
YnpISG51azNEaTl5dVQ4SnJuS2EvV0Z5eTY3TEQzb1FROUsvLzNmLzExZld0QmpmNTJ6MWpGcity
UUNGMXBHZjc1Sgo2eHE2L08vLy9tK0tRNjN4SzFVTVJ4eHh4QmFMVGFydkxQc3RWakJqWkd2V3RU
WEx6cWpXb2laLzdHTWZTMjk1eTF1MldDWW5kR1U4Cmp1S3RYZnVMajlTaC94WUxEVWFlK2N4bnBx
OSs5YXVEVjdkdWRMV1k5YmRpVW96VjZiUGl1YzYzY2VQRytuVFpIeGU3TDhmcVBHbmEKdEgyeXJi
WnAydlpzTFZ3L3RpZnQwMm5idWJYbHh2S1R5aHV1ZDJ2SzcyL2JjTDFqNDVQMjk5ajhrNllONnox
V2wxbmx6Wm8rcWZ4NApiYWt4czg4Kys1UlYxc2NZMlJiZk9kTk14clozSVRGVEtqLzRyNy9PeGF5
anY5eGdsYXRxZE5hKzN0YmI4WXR2eTFYRm9qSTd1c0R4Cnh4OC91b25yMTY5UHQ3akZMZWJuaVla
ek5OS3VjNTNycEJ2ZThJYnBPOS81VHBrVzV4UzgrTVV2VHJlODVTM241ejNoaEJOU1BucVMKWHZh
eWw2VmIzZXBXODYvM243ejYxYTlPSC8zb1I5T0pKNTZZSHZuSVI2YjhxMHFLZnFwUGZ2S1RVLzRW
TzkzMHBqZmQ0cHlEU2V1Ywp0STRXWlV5cVM3L2NlRDUwK2Z1Ly8vdVVmNWxLbXpadFNvOS8vT1BU
bi83cG53NFhTZE8yWjVwOXJHRE03Q29GNUJmQytVLys1RTlLCndoakc4UVZWaDhXc0svK3lsdjdv
ai80b1BlMXBUMHYzdmU5OXkvTllkd3p2ZmU5NzA0RUhIbGk2YlAzMHB6OHRYZmtPT3VpZzByV3YK
eGswK0VwTnVlOXZiam5aQnEvV0t4Ly84ei85TXQ3Lzk3ZE1mL3VFZnBtdGYrOXBsVXY0MUxEM21N
WTlKTDNyUmk5TGpIdmU0ZFBMSgpKODh2TXZULzRBYy9tUEt2c3VubU43LzVmT3pHL05lOTduVlRK
RFg3N3J0dnVzMXRibFBxdkppa2VERm0wK2I5NWplL21aN3lsS2VrCkp6M3BTZVg5RVBzbHVwUEZO
di9QLy94UHV0Lzk3bGU2UWI3Z0JTK1kzNzVwNi9yNHh6K2VIdmpBQjViMS9lM2YvbTNwVmhsZE1r
NC8KL2ZTeTdLUVlXMGc4eDhMeGZuM3BTMSthWHZHS1Y2VDQvSWk2eGZERkwzNng3SmYvOS8vK1gz
cis4NTlmOXYwWHZ2Q0ZSY1htWXZabApsRG1wenRFTkpiWTk2dkhVcHo2MTdPK0lsWGg5MmpCdG05
NzV6bmVtNkNJWlhWWHprY3F5ZUx4WG9pdmlmL3pIZjVUeGFmc2dKbzV0ClQxbTQ5OTlpM3kvRDJK
NjBUMlAxWTU4YlkrL2Y2S1o1cld0ZHEzd2V4WHJlOWE1M2xXNDlqMzcwbzJOMDZ1ZFVtZGo3Ynlt
Zk5jTnQKbXhYUFVWeVU4N3UvKzd2cGlVOThZcnJMWGU1U1lpQStFL0lSZ1Y1dGZ2RTA1bi9HTTU2
Ui92SXYvN0w4Q1BZWGYvRVh2NWpZZXphcwp5Nno0bWpVOVZyMWNNZE9yNXRTbjIrSTdaMmdTaFU5
Nkx3NHJOU2xHeHl3bXJYUFNPb2JsVEZwdVZqekhPc1ppWW16YTJEYU1UWnYxCitUQnBPNGJiT2h4
ZnlHZlc4SDJmY29aaklMRGlBc011V1AwSzNlaEdOK3B1Y3BPYmRIR0lONytwdWppOG41T0dNa3Qw
NDhvTjBTNDMKT010NC9wV2l5dzJvK2NWenc2ckxYNFR6NC8wbmh4MTJXSmUvS01wTCtSZklMdmRo
TFlmMjg2OENYVzVRZHZtY2hTNmY4TmFOcmJPLwpqdjY2Ni9QKzlPVW9ZNnd1dGN4NEhMckVhOUd0
TGY5Q0gwK25EdjM2eGt4ajltUGJNNm1BM0JqcmZ1VlhmcVhMWDVUZFp6N3ptZTU2CjE3dGVGK1hG
TnMxYTE2dGU5YW91dWxYRUVQc25KNWJkTzk3eGpqSWV5K2FHV1plLy9NdDQvSmNiK2x0MDZidkRI
ZTdRUGZ6aEQ1K2YKL3Y3M3Y3L0w1eGpOajA5N2t2dGxsN2pZZi8vOXU1ZS8vT1hkaGcwYjVtZU44
bkovOXpJZWRZcnR1OU9kN2xUR0ovbm5CbFNYejNPYQpYejYyTzUvek5EK2VrNlhTZlNIS2luVkh2
SThOaXpFYm0vZU1NODdvZnZWWGY3WDdwVi82cGU1OTczdGZsODhMNmg3ODRBZDNoeDkrCmVKZVQr
QzdxRlYwZzh4ZE9lVCtNcmV2Y2M4L3Rqanp5eVBJWCt6azNHTHFqampwcS92MGEyOU9Qc1lYR2M3
am5jOGE2VDN6aUU0WGsKdWM5OWJwZlAreXJQYzhKVzNxczN2dkdOUy8zejBkVXV1aGRPZXorWGhR
Yi9MV1pmVHF2ekQzN3dnOUpOTUJ4elV0Ujk3bk9mNjNJaQoxK1hHOUh4cC9UZ2UyNlpZSUNlODVh
OHVITzQ1R1N5alkvc2daaGpibnJxKy91TmkzaStUWXJ1L1QyTzlZNThiQzNuL3hudXAzKzAyCnRp
ZTY3ZFpoV0Y1OXZUNHU5Yk5tdUcwTGllZWNFSGM1K1NoRjU2T1k1WDBTNzV0ODRaUmFuUzBlNDdN
bzRpT0czUCsreko5L2pDamoKL2ZnWTFtVldmTTJhdnR3eFV5cmMrKy9MWC81eTJaYndxTU55Zitj
TVRhYTlGMnY1L2NkK3pJeFpqSzJ6djQ3K3V1UDUySEt6NG5rcwpKcVpORzl1R3NXbFIxN0hQaDdI
dGlHWEhockhQckVudmUwZEFobW1jOFZVcGNJOTczS1A4UWh5L0lzY3YwZlZxUTlHTkt6ZHdJcEV1
CjlmNzV6MytlVGozMTFQbVRuZU9rNERwdDBvYlY3a2k1TVZ1T0R1U0dhZm5GYmErOTlrcHh0WTM0
Rld2V091czZKcTAvWHF2VGw2T00KV1hXcGRSaTYxTmNYOGxqclcrZWRaaisyUFhYWjRXTk9Bc3FS
aVBnRit5VXZlVW5LamQvMGtZOThKQzFtWGYvMmIvK1c0aGZ1M0NBcApxNDl1QzQ5NHhDUEtMODJm
L3ZTbnkydS8vL3Uvbno3ODRRK1hYMkhqaGR2ZDduWXBONjVMOTQwWWp6TGp5TW0wSVg1dGpnc2J4
RkdKCjNKZ3FSeTNpeUUxY0hDR0duRUNWWCtSendsSEd3K3p1ZDc5N2VSNy9UZktQb3lSeEJDWTNU
TXQ4VWIrNkRmRkNIQVY1MXJPZVZVeCsKL2RkL2ZiNzhtRy9Tc0JpenNYbmpLTXd4eHh4VDNrZjN1
dGU5MGk2NzdKTGlNVGRveWhIQnFGY2NiWW9oOXRmWXV1SkNBemx4S2V1TAppMGxjODVyWExPL1hP
TXJTSDJxTUxUU2VvMDZ4VDJ1M3pLalQxNzcydGJMS09HSVRSMWx5Y2x2cUhVZElQdi81ejA5OVAv
ZnJFYzhYCnV5K24xVGwrdGM4TmpYVHZlOSs3SE9tS283SzVFVjJPUnA1MjJtbkRZb3Z6dEcyS21l
T0kxQ2MvK2NsVTdlTElSNDJ4c1gwd2EzdXUKVXBIOHdtTGVMNU5pTzlaWjkybGQvN1RQallXOGYv
TVBVbHVzYi9mZGQ5OWlmRko1dGR6NnVKVFBtdUcyTFNTZTMvNzJ0NWVqYmxGdQpmQmRGZCtBNCto
T3hNQnppY3lmaU5vNkV4cEIvV0V1eGZQNHhaampyVlQ1RFpzWFhyT25MSFROWHFmQld2TERRMkJu
dW4ybnZ4V2xWCnFlV01XY3hhWjEzSHNJeXg1Y2JpZVN3bXhxYU5iY1BZdEZtZkQyUGJNZHptNGZq
WVo5YWs5NzBFWkNob2ZGVUs5Ti8wMGZpSXc1SjEKaUdsMWV2NzFPTVVYendNZThJRDBrSWM4cEh3
eFJOLzhhVU5kTGhxMDBiM3IrdGUvZnZtTGhtRmNsU1FheXJQV1dkZlJvb3haZGVuWApvZS9TZjMz
VzgrSDI5TWY3OW1ObTA4clllKys5NXlmVmJuUFJLRi9NdXFMclVuU3Bpc1NqRHNjZGQxeDVtbitG
SzQ5eGZzLzU1NTlmCkxqY2NMMFFETVAreVU1S1VHanZSbDNqUzhPWTN2em5sWDlOTEl6YVMyZWoy
czk5KysyMHhheVNtMGRqbzkzZU85Zld0aHY3UlFJNkcKUjF6ZExZYm9NbEVibFAyVmg5SFRuLzcw
OU4zdmZqZEZJbnkzdTkydFhDMnVQMDg4WDR6WnJIbUhkWTF5KzBNZGo2UjhLZXNhWG0ydApPaTAw
bm1QK2FNeUhTU1N1VVlmb1JsQ0grSUtQeG1JZFp0V3h6aGVQaTkyWFkzV09ldmJQQTRvRU5wS242
TW96SEdadFV6VGdJem1NCjdxUXh4SThqOVdwL1k5dTNrTzBaMW1XeDc1ZW9lL3oxaDdIeC91ZkdR
dDYvL2ZWT2V6NHNiempmVWo5cmh0czJISS8zUWorZW83dG4KZEZlc1E4UmhkTytjTkVUanIzNVcx
ZWx4NWNmaDUwdWROaXc3eHNmaWEyejZjc2RNcmVOeVBFYTkrME4vdkI4N01VOU1xOVBIM292OQo5
ZFhuZGJreGkxbnJyT3VvNjZ5UHM1YXI4dzBmeDJKaWJOcllOb3hObS9YNXNOVHRpTzBhKzh5YTlM
Ny94VGY0VU1VNGdlMVU0STF2CmZHUDVSU2t1MXhjTjBuakR4WmZFcEtGK21QenNaejhyUjBxaTcv
dWtZV3lkZFIyVGxvdlg2dlRsS21Pc0x0UHFzSmpYYTMxbkxUTnIKZTJZdEg3L1lSU01oZnRWYXpM
cnk0ZVYwMWxsbnBUaS9vMzV4UjMvNVNFaGlXZ3l4enZnVlB5N2ZIR1hjK3RhM1R2RXJhdnd5Rklu
SgoyTkdQdUN4MEhEV0wrSWtqSE5HZk94cG9mWmNmL2VoSEtmNWl2djdyL2VlVHRqK08xRVQvN3pn
Zlo4ODk5MHh4cnRPa0ljNFp5ZDJNCnlxL2ZVWSs0YU1Od1dJelpZdWFOY3FLUjA5K1cvdlBGcm10
WTd4anZyMitoOFZ5UEpyejJ0YTh0amZKK28yOVl4bUxxdUpSOXVkQTYKUjh4Rllqb3QyUjNicHRn
SGozM3NZOHM1YmhFdnVjdFdPVW9XMnpxMmZVdlpucTE1djFUNy9qNnRyMDE2WE1qN2Q5Snl3OWNX
V2w0cwp0OVRQbW1HWms4Ymp4NEk0OXllU3pFaUU0NGVzK3VQS2NQN2NwU3Q5NlV0ZkdyNjg1UEZa
OGRXZnZ0d3hzK1JLVDFod01mdHl1UGhDCjM0dXhYQzFuekNMbUcxdG5YVWZNTnh6R2xodk9XOGZI
WW1KczJ0ZzJqRTFieU9mRFVyWWp0bWZzTTJ2Uys5NFJrQm9GSG5jSWdiaGgKWVhRVCtiTS8rN1B5
Qy9iWlo1OWRHcDNUTnE1Mno0cEQ0Qi82MElkU25DUlZoemhoT3hxQ3M5WloxMUdYR3o3VzZjdFJ4
cXk2RE10ZQp5bml0NzZ4bHg3Wm4xckl4L2N3enp5eS9ZdWZ6RDByQ09NMS91SzQ0a2hCMWpKT1A2
eEFuSjhiK2ltbDF5SmQxTHZjOCtadS8rWnNVCnorUElXSFREaWk1TjAzNmhqR1hqaUZsMFNZbWJX
OFlKKy9FWEYwU0k3akIxaUYrbUk1SHBuMFJmcDQwOTVuTXJTa015RXBGKzk2dTYKVEJ5bWpySWlD
WW9Ua0NPVy8velAvN3drVkhXZStyZ1kvOFhNVzljLzdYRTUxbFZqYktIeEhJMjJlcEw1V0FPZzFu
a3hkVnpzdmx4bwpuYU11Y1dXelNKU0h2M3JIdElWc1U4VEpKWmRjVXJyQXhjVXg2akMyZll2ZG5y
ck9wYjVmNnZKMW45YnhhWThMZmYvRyszbHNXR2g1CnNZNmxmdGFNbFYrbnhZVUI0bUlVY2RKdkpJ
bjUwdTUxMGxVZTgvbEJwUzc5ejQxb21OVnVtVmRaWU1ZTFkvRVZpL2FuYjR1WW1WRzkKQlU5ZXpM
N3NyM1F4NzhWWXJwWXpaakZyblhVZC9YckU4MW5MVFl2bnNaZ1ltemEyRFdQVFpuMCt6TnFPNFhZ
UHg2ZDlaazE2MzB0QQpobnJHbXd2RUd6TU9hY2V2MnBPRzZHb1IvUkxyRU9QOTdoY3hMYnJWNUpP
Y1NnSVJWMk9JSWZxTHg4MlJEajMwMExyb0ZvOXhxUEhiCjMvNTIrVkRLSjJXVlh4V2pnUmlOdnVo
M0hWZkVpaTR6a1pSTVcyZC9IZkVGTkJ6NjA1ZWpqT2l1TkswdXc3TDdMakV0R3N4aDFMY2MKTHRP
dmIyelBtSDAwa3VPWGxrbG13L1hXOGVnR1ZZZm8zeHJkNUtJcjA2eDFSU09zZG51SW94Znh3UnlO
OVRwRWQ3bm9OblhITzk2eAp2bFN1U0JQZEphSkxSQndGaWZOQW91dFdkTE5iU0NNMnp2ZUlQcTFo
SHQyZzRvaEsvTVZWaVdLYlkzbytNYjJVRjMyK28wRVp2eTVkCmZQSEY1YldoZjd3WTNRbWlHMDJz
TXhLdk9rU2lHN0VXamNDNE9XZkVZSndQRXZOUEd4WmpObXZlc08xL1FVWkRxcjR2by95NjMrSzEK
V2V1S1pjT2pEdUZRajB6RmEvMFlXMmc4Zis5NzN5dXIrK3huUDFzYTVPRVY3L2xZYjhSMDFLLy9t
VENyanJWdThiallmVG4yZVJEcgppMlM0RG5HVnEvZ01pdGlNb1IvSHM3WXA1by9ZamZyOTh6Ly9j
MGxJNDdVWXhyWnZJZHR6eFZxMi9EOCtueGI2ZmhuR2RuK2Z6dnJjCldNajdOOTRia2ZCSE9YSE9S
SHdlOXo5ZmgrVnR1U1ZYak5XWWpiSEZmTllNdDIxV1BNY1Z6NkkrOGRrVGlXYS9pOVN3WHZGNUYw
YysKNHpHNjE4UTVhM0YxcjdpeVl3ejkrSWp4WVYzaXRiSDRHcHUrdFRFVG4ydHhSQzUrbUprMDFP
L3YrTkd2RHN2OW5SUHI3WnZNZWkvVwplc1JqUDJhVzQ3dTRINCt4L3JHNmpNWHpXRXlNVFJ2Ym4y
UFRabjArakcxSHZnaEErWTdLRndPSlRaNDRUUHZNbXZTK2o4YVhnY0NLCkNlUysrVjMrdGJsY1BT
TTNFcnQ4U2NJdU4ycm42NU12d1ZpdTNCUlgxc2tOdkM2dWVKTlBPTzN5cjlSZHZueGtsMDgyN2ZL
SGZsaysKcmp3U1Z4VTVMRjlaS2YvcVhhYm5EOHd1TjVybTE5ZC9raHQ0WmJuOEppOVg5OGw5Lzd0
OHlMcThsaHVxOHpjcHpMOVdUVjNuY0IzOQo5Y2Z6NGZTdExTTjNPNWxhbDM3WlE1ZmNEYTFjT1Nw
L1luUzVVZDNsaGw5Lzl2bm4vZnErNlUxdkdyV1BoYVp0ei93S2UwL3lKVkxMCkZaSHk1VnpMRlc3
eVNkMWQvc0tkbjJQYXVtSmJjakpaOWt1K0ZHSzVTdE5YdnZLVmNrV3R1SXBaM0V3eWQ0R1l1RTI1
Y2REbEpITysKak5pK2FkcytQOU9VSi9rTHRvc2JOdVdqYTJXTzNDanNjb0xRNVM0WFhVNU11cHc0
Rk9OOFV1bFY0akkzOE9mWG1ydHFkUG5TMGZQago4U1N1NnBYUE5lbnlsK3NXcjg4YVdZelp0SG5q
YWsxeGhiR0REejY0Tytta2s3cDh5ZHh5QmFtSWxYelVvVndGSzNjQkt2NzVTNlNMCnErMU1XMWRj
cFNwTTRvcFZzZDU0UCtaa3Njdm5RWlNybjhYMjlHTnNvZkdjR3o4bEJuSVhseTdlci9uU3hWM3Ux
bFN1akpUdmZGMmUKeDQwcTgrVWo1OG1tMVhGK2h0NlR4ZXpMc2MrWTNOQW85WXdZZWZhem45M2x4
SFgraHF2RE9JNnJpMFZjVDlxbTNIaWVyMTI4ZC90WApTNnNUeHJadmJIdnE4cE1lRi9KK0dYNjJS
R3ozOStsQ1BqZG12WDhqRG5ORHBzc1hNZWlpVHZrSVF4ZFhBNG9ycThYUUx5K3VWRGdjCnR1YXpw
djk5a2hPWG1mRWNuMlB4WHFsL09jRW8zMm45OTN5L2ZqbDVMbGRMaS9uanFuaHhwYjBZaHZHUms1
TXR2dHRpZldQeEZldVkKTlgxcllpYXU4SlYvdU9ueWZaQ2lxQzJHZlBTNjNJUTF0aW5lNzY5NzNl
dksrejgrMStLMTVmck9HY2JlMkh0eGl3cm1rV0hNVExOWQo2dmY5MkhLejRubGFUTVEyakUyYnRn
MngzTmkwc2MrSHNlMEk3NXhnbDZ2N1JSblRobW1mV2NQM3ZRUmttcURYdDB1QmVzbmQvTXRMCnVh
VHVySTA0NTV4enRwZ2x2dmlqZ2RwUFdtYXRjN2lPTFZhWVI0YlR0NmFNV1hVWmxyMlU4V0Y5WjYx
ajB2YU1MUk4zcmUvNzl1ZGQKN0xyeXIzR2x3ZHhmUi85NS92V3lQN3JGWlhTM21MQ0lrZnlyKy96
Y3NUK3FWeitabXA5aHlwTmh2ZnJybkxMSTFKY1hZN2FZZWFjVwplT1dFclZsWE5WdHNQRWNpVW9j
b2Y5YXdtRG91ZEYrTzFUa2FnTkVnelVkajV1TmlWaDFuYmRNYjN2Q0crWWIzY0YxajI3ZlE3ZW12
CmN4aVh3L0grdk1QbmRaOE9YeDhiSDN2L1JvTzcya3phMXdzcGJ6ay9hNlp0Ui93SWtvL1FkUG1D
RlYwazFQbkliUGZ3Zk1udlNGNm0KRGZtb1hSZDFXK3d3Szc1bVRZL3l0aVptOHRHTnhWWjVRZk12
WkY5T1d0SFllM0hTL01OeUpsbk1XdWR3SGJXY1djdk5pdWV4bUJpYgpObWtiYXAzR3BrMzdmSmkx
SGZIRFNlNFdYSXVZK0RqMm1SVUwxUGY5bWhqSkdhcUJBQUVDQkFnUTJBcUI2RVlYNXhmVnJubGJz
YXJTCjFTUzYrY1ZWa3ZMOUZCYlViWEJyeXJQczRnWGlacHV4YitKbW92MGhybkNYajI1TXZMeHVm
NzdGUHA4Vlg3T21MN1k4OHhNWUNzUU4KSnVNOHhmNzVsbldlNkI2M21NOHNWOEdxY2g0SkVDQkFn
TUFTQmZLdmxPVWNvRGl2Wld1SHVIQkMzSHNscnQ2VXV6UkpQcllXZEJzdApIeWVneDBVcTRvSVNj
UVhGT0ljanpvV0lDMGpFaWNETE9jeUtyMW5UbDdNdTFyWHpDc1E1aW5IVnZPR3dsTThzUjBDR2lz
WUpFQ0JBCmdNQWlCWExmK0hMenhsZ3NMcElRSjNzdWRZaVRQZlA1YitrKzk3bFB1Wm5qVXRkanVX
MHZFQmZpaUV1OTV5NVY1YWFieTUxNDFDMlkKRlYrenB0ZjFlQ1N3TFFTVzhwa2xBZGtXZThJNkNS
QWdRSUFBQVFJRUNCQ1lLT0F5dkJOWnZFaUFBQUVDQkFnUUlFQ0F3TFlRa0lCcwpDMVhyWEZVQytl
b1RLZTRmVUlmaGVOdy9vSDl0OVRyZmFueU11c2FOZ3BaajJKNjJlMnUyTjY3WG5pK0RtT0lROGF4
aGxtKys1T2ZVCjYrRFBXcmZwQkFnUUlFQ0F3QlVDRWhDUnNFTUx4QTNxNGtUQnVQbGJETVB4ZkEr
QmNyT3ZkNy83M2F2ZTRUM3ZlVS9LOTFkSWIzdmIKMjdhNnJ0dlRkbS9OeHI3eWxhOHNkME9QQlBU
b280K2V2NW5ocEhVdXhQYzV6M25PZkN4TldvZlhDQkFnUUlBQWdka0NFcERaUnViWQpqZ1h5ZGRI
TFhZUHJKZ3pIODAwUXl4MVM2L1RXajNFMzUvNGR2WWZsOTZmZjczNzNTL21tZDhOWmxqUytITnZk
cjF0VVlqaStwSW90CjQwSnhTY0I4UTdoeTk5NThRNzF5b21oY0lyQS85T3U4RU45OG84eXJYSEt6
dno3UENSQWdRSUFBZ2RrQ0VwRFpSdWJZeGdMYitsWTAKYzNOelcxekdjdGI0dE0zTk40dWJObWxC
cncrWHp6Y0pTZzk2MElOU3Zydjd4T1VuVFIvV2ZlS0NDM3h4YTlZMXJOdHdmSUZWMkthego1VHU2
cG54VHBmbDlmOFFSUjJ4UjNxUTZ6ekxKZDk5TytZN2JXNnduUmhZVHcyUHpEbU9rWDlEWWN2MzVQ
Q2RBZ0FBQkFxdGR3SDFBClZ2c2Uyb0hyZDhJSko2UzRoR0g4VXYydi8vcXY4K2RweEsvU0wzemhD
OHUxcHFOeGZ0T2IzalE5N1dsUFMxLzg0aGZUMy8zZDM1VUcKWVB5U0hkMXI0dWpCVVVjZGxaN3hq
R2VrYUJ6R05maWptOUpMWC9yU3RPZWVleTVZTDhyTWR6Qk8vL2lQLzFpdXZmL1d0NzUxL2tZNwpI
LzNvUjlPWHZ2U2x0SGJ0MnZUZTk3NDN4Zld1YjN6akcwK3R6M0hISGJkRnVkT1dmL1dyWDUxaTJv
OSs5S04wNXBsbnBsZTk2bFZiCjFIblM5Rmh4TktxZitjeG5scTVZZSsrOWQzcmYrOTVYYm5vVjAr
SjhoNWU5N0dYcGxGTk9TZm1PcGVrMXIzbE51dFd0YmhXVEpnNWoKMjMzQkJSZE1kUjNXTFc2Nk5k
eVdxT2UwL1pMdkhKemlKbDR4eisxdWQ3djAzT2MrdHlRS1liRFhYbnVsNXovLytTbmZWVGc5N25H
UApTM0gwWXRJd1ZyKzRXVkowcTh0M1hDL1g2ZDk5OTkxTFRQVFhNOXlHS0R1R2FiNXhubERFeFlr
bm5wZysvL25QbDNtbnhYQ1plT1YvCmNWT3lxTS8xcjMvOTBnVXMxckYrL2ZweWY0ZTczT1V1WmE1
cE1SSVRZeDg5NWpHUEtlK0hyMy85NjJtLy9mWXI4WGZyVzkrNjNQUnUKc2Z2OHltcDVJRUNBQUFF
Q0t5ZVFmMVV6RUdndWtIOTk3bkppTVYvdVU1N3lsQzQzL01yNEhlNXdoeTRuRytWNWJraDMrZDNS
blh6eQp5VjFPUnJvRERqaWd5NDMvTGplNnV5Yzg0UW5kdDcvOTdTNDNzTHQzdk9NZFpmNzhDM0tY
ei9ub2NzTnVmdDI1WWRrZGNzZ2hVOGV2CmZlMXJkL211bmwxdUtIYWYrY3hudW53ZDkrNnd3dzdy
b280Yk5tem9ja0xUZmVJVG55akw1NFp5bDg4bktjOG4xU2NuUVBQbHhKT3gKNVdONmxQT2lGNzBv
bms0Y2h0TnZkS01iZFRlNXlVMjZmTjM1TGpjOHUzeGVRL2ZJUno2eUxCdmJmdGU3M3JYTEoxSjMr
YVpVWFc2OApGNjk4NHZURWRZOXRkeXcveTNWWXQvNzRyT1hQT09PTUxuZUg2L0w5RXNxK3pCY0c2
UEo5RTdyRER6Kzh5d2xVbDVPbkxpZWhaZDlQCnF2K3M5Y2NHNXpzVWR6bHBuTGp0OWNWK25lTzFN
ZDk4RW51WGJ3N1hIWGpnZ1dYeHNSaXU2NC9ISC96Z0IxMCthbEsyTmVMNmM1LzcKWEpkdld0Ymxt
OHlWMldiRnlDdGU4WXJ1aVU5OFlwbjNxMS85YWpFSm8zd3hnbTZ4Kzd5c3hIOEVDQkFnUUdDRkJY
VEJXcm5jYjZjdQpPWTU2bkhycXFlVlg2b0I0MUtNZVZicXhmT1FqSDBsZis5clgwczF2ZnZQaWt4
dmI2ZTF2ZjN1NXEyd2NDYm5CRFc1UWpremM2MTczClNybGhWdWI5d2hlK1VPNUVHd3RFRjVwSFBP
SVJLWDUxL3ZTblAxM1dzWkQvSHY3d2g2YzczL25PNmZqamowOHZlY2xMVW00Z3A2akwKTHJ2c2t1
SjhpV09QUGJhc1p0OTk5eTFseHNpaytzUU55UHJEMlBKMXZqVnIxdFNuRXgrSDArOXhqM3VrMjl6
bU5pa25WZVhHVi9HcgplQXc1Q1N1LytMLy8vZTh2TnpHTEl3bHgxYWE0U2RhMFlkcDJ4NUdsaGJn
TzYxYkhaeTEvM2V0ZU54MXp6REhsNkZYc3kzQ0t4OXhZClQwOSs4cE5UT01lZG9HT0lmVEVjWnEx
L09QL1llSzF6bldlYWI5ejlOWTYyNWMvc011dTBHSzdycVk5eE4rdWM3S1Y3My92ZUphNXYKZWN0
YmxpTjhjVVRsdE5OT0c0MnhXRWZFZjA1Nnl1cWkvT2dDRmtkcFlwMUwyZWUxWGg0SkVDQkFnTUJL
Q1VoQVZrcCtKeTkzLy8zMwpUOUg0ZmNBREhwQWU4cENIbEFiV3VuWHJVajRDa1laZG1CNzYwSWVX
YmlkQnR0dHV1NVdyVmxXK2ZHUWtIWFRRUVNYeHFLL1Y1Yi84CjVTL1hsMlkrUmxlbU9rUURNWWJv
emhXTjArZ085dDN2ZnJja0p0RW9qMHUxMW1GWW4vcDZmWnkxZk13M2JBRFhaZXZqY0hwL1BCcnEK
MFVVbmhxaGJuS1FlWFgzaTcvNzN2Mys1Nmxja1ZkT0dhZHU5VU5kK1hhS01PcjZRNVdQZU9uOHNH
d2xUZjZqamtVUU5oNFdzZjdqTQp0UEYrSFdLZS9uamZ0MDZyMDZmRjhLUnlZcG5vd2xlSFNDQWo2
ZnI0eHo5ZXlodUxzVWcrb2p0YUhmSlJ3TkwxS3NhWHNzL3JlandTCklFQ0FBSUdWRW5BT3lFckpL
emU5OFkxdkxFYzI0dEtta1N6RUwvWG5ubnR1T2Q5aW9UeHgwdTVaWjUxVnpuZUl2dkV4eE9WVzQw
aEkKVEZ2S0VMOVlSOE04YXlaZDV3QUFJQUJKUkVGVWZ2R09JUnFIOFd2MWExLzcydlQ2MTc5K2k4
YmdRdFkvYS9uYW9KMjJybG5UNjNKeApQazM4T3ArNzk5U1hGdlhZMys0Zi8vakhDM0lkMXEyT0wy
Vy9SQU85TGg4Vjd6OGZic2hTMWo5Y1J4MGZLNmZPTSsxeFVnelhveFhUCmxvblg0NXlVT0djcC9t
SVlpNUduUC8zcDZZRVBmR0JKVmlMaGpTU3pKc2xidTg5TDRmNGpRSUFBQVFLTkJYN3hrMXpqZ2hX
M2N3dkUKemZTaWEwMWNKalZPNkQzNzdMTkxkNUxvd2hRblpNY1ZqT29RamMzY2I3Nk9idkdZejkw
b2plNDRRYjBPa1N6RXljY3hiU2xEbEI5SApPZUtTdlhIeWVad0VIU2RGTDZXaHVwRGxhNWVlYVhX
ZE5iMHVsODlkU1IvNjBJZFNuSnhkaDNENDRBYy9XRWRISC92YnZWRFhZZDNxCitFS1hINjNReU1U
bFhIK3Q4MGh4RXlkTmkrR0pNdzllek9keWxLUTVqdGJOaXBHNGowMmNoQjRubStmelJkSUhQdkNC
K2JWdDdUNmYKWDVFbkJBZ1FJRUNnb1lBRXBDRzJvbjRoRUkza2Q3N3puZVdGT0w4aW56eWREajMw
ME5JZEs2NWVGZDJ5b2p0V25NZng2RWMvT3QzdwpoamNzODhhbFUvdGRvTzU3My91bVNGcmluSUE2
eE0wRzR5cFZkN3pqSGN0TGwxeHl5Ulkzb0J1T3gweXgzanJFdVI5UmZ2UzMvOTczCnZsZGVqaHZa
eFhMUm1JOHVUNUVVNVJPaHkzTDkrdFIxMU1kWnkwYzNubndpZlVtaW9vRTVISWJUbzZ3NDk2QU9N
VjdMZjlqREhsYXUKS3BaUDVpN0pYVnhwS3M2bnFPZlQxR1g2ajlPMmV5R3V3N3IxeCtQS1c3UDJT
OXlSUGhLa09rVGpPc2JqOVJocTNmcnoxSGtYVXIvegp6eisvN0tPK1YxMitQdmJySFA1anZyRk1y
Q3YyZit6N2FURmMxejE4ak1TNERuSFZxNGo1aU5OWk1mTFVwejYxM0tzbTRqa1NsbjVYCnJsbjcv
T0tMTHk3M1Fmbld0NzVWaS9aSWdBQUJBZ1JXWGlELyttY2cwRndnSCtFb1Y0REtsN1R0OHFWdHU4
Yys5ckZkYm1pV2V1UkcKZnJscVVINTNkUG55cmwxT0tNcnIrUTdnWGU2eVVxYmx5NS9PMS9rclgv
bEt1WXBWWEUwcS96cmM1ZTRxWGIwYVZUNjYwdVVFcDF3NQpLRjkydGNzSnpSYmpjZldsZkhTank4
bEc5NElYdktCY2VTbGZqcmZMeVVaWmYyN0FsZmx6MTVjdUp5WGR4ejcyc1ZLSGZINUZsKzhtClBy
RSs4eFhMVDhhV3p3M3M3bG5QZWxhcFc2eDcwdFdlK3RQZjlLWTNsYXM2SFhua2tWMysxYnhjRlN5
ZmxOL2xjMmVLWVpUNzVqZS8KdWN2ZGU4bzY4N2t4eGFOZm4vN3pzZTJPK2NaY1kzcS9ibEgzNGZq
WThuRWxxTGd5MmNFSEg5eWRkTkpKM2Vtbm4xNnU0Qlg3UEI5eApLbGZCZXQ3em5sZTJJeWNiNVVw
U1VXWi9tTFgrdUlwWHJPOUpUM3JTZkR6MGw0L24vVHJQOG8xWXlnbEFXV2RjaFNxdTBIWll2b3Ja
CnBCZ2VsaE5YL0lvNHpFZjh1bWMvKzluZDNlNTJ0eTZ1cWhYRHJCaUplSXp0cUg4NVFlL3loUkc2
aU4wWXh2WjVYRFVySDducjN2S1cKdDVSNS9VZUFBQUVDQkZhRHdKcW9SUDVpTXhCb0toQy9JTWN2
dVhHdmlyZ253dkNlSFJHVzBTMXIwazNmcGxVMGppVEVpZXlISDM3NAp0RmxHWDQ5elNhTC9mcXhq
T01UUmoraTNIME1jL1lnNkwyWVlXejdPZXhrN2IyRFc5R0U5b243UlBTaXVORFZwVzRiemoyMTN6
RHZtCk9xemJjSHpXOHNPNkxHVjhySDRMV2Qra09pOWt1Vmt4M0Y5SEhJVzY3VzF2bTNKU1ZZNmtU
ZHJmMDJMa3hTOStjWXE3dE1jUm9qZ0MKRSsrWmZJbmhGQmRudU5PZDdsU0tHZHZuNTV4elRybFFR
NzgrbmhNZ1FJQUFnWlVVa0lDc3BMNnlDUkRZS1FScUF2THlsNzk4VWRzYgpOMnVNWkNNZmVkdGl1
YmpNZE56OE1jNEJNUkFnUUlBQWdlMU53Rld3dHJjOXByNEVDR3hYQW5Ha0pPNTJINWQxWHV3UUo2
QS8vdkdQCkw1ZFVqcXVieFZHU09HSjF6M3ZlVS9LeFdFenpFeUJBZ01DcUVYQUVaTlhzQ2hVaFFH
QkhGTWpuWDVRYkxNYTJ4WW41Y1pHQXhReHgKcWQyNFJIVmNHdm4ydDcrOXhHTXhlT1lsUUlBQWdW
VXBJQUZabGJ0RnBRZ1FJRUNBQUFFQ0JBanNtQUl1dzd0ajdsZGJSWUFBQVFJRQpDQkFnUUdCVkNr
aEFWdVZ1VVNrQ0JBZ1FJRUNBQUFFQ082YUFCR1RIM0srMmlnQUJBZ1FJRUNCQWdNQ3FGSkNBck1y
ZG9sSUVDQkFnClFJQUFBUUlFZGt3QkNjaU91Vjl0RlFFQ0JBZ1FJRUNBQUlGVktTQUJXWlc3UmFV
SUVDQkFnQUFCQWdRSTdKZ0NFcEFkYzcvYUtnSUUKQ0JBZ1FJQUFBUUtyVWtBQ3NpcDNpMG9SSUVD
QUFBRUNCQWdRMkRFRkpDQTc1bjYxVlFRSUVDQkFnQUFCQWdSV3BZQUVaRlh1RnBVaQpRSUFBQVFJ
RUNCQWdzR01LU0VCMnpQMXFxd2dRSUVDQUFBRUNCQWlzU2dFSnlLcmNMU3BGZ0FBQkFnUUlFQ0JB
WU1jVWtJRHNtUHZWClZoRWdRSUFBQVFJRUNCQllsUUlTa0ZXNVcxU0tBQUVDQkFnUUlFQ0F3STRw
SUFIWk1mZXJyU0pBZ0FBQkFnUUlFQ0N3S2dYbVZtV3QKdG9kS3JWbXpQZFJTSFFrUUlFQ0FBQUVD
QkFpc0tnRUp5TmJzanE3Ym1xVXRTNEFBQVFJRUNCQWdRR0NuRTlBRmE2ZmI1VGFZQUFFQwpCQWdR
SUVDQXdNb0pTRUJXemw3SkJBZ1FJRUNBQUFFQ0JIWTZBUW5JVHJmTGJUQUJBZ1FJRUNCQWdBQ0Js
Uk9RZ0t5Y3ZaSUpFQ0JBCmdBQUJBZ1FJN0hRQ0VwQ2RicGZiWUFJRUNCQWdRSUFBQVFJckp5QUJX
VGw3SlJNZ1FJQUFBUUlFQ0JEWTZRUWtJRHZkTHJmQkJBZ1EKSUVDQUFBRUNCRlpPUUFLeWN2WktK
a0NBQUFFQ0JBZ1FJTERUQ1VoQWRycGRib01KRUNCQWdBQUJBZ1FJckp5QUJHVGw3SlZNZ0FBQgpB
Z1FJRUNCQVlLY1RrSURzZEx2Y0JoTWdRSUFBQVFJRUNCQllPUUVKeU1yWks1a0FBUUlFQ0JBZ1FJ
REFUaWNnQWRucGRya05Ka0NBCkFBRUNCQWdRSUxCeUFoS1FsYk5YTWdFQ0JBZ1FJRUNBQUlHZFRr
QUNzdFB0Y2h0TWdBQUJBZ1FJRUNCQVlPVUVKQ0FyWjY5a0FnUUkKRUNCQWdBQUJBanVkZ0FSa3A5
dmxOcGdBQVFJRUNCQWdRSURBeWduTXJWelJPMERKYTlic0FCdGhFd2dRSUVDQUFBRUNCQWkwRTFq
VApwWlQvR1FnUUlFQ0FBQUVDQkFnUUlMRHRCYTQ0QXRMSlFiWTl0UklJRUNCQWdBQUJBZ1FJRUhB
T2lCZ2dRSUFBQVFJRUNCQWdRS0NaCmdBU2tHYldDQ0JBZ1FJQUFBUUlFQ0JDUWdJZ0JBZ1FJRUNC
QWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0EKQUFFQ0JBZ1FJRUNnbVlB
RXBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlF
Q0JBZwpRSUFBQVFtSUdDQkFnQUFCQWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNB
aUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhClVTdUlBQUVDQkFnUUlFQ0FBQUVKaUJnZ1FJQUFBUUlF
Q0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkEKZ0FBQkFnU2FDVWhB
bWxFcmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21jQ2FMcVg4ejBDQUFBRUNC
QWdRSUVDQQpBSUZ0THpDWE92bkh0bWRXQWdFQ0JBZ1FJRUNBQUFFQ0lhQUxsamdnUUlBQUFRSUVD
QkFnUUtDWmdBU2tHYldDQ0JBZ1FJQUFBUUlFCkNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFt
bEVyaUFBQkFnUUlFQ0JBZ0FBQkNZZ1lJRUNBQUFFQ0JBZ1FJRUNnbVlBRXBCbTEKZ2dnUUlFQ0FB
QUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSVFKcFJLNGdBQVFJRUNCQWdRSUFBQVFtSUdD
QkFnQUFCQWdRSQpFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRSUVDQUFB
RUNCSm9KU0VDYVVTdUlBQUVDQkFnUUlFQ0FBQUVKCmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0di
V0NDQkFnUUlBQUFRSUVDQkNRZ0lnQkFnUUlFQ0JBZ0FBQkFnU2FDVWhBbWxFcmlBQUIKQWdRSUVD
QkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1FJRUNBQUFFQ0JBZ1FrSUNJQVFJ
RUNCQWdRSUFBQVFJRQptZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNC
QW9KbUFCS1FadFlJSUVDQkFnQUFCQWdRSUVKQ0FpQUVDCkJBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1
SUFBRUNCQWdRSUVDQUFBRUppQmdnUUlBQUFRSUVDQkFnUUtDWmdBU2tHYldDQ0JBZ1FJQUEKQVFJ
RUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FBQkNZZ1lJRUNB
QUFFQ0JBZ1FJRUNnbVlBRQpwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlF
bWdsSVFKcFJLNGdBQVFJRUNCQWdRSUFBQVFtSUdDQkFnQUFCCkFnUUlFQ0JBb0ptQUJLUVp0WUlJ
RUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRSUVDQUFBRUNCSm9KU0VDYVVTdUlBQUVDQkFnUUlFQ0EK
QUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNRZ0lnQkFnUUlF
Q0JBZ0FBQkFnU2FDVWhBbWxFcgppQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dt
WUFFcEJtMWdnZ1FJRUNBQUFFQ0JBZ1FrSUNJQVFJRUNCQWdRSUFBCkFRSUVtZ2xJUUpwUks0Z0FB
UUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNCQW9KbUFCS1FadFlJSUVDQkFnQUFCQWdRSUVK
Q0EKaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdnUUlBQUFR
SUVDQkFnUUtDWmdBU2tHYldDQ0JBZwpRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNV
aEFtbEVyaUFBQkFnUUlFQ0JBZ0FBQkNZZ1lJRUNBQUFFQ0JBZ1FJRUNnCm1ZQUVwQm0xZ2dnUUlF
Q0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSVFKcFJLNGdBQVFJRUNCQWdRSUFBQVFt
SUdDQkEKZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRSUVD
QUFBRUNCSm9KU0VDYVVTdUlBQUVDQkFnUQpJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FT
a0diV0NDQkFnUUlBQUFRSUVDQkNRZ0lnQkFnUUlFQ0JBZ0FBQkFnU2FDVWhBCm1sRXJpQUFCQWdR
SUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1FJRUNBQUFFQ0JBZ1FrSUNJ
QVFJRUNCQWcKUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJ
RUNCQW9KbUFCS1FadFlJSUVDQkFnQUFCQWdRSQpFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNh
VVN1SUFBRUNCQWdRSUVDQUFBRUppQmdnUUlBQUFRSUVDQkFnUUtDWmdBU2tHYldDCkNCQWdRSUFB
QVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FBQkNZZ1lJ
RUNBQUFFQ0JBZ1EKSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFB
UUlFbWdsSVFKcFJLNGdBQVFJRUNCQWdRSUFBQVFtSQpHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0
WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRSUVDQUFBRUNCSm9KU0VDYVVTdUlBQUVDCkJBZ1FJ
RUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNRZ0lnQkFn
UUlFQ0JBZ0FBQkFnU2EKQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlF
Q2dtWUFFcEJtMWdnZ1FJRUNBQUFFQ0JBZ1FrSUNJQVFJRQpDQkFnUUlBQUFRSUVtZ2xJUUpwUks0
Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNCQW9KbUFCS1FadFlJSUVDQkFnQUFCCkFn
UUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdnUUlB
QUFRSUVDQkFnUUtDWmdBU2sKR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdT
YUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FBQkNZZ1lJRUNBQUFFQwpCQWdRSUVDZ21ZQUVwQm0xZ2dn
UUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSVFKcFJLNGdBQVFJRUNCQWdRSUFB
CkFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdR
SUVDQUFBRUNCSm9KU0VDYVVTdUkKQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0Na
Z0FTa0diV0NDQkFnUUlBQUFRSUVDQkNRZ0lnQkFnUUlFQ0JBZ0FBQgpBZ1NhQ1VoQW1sRXJpQUFC
QWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1FJRUNBQUFFQ0JBZ1Fr
SUNJCkFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJB
Z1FJRUNCQW9KbUFCS1FadFlJSUVDQkEKZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pT
RUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdnUUlBQUFRSUVDQkFnUUtDWgpnQVNrR2JXQ0NCQWdR
SUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FBQkNZ
Z1lJRUNBCkFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJ
QUFBUUlFbWdsSVFKcFJLNGdBQVFJRUNCQWcKUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJL
UVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRSUVDQUFBRUNCSm9KU0VDYQpVU3VJQUFFQ0JB
Z1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNRZ0ln
QkFnUUlFQ0JBCmdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFn
UUlFQ2dtWUFFcEJtMWdnZ1FJRUNBQUFFQ0JBZ1EKa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpw
Uks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNCQW9KbUFCS1FadFlJSQpFQ0JBZ0FB
QkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdn
UUlBQUFRSUVDQkFnClFLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFC
QWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FBQkNZZ1kKSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0x
Z2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSVFKcFJLNGdBQVFJRQpDQkFn
UUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNC
QWdRSUVDQUFBRUNCSm9KClNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdR
S0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNRZ0lnQkFnUUkKRUNCQWdBQUJBZ1NhQ1VoQW1sRXJp
QUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1FJRUNBQUFFQwpC
QWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdB
QUJBZ1FJRUNCQW9KbUFCS1FaCnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JK
b0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdnUUlBQUFRSUUKQ0JBZ1FLQ1pnQVNrR2JXQ0NC
QWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FB
QgpDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JB
Z1FJQUFBUUlFbWdsSVFKcFJLNGdBCkFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0pt
QUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRSUVDQUFBRUMKQkpvSlNFQ2FVU3VJQUFF
Q0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNR
Z0lnQgpBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVD
QkFnUUlFQ2dtWUFFcEJtMWdnZ1FJRUNBCkFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJ
UUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNCQW9KbUEKQktRWnRZSUlFQ0JB
Z0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUpp
QmdnUUlBQQpBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFn
QUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBCmdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVw
Qm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSVFKcFIKSzRnQUFRSUVD
QkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlB
RUNCQWdRSUVDQQpBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNC
QWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNRCmdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1s
RXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1EKSUVDQUFB
RUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NC
QWdBQUJBZ1FJRUNCQQpvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFF
Q0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdnClFJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JX
Q0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUkKRUNC
QWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlF
Q0JBZ1FJQUFBUUlFbWdsSQpRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JB
b0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRCklFQ0FBQUVDQkpvSlNFQ2FVU3VJ
QUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUUK
Q0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FB
QUVDQkFnUUlFQ2dtWUFFcEJtMQpnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVt
Z2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJCkVDQkFvSm1BQktRWnRZSUlF
Q0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFB
RUoKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVD
QkFnQUFCQWdTYUNVaEFtbEVyaUFBQgpBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21Z
QUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFCm1nbElRSnBSSzRnQUFR
SUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpD
QWlBRUMKQkFnUUlFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJ
RUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQQpBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1Vo
QW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFCnBCbTFnZ2dRSUVD
QUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1J
R0NCQWdBQUIKQWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNB
QUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQQpBQUVKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNr
R2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyCmlBQUJBZ1FJ
RUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lB
UUlFQ0JBZ1FJQUEKQVFJRW1nbElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlF
Q0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQQppQUVDQkFnUUlFQ0FBQUVDQkpvSlNFQ2FV
U3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnClFJQUFB
UUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlF
Q0FBQUVDQkFnUUlFQ2cKbVlBRXBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFR
SUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQQpnQUFCQWdRSUVDQkFvSm1BQktRWnRZ
SUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRCklF
Q0FBQUVKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdR
SUVDQkFnQUFCQWdTYUNVaEEKbWxFcmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVD
Z21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZwpRSUFBQVFJRW1nbElRSnBSSzRn
QUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJ
CkVKQ0FpQUVDQkFnUUlFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFB
QVFJRUNCQWdRS0NaZ0FTa0diV0MKQ0JBZ1FJQUFBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1Nh
Q1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUQpJRUNnbVlBRXBCbTFnZ2dR
SUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFB
UW1JCkdDQkFnQUFCQWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJ
RUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUMKQkFnUUlFQ0FBQUVKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pn
QVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYQpDVWhBbWxFcmlBQUJB
Z1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJ
Q0lBUUlFCkNCQWdRSUFBQVFJRW1nbElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFn
UUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUIKQWdRSUVKQ0FpQUVDQkFnUUlFQ0FBQUVDQkpvSlNF
Q2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTawpHYldDQ0JBZ1FJ
QUFBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1ln
WUlFQ0FBQUVDCkJBZ1FJRUNnbVlBRXBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlB
QUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUEKQVFtSUdDQkFnQUFCQWdRSUVDQkFvSm1BQktR
WnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SQpBQUVDQkFn
UUlFQ0FBQUVKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdC
QWdRSUVDQkFnQUFCCkFnU2FDVWhBbWxFcmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdR
SUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0kKQVFJRUNCQlY4MWo5QUFBV0UwbEVRVlFn
UUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNCQQpvSm1B
QktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNC
QWdRSUVDQUFBRUppQmdnClFJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1Fn
SWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUkKRUNCQWdBQUJDWWdZSUVDQUFBRUNC
QWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSQpR
SnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdB
QUJBZ1FJRUpDQWlBRUNCQWdRCklFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlC
Z2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUUKQ0JDUWdJZ0JBZ1FJRUNCQWdB
QUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJt
MQpnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JB
Z1FJQUFBUW1JR0NCQWdBQUJBZ1FJCkVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFF
Q0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUoKaUJnZ1FJQUFBUUlFQ0JB
Z1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVy
aUFBQgpBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVD
QkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFCm1nbElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JB
Z0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUMKQkFnUUlFQ0FBQUVD
QkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0ND
QkFnUUlBQQpBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFn
QUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFCnBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVD
QkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUIKQWdRSUVDQkFv
Sm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFB
RUNCQWdRSUVDQQpBQUVKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNC
Q1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyCmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFB
RUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUEKQVFJRW1n
bElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNC
QWdBQUJBZ1FJRUpDQQppQUVDQkFnUUlFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFF
SmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnClFJQUFBUUlFQ0JDUWdJZ0JBZ1FJRUNC
QWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2cKbVlB
RXBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlF
Q0JBZ1FJQUFBUW1JR0NCQQpnQUFCQWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNB
aUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRCklFQ0FBQUVKaUJnZ1FJQUFBUUlF
Q0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEEK
bWxFcmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FB
QUVDQkFnUWtJQ0lBUUlFQ0JBZwpRSUFBQVFJRW1nbElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlH
Q0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJCkVKQ0FpQUVDQkFnUUlFQ0FB
QUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0di
V0MKQ0JBZ1FJQUFBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVD
QkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUQpJRUNnbVlBRXBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFR
SUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JCkdDQkFnQUFCQWdRSUVD
QkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1
SUFBRUMKQkFnUUlFQ0FBQUVKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJ
RUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYQpDVWhBbWxFcmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVD
QUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFCkNCQWdRSUFBQVFJ
RW1nbElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJ
RUNCQWdBQUIKQWdRSUVKQ0FpQUVDQkFnUUlFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNB
QUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTawpHYldDQ0JBZ1FJQUFBUUlFQ0JDUWdJZ0JBZ1FJ
RUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDCkJBZ1FJRUNn
bVlBRXBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FB
UUlFQ0JBZ1FJQUEKQVFtSUdDQkFnQUFCQWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlF
SkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SQpBQUVDQkFnUUlFQ0FBQUVKaUJnZ1FJQUFB
UUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCCkFnU2FD
VWhBbWxFcmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlF
Q0FBQUVDQkFnUWtJQ0kKQVFJRUNCQWdRSUFBQVFJRW1nbElRSnBSSzRnQUFRSUVDQkFnUUlBQUFR
bUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQQpnQUFCQWdRSUVKQ0FpQUVDQkFnUUlF
Q0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaCmdB
U2tHYldDQ0JBZ1FJQUFBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdR
SUVDQkFnQUNCdWZlKzk3MXAKYm00dXJWdTNMcTFmdjc2SWRGMlgxcTVkbXk2Ly9QSVV6Mk80N0xM
TDBvWU5HK1pmaS9rTkJBZ1FJRUNBQUFFQzI1OUF0UFBXckZsVAoyb0R4dlA1dGYxdWl4cE1FTm0v
ZVhOcndkUjlIVzcrMjYyc2JQNmJWb2JiM1l6eW05OGZyUFBYeDdMUFBUZ2NmZkhBZHZjcGpyRGZL
CjZnKzFQdkc0YWRPbU5MZHg0OFowM2V0ZXR4UVdTVVVVR0greGNNeHcxbGxucFZOTy9WNzY3Mit0
VDE4NWM1ZjAvYlBuMGtXWFJhS1MKVnh5NVNWNVJPbkRQZmhtZUV5QkFnQUFCQWdRSXJEYUJ5M1BE
TGRxRnVaMjMxOXpHZEoyclhacU8vZVdVYm5mVDNkS2gxOXlqL0JBZApqYzkrdzNTMWJZTDZUQmFv
Q1VNOFJ1TS8ydlRSam8veGl5KytPRjF5eVNYcEd0ZTRSdHAvLy8zbkR6TEVmcTUva1JqRUVQUFhC
R1JhCkhGeDAwVVhwNmxlLytzU0t4UEt4WE5TaHYzeThIa084L3UxdmZ6dk5SVVVPUC96d1VsaC94
a3N2dlRTZGNzb3A2UU1mL1ViNjZQL3UKazc1NXdZRnAxejEzVGJlODA0SHBxTVAyU252dmNlVVJr
THpDdVNob2N6NWFrb00yNVdScXpkd1ZqN25rMUszSkJVWW1sUXRkSDR0cwo3akpJYk9EbXRDYmVC
UGt2WHJZOFAvSGovZVB6dytlbjd3L2ZuL0U1b1Aydy9PMm43cUpOYVZOdWpFVjdiTU9sbDZldmYr
L0M5TGxUCmZwSytldklsNmRRemY1NGVmTHZONmJpYjdKOTIyV1dYMG5qTnN4bTJJNEZvNE5kR2Zq
eEdRei8rSWdtSklSN1BQUFBNc24rUE91cW8KY3VTcmJsNjAvK3V5OWJYNjJNOE42bXMvK2NsUFN1
NVF4K3ZqdEhYRTlEb3Q2blRlZWVlbHVjaUlJdE9KZ0tzVmlPVGo5Tk5QVHgvNwo1Q25wdzZmdG43
NXo2VFhUbWdQbjB2RzNQQ1RkN3BoOTB4Njdyc3RKUjE1YnJ2RG12S0tjZTZUOGtabi95NGZ5SWdI
SmozbFQwcm84CmZlMjZ5S1J6Z2hGQm4rZkxxVXJNbU1memN1VzFMbDJXbjFpZW4vangvdkg1NGZQ
VDk0ZnZUKzJIYmROKzJyQlAvdUUzdDhlaXZSVy8KZFI5Nm5UM1Q3Z2ZzbGo3NEgvK1hUdnZaTGls
OTZpZnAydGZZa0k2ODN0NXAxMTEzTFczRFBKdGhPeEdJaG4wMDh1TXZqbWJFZUR4RwoyNzcreGVr
VVgvbktWOUxlZSsrZERqdnNzSExFcXlZWXNWeDlQbXVUNDVTTWV0ckdySG5yZXVNeGhxaEQ1QjZs
QzFhTVJMQkZ3VkhoCjZIYjE1UzkvT1gzdUcydlRkelllbXRia0FOMW5uMTNTZ2Z1dEx3RzVLVWR1
QkcvZXpKeFF4RWRGU3BmbURDT0hiMGswMXM1RkxsSSsKUXRMYVBHT2NMdExsNlRGM0xKc2ZjdklS
U0d0UzdnR1d4OWRZbnAvNDhmN3grWkUvVEgxKyt2N3cvYW45a0ZPUVpXOC9iY3cvaE9mbQoxcFhE
RlQvKzdyL1ArclQzL3J1bm44MnRTNmVkZjBENjhCZC9tcTUvK1A2bGNiblFCbVpkbzhlVkZhZ0pT
RHpXNUNNZTR5QkQ3TXZvCmtoV0p3ODkrOXJQMHRhOTlMZTIxMTE3cGtFTU9tVTgwaDhsSGROczY4
Y1FUMDRNZi9PQ3JiRmljdmpHY1AyWTY0WVFUMG4zdWM1KzAKeHg1N3pDOVQ1NHZIU0VJaTU0amxj
KytwTmVuQ0N5OHNGWW01Zi83em41ZS9PTUhrOUl1dm5kYnVtNE56MzEzVHZudXRUK2RjbU5MNQpG
M1g1Q01qYXRDNG5HU1dPOHdHTmpma0lSaVEybS9MUGwvbUFSMDV2NGd0a2JZcWVXREcrOXZJcnNx
L05rWVIwK1R5VEtDaS9kdW5tCk9ORTluNHlTa3hMTDh4TS8zajgrUDN4Kyt2N3cvYW45c0czYVQ1
ZHN6RzJ4dGFVRlZucWtSTnZySnhkMmFkKzk1MHE3N09lNVBmWmYKUDFoYkdvalJLNmIrTUIxTk5z
UHFGK2duSVBWRTczb0VKTHBmeGZROTk5eXovRjF3d1FVcHp1T0k5djgrKyt3em40VFVyZno0eHo5
ZQprb25vYXZXUWh6eWt2anovV05jNy84S1ZUOTc5N25lbmswNDZxU1F0ZDdqREhZYVRTeDJpek1n
OTVuYmJiYmR5Y2twa1JKRWRSYVZpCndrOS8rdE4wN3ZwZlRYdnZzMnU2MnI2NzVBUmtsM3p5K1py
MGhkTnoxckoyVSs1YUZlbkhGWWxIZEtxS1FJNXpQTmJtY3o3Vzc1SXoKcmJRcGQ4SEtDVWorbTh1
WjlicWNuR3phbEE4SDViL0xjM0lTR05GMWEyTzhkdVdSRWN2ekV6L2VQejQvZkg3Ni92RDlxZjJ3
L08ybgo4eTdNdjFwSHl5My80cnY1c28yNURSWkhRVGJsQkdSOVdoTmRWWEozblI5Y3RFK0tidmpS
SHBTQVhLWDl2S3BmcUFsSUpBZnhWMDlDCmp6WjkvTVgwdUJKVzdOZG84MGVTV2R2OHUrKytlM245
bTkvOFpucmpHOStZNHJGMm1hcm5rUFEzUHRZMTZmVlk1dHh6ejAydmVjMXIKMGtjKzhwSDBCMy93
QittSUk0NG82NHFqSG5HUUk0NnNSTzR4RnhXSXd6T1JrY1FobWxxNUdOOTE5NVQyellmbjR1akgv
dnZzbHFLQwo2M015TVRlWHUyTGxSR1BOMm53MEkxY2lIK0RKaWNUbU5KYy9NWGJKTWJ3dVp4Snhu
R05kL2prelRqK1AxOWZuWUk2VG56YmwrVGJsCm9MODgvMFVDY3RuRzNFOHR6MjE1ZnVMSCs4Zm5o
ODlQM3grK1A3VWZ0azM3YWMyNkRibUxaejdhc1RrbkgvbEg0NDBiTDAyWGJiZ2sKWFpxN3dxOVpz
ekZkdm5GOStubnVuUklOeTJnTFJwc3cyb2VHN1VPZ0ppRHhHQWxJN1NaVkU0bDRyWGFyaTNNd0ln
bUlJUktDK0R2NQo1SlBUNjE3M3VxdHM3RG5ubkhPVjF5S0JtZlI2Sks5MU9QWFVVOVBqSC8vNDlK
akhQQ2JkN0dZM0t3bFExS1dlZHo0WGxZa2twRDVHCnhhUFNVYkdyejUyVDF1OTJjTnBuOTEzU1Bu
dm1CR1NQUGROdXUrWjU4L3pSVlNJblZIbUZjVDdJRlVjMDF1YytWK3R6c01iUmpwSjQKNU9lUnFN
eGQyVFVyNXh3NXNQTmZYaVlPQXBhRTVMSk5hV05uK1hqRDh4TS8zajgrUDN4Kyt2N3cvWm5iRGRv
UHk5NStTbk43NWlNZwpjWEp5YnB6bUl5Q1hYYm8yYlZpZkwwSzA0ZUxjTnV2U3h0M24wbjZYWFpE
YmJQdVdOcUVFcERhbHQ0L0hhTnhIR3o3K29wRmZqM3pVCjErT0lTRTFHNGh5TmFQdkhQREhFNjhj
ZmYzdzY2S0NEMHR2Zi92WjB4aGxubE5manZ6aGlNaHhpMlVtdjl4UFd3dzQ3TFAzTzcvek8KL0JH
UVdyY29NMktySEFHSmxjUkM4Umd6eEFraUJ4eHdRRHJvM08rbFMzYzdwcHp6c2NjZXU2WjljamVz
UGZiY0l3ZG43aW9VNTNaRQpBcEpybFJQcGZGSjVUa3p5ZVB6RlNaVHhhM1ljMFl0TDlLN0x0dzJK
Ym9jeDc2YWNhY2Y4NVRHU2wyNHVId0swUEQveDQvM2o4OFBuCnArOFAzNS9hRDl1cS9iUTVOOXJX
NVJONE4yL0tmeHQzVFJzdVdaOHUzcEI3d09RdTh4dnlZWkRkZDF1WERsdHpRVDRuK0ZyekNVaHQK
b09abW0yR1ZDOVJFSTlyeGRiL1YxK0pIN25nZTdmczRTaEczNEtnSlNNd2J5OFJ3d3h2ZU1MM2dC
UzlJbi9yVXA5STczL25PK2Q1Ugp3MDJ2Qnk2R3IwY3VFU2UzUCtoQkQwcTN2ZTF0U3pld3V2NG9Q
K29SODhUeUpRRXBUNjdzRjFZcmNiM3JYUzlkODV1ZlREODg3N1MwCi9vQmJwdDN5TitQdU9mbllZ
Ni9JaGxKZStJcWpHSEZwM1RpcUVVbEY3cG1WNGhhRmtaemswMEJLWDhPYzVPU2pJVmYwWll5akh2
bUEKUnpuNmtYdGVsVU9Bc1d4Y21jSHkvTVNQOTQvUEQ1K2Z2ajk4ZjJvL2JKdjIwNmI4QTNFK0Ji
ZjhBTHdwWHl4bzNmcmNtTXMzWk50OAoyWVowOGZxNXRQZEZwNlZiSEg1NU9TbTUzempOVFRmRGRp
SVFSemxpaU1aK05QU2o4VitUa0pxQVJIZXJZNDQ1WnI0TFZwMm5MaE9QCmQ3dmIzZEp0Ym5PYjlL
NTN2V3Zpa1k0NG1YM1NFWkM3My8zdTZZRVBmR0JKUW1LOU5mbUkzQ0xXRzEzN0lna3BlVWZ0ZWxY
NyswWEYKbzlMSEhYZGMrc1kzdnBFMm5YRksydkREZklMUy9yK2V6OVRJRGFSSUxuTHlNWmZqTnBL
TGZQNVN2Z0ZoRHVpY1FlVGVXV2xkempLaQpJWmtQZ09TaklQa3ZBajRlODFHUlNEWjJ5OU56RDYr
ME1TY3VrWkRFa1pETElvbXhQRC94NC8zajg4UG5wKzhQMzUvYUQ5dWsvYlJICi9ueXRDY2pHbklC
azVyUnhRNzdvUmJUVHpqNDEzV2p2SDZXYkhIbDB1dHJWcmxZYWl0RVdOR3cvQXRIQXJ3Y1JvdGJS
K0srUE1TMk8KZk1SbGVBOCsrT0IwNHh2ZnVDUUJaWVlyLzR0NTZqTHhVcHlLOGRqSFBuYUwxK3I4
Kys2Nzczd0NVMStMeHpwL3JLc084YnorMVNNZwpwUXRXWkV2MXIyWkxVWUc0eGZvZDczakh0UEZE
SDBwbm52V1pkTjdKWjZiTERyMXAydnhMTjB2N0hiSi9XcGZQTTltWUc0d3hSRGx4ClpPUHlmRDdM
TGpsZU4wZG1uYmQ3WTA0OEltRUpnMGhLSXVBajY3ZzB6eHVSSHlkQlhacGZpeHNTV3A2ZitQSCs4
Zm5oODlQM2grOVAKN1lkdDAzN0s1NXVYTmxocHMrVTIzUGsvUGkrZC85MzhJL1AvblphTzJ1dVNk
SXNiSFpHdWM1M3J6Ti9ESVU1YU5tdy9BcldSSDBsSQo3THRvN05lVDBhUHJWVnhjS3RyN3h4NTdi
TGtVYjkyeVdDN2EvY1BIT24zU1l4d0JtWldnOXRjWHo2TmVVWDQ4ajhlNXFGejhSZUh4CldJZVll
UFRSUjVjQzRzejRILzd3aCtuaTc1K1lmdmFORTlJNWVVUHFpdnZaVWwzV0l3RUNCQWdRSUVDQXdP
b1VpRjR2Y1dYVGErNjMKWDdybTRkZE1oeDEyVFA0N0xPMlh4Nk5oV2R1R3E3UDJhalZKSU5ybE1j
UytpOForWEZBcS9pTDVpS3RXeFJHTkk0ODhzaHdCaWVSawpPTlIyL2ZEMVNlTnhuc2VrZFV5YU45
WWJmMUdubWh4RkhlZmlVbHh4TTVKSU9Qcjl1ZW9DRVpCeHNrb2tJT2VkZDE3Wm1DaWdaajc5Cm95
YVRDdllhQVFJRUNCQWdRSURBNmhDSUg0Nmo3UmJkWUNJSmlSdlJSWmVhYUZUR2E3VUJ1enBxcXhZ
TEZZakdmYitoWHhPUVdQNWEKMTdwVzJjZXgzNlBOdnh6RFl0WXpURDRpOS9qLzR1OUV5WVNxMVFn
QUFBQUFTVVZPUks1Q1lJST0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53324</attachid>
            <date>2010-04-14 02:24:59 -0700</date>
            <delta_ts>2010-07-26 14:37:16 -0700</delta_ts>
            <desc>A proposed fix 6</desc>
            <filename>issue23556-patch9.txt</filename>
            <type>text/plain</type>
            <size>38929</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzU3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDQtMTQgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QSBmaXggZm9yIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMzU1Nj4uCisgICAgICAgIE9uIFJUTCBw
YWdlcywgaG9yaXpvbnRhbCBzY3JvbGxiYXIgaXMgbWlzc2luZworCisgICAgICAgIFRoaXMgY2hh
bmdlIGFkanVzdHMgdGhlIHNjcm9sbCBvZmZzZXQgb2YgYW4gUlRMIFJlbmRlclZpZXcgb2JqZWN0
IHRvIHByZXZlbnQgaXQgZnJvbQorICAgICAgICBjbGlwcGluZyB0aGUgZWxlbWVudHMgd2lkZXIg
dGhhbiBpdHMgd2lkdGguIFRvIGltcGxlbWVudCB0aGlzLCB0aGlzIGNoYW5nZSBhbHNvIGNvcGll
cworICAgICAgICB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgYSA8Ym9keT4gZWxlbWVudCB0byB0aGUg
UmVuZGVyVmlldyBvYmplY3QgYW5kIHBhaW50IGl0cyBiYWNrZ3JvdW5kCisgICAgICAgIHdpdGgg
dGhlIGNvbG9yIHNwZWNpZmllZCBpbiBhIDxib2R5PiBlbGVtZW50LgorCisgICAgICAgIFRlc3Q6
IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmRlcmZsb3cuaHRtbAorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnN0
eWxlRGlkQ2hhbmdlKTogU3luY2hyb25pemUgdGhlIHRleHQgZGlyZWN0aW9uIG9mIFJlbmRlclZp
ZXcgd2l0aCB0aGUgb25lIG9mIGEgPGJvZHk+IGVsZW1lbnQgc28gUmVuZGVyVmlldyBjYW4gYWRq
dXN0IGl0cyB2aWV3IHNpemUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Um9v
dEJveERlY29yYXRpb25zKTogUGFpbnQgdGhlIGJhY2tncm91bmQgb2YgYW4gUlRMIFJlbmRlclZp
ZXcgd2l0aCB0aGUgY29sb3Igb2YgYSA8Ym9keT4gZWxlbWVudC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpsYXlvdXQp
OiBBZGp1c3QgdGhlIHNjcm9sbCBvZmZzZXQgZm9yIFJUTCBSZW5kZXJWaWV3cy4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY1dpZHRoKTogQWRqdXN0IHRoZSBkb2N1bWVudCB3aWR0
aCBmb3IgUlRMIFJlbmRlclZpZXdzLgorCiAyMDEwLTA0LTEzICBEaXJrIFNjaHVsemUgIDxrcml0
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDU3NTU5KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDkgKzE4MiwxMiBAQCB2b2lk
IFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICAvLyBTZXQgdGhlIHRleHQgY29sb3IgaWYgd2UncmUgdGhlIGJvZHkuCi0gICAgaWYgKGlz
Qm9keSgpKQorICAgIC8vIFNldCB0aGUgdGV4dCBjb2xvciBhbmQgZGlyZWN0aW9uIGlmIHdlJ3Jl
IHRoZSBib2R5LgorICAgIGlmIChpc0JvZHkoKSkgewogICAgICAgICBkb2N1bWVudCgpLT5zZXRU
ZXh0Q29sb3Ioc3R5bGUoKS0+Y29sb3IoKSk7CisgICAgICAgIEFTU0VSVCh2aWV3KCkgJiYgdmll
dygpLT5zdHlsZSgpKTsKKyAgICAgICAgdmlldygpLT5zdHlsZSgpLT5zZXREaXJlY3Rpb24oc3R5
bGUoKS0+ZGlyZWN0aW9uKCkpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJCb3g6OnVwZGF0ZUJv
eE1vZGVsSW5mb0Zyb21TdHlsZSgpCkBAIC02MDgsNyArNjExLDEyIEBAIHZvaWQgUmVuZGVyQm94
OjpwYWludFJvb3RCb3hEZWNvcmF0aW9ucygKICAgICAvLyBDU1MyIDE0LjI6CiAgICAgLy8gVGhl
IGJhY2tncm91bmQgb2YgdGhlIGJveCBnZW5lcmF0ZWQgYnkgdGhlIHJvb3QgZWxlbWVudCBjb3Zl
cnMgdGhlIGVudGlyZSBjYW52YXMgaW5jbHVkaW5nCiAgICAgLy8gaXRzIG1hcmdpbnMuCisgICAg
Ly8gVGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiBhbiBSVEwgdmlldyBpcyAobWluKGxlZnRtb3N0
UG9zaXRpb24oKSwgMCksIDAsIGRvY1dpZHRoKCksIGRvY0hlaWdodCgpKQorICAgIC8vIFNvLCB3
ZSBhbHNvIGluY2x1ZGUgdGhlIGxlZnRtb3N0IHBvc2l0aW9uIGZvciBSVEwgdmlld3Mgc28gd2Ug
Y2FuIGZpbGwgaXRzIGVudGlyZSBjYW52YXMuCiAgICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0
KCk7CisgICAgQVNTRVJUKHZpZXcoKSk7CisgICAgaWYgKHZpZXcoKS0+c3R5bGUoKS0+ZGlyZWN0
aW9uKCkgPT0gUlRMKQorICAgICAgICBieCArPSBtaW4odmlldygpLT5sZWZ0bW9zdFBvc2l0aW9u
KCksIDApOwogICAgIGludCBieSA9IHR5IC0gbWFyZ2luVG9wKCk7CiAgICAgaW50IGJ3ID0gbWF4
KHcgKyBtYXJnaW5MZWZ0KCkgKyBtYXJnaW5SaWdodCgpICsgYm9yZGVyTGVmdCgpICsgYm9yZGVy
UmlnaHQoKSwgcncpOwogICAgIGludCBiaCA9IG1heChoICsgbWFyZ2luVG9wKCkgKyBtYXJnaW5C
b3R0b20oKSArIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCksIHJoKTsKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiA1NzU1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDE4IEBAIHZvaWQg
UmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFdoZW4gYW4g
UlRMIHBhZ2UgaGFzIGFuIGVsZW1lbnQgd2lkZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMgdmll
dywgdGhlIGxlZnRtb3N0IHBvc2l0aW9uIG9mIHRoaXMgdmlldworICAgIC8vIGJlY29tZXMgPCAw
LiBTbywgd2UgYWRqdXN0IHRoZSBzY3JvbGwgb2Zmc2V0IG9mIHRoaXMgdmlldyBzbyB3ZSBjYW4g
ZGlzcGxheSB0aGUgZW50aXJlIHJlY3RhbmdsZSBvZiB0aGlzCisgICAgLy8gdmlldywgaS5lLiAo
bWluKGxlZnRtb3N0UG9zaXRpb24oKSwgMCksIDAsIGRvY1dpZHRoKCksIGRvY0hlaWdodCgpKS4K
KyAgICBBU1NFUlQoc3R5bGUoKSk7CisgICAgaWYgKHN0eWxlKCktPmRpcmVjdGlvbigpID09IFJU
TCkgeworICAgICAgICBpbnQgbGVmdCA9IGxlZnRtb3N0UG9zaXRpb24oKTsKKyAgICAgICAgaWYg
KGxlZnQgPCAwKSB7CisgICAgICAgICAgICBzZXRIYXNPdmVyZmxvd0NsaXAodHJ1ZSk7CisgICAg
ICAgICAgICBsYXllcigpLT5zY3JvbGxUb1hPZmZzZXQobGVmdCk7CisgICAgICAgIH0KKyAgICB9
CisKICAgICBBU1NFUlQoIW1fbGF5b3V0U3RhdGUpOwogICAgIExheW91dFN0YXRlIHN0YXRlOwog
ICAgIC8vIEZJWE1FOiBNYXkgYmUgYmV0dGVyIHRvIHB1c2ggYSBjbGlwIGFuZCBhdm9pZCBpc3N1
aW5nIG9mZnNjcmVlbiByZXBhaW50cy4KQEAgLTYxNCw2ICs2MjYsMTIgQEAgaW50IFJlbmRlclZp
ZXc6OmRvY1dpZHRoKCkgY29uc3QKICAgICAgICAgICAgIHcgPSBkdzsKICAgICB9CiAKKyAgICBp
ZiAoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMKSB7CisgICAgICAgIGludCBsZWZ0ID0gbGVm
dG1vc3RQb3NpdGlvbigpOworICAgICAgICBpZiAobGVmdCA8IDApCisgICAgICAgICAgICB3IC09
IGxlZnQ7CisgICAgfQorCiAgICAgcmV0dXJuIHc7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3
NTcyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTAtMDQtMTQgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBmaXggZm9y
IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMzU1Nj4uCisgICAgICAgIE9uIFJUTCBwYWdlcywgaG9y
aXpvbnRhbCBzY3JvbGxiYXIgaXMgbWlzc2luZworCisgICAgICAgIFRoaXMgbmV3IHRlc3QgdmVy
aWZpZXMgdGhhdCBhbiBSVEwgUmVuZGVyVmlldyBjYW4gcmVuZGVyIHRoZSBlbGVtZW50cyB3aWRl
ciB0aGFuIGl0cworICAgICAgICB3aWR0aCB3aXRob3V0IGNsaXBwaW5nLgorCisgICAgICAgICog
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZGVyZmxvdy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZGVyZmxvdy1l
eHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4
dC9pbnRlcm5hdGlvbmFsL3J0bC11bmRlcmZsb3ctZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZGVyZmxvdy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEwLTA0LTE0ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8
YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFhhbiBMb3Blei4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmRlcmZsb3cu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9y
dGwtdW5kZXJmbG93Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9ydGwtdW5kZXJmbG93Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+UlRMIHVuZGVyZmxvdzwvdGl0bGU+Cis8L2hl
YWQ+Cis8Ym9keSBkaXI9InJ0bCI+Cis8cCBkaXI9Imx0ciI+VGhpcyB0ZXN0IHRlc3RzIGlmIHRo
ZSBiZWxvdyAmbHQ7ZGl2Jmd0OyBlbGVtZW50cyBhcmUgZGlzcGxheWVkIHdpdGhvdXQgYmVpbmcg
Y2xpcHBlZC4gSWYgdGhpcyB0ZXN0IHN1Y2NlZWRzLCB5b3UgY2FuIHNlZSBhIGhvcml6b250YWwg
c2Nyb2xsYmFyIGF0IHRoZSBib3R0b20gb2YgdGhpcyBwYWdlLjwvcD4KKzxkaXYgaWQ9InRlc3Qw
IiBzdHlsZT0id2lkdGg6IDExMCU7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiPnRlc3QwPC9kaXY+
Cis8ZGl2IGlkPSJ0ZXN0MSIgc3R5bGU9IndpZHRoOiAxMjAlOyBib3JkZXI6IDFweCBzb2xpZCBy
ZWQ7Ij50ZXN0MTwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmRlcmZsb3ctZXhwZWN0ZWQu
Y2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4
dC9pbnRlcm5hdGlvbmFsL3J0bC11bmRlcmZsb3ctZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwv
cnRsLXVuZGVyZmxvdy1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBA
QAorZTdlMTNkY2FjMzk2MGQ4YjViMTIyYjIxYTBmZmMyZDYKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVybmF0
aW9uYWwvcnRsLXVuZGVyZmxvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmRlcmZsb3ctZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL3J0bC11bmRlcmZsb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg1ODUgc2Nyb2xsV2lk
dGggOTUwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NTg1CitsYXllciBhdCAoMTUw
LDApIHNpemUgODAweDU4NSBiYWNrZ3JvdW5kQ2xpcCBhdCAoMCwwKSBzaXplIDgwMHg1ODUgY2xp
cCBhdCAoMCwwKSBzaXplIDgwMHg1ODUgb3V0bGluZUNsaXAgYXQgKDAsMCkgc2l6ZSA4MDB4NTg1
CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg1ODUKKyAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NjkKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMCwwKSBzaXplIDc4NHgzNgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA3ODF4MzYKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3ODE6ICJUaGlz
IHRlc3QgdGVzdHMgaWYgdGhlIGJlbG93IDxkaXY+IGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgd2l0
aG91dCBiZWluZyBjbGlwcGVkLiBJZiB0aGlzIHRlc3Qgc3VjY2VlZHMsIHlvdSBjYW4gc2VlIGEg
aG9yaXpvbnRhbCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMjIxOiAic2Ny
b2xsYmFyIGF0IHRoZSBib3R0b20gb2YgdGhpcyBwYWdlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgtODAsNTIpIHNpemUgODY0eDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGMDAwMCld
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoODM0LDEpIHNpemUgMjl4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoODM0LDEpIHdpZHRoIDI5OiAidGVzdDAiCisgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoLTE1OCw3Mikgc2l6ZSA5NDJ4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAj
RkYwMDAwKV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg5MTIsMSkgc2l6ZSAyOXgx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICg5MTIsMSkgd2lkdGggMjk6ICJ0ZXN0MSIKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ydGwtdW5k
ZXJmbG93LWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtl
ZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvcnRsLXVuZGVyZmxvdy1leHBlY3RlZC5wbmcKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoKaVZCT1J3
MEtHZ29BQUFBTlNVaEVVZ0FBQXlBQUFBSllDQVlBQUFDYWRvSndBQUFETzJsRFExQkpRME1nVUhK
dlptbHNaUUFBZUFHRgpsRXRvMUZBVWh2K01LWUswZ3FpMUZwVGdRb3UwSlQ3UWlsRGJhYlhXa1hF
WSs5QWl5RFJ6WnhwTk16R1pHUitJU0VIYytWcUtHeCtJCml5cmlRcnBRY0tVTGtVTHJhMUVFY2FV
aWlFSTNVc2IvSnUxTUtsWXZKUGx5em4vUDY0WUFWUTlUam1ORk5HRFl6cnZKcnFoMjZQQ0EKdG5n
Q1ZhaEJOYmhTaHVlMEp4TDdmYVpXUHVldjZiZFFwR1d5U2NhSzlSMlkrTFJ0OWYxTGoyTHY2NTcy
K3A3NStubHZOUzRUQW9wRwo2NHBzd0ZzbER3YThWL0xKdkpPbjVvaGtZeWlWSmp2a1JyY24yVUcr
UVY2YURmRmdpTlBDTTRDcU5tcHlodU15VG1RRnVhVm9aR1hNClViSnVwMDJiUENYdGFjOFlwb2I5
Um43SVdkREdsWThCcld1QVJTOHJ0Z0VQR0wwTHJGcGZzVFhVQVN2N2diRXRGZHZQcEQ4ZnBYYmMK
eTJ6WjdJZFRxcU9zNlVPcDlITTlzUGdhTUhPMVZQcDFxMVNhdWMwY3JPT1paUlRjb3E5bFljb3JJ
S2czMk0zNHlUbGFpSU9lZkZVTApjSk56N0Y4Q3hDNEExejhDR3g0QXl4OERpUnFnWndjaTU5bHVj
T1hGS2M0RjZNZzVwMTB6TzVUWE51djZkcTJkUnl1MGJ0dG9idFJTCmxxWDVMazl6aFNmY29rZzNZ
OWdxY003K1dzWjd0YkI3RC9MSi9pTG5oTGQ3bHBXUmRLcVRzMFF6Mi9xU0ZwMjd5WTNrZXhselR6
ZTUKZ2RkVXh0M1RHN0N5MGN4Mzl3UWM2Yk90T005RmFpSjE5bUQ4QUpueEZkWEpSK1U4Skk5NHhZ
TXlwbTgvbHRxWElOZlRuanllaTBsTgpMZmUyblJucTRSbEpWcXd6UXgzeFdYN3RGcEl5N3pwcTdq
aVcvODJ6dHNoekhJWUZBUk0yN3pZMEpOR0ZLSnJnd0VVT0dYcE1La3hhCnBWL1Fhc0xEOGI4cUxT
VEt1eXdxdXZDWmV6NzdlMDZnd04weWZoK2ljWXcwbGlObytqdjltLzVHdjZuZjBiOWVxUzgwVkR3
ajdsSFQKR0wvOG5YRmxabG1OakJ2VUtPUExtb0w0QnF0dHA5ZENsdFpoWGtGUFhsbmZGSzR1WTEr
cEwzczBtVU5jakUrSHVoU2hURTBZWkR6Wgp0ZXkrU0xiNEp2eDhjOWtXbWg2MUw4NCtxYXZrZXFP
T0habXNmbkUyWEExci83T3JZTkt5cS9Ea2paQXVQR3VocmxVM3FkMXFpN29ECm1ycExiVk5iMVU2
KzdWVDNsM2YwY2xZbVRySnVsOVduMklPTjAvUldUcm95V3dUL0ZuNHgvQzkxQ1Z1NHBxSEpmMmpD
eldWTVMvaU8KNFBZZmQwajVML3dOQVlVVkRYeExPenNBQUNBQVNVUkJWSGdCN2QwSHZDVlhYVGp3
czd0djB4dHBoQkpJRkVJU0RCQVFnZ1FRcEhlVgpEaUlLK3FFcFJZb0NmMEE2S0NoVlFFRnBFaEJV
QWdoSUNRaElpeEpNcEVOSWFKSkNBaUZsazkzTi9NL3ZKT2N4TzdsMzdudHYzNTczCmR2YzduMzE3
Nzl3cDU4eDNmdmZlODd0elptWk5sNGRrSUVDQUFBRUNCQWdRSUVDQVFBT0J0UTNLVUFRQkFnUUlF
Q0JBZ0FBQkFnU0sKZ0FSRUlCQWdRSUFBQVFJRUNCQWcwRXhBQXRLTVdrRUVDQkFnUUlBQUFRSUVD
RWhBeEFBQkFnUUlFQ0JBZ0FBQkFzMEVKQ0ROcUJWRQpnQUFCQWdRSUVDQkFnSUFFUkF3UUlFQ0FB
QUVDQkFnUUlOQk1RQUxTakZwQkJBZ1FJRUNBQUFFQ0JBaElRTVFBQVFJRUNCQWdRSUFBCkFRTE5C
Q1FnemFnVlJJQUFBUUlFQ0JBZ1FJQ0FCRVFNckhxQkN5KzhNSDMvKzkrZldzK2YvT1FuNlZ2Zit0
YlU2VHZyaEdrdS8vZC8KLzVkT091bWtkTjU1NTgya21XVS9jd1c5R1dKZFAvemhEM3V2TFB6cHBa
ZGVtajc3MmM4dWZJRVZtSFB6NXMzcDYxLy8rbnpKMC96bgpaOWpHVDdZSHMyMU1zT1RWYjZ0OXVW
TDdaTGc5UzRhNWNzRlpzYjJjbnh0THFldldmTmJNMnJhbDFHZWh5d3pqWXlYcnNwd3hzNXpmCk9T
dHBzdEQ5dUwzTnQ1ejdlakhiTGdGWmpKWjVsMDNnbnZlOFo3ckdOYTZSZnV1M2Zpczk3R0VQUyt2
V3JVdS8vTXUvbkI3NjBJZW0KTzkvNXptblhYWGROYjMzclc5Tjczdk9lTXQvYjN2YTJxV1UvNXpu
UFNiLzkyNzg5ZGZyT09tR1N5eXRmK2NyMEwvL3lMNlV4Zi9UUgpSNmY0d3BzMkxNUisyckxEMS8v
aEgvNGhIWERBQWVuZDczNzNjTkxNOGYvNnIvOUt2L1pydjdhcTkvRXBwNXlTYm5hem02VkhQZXBS
Cjg5c3p5WDkrNGpaK3NqMlliV09DSmE5K1crM0xsZG9uazdabnlUaFhMamdXMjh2NXViR1VlbTdO
WjAyVU43WnRTNm5QUXBlWkZCOHIKVlpmRnhzeS8vL3UvcDd2ZTlhNXB6Wm8xNlFZM3VFRjZ3eHZl
TUwvWnkvMmRzMUltOHh1MGd6MVo3TDVlMXMzdkRBUldRT0QrOTc5LwpsMytCbnk5NXQ5MTI2Mzd2
OTM1dmZ2eWYvdW1mdXRlLy92VmxQRGVVdXhlKzhJWHowNFpQTHJyb291N0hQLzd4OE9XWjQvbFhz
dTRECkgvakF6UG5HWnBpMWpsblR4OVpkcHkxMUhVT1hDeTY0b0F2bnl5Ky92S3o2RzkvNFJpMWkv
bkZZMWl6NytRVVg4T1NRUXc3cC92cXYKLzNvQmMxNTFsci82cTcvcXJuNzFxMTkxd2lwNjVZLy8r
SSs3My9pTjM1aXYwZEIvZmtLako2dlZiQmhqalRnV1ZjeTIycGNydFUrRwoyN01vakFrekQyTjd1
RStYODNOalF2SGRzTHpoUEZ2eldUUGN0dUc2dCtYNE1ENVdzaTZMalpsUGZlcFRYVzZjZHM5NzN2
UG1pYmJGCmQ4NVNUV2JGekh5bFI1NHN4enBHVnI5aWt4YTdyNWVyb282QUxHczZaMlVMRlhqQ0U1
NlFybmExcTAyZC9UZC84emZUc2NjZVc2YlAKemMyVlgxYW16YnpISG51azNEaTl5dVQ4SnJuS2Ev
V0Z5eTY3TEQzb1FROUsvLzNmLzExZld0QmpmNTJ6MWpGcityUUNGMXBHZjc1Sgo2eHE2L08vLy9t
K0tRNjN4SzFVTVJ4eHh4QmFMVGFydkxQc3RWakJqWkd2V3RUWEx6cWpXb2laLzdHTWZTMjk1eTF1
MldDWW5kR1U4Cmp1S3RYZnVMajlTaC94WUxEVWFlK2N4bnBxOSs5YXVEVjdkdWRMV1k5YmRpVW96
VjZiUGl1YzYzY2VQRytuVFpIeGU3TDhmcVBHbmEKdEgyeXJiWnAydlpzTFZ3L3RpZnQwMm5idWJY
bHh2S1R5aHV1ZDJ2SzcyL2JjTDFqNDVQMjk5ajhrNllONnoxV2wxbmx6Wm8rcWZ4NApiYWt4czg4
Kys1UlYxc2NZMlJiZk9kTk14clozSVRGVEtqLzRyNy9PeGF5anY5eGdsYXRxZE5hKzN0YmI4WXR2
eTFYRm9qSTd1c0R4Cnh4OC91b25yMTY5UHQ3akZMZWJuaVlaek5OS3VjNTNycEJ2ZThJYnBPOS81
VHBrVzV4UzgrTVV2VHJlODVTM241ejNoaEJOU1BucVMKWHZheWw2VmIzZXBXODYvM243ejYxYTlP
SC8zb1I5T0pKNTZZSHZuSVI2YjhxMHFLZnFwUGZ2S1RVLzRWTzkzMHBqZmQ0cHlEU2V1Ywp0STRX
WlV5cVM3L2NlRDUwK2Z1Ly8vdVVmNWxLbXpadFNvOS8vT1BUbi83cG53NFhTZE8yWjVwOXJHRE03
Q29GNUJmQytVLys1RTlLCndoakc4UVZWaDhXc0svK3lsdjdvai80b1BlMXBUMHYzdmU5OXkvTllk
d3p2ZmU5NzA0RUhIbGk2YlAzMHB6OHRYZmtPT3VpZzByV3YKeGswK0VwTnVlOXZiam5aQnEvV0t4
Ly84ei85TXQ3Lzk3ZE1mL3VFZnBtdGYrOXBsVXY0MUxEM21NWTlKTDNyUmk5TGpIdmU0ZFBMSgpK
ODh2TXZULzRBYy9tUEt2c3VubU43LzVmT3pHL05lOTduVlRKRFg3N3J0dnVzMXRibFBxdkppa2VE
Rm0wK2I5NWplL21aN3lsS2VrCkp6M3BTZVg5RVBzbHVwUEZOdi9QLy94UHV0Lzk3bGU2UWI3Z0JT
K1kzNzVwNi9yNHh6K2VIdmpBQjViMS9lM2YvbTNwVmhsZE1rNC8KL2ZTeTdLUVlXMGc4eDhMeGZu
M3BTMSthWHZHS1Y2VDQvSWk2eGZERkwzNng3SmYvOS8vK1gzcis4NTlmOXYwWHZ2Q0ZSY1htWXZa
bApsRG1wenRFTkpiWTk2dkhVcHo2MTdPK0lsWGg5MmpCdG05NzV6bmVtNkNJWlhWWHprY3F5ZUx4
WG9pdmlmL3pIZjVUeGFmc2dKbzV0ClQxbTQ5OTlpM3kvRDJKNjBUMlAxWTU4YlkrL2Y2S1o1cld0
ZHEzd2V4WHJlOWE1M2xXNDlqMzcwbzJOMDZ1ZFVtZGo3YnltZk5jTnQKbXhYUFVWeVU4N3UvKzd2
cGlVOThZcnJMWGU1U1lpQStFL0lSZ1Y1dGZ2RTA1bi9HTTU2Ui92SXYvN0w4Q1BZWGYvRVh2NWpZ
ZXphcwp5Nno0bWpVOVZyMWNNZE9yNXRTbjIrSTdaMmdTaFU5Nkx3NHJOU2xHeHl3bXJYUFNPb2Js
VEZwdVZqekhPc1ppWW16YTJEYU1UWnYxCitUQnBPNGJiT2h4ZnlHZlc4SDJmY29aaklMRGlBc011
V1AwSzNlaEdOK3B1Y3BPYmRIR0lONytwdWppOG41T0dNa3QwNDhvTjBTNDMKT010NC9wV2l5dzJv
K2NWenc2ckxYNFR6NC8wbmh4MTJXSmUvS01wTCtSZklMdmRoTFlmMjg2OENYVzVRZHZtY2hTNmY4
TmFOcmJPLwpqdjY2Ni9QKzlPVW9ZNnd1dGN4NEhMckVhOUd0TGY5Q0gwK25EdjM2eGt4ajltUGJN
Nm1BM0JqcmZ1VlhmcVhMWDVUZFp6N3ptZTU2CjE3dGVGK1hGTnMxYTE2dGU5YW91dWxYRUVQc25K
NWJkTzk3eGpqSWV5K2FHV1plLy9NdDQvSmNiK2x0MDZidkRIZTdRUGZ6aEQ1K2YKL3Y3M3Y3L0w1
eGpOajA5N2t2dGxsN2pZZi8vOXU1ZS8vT1hkaGcwYjVtZU44bkovOXpJZWRZcnR1OU9kN2xUR0ov
bm5CbFNYejNPYQpYejYyTzUvek5EK2VrNlhTZlNIS2luVkh2SThOaXpFYm0vZU1NODdvZnZWWGY3
WDdwVi82cGU1OTczdGZsODhMNmg3ODRBZDNoeDkrCmVKZVQrQzdxRlYwZzh4ZE9lVCtNcmV2Y2M4
L3Rqanp5eVBJWCt6azNHTHFqampwcS92MGEyOU9Qc1lYR2M3am5jOGE2VDN6aUU0WGsKdWM5OWJw
ZlAreXJQYzhKVzNxczN2dkdOUy8zejBkVXV1aGRPZXorWGhRYi9MV1pmVHF2ekQzN3dnOUpOTUJ4
elV0Ujk3bk9mNjNJaQoxK1hHOUh4cC9UZ2UyNlpZSUNlODVhOHVITzQ1R1N5alkvc2daaGpibnJx
Ky91TmkzaStUWXJ1L1QyTzlZNThiQzNuL3hudXAzKzAyCnRpZTY3ZFpoV0Y1OXZUNHU5Yk5tdUcw
TGllZWNFSGM1K1NoRjU2T1k1WDBTNzV0ODRaUmFuUzBlNDdNbzRpT0czUCsreko5L2pDamoKL2Zn
WTFtVldmTTJhdnR3eFV5cmMrKy9MWC81eTJaYndxTU55ZitjTVRhYTlGMnY1L2NkK3pJeFpqSzJ6
djQ3K3V1UDUySEt6NG5rcwpKcVpORzl1R3NXbFIxN0hQaDdIdGlHWEhockhQckVudmUwZEFobW1j
OFZVcGNJOTczS1A4UWh5L0lzY3YwZlZxUTlHTkt6ZHdJcEV1CjlmNzV6MytlVGozMTFQbVRuZU9r
NERwdDBvYlY3a2k1TVZ1T0R1U0dhZm5GYmErOTlrcHh0WTM0Rld2V091czZKcTAvWHF2VGw2T00K
V1hXcGRSaTYxTmNYOGxqclcrZWRaaisyUFhYWjRXTk9Bc3FSaVBnRit5VXZlVW5LamQvMGtZOThK
QzFtWGYvMmIvK1c0aGZ1M0NBcApxNDl1QzQ5NHhDUEtMODJmL3ZTbnkydS8vL3Uvbno3ODRRK1hY
MkhqaGR2ZDduWXBONjVMOTQwWWp6TGp5TW0wSVg1dGpnc2J4RkdKCjNKZ3FSeTNpeUUxY0hDR0du
RUNWWCtSendsSEd3K3p1ZDc5N2VSNy9UZktQb3lSeEJDWTNUTXQ4VWIrNkRmRkNIQVY1MXJPZVZV
eCsKL2RkL2ZiNzhtRy9Tc0JpenNYbmpLTXd4eHh4VDNrZjN1dGU5MGk2NzdKTGlNVGRveWhIQnFG
Y2NiWW9oOXRmWXV1SkNBemx4S2V1TAppMGxjODVyWExPL1hPTXJTSDJxTUxUU2VvMDZ4VDJ1M3pL
alQxNzcydGJMS09HSVRSMWx5Y2x2cUhVZElQdi81ejA5OVAvZnJFYzhYCnV5K24xVGwrdGM4TmpY
VHZlOSs3SE9tS283SzVFVjJPUnA1MjJtbkRZb3Z6dEcyS21lT0kxQ2MvK2NsVTdlTElSNDJ4c1gw
d2EzdXUKVXBIOHdtTGVMNU5pTzlaWjkybGQvN1RQallXOGYvTVBVbHVzYi9mZGQ5OWlmRko1dGR6
NnVKVFBtdUcyTFNTZTMvNzJ0NWVqYmxGdQpmQmRGZCtBNCtoT3hNQnppY3lmaU5vNkV4cEIvV0V1
eGZQNHhaampyVlQ1RFpzWFhyT25MSFROWHFmQld2TERRMkJudW4ybnZ4V2xWCnFlV01XY3hhWjEz
SHNJeXg1Y2JpZVN3bXhxYU5iY1BZdEZtZkQyUGJNZHptNGZqWVo5YWs5NzBFWkNob2ZGVUs5Ti8w
MGZpSXc1SjEKaUdsMWV2NzFPTVVYendNZThJRDBrSWM4cEh3eFJOLzhhVU5kTGhxMDBiM3IrdGUv
ZnZtTGhtRmNsU1FheXJQV1dkZlJvb3haZGVuWApvZS9TZjMzVzgrSDI5TWY3OW1ObTA4clllKys5
NXlmVmJuUFJLRi9NdXFMclVuU3Bpc1NqRHNjZGQxeDVtbitGSzQ5eGZzLzU1NTlmCkxqY2NMMFFE
TVAreVU1S1VHanZSbDNqUzhPWTN2em5sWDlOTEl6YVMyZWoyczk5KysyMHhheVNtMGRqbzkzZU85
Zld0aHY3UlFJNkcKUjF6ZExZYm9NbEVibFAyVmg5SFRuLzcwOU4zdmZqZEZJbnkzdTkydFhDMnVQ
MDg4WDR6WnJIbUhkWTF5KzBNZGo2UjhLZXNhWG0ydApPaTAwbm1QK2FNeUhTU1N1VVlmb1JsQ0gr
SUtQeG1JZFp0V3h6aGVQaTkyWFkzV09ldmJQQTRvRU5wS242TW96SEdadFV6VGdJem1NCjdxUXh4
SThqOVdwL1k5dTNrTzBaMW1XeDc1ZW9lL3oxaDdIeC91ZkdRdDYvL2ZWT2V6NHNiempmVWo5cmh0
czJISS8zUWorZW83dG4KZEZlc1E4UmhkTytjTkVUanIzNVcxZWx4NWNmaDUwdWROaXc3eHNmaWEy
ejZjc2RNcmVOeVBFYTkrME4vdkI4N01VOU1xOVBIM292OQo5ZFhuZGJreGkxbnJyT3VvNjZ5UHM1
YXI4dzBmeDJKaWJOcllOb3hObS9YNXNOVHRpTzBhKzh5YTlMNy94VGY0VU1VNGdlMVU0STF2CmZH
UDVSU2t1MXhjTjBuakR4WmZFcEtGK21QenNaejhyUjBxaTcvdWtZV3lkZFIyVGxvdlg2dlRsS21P
c0x0UHFzSmpYYTMxbkxUTnIKZTJZdEg3L1lSU01oZnRWYXpMcnk0ZVYwMWxsbnBUaS9vMzV4UjMv
NVNFaGlXZ3l4enZnVlB5N2ZIR1hjK3RhM1R2RXJhdnd5RkluSgoyTkdQdUN4MEhEV0wrSWtqSE5H
Zk94cG9mWmNmL2VoSEtmNWl2djdyL2VlVHRqK08xRVQvN3pnZlo4ODk5MHh4cnRPa0ljNFp5ZDJN
CnlxL2ZVWSs0YU1Od1dJelpZdWFOY3FLUjA5K1cvdlBGcm10WTd4anZyMitoOFZ5UEpyejJ0YTh0
amZKK28yOVl4bUxxdUpSOXVkQTYKUjh4Rllqb3QyUjNicHRnSGozM3NZOHM1YmhFdnVjdFdPVW9X
MnpxMmZVdlpucTE1djFUNy9qNnRyMDE2WE1qN2Q5Snl3OWNXV2w0cwp0OVRQbW1HWms4Ymp4NEk0
OXllU3pFaUU0NGVzK3VQS2NQN2NwU3Q5NlV0ZkdyNjg1UEZaOGRXZnZ0d3hzK1JLVDFod01mdHl1
UGhDCjM0dXhYQzFuekNMbUcxdG5YVWZNTnh6R2xodk9XOGZIWW1KczJ0ZzJqRTFieU9mRFVyWWp0
bWZzTTJ2Uys5NFJrQm9GSG5jSWdiaGgKWVhRVCtiTS8rN1B5Qy9iWlo1OWRHcDNUTnE1Mno0cEQ0
Qi82MElkU25DUlZoemhoT3hxQ3M5WloxMUdYR3o3VzZjdFJ4cXk2RE10ZQp5bml0NzZ4bHg3Wm4x
ckl4L2N3enp5eS9ZdWZ6RDByQ09NMS91SzQ0a2hCMWpKT1A2eEFuSjhiK2ltbDF5SmQxTHZjOCta
dS8rWnNVCnorUElXSFREaWk1TjAzNmhqR1hqaUZsMFNZbWJXOFlKKy9FWEYwU0k3akIxaUYrbUk1
SHBuMFJmcDQwOTVuTXJTa015RXBGKzk2dTYKVEJ5bWpySWlDWW9Ua0NPVy8velAvN3drVkhXZSty
Z1kvOFhNVzljLzdYRTUxbFZqYktIeEhJMjJlcEw1V0FPZzFua3hkVnpzdmx4bwpuYU11Y1dXelNK
U0h2M3JIdElWc1U4VEpKWmRjVXJyQXhjVXg2akMyZll2ZG5yck9wYjVmNnZKMW45YnhhWThMZmYv
RyszbHNXR2g1CnNZNmxmdGFNbFYrbnhZVUI0bUlVY2RKdkpJbjUwdTUxMGxVZTgvbEJwUzc5ejQx
b21OVnVtVmRaWU1ZTFkvRVZpL2FuYjR1WW1WRzkKQlU5ZXpMN3NyM1F4NzhWWXJwWXpaakZyblhV
ZC9YckU4MW5MVFl2bnNaZ1ltemEyRFdQVFpuMCt6TnFPNFhZUHg2ZDlaazE2MzB0QQpobnJHbXd2
RUd6TU9hY2V2MnBPRzZHb1IvUkxyRU9QOTdoY3hMYnJWNUpPY1NnSVJWMk9JSWZxTHg4MlJEajMw
MExyb0ZvOXhxUEhiCjMvNTIrVkRLSjJXVlh4V2pnUmlOdnVoM0hWZkVpaTR6a1pSTVcyZC9IZkVG
TkJ6NjA1ZWpqT2l1TkswdXc3TDdMakV0R3N4aDFMY2MKTHRPdmIyelBtSDAwa3VPWGxrbG13L1hX
OGVnR1ZZZm8zeHJkNUtJcjA2eDFSU09zZG51SW94Znh3UnlOOVRwRWQ3bm9OblhITzk2eAp2bFN1
U0JQZEphSkxSQndGaWZOQW91dFdkTE5iU0NNMnp2ZUlQcTFoSHQyZzRvaEsvTVZWaVdLYlkzbytN
YjJVRjMyK28wRVp2eTVkCmZQSEY1YldoZjd3WTNRbWlHMDJzTXhLdk9rU2lHN0VXamNDNE9XZkVZ
SndQRXZOUEd4WmpObXZlc08xL1FVWkRxcjR2by95NjMrSzEKV2V1S1pjT2pEdUZRajB6RmEvMFlX
Mmc4Zis5NzN5dXIrK3huUDFzYTVPRVY3L2xZYjhSMDFLLy9tVENyanJWdThiallmVG4yZVJEcgpp
MlM0RG5HVnEvZ01pdGlNb1IvSHM3WXA1by9ZamZyOTh6Ly9jMGxJNDdVWXhyWnZJZHR6eFZxMi9E
OCtueGI2ZmhuR2RuK2Z6dnJjCldNajdOOTRia2ZCSE9YSE9SSHdlOXo5ZmgrVnR1U1ZYak5XWWpi
SEZmTllNdDIxV1BNY1Z6NkkrOGRrVGlXYS9pOVN3WHZGNUYwYysKNHpHNjE4UTVhM0YxcjdpeVl3
ejkrSWp4WVYzaXRiSDRHcHUrdFRFVG4ydHhSQzUrbUprMDFPL3YrTkd2RHN2OW5SUHI3WnZNZWkv
Vwplc1JqUDJhVzQ3dTRINCt4L3JHNmpNWHpXRXlNVFJ2Ym4yUFRabjArakcxSHZnaEErWTdLRndP
SlRaNDRUUHZNbXZTK2o4YVhnY0NLCkNlUysrVjMrdGJsY1BTTTNFcnQ4U2NJdU4ycm42NU12d1Zp
dTNCUlgxc2tOdkM2dWVKTlBPTzN5cjlSZHZueGtsMDgyN2ZLSGZsaysKcmp3U1Z4VTVMRjlaS2Yv
cVhhYm5EOHd1TjVybTE5ZC9raHQ0WmJuOEppOVg5OGw5Lzd0OHlMcThsaHVxOHpjcHpMOVdUVjNu
Y0IzOQo5Y2Z6NGZTdExTTjNPNWxhbDM3WlE1ZmNEYTFjT1NwL1luUzVVZDNsaGw5Lzl2bm4vZnEr
NlUxdkdyV1BoYVp0ei93S2UwL3lKVkxMCkZaSHk1VnpMRlc3eVNkMWQvc0tkbjJQYXVtSmJjakpa
OWt1K0ZHSzVTdE5YdnZLVmNrV3R1SXBaM0V3eWQ0R1l1RTI1Y2REbEpITysKak5pK2FkcytQOU9V
Si9rTHRvc2JOdVdqYTJXTzNDanNjb0xRNVM0WFhVNU11cHc0Rk9OOFV1bFY0akkzOE9mWG1ydHFk
UG5TMGZQago4U1N1NnBYUE5lbnlsK3NXcjg4YVdZelp0SG5qYWsxeGhiR0REejY0Tytta2s3cDh5
ZHh5QmFtSWxYelVvVndGSzNjQkt2NzVTNlNMCnErMU1XMWRjcFNwTTRvcFZzZDU0UCtaa3Njdm5R
WlNybjhYMjlHTnNvZkdjR3o4bEJuSVhseTdlci9uU3hWM3UxbFN1akpUdmZGMmUKeDQwcTgrVWo1
OG1tMVhGK2h0NlR4ZXpMc2MrWTNOQW85WXdZZWZhem45M2x4SFgraHF2RE9JNnJpMFZjVDlxbTNI
aWVyMTI4ZC90WApTNnNUeHJadmJIdnE4cE1lRi9KK0dYNjJSR3ozOStsQ1BqZG12WDhqRG5ORHBz
c1hNZWlpVHZrSVF4ZFhBNG9ycThYUUx5K3VWRGdjCnR1YXpwdjk5a2hPWG1mRWNuMlB4WHFsL09j
RW8zMm45OTN5L2ZqbDVMbGRMaS9uanFuaHhwYjBZaHZHUms1TXR2dHRpZldQeEZldVkKTlgxcllp
YXU4SlYvdU9ueWZaQ2lxQzJHZlBTNjNJUTF0aW5lNzY5NzNldksrejgrMStLMTVmck9HY2JlMkh0
eGl3cm1rV0hNVExOWQo2dmY5MkhLejRubGFUTVEyakUyYnRnMngzTmkwc2MrSHNlMEk3NXhnbDZ2
N1JSblRobW1mV2NQM3ZRUmttcURYdDB1QmVzbmQvTXRMCnVhVHVySTA0NTV4enRwZ2x2dmlqZ2Rw
UFdtYXRjN2lPTFZhWVI0YlR0NmFNV1hVWmxyMlU4V0Y5WjYxajB2YU1MUk4zcmUvNzl1ZGQKN0xy
eXIzR2x3ZHhmUi85NS92V3lQN3JGWlhTM21MQ0lrZnlyKy96Y3NUK3FWeitabXA5aHlwTmh2ZnJy
bkxMSTFKY1hZN2FZZWFjVwplT1dFclZsWE5WdHNQRWNpVW9jb2Y5YXdtRG91ZEYrTzFUa2FnTkVn
elVkajV1TmlWaDFuYmRNYjN2Q0crWWIzY0YxajI3ZlE3ZW12CmN4aVh3L0grdk1QbmRaOE9YeDhi
SDN2L1JvTzcya3phMXdzcGJ6ay9hNlp0Ui93SWtvL1FkUG1DRlYwazFQbkliUGZ3Zk1udlNGNm0K
RGZtb1hSZDFXK3d3Szc1bVRZL3l0aVptOHRHTnhWWjVRZk12WkY5T1d0SFllM0hTL01OeUpsbk1X
dWR3SGJXY1djdk5pdWV4bUJpYgpObWtiYXAzR3BrMzdmSmkxSGZIRFNlNFdYSXVZK0RqMm1SVUwx
UGY5bWhqSkdhcUJBQUVDQkFnUTJBcUI2RVlYNXhmVnJubGJzYXJTCjFTUzYrY1ZWa3ZMOUZCYlVi
WEJyeXJQczRnWGlacHV4YitKbW92MGhybkNYajI1TXZMeHVmNzdGUHA4Vlg3T21MN1k4OHhNWUNz
UU4KSnVNOHhmNzVsbldlNkI2M21NOHNWOEdxY2g0SkVDQkFnTUFTQmZLdmxPVWNvRGl2Wld1SHVI
QkMzSHNscnQ2VXV6UkpQcllXZEJzdApIeWVneDBVcTRvSVNjUVhGT0ljanpvV0lDMGpFaWNETE9j
eUtyMW5UbDdNdTFyWHpDc1E1aW5IVnZPR3dsTThzUjBDR2lzWUpFQ0JBCmdNQWlCWExmK0hMenhs
Z3NMcElRSjNzdWRZaVRQZlA1YitrKzk3bFB1Wm5qVXRkanVXMHZFQmZpaUV1OTV5NVY1YWFieTUx
NDFDMlkKRlYrenB0ZjFlQ1N3TFFTVzhwa2xBZGtXZThJNkNSQWdRSUFBQVFJRUNCQ1lLT0F5dkJO
WnZFaUFBQUVDQkFnUUlFQ0F3TFlRa0lCcwpDMVhyWEZVQytlb1RLZTRmVUlmaGVOdy9vSDl0OVRy
ZmFueU11c2FOZ3BaajJKNjJlMnUyTjY3WG5pK0RtT0lROGF4aGxtKys1T2ZVCjYrRFBXcmZwQkFn
UUlFQ0F3QlVDRWhDUnNFTUx4QTNxNGtUQnVQbGJETVB4ZkErQmNyT3ZkNy83M2F2ZTRUM3ZlVS9L
OTFkSWIzdmIKMjdhNnJ0dlRkbS9OeHI3eWxhOHNkME9QQlBUb280K2V2NW5ocEhVdXhQYzV6M25P
ZkN4TldvZlhDQkFnUUlBQWdka0NFcERaUnViWQpqZ1h5ZGRITFhZUHJKZ3pIODAwUXl4MVM2L1RX
ajNFMzUvNGR2WWZsOTZmZjczNzNTL21tZDhOWmxqUytITnZkcjF0VVlqaStwSW90CjQwSnhTY0I4
UTdoeTk5NThRNzF5b21oY0lyQS85T3U4RU45OG84eXJYSEt6dno3UENSQWdRSUFBZ2RrQ0VwRFpS
dWJZeGdMYitsWTAKYzNOelcxekdjdGI0dE0zTk40dWJObWxCcncrWHp6Y0pTZzk2MElOU3Zydjd4
T1VuVFIvV2ZlS0NDM3h4YTlZMXJOdHdmSUZWMkthego1VHU2cG54VHBmbDlmOFFSUjJ4UjNxUTZ6
ekxKZDk5TytZN2JXNnduUmhZVHcyUHpEbU9rWDlEWWN2MzVQQ2RBZ0FBQkFxdGR3SDFBClZ2c2Uy
b0hyZDhJSko2UzRoR0g4VXYydi8vcXY4K2RweEsvU0wzemhDOHUxcHFOeGZ0T2IzalE5N1dsUFMx
Lzg0aGZUMy8zZDM1VUcKWVB5U0hkMXI0dWpCVVVjZGxaN3hqR2VrYUJ6R05maWptOUpMWC9yU3RP
ZWVleTVZTDhyTWR6Qk8vL2lQLzFpdXZmL1d0NzUxL2tZNwpILzNvUjlPWHZ2U2x0SGJ0MnZUZTk3
NDN4Zld1YjN6akcwK3R6M0hISGJkRnVkT1dmL1dyWDUxaTJvOSs5S04wNXBsbnBsZTk2bFZiCjFI
blM5Rmh4TktxZitjeG5scTVZZSsrOWQzcmYrOTVYYm5vVjArSjhoNWU5N0dYcGxGTk9TZm1PcGVr
MXIzbE51dFd0YmhXVEpnNWoKMjMzQkJSZE1kUjNXTFc2Nk5keVdxT2UwL1pMdkhKemlKbDR4eisx
dWQ3djAzT2MrdHlRS1liRFhYbnVsNXovLytTbmZWVGc5N25HUApTM0gwWXRJd1ZyKzRXVkowcTh0
M1hDL1g2ZDk5OTkxTFRQVFhNOXlHS0R1R2FiNXhubERFeFlrbm5wZysvL25QbDNtbnhYQ1plT1Yv
CmNWT3lxTS8xcjMvOTBnVXMxckYrL2ZweWY0ZTczT1V1WmE1cE1SSVRZeDg5NWpHUEtlK0hyMy85
NjJtLy9mWXI4WGZyVzkrNjNQUnUKc2Z2OHltcDVJRUNBQUFFQ0t5ZVFmMVV6RUdndWtIOTk3bkpp
TVYvdVU1N3lsQzQzL01yNEhlNXdoeTRuRytWNWJraDMrZDNSblh6eQp5VjFPUnJvRERqaWd5NDMv
TGplNnV5Yzg0UW5kdDcvOTdTNDNzTHQzdk9NZFpmNzhDM0tYei9ub2NzTnVmdDI1WWRrZGNzZ2hV
OGV2CmZlMXJkL211bmwxdUtIYWYrY3hudW53ZDkrNnd3dzdyb280Yk5tem9ja0xUZmVJVG55akw1
NFp5bDg4bktjOG4xU2NuUVBQbHhKT3gKNVdONmxQT2lGNzBvbms0Y2h0TnZkS01iZFRlNXlVMjZm
TjM1TGpjOHUzeGVRL2ZJUno2eUxCdmJmdGU3M3JYTEoxSjMrYVpVWFc2OApGNjk4NHZURWRZOXRk
eXcveTNWWXQvNzRyT1hQT09PTUxuZUg2L0w5RXNxK3pCY0c2UEo5RTdyRER6Kzh5d2xVbDVPbkxp
ZWhaZDlQCnF2K3M5Y2NHNXpzVWR6bHBuTGp0OWNWK25lTzFNZDk4RW51WGJ3N1hIWGpnZ1dYeHNS
aXU2NC9ISC96Z0IxMCthbEsyTmVMNmM1LzcKWEpkdld0YmxtOHlWMldiRnlDdGU4WXJ1aVU5OFlw
bjNxMS85YWpFSm8zd3hnbTZ4Kzd5c3hIOEVDQkFnUUdDRkJYVEJXcm5jYjZjdQpPWTU2bkhycXFl
Vlg2b0I0MUtNZVZicXhmT1FqSDBsZis5clgwczF2ZnZQaWt4dmI2ZTF2ZjN1NXEyd2NDYm5CRFc1
UWpremM2MTczClNybGhWdWI5d2hlK1VPNUVHd3RFRjVwSFBPSVJLWDUxL3ZTblAxM1dzWkQvSHY3
d2g2YzczL25PNmZqamowOHZlY2xMVW00Z3A2akwKTHJ2c2t1SjhpV09QUGJhc1p0OTk5eTFseHNp
aytzUU55UHJEMlBKMXZqVnIxdFNuRXgrSDArOXhqM3VrMjl6bU5pa25WZVhHVi9HcgplQXc1Q1N1
LytMLy8vZTh2TnpHTEl3bHgxYWE0U2RhMFlkcDJ4NUdsaGJnTzYxYkhaeTEvM2V0ZU54MXp6REhs
NkZYc3kzQ0t4OXhZClQwOSs4cE5UT01lZG9HT0lmVEVjWnExL09QL1llSzF6bldlYWI5ejlOWTYy
NWMvc011dTBHSzdycVk5eE4rdWM3S1Y3My92ZUphNXYKZWN0YmxpTjhjVVRsdE5OT0c0MnhXRWZF
ZjA1Nnl1cWkvT2dDRmtkcFlwMUwyZWUxWGg0SkVDQkFnTUJLQ1VoQVZrcCtKeTkzLy8zMwpUOUg0
ZmNBREhwQWU4cENIbEFiV3VuWHJVajRDa1laZG1CNzYwSWVXYmlkQnR0dHV1NVdyVmxXK2ZHUWtI
WFRRUVNYeHFLL1Y1Yi84CjVTL1hsMlkrUmxlbU9rUURNWWJvemhXTjArZ085dDN2ZnJja0p0RW9q
MHUxMW1GWW4vcDZmWnkxZk13M2JBRFhaZXZqY0hwL1BCcnEKMFVVbmhxaGJuS1FlWFgzaTcvNzN2
Mys1Nmxja1ZkT0dhZHU5VU5kK1hhS01PcjZRNVdQZU9uOHNHd2xUZjZqamtVUU5oNFdzZjdqTQp0
UEYrSFdLZS9uamZ0MDZyMDZmRjhLUnlZcG5vd2xlSFNDQWo2ZnI0eHo5ZXlodUxzVWcrb2p0YUhm
SlJ3TkwxS3NhWHNzL3JlandTCklFQ0FBSUdWRW5BT3lFckpLemU5OFkxdkxFYzI0dEtta1N6RUwv
WG5ubnR1T2Q5aW9UeHgwdTVaWjUxVnpuZUl2dkV4eE9WVzQwaEkKVEZ2S0VMOVlSOE04YXlaZDV3
QUFJQUJKUkVGVWZ2R09JUnFIOFd2MWExLzcydlQ2MTc5K2k4YmdRdFkvYS9uYW9KMjJybG5UNjNK
eApQazM4T3ArNzk5U1hGdlhZMys0Zi8vakhDM0lkMXEyT0wyVy9SQU85TGg4Vjd6OGZic2hTMWo5
Y1J4MGZLNmZPTSsxeFVnelhveFhUCmxvblg0NXlVT0djcC9tSVlpNUduUC8zcDZZRVBmR0JKVmlM
aGpTU3pKc2xidTg5TDRmNGpRSUFBQVFLTkJYN3hrMXpqZ2hXM2N3dkUKemZTaWEwMWNKalZPNkQz
NzdMTkxkNUxvd2hRblpNY1ZqT29RamMzY2I3Nk9idkdZejkwb2plNDRRYjBPa1N6RXljY3hiU2xE
bEI5SApPZUtTdlhIeWVad0VIU2RGTDZXaHVwRGxhNWVlYVhXZE5iMHVsODlkU1IvNjBJZFNuSnhk
aDNENDRBYy9XRWRISC92YnZWRFhZZDNxCitFS1hINjNReU1UbFhIK3Q4MGh4RXlkTmkrR0pNdzll
ek9keWxLUTVqdGJOaXBHNGowMmNoQjRubStmelJkSUhQdkNCK2JWdDdUNmYKWDVFbkJBZ1FJRUNn
b1lBRXBDRzJvbjRoRUkza2Q3N3puZVdGT0w4aW56eWREajMwME5JZEs2NWVGZDJ5b2p0V25NZng2
RWMvT3QzdwpoamNzODhhbFUvdGRvTzU3My91bVNGcmluSUE2eE0wRzR5cFZkN3pqSGN0TGwxeHl5
Ulkzb0J1T3gweXgzanJFdVI5UmZ2UzMvOTczCnZsZGVqaHZaeFhMUm1JOHVUNUVVNVJPaHkzTDkr
dFIxMU1kWnkwYzNubndpZlVtaW9vRTVISWJUbzZ3NDk2QU9NVjdMZjlqREhsYXUKS3BaUDVpN0pY
VnhwS3M2bnFPZlQxR1g2ajlPMmV5R3V3N3IxeCtQS1c3UDJTOXlSUGhLa09rVGpPc2JqOVJocTNm
cnoxSGtYVXIvegp6eisvN0tPK1YxMitQdmJySFA1anZyRk1yQ3YyZit6N2FURmMxejE4ak1TNERu
SFZxNGo1aU5OWk1mTFVwejYxM0tzbTRqa1NsbjVYCnJsbjcvT0tMTHk3M1Fmbld0NzVWaS9aSWdB
QUJBZ1JXWGlELyttY2cwRndnSCtFb1Y0REtsN1R0OHFWdHU4Yys5ckZkYm1pV2V1UkcKZnJscVVI
NTNkUG55cmwxT0tNcnIrUTdnWGU2eVVxYmx5NS9PMS9rclgvbEt1WXBWWEUwcS96cmM1ZTRxWGIw
YVZUNjYwdVVFcDF3NQpLRjkydGNzSnpSYmpjZldsZkhTank4bEc5NElYdktCY2VTbGZqcmZMeVVa
WmYyN0FsZmx6MTVjdUp5WGR4ejcyc1ZLSGZINUZsKzhtClByRSs4eFhMVDhhV3p3M3M3bG5QZWxh
cFc2eDcwdFdlK3RQZjlLWTNsYXM2SFhua2tWMysxYnhjRlN5ZmxOL2xjMmVLWVpUNzVqZS8KdWN2
ZGU4bzY4N2t4eGFOZm4vN3pzZTJPK2NaY1kzcS9ibEgzNGZqWThuRWxxTGd5MmNFSEg5eWRkTkpK
M2Vtbm4xNnU0Qlg3UEI5eApLbGZCZXQ3em5sZTJJeWNiNVVwU1VXWi9tTFgrdUlwWHJPOUpUM3JT
ZkR6MGw0L24vVHJQOG8xWXlnbEFXV2RjaFNxdTBIWll2b3JaCnBCZ2VsaE5YL0lvNHpFZjh1bWMv
KzluZDNlNTJ0eTZ1cWhYRHJCaUplSXp0cUg4NVFlL3loUkc2aU4wWXh2WjVYRFVySDducjN2S1cK
dDVSNS9VZUFBQUVDQkZhRHdKcW9SUDVpTXhCb0toQy9JTWN2dVhHdmlyZ253dkNlSFJHVzBTMXIw
azNmcGxVMGppVEVpZXlISDM3NAp0RmxHWDQ5elNhTC9mcXhqT01UUmoraTNIME1jL1lnNkwyWVlX
ejdPZXhrN2IyRFc5R0U5b243UlBTaXVORFZwVzRiemoyMTN6RHZtCk9xemJjSHpXOHNPNkxHVjhy
SDRMV2Qra09pOWt1Vmt4M0Y5SEhJVzY3VzF2bTNKU1ZZNmtUZHJmMDJMa3hTOStjWXE3dE1jUm9q
Z0MKRSsrWmZJbmhGQmRudU5PZDdsU0tHZHZuNTV4elRybFFRNzgrbmhNZ1FJQUFnWlVVa0lDc3BM
NnlDUkRZS1FScUF2THlsNzk4VWRzYgpOMnVNWkNNZmVkdGl1YmpNZE56OE1jNEJNUkFnUUlBQWdl
MU53Rld3dHJjOXByNEVDR3hYQW5Ha0pPNTJINWQxWHV3UUo2QS8vdkdQCkw1ZFVqcXVieFZHU09H
SjF6M3ZlVS9LeFdFenpFeUJBZ01DcUVYQUVaTlhzQ2hVaFFHQkhGTWpuWDVRYkxNYTJ4WW41Y1pH
QXhReHgKcWQyNFJIVmNHdm4ydDcrOXhHTXhlT1lsUUlBQWdWVXBJQUZabGJ0RnBRZ1FJRUNBQUFF
Q0JBanNtQUl1dzd0ajdsZGJSWUFBQVFJRQpDQkFnUUdCVkNraEFWdVZ1VVNrQ0JBZ1FJRUNBQUFF
Q082YUFCR1RIM0srMmlnQUJBZ1FJRUNCQWdNQ3FGSkNBck1yZG9sSUVDQkFnClFJQUFBUUlFZGt3
QkNjaU91Vjl0RlFFQ0JBZ1FJRUNBQUlGVktTQUJXWlc3UmFVSUVDQkFnQUFCQWdRSTdKZ0NFcEFk
YzcvYUtnSUUKQ0JBZ1FJQUFBUUtyVWtBQ3NpcDNpMG9SSUVDQUFBRUNCQWdRMkRFRkpDQTc1bjYx
VlFRSUVDQkFnQUFCQWdSV3BZQUVaRlh1RnBVaQpRSUFBQVFJRUNCQWdzR01LU0VCMnpQMXFxd2dR
SUVDQUFBRUNCQWlzU2dFSnlLcmNMU3BGZ0FBQkFnUUlFQ0JBWU1jVWtJRHNtUHZWClZoRWdRSUFB
QVFJRUNCQllsUUlTa0ZXNVcxU0tBQUVDQkFnUUlFQ0F3STRwSUFIWk1mZXJyU0pBZ0FBQkFnUUlF
Q0N3S2dYbVZtV3QKdG9kS3JWbXpQZFJTSFFrUUlFQ0FBQUVDQkFpc0tnRUp5TmJzanE3Ym1xVXRT
NEFBQVFJRUNCQWdRR0NuRTlBRmE2ZmI1VGFZQUFFQwpCQWdRSUVDQXdNb0pTRUJXemw3SkJBZ1FJ
RUNBQUFFQ0JIWTZBUW5JVHJmTGJUQUJBZ1FJRUNCQWdBQ0JsUk9RZ0t5Y3ZaSUpFQ0JBCmdBQUJB
Z1FJN0hRQ0VwQ2RicGZiWUFJRUNCQWdRSUFBQVFJckp5QUJXVGw3SlJNZ1FJQUFBUUlFQ0JEWTZR
UWtJRHZkTHJmQkJBZ1EKSUVDQUFBRUNCRlpPUUFLeWN2WktKa0NBQUFFQ0JBZ1FJTERUQ1VoQWRy
cGRib01KRUNCQWdBQUJBZ1FJckp5QUJHVGw3SlZNZ0FBQgpBZ1FJRUNCQVlLY1RrSURzZEx2Y0Jo
TWdRSUFBQVFJRUNCQllPUUVKeU1yWks1a0FBUUlFQ0JBZ1FJREFUaWNnQWRucGRya05Ka0NBCkFB
RUNCQWdRSUxCeUFoS1FsYk5YTWdFQ0JBZ1FJRUNBQUlHZFRrQUNzdFB0Y2h0TWdBQUJBZ1FJRUNC
QVlPVUVKQ0FyWjY5a0FnUUkKRUNCQWdBQUJBanVkZ0FSa3A5dmxOcGdBQVFJRUNCQWdRSURBeWdu
TXJWelJPMERKYTlic0FCdGhFd2dRSUVDQUFBRUNCQWkwRTFqVApwWlQvR1FnUUlFQ0FBQUVDQkFn
UUlMRHRCYTQ0QXRMSlFiWTl0UklJRUNCQWdBQUJBZ1FJRUhBT2lCZ2dRSUFBQVFJRUNCQWdRS0Na
CmdBU2tHYldDQ0JBZ1FJQUFBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFC
QWdRSUVDQkFnQUFCQ1lnWUlFQ0EKQUFFQ0JBZ1FJRUNnbVlBRXBCbTFnZ2dRSUVDQUFBRUNCQWdR
a0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZwpRSUFBQVFtSUdDQkFnQUFC
QWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pT
RUNhClVTdUlBQUVDQkFnUUlFQ0FBQUVKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdR
SUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkEKZ0FBQkFnU2FDVWhBbWxFcmlBQUJBZ1FJRUNCQWdBQUJD
WWdZSUVDQUFBRUNCQWdRSUVDZ21jQ2FMcVg4ejBDQUFBRUNCQWdRSUVDQQpBSUZ0THpDWE92bkh0
bWRXQWdFQ0JBZ1FJRUNBQUFFQ0lhQUxsamdnUUlBQUFRSUVDQkFnUUtDWmdBU2tHYldDQ0JBZ1FJ
QUFBUUlFCkNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FBQkNZ
Z1lJRUNBQUFFQ0JBZ1FJRUNnbVlBRXBCbTEKZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJ
QUFBUUlFbWdsSVFKcFJLNGdBQVFJRUNCQWdRSUFBQVFtSUdDQkFnQUFCQWdRSQpFQ0JBb0ptQUJL
UVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRSUVDQUFBRUNCSm9KU0VDYVVTdUlBQUVDQkFn
UUlFQ0FBQUVKCmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNRZ0ln
QkFnUUlFQ0JBZ0FBQkFnU2FDVWhBbWxFcmlBQUIKQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFn
UUlFQ2dtWUFFcEJtMWdnZ1FJRUNBQUFFQ0JBZ1FrSUNJQVFJRUNCQWdRSUFBQVFJRQptZ2xJUUpw
Uks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNCQW9KbUFCS1FadFlJSUVDQkFnQUFC
QWdRSUVKQ0FpQUVDCkJBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdn
UUlBQUFRSUVDQkFnUUtDWmdBU2tHYldDQ0JBZ1FJQUEKQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFC
QWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FBQkNZZ1lJRUNBQUFFQ0JBZ1FJRUNnbVlBRQpwQm0x
Z2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSVFKcFJLNGdBQVFJRUNCQWdR
SUFBQVFtSUdDQkFnQUFCCkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNC
QWdRSUVDQUFBRUNCSm9KU0VDYVVTdUlBQUVDQkFnUUlFQ0EKQUFFSmlCZ2dRSUFBQVFJRUNCQWdR
S0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNRZ0lnQkFnUUlFQ0JBZ0FBQkFnU2FDVWhBbWxFcgpp
QUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1FJRUNBQUFFQ0JB
Z1FrSUNJQVFJRUNCQWdRSUFBCkFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdB
QUJBZ1FJRUNCQW9KbUFCS1FadFlJSUVDQkFnQUFCQWdRSUVKQ0EKaUFFQ0JBZ1FJRUNBQUFFQ0JK
b0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdnUUlBQUFRSUVDQkFnUUtDWmdBU2tHYldDQ0JB
ZwpRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FB
QkNZZ1lJRUNBQUFFQ0JBZ1FJRUNnCm1ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JB
Z1FJQUFBUUlFbWdsSVFKcFJLNGdBQVFJRUNCQWdRSUFBQVFtSUdDQkEKZ0FBQkFnUUlFQ0JBb0pt
QUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRSUVDQUFBRUNCSm9KU0VDYVVTdUlBQUVD
QkFnUQpJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNR
Z0lnQkFnUUlFQ0JBZ0FBQkFnU2FDVWhBCm1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVD
QkFnUUlFQ2dtWUFFcEJtMWdnZ1FJRUNBQUFFQ0JBZ1FrSUNJQVFJRUNCQWcKUUlBQUFRSUVtZ2xJ
UUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNCQW9KbUFCS1FadFlJSUVDQkFn
QUFCQWdRSQpFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUpp
QmdnUUlBQUFRSUVDQkFnUUtDWmdBU2tHYldDCkNCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFn
QUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FBQkNZZ1lJRUNBQUFFQ0JBZ1EKSUVDZ21ZQUVw
Qm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSVFKcFJLNGdBQVFJRUNC
QWdRSUFBQVFtSQpHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlB
RUNCQWdRSUVDQUFBRUNCSm9KU0VDYVVTdUlBQUVDCkJBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNC
QWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNRZ0lnQkFnUUlFQ0JBZ0FBQkFnU2EKQ1VoQW1s
RXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1FJRUNBQUFF
Q0JBZ1FrSUNJQVFJRQpDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NC
QWdBQUJBZ1FJRUNCQW9KbUFCS1FadFlJSUVDQkFnQUFCCkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFF
Q0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdnUUlBQUFRSUVDQkFnUUtDWmdBU2sKR2JX
Q0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JB
Z0FBQkNZZ1lJRUNBQUFFQwpCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlF
Q0JBZ1FJQUFBUUlFbWdsSVFKcFJLNGdBQVFJRUNCQWdRSUFBCkFRbUlHQ0JBZ0FBQkFnUUlFQ0JB
b0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRSUVDQUFBRUNCSm9KU0VDYVVTdUkK
QUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVD
QkNRZ0lnQkFnUUlFQ0JBZ0FBQgpBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FB
QUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1FJRUNBQUFFQ0JBZ1FrSUNJCkFRSUVDQkFnUUlBQUFRSUVt
Z2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNCQW9KbUFCS1FadFlJSUVD
QkEKZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFB
RUppQmdnUUlBQUFRSUVDQkFnUUtDWgpnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVD
QkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FBQkNZZ1lJRUNBCkFBRUNCQWdRSUVDZ21Z
QUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSVFKcFJLNGdBQVFJ
RUNCQWcKUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpD
QWlBRUNCQWdRSUVDQUFBRUNCSm9KU0VDYQpVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJ
RUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNRZ0lnQkFnUUlFQ0JBCmdBQUJBZ1NhQ1Vo
QW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1FJRUNB
QUFFQ0JBZ1EKa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1J
R0NCQWdBQUJBZ1FJRUNCQW9KbUFCS1FadFlJSQpFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNB
QUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdnUUlBQUFRSUVDQkFnClFLQ1pnQVNr
R2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlF
Q0JBZ0FBQkNZZ1kKSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lB
UUlFQ0JBZ1FJQUFBUUlFbWdsSVFKcFJLNGdBQVFJRQpDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlF
Q0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRSUVDQUFBRUNCSm9KClNFQ2FV
U3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFR
SUVDQkNRZ0lnQkFnUUkKRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlF
Q0FBQUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1FJRUNBQUFFQwpCQWdRa0lDSUFRSUVDQkFnUUlBQUFR
SUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNCQW9KbUFCS1FaCnRZ
SUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVD
QUFBRUppQmdnUUlBQUFRSUUKQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdR
SUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUlFQ0JBZ0FBQgpDWWdZSUVDQUFBRUNCQWdRSUVD
Z21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSVFKcFJLNGdB
CkFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJ
RUpDQWlBRUNCQWdRSUVDQUFBRUMKQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFB
QVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUVDQkNRZ0lnQgpBZ1FJRUNCQWdBQUJBZ1Nh
Q1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1FJ
RUNBCkFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFB
UW1JR0NCQWdBQUJBZ1FJRUNCQW9KbUEKQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJ
RUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdnUUlBQQpBUUlFQ0JBZ1FLQ1pn
QVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFn
UUlFQ0JBCmdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJ
Q0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSVFKcFIKSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFn
UUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRSUVDQQpBQUVDQkpvSlNF
Q2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlB
QUFRSUVDQkNRCmdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1ln
WUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMWdnZ1EKSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlB
QUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNCQQpvSm1BQktR
WnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdR
SUVDQUFBRUppQmdnClFJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdC
QWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQkFnUUkKRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdR
SUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSQpRSnBS
SzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJB
Z1FJRUpDQWlBRUNCQWdRCklFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dR
SUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQUFRSUUKQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJB
Z1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMQpn
Z2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJ
QUFBUW1JR0NCQWdBQUJBZ1FJCkVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JB
Z1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUoKaUJnZ1FJQUFBUUlFQ0JBZ1FL
Q1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFB
QgpBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFn
UWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFCm1nbElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FB
QkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUMKQkFnUUlFQ0FBQUVDQkpv
SlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFn
UUlBQQpBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFC
Q1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFCnBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFn
UUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUIKQWdRSUVDQkFvSm1B
QktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNC
QWdRSUVDQQpBQUVKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1Fn
SWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyCmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNC
QWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUEKQVFJRW1nbElR
SnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdB
QUJBZ1FJRUpDQQppQUVDQkFnUUlFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlC
Z2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnClFJQUFBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdB
QUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2cKbVlBRXBC
bTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JB
Z1FJQUFBUW1JR0NCQQpnQUFCQWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFF
Q0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRCklFQ0FBQUVKaUJnZ1FJQUFBUUlFQ0JB
Z1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEEKbWxF
cmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVD
QkFnUWtJQ0lBUUlFQ0JBZwpRSUFBQVFJRW1nbElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JB
Z0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJCkVKQ0FpQUVDQkFnUUlFQ0FBQUVD
QkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0MK
Q0JBZ1FJQUFBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFn
QUFCQ1lnWUlFQ0FBQUVDQkFnUQpJRUNnbVlBRXBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVD
QkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JCkdDQkFnQUFCQWdRSUVDQkFv
Sm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFB
RUMKQkFnUUlFQ0FBQUVKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNC
Q1FnSWdCQWdRSUVDQkFnQUFCQWdTYQpDVWhBbWxFcmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFB
RUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFCkNCQWdRSUFBQVFJRW1n
bElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNC
QWdBQUIKQWdRSUVKQ0FpQUVDQkFnUUlFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFF
SmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTawpHYldDQ0JBZ1FJQUFBUUlFQ0JDUWdJZ0JBZ1FJRUNC
QWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDCkJBZ1FJRUNnbVlB
RXBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlF
Q0JBZ1FJQUEKQVFtSUdDQkFnQUFCQWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNB
aUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SQpBQUVDQkFnUUlFQ0FBQUVKaUJnZ1FJQUFBUUlF
Q0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCCkFnU2FDVWhB
bWxFcmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FB
QUVDQkFnUWtJQ0kKQVFJRUNCQlY4MWo5QUFBV0UwbEVRVlFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FB
UUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJRUNCQQpvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlF
SkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQUFBRUppQmdnClFJQUFB
UUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNV
aEFtbEVyaUFBQkFnUUkKRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlF
Q0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFBUUlFbWdsSQpRSnBSSzRnQUFRSUVDQkFnUUlBQUFR
bUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUNCQWdRCklF
Q0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FT
a0diV0NDQkFnUUlBQUFRSUUKQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdR
SUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2dtWUFFcEJtMQpnZ2dRSUVDQUFBRUNCQWdRa0lD
SUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUJBZ1FJ
CkVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNh
VVN1SUFBRUNCQWdRSUVDQUFBRUoKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFB
QVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEFtbEVyaUFBQgpBZ1FJRUNCQWdBQUJDWWdZ
SUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUFB
UUlFCm1nbElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0
WUlJRUNCQWdBQUJBZ1FJRUpDQWlBRUMKQkFnUUlFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJ
RUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0NDQkFnUUlBQQpBUUlFQ0JDUWdJZ0JB
Z1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlF
Q2dtWUFFCnBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0
Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQWdBQUIKQWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFn
UUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUNCQWdRSUVDQQpBQUVKaUJnZ1FJ
QUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdT
YUNVaEFtbEVyCmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dn
UUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZ1FJQUEKQVFJRW1nbElRSnBSSzRnQUFRSUVDQkFnUUlB
QUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUJBZ1FJRUpDQQppQUVDQkFn
UUlFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0Na
Z0FTa0diV0NDQkFnClFJQUFBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFC
QWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFnUUlFQ2cKbVlBRXBCbTFnZ2dRSUVDQUFBRUNCQWdR
a0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUFBUW1JR0NCQQpnQUFC
QWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pT
RUNhVVN1SUFBRUNCQWdRCklFQ0FBQUVKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdR
SUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCQWdTYUNVaEEKbWxFcmlBQUJBZ1FJRUNCQWdBQUJD
WWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFQ0JBZwpR
SUFBQVFJRW1nbElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJL
UVp0WUlJRUNCQWdBQUJBZ1FJCkVKQ0FpQUVDQkFnUUlFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JB
Z1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaZ0FTa0diV0MKQ0JBZ1FJQUFBUUlFQ0JDUWdJ
Z0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDQkFn
UQpJRUNnbVlBRXBCbTFnZ2dRSUVDQUFBRUNCQWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpw
Uks0Z0FBUUlFQ0JBZ1FJQUFBUW1JCkdDQkFnQUFCQWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FB
QkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JKb0pTRUNhVVN1SUFBRUMKQkFnUUlFQ0FBQUVKaUJn
Z1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NCQWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFC
QWdTYQpDVWhBbWxFcmlBQUJBZ1FJRUNCQWdBQUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0x
Z2dnUUlFQ0FBQUVDQkFnUWtJQ0lBUUlFCkNCQWdRSUFBQVFJRW1nbElRSnBSSzRnQUFRSUVDQkFn
UUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0ptQUJLUVp0WUlJRUNCQWdBQUIKQWdRSUVKQ0FpQUVD
QkFnUUlFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFFQ0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdR
S0NaZ0FTawpHYldDQ0JBZ1FJQUFBUUlFQ0JDUWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJp
QUFCQWdRSUVDQkFnQUFCQ1lnWUlFQ0FBQUVDCkJBZ1FJRUNnbVlBRXBCbTFnZ2dRSUVDQUFBRUNC
QWdRa0lDSUFRSUVDQkFnUUlBQUFRSUVtZ2xJUUpwUks0Z0FBUUlFQ0JBZ1FJQUEKQVFtSUdDQkFn
QUFCQWdRSUVDQkFvSm1BQktRWnRZSUlFQ0JBZ0FBQkFnUUlFSkNBaUFFQ0JBZ1FJRUNBQUFFQ0JK
b0pTRUNhVVN1SQpBQUVDQkFnUUlFQ0FBQUVKaUJnZ1FJQUFBUUlFQ0JBZ1FLQ1pnQVNrR2JXQ0NC
QWdRSUFBQVFJRUNCQ1FnSWdCQWdRSUVDQkFnQUFCCkFnU2FDVWhBbWxFcmlBQUJBZ1FJRUNCQWdB
QUJDWWdZSUVDQUFBRUNCQWdRSUVDZ21ZQUVwQm0xZ2dnUUlFQ0FBQUVDQkFnUWtJQ0kKQVFJRUNC
QWdRSUFBQVFJRW1nbElRSnBSSzRnQUFRSUVDQkFnUUlBQUFRbUlHQ0JBZ0FBQkFnUUlFQ0JBb0pt
QUJLUVp0WUlJRUNCQQpnQUFCQWdRSUVKQ0FpQUVDQkFnUUlFQ0FBQUVDQkpvSlNFQ2FVU3VJQUFF
Q0JBZ1FJRUNBQUFFSmlCZ2dRSUFBQVFJRUNCQWdRS0NaCmdBU2tHYldDQ0JBZ1FJQUFBUUlFQ0JD
UWdJZ0JBZ1FJRUNCQWdBQUJBZ1NhQ1VoQW1sRXJpQUFCQWdRSUVDQkFnQUNCdWZlKzk3MXAKYm00
dXJWdTNMcTFmdjc2SWRGMlgxcTVkbXk2Ly9QSVV6Mk80N0xMTDBvWU5HK1pmaS9rTkJBZ1FJRUNB
QUFFQzI1OUF0UFBXckZsVAoyb0R4dlA1dGYxdWl4cE1FTm0vZVhOcndkUjlIVzcrMjYyc2JQNmJW
b2JiM1l6eW05OGZyUFBYeDdMUFBUZ2NmZkhBZHZjcGpyRGZLCjZnKzFQdkc0YWRPbU5MZHg0OFow
M2V0ZXR4UVdTVVVVR0greGNNeHcxbGxucFZOTy9WNzY3Mit0VDE4NWM1ZjAvYlBuMGtXWFJhS1MK
Vnh5NVNWNVJPbkRQZmhtZUV5QkFnQUFCQWdRSXJEYUJ5M1BETGRxRnVaMjMxOXpHZEoyclhacU8v
ZVdVYm5mVDNkS2gxOXlqL0JBZApqYzkrdzNTMWJZTDZUQmFvQ1VNOFJ1TS8ydlRSam8veGl5KytP
RjF5eVNYcEd0ZTRSdHAvLy8zbkR6TEVmcTUva1JqRUVQUFhCR1JhCkhGeDAwVVhwNmxlLytzU0t4
UEt4WE5TaHYzeThIa084L3UxdmZ6dk5SVVVPUC96d1VsaC94a3N2dlRTZGNzb3A2UU1mL1ViNjZQ
L3UKazc1NXdZRnAxejEzVGJlODA0SHBxTVAyU252dmNlVVJrTHpDdVNob2N6NWFrb00yNVdScXpk
d1ZqN25rMUszSkJVWW1sUXRkSDR0cwo3akpJYk9EbXRDYmVCUGt2WHJZOFAvSGovZVB6dytlbjd3
L2ZuL0U1b1Aydy9PMm43cUpOYVZOdWpFVjdiTU9sbDZldmYrL0M5TGxUCmZwSytldklsNmRRemY1
NGVmTHZONmJpYjdKOTIyV1dYMG5qTnN4bTJJNEZvNE5kR2ZqeEdRei8rSWdtSklSN1BQUFBNc24r
UE91cW8KY3VTcmJsNjAvK3V5OWJYNjJNOE42bXMvK2NsUFN1NVF4K3ZqdEhYRTlEb3Q2blRlZWVl
bHVjaUlJdE9KZ0tzVmlPVGo5Tk5QVHgvNwo1Q25wdzZmdG43NXo2VFhUbWdQbjB2RzNQQ1RkN3Bo
OTB4Njdyc3RKUjE1YnJ2RG12S0tjZTZUOGtabi95NGZ5SWdISmozbFQwcm84CmZlMjZ5S1J6Z2hG
Qm4rZkxxVXJNbU1memN1VzFMbDJXbjFpZW4vangvdkg1NGZQVDk0ZnZUKzJIYmROKzJyQlAvdUUz
dDhlaXZSVy8KZFI5Nm5UM1Q3Z2ZzbGo3NEgvK1hUdnZaTGlsOTZpZnAydGZZa0k2ODN0NXAxMTEz
TFczRFBKdGhPeEdJaG4wMDh1TXZqbWJFZUR4RwoyNzcreGVrVVgvbktWOUxlZSsrZERqdnNzSExF
cXlZWXNWeDlQbXVUNDVTTWV0ckdySG5yZXVNeGhxaEQ1QjZsQzFhTVJMQkZ3VkhoCjZIYjE1Uzkv
T1gzdUcydlRkelllbXRia0FOMW5uMTNTZ2Z1dEx3RzVLVWR1QkcvZXpKeFF4RWRGU3BmbURDT0hi
MGswMXM1RkxsSSsKUXRMYVBHT2NMdExsNlRGM0xKc2ZjdklSU0d0UzdnR1d4OWRZbnAvNDhmN3gr
WkUvVEgxKyt2N3cvYW45a0ZPUVpXOC9iY3cvaE9mbQoxcFhERlQvKzdyL1ArclQzL3J1bm44MnRT
NmVkZjBENjhCZC9tcTUvK1A2bGNiblFCbVpkbzhlVkZhZ0pTRHpXNUNNZTR5QkQ3TXZvCmtoV0p3
ODkrOXJQMHRhOTlMZTIxMTE3cGtFTU9tVTgwaDhsSGROczY4Y1FUMDRNZi9PQ3JiRmljdmpHY1Ay
WTY0WVFUMG4zdWM1KzAKeHg1N3pDOVQ1NHZIU0VJaTU0amxjKytwTmVuQ0N5OHNGWW01Zi83em41
ZS9PTUhrOUl1dm5kYnVtNE56MzEzVHZudXRUK2RjbU5MNQpGM1g1Q01qYXRDNG5HU1dPOHdHTmpm
a0lSaVEybS9MUGwvbUFSMDV2NGd0a2JZcWVXREcrOXZJcnNxL05rWVIwK1R5VEtDaS9kdW5tCk9O
RTluNHlTa3hMTDh4TS8zajgrUDN4Kyt2N3cvYW45c0czYVQ1ZHN6RzJ4dGFVRlZucWtSTnZySnhk
MmFkKzk1MHE3N09lNVBmWmYKUDFoYkdvalJLNmIrTUIxTk5zUHFGK2duSVBWRTczb0VKTHBmeGZR
OTk5eXovRjF3d1FVcHp1T0k5djgrKyt3em40VFVyZno0eHo5ZQprb25vYXZXUWh6eWt2anovV05j
Ny84S1ZUOTc5N25lbmswNDZxU1F0ZDdqREhZYVRTeDJpek1nOTVuYmJiYmR5Y2twa1JKRWRSYVZp
CndrOS8rdE4wN3ZwZlRYdnZzMnU2MnI2NzVBUmtsM3p5K1pyMGhkTnoxckoyVSs1YUZlbkhGWWxI
ZEtxS1FJNXpQTmJtY3o3Vzc1SXoKcmJRcGQ4SEtDVWorbTh1WjlicWNuR3phbEE4SDViL0xjM0lT
R05GMWEyTzhkdVdSRWN2ekV6L2VQejQvZkg3Ni92RDlxZjJ3L08ybgo4eTdNdjFwSHl5My80cnY1
c28yNURSWkhRVGJsQkdSOVdoTmRWWEozblI5Y3RFK0tidmpSSHBTQVhLWDl2S3BmcUFsSUpBZnhW
MDlDCmp6WjkvTVgwdUJKVzdOZG84MGVTV2R2OHUrKytlM245bTkvOFpucmpHOStZNHJGMm1hcm5r
UFEzUHRZMTZmVlk1dHh6ejAydmVjMXIKMGtjKzhwSDBCMy93QittSUk0NG82NHFqSG5HUUk0NnNS
TzR4RnhXSXd6T1JrY1FobWxxNUdOOTE5NVQyellmbjR1akgvdnZzbHFLQwo2M015TVRlWHUyTGxS
R1BOMm53MEkxY2lIK0RKaWNUbU5KYy9NWGJKTWJ3dVp4SnhuR05kL2prelRqK1AxOWZuWUk2VG56
YmwrVGJsCm9MODgvMFVDY3RuRzNFOHR6MjE1ZnVMSCs4Zm5oODlQM3grK1A3VWZ0azM3YWMyNkRi
bUxaejdhc1RrbkgvbEg0NDBiTDAyWGJiZ2sKWFpxN3dxOVpzekZkdm5GOStubnVuUklOeTJnTFJw
c3cyb2VHN1VPZ0ppRHhHQWxJN1NaVkU0bDRyWGFyaTNNd0lnbUlJUktDK0R2NQo1SlBUNjE3M3Vx
dHM3RG5ubkhPVjF5S0JtZlI2Sks5MU9QWFVVOVBqSC8vNDlKakhQQ2JkN0dZM0t3bFExS1dlZHo0
WGxZa2twRDVHCnhhUFNVYkdyejUyVDF1OTJjTnBuOTEzU1Budm1CR1NQUGROdXUrWjU4L3pSVlNJ
blZIbUZjVDdJRlVjMDF1YytWK3R6c01iUmpwSjQKNU9lUnFNeGQyVFVyNXh3NXNQTmZYaVlPQXBh
RTVMSk5hV05uK1hqRDh4TS8zajgrUDN4Kyt2N3cvWm5iRGRvUHk5NStTbk43NWlNZwpjWEp5YnB6
bUl5Q1hYYm8yYlZpZkwwSzA0ZUxjTnV2U3h0M24wbjZYWFpEYmJQdVdOcUVFcERhbHQ0L0hhTnhI
R3o3K29wRmZqM3pVCjErT0lTRTFHNGh5TmFQdkhQREhFNjhjZmYzdzY2S0NEMHR2Zi92WjB4aGxu
bE5manZ6aGlNaHhpMlVtdjl4UFd3dzQ3TFAzTzcvek8KL0JHUVdyY29NMktySEFHSmxjUkM4Umd6
eEFraUJ4eHdRRHJvM08rbFMzYzdwcHp6c2NjZXU2WjljamVzUGZiY0l3ZG43aW9VNTNaRQpBcEpy
bFJQcGZGSjVUa3p5ZVB6RlNaVHhhM1ljMFl0TDlLN0x0dzJKYm9jeDc2YWNhY2Y4NVRHU2wyNHVI
d0swUEQveDQvM2o4OFBuCnArOFAzNS9hRDl1cS9iUTVOOXJXNVJONE4yL0tmeHQzVFJzdVdaOHUz
cEI3d09RdTh4dnlZWkRkZDF1WERsdHpRVDRuK0ZyekNVaHQKb09abW0yR1ZDOVJFSTlyeGRiL1Yx
K0pIN25nZTdmczRTaEczNEtnSlNNd2J5OFJ3d3h2ZU1MM2dCUzlJbi9yVXA5STczL25PK2Q1Ugp3
MDJ2Qnk2R3IwY3VFU2UzUCtoQkQwcTN2ZTF0U3pld3V2NG9QK29SODhUeUpRRXBUNjdzRjFZcmNi
M3JYUzlkODV1ZlREODg3N1MwCi9vQmJwdDN5TitQdU9mbllZNi9JaGxKZStJcWpHSEZwM1RpcUVV
bEY3cG1WNGhhRmtaemswMEJLWDhPYzVPU2pJVmYwWll5akh2bUEKUnpuNmtYdGVsVU9Bc1d4Y21j
SHkvTVNQOTQvUEQ1K2Z2ajk4ZjJvL2JKdjIwNmI4QTNFK0JiZjhBTHdwWHl4bzNmcmNtTXMzWk50
OAoyWVowOGZxNXRQZEZwNlZiSEg1NU9TbTUzempOVFRmRGRpSVFSemxpaU1aK05QU2o4VitUa0px
QVJIZXJZNDQ1WnI0TFZwMm5MaE9QCmQ3dmIzZEp0Ym5PYjlLNTN2V3Zpa1k0NG1YM1NFWkM3My8z
dTZZRVBmR0JKUW1LOU5mbUkzQ0xXRzEzN0lna3BlVWZ0ZWxYNyswWEYKbzlMSEhYZGMrc1kzdnBF
Mm5YRksydkREZklMUy9yK2V6OVRJRGFSSUxuTHlNWmZqTnBLTGZQNVN2Z0ZoRHVpY1FlVGVXV2xk
empLaQpJWmtQZ09TaklQa3ZBajRlODFHUlNEWjJ5OU56RDYrME1TY3VrWkRFa1pETElvbXhQRC94
NC8zajg4UG5wKzhQMzUvYUQ5dWsvYlJICi9ueXRDY2pHbklCazVyUnhRNzdvUmJUVHpqNDEzV2p2
SDZXYkhIbDB1dHJWcmxZYWl0RVdOR3cvQXRIQXJ3Y1JvdGJSK0srUE1TMk8KZk1SbGVBOCsrT0Iw
NHh2ZnVDUUJaWVlyLzR0NTZqTHhVcHlLOGRqSFBuYUwxK3I4Kys2Nzczd0NVMStMeHpwL3JLc084
YnorMVNNZwpwUXRXWkV2MXIyWkxVWUc0eGZvZDczakh0UEZESDBwbm52V1pkTjdKWjZiTERyMXAy
dnhMTjB2N0hiSi9XcGZQTTltWUc0d3hSRGx4ClpPUHlmRDdMTGpsZU4wZG1uYmQ3WTA0OEltRUpn
MGhLSXVBajY3ZzB6eHVSSHlkQlhacGZpeHNTV3A2ZitQSCs4Zm5oODlQM2grOVAKN1lkdDAzN0s1
NXVYTmxocHMrVTIzUGsvUGkrZC85MzhJL1AvblphTzJ1dVNkSXNiSFpHdWM1M3J6Ti9ESVU1YU5t
dy9BcldSSDBsSQo3THRvN05lVDBhUHJWVnhjS3RyN3h4NTdiTGtVYjkyeVdDN2EvY1BIT24zU1l4
d0JtWldnOXRjWHo2TmVVWDQ4ajhlNXFGejhSZUh4CldJZVllUFRSUjVjQzRzejRILzd3aCtuaTc1
K1lmdmFORTlJNWVVUHFpdnZaVWwzV0l3RUNCQWdRSUVDQXdPb1VpRjR2Y1dYVGErNjMKWDdybTRk
ZE1oeDEyVFA0N0xPMlh4Nk5oV2R1R3E3UDJhalZKSU5ybE1jUytpOForWEZBcS9pTDVpS3RXeFJH
Tkk0ODhzaHdCaWVSawpPTlIyL2ZEMVNlTnhuc2VrZFV5YU45WWJmMUdubWh4RkhlZmlVbHh4TTVK
SU9Qcjl1ZW9DRVpCeHNrb2tJT2VkZDE3Wm1DaWdaajc5Cm95YVRDdllhQVFJRUNCQWdRSURBNmhD
SUg0Nmo3UmJkWUNJSmlSdlJSWmVhYUZUR2E3VUJ1enBxcXhZTEZZakdmYitoWHhPUVdQNWEKMTdw
VzJjZXgzNlBOdnh6RFl0WXpURDRpOS9qLzR1OUV5WVNxMVFnQUFBQUFTVVZPUks1Q1lJST0KCg==
</data>
<flag name="review"
          id="37017"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62608</attachid>
            <date>2010-07-26 14:37:16 -0700</date>
            <delta_ts>2010-07-27 15:11:22 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>23556.v1</filename>
            <type>text/plain</type>
            <size>28963</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDA3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMDctMjYgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBm
cmFtZSBob3Jpem9udGFsIHNjcm9sbCBiYXIgZm9yIFJUTCBwYWdlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTYKKworICAgICAgICBGb3IgUlRM
IHBhZ2UsIHNhdmUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgYW5kIGluY2x1ZGUgaXQgaW50byB0aGUg
ZG9jdW1lbnQgICAgICAgIHNpemUgZHVyaW5nIGxheW91dC4gVXNlIHRoZSBsZWZ0IGxheW91dCBv
dmVyZmxvdyB3aGVuIHNjcm9sbCBhbmQgcGFpbnQKKyAgICAgICAgdGhlIHBhZ2UuIEJlaGF2aW9y
IG9uIExUUiBwYWdlIHNob3VsZCBiZSB1bnRvdWNoZWQgc2luY2UgbGVmdCBsYXlvdXQgCisgICAg
ICAgIG92ZXJmbG93IGlzIHNldCBhcyAwIGZvciBMVFIgcGFnZS4KKworICAgICAgICBUZXN0OiBm
YXN0L2RvbS9ob3Jpem9udGFsX3Njcm9sbGJhcl9pbl9ydGwuaHRtbAorCisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RWaWV3
U2l6ZSk6IFNhdmUgbmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgYXMgc2Nyb2xsIFgg
b3JpZ2luLiBBbmQgaW5jbHVkZXMgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgaW50byBkb2N1bWVudCBz
aXplLgorICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaDogQWRkIG1ldGhvZHMg
Zm9yIHNldHRpbmcgYW5kIGdldHRpbmcgc2Nyb2xsIFggb3JpZ2luLgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6U2Nyb2xs
Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsUG9zaXRp
b24pOiBNaW51cyBzY3JvbGwgWCBvcmlnaW4gZnJvbSBtYXhpbXVtIGhvcml6b250YWwgc2Nyb2xs
IHBvc2l0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dmFsdWVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjpzdHlsZURpZENoYW5nZSk6IFByb3BvZ2F0ZSBIVE1MIGJvZHkgZGlyZWN0aW9uYWxpdHkg
dG8gaXRzIFJlbmRlclZpZXcuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Um9v
dEJveERlY29yYXRpb25zKTogSW5jbHVkZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBpbnRvIGNhbnZh
cyBzaXplLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6IFNhdmUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpkb2NXaWR0aCk6IEluY2x1ZGUgbGVmdCBsYXlv
dXQgb3ZlcmZsb3cgaW50byBkb2Mgd2lkdGguCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldEJvZHlJc1JUTCk6CisKIDIw
MTAtMDctMjYgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDYzOTI3KQor
KysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNiw3ICs0
MjYsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplKCkKICAgICBpZiAoIXJvb3Qp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHNldENvbnRlbnRzU2l6ZShJbnRTaXplKHJvb3QtPnJp
Z2h0TGF5b3V0T3ZlcmZsb3coKSwgcm9vdC0+Ym90dG9tTGF5b3V0T3ZlcmZsb3coKSkpOworICAg
IC8vIERvIG5vdCBtb3ZlIHNldFNjcm9sbE9yaWdpblgoKSB0byBvdGhlciBwbGFjZXMsIG90aGVy
d2lzZSwKKyAgICAvLyBjb250ZW50IHBhaW50ZWQgYW5kIHNjcm9sbCBtaWdodCBub3Qgd29yayBj
b3JyZWN0bHkgd2hlbiBwYWdlIHJlc2l6ZS4KKyAgICBTY3JvbGxWaWV3OjpzZXRTY3JvbGxPcmln
aW5YKGFicyhyb290LT5sZWZ0TGF5b3V0T3ZlcmZsb3coKSkpOworICAgIHNldENvbnRlbnRzU2l6
ZShJbnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKSAtIHJvb3QtPmxlZnRMYXlvdXRP
dmVyZmxvdygpLCByb290LT5ib3R0b21MYXlvdXRPdmVyZmxvdygpKSk7CiB9CiAKIHZvaWQgRnJh
bWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJPYmplY3QqIG8sIFNjcm9sbGJh
ck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSkKSW5kZXg6IFdlYkNvcmUvcGFnZS9t
YWMvV2ViQ29yZUZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvV2Vi
Q29yZUZyYW1lVmlldy5oCShyZXZpc2lvbiA2MzkyNykKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2Vi
Q29yZUZyYW1lVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC0gKHZvaWQpc2V0U2Nyb2xsaW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9sbGJh
ck1vZGUpaE1vZGUgdmVydGljYWw6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUpdk1vZGUgYW5kTG9j
azooQk9PTClsb2NrOwogLSAodm9pZClzY3JvbGxpbmdNb2RlczooV2ViQ29yZTo6U2Nyb2xsYmFy
TW9kZSopaE1vZGUgdmVydGljYWw6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUqKXZNb2RlOwogLSAo
dm9pZClzZXRTY3JvbGxCYXJzU3VwcHJlc3NlZDooQk9PTClzdXBwcmVzc2VkIHJlcGFpbnRPblVu
c3VwcHJlc3M6KEJPT0wpcmVwYWludDsKKy0gKHZvaWQpc2V0U2Nyb2xsT3JpZ2luWDooaW50KXNj
cm9sbE9yaWdpblg7CistIChpbnQpc2Nyb2xsT3JpZ2luWDsKIEBlbmQKIAogQHByb3RvY29sIFdl
YkNvcmVGcmFtZVZpZXcKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gNjM5
MjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw2ICs1Myw3IEBAIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXcoKQogICAgICwgbV9kcmF3UGFu
U2Nyb2xsSWNvbihmYWxzZSkKICAgICAsIG1fdXNlRml4ZWRMYXlvdXQoZmFsc2UpCiAgICAgLCBt
X3BhaW50c0VudGlyZUNvbnRlbnRzKGZhbHNlKQorICAgICwgbV9zY3JvbGxPcmlnaW5YKDApCiB7
CiAgICAgcGxhdGZvcm1Jbml0KCk7CiB9CkBAIC0yNjgsNyArMjY5LDcgQEAgdm9pZCBTY3JvbGxW
aWV3OjpzZXRDb250ZW50c1NpemUoY29uc3QgSQogCiBJbnRQb2ludCBTY3JvbGxWaWV3OjptYXhp
bXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAogewotICAgIEludFNpemUgbWF4aW11bU9mZnNldCA9
IGNvbnRlbnRzU2l6ZSgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOworICAgIEludFNp
emUgbWF4aW11bU9mZnNldChjb250ZW50c1dpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSAtIG1fc2Ny
b2xsT3JpZ2luWCwgY29udGVudHNIZWlnaHQoKSAtIHZpc2libGVIZWlnaHQoKSk7CiAgICAgbWF4
aW11bU9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CiAgICAgcmV0dXJuIEludFBvaW50KG1h
eGltdW1PZmZzZXQud2lkdGgoKSwgbWF4aW11bU9mZnNldC5oZWlnaHQoKSk7CiB9CkBAIC0yNzks
NyArMjgwLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKgogICAg
IEludFNpemUgbmV3T2Zmc2V0ID0gbV9zY3JvbGxPZmZzZXQ7CiAgICAgaWYgKHNjcm9sbGJhcikg
ewogICAgICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIpCi0gICAgICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoc2Nyb2xsYmFyLT52YWx1ZSgp
KTsKKyAgICAgICAgICAgIG5ld09mZnNldC5zZXRXaWR0aChzY3JvbGxiYXItPnZhbHVlKCkgLSBt
X3Njcm9sbE9yaWdpblgpOwogICAgICAgICBlbHNlIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgICAgICBuZXdPZmZzZXQuc2V0SGVpZ2h0
KHNjcm9sbGJhci0+dmFsdWUoKSk7CiAgICAgfQpAQCAtMzA2LDcgKzMwNywxMSBAQCB2b2lkIFNj
cm9sbFZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0CiAgICAgfQogCiAgICAgSW50UG9pbnQg
bmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb2ludC5zaHJ1bmtUbyhtYXhpbXVtU2Nyb2xsUG9z
aXRpb24oKSk7Ci0gICAgbmV3U2Nyb2xsUG9zaXRpb24uY2xhbXBOZWdhdGl2ZVRvWmVybygpOwor
ICAgIC8vIEFkanVzdCBzY3JvbGwgcG9zaXRpb24gdG8gYWJvdmUgdGhlIG1pbmltdW0gdmFsdWUu
IHktYXhpcyBzaG91bGQgbm90IGJlCisgICAgLy8gbmVnYXRpdmUuIFRoZSBtaW5pbXVtIHZhbHVl
IGZvciB4LWF4aXMgaXMgdGhlIGxlZnQgbGF5b3V0IG92ZXJmbG93LAorICAgIC8vIHdoaWNoIHNo
b3VsZCBiZSB6ZXJvIGZvciBub24gUlRMIHBhZ2UgYW5kIHRoZSBuZWdhdGl2ZSBvZiBtX3Njcm9s
bE9yaWdpblgKKyAgICAvLyBmb3IgUlRMIHBhZ2UuCisgICAgbmV3U2Nyb2xsUG9zaXRpb24gPSBu
ZXdTY3JvbGxQb3NpdGlvbi5leHBhbmRlZFRvKEludFBvaW50KC1tX3Njcm9sbE9yaWdpblgsIDAp
KTsKIAogICAgIGlmIChuZXdTY3JvbGxQb3NpdGlvbiA9PSBzY3JvbGxQb3NpdGlvbigpKQogICAg
ICAgICByZXR1cm47CkBAIC00MTksMTAgKzQyNCwxNSBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0
ZVNjcm9sbGJhcnMoY29uc3QgCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW5VcGRhdGVTY3Jv
bGxiYXJzID0gdHJ1ZTsKLSAgICBJbnRTaXplIG1heFNjcm9sbFBvc2l0aW9uKGNvbnRlbnRzV2lk
dGgoKSAtIHZpc2libGVXaWR0aCgpLCBjb250ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgp
KTsKKyAgICBJbnRTaXplIG1heFNjcm9sbFBvc2l0aW9uKGNvbnRlbnRzV2lkdGgoKSAtIHZpc2li
bGVXaWR0aCgpIC0gbV9zY3JvbGxPcmlnaW5YLCBjb250ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhl
aWdodCgpKTsKKyAgICBtYXhTY3JvbGxQb3NpdGlvbi5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CiAg
ICAgSW50U2l6ZSBzY3JvbGwgPSBkZXNpcmVkT2Zmc2V0LnNocnVua1RvKG1heFNjcm9sbFBvc2l0
aW9uKTsKLSAgICBzY3JvbGwuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotIAorICAgIC8vIEFkanVz
dCBzY3JvbGwgcG9zaXRpb24gdG8gYWJvdmUgdGhlIG1pbmltdW0gdmFsdWUuIHktYXhpcyBzaG91
bGQgbm90IGJlCisgICAgLy8gbmVnYXRpdmUuIFRoZSBtaW5pbXVtIHZhbHVlIGZvciB4LWF4aXMg
aXMgdGhlIGxlZnQgbGF5b3V0IG92ZXJmbG93LAorICAgIC8vIHdoaWNoIHNob3VsZCBiZSB6ZXJv
IGZvciBub24gUlRMIHBhZ2UgYW5kIHRoZSBuZWdhdGl2ZSBvZiBtX3Njcm9sbE9yaWdpblgKKyAg
ICAvLyBmb3IgUlRMIHBhZ2UuCisgICAgc2Nyb2xsID0gc2Nyb2xsLmV4cGFuZGVkVG8oSW50U2l6
ZSgtbV9zY3JvbGxPcmlnaW5YLCAwKSk7CisKICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFy
KSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IHZpc2libGVXaWR0aCgpOwogICAgICAgICBt
X2hvcml6b250YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVudHNXaWR0aCgpID4gY2xpZW50
V2lkdGgpOwpAQCAtNDQwLDcgKzQ1MCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xs
YmFycyhjb25zdCAKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJl
c3NJbnZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0
U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7CiAgICAgICAg
IG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRXaWR0aCwgY29udGVu
dHNXaWR0aCgpKTsKLSAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3Jv
bGwud2lkdGgoKSk7CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Ny
b2xsLndpZHRoKCkgKyBtX3Njcm9sbE9yaWdpblgpOwogICAgICAgICBpZiAobV9zY3JvbGxiYXJz
U3VwcHJlc3NlZCkKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJl
c3NJbnZhbGlkYXRpb24oZmFsc2UpOyAKICAgICB9IApAQCAtOTUwLDYgKzk2MCwxNiBAQCB2b2lk
IFNjcm9sbFZpZXc6OnJlbW92ZVBhblNjcm9sbEljb24oKQogICAgIGhvc3RXaW5kb3coKS0+aW52
YWxpZGF0ZUNvbnRlbnRzQW5kV2luZG93KEludFJlY3QobV9wYW5TY3JvbGxJY29uUG9pbnQsIElu
dFNpemUocGFuSWNvblNpemVMZW5ndGgsIHBhbkljb25TaXplTGVuZ3RoKSksIHRydWUgLyppbW1l
ZGlhdGUqLyk7CiB9CiAKKwordm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxPcmlnaW5YKGludCB4
KQoreyAKKyAgICBtX3Njcm9sbE9yaWdpblggPSB4OworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBw
bGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoKTsKKyNlbmRpZgorfQorCisKICNpZiAhUExBVEZPUk0o
V1gpICYmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEVGTCkK
IAogdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUluaXQoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmgJKHJldmlzaW9uIDYzOTI3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gU2Nyb2xs
IHRoZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMKICAgICB2aXJ0dWFsIGJvb2wgc2Ny
b2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50
UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAKKyAgICB2b2lk
IHNldFNjcm9sbE9yaWdpblgoaW50IHgpOworCiBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxi
YXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyOwpAQCAtMjk0LDYgKzI5Niw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1f
cGFpbnRzRW50aXJlQ29udGVudHM7CiAKKyAgICBpbnQgbV9zY3JvbGxPcmlnaW5YOyAvLyBPbmx5
IG5vbi16ZXJvIGZvciBSVEwgcGFnZS4KKwogICAgIHZvaWQgaW5pdCgpOwogICAgIHZvaWQgZGVz
dHJveSgpOwogCkBAIC0zMjEsNiArMzI1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3Jt
U2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoYm9vbCByZXBhaW50T25VbnN1cHByZXNzKTsKICAgICB2
b2lkIHBsYXRmb3JtUmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYsIGJvb2wg
bm93KTsKICAgICBib29sIHBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdDsKKyAgIAorICAgIHZv
aWQgcGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIGRl
ZmluZWQgX19PQkpDX18KIHB1YmxpYzoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bFZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmll
d01hYy5tbQkocmV2aXNpb24gNjM5MjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxW
aWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBTY3JvbGxW
aWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdQogdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNl
dFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkKIHsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgTlNQb2ludCB0ZW1wUG9pbnQgPSB7IG1heCgw
LCBzY3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSB9OyAvLyBEb24ndCB1
c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KKyAgICBOU1BvaW50IHRlbXBQ
b2ludCA9IHsgbWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpblhdLCBzY3JvbGxQb2ludC54
KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSB9OyAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQg
dG8gd29yayBhcm91bmQgNDIxMzMxNC4KICAgICBbZG9jdW1lbnRWaWV3KCkgc2Nyb2xsUG9pbnQ6
dGVtcFBvaW50XTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQpAQCAtMjAyLDQg
KzIwMiwxMSBAQCBib29sIFNjcm9sbFZpZXc6OnBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjCiAgICAg
cmV0dXJuICFbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIHx8ICFbW3BsYXRmb3JtV2lkZ2V0KCkg
d2luZG93XSBpc1Zpc2libGVdOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Ny
b2xsT3JpZ2luWCgpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIFtz
Y3JvbGxWaWV3KCkgc2V0U2Nyb2xsT3JpZ2luWDptX3Njcm9sbE9yaWdpblhdOworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gNjM5MjcpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsOCArMTg1LDEwIEBAIHZv
aWQgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmYKICAgICB9CiAKICAgICAvLyBT
ZXQgdGhlIHRleHQgY29sb3IgaWYgd2UncmUgdGhlIGJvZHkuCi0gICAgaWYgKGlzQm9keSgpKQor
ICAgIGlmIChpc0JvZHkoKSkgewogICAgICAgICBkb2N1bWVudCgpLT5zZXRUZXh0Q29sb3Ioc3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKKyAgICAgICAg
dmlldygpLT5zZXRCb2R5SXNSVEwoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMKTsKKyAgICB9
CiB9CiAKIHZvaWQgUmVuZGVyQm94Ojp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKQpAQCAt
NjA5LDggKzYxMSw4IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludFJvb3RCb3hEZWNvcmF0aW9ucygK
IAogICAgIC8vIENTUzIgMTQuMjoKICAgICAvLyBUaGUgYmFja2dyb3VuZCBvZiB0aGUgYm94IGdl
bmVyYXRlZCBieSB0aGUgcm9vdCBlbGVtZW50IGNvdmVycyB0aGUgZW50aXJlIGNhbnZhcyBpbmNs
dWRpbmcKLSAgICAvLyBpdHMgbWFyZ2lucy4KLSAgICBpbnQgYnggPSB0eCAtIG1hcmdpbkxlZnQo
KTsKKyAgICAvLyBpdHMgbWFyZ2lucywgYW5kIGluY2x1ZGluZyBpdHMgbGVmdCBsYXlvdXQgb3Zl
cmZsb3cuCisgICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0KCkgKyB2aWV3KCktPmxlZnRMYXlv
dXRPdmVyZmxvdygpOwogICAgIGludCBieSA9IHR5IC0gbWFyZ2luVG9wKCk7CiAgICAgaW50IGJ3
ID0gbWF4KHcgKyBtYXJnaW5MZWZ0KCkgKyBtYXJnaW5SaWdodCgpICsgYm9yZGVyTGVmdCgpICsg
Ym9yZGVyUmlnaHQoKSwgcncpOwogICAgIGludCBiaCA9IG1heChoICsgbWFyZ2luVG9wKCkgKyBt
YXJnaW5Cb3R0b20oKSArIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCksIHJoKTsKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiA2MzkyNykKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsOCArMTI1LDkgQEAg
dm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogCiAgICAgLy8gUmVzZXQgb3ZlcmZsb3cgYW5kIHRo
ZW4gcmVwbGFjZSBpdCB3aXRoIGRvY1dpZHRoIGFuZCBkb2NIZWlnaHQuCiAgICAgbV9vdmVyZmxv
dy5jbGVhcigpOwotICAgIGFkZExheW91dE92ZXJmbG93KEludFJlY3QoMCwgMCwgZG9jV2lkdGgo
KSwgZG9jSGVpZ2h0KCkpKTsKLQorICAgIC8vIGxlZnRtb3N0UG9zaXRpb24oKSBpcyBub3QgYWx3
YXlzIDAgZm9yIExUUiBwYWdlLCBmb3IgZXhhbXBsZSBodHRwOi8vd3d3LmFwcGxlLmNvbS9zdGFy
dHBhZ2UvLgorICAgIGludCBsZWZ0T3ZlcmZsb3cgPSBtX2JvZHlJc1JUTCA/IHN0ZDo6bWluKDAs
IGxlZnRtb3N0UG9zaXRpb24oKSkgOiAwOworICAgIGFkZExheW91dE92ZXJmbG93KEludFJlY3Qo
bGVmdE92ZXJmbG93LCAwLCBkb2NXaWR0aChsZWZ0T3ZlcmZsb3cpLCBkb2NIZWlnaHQoKSkpOwog
CiAgICAgQVNTRVJUKGxheW91dERlbHRhKCkgPT0gSW50U2l6ZSgpKTsKICAgICBBU1NFUlQobV9s
YXlvdXRTdGF0ZURpc2FibGVDb3VudCA9PSAwKTsKQEAgLTYzMCw5ICs2MzEsOSBAQCBpbnQgUmVu
ZGVyVmlldzo6ZG9jSGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4gaDsKIH0KIAotaW50IFJlbmRl
clZpZXc6OmRvY1dpZHRoKCkgY29uc3QKK2ludCBSZW5kZXJWaWV3Ojpkb2NXaWR0aChpbnQgbGVm
dE92ZXJmbG93KSBjb25zdAogewotICAgIGludCB3ID0gcmlnaHRtb3N0UG9zaXRpb24oKTsKKyAg
ICBpbnQgdyA9IHJpZ2h0bW9zdFBvc2l0aW9uKCkgLSBsZWZ0T3ZlcmZsb3c7CiAKICAgICBmb3Ig
KFJlbmRlckJveCogYyA9IGZpcnN0Q2hpbGRCb3goKTsgYzsgYyA9IGMtPm5leHRTaWJsaW5nQm94
KCkpIHsKICAgICAgICAgaW50IGR3ID0gYy0+d2lkdGgoKSArIGMtPm1hcmdpbkxlZnQoKSArIGMt
Pm1hcmdpblJpZ2h0KCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCShyZXZpc2lvbiA2Mzky
NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY3LDYgKzE2Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNDb21wb3NpdGluZygpIGNvbnN0
OwogI2VuZGlmCiAKKyAgICB2b2lkIHNldEJvZHlJc1JUTChib29sIGJvZHlJc1JUTCkgeyBtX2Jv
ZHlJc1JUTCA9IGJvZHlJc1JUTDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9v
bCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwpAQCAtMTc1LDcgKzE3Nyw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRSZXBhaW50KGNvbnN0IEludFJlY3QmIHIpIGNv
bnN0OwogICAgICAgICAKICAgICBpbnQgZG9jSGVpZ2h0KCkgY29uc3Q7Ci0gICAgaW50IGRvY1dp
ZHRoKCkgY29uc3Q7CisgICAgaW50IGRvY1dpZHRoKGludCBsZWZ0T3ZlcmZsb3cpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6CiAgICAgRnJhbWVWaWV3KiBtX2ZyYW1lVmlldzsKQEAgLTIwNiw2ICsyMDgs
NyBAQCBwcml2YXRlOgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBPd25Q
dHI8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPiBtX2NvbXBvc2l0b3I7CiAjZW5kaWYKKyAgICBib29s
IG1fYm9keUlzUlRMOwogfTsKIAogaW5saW5lIFJlbmRlclZpZXcqIHRvUmVuZGVyVmlldyhSZW5k
ZXJPYmplY3QqIG9iamVjdCkKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDA3MykKKysrIFdlYktpdC9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDctMjYgIFhp
YW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBmcmFtZSBob3Jpem9udGFsIHNjcm9sbCBiYXIgZm9y
IFJUTCBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NTYKKworICAgICAgICBJbiBNQUMgcG9ydCwgc2V0IGFuZCBnZXQgdGhlIG9yaWdpbmFs
IHgtYXhpcyBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgIEFuZCByZXNldCBzY3JvbGwgcG9zaXRp
b24gd2hlbiBwcmVzcyBIT01FL0VORCBrZXkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkR5bmFt
aWNTY3JvbGxCYXJzVmlldy5tbToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3
IHNldFNjcm9sbE9yaWdpblg6XSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmll
dyBzY3JvbGxPcmlnaW5YXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06Cisg
ICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9FbmRPZkRvY3VtZW50XSk6CisKIDIwMTAt
MDctMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWlj
U2Nyb2xsQmFyc1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5
bmFtaWNTY3JvbGxCYXJzVmlldy5tbQkocmV2aXNpb24gNjM5MjcpCisrKyBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2
ICs2Miw5IEBAIHN0cnVjdCBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdQcml2YXRlIHsKICAgICBi
b29sIGFsd2F5c0hpZGVWZXJ0aWNhbFNjcm9sbGVyOwogICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9s
bGluZ0FsbG93ZWRCdXRTY3JvbGxlckhpZGRlbjsKICAgICBib29sIHZlcnRpY2FsU2Nyb2xsaW5n
QWxsb3dlZEJ1dFNjcm9sbGVySGlkZGVuOworCisgICAgLy8gc2Nyb2xsT3JpZ2luWCBpcyAwIGZv
ciBMVFIgcGFnZSBhbmQgaXMgdGhlIG5lZ2F0aXZlIG9mIGxlZnQgbGF5b3V0IG92ZXJmbG93IHZh
bHVlIGZvciBSVEwgcGFnZS4KKyAgICBpbnQgc2Nyb2xsT3JpZ2luWDsKIH07CiAKIEBpbXBsZW1l
bnRhdGlvbiBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcKQEAgLTUyNSw0ICs1MjgsMzAgQEAgLSAo
Qk9PTClhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIAogICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJp
bGl0eUlzSWdub3JlZF07CiB9CiAKKy0gKHZvaWQpc2V0U2Nyb2xsT3JpZ2luWDooaW50KXNjcm9s
bE9yaWdpblgKK3sKKyAgICBfcHJpdmF0ZS0+c2Nyb2xsT3JpZ2luWCA9IHNjcm9sbE9yaWdpblg7
CisKKyAgICAvLyBUaGVyZSBhcHBlYXJzIHRvIGJlIGEgYnVnIHJlbGF0ZWQgdG8gcGFnZSB6b29t
IGFuZCBwYWdlIGxvYWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyODYzLgorICAgIGlmIChzY3JvbGxPcmlnaW5YKSB7CisgICAgICAgIC8vICItW3Nl
bGYgc2Nyb2xsT3JpZ2luWF0iIGVxdWFscyB0byBsZWZ0IGxheW91dCBvdmVyZmxvdy4KKyAgICAg
ICAgLy8gU2V0IGxlZnQgbGF5b3V0IG92ZXJmbG93IGludG8gZG9jdW1lbnQgdmlldydzIGJvdW5k
cyB4LWF4aXMgb3JpZ2luIHRvIGNvdmVyIHRoZSBlbnRpcmUgY2FudmFzLgorICAgICAgICBOU1Zp
ZXcgKmRvY3VtZW50VmlldyA9IFtzZWxmIGRvY3VtZW50Vmlld107CisgICAgICAgIFtkb2N1bWVu
dFZpZXcgc2V0Qm91bmRzT3JpZ2luOk5TTWFrZVBvaW50KC1zY3JvbGxPcmlnaW5YLCBbZG9jdW1l
bnRWaWV3IGJvdW5kc10ub3JpZ2luLnkpXTsKKworICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwg
c2Nyb2xsIHBvaW50IHRvIGJlIHJpZ2h0LWJvdHRvbSBmb3IgUlRMIHBhZ2UuCisgICAgICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBpbiBzb21ld2hlcmUgZWxzZSwgb3RoZXJ3aXNlLAorICAg
ICAgICAvLyBib3RoIHNjcm9sbGJhcnMgYXJlIHJlc2V0IHRvIG9yaWdpbmFsIHBvc2l0aW9uIHdo
ZW4gcmVmcmVzaCBwYWdlLCByZXNpemUgcGFnZSBldGMuCisgICAgICAgIE5TUG9pbnQgcG9pbnQg
PSBbW3NlbGYgZG9jdW1lbnRWaWV3XSBmcmFtZV0ub3JpZ2luOworICAgICAgICBwb2ludC54ICs9
IHNjcm9sbE9yaWdpblg7CisgICAgICAgIFtbc2VsZiBjb250ZW50Vmlld10gc2Nyb2xsVG9Qb2lu
dDpwb2ludF07CisgICAgfQorfQorCistIChpbnQpc2Nyb2xsT3JpZ2luWAoreworICAgIHJldHVy
biBfcHJpdmF0ZS0+c2Nyb2xsT3JpZ2luWDsKK30KKwogQGVuZApJbmRleDogV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWVWaWV3Lm1tCShyZXZpc2lvbiA2MzkyNykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZVZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzNiw2ICs1MzYsNyBAQCAtIChCT09M
KV9zY3JvbGxUb0JlZ2lubmluZ09mRG9jdW1lbnQKICAgICBpZiAoIVtzZWxmIF9pc1Njcm9sbGFi
bGVdKQogICAgICAgICByZXR1cm4gTk87CiAgICAgTlNQb2ludCBwb2ludCA9IFtbW3NlbGYgX3Nj
cm9sbFZpZXddIGRvY3VtZW50Vmlld10gZnJhbWVdLm9yaWdpbjsKKyAgICBwb2ludC54ICs9IFtb
c2VsZiBfc2Nyb2xsVmlld10gc2Nyb2xsT3JpZ2luWF07CiAgICAgcmV0dXJuIFtbc2VsZiBfY29u
dGVudFZpZXddIF9zY3JvbGxUbzomcG9pbnQgYW5pbWF0ZTpZRVNdOwogfQogCkBAIC01NDcsNiAr
NTQ4LDcgQEAgLSAoQk9PTClfc2Nyb2xsVG9FbmRPZkRvY3VtZW50CiAgICAgICAgIHJldHVybiBO
TzsKICAgICBOU1JlY3QgZnJhbWUgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVudFZpZXdd
IGZyYW1lXTsKICAgICBOU1BvaW50IHBvaW50ID0gTlNNYWtlUG9pbnQoZnJhbWUub3JpZ2luLngs
IE5TTWF4WShmcmFtZSkpOworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3Jv
bGxPcmlnaW5YXTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10gX3Njcm9sbFRvOiZw
b2ludCBhbmltYXRlOllFU107CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MDczKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAt
MDctMjYgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBmcmFtZSBob3Jpem9udGFsIHNjcm9s
bCBiYXIgZm9yIFJUTCBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM1NTYKKworICAgICAgICBGb3IgUlRMIHBhZ2UsIHNhdmUgbGVmdCBsYXlv
dXQgb3ZlcmZsb3cgYW5kIGluY2x1ZGUgaXQgaW50byB0aGUgZG9jdW1lbnQgICAgICAgIHNpemUg
ZHVyaW5nIGxheW91dC4gVXNlIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdyB3aGVuIHNjcm9sbCBh
bmQgcGFpbnQKKyAgICAgICAgdGhlIHBhZ2UuIEJlaGF2aW9yIG9uIExUUiBwYWdlIHNob3VsZCBi
ZSB1bnRvdWNoZWQgc2luY2UgbGVmdCBsYXlvdXQgCisgICAgICAgIG92ZXJmbG93IGlzIHNldCBh
cyAwIGZvciBMVFIgcGFnZS4KKworICAgICAgICAqIGZhc3QvZG9tL2hvcml6b250YWxfc2Nyb2xs
YmFyX2luX3J0bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20v
aG9yaXpvbnRhbF9zY3JvbGxiYXJfaW5fcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAt
MDctMjYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IGNvbXBvc2l0aW5nIGlmcmFtZSB0ZXN0cyBvbiBMZW9wYXJkLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vaG9yaXpvbnRhbF9zY3JvbGxiYXJfaW5fcnRsLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbF9zY3JvbGxiYXJfaW5fcnRsLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsX3Njcm9sbGJh
cl9pbl9ydGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzIgQEAKKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGxvZyhzdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFy
IGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBsaS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgICAgICAgICAgICAg
ICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAg
ICAgICAgICAgICAgY29uc29sZS5hcHBlbmRDaGlsZChsaSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGFzc2VydEVxdWFsKG1lc3NhZ2UsIGFjdHVh
bCwgZXhwZWN0ZWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGFjdHVhbCAh
PSBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjog
RmFpbHVyZSwgYWN0dWFsOiAiICsgYWN0dWFsICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1l
c3NhZ2UgKyAiOiBTdWNjZXNzIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGFzc2VydFRydWUobWVzc2FnZSwgZmFjdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoZmFjdCkKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIg
KyBtZXNzYWdlICsgIjogRmFpbHVyZSIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRTY3JvbGxYID0gLTEw
MDA7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRTY3JvbGxZID0gNTAwOworCisgICAgICAgICAg
ICB2YXIgZmlyc3RUaW1lTG9hZCA9IHRydWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1
bmN0aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpIAorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGFzc2VydEVxdWFsKCJ3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xs
IHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIWZpcnN0VGltZUxvYWQpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIC8vIFRlc3QgaG9yaXpvbnRhbCBz
Y3JvbGwgYmFyIHByZXNlbnRzIGFuZCB3YXMgaW5pdGlhbGx5IGF0IHRoZSByaWdodCBmb3IgUlRM
IHBhZ2UuCisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB4IGZv
ciBSVEwgcGFnZTogIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgLy8gVGVzdCBob3Jpem9udGFsIHNjcm9sbC4KKyAgICAgICAgICAgICAgICB3aW5k
b3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAg
ICAgICAgIGFzc2VydEVxdWFsKCJob3Jpem9udGFsIHNjcm9sbDogIiwgd2luZG93LnNjcm9sbFgs
IGV4cGVjdGVkU2Nyb2xsWCk7CisKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiB3aW5kb3cuc2Nyb2xsWCBjYW4gbm90IGJlIGNhbGxlZCBjb250aW5vdXNseSBpbiBNQUMg
YmVjYXVzZQorICAgICAgICAgICAgICAgIC8vIHNjcm9sbCBwb3NpdGlvbiBpcyByZXNldCBpbiB0
aGUgZm9sbG93aW5nIGNhbGwgc3RhY2s6CisgICAgICAgICAgICAgICAgLy8gMSMwICBXZWJDb3Jl
OjpGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplICh0aGlzPTB4MTEzY2EyMjIwKSBhdCAvZXhwb3J0
L1dlYktpdC9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcDo0MzEKKyAgICAgICAgICAgICAgICAv
LyAjMSAgMHgwMDAwMDAwMTAxMzdjNTEzIGluIFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0ICh0
aGlzPTB4MTEzY2EyMjIwLCBhbGxvd1N1YnRyZWU9dHJ1ZSkgYXQgL2V4cG9ydC9XZWJLaXQvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHA6NzgxCisgICAgICAgICAgICAgICAgLy8gIzIgIDB4MDAw
MDAwMDEwMTFkYmEwMyBpbiBXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlTGF5b3V0ICh0aGlzPTB4
MTEyMTg2YzAwKSBhdCAvZXhwb3J0L1dlYktpdC9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHA6MTQ1
NgorICAgICAgICAgICAgICAgIC8vICMzICAweDAwMDAwMDAxMDExZGUxOGYgaW4gV2ViQ29yZTo6
RG9jdW1lbnQ6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyAodGhpcz0weDEx
MjE4NmMwMCkgYXQgL2V4cG9ydC9XZWJLaXQvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwOjE0ODcK
KyAgICAgICAgICAgICAgICAvLyAjNCAgMHgwMDAwMDAwMTAxMmNkMDc2IGluIFdlYkNvcmU6OkRP
TVdpbmRvdzo6c2Nyb2xsWCAodGhpcz0weDExM2NhMmYyMCkgYXQgL2V4cG9ydC9XZWJLaXQvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHA6MTA1NworICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgYXNzZXJ0RXF1YWwoImNvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYICIsIHdpbmRv
dy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAgICAgCisKKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogRkFJTCBpbiBNQUMuIFNjcm9sbCBwb3NpdGlvbiByZXNldCB3aGVuIHpv
b20gcGFnZS4KKyAgICAgICAgICAgICAgICAvLyBUZXN0IHpvb21pbmcgd29udCByZXNldCBzY3Jv
bGwgcG9zaXRpb24uCisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBl
Y3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci56b29tUGFnZUlu
KCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlSW4oKTsKKyAgICAg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VJbigpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlT3V0KCk7CisgICAgICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlT3V0KCk7CisgICAgICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLnpvb21QYWdlT3V0KCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVx
dWFsKCJ6b29tIGluIGFuZCBvdXQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNj
cm9sbFgsZXhwZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogcmVzaXplIHdpbGwgcmVzZXQgc2Nyb2xsIHBv
c2l0aW9uIGluIE1BQywgc28sIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAvLyBhc3Nl
cnQgc2hvdWxkIGZhaWwgaW4gTUFDLgorICAgICAgICAgICAgICAgIC8vIEl0IGRvZXMgZmFpbCB3
aGVuIGxvYWQgdGhpcyBwYWdlIHRocm91Z2ggcnVuLXNhZmFyaS4KKyAgICAgICAgICAgICAgICAv
LyBCdXQgd2h5IGl0IHN1Y2NlZWRzIHRocm91Z2ggcnVuLXdlYmtpdC10ZXN0cz8/PworICAgICAg
ICAgICAgICAgIC8vIFRlc3QgcmVzaXplIHdvbnQgcmVzZXQgc2Nyb2xsIHBvc2l0aW9uLgorICAg
ICAgICAgICAgICAgIHdpbmRvdy5yZXNpemVUbygxMDAwLCB3aW5kb3cuaW5uZXJIZWlnaHQpOwor
ICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVk
U2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKDIwMDAsIHdpbmRvdy5p
bm5lckhlaWdodCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInJlc2l6ZSBwcmVzZXJ2
ZXMgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCB3aGVlbCBzY3JvbGwgcHJl
c2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBJcyB0aGlzIHRoZSByaWdodCB3YXkgdG8gdGVzdCB0aGF0IG1vdXNlIHdoZWVsCisgICAg
ICAgICAgICAgICAgLy8gd2hpY2ggbW92ZXMgdmVydGljYWwgc2Nyb2xsYmFyIHNob3VsZCBwcmVz
ZXJ2ZXMgaG9yaXpvbnRhbAorICAgICAgICAgICAgICAgIC8vIHNjcm9sbCBwb3NpdGlvbj8KKyAg
ICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNj
cm9sbFkgLyAyKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZXdoZWVsIiwgbW91c2V3aGVlbEhhbmRsZXIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB2YXIg
d2hlZWxFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJXaGVlbEV2ZW50Iik7CisgICAgICAg
ICAgICAgICAgd2hlZWxFdmVudC5pbml0V2ViS2l0V2hlZWxFdmVudCgwLCBleHBlY3RlZFNjcm9s
bFkgLyAyLCB3aW5kb3csIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBkaXYuZGlzcGF0Y2hFdmVudCh3aGVlbEV2ZW50KTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3QgSE9NRS9FTkQgb3BlcmF0aW9uLgorICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICAgICAg
d2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIpOworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRFcXVhbCgiS2V5RG93biBIT01FIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24g
dG8gcmlnaHQgZm9yIFJUTCBwYWdlIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkp
OworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlbmQiKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoIktleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9z
aXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3Qgc2VsZWN0
IGFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudCBjb250ZW50LgorICAgICAgICAgICAgICAgIHdpbmRv
dy5yZXNpemVUbyg1MDAsIDUwMCk7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAgICBkaXYuZm9jdXMoKTsKKyAg
ICAgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CisgICAgICAg
ICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRFcXVhbCgic2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50Iiwgc2Vs
ZWN0aW9uLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGRpdi5pbm5lckhUTUwubGVuZ3RoKSwgZGl2
LmlubmVySFRNTCk7CisKKyAgICAgICAgICAgICAgICBmaXJzdFRpbWVMb2FkID0gZmFsc2U7CisK
KyAgICAgICAgICAgICAgICAvLyBUZXN0IHJlbG9hZCBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9u
LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBmYWlsIGluIE1BQy4gUmVs
b2FkIHJlc2V0IHNjcm9sbCBwb3NpdGlvbgorICAgICAgICAgICAgICAgIC8vIGluIE1BQy4KKyAg
ICAgICAgICAgICAgICAvLyBTYW1lIGFzIHJlc2l6ZSwgaXQgZG9lcyBmYWlsIHdoZW4gbG9hZCB0
aGUgcGFnZSwKKyAgICAgICAgICAgICAgICAvLyBidXQgd2h5IGl0IHN1Y2NlZWQgd2hlbiBydW4g
cnVuLXdlYmtpdC10ZXN0cz8/PworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBl
Y3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgd2luZG93Lmxv
Y2F0aW9uLnJlbG9hZCgpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJyZWxvYWQgcHJl
c2VydmUgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBkaXI9cnRsPgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0eWxlPSJ3aGl0ZXNwYWNlOm5vd3Jh
cDsgd2lkdGg6IDQwMDBweDsgaGVpZ2h0OiAxMDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsi
PkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0
LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1h
Z25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0
YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNl
cXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRl
IHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2Vw
dGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEg
cXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uIjwvZGl2Pgor
ICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgoKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsX3Njcm9sbGJh
cl9pbl9ydGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2RvbS9ob3Jpem9udGFsX3Njcm9sbGJhcl9pbl9ydGwtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250
YWxfc2Nyb2xsYmFyX2luX3J0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTMgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDEyMjIKKyAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDc4NXg1ODUKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDEyMjIKKyAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1eDEyMjIKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc2OXgxMTk4CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoLTMyMzMs
MCkgc2l6ZSA0MDAyeDEwMDIgW2JvcmRlcjogKDFweCBzb2xpZCAjRkYwMDAwKV0KKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxMjI3LDEpIHNpemUgMjc3NHgxOAorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgxMjI3LDEpIHdpZHRoIDExIFJUTDogIi5cIiIKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMTIzOCwxKSB3aWR0aCAyNzYzOiAiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNv
bnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlk
dW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZl
bmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBh
bGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4g
cmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1
Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5v
biBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5p
bSBpZCBlc3QgbGFib3J1bSIKKyAgICAgIFJlbmRlckJsb2NrIHtVTH0gYXQgKDAsMTAxOCkgc2l6
ZSA3Njl4MTgwCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMCkgc2l6ZSA3Mjl4
MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICg3MzksMCkgc2l6ZSA3eDE4OiBidWxs
ZXQKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDQ3NCwwKSBzaXplIDI1NXgxOAor
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDQ3NCwwKSB3aWR0aCAyNTU6ICJvcmlnaW5hbCBzY3Jv
bGwgeCBmb3IgUlRMIHBhZ2U6IDogU3VjY2VzcyIKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJ
fSBhdCAoMCwxOCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICg3
MzksMCkgc2l6ZSA3eDE4OiBidWxsZXQKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDU2MiwwKSBzaXplIDE2N3gxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDU2MiwwKSB3aWR0
aCAxNjc6ICJob3Jpem9udGFsIHNjcm9sbDogOiBTdWNjZXNzIgorICAgICAgICBSZW5kZXJMaXN0
SXRlbSB7TEl9IGF0ICgwLDM2KSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRlckxpc3RNYXJr
ZXIgYXQgKDczOSwwKSBzaXplIDd4MTg6IGJ1bGxldAorICAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMjkwLDApIHNpemUgNDM5eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjkw
LDApIHdpZHRoIDQzOTogImNvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogRmFpbHVy
ZSwgYWN0dWFsOiAwOyBleHBlY3RlZDogLTEwMDAiCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtM
SX0gYXQgKDAsNTQpIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAo
NzM5LDApIHNpemUgN3gxODogYnVsbGV0CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgyNTYsMCkgc2l6ZSA0NzN4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyNTYsMCkgd2lk
dGggNDczOiAiem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogRmFpbHVy
ZSwgYWN0dWFsOiAwOyBleHBlY3RlZDogLTEwMDAiCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtM
SX0gYXQgKDAsNzIpIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAo
NzM5LDApIHNpemUgN3gxODogYnVsbGV0CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICg0ODAsMCkgc2l6ZSAyNDl4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg0ODAsMCkgd2lk
dGggMjQ5OiAicmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MiCisgICAg
ICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsOTApIHNpemUgNzI5eDE4CisgICAgICAgICAg
UmVuZGVyTGlzdE1hcmtlciBhdCAoNzM5LDApIHNpemUgN3gxODogYnVsbGV0CisgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgzNzMsMCkgc2l6ZSAzNTZ4MTgKKyAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgzNzMsMCkgd2lkdGggMzU2OiAid2hlZWwgc2Nyb2xsIHByZXNlcnZlcyBob3Jp
em9udGFsIHNjcm9sbCBwb3NpdGlvbjogU3VjY2VzcyIKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0g
e0xJfSBhdCAoMCwxMDgpIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBh
dCAoNzM5LDApIHNpemUgN3gxODogYnVsbGV0CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgyNjgsMCkgc2l6ZSA0NjF4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyNjgsMCkg
d2lkdGggNDYxOiAiS2V5RG93biBIT01FIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQg
Zm9yIFJUTCBwYWdlOiBTdWNjZXNzIgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICgw
LDEyNikgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICg3MzksMCkg
c2l6ZSA3eDE4OiBidWxsZXQKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI4Miww
KSBzaXplIDQ0N3gxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI4MiwwKSB3aWR0aCA0NDc6
ICJLZXlEb3duIEVORCBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFn
ZTogU3VjY2VzcyIKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoMCwxNDQpIHNpemUg
NzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoNzM5LDApIHNpemUgN3gxODog
YnVsbGV0CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0ODYsMCkgc2l6ZSAyNDN4
MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg0ODYsMCkgd2lkdGggMjQzOiAic2VsZWN0QWxs
IHNlbGVjdHMgYWxsIGRvY3VtZW50OiBTdWNjZXNzIgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7
TEl9IGF0ICgwLDE2Mikgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0
ICg3MzksMCkgc2l6ZSA3eDE4OiBidWxsZXQKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDQ4MywwKSBzaXplIDI0NngxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDQ4MywwKSB3
aWR0aCAyNDY6ICJyZWxvYWQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzIgorc2Vs
ZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtE
SVZ9IG9mIGJvZHkKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gNjYgb2YgY2hpbGQgMCB7I3Rl
eHR9IG9mIGNoaWxkIDcge0xJfSBvZiBjaGlsZCAzIHtVTH0gb2YgYm9keQorc2Nyb2xsZWQgdG8g
MzIyNSwwCg==
</data>
<flag name="review"
          id="50837"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62753</attachid>
            <date>2010-07-27 15:11:22 -0700</date>
            <delta_ts>2010-08-31 14:00:46 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>23556.v2</filename>
            <type>text/plain</type>
            <size>30308</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDE2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTAtMDctMjcgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0
LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZs
b3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1
NgorCisgICAgICAgIEZvciBSVEwgcGFnZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQg
aW5jbHVkZSBpdCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQu
IFVzZSB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgd2hlbiBzY3JvbGwgYW5kIHBhaW50CisgICAg
ICAgIHRoZSBwYWdlLiBCZWhhdmlvciBvbiBMVFIgcGFnZSBzaG91bGQgYmUgdW50b3VjaGVkIHNp
bmNlIGxlZnQgbGF5b3V0IAorICAgICAgICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBh
Z2UuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRs
Lmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRqdXN0Vmlld1NpemUpOiBTYXZlIG5lZ2F0aXZlIG9mIGxlZnQgbGF5b3V0
IG92ZXJmbG93IGFzIHNjcm9sbCBYIG9yaWdpbi4gQW5kIGluY2x1ZGVzIGxlZnQgbGF5b3V0IG92
ZXJmbG93IGludG8gZG9jdW1lbnQgc2l6ZS4KKyAgICAgICAgKiBwYWdlL21hYy9XZWJDb3JlRnJh
bWVWaWV3Lmg6IEFkZCBtZXRob2RzIGZvciBzZXR0aW5nIGFuZCBnZXR0aW5nIHNjcm9sbCBYIG9y
aWdpbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKTogTWludXMgc2Nyb2xsIFggb3JpZ2luIGZyb20gbWF4
aW11bSBob3Jpem9udGFsIHNjcm9sbCBwb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6Om1pbmltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjphZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
OjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OndoZWVsRXZlbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvU2Nyb2xsVmlld01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRm
b3JtU2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxh
dGZvcm1TZXRTY3JvbGxPcmlnaW5YKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UpOiBQcm9wb2dh
dGUgSFRNTCBib2R5IGRpcmVjdGlvbmFsaXR5IHRvIGl0cyBSZW5kZXJWaWV3LgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RCb3hEZWNvcmF0aW9ucyk6IEluY2x1ZGUgbGVm
dCBsYXlvdXQgb3ZlcmZsb3cgaW50byBjYW52YXMgc2l6ZS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpSZW5kZXJWaWV3
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6IFNhdmUgbGVmdCBsYXlv
dXQgb3ZlcmZsb3cuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpkb2NMZWZ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY1dpZHRoKTogSW5jbHVkZSBsZWZ0IGxheW91
dCBvdmVyZmxvdyBpbnRvIGRvYyB3aWR0aCBmb3IgUlRMIHBhZ2UuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldEJvZHlJ
c0xUUik6CisKIDIwMTAtMDctMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAkocmV2aXNpb24gNjM5MjcpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDI2LDcgKzQyNiw4IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RWaWV3U2l6
ZSgpCiAgICAgaWYgKCFyb290KQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRDb250ZW50c1Np
emUoSW50U2l6ZShyb290LT5yaWdodExheW91dE92ZXJmbG93KCksIHJvb3QtPmJvdHRvbUxheW91
dE92ZXJmbG93KCkpKTsKKyAgICBTY3JvbGxWaWV3OjpzZXRTY3JvbGxPcmlnaW5YKC1yb290LT5s
ZWZ0TGF5b3V0T3ZlcmZsb3coKSk7CisgICAgc2V0Q29udGVudHNTaXplKEludFNpemUocm9vdC0+
cmlnaHRMYXlvdXRPdmVyZmxvdygpIC0gcm9vdC0+bGVmdExheW91dE92ZXJmbG93KCksIHJvb3Qt
PmJvdHRvbUxheW91dE92ZXJmbG93KCkpKTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OmFwcGx5T3Zl
cmZsb3dUb1ZpZXdwb3J0KFJlbmRlck9iamVjdCogbywgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNj
cm9sbGJhck1vZGUmIHZNb2RlKQpJbmRleDogV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVW
aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVWaWV3LmgJ
KHJldmlzaW9uIDYzOTI3KQorKysgV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVWaWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLSAo
dm9pZClzZXRTY3JvbGxpbmdNb2RlczooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSloTW9kZSB2ZXJ0
aWNhbDooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSl2TW9kZSBhbmRMb2NrOihCT09MKWxvY2s7CiAt
ICh2b2lkKXNjcm9sbGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKiloTW9kZSB2ZXJ0
aWNhbDooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSopdk1vZGU7CiAtICh2b2lkKXNldFNjcm9sbEJh
cnNTdXBwcmVzc2VkOihCT09MKXN1cHByZXNzZWQgcmVwYWludE9uVW5zdXBwcmVzczooQk9PTCly
ZXBhaW50OworLSAodm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Nyb2xsT3JpZ2luWDsKKy0g
KGludClzY3JvbGxPcmlnaW5YOwogQGVuZAogCiBAcHJvdG9jb2wgV2ViQ29yZUZyYW1lVmlldwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCShyZXZpc2lvbiA2MzkyNykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAg
U2Nyb2xsVmlldzo6U2Nyb2xsVmlldygpCiAgICAgLCBtX2RyYXdQYW5TY3JvbGxJY29uKGZhbHNl
KQogICAgICwgbV91c2VGaXhlZExheW91dChmYWxzZSkKICAgICAsIG1fcGFpbnRzRW50aXJlQ29u
dGVudHMoZmFsc2UpCisgICAgLCBtX3Njcm9sbE9yaWdpblgoMCkKIHsKICAgICBwbGF0Zm9ybUlu
aXQoKTsKIH0KQEAgLTI2OCw5ICsyNjksMjEgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRDb250ZW50
c1NpemUoY29uc3QgSQogCiBJbnRQb2ludCBTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKSBjb25zdAogewotICAgIEludFNpemUgbWF4aW11bU9mZnNldCA9IGNvbnRlbnRzU2l6ZSgp
IC0gdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOworICAgIEludFBvaW50IG1heGltdW1PZmZz
ZXQoY29udGVudHNXaWR0aCgpIC0gdmlzaWJsZVdpZHRoKCkgLSBtX3Njcm9sbE9yaWdpblgsIGNv
bnRlbnRzSGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkpOwogICAgIG1heGltdW1PZmZzZXQuY2xh
bXBOZWdhdGl2ZVRvWmVybygpOwotICAgIHJldHVybiBJbnRQb2ludChtYXhpbXVtT2Zmc2V0Lndp
ZHRoKCksIG1heGltdW1PZmZzZXQuaGVpZ2h0KCkpOworICAgIHJldHVybiBtYXhpbXVtT2Zmc2V0
OworfQorCitJbnRQb2ludCBTY3JvbGxWaWV3OjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25z
dAoreworICAgIHJldHVybiBJbnRQb2ludCgtbV9zY3JvbGxPcmlnaW5YLCAwKTsKK30KKworSW50
UG9pbnQgU2Nyb2xsVmlldzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShjb25zdCBJ
bnRQb2ludCYgc2Nyb2xsUG9pbnQpIGNvbnN0Cit7CisgICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9z
aXRpb24gPSBzY3JvbGxQb2ludC5zaHJ1bmtUbyhtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7Cisg
ICAgbmV3U2Nyb2xsUG9zaXRpb24gPSBuZXdTY3JvbGxQb3NpdGlvbi5leHBhbmRlZFRvKG1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpKTsKKyAgICByZXR1cm4gbmV3U2Nyb2xsUG9zaXRpb247CiB9CiAK
IHZvaWQgU2Nyb2xsVmlldzo6dmFsdWVDaGFuZ2VkKFNjcm9sbGJhciogc2Nyb2xsYmFyKQpAQCAt
Mjc5LDcgKzI5Miw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dmFsdWVDaGFuZ2VkKFNjcm9sbGJhcioK
ICAgICBJbnRTaXplIG5ld09mZnNldCA9IG1fc2Nyb2xsT2Zmc2V0OwogICAgIGlmIChzY3JvbGxi
YXIpIHsKICAgICAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyKQotICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKHNjcm9sbGJhci0+dmFs
dWUoKSk7CisgICAgICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoc2Nyb2xsYmFyLT52YWx1ZSgp
IC0gbV9zY3JvbGxPcmlnaW5YKTsKICAgICAgICAgZWxzZSBpZiAoc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICAgICAgbmV3T2Zmc2V0LnNldEhl
aWdodChzY3JvbGxiYXItPnZhbHVlKCkpOwogICAgIH0KQEAgLTMwNSw4ICszMTgsNyBAQCB2b2lk
IFNjcm9sbFZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBJbnRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvaW50LnNocnVu
a1RvKG1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKLSAgICBuZXdTY3JvbGxQb3NpdGlvbi5jbGFt
cE5lZ2F0aXZlVG9aZXJvKCk7CisgICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBhZGp1
c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKHNjcm9sbFBvaW50KTsKIAogICAgIGlmIChuZXdT
Y3JvbGxQb3NpdGlvbiA9PSBzY3JvbGxQb3NpdGlvbigpKQogICAgICAgICByZXR1cm47CkBAIC00
MTksMTAgKzQzMSwxMCBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3Qg
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW5VcGRhdGVTY3JvbGxiYXJzID0gdHJ1ZTsKLSAg
ICBJbnRTaXplIG1heFNjcm9sbFBvc2l0aW9uKGNvbnRlbnRzV2lkdGgoKSAtIHZpc2libGVXaWR0
aCgpLCBjb250ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpKTsKLSAgICBJbnRTaXplIHNj
cm9sbCA9IGRlc2lyZWRPZmZzZXQuc2hydW5rVG8obWF4U2Nyb2xsUG9zaXRpb24pOwotICAgIHNj
cm9sbC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gCisKKyAgICBJbnRQb2ludCBzY3JvbGxQb2lu
dCA9IGFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UoSW50UG9pbnQoZGVzaXJlZE9mZnNl
dC53aWR0aCgpLCBkZXNpcmVkT2Zmc2V0LmhlaWdodCgpKSk7CisgICAgSW50U2l6ZSBzY3JvbGwo
c2Nyb2xsUG9pbnQueCgpLCBzY3JvbGxQb2ludC55KCkpOworCiAgICAgaWYgKG1faG9yaXpvbnRh
bFNjcm9sbGJhcikgewogICAgICAgICBpbnQgY2xpZW50V2lkdGggPSB2aXNpYmxlV2lkdGgoKTsK
ICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzV2lkdGgo
KSA+IGNsaWVudFdpZHRoKTsKQEAgLTQ0MCw3ICs0NTIsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIt
PnNldFN1cHByZXNzSW52YWxpZGF0aW9uKHRydWUpOwogICAgICAgICBtX2hvcml6b250YWxTY3Jv
bGxiYXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXAp
OwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lk
dGgsIGNvbnRlbnRzV2lkdGgoKSk7Ci0gICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0
VmFsdWUoc2Nyb2xsLndpZHRoKCkpOworICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNl
dFZhbHVlKHNjcm9sbC53aWR0aCgpICsgbV9zY3JvbGxPcmlnaW5YKTsKICAgICAgICAgaWYgKG1f
c2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIt
PnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsgCiAgICAgfSAKQEAgLTk1MCw2ICs5NjIs
MTYgQEAgdm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVQYW5TY3JvbGxJY29uKCkKICAgICBob3N0V2lu
ZG93KCktPmludmFsaWRhdGVDb250ZW50c0FuZFdpbmRvdyhJbnRSZWN0KG1fcGFuU2Nyb2xsSWNv
blBvaW50LCBJbnRTaXplKHBhbkljb25TaXplTGVuZ3RoLCBwYW5JY29uU2l6ZUxlbmd0aCkpLCB0
cnVlIC8qaW1tZWRpYXRlKi8pOwogfQogCisKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsT3Jp
Z2luWChpbnQgeCkKK3sgCisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHBsYXRm
b3JtU2V0U2Nyb2xsT3JpZ2luWCh4KTsKKyAgICBlbHNlCisgICAgICAgIG1fc2Nyb2xsT3JpZ2lu
WCA9IHg7Cit9CisKKwogI2lmICFQTEFURk9STShXWCkgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBM
QVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oRUZMKQogCiB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3Jt
SW5pdCgpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkocmV2aXNpb24gNjM5MjcpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0Niw5
IEBAIHB1YmxpYzoKICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCk7IH0KICAgICBJbnRTaXplIHNjcm9sbE9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgLSBJ
bnRQb2ludCgpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVkIHBvc2l0aW9uIGFzIGFuIEludFNpemUu
IENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBzaXplcy4KICAgICBJbnRQb2ludCBtYXhp
bXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1heGltdW0gcG9zaXRpb24gd2UgY2Fu
IGJlIHNjcm9sbGVkIHRvLgorICAgIEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNv
bnN0OyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCisgICAg
Ly8gQWRqdXN0IHRoZSBwYXNzIGluIHNjcm9sbCBwb3NpdGlvbiB3aXRoaW4gdGhlIG1pbmltdW0g
YW5kIG1heGltdW0gcG9zaXRpb25zLgorICAgIEludFBvaW50IGFkanVzdFNjcm9sbFBvc2l0aW9u
V2l0aGluUmFuZ2UoY29uc3QgSW50UG9pbnQmKSBjb25zdDsgCiAgICAgaW50IHNjcm9sbFgoKSBj
b25zdCB7IHJldHVybiBzY3JvbGxQb3NpdGlvbigpLngoKTsgfQogICAgIGludCBzY3JvbGxZKCkg
Y29uc3QgeyByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS55KCk7IH0KICAgICAKQEAgLTI2MSw2ICsy
NjQsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGJsaXR0aW5n
IHRoZSBwaXhlbHMKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAKKyAgICB2b2lkIHNldFNjcm9sbE9yaWdpblgoaW50KTsK
KwogcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3JvbGxiYXI7
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKQEAgLTI5NCw2ICsy
OTksMTEgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wYWludHNFbnRpcmVDb250ZW50czsKIAor
ICAgIC8vIG1fc2Nyb2xsT3JpZ2luWCBpcyAwIGZvciBMVFIgcGFnZS4gQW5kIGl0IGlzIG5lZ2F0
aXZlIG9mIGxlZnQgbGF5b3V0CisgICAgLy8gb3ZlcmZsb3cgZm9yIFJUTCBwYWdlLiBJdCBpcyBt
YWlubHkgdXNlZCB0byBzZXQgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyCisgICAgLy8gcG9zaXRp
b24gZm9yIFJUTCBwYWdlLgorICAgIGludCBtX3Njcm9sbE9yaWdpblg7CisKICAgICB2b2lkIGlu
aXQoKTsKICAgICB2b2lkIGRlc3Ryb3koKTsKIApAQCAtMzIxLDYgKzMzMSw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdXBwcmVzc2VkKGJvb2wgcmVwYWludE9u
VW5zdXBwcmVzcyk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNv
bnN0IEludFJlY3QmLCBib29sIG5vdyk7CiAgICAgYm9vbCBwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkg
Y29uc3Q7CisgICAKKyAgICB2b2lkIHBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luWChpbnQpOwogCiAj
aWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkIF9fT0JKQ19fCiBwdWJsaWM6CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0JKHJldmlzaW9uIDYzOTI3KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcg
KzE0Nyw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJzU3UKIHZvaWQg
U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Ny
b2xsUG9pbnQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIE5TUG9p
bnQgdGVtcFBvaW50ID0geyBtYXgoMCwgc2Nyb2xsUG9pbnQueCgpKSwgbWF4KDAsIHNjcm9sbFBv
aW50LnkoKSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRvIHdvcmsgYXJvdW5kIDQyMTMz
MTQuCisgICAgTlNQb2ludCB0ZW1wUG9pbnQgPSB7IG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxP
cmlnaW5YXSwgc2Nyb2xsUG9pbnQueCgpKSwgbWF4KDAsIHNjcm9sbFBvaW50LnkoKSkgfTsgLy8g
RG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCiAgICAgW2RvY3Vt
ZW50VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKIH0KQEAgLTIwMiw0ICsyMDIsMTEgQEAgYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9y
bUlzT2Zmc2NyZWVuKCkgYwogICAgIHJldHVybiAhW3BsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSB8
fCAhW1twbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gaXNWaXNpYmxlXTsKIH0KIAordm9pZCBTY3Jv
bGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50IHgpCit7CisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOworICAgIFtzY3JvbGxWaWV3KCkgc2V0U2Nyb2xsT3JpZ2luWDp4
XTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDYzOTI3KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDgg
KzE4NSwxMCBAQCB2b2lkIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmCiAgICAg
fQogCiAgICAgLy8gU2V0IHRoZSB0ZXh0IGNvbG9yIGlmIHdlJ3JlIHRoZSBib2R5LgotICAgIGlm
IChpc0JvZHkoKSkKKyAgICBpZiAoaXNCb2R5KCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0
VGV4dENvbG9yKHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9y
KSk7CisgICAgICAgIHZpZXcoKS0+c2V0Qm9keUlzTFRSKHN0eWxlKCktPmRpcmVjdGlvbigpID09
IExUUik7CisgICAgfQogfQogCiB2b2lkIFJlbmRlckJveDo6dXBkYXRlQm94TW9kZWxJbmZvRnJv
bVN0eWxlKCkKQEAgLTYwOSw4ICs2MTEsOCBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRSb290Qm94
RGVjb3JhdGlvbnMoCiAKICAgICAvLyBDU1MyIDE0LjI6CiAgICAgLy8gVGhlIGJhY2tncm91bmQg
b2YgdGhlIGJveCBnZW5lcmF0ZWQgYnkgdGhlIHJvb3QgZWxlbWVudCBjb3ZlcnMgdGhlIGVudGly
ZSBjYW52YXMgaW5jbHVkaW5nCi0gICAgLy8gaXRzIG1hcmdpbnMuCi0gICAgaW50IGJ4ID0gdHgg
LSBtYXJnaW5MZWZ0KCk7CisgICAgLy8gaXRzIG1hcmdpbnMsIGFuZCBpbmNsdWRpbmcgaXRzIGxl
ZnQgbGF5b3V0IG92ZXJmbG93LgorICAgIGludCBieCA9IHR4IC0gbWFyZ2luTGVmdCgpICsgdmll
dygpLT5sZWZ0TGF5b3V0T3ZlcmZsb3coKTsKICAgICBpbnQgYnkgPSB0eSAtIG1hcmdpblRvcCgp
OwogICAgIGludCBidyA9IG1heCh3ICsgbWFyZ2luTGVmdCgpICsgbWFyZ2luUmlnaHQoKSArIGJv
cmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCksIHJ3KTsKICAgICBpbnQgYmggPSBtYXgoaCArIG1h
cmdpblRvcCgpICsgbWFyZ2luQm90dG9tKCkgKyBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgp
LCByaCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gNjM5MjcpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NiArNTYsNyBAQCBSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KE5vZGUqIG5vZGUsIEZyYW1lCiAgICAg
LCBtX2ZvcmNlZFBhZ2VCcmVhayhmYWxzZSkKICAgICAsIG1fbGF5b3V0U3RhdGUoMCkKICAgICAs
IG1fbGF5b3V0U3RhdGVEaXNhYmxlQ291bnQoMCkKKyAgICAsIG1fYm9keUlzTFRSKHRydWUpCiB7
CiAgICAgLy8gQ2xlYXIgb3VyIGFub255bW91cyBiaXQsIHNldCBiZWNhdXNlIFJlbmRlck9iamVj
dCBhc3N1bWVzCiAgICAgLy8gYW55IHJlbmRlcmVyIHdpdGggZG9jdW1lbnQgYXMgdGhlIG5vZGUg
aXMgYW5vbnltb3VzLgpAQCAtMTI1LDggKzEyNiw4IEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0
KCkKIAogICAgIC8vIFJlc2V0IG92ZXJmbG93IGFuZCB0aGVuIHJlcGxhY2UgaXQgd2l0aCBkb2NX
aWR0aCBhbmQgZG9jSGVpZ2h0LgogICAgIG1fb3ZlcmZsb3cuY2xlYXIoKTsKLSAgICBhZGRMYXlv
dXRPdmVyZmxvdyhJbnRSZWN0KDAsIDAsIGRvY1dpZHRoKCksIGRvY0hlaWdodCgpKSk7Ci0KKyAg
ICBpbnQgbGVmdE92ZXJmbG93ID0gZG9jTGVmdCgpOworICAgIGFkZExheW91dE92ZXJmbG93KElu
dFJlY3QobGVmdE92ZXJmbG93LCAwLCBkb2NXaWR0aChsZWZ0T3ZlcmZsb3cpLCBkb2NIZWlnaHQo
KSkpOwogCiAgICAgQVNTRVJUKGxheW91dERlbHRhKCkgPT0gSW50U2l6ZSgpKTsKICAgICBBU1NF
UlQobV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCA9PSAwKTsKQEAgLTYzMCw5ICs2MzEsMTUgQEAg
aW50IFJlbmRlclZpZXc6OmRvY0hlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIGg7CiB9CiAKLWlu
dCBSZW5kZXJWaWV3Ojpkb2NXaWR0aCgpIGNvbnN0CitpbnQgUmVuZGVyVmlldzo6ZG9jTGVmdCgp
IGNvbnN0Cit7CisgICAgLy8gQ2xpcCBvdXQgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZS4KKyAg
ICByZXR1cm4gbV9ib2R5SXNMVFIgPyAwIDogc3RkOjptaW4oMCwgbGVmdG1vc3RQb3NpdGlvbigp
KTsKK30KKworaW50IFJlbmRlclZpZXc6OmRvY1dpZHRoKGludCBsZWZ0T3ZlcmZsb3cpIGNvbnN0
CiB7Ci0gICAgaW50IHcgPSByaWdodG1vc3RQb3NpdGlvbigpOworICAgIGludCB3ID0gbV9ib2R5
SXNMVFIgPyByaWdodG1vc3RQb3NpdGlvbigpIDogd2lkdGgoKSAtIGxlZnRPdmVyZmxvdzsKIAog
ICAgIGZvciAoUmVuZGVyQm94KiBjID0gZmlyc3RDaGlsZEJveCgpOyBjOyBjID0gYy0+bmV4dFNp
YmxpbmdCb3goKSkgewogICAgICAgICBpbnQgZHcgPSBjLT53aWR0aCgpICsgYy0+bWFyZ2luTGVm
dCgpICsgYy0+bWFyZ2luUmlnaHQoKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHJldmlz
aW9uIDYzOTI3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjcsNiArMTY3LDggQEAgcHVibGljOgogICAgIGJvb2wgdXNlc0NvbXBvc2l0aW5n
KCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0Qm9keUlzTFRSKGJvb2wgYm9keUlzTFRS
KSB7IG1fYm9keUlzTFRSID0gYm9keUlzTFRSOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZp
eGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CkBAIC0xNzUs
NyArMTc3LDggQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFJlcGFpbnQoY29uc3QgSW50UmVj
dCYgcikgY29uc3Q7CiAgICAgICAgIAogICAgIGludCBkb2NIZWlnaHQoKSBjb25zdDsKLSAgICBp
bnQgZG9jV2lkdGgoKSBjb25zdDsKKyAgICBpbnQgZG9jTGVmdCgpIGNvbnN0OworICAgIGludCBk
b2NXaWR0aChpbnQpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgRnJhbWVWaWV3KiBtX2ZyYW1l
VmlldzsKQEAgLTIwNiw2ICsyMDksNyBAQCBwcml2YXRlOgogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKICAgICBPd25QdHI8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPiBtX2NvbXBvc2l0
b3I7CiAjZW5kaWYKKyAgICBib29sIG1fYm9keUlzTFRSOwogfTsKIAogaW5saW5lIFJlbmRlclZp
ZXcqIHRvUmVuZGVyVmlldyhSZW5kZXJPYmplY3QqIG9iamVjdCkKSW5kZXg6IFdlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2
NDE2MCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTAtMDctMjcgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0LXRvLWxlZnQg
cGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZsb3cuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1NgorCisgICAg
ICAgIEluIE1hYyBwb3J0LCBzZXQgYW5kIGdldCB0aGUgb3JpZ2luYWwgeC1heGlzIHNjcm9sbCBw
b3NpdGlvbi4KKyAgICAgICAgQW5kIHJlc2V0IHNjcm9sbCBwb3NpdGlvbiB3aGVuIHByZXNzIEhP
TUUvRU5EIGtleS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgc2V0U2Nyb2xsT3JpZ2lu
WDpdKToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNjcm9sbE9yaWdpblhd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAgKC1bV2ViRnJh
bWVWaWV3IF9zY3JvbGxUb0JlZ2lubmluZ09mRG9jdW1lbnRdKToKKyAgICAgICAgKC1bV2ViRnJh
bWVWaWV3IF9zY3JvbGxUb0VuZE9mRG9jdW1lbnRdKToKKwogMjAxMC0wNy0yNyAgU3RldmUgQmxv
Y2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15
IE9ybG93LgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJh
cnNWaWV3Lm1tCShyZXZpc2lvbiA2MzkyNykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5h
bWljU2Nyb2xsQmFyc1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDkgQEAgc3Ry
dWN0IFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld1ByaXZhdGUgewogICAgIGJvb2wgYWx3YXlzSGlk
ZVZlcnRpY2FsU2Nyb2xsZXI7CiAgICAgYm9vbCBob3Jpem9udGFsU2Nyb2xsaW5nQWxsb3dlZEJ1
dFNjcm9sbGVySGlkZGVuOwogICAgIGJvb2wgdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Ny
b2xsZXJIaWRkZW47CisKKyAgICAvLyBzY3JvbGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlIGFu
ZCBpcyB0aGUgbmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgdmFsdWUgZm9yIFJUTCBw
YWdlLgorICAgIGludCBzY3JvbGxPcmlnaW5YOwogfTsKIAogQGltcGxlbWVudGF0aW9uIFdlYkR5
bmFtaWNTY3JvbGxCYXJzVmlldwpAQCAtNTI1LDQgKzUyOCwzMCBAQCAtIChCT09MKWFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQgCiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
XTsKIH0KIAorLSAodm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Nyb2xsT3JpZ2luWAorewor
ICAgIF9wcml2YXRlLT5zY3JvbGxPcmlnaW5YID0gc2Nyb2xsT3JpZ2luWDsKKworICAgIC8vIFRo
ZXJlIGFwcGVhcnMgdG8gYmUgYSBidWcgcmVsYXRlZCB0byBwYWdlIHpvb20gYW5kIHBhZ2UgbG9h
ZC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4NjMu
CisgICAgaWYgKHNjcm9sbE9yaWdpblgpIHsKKyAgICAgICAgLy8gIi1bc2VsZiBzY3JvbGxPcmln
aW5YXSIgZXF1YWxzIHRvIGxlZnQgbGF5b3V0IG92ZXJmbG93LgorICAgICAgICAvLyBTZXQgbGVm
dCBsYXlvdXQgb3ZlcmZsb3cgaW50byBkb2N1bWVudCB2aWV3J3MgYm91bmRzIHgtYXhpcyBvcmln
aW4gdG8gY292ZXIgdGhlIGVudGlyZSBjYW52YXMuCisgICAgICAgIE5TVmlldyAqZG9jdW1lbnRW
aWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKKyAgICAgICAgW2RvY3VtZW50VmlldyBzZXRCb3Vu
ZHNPcmlnaW46TlNNYWtlUG9pbnQoLXNjcm9sbE9yaWdpblgsIFtkb2N1bWVudFZpZXcgYm91bmRz
XS5vcmlnaW4ueSldOworCisgICAgICAgIC8vIFNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9pbnQg
dG8gYmUgcmlnaHQtYm90dG9tIGZvciBSVEwgcGFnZS4KKyAgICAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIGluIHNvbWV3aGVyZSBlbHNlLCBvdGhlcndpc2UsCisgICAgICAgIC8vIGJvdGgg
c2Nyb2xsYmFycyBhcmUgcmVzZXQgdG8gb3JpZ2luYWwgcG9zaXRpb24gd2hlbiByZWZyZXNoIHBh
Z2UsIHJlc2l6ZSBwYWdlIGV0Yy4KKyAgICAgICAgTlNQb2ludCBwb2ludCA9IFtbc2VsZiBkb2N1
bWVudFZpZXddIGZyYW1lXS5vcmlnaW47CisgICAgICAgIHBvaW50LnggKz0gc2Nyb2xsT3JpZ2lu
WDsKKyAgICAgICAgW1tzZWxmIGNvbnRlbnRWaWV3XSBzY3JvbGxUb1BvaW50OnBvaW50XTsKKyAg
ICB9Cit9CisKKy0gKGludClzY3JvbGxPcmlnaW5YCit7CisgICAgcmV0dXJuIF9wcml2YXRlLT5z
Y3JvbGxPcmlnaW5YOworfQorCiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWVWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcu
bW0JKHJldmlzaW9uIDYzOTI3KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTM2LDYgKzUzNiw3IEBAIC0gKEJPT0wpX3Njcm9sbFRvQmVn
aW5uaW5nT2ZEb2N1bWVudAogICAgIGlmICghW3NlbGYgX2lzU2Nyb2xsYWJsZV0pCiAgICAgICAg
IHJldHVybiBOTzsKICAgICBOU1BvaW50IHBvaW50ID0gW1tbc2VsZiBfc2Nyb2xsVmlld10gZG9j
dW1lbnRWaWV3XSBmcmFtZV0ub3JpZ2luOworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxW
aWV3XSBzY3JvbGxPcmlnaW5YXTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10gX3Nj
cm9sbFRvOiZwb2ludCBhbmltYXRlOllFU107CiB9CiAKQEAgLTU0Nyw2ICs1NDgsNyBAQCAtIChC
T09MKV9zY3JvbGxUb0VuZE9mRG9jdW1lbnQKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5TUmVj
dCBmcmFtZSA9IFtbW3NlbGYgX3Njcm9sbFZpZXddIGRvY3VtZW50Vmlld10gZnJhbWVdOwogICAg
IE5TUG9pbnQgcG9pbnQgPSBOU01ha2VQb2ludChmcmFtZS5vcmlnaW4ueCwgTlNNYXhZKGZyYW1l
KSk7CisgICAgcG9pbnQueCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhdOwog
ICAgIHJldHVybiBbW3NlbGYgX2NvbnRlbnRWaWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1hdGU6
WUVTXTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjQxNjApCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNy0yNyAgWGlhb21l
aSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmlnaHQtdG8tbGVmdCBwYWdlcyBzaG91bGQgYmUgc2Nyb2xsYWJs
ZSB0byByZXZlYWwgbGVmdCBvdmVyZmxvdy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNTU2CisKKyAgICAgICAgRm9yIFJUTCBwYWdlLCBzYXZlIGxl
ZnQgbGF5b3V0IG92ZXJmbG93IGFuZCBpbmNsdWRlIGl0IGludG8gdGhlIGRvY3VtZW50CisgICAg
ICAgIHNpemUgZHVyaW5nIGxheW91dC4gVXNlIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdyB3aGVu
IHNjcm9sbCBhbmQgcGFpbnQKKyAgICAgICAgdGhlIHBhZ2UuIEJlaGF2aW9yIG9uIExUUiBwYWdl
IHNob3VsZCBiZSB1bnRvdWNoZWQgc2luY2UgbGVmdCBsYXlvdXQgCisgICAgICAgIG92ZXJmbG93
IGlzIHNldCBhcyAwIGZvciBMVFIgcGFnZS4KKworICAgICAgICAqIGZhc3QvZG9tL2hvcml6b250
YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
ZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisKIDIwMTAtMDctMjcgIFZpY3RvciBXYW5nICA8dmljdG9yd0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIGNocm9taXVtIHRlc3QgZXhwZWN0YXRpb25zIGZvciBm
YWlsZWQgdGVzdCBvbiBtYWM6CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFs
LXNjcm9sbGJhci1pbi1ydGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEzMiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3Jp
cHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFw
cGVuZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAg
ICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBh
Y3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0
VHJ1ZShtZXNzYWdlLCBmYWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChm
YWN0KQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJl
Iik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiAr
IG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFggPSAtMTAwMDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFNjcm9sbFkgPSA1MDA7CisKKyAgICAgICAgICAgIHZhciBmaXJzdFRpbWVMb2FkID0g
dHJ1ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gbW91c2V3aGVlbEhhbmRs
ZXIoZSkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoIndoZWVs
IHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Ny
b2xsWCwgZXhwZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgb25sb2FkID0gZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGlmICghZmlyc3RUaW1lTG9hZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICAgICAgLy8gVGVzdCBob3Jpem9udGFsIHNjcm9sbCBiYXIgcHJlc2VudHMgYW5k
IHdhcyBpbml0aWFsbHkgYXQgdGhlIHJpZ2h0IGZvciBSVEwgcGFnZS4KKyAgICAgICAgICAgICAg
ICBhc3NlcnRFcXVhbCgib3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlOiAiLCB3aW5kb3cu
c2Nyb2xsWCwgMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IGhvcml6
b250YWwgc2Nyb2xsLgorICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNj
cm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoImhv
cml6b250YWwgc2Nyb2xsOiAiLCB3aW5kb3cuc2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxYKTsKKwor
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHdpbmRvdy5zY3JvbGxYIGNh
biBub3QgYmUgY2FsbGVkIGNvbnRpbm91c2x5IGluIE1hYyBiZWNhdXNlCisgICAgICAgICAgICAg
ICAgLy8gc2Nyb2xsIHBvc2l0aW9uIGlzIHJlc2V0IGluIHRoZSBmb2xsb3dpbmcgY2FsbCBzdGFj
azoKKyAgICAgICAgICAgICAgICAvLyAxIzAgIFdlYkNvcmU6OkZyYW1lVmlldzo6YWRqdXN0Vmll
d1NpemUgKHRoaXM9MHgxMTNjYTIyMjApIGF0IC9leHBvcnQvV2ViS2l0L1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwOjQzMQorICAgICAgICAgICAgICAgIC8vICMxICAweDAwMDAwMDAxMDEzN2M1
MTMgaW4gV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQgKHRoaXM9MHgxMTNjYTIyMjAsIGFsbG93
U3VidHJlZT10cnVlKSBhdCAvZXhwb3J0L1dlYktpdC9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cDo3ODEKKyAgICAgICAgICAgICAgICAvLyAjMiAgMHgwMDAwMDAwMTAxMWRiYTAzIGluIFdlYkNv
cmU6OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXQgKHRoaXM9MHgxMTIxODZjMDApIGF0IC9leHBvcnQv
V2ViS2l0L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcDoxNDU2CisgICAgICAgICAgICAgICAgLy8g
IzMgIDB4MDAwMDAwMDEwMTFkZTE4ZiBpbiBXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzICh0aGlzPTB4MTEyMTg2YzAwKSBhdCAvZXhwb3J0L1dl
YktpdC9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHA6MTQ4NworICAgICAgICAgICAgICAgIC8vICM0
ICAweDAwMDAwMDAxMDEyY2QwNzYgaW4gV2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxYICh0aGlz
PTB4MTEzY2EyZjIwKSBhdCAvZXhwb3J0L1dlYktpdC9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cDoxMDU3CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgiY29udGlu
dW91c2x5IGNhbGwgd2luZG93LnNjcm9sbFggIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Ny
b2xsWCk7CisgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBGQUlMIGlu
IE1hYy4gU2Nyb2xsIHBvc2l0aW9uIHJlc2V0IHdoZW4gem9vbSBwYWdlLgorICAgICAgICAgICAg
ICAgIC8vIFRlc3Qgem9vbWluZyB3b250IHJlc2V0IHNjcm9sbCBwb3NpdGlvbi4KKyAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHdp
bmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlSW4oKTsKKyAgICAgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VJbigpOworICAgICAgICAgICAgICAgICAgICBldmVudFNl
bmRlci56b29tUGFnZUluKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIuem9vbVBhZ2VPdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
em9vbVBhZ2VPdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VP
dXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInpvb20gaW4gYW5kIG91dCBw
cmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWCxleHBlY3RlZFNjcm9sbFgp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiByZXNpemUgd2lsbCByZXNldCBzY3JvbGwgcG9zaXRpb24gaW4gTWFjLCBzbywgdGhl
IGZvbGxvd2luZworICAgICAgICAgICAgICAgIC8vIGFzc2VydCBzaG91bGQgZmFpbCBpbiBNYWMu
CisgICAgICAgICAgICAgICAgLy8gSXQgZG9lcyBmYWlsIHdoZW4gbG9hZCB0aGlzIHBhZ2UgdGhy
b3VnaCBydW4tc2FmYXJpLgorICAgICAgICAgICAgICAgIC8vIEJ1dCB3aHkgaXQgc3VjY2VlZHMg
dGhyb3VnaCBydW4td2Via2l0LXRlc3RzPz8/CisgICAgICAgICAgICAgICAgLy8gVGVzdCByZXNp
emUgd29udCByZXNldCBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgICAgICAgICAgd2luZG93LnJl
c2l6ZVRvKDEwMDAsIHdpbmRvdy5pbm5lckhlaWdodCk7CisgICAgICAgICAgICAgICAgd2luZG93
LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAg
ICAgICB3aW5kb3cucmVzaXplVG8oMjAwMCwgd2luZG93LmlubmVySGVpZ2h0KTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRFcXVhbCgicmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb24iLCB3
aW5kb3cuc2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAvLyBUZXN0IHdoZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3Jv
bGwgcG9zaXRpb24uCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgdGhlIHJpZ2h0
IHdheSB0byB0ZXN0IHRoYXQgbW91c2Ugd2hlZWwKKyAgICAgICAgICAgICAgICAvLyB3aGljaCBt
b3ZlcyB2ZXJ0aWNhbCBzY3JvbGxiYXIgc2hvdWxkIHByZXNlcnZlcyBob3Jpem9udGFsCisgICAg
ICAgICAgICAgICAgLy8gc2Nyb2xsIHBvc2l0aW9uPworICAgICAgICAgICAgICAgIHdpbmRvdy5z
Y3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSAvIDIpOworICAgICAgICAg
ICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisgICAgICAg
ICAgICAgICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCBtb3VzZXdoZWVsSGFu
ZGxlciwgZmFsc2UpOworICAgICAgICAgICAgICAgIHZhciB3aGVlbEV2ZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRXZlbnQoIldoZWVsRXZlbnQiKTsKKyAgICAgICAgICAgICAgICB3aGVlbEV2ZW50Lmlu
aXRXZWJLaXRXaGVlbEV2ZW50KDAsIGV4cGVjdGVkU2Nyb2xsWSAvIDIsIHdpbmRvdywgMCwgMCwg
MCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRpdi5k
aXNwYXRjaEV2ZW50KHdoZWVsRXZlbnQpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
Ly8gVGVzdCBIT01FL0VORCBvcGVyYXRpb24uCisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0
ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5rZXlEb3duKCJob21lIik7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJL
ZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2Ui
LCB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxU
byhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oImVuZCIpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRF
cXVhbCgiS2V5RG93biBFTkQgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRM
IHBhZ2UiLCB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCBzZWxlY3QgYWxsIHNlbGVjdHMgYWxsIGRvY3Vt
ZW50IGNvbnRlbnQuCisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKDUwMCwgNTAwKTsK
KyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIp
OworICAgICAgICAgICAgICAgIGRpdi5mb2N1cygpOworICAgICAgICAgICAgICAgIGRvY3VtZW50
LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9u
ID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJz
ZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQiLCBzZWxlY3Rpb24udG9TdHJpbmcoKS5zdWJz
dHJpbmcoMCwgZGl2LmlubmVySFRNTC5sZW5ndGgpLCBkaXYuaW5uZXJIVE1MKTsKKworICAgICAg
ICAgICAgICAgIGZpcnN0VGltZUxvYWQgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIC8vIFRl
c3QgcmVsb2FkIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IHRoaXMgc2hvdWxkIGZhaWwgaW4gTWFjLiBSZWxvYWQgcmVzZXQgc2Nyb2xsIHBvc2l0
aW9uCisgICAgICAgICAgICAgICAgLy8gaW4gTWFjLgorICAgICAgICAgICAgICAgIC8vIFNhbWUg
YXMgcmVzaXplLCBpdCBkb2VzIGZhaWwgd2hlbiBsb2FkIHRoZSBwYWdlLAorICAgICAgICAgICAg
ICAgIC8vIGJ1dCB3aHkgaXQgc3VjY2VlZCB3aGVuIHJ1biBydW4td2Via2l0LXRlc3RzPz8/Cisg
ICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRT
Y3JvbGxZKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInJlbG9hZCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb24i
LCB3aW5kb3cuc2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IGRpcj1ydGw+CisgICAgICAgIDxk
aXYgaWQ9ImRpdiIgc3R5bGU9IndoaXRlc3BhY2U6bm93cmFwOyB3aWR0aDogNDAwMHB4OyBoZWln
aHQ6IDEwMDBweDsgYm9yZGVyOiAxcHggc29saWQgcmVkOyI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0
IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBv
ciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFk
IG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMg
bmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUg
ZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9s
b3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3Vw
aWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBt
b2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4iPC9kaXY+CisgICAgICAgIDx1bCBpZD0iY29uc29s
ZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRh
bC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACitsYXllciBhdCAoMCwwKSBz
aXplIDc4NXgxMjIyCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA3ODV4NTg1CitsYXllciBh
dCAoMCwwKSBzaXplIDc4NXgxMjIyCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDc4NXgxMjIyCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4MTE5OAor
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKC0zMjMzLDApIHNpemUgNDAwMngxMDAyIFtib3Jk
ZXI6ICgxcHggc29saWQgI0ZGMDAwMCldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MTIyNywxKSBzaXplIDI3NzR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTIyNywxKSB3aWR0
aCAxMSBSVEw6ICIuXCIiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEyMzgsMSkgd2lkdGggMjc2
MzogIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBl
bGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3Jl
IG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVy
Y2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNv
bnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0
YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4
Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3Vs
cGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0iCisgICAg
ICBSZW5kZXJCbG9jayB7VUx9IGF0ICgwLDEwMTgpIHNpemUgNzY5eDE4MAorICAgICAgICBSZW5k
ZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDApIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlz
dE1hcmtlciBhdCAoNzM5LDApIHNpemUgN3gxODogYnVsbGV0CisgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICg0NzQsMCkgc2l6ZSAyNTV4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICg0NzQsMCkgd2lkdGggMjU1OiAib3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlOiA6IFN1
Y2Nlc3MiCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMTgpIHNpemUgNzI5eDE4
CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoNzM5LDApIHNpemUgN3gxODogYnVsbGV0
CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg1NjIsMCkgc2l6ZSAxNjd4MTgKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICg1NjIsMCkgd2lkdGggMTY3OiAiaG9yaXpvbnRhbCBzY3Jv
bGw6IDogU3VjY2VzcyIKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoMCwzNikgc2l6
ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICg3MzksMCkgc2l6ZSA3eDE4
OiBidWxsZXQKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI5MCwwKSBzaXplIDQz
OXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI5MCwwKSB3aWR0aCA0Mzk6ICJjb250aW51
b3VzbHkgY2FsbCB3aW5kb3cuc2Nyb2xsWCA6IEZhaWx1cmUsIGFjdHVhbDogMDsgZXhwZWN0ZWQ6
IC0xMDAwIgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDU0KSBzaXplIDcyOXgx
OAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDczOSwwKSBzaXplIDd4MTg6IGJ1bGxl
dAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjU2LDApIHNpemUgNDczeDE4Cisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjU2LDApIHdpZHRoIDQ3MzogInpvb20gaW4gYW5kIG91
dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246IEZhaWx1cmUsIGFjdHVhbDogMDsgZXhwZWN0ZWQ6
IC0xMDAwIgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDcyKSBzaXplIDcyOXgx
OAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDczOSwwKSBzaXplIDd4MTg6IGJ1bGxl
dAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNDgwLDApIHNpemUgMjQ5eDE4Cisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDgwLDApIHdpZHRoIDI0OTogInJlc2l6ZSBwcmVzZXJ2
ZXMgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzIgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9
IGF0ICgwLDkwKSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDcz
OSwwKSBzaXplIDd4MTg6IGJ1bGxldAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MzczLDApIHNpemUgMzU2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzczLDApIHdpZHRo
IDM1NjogIndoZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb246
IFN1Y2Nlc3MiCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMTA4KSBzaXplIDcy
OXgxOAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDczOSwwKSBzaXplIDd4MTg6IGJ1
bGxldAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjY4LDApIHNpemUgNDYxeDE4
CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjY4LDApIHdpZHRoIDQ2MTogIktleURvd24gSE9N
RSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogU3VjY2VzcyIK
KyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoMCwxMjYpIHNpemUgNzI5eDE4CisgICAg
ICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoNzM5LDApIHNpemUgN3gxODogYnVsbGV0CisgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyODIsMCkgc2l6ZSA0NDd4MTgKKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgyODIsMCkgd2lkdGggNDQ3OiAiS2V5RG93biBFTkQgbW92ZSB4LXNj
cm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6IFN1Y2Nlc3MiCisgICAgICAgIFJl
bmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMTQ0KSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRl
ckxpc3RNYXJrZXIgYXQgKDczOSwwKSBzaXplIDd4MTg6IGJ1bGxldAorICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoNDg2LDApIHNpemUgMjQzeDE4CisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoNDg2LDApIHdpZHRoIDI0MzogInNlbGVjdEFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudDog
U3VjY2VzcyIKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoMCwxNjIpIHNpemUgNzI5
eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoNzM5LDApIHNpemUgN3gxODogYnVs
bGV0CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0ODMsMCkgc2l6ZSAyNDZ4MTgK
KyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg0ODMsMCkgd2lkdGggMjQ2OiAicmVsb2FkIHByZXNl
cnZlIHNjcm9sbCBwb3NpdGlvbjogU3VjY2VzcyIKK3NlbGVjdGlvbiBzdGFydDogcG9zaXRpb24g
MCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7RElWfSBvZiBib2R5CitzZWxlY3Rpb24g
ZW5kOiAgIHBvc2l0aW9uIDY2IG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCA3IHtMSX0gb2Yg
Y2hpbGQgMyB7VUx9IG9mIGJvZHkKK3Njcm9sbGVkIHRvIDMyMjUsMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65719</attachid>
            <date>2010-08-27 09:24:25 -0700</date>
            <delta_ts>2010-08-31 14:00:46 -0700</delta_ts>
            <desc>Another patch just for reference</desc>
            <filename>RTL.org.patch</filename>
            <type>text/plain</type>
            <size>15397</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvbXVsdGljb2wvY29sdW1u
LWNvdW50LXdpdGgtcnVsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
ZmFzdC9tdWx0aWNvbC9jb2x1bW4tY291bnQtd2l0aC1ydWxlcy1leHBlY3RlZC50eHQKaW5kZXgg
ODgwYTRkYi4uNWY4YTVlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFz
dC9tdWx0aWNvbC9jb2x1bW4tY291bnQtd2l0aC1ydWxlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9tdWx0aWNvbC9jb2x1bW4tY291bnQtd2l0aC1ydWxl
cy1leHBlY3RlZC50eHQKQEAgLTQ0LDcgKzQ0LDcgQEAgbGF5ZXIgYXQgKDgsOCkgc2l6ZSA5OTh4
MTYwCiAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgzMCwyODIpIHNpemUgMTY5eDIxCiAgICAg
ICB0ZXh0IHJ1biBhdCAoMzAsMjgyKSB3aWR0aCAxNjk6ICJUaGlzIGlzIHNvbWUgY29sdW1uIHRl
eHQuIgogICAgIFJlbmRlckJSIHtCUn0gYXQgKDE5OSwyOTgpIHNpemUgMHgwCi1sYXllciBhdCAo
OCwxODQpIHNpemUgNzg0eDE2MAorbGF5ZXIgYXQgKDgsMTg0KSBzaXplIDk5OHgxNjAKICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDE3Nikgc2l6ZSA3ODR4MTYwIFtib3JkZXI6ICgxMHB4IHNvbGlk
ICM4MDAwMDApXQogICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoOTEsMzApIHNpemUgMTY5eDIx
CiAgICAgICB0ZXh0IHJ1biBhdCAoOTEsMzApIHdpZHRoIDQgUlRMOiAiLiIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvbXVsdGljb2wvbGF5ZXJzLWluLW11bHRpY29s
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvbXVsdGljb2wvbGF5
ZXJzLWluLW11bHRpY29sLWV4cGVjdGVkLnR4dAppbmRleCBlYTZhZWRmLi40MjY1MmIwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L211bHRpY29sL2xheWVycy1pbi1t
dWx0aWNvbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9t
dWx0aWNvbC9sYXllcnMtaW4tbXVsdGljb2wtZXhwZWN0ZWQudHh0CkBAIC0xNzksNyArMTc5LDcg
QEAgbGF5ZXIgYXQgKDgsMjkpIHNpemUgMTI3OXgzMTAKICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwyNzMpIHNpemUgMTExeDIxCiAgICAgICAgIHRleHQgcnVuIGF0ICgwLDI3Mykgd2lk
dGggMTExOiAiVGhpcyBpcyBzb21lIHRleHQiCiAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgxMTEs
Mjg5KSBzaXplIDB4MAotbGF5ZXIgYXQgKDgsMzYwKSBzaXplIDc2OHgzMTAKK2xheWVyIGF0ICg4
LDM2MCkgc2l6ZSAxMjc5eDMxMAogICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzNTIpIHNpemUg
NzY4eDMxMCBbYm9yZGVyOiAoNXB4IHNvbGlkICM4MDAwMDApXQogICAgIFJlbmRlckJsb2NrIChh
bm9ueW1vdXMpIGF0ICg1LDUpIHNpemUgMjQyeDI3MwogICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgxMzEsMCkgc2l6ZSAxMTF4MjEKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMDU0N2M4Mi4uZDYyNmYz
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQxNCwxNCArNDE0LDE0IEBAIFBhc3NSZWZQdHI8U2Nyb2xs
YmFyPiBGcmFtZVZpZXc6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmll
bnRhdGlvCiAgICAgcmV0dXJuIFNjcm9sbFZpZXc6OmNyZWF0ZVNjcm9sbGJhcihvcmllbnRhdGlv
bik7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKK3ZvaWQgRnJhbWVWaWV3OjpzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogewotICAgIGlmIChzaXplID09IGNvbnRlbnRz
U2l6ZSgpKQorICAgIGlmIChzaXplID09IGNvbnRlbnRzU2l6ZSgpICYmIHBvc2l0aW9uID09IGZy
YW1lUmVjdCgpLmxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZGVmZXJTZXRO
ZWVkc0xheW91dHMrKzsKIAotICAgIFNjcm9sbFZpZXc6OnNldENvbnRlbnRzU2l6ZShzaXplKTsK
KyAgICBTY3JvbGxWaWV3OjpzZXRDb250ZW50c1NpemUoc2l6ZSwgcG9zaXRpb24pOwogCiAgICAg
UGFnZSogcGFnZSA9IGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlKCkgOiAwOwogICAgIGlmICghcGFn
ZSkKQEAgLTQ0Miw3ICs0NDIsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplKCkK
ICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldENvbnRlbnRzU2l6ZShJ
bnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKSwgcm9vdC0+Ym90dG9tTGF5b3V0T3Zl
cmZsb3coKSkpOworCisgICAgaWYgKGZyYW1lKCktPmRvY3VtZW50KCkKKyAgICAgICAgICAgICYm
IGZyYW1lKCktPmRvY3VtZW50KCktPmJvZHkoKQorICAgICAgICAgICAgJiYgZnJhbWUoKS0+ZG9j
dW1lbnQoKS0+Ym9keSgpLT5yZW5kZXJlcigpCisgICAgICAgICAgICAmJiBmcmFtZSgpLT5kb2N1
bWVudCgpLT5ib2R5KCktPnJlbmRlcmVyKCktPnN0eWxlKCktPmRpcmVjdGlvbigpID09IFdlYkNv
cmU6OlJUTCkKKyAgICAgICAgc2V0Q29udGVudHNTaXplKEludFNpemUocm9vdC0+cmlnaHRMYXlv
dXRPdmVyZmxvdygpIC0gcm9vdC0+bGVmdExheW91dE92ZXJmbG93KCksIHJvb3QtPmJvdHRvbUxh
eW91dE92ZXJmbG93KCkpLAorICAgICAgICAgICAgICAgIEludFBvaW50KHJvb3QtPmxlZnRMYXlv
dXRPdmVyZmxvdygpLCAwKSk7CisgICAgZWxzZQorICAgICAgICBzZXRDb250ZW50c1NpemUoSW50
U2l6ZShyb290LT5yaWdodExheW91dE92ZXJmbG93KCksIHJvb3QtPmJvdHRvbUxheW91dE92ZXJm
bG93KCkpKTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJl
bmRlck9iamVjdCogbywgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhck1vZGUmIHZNb2Rl
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCmluZGV4IDcxOGI3OTMuLjkyZjk2MGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTgwLDcgKzgw
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24o
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IElu
dFBvaW50JiBwb3NpdGlvbiA9IEludFBvaW50KCkpOwogCiAgICAgdm9pZCBsYXlvdXQoYm9vbCBh
bGxvd1N1YnRyZWUgPSB0cnVlKTsKICAgICBib29sIGRpZEZpcnN0TGF5b3V0KCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCBlMmQ2MjVlLi45ZjBjODg0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAKQEAgLTI1MiwxNCArMjUyLDE2IEBAIEludFNpemUgU2Nyb2xsVmlldzo6Y29u
dGVudHNTaXplKCkgY29uc3QKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAg
cmV0dXJuIHBsYXRmb3JtQ29udGVudHNTaXplKCk7Ci0gICAgcmV0dXJuIG1fY29udGVudHNTaXpl
OworICAgIHJldHVybiBtX2NvbnRlbnRzUmVjdC5zaXplKCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmll
dzo6c2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCisvLyBGSVhNRTogcmVu
YW1lIHRvIHNldENvbnRlbnRzUmVjdCgpLgordm9pZCBTY3JvbGxWaWV3OjpzZXRDb250ZW50c1Np
emUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSwgY29uc3QgSW50UG9pbnQmIG5ld1Bvc2l0aW9uKQog
ewotICAgIGlmIChjb250ZW50c1NpemUoKSA9PSBuZXdTaXplKQorICAgIEludFJlY3QgbmV3UmVj
dChuZXdQb3NpdGlvbiwgbmV3U2l6ZSk7CisgICAgaWYgKG1fY29udGVudHNSZWN0ID09IG5ld1Jl
Y3QpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRlbnRzU2l6ZSA9IG5ld1NpemU7CisgICAg
bV9jb250ZW50c1JlY3QgPSBuZXdSZWN0OwogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQogICAg
ICAgICBwbGF0Zm9ybVNldENvbnRlbnRzU2l6ZSgpOwogICAgIGVsc2UKQEAgLTI2OCw3ICsyNzAs
OCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJiBuZXdT
aXplKQogCiBJbnRQb2ludCBTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25z
dAogewotICAgIEludFNpemUgbWF4aW11bU9mZnNldCA9IGNvbnRlbnRzU2l6ZSgpIC0gdmlzaWJs
ZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOworICAgIEludFNpemUgbWF4aW11bU9mZnNldChtX2NvbnRl
bnRzUmVjdC5yaWdodCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKSwKKyAgICAgICAg
ICAgIG1fY29udGVudHNSZWN0LmJvdHRvbSgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0KCkuaGVpZ2h0
KCkpOwogICAgIG1heGltdW1PZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwogICAgIHJldHVy
biBJbnRQb2ludChtYXhpbXVtT2Zmc2V0LndpZHRoKCksIG1heGltdW1PZmZzZXQuaGVpZ2h0KCkp
OwogfQpAQCAtNDM5LDcgKzQ0Miw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFy
cyhjb25zdCBJbnRTaXplJiBkZXNpcmVkT2Zmc2V0KQogICAgICAgICBpZiAobV9zY3JvbGxiYXJz
U3VwcHJlc3NlZCkKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJl
c3NJbnZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0
U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7Ci0gICAgICAg
IG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRXaWR0aCwgY29udGVu
dHNXaWR0aCgpKTsKKyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRQcm9wb3J0aW9u
KGNsaWVudFdpZHRoLCBtX2NvbnRlbnRzUmVjdC5yaWdodCgpLCBtX2NvbnRlbnRzUmVjdC54KCkp
OwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFZhbHVlKHNjcm9sbC53aWR0aCgp
KTsKICAgICAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX2hv
cml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsgCkBAIC00
NjEsNyArNDY0LDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IElu
dFNpemUmIGRlc2lyZWRPZmZzZXQpCiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2Vk
KQogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRp
b24odHJ1ZSk7CiAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN0ZXBzKFNjcm9sbGJh
cjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwotICAgICAgICBtX3ZlcnRpY2FsU2Ny
b2xsYmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdodCwgY29udGVudHNIZWlnaHQoKSk7Cisg
ICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFByb3BvcnRpb24oY2xpZW50SGVpZ2h0LCBt
X2NvbnRlbnRzUmVjdC5ib3R0b20oKSwgbV9jb250ZW50c1JlY3QueSgpKTsKICAgICAgICAgbV92
ZXJ0aWNhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLmhlaWdodCgpKTsKICAgICAgICAgaWYg
KG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFy
LT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbihmYWxzZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4
IGI3ODI3YjguLjY1MzkyMTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0xNDAsNyArMTQwLDcg
QEAgcHVibGljOgogICAgIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3Q7IC8vIEFsd2F5cyBh
dCBsZWFzdCBhcyBiaWcgYXMgdGhlIHZpc2libGVXaWR0aCgpL3Zpc2libGVIZWlnaHQoKS4KICAg
ICBpbnQgY29udGVudHNXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLndpZHRo
KCk7IH0KICAgICBpbnQgY29udGVudHNIZWlnaHQoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1Np
emUoKS5oZWlnaHQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3Qg
SW50U2l6ZSYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6
ZSYsIGNvbnN0IEludFBvaW50JiBuZXdQb3NpdGlvbiA9IEludFBvaW50KCkpOwogICAgCiAgICAg
Ly8gRnVuY3Rpb25zIGZvciBxdWVyeWluZyB0aGUgY3VycmVudCBzY3JvbGxlZCBwb3NpdGlvbiAo
Ym90aCBhcyBhIHBvaW50LCBhIHNpemUsIG9yIGFzIGluZGl2aWR1YWwgWCBhbmQgWSB2YWx1ZXMp
LgogICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNv
bnRlbnRSZWN0KCkubG9jYXRpb24oKTsgfQpAQCAtMjgwLDcgKzI4MCw3IEBAIHByaXZhdGU6CiAK
ICAgICBJbnRTaXplIG1fc2Nyb2xsT2Zmc2V0OyAvLyBGSVhNRTogV291bGQgcmF0aGVyIHN0b3Jl
IHRoaXMgYXMgYSBwb3NpdGlvbiwgYnV0IHdlIHdpbGwgd2FpdCB0byBtYWtlIHRoaXMgY2hhbmdl
IHVudGlsIG1vcmUgY29kZSBpcyBzaGFyZWQuCiAgICAgSW50U2l6ZSBtX2ZpeGVkTGF5b3V0U2l6
ZTsKLSAgICBJbnRTaXplIG1fY29udGVudHNTaXplOworICAgIEludFJlY3QgbV9jb250ZW50c1Jl
Y3Q7CiAKICAgICBpbnQgbV9zY3JvbGxiYXJzQXZvaWRpbmdSZXNpemVyOwogICAgIGJvb2wgbV9z
Y3JvbGxiYXJzU3VwcHJlc3NlZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCAxMTlhOWRjLi5l
MjkwMjBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC02OSw2ICs2OSw4IEBAIFNjcm9sbGJh
cjo6U2Nyb2xsYmFyKFNjcm9sbGJhckNsaWVudCogY2xpZW50LCBTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbiwKICAgICAsIG1fdGhlbWUodGhlbWUpCiAgICAgLCBtX3Zpc2libGVTaXpl
KDApCiAgICAgLCBtX3RvdGFsU2l6ZSgwKQorICAgICwgbV9tYXhWYWx1ZSgwKQorICAgICwgbV9t
aW5WYWx1ZSgwKQogICAgICwgbV9jdXJyZW50UG9zKDApCiAgICAgLCBtX2RyYWdPcmlnaW4oMCkK
ICAgICAsIG1fbGluZVN0ZXAoMCkKQEAgLTEwMywyMCArMTA1LDIyIEBAIFNjcm9sbGJhcjo6flNj
cm9sbGJhcigpCiAKIGJvb2wgU2Nyb2xsYmFyOjpzZXRWYWx1ZShpbnQgdikKIHsKLSAgICB2ID0g
bWF4KG1pbih2LCBtX3RvdGFsU2l6ZSAtIG1fdmlzaWJsZVNpemUpLCAwKTsKKyAgICB2ID0gbWF4
KCBtaW4odiwgbV9tYXhWYWx1ZSAtIG1fdmlzaWJsZVNpemUpLCBtX21pblZhbHVlKTsKICAgICBp
ZiAodmFsdWUoKSA9PSB2KQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE91ciB2YWx1ZSBzdGF5
ZWQgdGhlIHNhbWUuCiAgICAgc2V0Q3VycmVudFBvcyh2KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBTY3JvbGxiYXI6OnNldFByb3BvcnRpb24oaW50IHZpc2libGVTaXplLCBpbnQgdG90
YWxTaXplKQordm9pZCBTY3JvbGxiYXI6OnNldFByb3BvcnRpb24oaW50IHZpc2libGVTaXplLCBp
bnQgbWF4VmFsdWUsIGludCBtaW5WYWx1ZSkKIHsKLSAgICBpZiAodmlzaWJsZVNpemUgPT0gbV92
aXNpYmxlU2l6ZSAmJiB0b3RhbFNpemUgPT0gbV90b3RhbFNpemUpCisgICAgaWYgKHZpc2libGVT
aXplID09IG1fdmlzaWJsZVNpemUgJiYgbWluVmFsdWUgPT0gbV9taW5WYWx1ZSAmJiBtYXhWYWx1
ZSA9PSBtX21heFZhbHVlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Zpc2libGVTaXplID0g
dmlzaWJsZVNpemU7Ci0gICAgbV90b3RhbFNpemUgPSB0b3RhbFNpemU7CisgICAgbV9taW5WYWx1
ZSA9IG1pblZhbHVlOworICAgIG1fbWF4VmFsdWUgPSBtYXhWYWx1ZTsKKyAgICBtX3RvdGFsU2l6
ZSA9IG1heFZhbHVlIC0gbWluVmFsdWU7CiAKICAgICB1cGRhdGVUaHVtYlByb3BvcnRpb24oKTsK
IH0KQEAgLTE1OCw4ICsxNjIsNyBAQCBib29sIFNjcm9sbGJhcjo6c2Nyb2xsKFNjcm9sbERpcmVj
dGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LAogICAgICAgICBz
dGVwICo9IG1fcGl4ZWxTdGVwOwogCiAgICAgZmxvYXQgbmV3UG9zID0gbV9jdXJyZW50UG9zICsg
c3RlcCAqIG11bHRpcGxpZXI7Ci0gICAgZmxvYXQgbWF4UG9zID0gbV90b3RhbFNpemUgLSBtX3Zp
c2libGVTaXplOwotICAgIHJldHVybiBzZXRDdXJyZW50UG9zKG1heChtaW4obmV3UG9zLCBtYXhQ
b3MpLCAwLjBmKSk7CisgICAgcmV0dXJuIHNldEN1cnJlbnRQb3MobWF4KG1pbihuZXdQb3MsIHN0
YXRpY19jYXN0PGZsb2F0PihtYXhpbXVtKCkpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fbWluVmFs
dWUpKSk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyOjp1cGRhdGVUaHVtYigpCkBAIC0yODQsMTQgKzI4
Nyw5IEBAIHZvaWQgU2Nyb2xsYmFyOjptb3ZlVGh1bWIoaW50IHBvcykKICAgICBpbnQgdGh1bWJQ
b3MgPSB0aGVtZSgpLT50aHVtYlBvc2l0aW9uKHRoaXMpOwogICAgIGludCB0aHVtYkxlbiA9IHRo
ZW1lKCktPnRodW1iTGVuZ3RoKHRoaXMpOwogICAgIGludCB0cmFja0xlbiA9IHRoZW1lKCktPnRy
YWNrTGVuZ3RoKHRoaXMpOwotICAgIGludCBtYXhQb3MgPSB0cmFja0xlbiAtIHRodW1iTGVuOwog
ICAgIGludCBkZWx0YSA9IHBvcyAtIG1fcHJlc3NlZFBvczsKLSAgICBpZiAoZGVsdGEgPiAwKQot
ICAgICAgICBkZWx0YSA9IG1pbihtYXhQb3MgLSB0aHVtYlBvcywgZGVsdGEpOwotICAgIGVsc2Ug
aWYgKGRlbHRhIDwgMCkKLSAgICAgICAgZGVsdGEgPSBtYXgoLXRodW1iUG9zLCBkZWx0YSk7CiAg
ICAgaWYgKGRlbHRhKQotICAgICAgICBzZXRDdXJyZW50UG9zKHN0YXRpY19jYXN0PGZsb2F0Pih0
aHVtYlBvcyArIGRlbHRhKSAqIG1heGltdW0oKSAvICh0cmFja0xlbiAtIHRodW1iTGVuKSk7Cisg
ICAgICAgIHNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0PihtX2N1cnJlbnRQb3MpICsgZGVsdGEg
KiAobWF4aW11bSgpIC0gbWluaW11bSgpKSAvICh0cmFja0xlbiAtIHRodW1iTGVuKSk7CiB9CiAK
IGJvb2wgU2Nyb2xsYmFyOjpzZXRDdXJyZW50UG9zKGZsb2F0IHBvcykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5o
CmluZGV4IDZiM2NkMGQuLmRlYzA1ODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtNjIsNyArNjIs
OCBAQCBwdWJsaWM6CiAgICAgaW50IHByZXNzZWRQb3MoKSBjb25zdCB7IHJldHVybiBtX3ByZXNz
ZWRQb3M7IH0KICAgICBpbnQgdmlzaWJsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVT
aXplOyB9CiAgICAgaW50IHRvdGFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplOyB9
Ci0gICAgaW50IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZSAtIG1fdmlzaWJs
ZVNpemU7IH0gICAgICAgIAorICAgIGludCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhW
YWx1ZSAtIG1fdmlzaWJsZVNpemU7IH0KKyAgICBpbnQgbWluaW11bSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWluVmFsdWU7IH0KICAgICBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udHJvbFNpemU7IH0KIAogICAgIGludCBsaW5lU3RlcCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGluZVN0ZXA7IH0KQEAgLTc2LDcgKzc3LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRTdGVwcyhpbnQgbGluZVN0ZXAsIGludCBwYWdlU3RlcCwgaW50IHBpeGVsc1BlclN0
ZXAgPSAxKTsKICAgICBib29sIHNldFZhbHVlKGludCk7Ci0gICAgdm9pZCBzZXRQcm9wb3J0aW9u
KGludCB2aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSk7CisgICAgdm9pZCBzZXRQcm9wb3J0aW9u
KGludCB2aXNpYmxlU2l6ZSwgaW50IG1heFZhbHVlLCBpbnQgbWluVmFsdWUgPSAwKTsKICAgICB2
b2lkIHNldFByZXNzZWRQb3MoaW50IHApIHsgbV9wcmVzc2VkUG9zID0gcDsgfQogCiAgICAgYm9v
bCBzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlw
bGllciA9IDEuMGYpOwpAQCAtMTUxLDYgKzE1Miw4IEBAIHByb3RlY3RlZDoKICAgICAKICAgICBp
bnQgbV92aXNpYmxlU2l6ZTsKICAgICBpbnQgbV90b3RhbFNpemU7CisgICAgaW50IG1fbWF4VmFs
dWU7CisgICAgaW50IG1fbWluVmFsdWU7CiAgICAgZmxvYXQgbV9jdXJyZW50UG9zOwogICAgIGZs
b2F0IG1fZHJhZ09yaWdpbjsKICAgICBpbnQgbV9saW5lU3RlcDsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0
L1Njcm9sbGJhclRoZW1lUXQuY3BwCmluZGV4IDY3MjI2YjAuLjZlMzA1NzUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRp
YyBRU3R5bGVPcHRpb25TbGlkZXIqIHN0eWxlT3B0aW9uU2xpZGVyKFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBRV2lkZ2V0KiB3aWRnCiAgICAgb3B0LnNsaWRlclBvc2l0aW9uID0gb3B0LnNsaWRlclZh
bHVlOwogICAgIG9wdC5wYWdlU3RlcCA9IHNjcm9sbGJhci0+cGFnZVN0ZXAoKTsKICAgICBvcHQu
c2luZ2xlU3RlcCA9IHNjcm9sbGJhci0+bGluZVN0ZXAoKTsKLSAgICBvcHQubWluaW11bSA9IDA7
CisgICAgb3B0Lm1pbmltdW0gPSBzY3JvbGxiYXItPm1pbmltdW0oKTsKICAgICBvcHQubWF4aW11
bSA9IHFNYXgoMCwgc2Nyb2xsYmFyLT5tYXhpbXVtKCkpOwogICAgIFNjcm9sbGJhclBhcnQgcHJl
c3NlZFBhcnQgPSBzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCk7CiAgICAgU2Nyb2xsYmFyUGFydCBo
b3ZlcmVkUGFydCA9IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKTsKQEAgLTIwMSw3ICsyMDEsNyBA
QCBpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRy
b2xTaXplIGNvbnRyb2xTaXplKQogaW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iUG9zaXRpb24o
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm4gKGludCkoKGZsb2F0KXNjcm9sbGJhci0+Y3VycmVudFBvcygpICogKHRy
YWNrTGVuZ3RoKHNjcm9sbGJhcikgLSB0aHVtYkxlbmd0aChzY3JvbGxiYXIpKSAvIHNjcm9sbGJh
ci0+bWF4aW11bSgpKTsKKyAgICAgICAgcmV0dXJuIChpbnQpKChmbG9hdCkoc2Nyb2xsYmFyLT5j
dXJyZW50UG9zKCkgLSBzY3JvbGxiYXItPm1pbmltdW0oKSkgKiAodHJhY2tMZW5ndGgoc2Nyb2xs
YmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikpIC8gKHNjcm9sbGJhci0+bWF4aW11bSgpIC0g
c2Nyb2xsYmFyLT5taW5pbXVtKCkpKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKaW5kZXggZGFmOTRlYS4uNTYwZTNkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CkBAIC02MTQsNiArNjE0LDggQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRp
b25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAvLyBUaGUgYmFj
a2dyb3VuZCBvZiB0aGUgYm94IGdlbmVyYXRlZCBieSB0aGUgcm9vdCBlbGVtZW50IGNvdmVycyB0
aGUgZW50aXJlIGNhbnZhcyBpbmNsdWRpbmcKICAgICAvLyBpdHMgbWFyZ2lucy4KICAgICBpbnQg
YnggPSB0eCAtIG1hcmdpbkxlZnQoKTsKKyAgICBpZiAoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0g
V2ViQ29yZTo6UlRMKQorICAgICAgICBieCArPSBsZWZ0bW9zdFBvc2l0aW9uKCk7CiAgICAgaW50
IGJ5ID0gdHkgLSBtYXJnaW5Ub3AoKTsKICAgICBpbnQgYncgPSBtYXgodyArIG1hcmdpbkxlZnQo
KSArIG1hcmdpblJpZ2h0KCkgKyBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpLCBydyk7CiAg
ICAgaW50IGJoID0gbWF4KGggKyBtYXJnaW5Ub3AoKSArIG1hcmdpbkJvdHRvbSgpICsgYm9yZGVy
VG9wKCkgKyBib3JkZXJCb3R0b20oKSwgcmgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IGUxMmNiOGIuLmExZWMyZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTY0
Myw4ICs2NDMsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCiAg
ICAgICAgIHNldEhlaWdodChib3gtPmhlaWdodCgpKTsKIAogICAgICAgICBpZiAoIWJveC0+aGFz
T3ZlcmZsb3dDbGlwKCkpIHsKLSAgICAgICAgICAgIGlmIChib3gtPnJpZ2h0TGF5b3V0T3ZlcmZs
b3coKSA+IGJveC0+d2lkdGgoKSkKLSAgICAgICAgICAgICAgICBzZXRXaWR0aChib3gtPnJpZ2h0
TGF5b3V0T3ZlcmZsb3coKSk7CisgICAgICAgICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+
ZGlyZWN0aW9uKCkgPT0gV2ViQ29yZTo6UlRMKSB7CisgICAgICAgICAgICAgICAgaWYgKGJveC0+
bGVmdExheW91dE92ZXJmbG93KCkgPCAwKQorICAgICAgICAgICAgICAgICAgICBzZXRXaWR0aChi
b3gtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKSAtIGJveC0+bGVmdExheW91dE92ZXJmbG93KCkpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoYm94LT5yaWdodExheW91
dE92ZXJmbG93KCkgPiBib3gtPndpZHRoKCkpCisgICAgICAgICAgICAgICAgICAgIHNldFdpZHRo
KGJveC0+cmlnaHRMYXlvdXRPdmVyZmxvdygpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChib3gtPmJvdHRvbUxheW91dE92ZXJmbG93KCkgPiBib3gtPmhlaWdodCgpKQogICAgICAg
ICAgICAgICAgIHNldEhlaWdodChib3gtPmJvdHRvbUxheW91dE92ZXJmbG93KCkpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDMyNjRhZDUuLmQ2NmNmYzYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0xMjUsNyArMTI1LDE1IEBAIHZvaWQgUmVuZGVyVmll
dzo6bGF5b3V0KCkKIAogICAgIC8vIFJlc2V0IG92ZXJmbG93IGFuZCB0aGVuIHJlcGxhY2UgaXQg
d2l0aCBkb2NXaWR0aCBhbmQgZG9jSGVpZ2h0LgogICAgIG1fb3ZlcmZsb3cuY2xlYXIoKTsKLSAg
ICBhZGRMYXlvdXRPdmVyZmxvdyhJbnRSZWN0KDAsIDAsIGRvY1dpZHRoKCksIGRvY0hlaWdodCgp
KSk7CisgICAgaWYgKGZyYW1lVmlldygpCisgICAgICAgICAgICAmJiBmcmFtZVZpZXcoKS0+ZnJh
bWUoKQorICAgICAgICAgICAgJiYgZnJhbWVWaWV3KCktPmZyYW1lKCktPmRvY3VtZW50KCkKKyAg
ICAgICAgICAgICYmIGZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5ib2R5KCkKKyAg
ICAgICAgICAgICYmIGZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5ib2R5KCktPnJl
bmRlcmVyKCkKKyAgICAgICAgICAgICYmIGZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgp
LT5ib2R5KCktPnJlbmRlcmVyKCktPnN0eWxlKCktPmRpcmVjdGlvbigpID09IFdlYkNvcmU6OlJU
TCkKKyAgICAgICAgYWRkTGF5b3V0T3ZlcmZsb3coSW50UmVjdChsZWZ0bW9zdFBvc2l0aW9uKCks
IDAsIHJpZ2h0bW9zdFBvc2l0aW9uKCksIGRvY0hlaWdodCgpKSk7CisgICAgZWxzZQorICAgICAg
ICBhZGRMYXlvdXRPdmVyZmxvdyhJbnRSZWN0KDAsIDAsIGRvY1dpZHRoKCksIGRvY0hlaWdodCgp
KSk7CiAKIAogICAgIEFTU0VSVChsYXlvdXREZWx0YSgpID09IEludFNpemUoKSk7CkBAIC02MzMs
NiArNjQxLDEzIEBAIGludCBSZW5kZXJWaWV3Ojpkb2NIZWlnaHQoKSBjb25zdAogaW50IFJlbmRl
clZpZXc6OmRvY1dpZHRoKCkgY29uc3QKIHsKICAgICBpbnQgdyA9IHJpZ2h0bW9zdFBvc2l0aW9u
KCk7CisgICAgaWYgKGZyYW1lVmlldygpCisgICAgICAgICAgICAmJiBmcmFtZVZpZXcoKS0+ZnJh
bWUoKQorICAgICAgICAgICAgJiYgZnJhbWVWaWV3KCktPmZyYW1lKCktPmRvY3VtZW50KCkKKyAg
ICAgICAgICAgICYmIGZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5ib2R5KCkKKyAg
ICAgICAgICAgICYmIGZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5ib2R5KCktPnJl
bmRlcmVyKCkKKyAgICAgICAgICAgICYmIGZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgp
LT5ib2R5KCktPnJlbmRlcmVyKCktPnN0eWxlKCktPmRpcmVjdGlvbigpID09IFdlYkNvcmU6OlJU
TCkKKyAgICAgICAgdyAtPSBsZWZ0bW9zdFBvc2l0aW9uKCk7CiAKICAgICBmb3IgKFJlbmRlckJv
eCogYyA9IGZpcnN0Q2hpbGRCb3goKTsgYzsgYyA9IGMtPm5leHRTaWJsaW5nQm94KCkpIHsKICAg
ICAgICAgaW50IGR3ID0gYy0+d2lkdGgoKSArIGMtPm1hcmdpbkxlZnQoKSArIGMtPm1hcmdpblJp
Z2h0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66098</attachid>
            <date>2010-08-31 14:00:46 -0700</date>
            <delta_ts>2010-08-31 15:49:18 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>23556.v3</filename>
            <type>text/plain</type>
            <size>31947</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjUyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTAtMDgtMzEgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0
LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZs
b3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1
NgorCisgICAgICAgIEZvciBSVEwgcGFnZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQg
aW5jbHVkZSBpdCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQu
IFVzZSB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgd2hlbiBzY3JvbGwgYW5kIHBhaW50CisgICAg
ICAgIHRoZSBwYWdlLiBCZWhhdmlvciBvbiBMVFIgcGFnZSBzaG91bGQgYmUgdW50b3VjaGVkIHNp
bmNlIGxlZnQgbGF5b3V0IAorICAgICAgICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBh
Z2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwuaHRtbAorCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjphZGp1c3RWaWV3U2l6ZSk6IFNhdmUgbmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQgb3ZlcmZsb3cg
YXMgc2Nyb2xsIFggb3JpZ2luLiBBbmQgaW5jbHVkZXMgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgaW50
byBkb2N1bWVudCBzaXplLgorICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaDog
QWRkIG1ldGhvZHMgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgc2Nyb2xsIFggb3JpZ2luLgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Vmlldzo6U2Nyb2xsVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjptYXhpbXVt
U2Nyb2xsUG9zaXRpb24pOiBNaW51cyBzY3JvbGwgWCBvcmlnaW4gZnJvbSBtYXhpbXVtIGhvcml6
b250YWwgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bWlu
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmFkanVz
dFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFNjcm9s
bFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJh
cnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxW
aWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3Jv
bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNj
cm9sbE9yaWdpblgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzdHlsZURpZENoYW5nZSk6IFByb3BvZ2F0ZSBIVE1MIGJv
ZHkgZGlyZWN0aW9uYWxpdHkgdG8gaXRzIFJlbmRlclZpZXcuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKTogSW5jbHVkZSBsZWZ0IGxheW91dCBv
dmVyZmxvdyBpbnRvIGNhbnZhcyBzaXplLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bGF5b3V0KTogU2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxv
dy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY0xlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlldzo6ZG9jV2lkdGgpOiBJbmNsdWRlIGxlZnQgbGF5b3V0IG92ZXJmbG93
IGludG8gZG9jIHdpZHRoIGZvciBSVEwgcGFnZS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2V0Qm9keUlzTFRSKToKKwog
MjAxMC0wOC0zMSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lv
biA2NjQzMikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NDMsNyArNDQzLDggQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplKCkKICAgICBp
ZiAoIXJvb3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldENvbnRlbnRzU2l6ZShJbnRTaXpl
KHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKSwgcm9vdC0+Ym90dG9tTGF5b3V0T3ZlcmZsb3co
KSkpOworICAgIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpblgoLXJvb3QtPmxlZnRMYXlvdXRP
dmVyZmxvdygpKTsKKyAgICBzZXRDb250ZW50c1NpemUoSW50U2l6ZShyb290LT5yaWdodExheW91
dE92ZXJmbG93KCkgLSByb290LT5sZWZ0TGF5b3V0T3ZlcmZsb3coKSwgcm9vdC0+Ym90dG9tTGF5
b3V0T3ZlcmZsb3coKSkpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6YXBwbHlPdmVyZmxvd1RvVmll
d3BvcnQoUmVuZGVyT2JqZWN0KiBvLCBTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyTW9k
ZSYgdk1vZGUpCkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaAkocmV2aXNpb24g
NjY0MzIpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAtICh2b2lkKXNldFNj
cm9sbGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKWhNb2RlIHZlcnRpY2FsOihXZWJD
b3JlOjpTY3JvbGxiYXJNb2RlKXZNb2RlIGFuZExvY2s6KEJPT0wpbG9jazsKIC0gKHZvaWQpc2Ny
b2xsaW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUqKWhNb2RlIHZlcnRpY2FsOihXZWJD
b3JlOjpTY3JvbGxiYXJNb2RlKil2TW9kZTsKIC0gKHZvaWQpc2V0U2Nyb2xsQmFyc1N1cHByZXNz
ZWQ6KEJPT0wpc3VwcHJlc3NlZCByZXBhaW50T25VbnN1cHByZXNzOihCT09MKXJlcGFpbnQ7Cist
ICh2b2lkKXNldFNjcm9sbE9yaWdpblg6KGludClzY3JvbGxPcmlnaW5YOworLSAoaW50KXNjcm9s
bE9yaWdpblg7CiBAZW5kCiAKIEBwcm90b2NvbCBXZWJDb3JlRnJhbWVWaWV3CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDY2NDMyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBTY3JvbGxWaWV3
OjpTY3JvbGxWaWV3KCkKICAgICAsIG1fZHJhd1BhblNjcm9sbEljb24oZmFsc2UpCiAgICAgLCBt
X3VzZUZpeGVkTGF5b3V0KGZhbHNlKQogICAgICwgbV9wYWludHNFbnRpcmVDb250ZW50cyhmYWxz
ZSkKKyAgICAsIG1fc2Nyb2xsT3JpZ2luWCgwKQogewogICAgIHBsYXRmb3JtSW5pdCgpOwogfQpA
QCAtMjY4LDkgKzI2OSwyMSBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldENvbnRlbnRzU2l6ZShjb25z
dCBJCiAKIEludFBvaW50IFNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0
CiB7Ci0gICAgSW50U2l6ZSBtYXhpbXVtT2Zmc2V0ID0gY29udGVudHNTaXplKCkgLSB2aXNpYmxl
Q29udGVudFJlY3QoKS5zaXplKCk7CisgICAgSW50UG9pbnQgbWF4aW11bU9mZnNldChjb250ZW50
c1dpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSAtIG1fc2Nyb2xsT3JpZ2luWCwgY29udGVudHNIZWln
aHQoKSAtIHZpc2libGVIZWlnaHQoKSk7CiAgICAgbWF4aW11bU9mZnNldC5jbGFtcE5lZ2F0aXZl
VG9aZXJvKCk7Ci0gICAgcmV0dXJuIEludFBvaW50KG1heGltdW1PZmZzZXQud2lkdGgoKSwgbWF4
aW11bU9mZnNldC5oZWlnaHQoKSk7CisgICAgcmV0dXJuIG1heGltdW1PZmZzZXQ7Cit9CisKK0lu
dFBvaW50IFNjcm9sbFZpZXc6Om1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEludFBvaW50KC1tX3Njcm9sbE9yaWdpblgsIDApOworfQorCitJbnRQb2ludCBTY3Jv
bGxWaWV3OjphZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNvbnN0IEludFBvaW50JiBz
Y3JvbGxQb2ludCkgY29uc3QKK3sKKyAgICBJbnRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IHNj
cm9sbFBvaW50LnNocnVua1RvKG1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKKyAgICBuZXdTY3Jv
bGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uLmV4cGFuZGVkVG8obWluaW11bVNjcm9sbFBv
c2l0aW9uKCkpOworICAgIHJldHVybiBuZXdTY3JvbGxQb3NpdGlvbjsKIH0KIAogdm9pZCBTY3Jv
bGxWaWV3Ojp2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCkBAIC0yNzksNyArMjky
LDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKgogICAgIEludFNp
emUgbmV3T2Zmc2V0ID0gbV9zY3JvbGxPZmZzZXQ7CiAgICAgaWYgKHNjcm9sbGJhcikgewogICAg
ICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIp
Ci0gICAgICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoc2Nyb2xsYmFyLT52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIG5ld09mZnNldC5zZXRXaWR0aChzY3JvbGxiYXItPnZhbHVlKCkgLSBtX3Njcm9s
bE9yaWdpblgpOwogICAgICAgICBlbHNlIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0g
VmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgICAgICBuZXdPZmZzZXQuc2V0SGVpZ2h0KHNjcm9s
bGJhci0+dmFsdWUoKSk7CiAgICAgfQpAQCAtMzA2LDggKzMxOSw3IEBAIHZvaWQgU2Nyb2xsVmll
dzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9pbnQuc2hydW5rVG8obWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkpOwotICAgIG5ld1Njcm9sbFBvc2l0aW9uLmNsYW1wTmVnYXRpdmVU
b1plcm8oKTsKKyAgICBJbnRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IGFkanVzdFNjcm9sbFBv
c2l0aW9uV2l0aGluUmFuZ2Uoc2Nyb2xsUG9pbnQpOwogCiAgICAgaWYgKG5ld1Njcm9sbFBvc2l0
aW9uID09IHNjcm9sbFBvc2l0aW9uKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQyMCwxMCArNDMy
LDEwIEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9pblVwZGF0ZVNjcm9sbGJhcnMgPSB0cnVlOwotICAgIEludFNpemUg
bWF4U2Nyb2xsUG9zaXRpb24oY29udGVudHNXaWR0aCgpIC0gdmlzaWJsZVdpZHRoKCksIGNvbnRl
bnRzSGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkpOwotICAgIEludFNpemUgc2Nyb2xsID0gZGVz
aXJlZE9mZnNldC5zaHJ1bmtUbyhtYXhTY3JvbGxQb3NpdGlvbik7Ci0gICAgc2Nyb2xsLmNsYW1w
TmVnYXRpdmVUb1plcm8oKTsKLSAKKworICAgIEludFBvaW50IHNjcm9sbFBvaW50ID0gYWRqdXN0
U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShJbnRQb2ludChkZXNpcmVkT2Zmc2V0LndpZHRoKCks
IGRlc2lyZWRPZmZzZXQuaGVpZ2h0KCkpKTsKKyAgICBJbnRTaXplIHNjcm9sbChzY3JvbGxQb2lu
dC54KCksIHNjcm9sbFBvaW50LnkoKSk7CisKICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFy
KSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IHZpc2libGVXaWR0aCgpOwogICAgICAgICBt
X2hvcml6b250YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVudHNXaWR0aCgpID4gY2xpZW50
V2lkdGgpOwpAQCAtNDQxLDcgKzQ1Myw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xs
YmFycyhjb25zdCAKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJl
c3NJbnZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0
U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7CiAgICAgICAg
IG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRXaWR0aCwgY29udGVu
dHNXaWR0aCgpKTsKLSAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3Jv
bGwud2lkdGgoKSk7CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Ny
b2xsLndpZHRoKCkgKyBtX3Njcm9sbE9yaWdpblgpOwogICAgICAgICBpZiAobV9zY3JvbGxiYXJz
U3VwcHJlc3NlZCkKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJl
c3NJbnZhbGlkYXRpb24oZmFsc2UpOyAKICAgICB9IApAQCAtOTUxLDYgKzk2MywxNiBAQCB2b2lk
IFNjcm9sbFZpZXc6OnJlbW92ZVBhblNjcm9sbEljb24oKQogICAgIGhvc3RXaW5kb3coKS0+aW52
YWxpZGF0ZUNvbnRlbnRzQW5kV2luZG93KEludFJlY3QobV9wYW5TY3JvbGxJY29uUG9pbnQsIElu
dFNpemUocGFuSWNvblNpemVMZW5ndGgsIHBhbkljb25TaXplTGVuZ3RoKSksIHRydWUgLyppbW1l
ZGlhdGUqLyk7CiB9CiAKKwordm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxPcmlnaW5YKGludCB4
KQoreyAKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1TZXRTY3Jv
bGxPcmlnaW5YKHgpOworICAgIGVsc2UKKyAgICAgICAgbV9zY3JvbGxPcmlnaW5YID0geDsKK30K
KworCiAjaWYgIVBMQVRGT1JNKFdYKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oUVQp
ICYmICFQTEFURk9STShFRkwpCiAKIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1Jbml0KCkKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oCShyZXZpc2lvbiA2NjQzMikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDkgQEAgcHVibGlj
OgogICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNv
bnRlbnRSZWN0KCkubG9jYXRpb24oKTsgfQogICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSAtIEludFBvaW50KCk7
IH0gLy8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6ZS4gQ29udmVuaWVu
dCBmb3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgogICAgIEludFBvaW50IG1heGltdW1TY3JvbGxQ
b3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWF4aW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xs
ZWQgdG8uCisgICAgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7IC8vIFRo
ZSBtaW5pbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KKyAgICAvLyBBZGp1c3Qg
dGhlIHBhc3MgaW4gc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGUgbWluaW11bSBhbmQgbWF4aW11
bSBwb3NpdGlvbnMuCisgICAgSW50UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5n
ZShjb25zdCBJbnRQb2ludCYpIGNvbnN0OyAKICAgICBpbnQgc2Nyb2xsWCgpIGNvbnN0IHsgcmV0
dXJuIHNjcm9sbFBvc2l0aW9uKCkueCgpOyB9CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJl
dHVybiBzY3JvbGxQb3NpdGlvbigpLnkoKTsgfQogICAgIApAQCAtMjYxLDYgKzI2NCw4IEBAIHBy
b3RlY3RlZDoKICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVs
cwogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3Qm
IGNsaXBSZWN0KTsKIAorICAgIHZvaWQgc2V0U2Nyb2xsT3JpZ2luWChpbnQpOworCiBwcml2YXRl
OgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQ
dHI8U2Nyb2xsYmFyPiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwpAQCAtMjk0LDYgKzI5OSwxMSBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX3BhaW50c0VudGlyZUNvbnRlbnRzOwogCisgICAgLy8gbV9z
Y3JvbGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlLiBBbmQgaXQgaXMgbmVnYXRpdmUgb2YgbGVm
dCBsYXlvdXQKKyAgICAvLyBvdmVyZmxvdyBmb3IgUlRMIHBhZ2UuIEl0IGlzIG1haW5seSB1c2Vk
IHRvIHNldCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKyAgICAvLyBwb3NpdGlvbiBmb3IgUlRM
IHBhZ2UuCisgICAgaW50IG1fc2Nyb2xsT3JpZ2luWDsKKwogICAgIHZvaWQgaW5pdCgpOwogICAg
IHZvaWQgZGVzdHJveSgpOwogCkBAIC0zMjEsNiArMzMxLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoYm9vbCByZXBhaW50T25VbnN1cHByZXNz
KTsKICAgICB2b2lkIHBsYXRmb3JtUmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVj
dCYsIGJvb2wgbm93KTsKICAgICBib29sIHBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdDsKKyAg
IAorICAgIHZvaWQgcGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCk7CiAKICNpZiBQTEFURk9S
TShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KIHB1YmxpYzoKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsVmlld01hYy5tbQkocmV2aXNpb24gNjY0MzIpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAg
dm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdQogdm9pZCBTY3JvbGxWaWV3
OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkK
IHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgTlNQb2ludCB0ZW1wUG9p
bnQgPSB7IG1heCgwLCBzY3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSB9
OyAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KKyAgICBO
U1BvaW50IHRlbXBQb2ludCA9IHsgbWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpblhdLCBz
Y3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSB9OyAvLyBEb24ndCB1c2Ug
TlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KICAgICBbZG9jdW1lbnRWaWV3KCkg
c2Nyb2xsUG9pbnQ6dGVtcFBvaW50XTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
fQpAQCAtMjAyLDQgKzIwMiwxMSBAQCBib29sIFNjcm9sbFZpZXc6OnBsYXRmb3JtSXNPZmZzY3Jl
ZW4oKSBjCiAgICAgcmV0dXJuICFbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIHx8ICFbW3BsYXRm
b3JtV2lkZ2V0KCkgd2luZG93XSBpc1Zpc2libGVdOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnBs
YXRmb3JtU2V0U2Nyb2xsT3JpZ2luWChpbnQgeCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CisgICAgW3Njcm9sbFZpZXcoKSBzZXRTY3JvbGxPcmlnaW5YOnhdOworICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gNjY0MzIpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsOCArMTg2LDEwIEBA
IHZvaWQgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmYKICAgICB9CiAKICAgICAv
LyBTZXQgdGhlIHRleHQgY29sb3IgaWYgd2UncmUgdGhlIGJvZHkuCi0gICAgaWYgKGlzQm9keSgp
KQorICAgIGlmIChpc0JvZHkoKSkgewogICAgICAgICBkb2N1bWVudCgpLT5zZXRUZXh0Q29sb3Io
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKKyAgICAg
ICAgdmlldygpLT5zZXRCb2R5SXNMVFIoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVuZGVyQm94Ojp1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKQpA
QCAtNjEyLDggKzYxNCw4IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludFJvb3RCb3hEZWNvcmF0aW9u
cygKIAogICAgIC8vIENTUzIgMTQuMjoKICAgICAvLyBUaGUgYmFja2dyb3VuZCBvZiB0aGUgYm94
IGdlbmVyYXRlZCBieSB0aGUgcm9vdCBlbGVtZW50IGNvdmVycyB0aGUgZW50aXJlIGNhbnZhcyBp
bmNsdWRpbmcKLSAgICAvLyBpdHMgbWFyZ2lucy4KLSAgICBpbnQgYnggPSB0eCAtIG1hcmdpbkxl
ZnQoKTsKKyAgICAvLyBpdHMgbWFyZ2lucywgYW5kIGluY2x1ZGluZyBpdHMgbGVmdCBsYXlvdXQg
b3ZlcmZsb3cuCisgICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0KCkgKyB2aWV3KCktPmxlZnRM
YXlvdXRPdmVyZmxvdygpOwogICAgIGludCBieSA9IHR5IC0gbWFyZ2luVG9wKCk7CiAgICAgaW50
IGJ3ID0gbWF4KHcgKyBtYXJnaW5MZWZ0KCkgKyBtYXJnaW5SaWdodCgpICsgYm9yZGVyTGVmdCgp
ICsgYm9yZGVyUmlnaHQoKSwgcncpOwogICAgIGludCBiaCA9IG1heChoICsgbWFyZ2luVG9wKCkg
KyBtYXJnaW5Cb3R0b20oKSArIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCksIHJoKTsKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiA2NjQzMikKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBA
IFJlbmRlclZpZXc6OlJlbmRlclZpZXcoTm9kZSogbm9kZSwgRnJhbWUKICAgICAsIG1fZm9yY2Vk
UGFnZUJyZWFrKGZhbHNlKQogICAgICwgbV9sYXlvdXRTdGF0ZSgwKQogICAgICwgbV9sYXlvdXRT
dGF0ZURpc2FibGVDb3VudCgwKQorICAgICwgbV9ib2R5SXNMVFIodHJ1ZSkKIHsKICAgICAvLyBD
bGVhciBvdXIgYW5vbnltb3VzIGJpdCwgc2V0IGJlY2F1c2UgUmVuZGVyT2JqZWN0IGFzc3VtZXMK
ICAgICAvLyBhbnkgcmVuZGVyZXIgd2l0aCBkb2N1bWVudCBhcyB0aGUgbm9kZSBpcyBhbm9ueW1v
dXMuCkBAIC0xMjUsOCArMTI2LDggQEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogCiAgICAg
Ly8gUmVzZXQgb3ZlcmZsb3cgYW5kIHRoZW4gcmVwbGFjZSBpdCB3aXRoIGRvY1dpZHRoIGFuZCBk
b2NIZWlnaHQuCiAgICAgbV9vdmVyZmxvdy5jbGVhcigpOwotICAgIGFkZExheW91dE92ZXJmbG93
KEludFJlY3QoMCwgMCwgZG9jV2lkdGgoKSwgZG9jSGVpZ2h0KCkpKTsKLQorICAgIGludCBsZWZ0
T3ZlcmZsb3cgPSBkb2NMZWZ0KCk7CisgICAgYWRkTGF5b3V0T3ZlcmZsb3coSW50UmVjdChsZWZ0
T3ZlcmZsb3csIDAsIGRvY1dpZHRoKGxlZnRPdmVyZmxvdyksIGRvY0hlaWdodCgpKSk7CiAKICAg
ICBBU1NFUlQobGF5b3V0RGVsdGEoKSA9PSBJbnRTaXplKCkpOwogICAgIEFTU0VSVChtX2xheW91
dFN0YXRlRGlzYWJsZUNvdW50ID09IDApOwpAQCAtNjMwLDkgKzYzMSwxNSBAQCBpbnQgUmVuZGVy
Vmlldzo6ZG9jSGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4gaDsKIH0KIAotaW50IFJlbmRlclZp
ZXc6OmRvY1dpZHRoKCkgY29uc3QKK2ludCBSZW5kZXJWaWV3Ojpkb2NMZWZ0KCkgY29uc3QKK3sK
KyAgICAvLyBDbGlwIG91dCBsZWZ0IG92ZXJmbG93IGluIExUUiBwYWdlLgorICAgIHJldHVybiBt
X2JvZHlJc0xUUiA/IDAgOiBzdGQ6Om1pbigwLCBsZWZ0bW9zdFBvc2l0aW9uKCkpOworfQorCitp
bnQgUmVuZGVyVmlldzo6ZG9jV2lkdGgoaW50IGxlZnRPdmVyZmxvdykgY29uc3QKIHsKLSAgICBp
bnQgdyA9IHJpZ2h0bW9zdFBvc2l0aW9uKCk7CisgICAgaW50IHcgPSBtX2JvZHlJc0xUUiA/IHJp
Z2h0bW9zdFBvc2l0aW9uKCkgOiB3aWR0aCgpIC0gbGVmdE92ZXJmbG93OwogCiAgICAgZm9yIChS
ZW5kZXJCb3gqIGMgPSBmaXJzdENoaWxkQm94KCk7IGM7IGMgPSBjLT5uZXh0U2libGluZ0JveCgp
KSB7CiAgICAgICAgIGludCBkdyA9IGMtPndpZHRoKCkgKyBjLT5tYXJnaW5MZWZ0KCkgKyBjLT5t
YXJnaW5SaWdodCgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkocmV2aXNpb24gNjY0MzIp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
Niw2ICsxNjYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzQ29tcG9zaXRpbmcoKSBjb25zdDsK
ICNlbmRpZgogCisgICAgdm9pZCBzZXRCb2R5SXNMVFIoYm9vbCBib2R5SXNMVFIpIHsgbV9ib2R5
SXNMVFIgPSBib2R5SXNMVFI7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBtYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBi
b29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wg
dXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKQEAgLTE3NCw3ICsxNzYsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVwYWludChjb25zdCBJbnRSZWN0JiByKSBjb25z
dDsKICAgICAgICAgCiAgICAgaW50IGRvY0hlaWdodCgpIGNvbnN0OwotICAgIGludCBkb2NXaWR0
aCgpIGNvbnN0OworICAgIGludCBkb2NMZWZ0KCkgY29uc3Q7CisgICAgaW50IGRvY1dpZHRoKGlu
dCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBGcmFtZVZpZXcqIG1fZnJhbWVWaWV3OwpAQCAt
MjA1LDYgKzIwOCw3IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgIE93blB0cjxSZW5kZXJMYXllckNvbXBvc2l0b3I+IG1fY29tcG9zaXRvcjsKICNlbmRp
ZgorICAgIGJvb2wgbV9ib2R5SXNMVFI7CiB9OwogCiBpbmxpbmUgUmVuZGVyVmlldyogdG9SZW5k
ZXJWaWV3KFJlbmRlck9iamVjdCogb2JqZWN0KQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2NTI2KQorKysg
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAx
MC0wOC0zMSAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQtdG8tbGVmdCBwYWdlcyBzaG91
bGQgYmUgc2Nyb2xsYWJsZSB0byByZXZlYWwgbGVmdCBvdmVyZmxvdy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTU2CisKKyAgICAgICAgSW4gTWFj
IHBvcnQsIHNldCBhbmQgZ2V0IHRoZSBvcmlnaW5hbCB4LWF4aXMgc2Nyb2xsIHBvc2l0aW9uLgor
ICAgICAgICBBbmQgcmVzZXQgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gcHJlc3MgSE9NRS9FTkQga2V5
LgorCisgICAgICAgICogV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW06CisgICAg
ICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBzZXRTY3JvbGxPcmlnaW5YOl0pOgorICAg
ICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgc2Nyb2xsT3JpZ2luWF0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZVZpZXcgX3Nj
cm9sbFRvQmVnaW5uaW5nT2ZEb2N1bWVudF0pOgorICAgICAgICAoLVtXZWJGcmFtZVZpZXcgX3Nj
cm9sbFRvRW5kT2ZEb2N1bWVudF0pOgorCiAyMDEwLTA4LTMwICBNYXJrIFJvd2UgIDxtcm93ZUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0JKHJldmlzaW9u
IDY2NDMyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsOSBAQCBzdHJ1Y3QgV2ViRHluYW1pY1Njcm9s
bEJhcnNWaWV3UHJpdmF0ZSB7CiAgICAgYm9vbCBhbHdheXNIaWRlVmVydGljYWxTY3JvbGxlcjsK
ICAgICBib29sIGhvcml6b250YWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRkZW47CiAg
ICAgYm9vbCB2ZXJ0aWNhbFNjcm9sbGluZ0FsbG93ZWRCdXRTY3JvbGxlckhpZGRlbjsKKworICAg
IC8vIHNjcm9sbE9yaWdpblggaXMgMCBmb3IgTFRSIHBhZ2UgYW5kIGlzIHRoZSBuZWdhdGl2ZSBv
ZiBsZWZ0IGxheW91dCBvdmVyZmxvdyB2YWx1ZSBmb3IgUlRMIHBhZ2UuCisgICAgaW50IHNjcm9s
bE9yaWdpblg7CiB9OwogCiBAaW1wbGVtZW50YXRpb24gV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3
CkBAIC01MjUsNCArNTI4LDIzIEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3JlZCAKICAg
ICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRdOwogfQogCistICh2b2lkKXNl
dFNjcm9sbE9yaWdpblg6KGludClzY3JvbGxPcmlnaW5YCit7CisgICAgX3ByaXZhdGUtPnNjcm9s
bE9yaWdpblggPSBzY3JvbGxPcmlnaW5YOworCisgICAgLy8gVGhlcmUgYXBwZWFycyB0byBiZSBh
IGJ1ZyByZWxhdGVkIHRvIHBhZ2Ugem9vbSBhbmQgcGFnZSBsb2FkLgorICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg2My4KKyAgICBpZiAoc2Nyb2xsT3Jp
Z2luWCkgeworICAgICAgICAvLyAiLVtzZWxmIHNjcm9sbE9yaWdpblhdIiBlcXVhbHMgdG8gbGVm
dCBsYXlvdXQgb3ZlcmZsb3cuCisgICAgICAgIC8vIFNldCBsZWZ0IGxheW91dCBvdmVyZmxvdyBp
bnRvIGRvY3VtZW50IHZpZXcncyBib3VuZHMgeC1heGlzIG9yaWdpbiB0byBjb3ZlciB0aGUgZW50
aXJlIGNhbnZhcy4KKyAgICAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBkb2N1bWVu
dFZpZXddOworICAgICAgICBbZG9jdW1lbnRWaWV3IHNldEJvdW5kc09yaWdpbjpOU01ha2VQb2lu
dCgtc2Nyb2xsT3JpZ2luWCwgW2RvY3VtZW50VmlldyBib3VuZHNdLm9yaWdpbi55KV07CisgICAg
fQorfQorCistIChpbnQpc2Nyb2xsT3JpZ2luWAoreworICAgIHJldHVybiBfcHJpdmF0ZS0+c2Ny
b2xsT3JpZ2luWDsKK30KKwogQGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1t
CShyZXZpc2lvbiA2NjQzMikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTUzNiw2ICs1MzYsNyBAQCAtIChCT09MKV9zY3JvbGxUb0JlZ2lu
bmluZ09mRG9jdW1lbnQKICAgICBpZiAoIVtzZWxmIF9pc1Njcm9sbGFibGVdKQogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgTlNQb2ludCBwb2ludCA9IFtbW3NlbGYgX3Njcm9sbFZpZXddIGRvY3Vt
ZW50Vmlld10gZnJhbWVdLm9yaWdpbjsKKyAgICBwb2ludC54ICs9IFtbc2VsZiBfc2Nyb2xsVmll
d10gc2Nyb2xsT3JpZ2luWF07CiAgICAgcmV0dXJuIFtbc2VsZiBfY29udGVudFZpZXddIF9zY3Jv
bGxUbzomcG9pbnQgYW5pbWF0ZTpZRVNdOwogfQogCkBAIC01NDcsNiArNTQ4LDcgQEAgLSAoQk9P
TClfc2Nyb2xsVG9FbmRPZkRvY3VtZW50CiAgICAgICAgIHJldHVybiBOTzsKICAgICBOU1JlY3Qg
ZnJhbWUgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVudFZpZXddIGZyYW1lXTsKICAgICBO
U1BvaW50IHBvaW50ID0gTlNNYWtlUG9pbnQoZnJhbWUub3JpZ2luLngsIE5TTWF4WShmcmFtZSkp
OworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmlnaW5YXTsKICAg
ICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10gX3Njcm9sbFRvOiZwb2ludCBhbmltYXRlOllF
U107CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2NTI2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDgtMzEgIFhpYW9tZWkg
SmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJpZ2h0LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUg
dG8gcmV2ZWFsIGxlZnQgb3ZlcmZsb3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU1NgorCisgICAgICAgIEZvciBSVEwgcGFnZSwgc2F2ZSBsZWZ0
IGxheW91dCBvdmVyZmxvdyBhbmQgaW5jbHVkZSBpdCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAg
ICBzaXplIGR1cmluZyBsYXlvdXQuIFVzZSB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgd2hlbiBz
Y3JvbGwgYW5kIHBhaW50CisgICAgICAgIHRoZSBwYWdlLiBCZWhhdmlvciBvbiBMVFIgcGFnZSBz
aG91bGQgYmUgdW50b3VjaGVkIHNpbmNlIGxlZnQgbGF5b3V0IAorICAgICAgICBvdmVyZmxvdyBp
cyBzZXQgYXMgMCBmb3IgTFRSIHBhZ2UuCisKKyAgICAgICAgKiBmYXN0L2RvbS9ob3Jpem9udGFs
LXNjcm9sbGJhci1pbi1ydGwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vbGVmdC1v
dmVyZmxvdy1pbi1sdHIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmlnaHQtb3Zl
cmZsb3ctaW4tcnRsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1y
dGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20v
bGVmdC1vdmVyZmxvdy1pbi1sdHItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisKIDIwMTAtMDgtMzEgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xs
YmFyLWluLXJ0bC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNCBAQAorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorICAgICAg
ICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2
YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxp
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAg
ICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0
dWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFs
ICE9IGV4cGVjdGVkKQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAi
OiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVk
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsg
bWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0VHJ1ZShtZXNzYWdlLCBmYWN0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmIChmYWN0KQorICAgICAgICAgICAgICAgICAgICBsb2coIlxu
IiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFggPSAt
MTAwMDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFkgPSA1MDA7CisKKyAgICAgICAg
ICAgIHZhciBmaXJzdFRpbWVMb2FkID0gdHJ1ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZnVuY3Rpb24gbW91c2V3aGVlbEhhbmRsZXIoZSkgCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0RXF1YWwoIndoZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3Jv
bGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rpb24oKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworICAgICAgICAgICAgICAgIGlmICghZmlyc3RUaW1lTG9hZCkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgLy8gVGVzdCBob3Jpem9udGFsIHNjcm9s
bCBiYXIgcHJlc2VudHMgYW5kIHdhcyBpbml0aWFsbHkgYXQgdGhlIHJpZ2h0IGZvciBSVEwgcGFn
ZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogRkFJTCBpbiBNYWMgLS0gZm9yIFJUTCBwYWdl
LCB0aGUgc2Nyb2xsIGJhciBpcyBhdCB0aGUgbGVmdCB3aGVuIHBhZ2UgZmlyc3QgbG9hZC4KKyAg
ICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgib3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdl
ICIsIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8v
IFRlc3QgaG9yaXpvbnRhbCBzY3JvbGwuCisgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRv
KGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRFcXVhbCgiaG9yaXpvbnRhbCBzY3JvbGw6ICIsIHdpbmRvdy5zY3JvbGxYLCBleHBlY3RlZFNj
cm9sbFgpOworICAgICAgICAgICAgICAgIC8vIFRlc3QgY2FsbGluZyB3aW5kb3cuc2Nyb2xsWCBj
b250aW51b3VzbHkgd29udCBjaGFuZ2UgdGhlIHNjcm9sbFggcG9zaXRpb24uCisgICAgICAgICAg
ICAgICAgYXNzZXJ0RXF1YWwoImNvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYICIsIHdp
bmRvdy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAgICAgCisKKyAgICAgICAg
ICAgICAgICAvLyBUZXN0IHpvb21pbmcgd29udCByZXNldCBzY3JvbGwgcG9zaXRpb24uCisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IEZBSUwgaW4gTWFjIC0tIGZvciBSVEwgcGFnZSwgcHJlc2Vy
dmUgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gem9vbWluZyBzZWVtcyBkb2VzIG5vdCB3b3JrIHdlbGwu
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkp
OworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci56b29tUGFnZUluKCk7CisgICAgICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlT3V0KCk7CisgICAgICAgICAgICAgICAg
ICAgIGFzc2VydEVxdWFsKCJ6b29tIGluIGFuZCBvdXQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9u
Iiwgd2luZG93LnNjcm9sbFgsZXhwZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHJlc2l6ZSB3b250IHJlc2V0
IHNjcm9sbCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICB3aW5kb3cucmVzaXplVG8oMTAwMCwg
d2luZG93LmlubmVySGVpZ2h0KTsKKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhw
ZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgIHdpbmRvdy5y
ZXNpemVUbygyMDAwLCB3aW5kb3cuaW5uZXJIZWlnaHQpOworICAgICAgICAgICAgICAgIGFzc2Vy
dEVxdWFsKCJyZXNpemUgcHJlc2VydmVzIHNjcm9sbCBwb3NpdGlvbiIsIHdpbmRvdy5zY3JvbGxY
LCBleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8v
IFRlc3Qgd2hlZWwgc2Nyb2xsIHByZXNlcnZlcyBob3Jpem9udGFsIHNjcm9sbCBwb3NpdGlvbi4K
KyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3Rl
ZFNjcm9sbFkgLyAyKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZXdoZWVsIiwgbW91c2V3aGVlbEhhbmRsZXIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB2
YXIgd2hlZWxFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJXaGVlbEV2ZW50Iik7CisgICAg
ICAgICAgICAgICAgd2hlZWxFdmVudC5pbml0V2ViS2l0V2hlZWxFdmVudCgwLCBleHBlY3RlZFNj
cm9sbFkgLyAyLCB3aW5kb3csIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KTsKKyAgICAgICAgICAgICAgICBkaXYuZGlzcGF0Y2hFdmVudCh3aGVlbEV2ZW50KTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3QgSE9NRS9FTkQgb3BlcmF0aW9uLgorICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gTm90IHVzaW5nIGFzc2VydCBlcXVhbCBoZXJlIHNpbmNlIHRoZSBiZWhhdmlvciBpcyBk
aWZmZXJlbnQgaW4gZWFjaCBwb3J0LiAKKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1w
bGUsIGluIE1hYywgSE9NRS9FTkQga2V5IHJlc2V0IGJvdGggeCBhbmQgeSBzY3JvbGwgcG9zaXRp
b24uIAorICAgICAgICAgICAgICAgICAgICAvLyBJbiBDaHJvbWl1bSwgSE9NRS9FTkQga2V5IG9u
bHkgcmVzZXQgeSBzY3JvbGwgcG9zaXRpb24sIGFuZCB4IHNjcm9sbCBwb3NpdGlvbiBpcyBwcmVz
ZXJ2ZWQuCisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9s
bFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtl
eURvd24oImhvbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJLZXlEb3duIEhPTUUgbW92
ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6ICIgKyB3aW5kb3cuc2Ny
b2xsWCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNj
cm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oImVuZCIpOworICAgICAgICAgICAgICAgICAgICBsb2coIktleURvd24gRU5EIG1v
dmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAiICsgd2luZG93LnNj
cm9sbFgsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIC8vIFRlc3Qgc2VsZWN0IGFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudCBjb250ZW50LgorICAg
ICAgICAgICAgICAgIHdpbmRvdy5yZXNpemVUbyg1MDAsIDUwMCk7CisgICAgICAgICAgICAgICAg
dmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAg
ICBkaXYuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2Vs
ZWN0QWxsIik7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgic2VsZWN0QWxsIHNlbGVjdHMg
YWxsIGRvY3VtZW50Iiwgc2VsZWN0aW9uLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGRpdi5pbm5l
ckhUTUwubGVuZ3RoKSwgZGl2LmlubmVySFRNTCk7CisKKyAgICAgICAgICAgICAgICBmaXJzdFRp
bWVMb2FkID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHJlbG9hZCBwcmVzZXJ2
ZXMgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBl
Y3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgd2luZG93Lmxv
Y2F0aW9uLnJlbG9hZCgpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJyZWxvYWQgcHJl
c2VydmUgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBkaXI9cnRsPgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0eWxlPSJ3aGl0ZXNwYWNlOm5vd3Jh
cDsgd2lkdGg6IDQwMDBweDsgaGVpZ2h0OiAxMDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsi
PkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0
LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1h
Z25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0
YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNl
cXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRl
IHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2Vw
dGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEg
cXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uIjwvZGl2Pgor
ICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAor77u/PCFET0NUWVBFIGh0bWwgUFVC
TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cu
dzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHRpdGxlPlRlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZTwvdGl0bGU+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAg
ICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7
CisgICAgICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVh
bChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4i
ICsgbWVzc2FnZSArICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVk
OiAiICsgZXhwZWN0ZWQpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAg
IAorICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAg
ICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAg
ICAgIHZhciBvcmlnaW5hbCA9IHdpbmRvdy5zY3JvbGxYOworICAgICAgICAgICAgICAgIHdpbmRv
dy5zY3JvbGxUbygtMSwgMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInNjcm9sbCIs
IHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0eWxl
PSJwb3NpdGlvbjpyZWxhdGl2ZTsgcmlnaHQ6NDBweCI+dGVzdCBsZWZ0IG92ZXJmbG93IGluIExU
UiBwYWdlLjwvZGl2PgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4t
cnRsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmlnaHQtb3ZlcmZs
b3ctaW4tcnRsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yaWdo
dC1vdmVyZmxvdy1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAor77u/
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPlRlc3QgcmlnaHQgb3ZlcmZsb3cgaW4gUlRMIHBhZ2U8
L3RpdGxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFw
cGVuZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAg
ICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBh
Y3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsK
KyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
aXYiKTsKKyAgICAgICAgICAgICAgICB2YXIgb3JpZ2luYWwgPSB3aW5kb3cuc2Nyb2xsWDsKKyAg
ICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMSwgMCk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0RXF1YWwoInNjcm9sbCIsIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IHN0eWxlPSJkaXJl
Y3Rpb246cnRsIj4KKyAgICAgICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0icG9zaXRpb246cmVsYXRp
dmU7IGxlZnQ6NDBweCI+dGVzdCByaWdodCBvdmVyZmxvdyBpbiBSVEwgcGFnZS48L2Rpdj4KKyAg
ICAgICAgPHVsIGlkPSJjb25zb2xlIj48L3VsPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xs
YmFyLWluLXJ0bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
ZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTEgQEAKK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1
ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBs
YWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1
aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBl
eCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVu
ZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVs
bGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRl
bnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0
IGxhYm9ydW0uIgorb3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDogU3VjY2VzcworaG9y
aXpvbnRhbCBzY3JvbGw6IDogU3VjY2VzcworY29udGludW91c2x5IGNhbGwgd2luZG93LnNjcm9s
bFggOiBTdWNjZXNzCit6b29tIGluIGFuZCBvdXQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uOiBT
dWNjZXNzCityZXNpemUgcHJlc2VydmVzIHNjcm9sbCBwb3NpdGlvbjogU3VjY2Vzcword2hlZWwg
c2Nyb2xsIHByZXNlcnZlcyBob3Jpem9udGFsIHNjcm9sbCBwb3NpdGlvbjogU3VjY2VzcworS2V5
RG93biBIT01FIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAt
MTAwMAorS2V5RG93biBFTkQgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRM
IHBhZ2U6IC0xMDAwCitzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1Y2Nlc3MKK3Jl
bG9hZCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9o
b3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWlu
LXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK0xvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8g
ZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1
YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxs
YW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVp
cyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVz
c2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50
IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmlj
aWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uIgorb3JpZ2luYWwgc2Nyb2xs
IHggZm9yIFJUTCBwYWdlIDogRmFpbHVyZSwgYWN0dWFsOiAtMzIyNTsgZXhwZWN0ZWQ6IDAKK2hv
cml6b250YWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3Jv
bGxYIDogU3VjY2Vzcworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjog
RmFpbHVyZSwgYWN0dWFsOiAtODY2OyBleHBlY3RlZDogLTEwMDAKK3Jlc2l6ZSBwcmVzZXJ2ZXMg
c2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCit3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250
YWwgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCitLZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBw
b3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6IDAKK0tleURvd24gRU5EIG1vdmUgeC1zY3Jv
bGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAwCitzZWxlY3RBbGwgc2VsZWN0cyBh
bGwgZG9jdW1lbnQ6IFN1Y2Nlc3MKK3JlbG9hZCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246IFN1
Y2Nlc3MKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9sZWZ0LW92ZXJm
bG93LWluLWx0ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93
LWluLWx0ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAordGVzdCBs
ZWZ0IG92ZXJmbG93IGluIExUUiBwYWdlLgorc2Nyb2xsOiBTdWNjZXNzCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vcmln
aHQtb3ZlcmZsb3ctaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK3Rlc3QgcmlnaHQgb3ZlcmZsb3cgaW4g
UlRMIHBhZ2UuCitzY3JvbGw6IFN1Y2Nlc3MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66128</attachid>
            <date>2010-08-31 15:49:18 -0700</date>
            <delta_ts>2010-10-25 15:44:15 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>23556.v4</filename>
            <type>text/plain</type>
            <size>32113</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjUzOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTAtMDgtMzEgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0
LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZs
b3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1
NgorCisgICAgICAgIEZvciBSVEwgcGFnZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQg
aW5jbHVkZSBpdCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQu
IFVzZSB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgd2hlbiBzY3JvbGwgYW5kIHBhaW50CisgICAg
ICAgIHRoZSBwYWdlLiBCZWhhdmlvciBvbiBMVFIgcGFnZSBzaG91bGQgYmUgdW50b3VjaGVkIHNp
bmNlIGxlZnQgbGF5b3V0IAorICAgICAgICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBh
Z2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwuaHRtbAorCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjphZGp1c3RWaWV3U2l6ZSk6IFNhdmUgbmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQgb3ZlcmZsb3cg
YXMgc2Nyb2xsIFggb3JpZ2luLiBBbmQgaW5jbHVkZXMgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgaW50
byBkb2N1bWVudCBzaXplLgorICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaDog
QWRkIG1ldGhvZHMgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgc2Nyb2xsIFggb3JpZ2luLgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Vmlldzo6U2Nyb2xsVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjptYXhpbXVt
U2Nyb2xsUG9zaXRpb24pOiBNaW51cyBzY3JvbGwgWCBvcmlnaW4gZnJvbSBtYXhpbXVtIGhvcml6
b250YWwgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bWlu
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmFkanVz
dFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFNjcm9s
bFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJh
cnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxW
aWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3Jv
bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNj
cm9sbE9yaWdpblgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzdHlsZURpZENoYW5nZSk6IFByb3BvZ2F0ZSBIVE1MIGJv
ZHkgZGlyZWN0aW9uYWxpdHkgdG8gaXRzIFJlbmRlclZpZXcuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKTogSW5jbHVkZSBsZWZ0IGxheW91dCBv
dmVyZmxvdyBpbnRvIGNhbnZhcyBzaXplLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bGF5b3V0KTogU2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxv
dy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY0xlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlldzo6ZG9jV2lkdGgpOiBJbmNsdWRlIGxlZnQgbGF5b3V0IG92ZXJmbG93
IGludG8gZG9jIHdpZHRoIGZvciBSVEwgcGFnZS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2V0Qm9keUlzTFRSKToKKwog
MjAxMC0wOC0zMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDY2
NDMyKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
Myw3ICs0NDMsOCBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0Vmlld1NpemUoKQogICAgIGlmICgh
cm9vdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0Q29udGVudHNTaXplKEludFNpemUocm9v
dC0+cmlnaHRMYXlvdXRPdmVyZmxvdygpLCByb290LT5ib3R0b21MYXlvdXRPdmVyZmxvdygpKSk7
CisgICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsT3JpZ2luWCgtcm9vdC0+bGVmdExheW91dE92ZXJm
bG93KCkpOworICAgIHNldENvbnRlbnRzU2l6ZShJbnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3Zl
cmZsb3coKSAtIHJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpLCByb290LT5ib3R0b21MYXlvdXRP
dmVyZmxvdygpKSk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9y
dChSZW5kZXJPYmplY3QqIG8sIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2
TW9kZSkKSW5kZXg6IFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oCShyZXZpc2lvbiA2NjQz
MikKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC0gKHZvaWQpc2V0U2Nyb2xs
aW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUpaE1vZGUgdmVydGljYWw6KFdlYkNvcmU6
OlNjcm9sbGJhck1vZGUpdk1vZGUgYW5kTG9jazooQk9PTClsb2NrOwogLSAodm9pZClzY3JvbGxp
bmdNb2RlczooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSopaE1vZGUgdmVydGljYWw6KFdlYkNvcmU6
OlNjcm9sbGJhck1vZGUqKXZNb2RlOwogLSAodm9pZClzZXRTY3JvbGxCYXJzU3VwcHJlc3NlZDoo
Qk9PTClzdXBwcmVzc2VkIHJlcGFpbnRPblVuc3VwcHJlc3M6KEJPT0wpcmVwYWludDsKKy0gKHZv
aWQpc2V0U2Nyb2xsT3JpZ2luWDooaW50KXNjcm9sbE9yaWdpblg7CistIChpbnQpc2Nyb2xsT3Jp
Z2luWDsKIEBlbmQKIAogQHByb3RvY29sIFdlYkNvcmVGcmFtZVZpZXcKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAkocmV2aXNpb24gNjY0MzIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIFNjcm9sbFZpZXc6OlNj
cm9sbFZpZXcoKQogICAgICwgbV9kcmF3UGFuU2Nyb2xsSWNvbihmYWxzZSkKICAgICAsIG1fdXNl
Rml4ZWRMYXlvdXQoZmFsc2UpCiAgICAgLCBtX3BhaW50c0VudGlyZUNvbnRlbnRzKGZhbHNlKQor
ICAgICwgbV9zY3JvbGxPcmlnaW5YKDApCiB7CiAgICAgcGxhdGZvcm1Jbml0KCk7CiB9CkBAIC0y
NjgsOSArMjY5LDIxIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNTaXplKGNvbnN0IEkK
IAogSW50UG9pbnQgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsK
LSAgICBJbnRTaXplIG1heGltdW1PZmZzZXQgPSBjb250ZW50c1NpemUoKSAtIHZpc2libGVDb250
ZW50UmVjdCgpLnNpemUoKTsKKyAgICBJbnRQb2ludCBtYXhpbXVtT2Zmc2V0KGNvbnRlbnRzV2lk
dGgoKSAtIHZpc2libGVXaWR0aCgpIC0gbV9zY3JvbGxPcmlnaW5YLCBjb250ZW50c0hlaWdodCgp
IC0gdmlzaWJsZUhlaWdodCgpKTsKICAgICBtYXhpbXVtT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1pl
cm8oKTsKLSAgICByZXR1cm4gSW50UG9pbnQobWF4aW11bU9mZnNldC53aWR0aCgpLCBtYXhpbXVt
T2Zmc2V0LmhlaWdodCgpKTsKKyAgICByZXR1cm4gbWF4aW11bU9mZnNldDsKK30KKworSW50UG9p
bnQgU2Nyb2xsVmlldzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gSW50UG9pbnQoLW1fc2Nyb2xsT3JpZ2luWCwgMCk7Cit9CisKK0ludFBvaW50IFNjcm9sbFZp
ZXc6OmFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UoY29uc3QgSW50UG9pbnQmIHNjcm9s
bFBvaW50KSBjb25zdAoreworICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gc2Nyb2xs
UG9pbnQuc2hydW5rVG8obWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOworICAgIG5ld1Njcm9sbFBv
c2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24uZXhwYW5kZWRUbyhtaW5pbXVtU2Nyb2xsUG9zaXRp
b24oKSk7CisgICAgcmV0dXJuIG5ld1Njcm9sbFBvc2l0aW9uOwogfQogCiB2b2lkIFNjcm9sbFZp
ZXc6OnZhbHVlQ2hhbmdlZChTY3JvbGxiYXIqIHNjcm9sbGJhcikKQEAgLTI3OSw3ICsyOTIsNyBA
QCB2b2lkIFNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZChTY3JvbGxiYXIqCiAgICAgSW50U2l6ZSBu
ZXdPZmZzZXQgPSBtX3Njcm9sbE9mZnNldDsKICAgICBpZiAoc2Nyb2xsYmFyKSB7CiAgICAgICAg
IGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKLSAg
ICAgICAgICAgIG5ld09mZnNldC5zZXRXaWR0aChzY3JvbGxiYXItPnZhbHVlKCkpOworICAgICAg
ICAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKHNjcm9sbGJhci0+dmFsdWUoKSAtIG1fc2Nyb2xsT3Jp
Z2luWCk7CiAgICAgICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0
aWNhbFNjcm9sbGJhcikKICAgICAgICAgICAgIG5ld09mZnNldC5zZXRIZWlnaHQoc2Nyb2xsYmFy
LT52YWx1ZSgpKTsKICAgICB9CkBAIC0zMDYsOCArMzE5LDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojpz
ZXRTY3JvbGxQb3NpdGlvbihjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW50
UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb2ludC5zaHJ1bmtUbyhtYXhpbXVtU2Ny
b2xsUG9zaXRpb24oKSk7Ci0gICAgbmV3U2Nyb2xsUG9zaXRpb24uY2xhbXBOZWdhdGl2ZVRvWmVy
bygpOworICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gYWRqdXN0U2Nyb2xsUG9zaXRp
b25XaXRoaW5SYW5nZShzY3JvbGxQb2ludCk7CiAKICAgICBpZiAobmV3U2Nyb2xsUG9zaXRpb24g
PT0gc2Nyb2xsUG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDIwLDEwICs0MzIsMTAg
QEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogICAgICAgICByZXR1
cm47CiAKICAgICBtX2luVXBkYXRlU2Nyb2xsYmFycyA9IHRydWU7Ci0gICAgSW50U2l6ZSBtYXhT
Y3JvbGxQb3NpdGlvbihjb250ZW50c1dpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSwgY29udGVudHNI
ZWlnaHQoKSAtIHZpc2libGVIZWlnaHQoKSk7Ci0gICAgSW50U2l6ZSBzY3JvbGwgPSBkZXNpcmVk
T2Zmc2V0LnNocnVua1RvKG1heFNjcm9sbFBvc2l0aW9uKTsKLSAgICBzY3JvbGwuY2xhbXBOZWdh
dGl2ZVRvWmVybygpOwotIAorCisgICAgSW50UG9pbnQgc2Nyb2xsUG9pbnQgPSBhZGp1c3RTY3Jv
bGxQb3NpdGlvbldpdGhpblJhbmdlKEludFBvaW50KGRlc2lyZWRPZmZzZXQud2lkdGgoKSwgZGVz
aXJlZE9mZnNldC5oZWlnaHQoKSkpOworICAgIEludFNpemUgc2Nyb2xsKHNjcm9sbFBvaW50Lngo
KSwgc2Nyb2xsUG9pbnQueSgpKTsKKwogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpIHsK
ICAgICAgICAgaW50IGNsaWVudFdpZHRoID0gdmlzaWJsZVdpZHRoKCk7CiAgICAgICAgIG1faG9y
aXpvbnRhbFNjcm9sbGJhci0+c2V0RW5hYmxlZChjb250ZW50c1dpZHRoKCkgPiBjbGllbnRXaWR0
aCk7CkBAIC00NDEsNyArNDUzLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJz
KGNvbnN0IAogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0lu
dmFsaWRhdGlvbih0cnVlKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdGVw
cyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKICAgICAgICAgbV9o
b3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdpZHRoLCBjb250ZW50c1dp
ZHRoKCkpOwotICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFZhbHVlKHNjcm9sbC53
aWR0aCgpKTsKKyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwu
d2lkdGgoKSArIG1fc2Nyb2xsT3JpZ2luWCk7CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNTdXBw
cmVzc2VkKQogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0lu
dmFsaWRhdGlvbihmYWxzZSk7IAogICAgIH0gCkBAIC05NTEsNiArOTYzLDE2IEBAIHZvaWQgU2Ny
b2xsVmlldzo6cmVtb3ZlUGFuU2Nyb2xsSWNvbigpCiAgICAgaG9zdFdpbmRvdygpLT5pbnZhbGlk
YXRlQ29udGVudHNBbmRXaW5kb3coSW50UmVjdChtX3BhblNjcm9sbEljb25Qb2ludCwgSW50U2l6
ZShwYW5JY29uU2l6ZUxlbmd0aCwgcGFuSWNvblNpemVMZW5ndGgpKSwgdHJ1ZSAvKmltbWVkaWF0
ZSovKTsKIH0KIAorCit2b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpblgoaW50IHgpCit7
IAorICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICBwbGF0Zm9ybVNldFNjcm9sbE9y
aWdpblgoeCk7CisgICAgZWxzZQorICAgICAgICBtX3Njcm9sbE9yaWdpblggPSB4OworfQorCisK
ICNpZiAhUExBVEZPUk0oV1gpICYmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShRVCkgJiYg
IVBMQVRGT1JNKEVGTCkKIAogdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUluaXQoKQpAQCAtOTgx
LDYgKzEwMDMsMTAgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdQog
ewogfQogCit2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luWChpbnQpCit7
Cit9CisKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdYKQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHJldmlzaW9uIDY2NDMyKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsOSBAQCBwdWJsaWM6
CiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29u
dGVudFJlY3QoKS5sb2NhdGlvbigpOyB9CiAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25z
dCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpIC0gSW50UG9pbnQoKTsg
fSAvLyBHZXRzIHRoZSBzY3JvbGxlZCBwb3NpdGlvbiBhcyBhbiBJbnRTaXplLiBDb252ZW5pZW50
IGZvciBhZGRpbmcgdG8gb3RoZXIgc2l6ZXMuCiAgICAgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBv
c2l0aW9uKCkgY29uc3Q7IC8vIFRoZSBtYXhpbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxl
ZCB0by4KKyAgICBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhl
IG1pbmltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgorICAgIC8vIEFkanVzdCB0
aGUgcGFzcyBpbiBzY3JvbGwgcG9zaXRpb24gd2l0aGluIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVt
IHBvc2l0aW9ucy4KKyAgICBJbnRQb2ludCBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdl
KGNvbnN0IEludFBvaW50JikgY29uc3Q7IAogICAgIGludCBzY3JvbGxYKCkgY29uc3QgeyByZXR1
cm4gc2Nyb2xsUG9zaXRpb24oKS54KCk7IH0KICAgICBpbnQgc2Nyb2xsWSgpIGNvbnN0IHsgcmV0
dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpOyB9CiAgICAgCkBAIC0yNjEsNiArMjY0LDggQEAgcHJv
dGVjdGVkOgogICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxz
CiAgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpOwogCisgICAgdm9pZCBzZXRTY3JvbGxPcmlnaW5YKGludCk7CisKIHByaXZhdGU6
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyOwogICAgIFJlZlB0
cjxTY3JvbGxiYXI+IG1fdmVydGljYWxTY3JvbGxiYXI7CkBAIC0yOTQsNiArMjk5LDExIEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fcGFpbnRzRW50aXJlQ29udGVudHM7CiAKKyAgICAvLyBtX3Nj
cm9sbE9yaWdpblggaXMgMCBmb3IgTFRSIHBhZ2UuIEFuZCBpdCBpcyBuZWdhdGl2ZSBvZiBsZWZ0
IGxheW91dAorICAgIC8vIG92ZXJmbG93IGZvciBSVEwgcGFnZS4gSXQgaXMgbWFpbmx5IHVzZWQg
dG8gc2V0IHRoZSBob3Jpem9udGFsIHNjcm9sbGJhcgorICAgIC8vIHBvc2l0aW9uIGZvciBSVEwg
cGFnZS4KKyAgICBpbnQgbV9zY3JvbGxPcmlnaW5YOworCiAgICAgdm9pZCBpbml0KCk7CiAgICAg
dm9pZCBkZXN0cm95KCk7CiAKQEAgLTMyMSw2ICszMzEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
cGxhdGZvcm1TZXRTY3JvbGxiYXJzU3VwcHJlc3NlZChib29sIHJlcGFpbnRPblVuc3VwcHJlc3Mp
OwogICAgIHZvaWQgcGxhdGZvcm1SZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJbnRSZWN0
JiwgYm9vbCBub3cpOwogICAgIGJvb2wgcGxhdGZvcm1Jc09mZnNjcmVlbigpIGNvbnN0OworICAg
CisgICAgdm9pZCBwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50KTsKIAogI2lmIFBMQVRGT1JN
KE1BQykgJiYgZGVmaW5lZCBfX09CSkNfXwogcHVibGljOgpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsVmlld01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxWaWV3TWFjLm1tCShyZXZpc2lvbiA2NjQzMikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbFZpZXdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2
b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1CiB2b2lkIFNjcm9sbFZpZXc6
OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBOU1BvaW50IHRlbXBQb2lu
dCA9IHsgbWF4KDAsIHNjcm9sbFBvaW50LngoKSksIG1heCgwLCBzY3JvbGxQb2ludC55KCkpIH07
IC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0LgorICAgIE5T
UG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luWF0sIHNj
cm9sbFBvaW50LngoKSksIG1heCgwLCBzY3JvbGxQb2ludC55KCkpIH07IC8vIERvbid0IHVzZSBO
U01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0LgogICAgIFtkb2N1bWVudFZpZXcoKSBz
Y3JvbGxQb2ludDp0ZW1wUG9pbnRdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9
CkBAIC0yMDIsNCArMjAyLDExIEBAIGJvb2wgU2Nyb2xsVmlldzo6cGxhdGZvcm1Jc09mZnNjcmVl
bigpIGMKICAgICByZXR1cm4gIVtwbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gfHwgIVtbcGxhdGZv
cm1XaWRnZXQoKSB3aW5kb3ddIGlzVmlzaWJsZV07CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6cGxh
dGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCB4KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKKyAgICBbc2Nyb2xsVmlldygpIHNldFNjcm9sbE9yaWdpblg6eF07CisgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA2NjQzMikKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw4ICsxODYsMTAgQEAg
dm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZgogICAgIH0KIAogICAgIC8v
IFNldCB0aGUgdGV4dCBjb2xvciBpZiB3ZSdyZSB0aGUgYm9keS4KLSAgICBpZiAoaXNCb2R5KCkp
CisgICAgaWYgKGlzQm9keSgpKSB7CiAgICAgICAgIGRvY3VtZW50KCktPnNldFRleHRDb2xvcihz
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOworICAgICAg
ICB2aWV3KCktPnNldEJvZHlJc0xUUihzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIpOworICAg
IH0KIH0KIAogdm9pZCBSZW5kZXJCb3g6OnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpCkBA
IC02MTIsOCArNjE0LDggQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25z
KAogCiAgICAgLy8gQ1NTMiAxNC4yOgogICAgIC8vIFRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBib3gg
Z2VuZXJhdGVkIGJ5IHRoZSByb290IGVsZW1lbnQgY292ZXJzIHRoZSBlbnRpcmUgY2FudmFzIGlu
Y2x1ZGluZwotICAgIC8vIGl0cyBtYXJnaW5zLgotICAgIGludCBieCA9IHR4IC0gbWFyZ2luTGVm
dCgpOworICAgIC8vIGl0cyBtYXJnaW5zLCBhbmQgaW5jbHVkaW5nIGl0cyBsZWZ0IGxheW91dCBv
dmVyZmxvdy4KKyAgICBpbnQgYnggPSB0eCAtIG1hcmdpbkxlZnQoKSArIHZpZXcoKS0+bGVmdExh
eW91dE92ZXJmbG93KCk7CiAgICAgaW50IGJ5ID0gdHkgLSBtYXJnaW5Ub3AoKTsKICAgICBpbnQg
YncgPSBtYXgodyArIG1hcmdpbkxlZnQoKSArIG1hcmdpblJpZ2h0KCkgKyBib3JkZXJMZWZ0KCkg
KyBib3JkZXJSaWdodCgpLCBydyk7CiAgICAgaW50IGJoID0gbWF4KGggKyBtYXJnaW5Ub3AoKSAr
IG1hcmdpbkJvdHRvbSgpICsgYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSwgcmgpOwpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDY2NDMyKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAg
UmVuZGVyVmlldzo6UmVuZGVyVmlldyhOb2RlKiBub2RlLCBGcmFtZQogICAgICwgbV9mb3JjZWRQ
YWdlQnJlYWsoZmFsc2UpCiAgICAgLCBtX2xheW91dFN0YXRlKDApCiAgICAgLCBtX2xheW91dFN0
YXRlRGlzYWJsZUNvdW50KDApCisgICAgLCBtX2JvZHlJc0xUUih0cnVlKQogewogICAgIC8vIENs
ZWFyIG91ciBhbm9ueW1vdXMgYml0LCBzZXQgYmVjYXVzZSBSZW5kZXJPYmplY3QgYXNzdW1lcwog
ICAgIC8vIGFueSByZW5kZXJlciB3aXRoIGRvY3VtZW50IGFzIHRoZSBub2RlIGlzIGFub255bW91
cy4KQEAgLTEyNSw4ICsxMjYsOCBAQCB2b2lkIFJlbmRlclZpZXc6OmxheW91dCgpCiAKICAgICAv
LyBSZXNldCBvdmVyZmxvdyBhbmQgdGhlbiByZXBsYWNlIGl0IHdpdGggZG9jV2lkdGggYW5kIGRv
Y0hlaWdodC4KICAgICBtX292ZXJmbG93LmNsZWFyKCk7Ci0gICAgYWRkTGF5b3V0T3ZlcmZsb3co
SW50UmVjdCgwLCAwLCBkb2NXaWR0aCgpLCBkb2NIZWlnaHQoKSkpOwotCisgICAgaW50IGxlZnRP
dmVyZmxvdyA9IGRvY0xlZnQoKTsKKyAgICBhZGRMYXlvdXRPdmVyZmxvdyhJbnRSZWN0KGxlZnRP
dmVyZmxvdywgMCwgZG9jV2lkdGgobGVmdE92ZXJmbG93KSwgZG9jSGVpZ2h0KCkpKTsKIAogICAg
IEFTU0VSVChsYXlvdXREZWx0YSgpID09IEludFNpemUoKSk7CiAgICAgQVNTRVJUKG1fbGF5b3V0
U3RhdGVEaXNhYmxlQ291bnQgPT0gMCk7CkBAIC02MzAsOSArNjMxLDE1IEBAIGludCBSZW5kZXJW
aWV3Ojpkb2NIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBoOwogfQogCi1pbnQgUmVuZGVyVmll
dzo6ZG9jV2lkdGgoKSBjb25zdAoraW50IFJlbmRlclZpZXc6OmRvY0xlZnQoKSBjb25zdAorewor
ICAgIC8vIENsaXAgb3V0IGxlZnQgb3ZlcmZsb3cgaW4gTFRSIHBhZ2UuCisgICAgcmV0dXJuIG1f
Ym9keUlzTFRSID8gMCA6IHN0ZDo6bWluKDAsIGxlZnRtb3N0UG9zaXRpb24oKSk7Cit9CisKK2lu
dCBSZW5kZXJWaWV3Ojpkb2NXaWR0aChpbnQgbGVmdE92ZXJmbG93KSBjb25zdAogewotICAgIGlu
dCB3ID0gcmlnaHRtb3N0UG9zaXRpb24oKTsKKyAgICBpbnQgdyA9IG1fYm9keUlzTFRSID8gcmln
aHRtb3N0UG9zaXRpb24oKSA6IHdpZHRoKCkgLSBsZWZ0T3ZlcmZsb3c7CiAKICAgICBmb3IgKFJl
bmRlckJveCogYyA9IGZpcnN0Q2hpbGRCb3goKTsgYzsgYyA9IGMtPm5leHRTaWJsaW5nQm94KCkp
IHsKICAgICAgICAgaW50IGR3ID0gYy0+d2lkdGgoKSArIGMtPm1hcmdpbkxlZnQoKSArIGMtPm1h
cmdpblJpZ2h0KCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCShyZXZpc2lvbiA2NjQzMikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTY2
LDYgKzE2Niw4IEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNDb21wb3NpdGluZygpIGNvbnN0Owog
I2VuZGlmCiAKKyAgICB2b2lkIHNldEJvZHlJc0xUUihib29sIGJvZHlJc0xUUikgeyBtX2JvZHlJ
c0xUUiA9IGJvZHlJc0xUUjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIG1hcExv
Y2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1
c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwpAQCAtMTc0LDcgKzE3Niw4IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRSZXBhaW50KGNvbnN0IEludFJlY3QmIHIpIGNvbnN0
OwogICAgICAgICAKICAgICBpbnQgZG9jSGVpZ2h0KCkgY29uc3Q7Ci0gICAgaW50IGRvY1dpZHRo
KCkgY29uc3Q7CisgICAgaW50IGRvY0xlZnQoKSBjb25zdDsKKyAgICBpbnQgZG9jV2lkdGgoaW50
KSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIEZyYW1lVmlldyogbV9mcmFtZVZpZXc7CkBAIC0y
MDUsNiArMjA4LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAgICAgT3duUHRyPFJlbmRlckxheWVyQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOwogI2VuZGlm
CisgICAgYm9vbCBtX2JvZHlJc0xUUjsKIH07CiAKIGlubGluZSBSZW5kZXJWaWV3KiB0b1JlbmRl
clZpZXcoUmVuZGVyT2JqZWN0KiBvYmplY3QpCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjY1NDApCisrKyBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEw
LTA4LTMxICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSaWdodC10by1sZWZ0IHBhZ2VzIHNob3Vs
ZCBiZSBzY3JvbGxhYmxlIHRvIHJldmVhbCBsZWZ0IG92ZXJmbG93LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTYKKworICAgICAgICBJbiBNYWMg
cG9ydCwgc2V0IGFuZCBnZXQgdGhlIG9yaWdpbmFsIHgtYXhpcyBzY3JvbGwgcG9zaXRpb24uCisg
ICAgICAgIEFuZCByZXNldCBzY3JvbGwgcG9zaXRpb24gd2hlbiBwcmVzcyBIT01FL0VORCBrZXku
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNldFNjcm9sbE9yaWdpblg6XSk6CisgICAg
ICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBzY3JvbGxPcmlnaW5YXSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Ny
b2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Ny
b2xsVG9FbmRPZkRvY3VtZW50XSk6CisKIDIwMTAtMDgtMzEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbQkocmV2
aXNpb24gNjY0MzIpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw5IEBAIHN0cnVjdCBXZWJEeW5hbWlj
U2Nyb2xsQmFyc1ZpZXdQcml2YXRlIHsKICAgICBib29sIGFsd2F5c0hpZGVWZXJ0aWNhbFNjcm9s
bGVyOwogICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGluZ0FsbG93ZWRCdXRTY3JvbGxlckhpZGRl
bjsKICAgICBib29sIHZlcnRpY2FsU2Nyb2xsaW5nQWxsb3dlZEJ1dFNjcm9sbGVySGlkZGVuOwor
CisgICAgLy8gc2Nyb2xsT3JpZ2luWCBpcyAwIGZvciBMVFIgcGFnZSBhbmQgaXMgdGhlIG5lZ2F0
aXZlIG9mIGxlZnQgbGF5b3V0IG92ZXJmbG93IHZhbHVlIGZvciBSVEwgcGFnZS4KKyAgICBpbnQg
c2Nyb2xsT3JpZ2luWDsKIH07CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJEeW5hbWljU2Nyb2xsQmFy
c1ZpZXcKQEAgLTUyNSw0ICs1MjgsMjMgQEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
IAogICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUlzSWdub3JlZF07CiB9CiAKKy0gKHZv
aWQpc2V0U2Nyb2xsT3JpZ2luWDooaW50KXNjcm9sbE9yaWdpblgKK3sKKyAgICBfcHJpdmF0ZS0+
c2Nyb2xsT3JpZ2luWCA9IHNjcm9sbE9yaWdpblg7CisKKyAgICAvLyBUaGVyZSBhcHBlYXJzIHRv
IGJlIGEgYnVnIHJlbGF0ZWQgdG8gcGFnZSB6b29tIGFuZCBwYWdlIGxvYWQuCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODYzLgorICAgIGlmIChzY3Jv
bGxPcmlnaW5YKSB7CisgICAgICAgIC8vICItW3NlbGYgc2Nyb2xsT3JpZ2luWF0iIGVxdWFscyB0
byBsZWZ0IGxheW91dCBvdmVyZmxvdy4KKyAgICAgICAgLy8gU2V0IGxlZnQgbGF5b3V0IG92ZXJm
bG93IGludG8gZG9jdW1lbnQgdmlldydzIGJvdW5kcyB4LWF4aXMgb3JpZ2luIHRvIGNvdmVyIHRo
ZSBlbnRpcmUgY2FudmFzLgorICAgICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtzZWxmIGRv
Y3VtZW50Vmlld107CisgICAgICAgIFtkb2N1bWVudFZpZXcgc2V0Qm91bmRzT3JpZ2luOk5TTWFr
ZVBvaW50KC1zY3JvbGxPcmlnaW5YLCBbZG9jdW1lbnRWaWV3IGJvdW5kc10ub3JpZ2luLnkpXTsK
KyAgICB9Cit9CisKKy0gKGludClzY3JvbGxPcmlnaW5YCit7CisgICAgcmV0dXJuIF9wcml2YXRl
LT5zY3JvbGxPcmlnaW5YOworfQorCiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWVWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZp
ZXcubW0JKHJldmlzaW9uIDY2NDMyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTM2LDYgKzUzNiw3IEBAIC0gKEJPT0wpX3Njcm9sbFRv
QmVnaW5uaW5nT2ZEb2N1bWVudAogICAgIGlmICghW3NlbGYgX2lzU2Nyb2xsYWJsZV0pCiAgICAg
ICAgIHJldHVybiBOTzsKICAgICBOU1BvaW50IHBvaW50ID0gW1tbc2VsZiBfc2Nyb2xsVmlld10g
ZG9jdW1lbnRWaWV3XSBmcmFtZV0ub3JpZ2luOworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3Jv
bGxWaWV3XSBzY3JvbGxPcmlnaW5YXTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10g
X3Njcm9sbFRvOiZwb2ludCBhbmltYXRlOllFU107CiB9CiAKQEAgLTU0Nyw2ICs1NDgsNyBAQCAt
IChCT09MKV9zY3JvbGxUb0VuZE9mRG9jdW1lbnQKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5T
UmVjdCBmcmFtZSA9IFtbW3NlbGYgX3Njcm9sbFZpZXddIGRvY3VtZW50Vmlld10gZnJhbWVdOwog
ICAgIE5TUG9pbnQgcG9pbnQgPSBOU01ha2VQb2ludChmcmFtZS5vcmlnaW4ueCwgTlNNYXhZKGZy
YW1lKSk7CisgICAgcG9pbnQueCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhd
OwogICAgIHJldHVybiBbW3NlbGYgX2NvbnRlbnRWaWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1h
dGU6WUVTXTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjY1NDApCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0zMSAgWGlh
b21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmlnaHQtdG8tbGVmdCBwYWdlcyBzaG91bGQgYmUgc2Nyb2xs
YWJsZSB0byByZXZlYWwgbGVmdCBvdmVyZmxvdy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTU2CisKKyAgICAgICAgRm9yIFJUTCBwYWdlLCBzYXZl
IGxlZnQgbGF5b3V0IG92ZXJmbG93IGFuZCBpbmNsdWRlIGl0IGludG8gdGhlIGRvY3VtZW50Cisg
ICAgICAgIHNpemUgZHVyaW5nIGxheW91dC4gVXNlIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdyB3
aGVuIHNjcm9sbCBhbmQgcGFpbnQKKyAgICAgICAgdGhlIHBhZ2UuIEJlaGF2aW9yIG9uIExUUiBw
YWdlIHNob3VsZCBiZSB1bnRvdWNoZWQgc2luY2UgbGVmdCBsYXlvdXQgCisgICAgICAgIG92ZXJm
bG93IGlzIHNldCBhcyAwIGZvciBMVFIgcGFnZS4KKworICAgICAgICAqIGZhc3QvZG9tL2hvcml6
b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9s
ZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yaWdo
dC1vdmVyZmxvdy1pbi1ydGwuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFy
LWluLXJ0bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0
L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9mYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKwogMjAxMC0wOC0zMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1p
bi1ydGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTQgQEAKKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KKyAgICAgICAgICAg
IGZ1bmN0aW9uIGxvZyhzdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGxp
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBsaS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgICAgICAgICAgICAgICB2
YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAg
ICAgICAgICAgY29uc29sZS5hcHBlbmRDaGlsZChsaSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGFzc2VydEVxdWFsKG1lc3NhZ2UsIGFjdHVhbCwg
ZXhwZWN0ZWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGFjdHVhbCAhPSBl
eHBlY3RlZCkKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogRmFp
bHVyZSwgYWN0dWFsOiAiICsgYWN0dWFsICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3Nh
Z2UgKyAiOiBTdWNjZXNzIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGFzc2VydFRydWUobWVzc2FnZSwgZmFjdCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAoZmFjdCkKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBt
ZXNzYWdlICsgIjogRmFpbHVyZSIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRTY3JvbGxYID0gLTEwMDA7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRTY3JvbGxZID0gNTAwOworCisgICAgICAgICAgICB2
YXIgZmlyc3RUaW1lTG9hZCA9IHRydWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0
aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGFzc2VydEVxdWFsKCJ3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBv
c2l0aW9uIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICAgICAgICAgICAgICBpZiAoIWZpcnN0VGltZUxvYWQpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgICAgIC8vIFRlc3QgaG9yaXpvbnRhbCBzY3JvbGwgYmFy
IHByZXNlbnRzIGFuZCB3YXMgaW5pdGlhbGx5IGF0IHRoZSByaWdodCBmb3IgUlRMIHBhZ2UuCisg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IEZBSUwgaW4gTWFjIC0tIGZvciBSVEwgcGFnZSwgdGhl
IHNjcm9sbCBiYXIgaXMgYXQgdGhlIGxlZnQgd2hlbiBwYWdlIGZpcnN0IGxvYWQuCisgICAgICAg
ICAgICAgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSAiLCB3
aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0
IGhvcml6b250YWwgc2Nyb2xsLgorICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBl
Y3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1
YWwoImhvcml6b250YWwgc2Nyb2xsOiAiLCB3aW5kb3cuc2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxY
KTsKKyAgICAgICAgICAgICAgICAvLyBUZXN0IGNhbGxpbmcgd2luZG93LnNjcm9sbFggY29udGlu
dW91c2x5IHdvbnQgY2hhbmdlIHRoZSBzY3JvbGxYIHBvc2l0aW9uLgorICAgICAgICAgICAgICAg
IGFzc2VydEVxdWFsKCJjb250aW51b3VzbHkgY2FsbCB3aW5kb3cuc2Nyb2xsWCAiLCB3aW5kb3cu
c2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAgICAgIAorCisgICAgICAgICAgICAg
ICAgLy8gVGVzdCB6b29taW5nIHdvbnQgcmVzZXQgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBGQUlMIGluIE1hYyAtLSBmb3IgUlRMIHBhZ2UsIHByZXNlcnZlIHNj
cm9sbCBwb3NpdGlvbiB3aGVuIHpvb21pbmcgc2VlbXMgZG9lcyBub3Qgd29yayB3ZWxsLgorICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAg
ICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VJbigpOworICAgICAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci56b29tUGFnZU91dCgpOworICAgICAgICAgICAgICAgICAgICBh
c3NlcnRFcXVhbCgiem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbiIsIHdp
bmRvdy5zY3JvbGxYLGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCByZXNpemUgd29udCByZXNldCBzY3Jv
bGwgcG9zaXRpb24uCisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKDEwMDAsIHdpbmRv
dy5pbm5lckhlaWdodCk7CisgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVk
U2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cucmVzaXpl
VG8oMjAwMCwgd2luZG93LmlubmVySGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVh
bCgicmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWCwgZXhw
ZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0
IHdoZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24uCisgICAg
ICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3Jv
bGxZIC8gMik7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3
aGVlbCIsIG1vdXNld2hlZWxIYW5kbGVyLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdmFyIHdo
ZWVsRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiV2hlZWxFdmVudCIpOworICAgICAgICAg
ICAgICAgIHdoZWVsRXZlbnQuaW5pdFdlYktpdFdoZWVsRXZlbnQoMCwgZXhwZWN0ZWRTY3JvbGxZ
IC8gMiwgd2luZG93LCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgZGl2LmRpc3BhdGNoRXZlbnQod2hlZWxFdmVudCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IEhPTUUvRU5EIG9wZXJhdGlvbi4KKyAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IE5vdCB1c2luZyBhc3NlcnQgZXF1YWwgaGVyZSBzaW5jZSB0aGUgYmVoYXZpb3IgaXMgZGlmZmVy
ZW50IGluIGVhY2ggcG9ydC4gCisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCBp
biBNYWMsIEhPTUUvRU5EIGtleSByZXNldCBib3RoIHggYW5kIHkgc2Nyb2xsIHBvc2l0aW9uLiAK
KyAgICAgICAgICAgICAgICAgICAgLy8gSW4gQ2hyb21pdW0sIEhPTUUvRU5EIGtleSBvbmx5IHJl
c2V0IHkgc2Nyb2xsIHBvc2l0aW9uLCBhbmQgeCBzY3JvbGwgcG9zaXRpb24gaXMgcHJlc2VydmVk
LgorICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBl
eHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3du
KCJob21lIik7CisgICAgICAgICAgICAgICAgICAgIGxvZygiS2V5RG93biBIT01FIG1vdmUgeC1z
Y3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAiICsgd2luZG93LnNjcm9sbFgs
IDApOworICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxY
LCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKCJlbmQiKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJLZXlEb3duIEVORCBtb3ZlIHgt
c2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogIiArIHdpbmRvdy5zY3JvbGxY
LCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAv
LyBUZXN0IHNlbGVjdCBhbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQgY29udGVudC4KKyAgICAgICAg
ICAgICAgICB3aW5kb3cucmVzaXplVG8oNTAwLCA1MDApOworICAgICAgICAgICAgICAgIHZhciBk
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisgICAgICAgICAgICAgICAgZGl2
LmZvY3VzKCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFs
bCIpOworICAgICAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInNlbGVjdEFsbCBzZWxlY3RzIGFsbCBk
b2N1bWVudCIsIHNlbGVjdGlvbi50b1N0cmluZygpLnN1YnN0cmluZygwLCBkaXYuaW5uZXJIVE1M
Lmxlbmd0aCksIGRpdi5pbm5lckhUTUwpOworCisgICAgICAgICAgICAgICAgZmlyc3RUaW1lTG9h
ZCA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgLy8gVGVzdCByZWxvYWQgcHJlc2VydmVzIHNj
cm9sbCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRT
Y3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlv
bi5yZWxvYWQoKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgicmVsb2FkIHByZXNlcnZl
IHNjcm9sbCBwb3NpdGlvbiIsIHdpbmRvdy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOworICAg
ICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgZGly
PXJ0bD4KKyAgICAgICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0id2hpdGVzcGFjZTpub3dyYXA7IHdp
ZHRoOiA0MDAwcHg7IGhlaWdodDogMTAwMHB4OyBib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij5Mb3Jl
bSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2Vk
IGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBh
bGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9u
IHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQu
IER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxp
dCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIg
c2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBv
ZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLiI8L2Rpdj4KKyAgICAg
ICAgPHVsIGlkPSJjb25zb2xlIj48L3VsPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKK++7vzwhRE9DVFlQRSBodG1sIFBVQkxJQyAi
LS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9y
Zy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiA+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRs
ZT5UZXN0IGxlZnQgb3ZlcmZsb3cgaW4gTFRSIHBhZ2U8L3RpdGxlPgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAg
ICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAg
ICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVz
c2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1l
c3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiAr
IGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxv
ZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAg
ICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdmFy
IGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAgICB2
YXIgb3JpZ2luYWwgPSB3aW5kb3cuc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Ny
b2xsVG8oLTEsIDApOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJzY3JvbGwiLCB3aW5k
b3cuc2Nyb2xsWCwgMCk7CisgICAgCisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0icG9z
aXRpb246cmVsYXRpdmU7IHJpZ2h0OjQwcHgiPnRlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFn
ZS48L2Rpdj4KKyAgICAgICAgPHVsIGlkPSJjb25zb2xlIj48L3VsPgorICAgIDwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWlu
LXJ0bC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmlnaHQtb3Zl
cmZsb3ctaW4tcnRsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKK++7vzwhRE9D
VFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4i
ICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRk
Ij4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiA+CisgICAgPGhl
YWQ+CisgICAgICAgIDx0aXRsZT5UZXN0IHJpZ2h0IG92ZXJmbG93IGluIFJUTCBwYWdlPC90aXRs
ZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZyhzdHIpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgibGkiKTsKKyAgICAgICAgICAgICAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShzdHIpKTsKKyAgICAgICAgICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgICAgICAgICAgY29uc29sZS5hcHBlbmRD
aGlsZChsaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGFzc2VydEVxdWFsKG1lc3NhZ2UsIGFjdHVhbCwgZXhwZWN0ZWQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCkKKyAgICAgICAgICAgICAg
ICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogRmFpbHVyZSwgYWN0dWFsOiAiICsgYWN0dWFs
ICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7CisgICAg
ICAgICAgICB9CisgICAgCisgICAgICAgICAgICBvbmxvYWQgPSBmdW5jdGlvbigpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7
CisgICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsID0gd2luZG93LnNjcm9sbFg7CisgICAgICAg
ICAgICAgICAgd2luZG93LnNjcm9sbFRvKDEsIDApOworICAgICAgICAgICAgICAgIGFzc2VydEVx
dWFsKCJzY3JvbGwiLCB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgCisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBzdHlsZT0iZGlyZWN0aW9u
OnJ0bCI+CisgICAgICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyBs
ZWZ0OjQwcHgiPnRlc3QgcmlnaHQgb3ZlcmZsb3cgaW4gUlRMIHBhZ2UuPC9kaXY+CisgICAgICAg
IDx1bCBpZD0iY29uc29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1p
bi1ydGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9o
b3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDExIEBACitMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRp
cGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3Jl
IGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5v
c3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEg
Y29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0
IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBh
cmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBz
dW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJv
cnVtLiIKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250
YWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDog
U3VjY2Vzcworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogU3VjY2Vz
cworcmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3doZWVsIHNjcm9s
bCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK0tleURvd24g
SE9NRSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogLTEwMDAK
K0tleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdl
OiAtMTAwMAorc2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50OiBTdWNjZXNzCityZWxvYWQg
cHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpv
bnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitMb3JlbSBpcHN1bSBk
b2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNt
b2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0
IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28g
bGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0
ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNp
bGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2Nh
ZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRl
c2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLiIKK29yaWdpbmFsIHNjcm9sbCB4IGZv
ciBSVEwgcGFnZSA6IEZhaWx1cmUsIGFjdHVhbDogLTMyMjU7IGV4cGVjdGVkOiAwCitob3Jpem9u
dGFsIHNjcm9sbDogOiBTdWNjZXNzCitjb250aW51b3VzbHkgY2FsbCB3aW5kb3cuc2Nyb2xsWCA6
IFN1Y2Nlc3MKK3pvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246IEZhaWx1
cmUsIGFjdHVhbDogLTg2NjsgZXhwZWN0ZWQ6IC0xMDAwCityZXNpemUgcHJlc2VydmVzIHNjcm9s
bCBwb3NpdGlvbjogU3VjY2Vzcword2hlZWwgc2Nyb2xsIHByZXNlcnZlcyBob3Jpem9udGFsIHNj
cm9sbCBwb3NpdGlvbjogU3VjY2VzcworS2V5RG93biBIT01FIG1vdmUgeC1zY3JvbGwgcG9zaXRp
b24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAwCitLZXlEb3duIEVORCBtb3ZlIHgtc2Nyb2xsIHBv
c2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogMAorc2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRv
Y3VtZW50OiBTdWNjZXNzCityZWxvYWQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNz
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1p
bi1sdHItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1s
dHItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK3Rlc3QgbGVmdCBv
dmVyZmxvdyBpbiBMVFIgcGFnZS4KK3Njcm9sbDogU3VjY2VzcwpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92
ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACit0ZXN0IHJpZ2h0IG92ZXJmbG93IGluIFJUTCBw
YWdlLgorc2Nyb2xsOiBTdWNjZXNzCg==
</data>
<flag name="review"
          id="55049"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71805</attachid>
            <date>2010-10-25 15:44:15 -0700</date>
            <delta_ts>2010-11-17 05:04:44 -0800</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>23556.v5</filename>
            <type>text/plain</type>
            <size>30998</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDQ5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTAtMTAtMjUgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0
LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZs
b3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1
NgorCisgICAgICAgIEZvciBSVEwgcGFnZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQg
aW5jbHVkZSBpdCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQu
IFVzZSB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgd2hlbiBzY3JvbGwgYW5kIHBhaW50CisgICAg
ICAgIHRoZSBwYWdlLiBCZWhhdmlvciBvbiBMVFIgcGFnZSBzaG91bGQgYmUgdW50b3VjaGVkIHNp
bmNlIGxlZnQgbGF5b3V0IAorICAgICAgICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBh
Z2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwuaHRtbAorCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjphZGp1c3RWaWV3U2l6ZSk6IFNhdmUgbmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQgb3ZlcmZsb3cg
YXMgc2Nyb2xsIFggb3JpZ2luLiBBbmQgaW5jbHVkZXMgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgaW50
byBkb2N1bWVudCBzaXplLgorICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaDog
QWRkIG1ldGhvZHMgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgc2Nyb2xsIFggb3JpZ2luLgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Vmlldzo6U2Nyb2xsVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjptYXhpbXVt
U2Nyb2xsUG9zaXRpb24pOiBNaW51cyBzY3JvbGwgWCBvcmlnaW4gZnJvbSBtYXhpbXVtIGhvcml6
b250YWwgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bWlu
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmFkanVz
dFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFNjcm9s
bFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJh
cnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxW
aWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3Jv
bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNj
cm9sbE9yaWdpblgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzdHlsZURpZENoYW5nZSk6IFByb3BvZ2F0ZSBIVE1MIGJv
ZHkgZGlyZWN0aW9uYWxpdHkgdG8gaXRzIFJlbmRlclZpZXcuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKTogSW5jbHVkZSBsZWZ0IGxheW91dCBv
dmVyZmxvdyBpbnRvIGNhbnZhcyBzaXplLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6IFNhdmUgbGVmdCBs
YXlvdXQgb3ZlcmZsb3cuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpkb2NMZWZ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY1dpZHRoKTogSW5jbHVkZSBsZWZ0IGxh
eW91dCBvdmVyZmxvdyBpbnRvIGRvYyB3aWR0aCBmb3IgUlRMIHBhZ2UuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaDoKKwogMjAxMC0xMC0yMSAgU2F0aXNoIFNhbXBhdGggIDxzYXRp
c2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5k
ZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA3MDQ2OSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsNyArNDM1LDggQEAgdm9pZCBGcmFtZVZpZXc6
OmFkanVzdFZpZXdTaXplKCkKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHNldENvbnRlbnRzU2l6ZShJbnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKSwgcm9v
dC0+Ym90dG9tTGF5b3V0T3ZlcmZsb3coKSkpOworICAgIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9y
aWdpblgoLXJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpKTsKKyAgICBzZXRDb250ZW50c1NpemUo
SW50U2l6ZShyb290LT5yaWdodExheW91dE92ZXJmbG93KCkgLSByb290LT5sZWZ0TGF5b3V0T3Zl
cmZsb3coKSwgcm9vdC0+Ym90dG9tTGF5b3V0T3ZlcmZsb3coKSkpOwogfQogCiB2b2lkIEZyYW1l
Vmlldzo6YXBwbHlPdmVyZmxvd1RvVmlld3BvcnQoUmVuZGVyT2JqZWN0KiBvLCBTY3JvbGxiYXJN
b2RlJiBoTW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUpCkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFj
L1dlYkNvcmVGcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNv
cmVGcmFtZVZpZXcuaAkocmV2aXNpb24gNzA0NjkpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNv
cmVGcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAtICh2b2lkKXNldFNjcm9sbGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJN
b2RlKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKXZNb2RlIGFuZExvY2s6
KEJPT0wpbG9jazsKIC0gKHZvaWQpc2Nyb2xsaW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9sbGJhck1v
ZGUqKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKil2TW9kZTsKIC0gKHZv
aWQpc2V0U2Nyb2xsQmFyc1N1cHByZXNzZWQ6KEJPT0wpc3VwcHJlc3NlZCByZXBhaW50T25VbnN1
cHByZXNzOihCT09MKXJlcGFpbnQ7CistICh2b2lkKXNldFNjcm9sbE9yaWdpblg6KGludClzY3Jv
bGxPcmlnaW5YOworLSAoaW50KXNjcm9sbE9yaWdpblg7CiBAZW5kCiAKIEBwcm90b2NvbCBXZWJD
b3JlRnJhbWVWaWV3CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDcwNDY5
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNiArNTMsNyBAQCBTY3JvbGxWaWV3OjpTY3JvbGxWaWV3KCkKICAgICAsIG1fZHJhd1BhblNj
cm9sbEljb24oZmFsc2UpCiAgICAgLCBtX3VzZUZpeGVkTGF5b3V0KGZhbHNlKQogICAgICwgbV9w
YWludHNFbnRpcmVDb250ZW50cyhmYWxzZSkKKyAgICAsIG1fc2Nyb2xsT3JpZ2luWCgwKQogewog
ICAgIHBsYXRmb3JtSW5pdCgpOwogfQpAQCAtMjY4LDkgKzI2OSwyMSBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnNldENvbnRlbnRzU2l6ZShjb25zdCBJCiAKIEludFBvaW50IFNjcm9sbFZpZXc6Om1heGlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgSW50U2l6ZSBtYXhpbXVtT2Zmc2V0ID0g
Y29udGVudHNTaXplKCkgLSB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7CisgICAgSW50UG9p
bnQgbWF4aW11bU9mZnNldChjb250ZW50c1dpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSAtIG1fc2Ny
b2xsT3JpZ2luWCwgY29udGVudHNIZWlnaHQoKSAtIHZpc2libGVIZWlnaHQoKSk7CiAgICAgbWF4
aW11bU9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgcmV0dXJuIEludFBvaW50KG1h
eGltdW1PZmZzZXQud2lkdGgoKSwgbWF4aW11bU9mZnNldC5oZWlnaHQoKSk7CisgICAgcmV0dXJu
IG1heGltdW1PZmZzZXQ7Cit9CisKK0ludFBvaW50IFNjcm9sbFZpZXc6Om1pbmltdW1TY3JvbGxQ
b3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFBvaW50KC1tX3Njcm9sbE9yaWdpblgs
IDApOworfQorCitJbnRQb2ludCBTY3JvbGxWaWV3OjphZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhp
blJhbmdlKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkgY29uc3QKK3sKKyAgICBJbnRQb2lu
dCBuZXdTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvaW50LnNocnVua1RvKG1heGltdW1TY3JvbGxQ
b3NpdGlvbigpKTsKKyAgICBuZXdTY3JvbGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uLmV4
cGFuZGVkVG8obWluaW11bVNjcm9sbFBvc2l0aW9uKCkpOworICAgIHJldHVybiBuZXdTY3JvbGxQ
b3NpdGlvbjsKIH0KIAogaW50IFNjcm9sbFZpZXc6OnNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50
YXRpb24gb3JpZW50YXRpb24pIGNvbnN0CkBAIC0yOTMsNyArMzA2LDcgQEAgdm9pZCBTY3JvbGxW
aWV3Ojp2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKgogICAgIEludFNpemUgbmV3T2Zmc2V0ID0gbV9z
Y3JvbGxPZmZzZXQ7CiAgICAgaWYgKHNjcm9sbGJhcikgewogICAgICAgICBpZiAoc2Nyb2xsYmFy
LT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCi0gICAgICAgICAgICBuZXdP
ZmZzZXQuc2V0V2lkdGgoc2Nyb2xsYmFyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIG5ld09mZnNl
dC5zZXRXaWR0aChzY3JvbGxiYXItPnZhbHVlKCkgLSBtX3Njcm9sbE9yaWdpblgpOwogICAgICAg
ICBlbHNlIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIp
CiAgICAgICAgICAgICBuZXdPZmZzZXQuc2V0SGVpZ2h0KHNjcm9sbGJhci0+dmFsdWUoKSk7CiAg
ICAgfQpAQCAtMzI5LDggKzM0Miw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRp
b24oY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEludFBvaW50IG5ld1Njcm9s
bFBvc2l0aW9uID0gc2Nyb2xsUG9pbnQuc2hydW5rVG8obWF4aW11bVNjcm9sbFBvc2l0aW9uKCkp
OwotICAgIG5ld1Njcm9sbFBvc2l0aW9uLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKyAgICBJbnRQ
b2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IGFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2Uo
c2Nyb2xsUG9pbnQpOwogCiAgICAgaWYgKG5ld1Njcm9sbFBvc2l0aW9uID09IHNjcm9sbFBvc2l0
aW9uKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1MSwxMCArNDYzLDEwIEBAIHZvaWQgU2Nyb2xs
Vmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9p
blVwZGF0ZVNjcm9sbGJhcnMgPSB0cnVlOwotICAgIEludFNpemUgbWF4U2Nyb2xsUG9zaXRpb24o
Y29udGVudHNXaWR0aCgpIC0gdmlzaWJsZVdpZHRoKCksIGNvbnRlbnRzSGVpZ2h0KCkgLSB2aXNp
YmxlSGVpZ2h0KCkpOwotICAgIEludFNpemUgc2Nyb2xsID0gZGVzaXJlZE9mZnNldC5zaHJ1bmtU
byhtYXhTY3JvbGxQb3NpdGlvbik7Ci0gICAgc2Nyb2xsLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsK
LSAKKworICAgIEludFBvaW50IHNjcm9sbFBvaW50ID0gYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRo
aW5SYW5nZShJbnRQb2ludChkZXNpcmVkT2Zmc2V0LndpZHRoKCksIGRlc2lyZWRPZmZzZXQuaGVp
Z2h0KCkpKTsKKyAgICBJbnRTaXplIHNjcm9sbChzY3JvbGxQb2ludC54KCksIHNjcm9sbFBvaW50
LnkoKSk7CisKICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBj
bGllbnRXaWR0aCA9IHZpc2libGVXaWR0aCgpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxi
YXItPnNldEVuYWJsZWQoY29udGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOwpAQCAtNDcyLDcg
KzQ4NCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKICAgICAg
ICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24odHJ1
ZSk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpw
aXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9s
bGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRXaWR0aCwgY29udGVudHNXaWR0aCgpKTsKLSAgICAg
ICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwud2lkdGgoKSwgU2Nyb2xs
YmFyOjpOb3RGcm9tU2Nyb2xsQW5pbWF0b3IpOworICAgICAgICBtX2hvcml6b250YWxTY3JvbGxi
YXItPnNldFZhbHVlKHNjcm9sbC53aWR0aCgpICsgbV9zY3JvbGxPcmlnaW5YLCBTY3JvbGxiYXI6
Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNTdXBwcmVz
c2VkKQogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFs
aWRhdGlvbihmYWxzZSk7IAogICAgIH0gCkBAIC05ODcsNiArOTk5LDE2IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6cmVtb3ZlUGFuU2Nyb2xsSWNvbigpCiAgICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRl
Q29udGVudHNBbmRXaW5kb3coSW50UmVjdChtX3BhblNjcm9sbEljb25Qb2ludCwgSW50U2l6ZShw
YW5JY29uU2l6ZUxlbmd0aCwgcGFuSWNvblNpemVMZW5ndGgpKSwgdHJ1ZSAvKmltbWVkaWF0ZSov
KTsKIH0KIAorCit2b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpblgoaW50IHgpCit7IAor
ICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICBwbGF0Zm9ybVNldFNjcm9sbE9yaWdp
blgoeCk7CisgICAgZWxzZQorICAgICAgICBtX3Njcm9sbE9yaWdpblggPSB4OworfQorCisKICNp
ZiAhUExBVEZPUk0oV1gpICYmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShRVCkgJiYgIVBM
QVRGT1JNKEVGTCkKIAogdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUluaXQoKQpAQCAtMTAxNyw2
ICsxMDM5LDEwIEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJzU3UKIHsK
IH0KIAordm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50KQorewor
fQorCiAjZW5kaWYKIAogI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShXWCkKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCShyZXZpc2lvbiA3MDQ2OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNiArMTUwLDkgQEAgcHVibGljOgog
ICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRl
bnRSZWN0KCkubG9jYXRpb24oKTsgfQogICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSAtIEludFBvaW50KCk7IH0g
Ly8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6ZS4gQ29udmVuaWVudCBm
b3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgogICAgIEludFBvaW50IG1heGltdW1TY3JvbGxQb3Np
dGlvbigpIGNvbnN0OyAvLyBUaGUgbWF4aW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQg
dG8uCisgICAgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7IC8vIFRoZSBt
aW5pbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KKyAgICAvLyBBZGp1c3QgdGhl
IHBhc3MgaW4gc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBw
b3NpdGlvbnMuCisgICAgSW50UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShj
b25zdCBJbnRQb2ludCYpIGNvbnN0OyAKICAgICBpbnQgc2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJu
IHNjcm9sbFBvc2l0aW9uKCkueCgpOyB9CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVy
biBzY3JvbGxQb3NpdGlvbigpLnkoKTsgfQogICAgIApAQCAtMjY3LDYgKzI3MCw4IEBAIHByb3Rl
Y3RlZDoKICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVscwog
ICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KTsKIAorICAgIHZvaWQgc2V0U2Nyb2xsT3JpZ2luWChpbnQpOworCiBwcml2YXRlOgog
ICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8
U2Nyb2xsYmFyPiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwpAQCAtMzAwLDYgKzMwNSwxMSBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBtX3BhaW50c0VudGlyZUNvbnRlbnRzOwogCisgICAgLy8gbV9zY3Jv
bGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlLiBBbmQgaXQgaXMgbmVnYXRpdmUgb2YgbGVmdCBs
YXlvdXQKKyAgICAvLyBvdmVyZmxvdyBmb3IgUlRMIHBhZ2UuIEl0IGlzIG1haW5seSB1c2VkIHRv
IHNldCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKyAgICAvLyBwb3NpdGlvbiBmb3IgUlRMIHBh
Z2UuCisgICAgaW50IG1fc2Nyb2xsT3JpZ2luWDsKKwogICAgIHZvaWQgaW5pdCgpOwogICAgIHZv
aWQgZGVzdHJveSgpOwogCkBAIC0zMjcsNiArMzM3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBs
YXRmb3JtU2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoYm9vbCByZXBhaW50T25VbnN1cHByZXNzKTsK
ICAgICB2b2lkIHBsYXRmb3JtUmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYs
IGJvb2wgbm93KTsKICAgICBib29sIHBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdDsKKyAgIAor
ICAgIHZvaWQgcGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCk7CiAKICNpZiBQTEFURk9STShN
QUMpICYmIGRlZmluZWQgX19PQkpDX18KIHB1YmxpYzoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbFZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsVmlld01hYy5tbQkocmV2aXNpb24gNzA0NjkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdQogdm9pZCBTY3JvbGxWaWV3Ojpw
bGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkKIHsK
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgTlNQb2ludCB0ZW1wUG9pbnQg
PSB7IG1heCgwLCBzY3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSB9OyAv
LyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KKyAgICBOU1Bv
aW50IHRlbXBQb2ludCA9IHsgbWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpblhdLCBzY3Jv
bGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSB9OyAvLyBEb24ndCB1c2UgTlNN
YWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KICAgICBbZG9jdW1lbnRWaWV3KCkgc2Ny
b2xsUG9pbnQ6dGVtcFBvaW50XTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQpA
QCAtMjAyLDQgKzIwMiwxMSBAQCBib29sIFNjcm9sbFZpZXc6OnBsYXRmb3JtSXNPZmZzY3JlZW4o
KSBjCiAgICAgcmV0dXJuICFbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIHx8ICFbW3BsYXRmb3Jt
V2lkZ2V0KCkgd2luZG93XSBpc1Zpc2libGVdOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnBsYXRm
b3JtU2V0U2Nyb2xsT3JpZ2luWChpbnQgeCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CisgICAgW3Njcm9sbFZpZXcoKSBzZXRTY3JvbGxPcmlnaW5YOnhdOworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gNzA0NjkpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTgsOCArNzU4LDggQEAgdm9p
ZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKAogCiAgICAgLy8gQ1NTMiAxNC4y
OgogICAgIC8vIFRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBib3ggZ2VuZXJhdGVkIGJ5IHRoZSByb290
IGVsZW1lbnQgY292ZXJzIHRoZSBlbnRpcmUgY2FudmFzIGluY2x1ZGluZwotICAgIC8vIGl0cyBt
YXJnaW5zLgotICAgIGludCBieCA9IHR4IC0gbWFyZ2luTGVmdCgpOworICAgIC8vIGl0cyBtYXJn
aW5zLCBhbmQgaW5jbHVkaW5nIGl0cyBsZWZ0IGxheW91dCBvdmVyZmxvdy4KKyAgICBpbnQgYngg
PSB0eCAtIG1hcmdpbkxlZnQoKSArIHZpZXcoKS0+bGVmdExheW91dE92ZXJmbG93KCk7CiAgICAg
aW50IGJ5ID0gdHkgLSBtYXJnaW5Ub3AoKTsKICAgICBpbnQgYncgPSBtYXgodyArIG1hcmdpbkxl
ZnQoKSArIG1hcmdpblJpZ2h0KCkgKyBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpLCBydyk7
CiAgICAgaW50IGJoID0gbWF4KGggKyBtYXJnaW5Ub3AoKSArIG1hcmdpbkJvdHRvbSgpICsgYm9y
ZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSwgcmgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAJKHJldmlzaW9uIDcwNDY5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsOCBAQCB2b2lkIFJlbmRlclZpZXc6Omxh
eW91dCgpCiAKICAgICAvLyBSZXNldCBvdmVyZmxvdyBhbmQgdGhlbiByZXBsYWNlIGl0IHdpdGgg
ZG9jV2lkdGggYW5kIGRvY0hlaWdodC4KICAgICBtX292ZXJmbG93LmNsZWFyKCk7Ci0gICAgYWRk
TGF5b3V0T3ZlcmZsb3coSW50UmVjdCgwLCAwLCBkb2NXaWR0aCgpLCBkb2NIZWlnaHQoKSkpOwor
ICAgIGludCBsZWZ0T3ZlcmZsb3cgPSBkb2NMZWZ0KCk7CisgICAgYWRkTGF5b3V0T3ZlcmZsb3co
SW50UmVjdChsZWZ0T3ZlcmZsb3csIDAsIGRvY1dpZHRoKGxlZnRPdmVyZmxvdyksIGRvY0hlaWdo
dCgpKSk7CiAKICAgICBBU1NFUlQobGF5b3V0RGVsdGEoKSA9PSBJbnRTaXplKCkpOwogICAgIEFT
U0VSVChtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50ID09IDApOwpAQCAtNjI0LDkgKzYyNSwxNSBA
QCBpbnQgUmVuZGVyVmlldzo6ZG9jSGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4gaDsKIH0KIAot
aW50IFJlbmRlclZpZXc6OmRvY1dpZHRoKCkgY29uc3QKK2ludCBSZW5kZXJWaWV3Ojpkb2NMZWZ0
KCkgY29uc3QKIHsKLSAgICBpbnQgdyA9IHJpZ2h0bW9zdFBvc2l0aW9uKCk7CisgICAgLy8gQ2xp
cCBvdXQgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZS4KKyAgICByZXR1cm4gc3R5bGUoKS0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpID8gMCA6IHN0ZDo6bWluKDAsIGxlZnRtb3N0UG9zaXRpb24o
KSk7Cit9CisKK2ludCBSZW5kZXJWaWV3Ojpkb2NXaWR0aChpbnQgbGVmdE92ZXJmbG93KSBjb25z
dAoreworICAgIGludCB3ID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gcmln
aHRtb3N0UG9zaXRpb24oKSA6IHdpZHRoKCkgLSBsZWZ0T3ZlcmZsb3c7CiAKICAgICBmb3IgKFJl
bmRlckJveCogYyA9IGZpcnN0Q2hpbGRCb3goKTsgYzsgYyA9IGMtPm5leHRTaWJsaW5nQm94KCkp
IHsKICAgICAgICAgaW50IGR3ID0gYy0+d2lkdGgoKSArIGMtPm1hcmdpbkxlZnQoKSArIGMtPm1h
cmdpblJpZ2h0KCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCShyZXZpc2lvbiA3MDQ2OSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTcy
LDcgKzE3Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRSZXBhaW50KGNvbnN0IEludFJl
Y3QmIHIpIGNvbnN0OwogICAgICAgICAKICAgICBpbnQgZG9jSGVpZ2h0KCkgY29uc3Q7Ci0gICAg
aW50IGRvY1dpZHRoKCkgY29uc3Q7CisgICAgaW50IGRvY0xlZnQoKSBjb25zdDsKKyAgICBpbnQg
ZG9jV2lkdGgoaW50KSBjb25zdDsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBtYXkgb25seSBi
ZSBhY2Nlc3NlZCBieSBMYXlvdXRTdGF0ZU1haW50YWluZXIuCiAgICAgYm9vbCBwdXNoTGF5b3V0
U3RhdGUoUmVuZGVyQm94KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBpbnQgcGFn
ZUhlaWdodCA9IDAsIGJvb2wgcGFnZUhlaWdodENoYW5nZWQgPSBmYWxzZSwgQ29sdW1uSW5mbyog
Y29sSW5mbyA9IDApCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNzA0OTUpCisrKyBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEwLTEwLTI1ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSaWdodC10by1sZWZ0IHBhZ2VzIHNob3VsZCBiZSBzY3JvbGxhYmxl
IHRvIHJldmVhbCBsZWZ0IG92ZXJmbG93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTYKKworICAgICAgICBJbiBNYWMgcG9ydCwgc2V0IGFuZCBn
ZXQgdGhlIG9yaWdpbmFsIHgtYXhpcyBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgIEFuZCByZXNl
dCBzY3JvbGwgcG9zaXRpb24gd2hlbiBwcmVzcyBIT01FL0VORCBrZXkuCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbToKKyAgICAgICAgKC1bV2ViRHluYW1p
Y1Njcm9sbEJhcnNWaWV3IHNldFNjcm9sbE9yaWdpblg6XSk6CisgICAgICAgICgtW1dlYkR5bmFt
aWNTY3JvbGxCYXJzVmlldyBzY3JvbGxPcmlnaW5YXSk6CisgICAgICAgICogV2ViVmlldy9XZWJG
cmFtZVZpZXcubW06CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9CZWdpbm5pbmdP
ZkRvY3VtZW50XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9FbmRPZkRvY3Vt
ZW50XSk6CisKIDIwMTAtMTAtMjQgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0JKHJldmlzaW9uIDcwNDY5KQor
KysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsNiArNjIsOSBAQCBzdHJ1Y3QgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3
UHJpdmF0ZSB7CiAgICAgYm9vbCBhbHdheXNIaWRlVmVydGljYWxTY3JvbGxlcjsKICAgICBib29s
IGhvcml6b250YWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRkZW47CiAgICAgYm9vbCB2
ZXJ0aWNhbFNjcm9sbGluZ0FsbG93ZWRCdXRTY3JvbGxlckhpZGRlbjsKKworICAgIC8vIHNjcm9s
bE9yaWdpblggaXMgMCBmb3IgTFRSIHBhZ2UgYW5kIGlzIHRoZSBuZWdhdGl2ZSBvZiBsZWZ0IGxh
eW91dCBvdmVyZmxvdyB2YWx1ZSBmb3IgUlRMIHBhZ2UuCisgICAgaW50IHNjcm9sbE9yaWdpblg7
CiB9OwogCiBAaW1wbGVtZW50YXRpb24gV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3CkBAIC01MjUs
NCArNTI4LDIxIEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3JlZCAKICAgICByZXR1cm4g
W3N1cGVyIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRdOwogfQogCistICh2b2lkKXNldFNjcm9sbE9y
aWdpblg6KGludClzY3JvbGxPcmlnaW5YCit7CisgICAgX3ByaXZhdGUtPnNjcm9sbE9yaWdpblgg
PSBzY3JvbGxPcmlnaW5YOworCisgICAgaWYgKHNjcm9sbE9yaWdpblgpIHsKKyAgICAgICAgLy8g
Ii1bc2VsZiBzY3JvbGxPcmlnaW5YXSIgZXF1YWxzIHRvIGxlZnQgbGF5b3V0IG92ZXJmbG93Lgor
ICAgICAgICAvLyBTZXQgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgaW50byBkb2N1bWVudCB2aWV3J3Mg
Ym91bmRzIHgtYXhpcyBvcmlnaW4gdG8gY292ZXIgdGhlIGVudGlyZSBjYW52YXMuCisgICAgICAg
IE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKKyAgICAgICAgW2Rv
Y3VtZW50VmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9pbnQoLXNjcm9sbE9yaWdpblgsIFtk
b2N1bWVudFZpZXcgYm91bmRzXS5vcmlnaW4ueSldOworICAgIH0KK30KKworLSAoaW50KXNjcm9s
bE9yaWdpblgKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPnNjcm9sbE9yaWdpblg7Cit9CisKIEBl
bmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkocmV2aXNpb24gNzA0NjkpCisr
KyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
MzYsNiArNTM2LDcgQEAgLSAoQk9PTClfc2Nyb2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50CiAgICAg
aWYgKCFbc2VsZiBfaXNTY3JvbGxhYmxlXSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5TUG9p
bnQgcG9pbnQgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVudFZpZXddIGZyYW1lXS5vcmln
aW47CisgICAgcG9pbnQueCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhdOwog
ICAgIHJldHVybiBbW3NlbGYgX2NvbnRlbnRWaWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1hdGU6
WUVTXTsKIH0KIApAQCAtNTQ3LDYgKzU0OCw3IEBAIC0gKEJPT0wpX3Njcm9sbFRvRW5kT2ZEb2N1
bWVudAogICAgICAgICByZXR1cm4gTk87CiAgICAgTlNSZWN0IGZyYW1lID0gW1tbc2VsZiBfc2Ny
b2xsVmlld10gZG9jdW1lbnRWaWV3XSBmcmFtZV07CiAgICAgTlNQb2ludCBwb2ludCA9IE5TTWFr
ZVBvaW50KGZyYW1lLm9yaWdpbi54LCBOU01heFkoZnJhbWUpKTsKKyAgICBwb2ludC54ICs9IFtb
c2VsZiBfc2Nyb2xsVmlld10gc2Nyb2xsT3JpZ2luWF07CiAgICAgcmV0dXJuIFtbc2VsZiBfY29u
dGVudFZpZXddIF9zY3JvbGxUbzomcG9pbnQgYW5pbWF0ZTpZRVNdOwogfQogCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3MDQ5NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIzIEBACisyMDEwLTEwLTI1ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSaWdo
dC10by1sZWZ0IHBhZ2VzIHNob3VsZCBiZSBzY3JvbGxhYmxlIHRvIHJldmVhbCBsZWZ0IG92ZXJm
bG93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1
NTYKKworICAgICAgICBGb3IgUlRMIHBhZ2UsIHNhdmUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgYW5k
IGluY2x1ZGUgaXQgaW50byB0aGUgZG9jdW1lbnQKKyAgICAgICAgc2l6ZSBkdXJpbmcgbGF5b3V0
LiBVc2UgdGhlIGxlZnQgbGF5b3V0IG92ZXJmbG93IHdoZW4gc2Nyb2xsIGFuZCBwYWludAorICAg
ICAgICB0aGUgcGFnZS4gQmVoYXZpb3Igb24gTFRSIHBhZ2Ugc2hvdWxkIGJlIHVudG91Y2hlZCBz
aW5jZSBsZWZ0IGxheW91dCAKKyAgICAgICAgb3ZlcmZsb3cgaXMgc2V0IGFzIDAgZm9yIExUUiBw
YWdlLgorCisgICAgICAgICogZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNj
cm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3Jp
Z2h0LW92ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEwLTEwLTI1ICBN
aWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgU25vdyBMZW9wYXJkIHJlYmFzZWxpbmUgb2YgYW5pbWF0aW9ucywgY29tcG9zaXRpbmcsIGNz
czEsIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4t
cnRsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1z
Y3JvbGxiYXItaW4tcnRsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMTQgQEAKKzxodG1sIGRpcj1ydGw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgbGFu
Z3VhZ2U9ImphdmFzY3JpcHQiPgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENo
aWxkKGxpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rp
b24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAgICAgICAg
ICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwg
KyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0VHJ1ZSht
ZXNzYWdlLCBmYWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChmYWN0KQor
ICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlIik7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3Nh
Z2UgKyAiOiBTdWNjZXNzIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFNjcm9sbFggPSAtMTAwMDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFNjcm9sbFkgPSA1MDA7CisKKyAgICAgICAgICAgIHZhciBmaXJzdFRpbWVMb2FkID0gdHJ1ZTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gbW91c2V3aGVlbEhhbmRsZXIoZSkg
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoIndoZWVsIHNjcm9s
bCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWCwg
ZXhwZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgb25sb2FkID0gZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICAgICAgICAgIGlmICghZmly
c3RUaW1lTG9hZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgLy8gVGVzdCBob3Jpem9udGFsIHNjcm9sbCBiYXIgcHJlc2VudHMgYW5kIHdhcyBpbml0aWFs
bHkgYXQgdGhlIHJpZ2h0IGZvciBSVEwgcGFnZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
RkFJTCBpbiBNYWMgLS0gZm9yIFJUTCBwYWdlLCB0aGUgc2Nyb2xsIGJhciBpcyBhdCB0aGUgbGVm
dCB3aGVuIHBhZ2UgZmlyc3QgbG9hZC4KKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgib3Jp
Z2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlICIsIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3QgaG9yaXpvbnRhbCBzY3JvbGwuCisgICAg
ICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3Jv
bGxZKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgiaG9yaXpvbnRhbCBzY3JvbGw6ICIs
IHdpbmRvdy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAgICAgICAgIC8vIFRl
c3QgY2FsbGluZyB3aW5kb3cuc2Nyb2xsWCBjb250aW51b3VzbHkgd29udCBjaGFuZ2UgdGhlIHNj
cm9sbFggcG9zaXRpb24uCisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoImNvbnRpbnVvdXNs
eSBjYWxsIHdpbmRvdy5zY3JvbGxYICIsIHdpbmRvdy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgp
OworICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHpvb21pbmcgd29udCBy
ZXNldCBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEZBSUwgaW4g
TWFjIC0tIGZvciBSVEwgcGFnZSwgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gem9vbWlu
ZyBzZWVtcyBkb2VzIG5vdCB3b3JrIHdlbGwuCisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0
ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNl
bmRlci56b29tUGFnZUluKCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21Q
YWdlT3V0KCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJ6b29tIGluIGFuZCBv
dXQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFgsZXhwZWN0ZWRTY3Jv
bGxYKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAvLyBUZXN0IHJlc2l6ZSB3b250IHJlc2V0IHNjcm9sbCBwb3NpdGlvbi4KKyAgICAgICAgICAg
ICAgICB3aW5kb3cucmVzaXplVG8oMTAwMCwgd2luZG93LmlubmVySGVpZ2h0KTsKKyAgICAgICAg
ICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkp
OworICAgICAgICAgICAgICAgIHdpbmRvdy5yZXNpemVUbygyMDAwLCB3aW5kb3cuaW5uZXJIZWln
aHQpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJyZXNpemUgcHJlc2VydmVzIHNjcm9s
bCBwb3NpdGlvbiIsIHdpbmRvdy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3Qgd2hlZWwgc2Nyb2xsIHByZXNlcnZlcyBo
b3Jpem9udGFsIHNjcm9sbCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xs
VG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkgLyAyKTsKKyAgICAgICAgICAgICAg
ICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAg
ICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgbW91c2V3aGVlbEhhbmRsZXIs
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICB2YXIgd2hlZWxFdmVudCA9IGRvY3VtZW50LmNyZWF0
ZUV2ZW50KCJXaGVlbEV2ZW50Iik7CisgICAgICAgICAgICAgICAgd2hlZWxFdmVudC5pbml0V2Vi
S2l0V2hlZWxFdmVudCgwLCBleHBlY3RlZFNjcm9sbFkgLyAyLCB3aW5kb3csIDAsIDAsIDAsIDAs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkaXYuZGlzcGF0
Y2hFdmVudCh3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRl
c3QgSE9NRS9FTkQgb3BlcmF0aW9uLgorICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTm90IHVzaW5nIGFzc2VydCBlcXVhbCBo
ZXJlIHNpbmNlIHRoZSBiZWhhdmlvciBpcyBkaWZmZXJlbnQgaW4gZWFjaCBwb3J0LiAKKyAgICAg
ICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIGluIE1hYywgSE9NRS9FTkQga2V5IHJlc2V0
IGJvdGggeCBhbmQgeSBzY3JvbGwgcG9zaXRpb24uIAorICAgICAgICAgICAgICAgICAgICAvLyBJ
biBDaHJvbWl1bSwgSE9NRS9FTkQga2V5IG9ubHkgcmVzZXQgeSBzY3JvbGwgcG9zaXRpb24sIGFu
ZCB4IHNjcm9sbCBwb3NpdGlvbiBpcyBwcmVzZXJ2ZWQuCisgICAgICAgICAgICAgICAgICAgIHdp
bmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImhvbWUiKTsKKyAgICAgICAgICAgICAg
ICAgICAgbG9nKCJLZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBm
b3IgUlRMIHBhZ2U6ICIgKyB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgICAgICAgICAgICAgICAg
IHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAg
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVuZCIpOworICAgICAgICAgICAg
ICAgICAgICBsb2coIktleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQg
Zm9yIFJUTCBwYWdlOiAiICsgd2luZG93LnNjcm9sbFgsIDApOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3Qgc2VsZWN0IGFsbCBzZWxlY3Rz
IGFsbCBkb2N1bWVudCBjb250ZW50LgorICAgICAgICAgICAgICAgIHdpbmRvdy5yZXNpemVUbyg1
MDAsIDUwMCk7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAgICBkaXYuZm9jdXMoKTsKKyAgICAgICAgICAgICAg
ICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CisgICAgICAgICAgICAgICAgdmFy
IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRFcXVhbCgic2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50Iiwgc2VsZWN0aW9uLnRvU3Ry
aW5nKCkuc3Vic3RyaW5nKDAsIGRpdi5pbm5lckhUTUwubGVuZ3RoKSwgZGl2LmlubmVySFRNTCk7
CisKKyAgICAgICAgICAgICAgICBmaXJzdFRpbWVMb2FkID0gZmFsc2U7CisKKyAgICAgICAgICAg
ICAgICAvLyBUZXN0IHJlbG9hZCBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAg
ICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7
CisgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOworICAgICAgICAgICAg
ICAgIGFzc2VydEVxdWFsKCJyZWxvYWQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93
LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0iZGl2IiBzdHls
ZT0id2hpdGVzcGFjZTpub3dyYXA7IHdpZHRoOiA0MDAwcHg7IGhlaWdodDogMTAwMHB4OyBib3Jk
ZXI6IDFweCBzb2xpZCByZWQ7Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0
dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQg
bGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBx
dWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAg
ZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhl
bmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51
bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lk
ZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVz
dCBsYWJvcnVtLiI8L2Rpdj4KKyAgICAgICAgPHVsIGlkPSJjb25zb2xlIj48L3VsPgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ct
aW4tbHRyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbGVmdC1vdmVy
Zmxvdy1pbi1sdHIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2xl
ZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKK++7
vzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25h
bC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9u
YWwuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiA+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5UZXN0IGxlZnQgb3ZlcmZsb3cgaW4gTFRSIHBhZ2U8
L3RpdGxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFw
cGVuZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAg
ICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBh
Y3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsK
KyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
aXYiKTsKKyAgICAgICAgICAgICAgICB2YXIgb3JpZ2luYWwgPSB3aW5kb3cuc2Nyb2xsWDsKKyAg
ICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oLTEsIDApOworICAgICAgICAgICAgICAgIGFz
c2VydEVxdWFsKCJzY3JvbGwiLCB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgCisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAg
PGRpdiBpZD0iZGl2IiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IHJpZ2h0OjQwcHgiPnRlc3Qg
bGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZS48L2Rpdj4KKyAgICAgICAgPHVsIGlkPSJjb25zb2xl
Ij48L3VsPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L3JpZ2h0LW92ZXJmbG93LWluLXJ0bC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzggQEAKK++7vzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhU
TUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFRE
L3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sICBzdHlsZT0iZGlyZWN0aW9uOnJ0bCIg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHRpdGxlPlRlc3QgcmlnaHQgb3ZlcmZsb3cgaW4gUlRMIHBhZ2U8L3RpdGxlPgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwor
ICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0
cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0
RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAgICAgICAgICAgICBsb2co
IlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBl
Y3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKKyAgICAgICAgICAgIH0K
KyAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAg
ICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKKyAgICAgICAg
ICAgICAgICB2YXIgb3JpZ2luYWwgPSB3aW5kb3cuc2Nyb2xsWDsKKyAgICAgICAgICAgICAgICB3
aW5kb3cuc2Nyb2xsVG8oMSwgMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInNjcm9s
bCIsIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0
eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgbGVmdDo0MHB4Ij50ZXN0IHJpZ2h0IG92ZXJmbG93IGlu
IFJUTCBwYWdlLjwvZGl2PgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9k
b20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9s
bGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorTG9yZW0gaXBzdW0gZG9sb3Ig
c2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRl
bXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmlt
IGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9y
aXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1
cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0g
ZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQg
Y3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVu
dCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4iCitvcmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRM
IHBhZ2UgOiBTdWNjZXNzCitob3Jpem9udGFsIHNjcm9sbDogOiBTdWNjZXNzCitjb250aW51b3Vz
bHkgY2FsbCB3aW5kb3cuc2Nyb2xsWCA6IFN1Y2Nlc3MKK3pvb20gaW4gYW5kIG91dCBwcmVzZXJ2
ZSBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3Jlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0
aW9uOiBTdWNjZXNzCit3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBv
c2l0aW9uOiBTdWNjZXNzCitLZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byBy
aWdodCBmb3IgUlRMIHBhZ2U6IC0xMDAwCitLZXlEb3duIEVORCBtb3ZlIHgtc2Nyb2xsIHBvc2l0
aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogLTEwMDAKK3NlbGVjdEFsbCBzZWxlY3RzIGFsbCBk
b2N1bWVudDogU3VjY2VzcworcmVsb2FkIHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogU3VjY2Vz
cwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Ny
b2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9y
aXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMSBAQAorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBp
c2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBl
dCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0
cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNv
bW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBp
biB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJp
YXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3Vu
dCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1
bS4iCitvcmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBGYWlsdXJlLCBhY3R1YWw6IC0z
MjI1OyBleHBlY3RlZDogMAoraG9yaXpvbnRhbCBzY3JvbGw6IDogU3VjY2VzcworY29udGludW91
c2x5IGNhbGwgd2luZG93LnNjcm9sbFggOiBTdWNjZXNzCit6b29tIGluIGFuZCBvdXQgcHJlc2Vy
dmUgc2Nyb2xsIHBvc2l0aW9uOiBGYWlsdXJlLCBhY3R1YWw6IC04NjY7IGV4cGVjdGVkOiAtMTAw
MAorcmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3doZWVsIHNjcm9s
bCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK0tleURvd24g
SE9NRSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogMAorS2V5
RG93biBFTkQgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6IDAK
K3NlbGVjdEFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudDogU3VjY2VzcworcmVsb2FkIHByZXNlcnZl
IHNjcm9sbCBwb3NpdGlvbjogU3VjY2VzcwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyIEBACit0ZXN0IGxlZnQgb3ZlcmZsb3cgaW4gTFRSIHBhZ2UuCitzY3JvbGw6IFN1
Y2Nlc3MKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9yaWdodC1vdmVy
Zmxvdy1pbi1ydGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92ZXJm
bG93LWluLXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAordGVz
dCByaWdodCBvdmVyZmxvdyBpbiBSVEwgcGFnZS4KK3Njcm9sbDogU3VjY2Vzcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74099</attachid>
            <date>2010-11-17 05:04:44 -0800</date>
            <delta_ts>2010-11-17 05:45:51 -0800</delta_ts>
            <desc>Snapshot</desc>
            <filename>left_scroll.patch</filename>
            <type>text/plain</type>
            <size>34920</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDQ1MDhkOThmYjg1MWFkMmFhNWNkNzYxMzczMTk0NWY3N2VkOWI5ZTgKQXV0aG9yOiBK
ZXJlbXkgPHBsYXltb2JpbEBqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIFN1biBOb3YgMTQg
MDg6NTM6MjkgMjAxMCArMDIwMAoKICAgIDIwMTAtMTEtMTcgIFhpYW9tZWkgSmkgIDx4amlAY2hy
b21pdW0ub3JnPgogICAgCiAgICAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgog
ICAgCiAgICAgICAgICAgIFJpZ2h0LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUg
dG8gcmV2ZWFsIGxlZnQgb3ZlcmZsb3cuCiAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1NgogICAgCiAgICAgICAgICAgIFNldCBhbmQgZ2V0IHRo
ZSBvcmlnaW5hbCB4LWF4aXMgc2Nyb2xsIHBvc2l0aW9uIGFuZCByZXNldCBzY3JvbGwgcG9zaXRp
b24gb24gSE9NRS9FTkQga2V5IHByZXNzLgogICAgICAgICAgICBNb2RpZnkgV2ViRnJhbWVWaWV3
IHRvIHN1cHBvcnQgc2V0dGluZyB0aGUgaW5pdGlhbCBob3Jpem9udGFsIHNjcm9sbGVyJ3MgdGh1
bWIgcG9zaXRpb24gdG8gdGhlIHJpZ2h0IGZvcgogICAgICAgICAgICBwYWdlcyB3aXRoIGEgbGVm
dCBvdmVyZmxvdy4KCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGY5ZDQwYy4uOTEzMjQ1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEwLTExLTE3ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSaWdodC10by1sZWZ0IHBh
Z2VzIHNob3VsZCBiZSBzY3JvbGxhYmxlIHRvIHJldmVhbCBsZWZ0IG92ZXJmbG93LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTYKKworICAgICAg
ICBGb3IgUlRMIHBhZ2UsIHNhdmUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgYW5kIGluY2x1ZGUgaXQg
aW50byB0aGUgZG9jdW1lbnQKKyAgICAgICAgc2l6ZSBkdXJpbmcgbGF5b3V0LiBVc2UgdGhlIGxl
ZnQgbGF5b3V0IG92ZXJmbG93IHdoZW4gc2Nyb2xsaW5nIGFuZCBwYWludGluZworICAgICAgICB0
aGUgcGFnZS4gQmVoYXZpb3Igb24gTFRSIHBhZ2Ugc2hvdWxkIGJlIHVubW9kaWZpZWQgc2luY2Ug
bGVmdCBsYXlvdXQKKyAgICAgICAgb3ZlcmZsb3cgaXMgc2V0IGFzIDAgZm9yIExUUiBwYWdlLgor
CisgICAgICAgICogZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJh
ci1pbi1ydGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFz
dC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92
ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEwLTExLTEzICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2Fy
bHNzb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9s
bGJhci1pbi1ydGwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xs
YmFyLWluLXJ0bC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2Mzdm
MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNj
cm9sbGJhci1pbi1ydGwuaHRtbApAQCAtMCwwICsxLDExNCBAQAorPGh0bWwgZGlyPXJ0bD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CisgICAgICAg
ICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZh
ciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAg
ICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAg
ICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1
YWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWwg
IT0gZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6
IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBt
ZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBmdW5jdGlvbiBhc3NlcnRUcnVlKG1lc3NhZ2UsIGZhY3QpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKGZhY3QpCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4i
ICsgbWVzc2FnZSArICI6IEZhaWx1cmUiKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGV4cGVjdGVkU2Nyb2xsWCA9IC0x
MDAwOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkU2Nyb2xsWSA9IDUwMDsKKworICAgICAgICAg
ICAgdmFyIGZpcnN0VGltZUxvYWQgPSB0cnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBm
dW5jdGlvbiBtb3VzZXdoZWVsSGFuZGxlcihlKSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRFcXVhbCgid2hlZWwgc2Nyb2xsIHByZXNlcnZlcyBob3Jpem9udGFsIHNjcm9s
bCBwb3NpdGlvbiIsIHdpbmRvdy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBvbmxvYWQgPSBmdW5jdGlvbigpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgICAgICAgICAgICAgaWYgKCFmaXJzdFRpbWVMb2FkKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IGhvcml6b250YWwgc2Nyb2xs
IGJhciBwcmVzZW50cyBhbmQgd2FzIGluaXRpYWxseSBhdCB0aGUgcmlnaHQgZm9yIFJUTCBwYWdl
LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBGQUlMIGluIE1hYyAtLSBmb3IgUlRMIHBhZ2Us
IHRoZSBzY3JvbGwgYmFyIGlzIGF0IHRoZSBsZWZ0IHdoZW4gcGFnZSBmaXJzdCBsb2FkLgorICAg
ICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2Ug
Iiwgd2luZG93LnNjcm9sbFgsIDApOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8g
VGVzdCBob3Jpem9udGFsIHNjcm9sbC4KKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8o
ZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgIGFzc2Vy
dEVxdWFsKCJob3Jpem9udGFsIHNjcm9sbDogIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Ny
b2xsWCk7CisgICAgICAgICAgICAgICAgLy8gVGVzdCBjYWxsaW5nIHdpbmRvdy5zY3JvbGxYIGNv
bnRpbnVvdXNseSB3b250IGNoYW5nZSB0aGUgc2Nyb2xsWCBwb3NpdGlvbi4KKyAgICAgICAgICAg
ICAgICBhc3NlcnRFcXVhbCgiY29udGludW91c2x5IGNhbGwgd2luZG93LnNjcm9sbFggIiwgd2lu
ZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAKKworICAgICAgICAg
ICAgICAgIC8vIFRlc3Qgem9vbWluZyB3b250IHJlc2V0IHNjcm9sbCBwb3NpdGlvbi4KKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogRkFJTCBpbiBNYWMgLS0gZm9yIFJUTCBwYWdlLCBwcmVzZXJ2
ZSBzY3JvbGwgcG9zaXRpb24gd2hlbiB6b29taW5nIHNlZW1zIGRvZXMgbm90IHdvcmsgd2VsbC4K
KyAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7
CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlSW4oKTsKKyAgICAgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VPdXQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0RXF1YWwoInpvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb24i
LCB3aW5kb3cuc2Nyb2xsWCxleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3QgcmVzaXplIHdvbnQgcmVzZXQg
c2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIHdpbmRvdy5yZXNpemVUbygxMDAwLCB3
aW5kb3cuaW5uZXJIZWlnaHQpOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBl
Y3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgd2luZG93LnJl
c2l6ZVRvKDIwMDAsIHdpbmRvdy5pbm5lckhlaWdodCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
RXF1YWwoInJlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFgs
IGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8g
VGVzdCB3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uLgor
ICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVk
U2Nyb2xsWSAvIDIpOworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZGl2Iik7CisgICAgICAgICAgICAgICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNld2hlZWwiLCBtb3VzZXdoZWVsSGFuZGxlciwgZmFsc2UpOworICAgICAgICAgICAgICAgIHZh
ciB3aGVlbEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIldoZWVsRXZlbnQiKTsKKyAgICAg
ICAgICAgICAgICB3aGVlbEV2ZW50LmluaXRXZWJLaXRXaGVlbEV2ZW50KDAsIGV4cGVjdGVkU2Ny
b2xsWSAvIDIsIHdpbmRvdywgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
OworICAgICAgICAgICAgICAgIGRpdi5kaXNwYXRjaEV2ZW50KHdoZWVsRXZlbnQpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCBIT01FL0VORCBvcGVyYXRpb24uCisgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgICAg
ICAvLyBOb3QgdXNpbmcgYXNzZXJ0IGVxdWFsIGhlcmUgc2luY2UgdGhlIGJlaGF2aW9yIGlzIGRp
ZmZlcmVudCBpbiBlYWNoIHBvcnQuIAorICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBs
ZSwgaW4gTWFjLCBIT01FL0VORCBrZXkgcmVzZXQgYm90aCB4IGFuZCB5IHNjcm9sbCBwb3NpdGlv
bi4gCisgICAgICAgICAgICAgICAgICAgIC8vIEluIENocm9taXVtLCBIT01FL0VORCBrZXkgb25s
eSByZXNldCB5IHNjcm9sbCBwb3NpdGlvbiwgYW5kIHggc2Nyb2xsIHBvc2l0aW9uIGlzIHByZXNl
cnZlZC4KKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xs
WCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bigiaG9tZSIpOworICAgICAgICAgICAgICAgICAgICBsb2coIktleURvd24gSE9NRSBtb3Zl
IHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogIiArIHdpbmRvdy5zY3Jv
bGxYLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Ny
b2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigiZW5kIik7CisgICAgICAgICAgICAgICAgICAgIGxvZygiS2V5RG93biBFTkQgbW92
ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6ICIgKyB3aW5kb3cuc2Ny
b2xsWCwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgLy8gVGVzdCBzZWxlY3QgYWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50IGNvbnRlbnQuCisgICAg
ICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKDUwMCwgNTAwKTsKKyAgICAgICAgICAgICAgICB2
YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAg
IGRpdi5mb2N1cygpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxl
Y3RBbGwiKTsKKyAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVj
dGlvbigpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJzZWxlY3RBbGwgc2VsZWN0cyBh
bGwgZG9jdW1lbnQiLCBzZWxlY3Rpb24udG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwgZGl2LmlubmVy
SFRNTC5sZW5ndGgpLCBkaXYuaW5uZXJIVE1MKTsKKworICAgICAgICAgICAgICAgIGZpcnN0VGlt
ZUxvYWQgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIC8vIFRlc3QgcmVsb2FkIHByZXNlcnZl
cyBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVj
dGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cubG9j
YXRpb24ucmVsb2FkKCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInJlbG9hZCBwcmVz
ZXJ2ZSBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxYKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
PgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0eWxlPSJ3aGl0ZXNwYWNlOm5vd3JhcDsgd2lkdGg6
IDQwMDBweDsgaGVpZ2h0OiAxMDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiPkxvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8g
ZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1
YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxs
YW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVp
cyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVz
c2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50
IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmlj
aWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uIjwvZGl2PgorICAgICAgICA8
dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNTFhMDgyOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor77u/
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPlRlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZTwv
dGl0bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBw
ZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBm
dW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgICAg
ICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFj
dHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOwor
ICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rpb24oKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRp
diIpOworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IHdpbmRvdy5zY3JvbGxYOworICAg
ICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygtMSwgMCk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0RXF1YWwoInNjcm9sbCIsIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8
ZGl2IGlkPSJkaXYiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgcmlnaHQ6NDBweCI+dGVzdCBs
ZWZ0IG92ZXJmbG93IGluIExUUiBwYWdlLjwvZGl2PgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUi
PjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9y
aWdodC1vdmVyZmxvdy1pbi1ydGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yMWJhNzkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmln
aHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor77u/PCFET0NUWVBFIGh0
bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6
Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0
bWwgIHN0eWxlPSJkaXJlY3Rpb246cnRsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCIgPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+VGVzdCByaWdodCBvdmVyZmxvdyBp
biBSVEwgcGFnZTwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlv
biBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnNv
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAgICAg
IGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVk
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQp
CisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1cmUsIGFj
dHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjog
U3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgb25sb2FkID0gZnVu
Y3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IHdpbmRvdy5z
Y3JvbGxYOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygxLCAwKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRFcXVhbCgic2Nyb2xsIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgIAor
ICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+
CisgICAgICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjQw
cHgiPnRlc3QgcmlnaHQgb3ZlcmZsb3cgaW4gUlRMIHBhZ2UuPC9kaXY+CisgICAgICAgIDx1bCBp
ZD0iY29uc29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1p
bi1ydGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9k
b20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWY0NzcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4t
cnRsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitMb3JlbSBpcHN1bSBkb2xvciBzaXQg
YW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9y
IGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQg
bWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBu
aXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBk
b2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xv
cmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBp
ZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1v
bGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLiIKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFn
ZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBj
YWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vzcworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNj
cm9sbCBwb3NpdGlvbjogU3VjY2VzcworcmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246
IFN1Y2Nlc3MKK3doZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRp
b246IFN1Y2Nlc3MKK0tleURvd24gSE9NRSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0
IGZvciBSVEwgcGFnZTogLTEwMDAKK0tleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24g
dG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAtMTAwMAorc2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3Vt
ZW50OiBTdWNjZXNzCityZWxvYWQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1z
Y3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZTc5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4t
cnRsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitMb3JlbSBpcHN1bSBkb2xvciBzaXQg
YW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9y
IGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQg
bWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBu
aXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBk
b2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xv
cmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBp
ZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1v
bGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLiIKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFn
ZSA6IEZhaWx1cmUsIGFjdHVhbDogLTMyMjU7IGV4cGVjdGVkOiAwCitob3Jpem9udGFsIHNjcm9s
bDogOiBTdWNjZXNzCitjb250aW51b3VzbHkgY2FsbCB3aW5kb3cuc2Nyb2xsWCA6IFN1Y2Nlc3MK
K3pvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246IEZhaWx1cmUsIGFjdHVh
bDogLTg2NjsgZXhwZWN0ZWQ6IC0xMDAwCityZXNpemUgcHJlc2VydmVzIHNjcm9sbCBwb3NpdGlv
bjogU3VjY2Vzcword2hlZWwgc2Nyb2xsIHByZXNlcnZlcyBob3Jpem9udGFsIHNjcm9sbCBwb3Np
dGlvbjogU3VjY2VzcworS2V5RG93biBIT01FIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmln
aHQgZm9yIFJUTCBwYWdlOiAwCitLZXlEb3duIEVORCBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRv
IHJpZ2h0IGZvciBSVEwgcGFnZTogMAorc2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50OiBT
dWNjZXNzCityZWxvYWQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1s
dHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2xlZnQt
b3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5mYmFjNGQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIgQEAKK3Rlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZS4KK3Njcm9sbDogU3VjY2Vzcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92ZXJm
bG93LWluLXJ0bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9k
b20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kMzU3OWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyIEBACit0ZXN0IHJpZ2h0IG92ZXJmbG93IGluIFJUTCBwYWdlLgorc2Nyb2xs
OiBTdWNjZXNzCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDE3M2I0Y2MuLjQ0YTJjOGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMTEtMTcgIFhp
YW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9s
bGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZsb3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1NgorCisgICAgICAgIEZvciBSVEwgcGFnZSwgc2F2
ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQgaW5jbHVkZSBpdCBpbnRvIHRoZSBkb2N1bWVudAor
ICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQuIFVzZSB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cg
d2hlbiBzY3JvbGxpbmcgYW5kIHBhaW50aW5nCisgICAgICAgIHRoZSBwYWdlLiBCZWhhdmlvciBv
biBMVFIgcGFnZSBzaG91bGQgYmUgdW5tb2RpZmllZCBzaW5jZSBsZWZ0IGxheW91dAorICAgICAg
ICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBhZ2UuCisKKyAgICAgICAgVGVzdHM6IGZh
c3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9yaWdodC1vdmVyZmxvdy1pbi1ydGwuaHRtbAorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RWaWV3U2l6ZSk6IFNhdmUg
bmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgYXMgc2Nyb2xsIFggb3JpZ2luLiBJbmNs
dWRlIGxlZnQgbGF5b3V0IG92ZXJmbG93IGluIGRvY3VtZW50IHNpemUuCisgICAgICAgICogcGFn
ZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oOiBBZGQgbWV0aG9kcyBmb3Igc2V0dGluZyBhbmQgZ2V0
dGluZyBzY3JvbGwgWCBvcmlnaW4uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpTY3JvbGxWaWV3KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbFZpZXc6OnNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsUG9zaXRpb24pOiBNaW51cyBzY3JvbGwgWCBvcmlnaW4g
ZnJvbSBtYXhpbXVtIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OmFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6d2hl
ZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6cGxhdGZvcm1TZXRDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6cGxhdGZvcm1TZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RCb3hEZWNv
cmF0aW9ucyk6IEluY2x1ZGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgaW50byBjYW52YXMgc2l6ZS4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWV3OjpsYXlvdXQpOiBTYXZlIGxlZnQgbGF5b3V0IG92ZXJmbG93LgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVmlldzo6ZG9jTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3Ojpkb2NXaWR0aCk6IEluY2x1ZGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgaW50byBkb2Mgd2lk
dGggZm9yIFJUTCBwYWdlLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisKIDIw
MTAtMTEtMTMgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZmUwYmU2YS4uMjRkNzk1
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQ0NSw3ICs0NDUsOCBAQCB2b2lkIEZyYW1lVmlldzo6YWRq
dXN0Vmlld1NpemUoKQogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0
Q29udGVudHNTaXplKEludFNpemUocm9vdC0+cmlnaHRMYXlvdXRPdmVyZmxvdygpLCByb290LT5i
b3R0b21MYXlvdXRPdmVyZmxvdygpKSk7CisgICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsT3JpZ2lu
WCgtcm9vdC0+bGVmdExheW91dE92ZXJmbG93KCkpOworICAgIHNldENvbnRlbnRzU2l6ZShJbnRT
aXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKSAtIHJvb3QtPmxlZnRMYXlvdXRPdmVyZmxv
dygpLCByb290LT5ib3R0b21MYXlvdXRPdmVyZmxvdygpKSk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3
OjphcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJPYmplY3QqIG8sIFNjcm9sbGJhck1vZGUm
IGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9t
YWMvV2ViQ29yZUZyYW1lVmlldy5oIGIvV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVWaWV3
LmgKaW5kZXggOTc3YjFhNy4uOGIyNTEwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL21hYy9X
ZWJDb3JlRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVWaWV3
LmgKQEAgLTMzLDYgKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLSAodm9pZClzZXRTY3Jv
bGxpbmdNb2RlczooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSloTW9kZSB2ZXJ0aWNhbDooV2ViQ29y
ZTo6U2Nyb2xsYmFyTW9kZSl2TW9kZSBhbmRMb2NrOihCT09MKWxvY2s7CiAtICh2b2lkKXNjcm9s
bGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKiloTW9kZSB2ZXJ0aWNhbDooV2ViQ29y
ZTo6U2Nyb2xsYmFyTW9kZSopdk1vZGU7CiAtICh2b2lkKXNldFNjcm9sbEJhcnNTdXBwcmVzc2Vk
OihCT09MKXN1cHByZXNzZWQgcmVwYWludE9uVW5zdXBwcmVzczooQk9PTClyZXBhaW50OworLSAo
dm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Nyb2xsT3JpZ2luWDsKKy0gKGludClzY3JvbGxP
cmlnaW5YOwogQGVuZAogCiBAcHJvdG9jb2wgV2ViQ29yZUZyYW1lVmlldwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKaW5kZXggYmQ3NWI4My4uMDAzMjMzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CkBAIC01Myw2ICs1Myw3IEBAIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXcoKQogICAgICwgbV9kcmF3
UGFuU2Nyb2xsSWNvbihmYWxzZSkKICAgICAsIG1fdXNlRml4ZWRMYXlvdXQoZmFsc2UpCiAgICAg
LCBtX3BhaW50c0VudGlyZUNvbnRlbnRzKGZhbHNlKQorICAgICwgbV9zY3JvbGxPcmlnaW5YKDAp
CiB7CiAgICAgcGxhdGZvcm1Jbml0KCk7CiB9CkBAIC0yNjQsMTcgKzI2NSwzMCBAQCB2b2lkIFNj
cm9sbFZpZXc6OnNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgIGlm
IChjb250ZW50c1NpemUoKSA9PSBuZXdTaXplKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250
ZW50c1NpemUgPSBuZXdTaXplOwotICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQorICAgIGlmIChw
bGF0Zm9ybVdpZGdldCgpKSB7CiAgICAgICAgIHBsYXRmb3JtU2V0Q29udGVudHNTaXplKCk7Ci0g
ICAgZWxzZQorICAgIH0gZWxzZQogICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKHNjcm9sbE9mZnNl
dCgpKTsKIH0KIAogSW50UG9pbnQgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkg
Y29uc3QKIHsKLSAgICBJbnRTaXplIG1heGltdW1PZmZzZXQgPSBjb250ZW50c1NpemUoKSAtIHZp
c2libGVDb250ZW50UmVjdCgpLnNpemUoKTsKKyAgICBJbnRQb2ludCBtYXhpbXVtT2Zmc2V0KGNv
bnRlbnRzV2lkdGgoKSAtIHZpc2libGVXaWR0aCgpIC0gbV9zY3JvbGxPcmlnaW5YLCBjb250ZW50
c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpKTsKICAgICBtYXhpbXVtT2Zmc2V0LmNsYW1wTmVn
YXRpdmVUb1plcm8oKTsKLSAgICByZXR1cm4gSW50UG9pbnQobWF4aW11bU9mZnNldC53aWR0aCgp
LCBtYXhpbXVtT2Zmc2V0LmhlaWdodCgpKTsKKyAgICByZXR1cm4gbWF4aW11bU9mZnNldDsKK30K
KworSW50UG9pbnQgU2Nyb2xsVmlldzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gSW50UG9pbnQoLW1fc2Nyb2xsT3JpZ2luWCwgMCk7Cit9CisKK0ludFBvaW50
IFNjcm9sbFZpZXc6OmFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UoY29uc3QgSW50UG9p
bnQmIHNjcm9sbFBvaW50KSBjb25zdAoreworICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9u
ID0gc2Nyb2xsUG9pbnQuc2hydW5rVG8obWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOworICAgIG5l
d1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24uZXhwYW5kZWRUbyhtaW5pbXVtU2Ny
b2xsUG9zaXRpb24oKSk7CisgICAgbmV3U2Nyb2xsUG9zaXRpb24uY2xhbXBOZWdhdGl2ZVRvWmVy
bygpOworICAgIHJldHVybiBuZXdTY3JvbGxQb3NpdGlvbjsKIH0KIAogaW50IFNjcm9sbFZpZXc6
OnNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0CkBAIC0y
OTcsNyArMzExLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIpCiAgICAgSW50U2l6ZSBuZXdPZmZzZXQgPSBtX3Njcm9sbE9mZnNldDsKICAgICBp
ZiAoc2Nyb2xsYmFyKSB7CiAgICAgICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0g
SG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAgICAgIG5ld09mZnNldC5zZXRXaWR0aChzY3Jv
bGxiYXItPnZhbHVlKCkpOworICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKHNjcm9sbGJh
ci0+dmFsdWUoKSAtIG1fc2Nyb2xsT3JpZ2luWCk7CiAgICAgICAgIGVsc2UgaWYgKHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgICAgIG5ld09m
ZnNldC5zZXRIZWlnaHQoc2Nyb2xsYmFyLT52YWx1ZSgpKTsKICAgICB9CkBAIC0zMzMsOCArMzQ3
LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYg
c2Nyb2xsUG9pbnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBJbnRQb2ludCBuZXdT
Y3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvaW50LnNocnVua1RvKG1heGltdW1TY3JvbGxQb3NpdGlv
bigpKTsKLSAgICBuZXdTY3JvbGxQb3NpdGlvbi5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CisgICAg
SW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJh
bmdlKHNjcm9sbFBvaW50KTsKIAogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAg
IGlmIChkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkgewpAQCAtNDYyLDEwICs0NzUsMTAgQEAgdm9pZCBT
Y3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW5VcGRhdGVTY3JvbGxiYXJzID0gdHJ1ZTsKLSAg
ICBJbnRTaXplIG1heFNjcm9sbFBvc2l0aW9uKGNvbnRlbnRzV2lkdGgoKSAtIHZpc2libGVXaWR0
aCgpLCBjb250ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpKTsKLSAgICBJbnRTaXplIHNj
cm9sbCA9IGRlc2lyZWRPZmZzZXQuc2hydW5rVG8obWF4U2Nyb2xsUG9zaXRpb24pOwotICAgIHNj
cm9sbC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gCisKKyAgICBJbnRQb2ludCBzY3JvbGxQb2lu
dCA9IGFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UoSW50UG9pbnQoZGVzaXJlZE9mZnNl
dC53aWR0aCgpLCBkZXNpcmVkT2Zmc2V0LmhlaWdodCgpKSk7CisgICAgSW50U2l6ZSBzY3JvbGwo
c2Nyb2xsUG9pbnQueCgpLCBzY3JvbGxQb2ludC55KCkpOworCiAgICAgaWYgKG1faG9yaXpvbnRh
bFNjcm9sbGJhcikgewogICAgICAgICBpbnQgY2xpZW50V2lkdGggPSB2aXNpYmxlV2lkdGgoKTsK
ICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzV2lkdGgo
KSA+IGNsaWVudFdpZHRoKTsKQEAgLTQ4Myw3ICs0OTYsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbGJhcnMoY29uc3QgSW50U2l6ZSYgZGVzaXJlZE9mZnNldCkKICAgICAgICAgICAg
IG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24odHJ1ZSk7CiAg
ICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQ
ZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+
c2V0UHJvcG9ydGlvbihjbGllbnRXaWR0aCwgY29udGVudHNXaWR0aCgpKTsKLSAgICAgICAgbV9o
b3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwud2lkdGgoKSwgU2Nyb2xsYmFyOjpO
b3RGcm9tU2Nyb2xsQW5pbWF0b3IpOworICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNl
dFZhbHVlKHNjcm9sbC53aWR0aCgpICsgbV9zY3JvbGxPcmlnaW5YLCBTY3JvbGxiYXI6Ok5vdEZy
b21TY3JvbGxBbmltYXRvcik7CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQog
ICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlv
bihmYWxzZSk7IAogICAgIH0gCkBAIC0xMDA1LDYgKzEwMTgsMTYgQEAgdm9pZCBTY3JvbGxWaWV3
OjpyZW1vdmVQYW5TY3JvbGxJY29uKCkKICAgICBob3N0V2luZG93KCktPmludmFsaWRhdGVDb250
ZW50c0FuZFdpbmRvdyhJbnRSZWN0KG1fcGFuU2Nyb2xsSWNvblBvaW50LCBJbnRTaXplKHBhbklj
b25TaXplTGVuZ3RoLCBwYW5JY29uU2l6ZUxlbmd0aCkpLCB0cnVlIC8qaW1tZWRpYXRlKi8pOwog
fQogCisKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsT3JpZ2luWChpbnQgeCkKK3sKKyAgICBp
ZiAocGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKHgp
OworICAgIGVsc2UKKyAgICAgICAgbV9zY3JvbGxPcmlnaW5YID0geDsKK30KKworCiAjaWYgIVBM
QVRGT1JNKFdYKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9S
TShFRkwpCiAKIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1Jbml0KCkKQEAgLTEwMzUsNiArMTA1
OCwxMCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQo
Ym9vbCkKIHsKIH0KIAordm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgo
aW50KQoreworfQorCiAjZW5kaWYKIAogI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShX
WCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggNTA2ZGJmMy4uMTAzYzUwYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKQEAgLTE1Myw2ICsxNTMsOSBAQCBwdWJsaWM6CiAgICAgSW50UG9pbnQgc2Nyb2xs
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigp
OyB9CiAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29u
dGVudFJlY3QoKS5sb2NhdGlvbigpIC0gSW50UG9pbnQoKTsgfSAvLyBHZXRzIHRoZSBzY3JvbGxl
ZCBwb3NpdGlvbiBhcyBhbiBJbnRTaXplLiBDb252ZW5pZW50IGZvciBhZGRpbmcgdG8gb3RoZXIg
c2l6ZXMuCiAgICAgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7IC8vIFRo
ZSBtYXhpbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KKyAgICBJbnRQb2ludCBt
aW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1pbmltdW0gcG9zaXRpb24gd2Ug
Y2FuIGJlIHNjcm9sbGVkIHRvLgorICAgIC8vIEFkanVzdCB0aGUgcGFzcyBpbiBzY3JvbGwgcG9z
aXRpb24gd2l0aGluIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0aW9ucy4KKyAgICBJbnRQ
b2ludCBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNvbnN0IEludFBvaW50JikgY29u
c3Q7IAogICAgIGludCBzY3JvbGxYKCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS54
KCk7IH0KICAgICBpbnQgc2Nyb2xsWSgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCku
eSgpOyB9CiAgICAgCkBAIC0yNzIsNiArMjc1LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIFNjcm9s
bCB0aGUgY29udGVudCBieSBpbnZhbGlkYXRpbmcgZXZlcnl0aGluZy4KICAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KTsKIAor
ICAgIHZvaWQgc2V0U2Nyb2xsT3JpZ2luWChpbnQpOworCiBwcml2YXRlOgogICAgIFJlZlB0cjxT
Y3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBt
X3ZlcnRpY2FsU2Nyb2xsYmFyOwpAQCAtMzA2LDYgKzMxMSwxMSBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX3BhaW50c0VudGlyZUNvbnRlbnRzOwogCisgICAgLy8gbV9zY3JvbGxPcmlnaW5YIGlz
IDAgZm9yIExUUiBwYWdlLiBBbmQgaXQgaXMgbmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQKKyAgICAv
LyBvdmVyZmxvdyBmb3IgUlRMIHBhZ2UuIEl0IGlzIG1haW5seSB1c2VkIHRvIHNldCB0aGUgaG9y
aXpvbnRhbCBzY3JvbGxiYXIKKyAgICAvLyBwb3NpdGlvbiBmb3IgUlRMIHBhZ2UuCisgICAgaW50
IG1fc2Nyb2xsT3JpZ2luWDsKKwogICAgIHZvaWQgaW5pdCgpOwogICAgIHZvaWQgZGVzdHJveSgp
OwogCkBAIC0zMzMsNiArMzQzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0U2Ny
b2xsYmFyc1N1cHByZXNzZWQoYm9vbCByZXBhaW50T25VbnN1cHByZXNzKTsKICAgICB2b2lkIHBs
YXRmb3JtUmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYsIGJvb2wgbm93KTsK
ICAgICBib29sIHBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdDsKKyAgIAorICAgIHZvaWQgcGxh
dGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIGRlZmlu
ZWQgX19PQkpDX18KIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbFZpZXdNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCmlu
ZGV4IDdlZjVkYzQuLjY4MDM3YTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbFZpZXdNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5t
bQpAQCAtMTMwLDkgKzEzMCw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRDb250ZW50
c1NpemUoKQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICBpbnQgdyA9IG1f
Y29udGVudHNTaXplLndpZHRoKCk7CiAgICAgaW50IGggPSBtX2NvbnRlbnRzU2l6ZS5oZWlnaHQo
KTsKLSAgICBMT0coRnJhbWVzLCAiJXAgJUAgYXQgdyAlZCBoICVkXG4iLCBkb2N1bWVudFZpZXco
KSwgWyhpZClbZG9jdW1lbnRWaWV3KCkgY2xhc3NdIGNsYXNzTmFtZV0sIHcsIGgpOyAgICAgICAg
ICAgIAotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgbWF4KDAsIHcpLCBtYXgoMCwgaCkgfTsgLy8g
d29ya2Fyb3VuZCBmb3IgNDIxMzMxNAotICAgIFtkb2N1bWVudFZpZXcoKSBzZXRGcmFtZVNpemU6
dGVtcFNpemVdOworICAgIExPRyhGcmFtZXMsICIlcCAlQCBhdCB3ICVkIGggJWRcbiIsIGRvY3Vt
ZW50VmlldygpLCBbKGlkKVtkb2N1bWVudFZpZXcoKSBjbGFzc10gY2xhc3NOYW1lXSwgdywgaCk7
CisgICAgW2RvY3VtZW50VmlldygpIHNldEZyYW1lU2l6ZTpOU01ha2VTaXplKG1heCgwLCB3KSwg
bWF4KDAsIGgpKV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIApAQCAtMTQ3
LDcgKzE0Niw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJzU3VwcHJl
c3NlZChib29sIHJlcGFpbnRPblVuc3VwcHJlc3MpCiB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3Jt
U2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgbWF4
KDAsIHNjcm9sbFBvaW50LngoKSksIG1heCgwLCBzY3JvbGxQb2ludC55KCkpIH07IC8vIERvbid0
IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0LgorICAgIE5TUG9pbnQgdGVt
cFBvaW50ID0gTlNNYWtlUG9pbnQobWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpblhdLCBz
Y3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSk7CiAgICAgW2RvY3VtZW50
VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIH0KQEAgLTIwMiw0ICsyMDEsMTEgQEAgYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUlz
T2Zmc2NyZWVuKCkgY29uc3QKICAgICByZXR1cm4gIVtwbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10g
fHwgIVtbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIGlzVmlzaWJsZV07CiB9CiAKK3ZvaWQgU2Ny
b2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCB4KQoreworICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBbc2Nyb2xsVmlldygpIHNldFNjcm9sbE9yaWdpblg6
eF07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNmIxNjZhMi4uNTlmMDAyOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03NjYsOCArNzY2LDggQEAgdm9pZCBSZW5kZXJCb3g6
OnBhaW50Um9vdEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGlu
dCB0eSkKIAogICAgIC8vIENTUzIgMTQuMjoKICAgICAvLyBUaGUgYmFja2dyb3VuZCBvZiB0aGUg
Ym94IGdlbmVyYXRlZCBieSB0aGUgcm9vdCBlbGVtZW50IGNvdmVycyB0aGUgZW50aXJlIGNhbnZh
cyBpbmNsdWRpbmcKLSAgICAvLyBpdHMgbWFyZ2lucy4KLSAgICBpbnQgYnggPSB0eCAtIG1hcmdp
bkxlZnQoKTsKKyAgICAvLyBpdHMgbWFyZ2lucywgYW5kIGluY2x1ZGluZyBpdHMgbGVmdCBsYXlv
dXQgb3ZlcmZsb3cuCisgICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0KCkgKyB2aWV3KCktPmxl
ZnRMYXlvdXRPdmVyZmxvdygpOwogICAgIGludCBieSA9IHR5IC0gbWFyZ2luVG9wKCk7CiAgICAg
aW50IGJ3ID0gbWF4KHcgKyBtYXJnaW5MZWZ0KCkgKyBtYXJnaW5SaWdodCgpICsgYm9yZGVyTGVm
dCgpICsgYm9yZGVyUmlnaHQoKSwgcncpOwogICAgIGludCBiaCA9IG1heChoICsgbWFyZ2luVG9w
KCkgKyBtYXJnaW5Cb3R0b20oKSArIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCksIHJoKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggNmI0YjY1Yy4uOTNkMjE5NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKQEAgLTEzMSw3ICsxMzEsOCBAQCB2b2lkIFJlbmRlclZpZXc6Omxh
eW91dCgpCiAKICAgICAvLyBSZXNldCBvdmVyZmxvdyBhbmQgdGhlbiByZXBsYWNlIGl0IHdpdGgg
ZG9jV2lkdGggYW5kIGRvY0hlaWdodC4KICAgICBtX292ZXJmbG93LmNsZWFyKCk7Ci0gICAgYWRk
TGF5b3V0T3ZlcmZsb3coSW50UmVjdCgwLCAwLCBkb2NXaWR0aCgpLCBkb2NIZWlnaHQoKSkpOwor
ICAgIGludCBsZWZ0T3ZlcmZsb3cgPSBkb2NMZWZ0KCk7CisgICAgYWRkTGF5b3V0T3ZlcmZsb3co
SW50UmVjdChsZWZ0T3ZlcmZsb3csIDAsIGRvY1dpZHRoKGxlZnRPdmVyZmxvdyksIGRvY0hlaWdo
dCgpKSk7CiAKICAgICBBU1NFUlQobGF5b3V0RGVsdGEoKSA9PSBJbnRTaXplKCkpOwogICAgIEFT
U0VSVChtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50ID09IDApOwpAQCAtNjMzLDkgKzYzNCwxNSBA
QCBpbnQgUmVuZGVyVmlldzo6ZG9jSGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4gaDsKIH0KIAot
aW50IFJlbmRlclZpZXc6OmRvY1dpZHRoKCkgY29uc3QKK2ludCBSZW5kZXJWaWV3Ojpkb2NMZWZ0
KCkgY29uc3QKIHsKLSAgICBpbnQgdyA9IHJpZ2h0bW9zdFBvc2l0aW9uKCk7CisgICAgLy8gQ2xp
cCBvdXQgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZS4KKyAgICByZXR1cm4gc3R5bGUoKS0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpID8gMCA6IHN0ZDo6bWluKDAsIGxlZnRtb3N0UG9zaXRpb24o
KSk7Cit9CisKK2ludCBSZW5kZXJWaWV3Ojpkb2NXaWR0aChpbnQgbGVmdE92ZXJmbG93KSBjb25z
dAoreworICAgIGludCB3ID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gcmln
aHRtb3N0UG9zaXRpb24oKSA6IHdpZHRoKCkgLSBsZWZ0T3ZlcmZsb3c7CiAKICAgICBmb3IgKFJl
bmRlckJveCogYyA9IGZpcnN0Q2hpbGRCb3goKTsgYzsgYyA9IGMtPm5leHRTaWJsaW5nQm94KCkp
IHsKICAgICAgICAgaW50IGR3ID0gYy0+d2lkdGgoKSArIGMtPm1hcmdpbkxlZnQoKSArIGMtPm1h
cmdpblJpZ2h0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3Lmgg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggMDdmOTMzZi4uYjMyYjIxZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMTc0LDcgKzE3NCw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBzaG91bGRSZXBhaW50KGNvbnN0IEludFJlY3QmIHIpIGNvbnN0OwogICAgICAgICAKICAg
ICBpbnQgZG9jSGVpZ2h0KCkgY29uc3Q7Ci0gICAgaW50IGRvY1dpZHRoKCkgY29uc3Q7CisgICAg
aW50IGRvY0xlZnQoKSBjb25zdDsKKyAgICBpbnQgZG9jV2lkdGgoaW50KSBjb25zdDsKIAogICAg
IC8vIFRoZXNlIGZ1bmN0aW9ucyBtYXkgb25seSBiZSBhY2Nlc3NlZCBieSBMYXlvdXRTdGF0ZU1h
aW50YWluZXIuCiAgICAgYm9vbCBwdXNoTGF5b3V0U3RhdGUoUmVuZGVyQm94KiByZW5kZXJlciwg
Y29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBpbnQgcGFnZUhlaWdodCA9IDAsIGJvb2wgcGFnZUhlaWdo
dENoYW5nZWQgPSBmYWxzZSwgQ29sdW1uSW5mbyogY29sSW5mbyA9IDApCmRpZmYgLS1naXQgYS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDEzYjM5Mjku
LmNlYWY4ZmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMTEtMTcgIFhpYW9tZWkgSmkgIDx4
amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJpZ2h0LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2
ZWFsIGxlZnQgb3ZlcmZsb3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzU1NgorCisgICAgICAgIFNldCBhbmQgZ2V0IHRoZSBvcmlnaW5hbCB4LWF4
aXMgc2Nyb2xsIHBvc2l0aW9uIGFuZCByZXNldCBzY3JvbGwgcG9zaXRpb24gb24gSE9NRS9FTkQg
a2V5IHByZXNzLgorICAgICAgICBNb2RpZnkgV2ViRnJhbWVWaWV3IHRvIHN1cHBvcnQgc2V0dGlu
ZyB0aGUgaW5pdGlhbCBob3Jpem9udGFsIHNjcm9sbGVyJ3MgdGh1bWIgcG9zaXRpb24gdG8gdGhl
IHJpZ2h0IGZvcgorICAgICAgICBwYWdlcyB3aXRoIGEgbGVmdCBvdmVyZmxvdy4KKworICAgICAg
ICAqIFdlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tOgorICAgICAgICAoLVtXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXcgcmVmcmVzaEluaXRpYWxTY3JvbGxiYXJQb3NpdGlvbl0pOgor
ICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgdXBkYXRlU2Nyb2xsZXJzXSk6Cisg
ICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyByZWZsZWN0U2Nyb2xsZWRDbGlwVmll
dzpdKToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNldFNjcm9sbE9yaWdp
blg6XSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBzY3JvbGxPcmlnaW5Y
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgtW1dlYkZy
YW1lVmlldyBfc2Nyb2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50XSk6CisgICAgICAgICgtW1dlYkZy
YW1lVmlldyBfc2Nyb2xsVG9FbmRPZkRvY3VtZW50XSk6CisKIDIwMTAtMTEtMTIgIEpvaG4gS25v
dHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U3RldmUgQmxvY2suCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Nj
cm9sbEJhcnNWaWV3Lm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJz
Vmlldy5tbQppbmRleCA3NDQzOWRkLi41NzRkZWRjIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0KQEAgLTYyLDYgKzYyLDEzIEBAIHN0cnVjdCBX
ZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdQcml2YXRlIHsKICAgICBib29sIGFsd2F5c0hpZGVWZXJ0
aWNhbFNjcm9sbGVyOwogICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGluZ0FsbG93ZWRCdXRTY3Jv
bGxlckhpZGRlbjsKICAgICBib29sIHZlcnRpY2FsU2Nyb2xsaW5nQWxsb3dlZEJ1dFNjcm9sbGVy
SGlkZGVuOworCisgICAgLy8gc2Nyb2xsT3JpZ2luWCBpcyAwIGZvciBMVFIgcGFnZSBhbmQgaXMg
dGhlIG5lZ2F0aXZlIG9mIGxlZnQgbGF5b3V0IG92ZXJmbG93IHZhbHVlIGZvciBSVEwgcGFnZS4K
KyAgICBpbnQgc2Nyb2xsT3JpZ2luWDsKKworICAgIC8vIEZsYWcgdG8gaW5kaWNhdGUgdGhhdCB0
aGUgc2Nyb2xsYmFyIHRodW1iJ3MgaW5pdGlhbCBwb3NpdGlvbiBuZWVkcyB0bworICAgIC8vIGJl
IG1hbnVhbGx5IHNldC4KKyAgICBib29sIHNldFNjcm9sbGJhclRodW1iSW5pdGlhbFBvc2l0aW9u
OwogfTsKIAogQGltcGxlbWVudGF0aW9uIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldwpAQCAtMTQ5
LDYgKzE1NiwyMyBAQCBzdHJ1Y3QgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3UHJpdmF0ZSB7CiAg
ICAgcmV0dXJuIF9wcml2YXRlLT52ZXJ0aWNhbFNjcm9sbGluZ0FsbG93ZWRCdXRTY3JvbGxlckhp
ZGRlbiB8fCBbc2VsZiBoYXNWZXJ0aWNhbFNjcm9sbGVyXTsKIH0KIAorLSAodm9pZClyZWZyZXNo
SW5pdGlhbFNjcm9sbGJhclBvc2l0aW9uCit7CisgICAgaWYgKF9wcml2YXRlLT5zZXRTY3JvbGxi
YXJUaHVtYkluaXRpYWxQb3NpdGlvbikgeworICAgICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9
IFtzZWxmIGRvY3VtZW50Vmlld107CisgICAgICAgIE5TUmVjdCBkb2N1bWVudFJlY3QgPSBbZG9j
dW1lbnRWaWV3IGJvdW5kc107CisgICAgICAgIAorICAgICAgICAvLyBJZiBzY3JvbGxPcmlnaW5Y
IGlzIG5vbi16ZXJvIHRoYXQgbWVhbnMgdGhhdCB0aGVyZSdzIGEgbGVmdCBvdmVyZmxvdyA8PT4g
dGhpcyBpcyBhbiBSVEwgZG9jdW1lbnQgYW5kIHRodXMKKyAgICAgICAgLy8gdGhlIGluaXRpYWwg
cG9zaXRpb24gb2YgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyIHRodW1iIHNob3VsZCBiZSBvbiB0
aGUgcmlnaHQuCisgICAgICAgIC8vIEZJWE1FOiBJZiBrbm93bGVkZ2Ugb2YgZG9jdW1lbnQgZGly
ZWN0aW9uYWxpdHkgaXMgZXZlciBwcm9wYWdhdGVkIHRvIHRoZSBzY3JvbGwgdmlldywgaXQgcHJv
YmFibHkgbWFrZXMKKyAgICAgICAgLy8gbW9yZSBzZW5zZSB0byB1c2UgdGhlIGRpcmVjdGlvbmFs
aXR5IGRpcmVjdGx5IGluIHRoZSBiZWxvdyBpZiBzdGF0ZW1lbnQsIHJhdGhlciB0aGFuIGRvaW5n
IHNvIGluZGlyZWN0bHkKKyAgICAgICAgLy8gdGhyb3VnaCBzY3JvbGxPcmlnaW5YLgorICAgICAg
ICBpZiAoX3ByaXZhdGUtPnNjcm9sbE9yaWdpblggIT0gMCkKKyAgICAgICAgICAgIFtkb2N1bWVu
dFZpZXcgc2Nyb2xsUG9pbnQ6TlNNYWtlUG9pbnQoTlNNYXhYKGRvY3VtZW50UmVjdCkgLSBOU1dp
ZHRoKFtzZWxmIGNvbnRlbnRWaWV3RnJhbWVdKSwgMCldOworICAgICAgICBfcHJpdmF0ZS0+c2V0
U2Nyb2xsYmFyVGh1bWJJbml0aWFsUG9zaXRpb24gPSBmYWxzZTsKKyAgICB9Cit9CisKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAoV2ViSW50ZXJuYWwp
CkBAIC0zMDIsNiArMzI2LDEyIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4VXBkYXRlU2Ny
b2xsYmFyc1Bhc3MgPSAyOwogICAgIGlmIChoYXNIb3Jpem9udGFsU2Nyb2xsZXIgIT0gbmV3SGFz
SG9yaXpvbnRhbFNjcm9sbGVyKSB7CiAgICAgICAgIF9wcml2YXRlLT5pblVwZGF0ZVNjcm9sbGVy
cyA9IFlFUzsKICAgICAgICAgW3NlbGYgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGVyOm5ld0hhc0hv
cml6b250YWxTY3JvbGxlcl07CisgICAgICAgIAorICAgICAgICAvLyBGb3IgUlRMIGRvY3VtZW50
cywgd2UgbmVlZCB0byBzZXQgdGhlIGluaXRpYWwgcG9zaXRpb24gb2YgdGhlCisgICAgICAgIC8v
IGhvcml6b250YWwgc2Nyb2xsYmFyIHRodW1iIHRvIGJlIG9uIHRoZSByaWdodC4KKyAgICAgICAg
aWYgKG5ld0hhc0hvcml6b250YWxTY3JvbGxlcikKKyAgICAgICAgICAgIF9wcml2YXRlLT5zZXRT
Y3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlvbiA9IHRydWU7CisgICAgICAgIAogICAgICAgICBf
cHJpdmF0ZS0+aW5VcGRhdGVTY3JvbGxlcnMgPSBOTzsKICAgICAgICAgbmVlZHNMYXlvdXQgPSBZ
RVM7CiAgICAgfQpAQCAtMzY0LDYgKzM5NCwxMSBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY01h
eFVwZGF0ZVNjcm9sbGJhcnNQYXNzID0gMjsKICAgICB9CiAjZW5kaWYKIAorICAgIC8vIFRoZSBj
YWxsIHRvIFtOU1ZpZXcgcmVmbGVjdFNjcm9sbGVkQ2xpcFZpZXddIHNldHMgdGhlIHNjcm9sbGJh
ciB0aHVtYgorICAgIC8vIHBvc2l0aW9uIHRvIDAgKHRoZSBsZWZ0KSB3aGVuIHRoZSB2aWV3IGlz
IGluaXRpYWxseSBkaXNwbGF5ZWQuCisgICAgLy8gVGhpcyBjYWxsIHVwZGF0ZXMgdGhlIGluaXRp
YWwgcG9zaXRpb24gY29ycmVjdGx5LgorICAgIFtzZWxmIHJlZnJlc2hJbml0aWFsU2Nyb2xsYmFy
UG9zaXRpb25dOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBk
b2N1bWVudFZpZXddOwogICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhU
TUxWaWV3IGNsYXNzXV0pIHsKQEAgLTUyNSw0ICs1NjAsMjIgQEAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNNYXhVcGRhdGVTY3JvbGxiYXJzUGFzcyA9IDI7CiAgICAgcmV0dXJuIFtzdXBlciBhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkXTsKIH0KIAorLSAodm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQp
c2Nyb2xsT3JpZ2luWAoreworICAgIF9wcml2YXRlLT5zY3JvbGxPcmlnaW5YID0gc2Nyb2xsT3Jp
Z2luWDsKKyAgICAKKyAgICBpZCBkb2NWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKKyAgICBp
ZiAoc2Nyb2xsT3JpZ2luWCAhPSBbZG9jVmlldyBib3VuZHNdLm9yaWdpbi54KSB7CisgICAgICAg
IC8vICItW3NlbGYgc2Nyb2xsT3JpZ2luWF0iIGlzIGVxdWFsIHRvIHRoZSBsZWZ0IGxheW91dCBv
dmVyZmxvdy4KKyAgICAgICAgLy8gTWFrZSBEb2N1bWVudCBib3VuZHMgb3JpZ2luIHggY29vcmRp
bmF0ZSBjb3JyZXNwb25kIHRvIHRoZSBsZWZ0IG92ZXJmbG93IHNvIHRoZSBlbnRpcmUgY2FudmFz
IGlzIGNvdmVyZWQgYnkgdGhlIGRvY3VtZW50LgorICAgICAgICBbZG9jVmlldyBzZXRCb3VuZHNP
cmlnaW46TlNNYWtlUG9pbnQoLXNjcm9sbE9yaWdpblgsIFtkb2NWaWV3IGJvdW5kc10ub3JpZ2lu
LnkpXTsKKyAgICB9CisKK30KKworLSAoaW50KXNjcm9sbE9yaWdpblgKK3sKKyAgICByZXR1cm4g
X3ByaXZhdGUtPnNjcm9sbE9yaWdpblg7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVW
aWV3Lm1tCmluZGV4IDBkYjEyYzAuLjQwZWUwYjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZVZpZXcubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmll
dy5tbQpAQCAtNTM2LDYgKzUzNiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21D
bGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAgICAgaWYg
KCFbc2VsZiBfaXNTY3JvbGxhYmxlXSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5TUG9pbnQg
cG9pbnQgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVudFZpZXddIGZyYW1lXS5vcmlnaW47
CisgICAgcG9pbnQueCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhdOwogICAg
IHJldHVybiBbW3NlbGYgX2NvbnRlbnRWaWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1hdGU6WUVT
XTsKIH0KIApAQCAtNTQ3LDYgKzU0OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zy
b21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAgICAg
ICAgIHJldHVybiBOTzsKICAgICBOU1JlY3QgZnJhbWUgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBk
b2N1bWVudFZpZXddIGZyYW1lXTsKICAgICBOU1BvaW50IHBvaW50ID0gTlNNYWtlUG9pbnQoZnJh
bWUub3JpZ2luLngsIE5TTWF4WShmcmFtZSkpOworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3Jv
bGxWaWV3XSBzY3JvbGxPcmlnaW5YXTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10g
X3Njcm9sbFRvOiZwb2ludCBhbmltYXRlOllFU107CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74100</attachid>
            <date>2010-11-17 05:45:51 -0800</date>
            <delta_ts>2010-11-17 19:36:52 -0800</delta_ts>
            <desc>Snapshot</desc>
            <filename>left_scroll.patch</filename>
            <type>text/plain</type>
            <size>34724</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDQwZDliOGU2YWFjMjJmNjkyNzVjMmE4ZDMzNzAxOGRmYTY1MTgxMzMKQXV0aG9yOiBK
ZXJlbXkgPGplcmVteUBjaHJvbWl1bS5vcmc+CkRhdGU6ICAgU3VuIE5vdiAxNCAwODo1MzoyOSAy
MDEwICswMjAwCgogICAgMjAxMC0xMS0xNyAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+
CiAgICAKICAgICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAgICAKICAgICAg
ICAgICAgUmlnaHQtdG8tbGVmdCBwYWdlcyBzaG91bGQgYmUgc2Nyb2xsYWJsZSB0byByZXZlYWwg
bGVmdCBvdmVyZmxvdy4KICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTU2CiAgICAKICAgICAgICAgICAgU2V0IGFuZCBnZXQgdGhlIG9yaWdpbmFs
IHgtYXhpcyBzY3JvbGwgcG9zaXRpb24gYW5kIHJlc2V0IHNjcm9sbCBwb3NpdGlvbiBvbiBIT01F
L0VORCBrZXkgcHJlc3MuCiAgICAgICAgICAgIE1vZGlmeSBXZWJGcmFtZVZpZXcgdG8gc3VwcG9y
dCBzZXR0aW5nIHRoZSBpbml0aWFsIGhvcml6b250YWwgc2Nyb2xsZXIncyB0aHVtYiBwb3NpdGlv
biB0byB0aGUgcmlnaHQgZm9yCiAgICAgICAgICAgIHBhZ2VzIHdpdGggYSBsZWZ0IG92ZXJmbG93
LgoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA3MGQ4ZTVmLi5hYzM1MGFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAt
MTEtMTcgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0LXRvLWxlZnQgcGFnZXMgc2hvdWxk
IGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZsb3cuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1NgorCisgICAgICAgIEZvciBSVEwg
cGFnZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQgaW5jbHVkZSBpdCBpbnRvIHRoZSBk
b2N1bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQuIFVzZSB0aGUgbGVmdCBsYXlvdXQg
b3ZlcmZsb3cgd2hlbiBzY3JvbGxpbmcgYW5kIHBhaW50aW5nCisgICAgICAgIHRoZSBwYWdlLiBC
ZWhhdmlvciBvbiBMVFIgcGFnZSBzaG91bGQgYmUgdW5tb2RpZmllZCBzaW5jZSBsZWZ0IGxheW91
dAorICAgICAgICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBhZ2UuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jp
em9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4t
cnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMTEtMTcgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBDb21tZW50aW5n
IG91dCBmYWlsaW5nIFF0IGluc3BlY3RvciB0ZXN0cy4gTmVlZCB0byBmaXggaGFybmVzcy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRs
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYzN2YyMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWlu
LXJ0bC5odG1sCkBAIC0wLDAgKzEsMTE0IEBACis8aHRtbCBkaXI9cnRsPgorICAgIDxoZWFkPgor
ICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KKyAgICAgICAgICAgIGZ1bmN0
aW9uIGxvZyhzdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGxpID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBsaS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgICAgICAgICAgICAgICB2YXIgY29u
c29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgICAgICAg
ICAgY29uc29sZS5hcHBlbmRDaGlsZChsaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGFzc2VydEVxdWFsKG1lc3NhZ2UsIGFjdHVhbCwgZXhwZWN0
ZWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGFjdHVhbCAhPSBleHBlY3Rl
ZCkKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogRmFpbHVyZSwg
YWN0dWFsOiAiICsgYWN0dWFsICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAi
OiBTdWNjZXNzIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGFzc2VydFRydWUobWVzc2FnZSwgZmFjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZmFjdCkKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdl
ICsgIjogRmFpbHVyZSIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRTY3JvbGxYID0gLTEwMDA7CisgICAg
ICAgICAgICB2YXIgZXhwZWN0ZWRTY3JvbGxZID0gNTAwOworCisgICAgICAgICAgICB2YXIgZmly
c3RUaW1lTG9hZCA9IHRydWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIG1v
dXNld2hlZWxIYW5kbGVyKGUpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGFzc2Vy
dEVxdWFsKCJ3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9u
Iiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAg
ICAgICAgICAgICBpZiAoIWZpcnN0VGltZUxvYWQpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgICAgIC8vIFRlc3QgaG9yaXpvbnRhbCBzY3JvbGwgYmFyIHByZXNl
bnRzIGFuZCB3YXMgaW5pdGlhbGx5IGF0IHRoZSByaWdodCBmb3IgUlRMIHBhZ2UuCisgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IEZBSUwgaW4gTWFjIC0tIGZvciBSVEwgcGFnZSwgdGhlIHNjcm9s
bCBiYXIgaXMgYXQgdGhlIGxlZnQgd2hlbiBwYWdlIGZpcnN0IGxvYWQuCisgICAgICAgICAgICAg
ICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSAiLCB3aW5kb3cu
c2Nyb2xsWCwgMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IGhvcml6
b250YWwgc2Nyb2xsLgorICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNj
cm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoImhv
cml6b250YWwgc2Nyb2xsOiAiLCB3aW5kb3cuc2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxYKTsKKyAg
ICAgICAgICAgICAgICAvLyBUZXN0IGNhbGxpbmcgd2luZG93LnNjcm9sbFggY29udGludW91c2x5
IHdvbnQgY2hhbmdlIHRoZSBzY3JvbGxYIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIGFzc2Vy
dEVxdWFsKCJjb250aW51b3VzbHkgY2FsbCB3aW5kb3cuc2Nyb2xsWCAiLCB3aW5kb3cuc2Nyb2xs
WCwgZXhwZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgLy8g
VGVzdCB6b29taW5nIHdvbnQgcmVzZXQgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBGQUlMIGluIE1hYyAtLSBmb3IgUlRMIHBhZ2UsIHByZXNlcnZlIHNjcm9sbCBw
b3NpdGlvbiB3aGVuIHpvb21pbmcgc2VlbXMgZG9lcyBub3Qgd29yayB3ZWxsLgorICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgd2lu
ZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VJbigpOworICAgICAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci56b29tUGFnZU91dCgpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRF
cXVhbCgiem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbiIsIHdpbmRvdy5z
Y3JvbGxYLGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCByZXNpemUgd29udCByZXNldCBzY3JvbGwgcG9z
aXRpb24uCisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKDEwMDAsIHdpbmRvdy5pbm5l
ckhlaWdodCk7CisgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xs
WCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cucmVzaXplVG8oMjAw
MCwgd2luZG93LmlubmVySGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgicmVz
aXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWCwgZXhwZWN0ZWRT
Y3JvbGxYKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHdoZWVs
IHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgICAg
ICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZIC8g
Mik7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
aXYiKTsKKyAgICAgICAgICAgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIs
IG1vdXNld2hlZWxIYW5kbGVyLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdmFyIHdoZWVsRXZl
bnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiV2hlZWxFdmVudCIpOworICAgICAgICAgICAgICAg
IHdoZWVsRXZlbnQuaW5pdFdlYktpdFdoZWVsRXZlbnQoMCwgZXhwZWN0ZWRTY3JvbGxZIC8gMiwg
d2luZG93LCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgZGl2LmRpc3BhdGNoRXZlbnQod2hlZWxFdmVudCk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAvLyBUZXN0IEhPTUUvRU5EIG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE5vdCB1
c2luZyBhc3NlcnQgZXF1YWwgaGVyZSBzaW5jZSB0aGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IGlu
IGVhY2ggcG9ydC4gCisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCBpbiBNYWMs
IEhPTUUvRU5EIGtleSByZXNldCBib3RoIHggYW5kIHkgc2Nyb2xsIHBvc2l0aW9uLiAKKyAgICAg
ICAgICAgICAgICAgICAgLy8gSW4gQ2hyb21pdW0sIEhPTUUvRU5EIGtleSBvbmx5IHJlc2V0IHkg
c2Nyb2xsIHBvc2l0aW9uLCBhbmQgeCBzY3JvbGwgcG9zaXRpb24gaXMgcHJlc2VydmVkLgorICAg
ICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3Rl
ZFNjcm9sbFkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJob21l
Iik7CisgICAgICAgICAgICAgICAgICAgIGxvZygiS2V5RG93biBIT01FIG1vdmUgeC1zY3JvbGwg
cG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAiICsgd2luZG93LnNjcm9sbFgsIDApOwor
ICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBl
Y3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJl
bmQiKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJLZXlEb3duIEVORCBtb3ZlIHgtc2Nyb2xs
IHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogIiArIHdpbmRvdy5zY3JvbGxYLCAwKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0
IHNlbGVjdCBhbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQgY29udGVudC4KKyAgICAgICAgICAgICAg
ICB3aW5kb3cucmVzaXplVG8oNTAwLCA1MDApOworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisgICAgICAgICAgICAgICAgZGl2LmZvY3Vz
KCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOwor
ICAgICAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInNlbGVjdEFsbCBzZWxlY3RzIGFsbCBkb2N1bWVu
dCIsIHNlbGVjdGlvbi50b1N0cmluZygpLnN1YnN0cmluZygwLCBkaXYuaW5uZXJIVE1MLmxlbmd0
aCksIGRpdi5pbm5lckhUTUwpOworCisgICAgICAgICAgICAgICAgZmlyc3RUaW1lTG9hZCA9IGZh
bHNlOworCisgICAgICAgICAgICAgICAgLy8gVGVzdCByZWxvYWQgcHJlc2VydmVzIHNjcm9sbCBw
b3NpdGlvbi4KKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxY
LCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxv
YWQoKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgicmVsb2FkIHByZXNlcnZlIHNjcm9s
bCBwb3NpdGlvbiIsIHdpbmRvdy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxkaXYgaWQ9ImRpdiIgc3R5bGU9IndoaXRlc3BhY2U6bm93cmFwOyB3aWR0aDogNDAwMHB4OyBo
ZWlnaHQ6IDEwMDBweDsgYm9yZGVyOiAxcHggc29saWQgcmVkOyI+TG9yZW0gaXBzdW0gZG9sb3Ig
c2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRl
bXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmlt
IGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9y
aXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1
cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0g
ZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQg
Y3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVu
dCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4iPC9kaXY+CisgICAgICAgIDx1bCBpZD0iY29u
c29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41MWEwODI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbApAQCAtMCwwICsxLDM4IEBACivvu788IURPQ1RZUEUg
aHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0
cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Cis8
aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgPgorICAgIDxoZWFkPgor
ICAgICAgICA8dGl0bGU+VGVzdCBsZWZ0IG92ZXJmbG93IGluIExUUiBwYWdlPC90aXRsZT4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZyhzdHIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGki
KTsKKyAgICAgICAgICAgICAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShzdHIpKTsKKyAgICAgICAgICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgICAgICAgICAgY29uc29sZS5hcHBlbmRDaGlsZChs
aSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGFz
c2VydEVxdWFsKG1lc3NhZ2UsIGFjdHVhbCwgZXhwZWN0ZWQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICAgICAg
bG9nKCJcbiIgKyBtZXNzYWdlICsgIjogRmFpbHVyZSwgYWN0dWFsOiAiICsgYWN0dWFsICsgIjsg
ZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7CisgICAgICAgICAg
ICB9CisgICAgCisgICAgICAgICAgICBvbmxvYWQgPSBmdW5jdGlvbigpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisgICAg
ICAgICAgICAgICAgdmFyIG9yaWdpbmFsID0gd2luZG93LnNjcm9sbFg7CisgICAgICAgICAgICAg
ICAgd2luZG93LnNjcm9sbFRvKC0xLCAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgi
c2Nyb2xsIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgIAorICAgICAgICAgICAgfQorICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRp
diIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyByaWdodDo0MHB4Ij50ZXN0IGxlZnQgb3ZlcmZs
b3cgaW4gTFRSIHBhZ2UuPC9kaXY+CisgICAgICAgIDx1bCBpZD0iY29uc29sZSI+PC91bD4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yaWdo
dC1vdmVyZmxvdy1pbi1ydGwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JpZ2h0LW92ZXJm
bG93LWluLXJ0bC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxYmE3
OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yaWdodC1vdmVyZmxv
dy1pbi1ydGwuaHRtbApAQCAtMCwwICsxLDM4IEBACivvu788IURPQ1RZUEUgaHRtbCBQVUJMSUMg
Ii0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5v
cmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Cis8aHRtbCAgc3R5bGU9
ImRpcmVjdGlvbjpydGwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiA+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5UZXN0IHJpZ2h0IG92ZXJmbG93IGluIFJUTCBwYWdl
PC90aXRsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZyhzdHIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgICAgICAgICAgICAgICB2YXIgY29uc29sZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgICAgICAgICAgY29uc29sZS5h
cHBlbmRDaGlsZChsaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGFzc2VydEVxdWFsKG1lc3NhZ2UsIGFjdHVhbCwgZXhwZWN0ZWQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCkKKyAgICAgICAg
ICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogRmFpbHVyZSwgYWN0dWFsOiAiICsg
YWN0dWFsICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7
CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBvbmxvYWQgPSBmdW5jdGlvbigpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZGl2Iik7CisgICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsID0gd2luZG93LnNjcm9sbFg7Cisg
ICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDEsIDApOworICAgICAgICAgICAgICAgIGFz
c2VydEVxdWFsKCJzY3JvbGwiLCB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgCisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAg
PGRpdiBpZD0iZGl2IiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6NDBweCI+dGVzdCBy
aWdodCBvdmVyZmxvdyBpbiBSVEwgcGFnZS48L2Rpdj4KKyAgICAgICAgPHVsIGlkPSJjb25zb2xl
Ij48L3VsPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9u
dGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmE5ZjQ3NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25z
ZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVu
dCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5p
YW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxp
cXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJl
cHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdp
YXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24g
cHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0g
aWQgZXN0IGxhYm9ydW0uIgorb3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDogU3VjY2Vz
cworaG9yaXpvbnRhbCBzY3JvbGw6IDogU3VjY2VzcworY29udGludW91c2x5IGNhbGwgd2luZG93
LnNjcm9sbFggOiBTdWNjZXNzCit6b29tIGluIGFuZCBvdXQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0
aW9uOiBTdWNjZXNzCityZXNpemUgcHJlc2VydmVzIHNjcm9sbCBwb3NpdGlvbjogU3VjY2Vzcwor
d2hlZWwgc2Nyb2xsIHByZXNlcnZlcyBob3Jpem9udGFsIHNjcm9sbCBwb3NpdGlvbjogU3VjY2Vz
cworS2V5RG93biBIT01FIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBw
YWdlOiAtMTAwMAorS2V5RG93biBFTkQgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBm
b3IgUlRMIHBhZ2U6IC0xMDAwCitzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1Y2Nl
c3MKK3JlbG9hZCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1p
bi1ydGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hv
cml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNDRlNzk1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25z
ZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVu
dCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5p
YW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxp
cXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJl
cHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdp
YXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24g
cHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0g
aWQgZXN0IGxhYm9ydW0uIgorb3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDogRmFpbHVy
ZSwgYWN0dWFsOiAtMzIyNTsgZXhwZWN0ZWQ6IDAKK2hvcml6b250YWwgc2Nyb2xsOiA6IFN1Y2Nl
c3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vzcworem9vbSBpbiBh
bmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogRmFpbHVyZSwgYWN0dWFsOiAtODY2OyBl
eHBlY3RlZDogLTEwMDAKK3Jlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNz
Cit3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uOiBTdWNj
ZXNzCitLZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRM
IHBhZ2U6IDAKK0tleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9y
IFJUTCBwYWdlOiAwCitzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1Y2Nlc3MKK3Jl
bG9hZCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1p
bi1sdHItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZi
YWM0ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9k
b20vbGVmdC1vdmVyZmxvdy1pbi1sdHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAordGVz
dCBsZWZ0IG92ZXJmbG93IGluIExUUiBwYWdlLgorc2Nyb2xsOiBTdWNjZXNzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRs
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9yaWdodC1v
dmVyZmxvdy1pbi1ydGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmQzNTc5Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIgQEAKK3Rlc3QgcmlnaHQgb3ZlcmZsb3cgaW4gUlRMIHBhZ2UuCitzY3JvbGw6IFN1Y2Nlc3MK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDg0YzJlMi4uNjkwOWUxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMC0xMS0xNyAgWGlhb21laSBKaSAg
PHhqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmlnaHQtdG8tbGVmdCBwYWdlcyBzaG91bGQgYmUgc2Nyb2xsYWJsZSB0byBy
ZXZlYWwgbGVmdCBvdmVyZmxvdy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTU2CisKKyAgICAgICAgRm9yIFJUTCBwYWdlLCBzYXZlIGxlZnQgbGF5
b3V0IG92ZXJmbG93IGFuZCBpbmNsdWRlIGl0IGludG8gdGhlIGRvY3VtZW50CisgICAgICAgIHNp
emUgZHVyaW5nIGxheW91dC4gVXNlIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdyB3aGVuIHNjcm9s
bGluZyBhbmQgcGFpbnRpbmcKKyAgICAgICAgdGhlIHBhZ2UuIEJlaGF2aW9yIG9uIExUUiBwYWdl
IHNob3VsZCBiZSB1bm1vZGlmaWVkIHNpbmNlIGxlZnQgbGF5b3V0CisgICAgICAgIG92ZXJmbG93
IGlzIHNldCBhcyAwIGZvciBMVFIgcGFnZS4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vaG9y
aXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2xl
ZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3JpZ2h0LW92
ZXJmbG93LWluLXJ0bC5odG1sCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplKTogU2F2ZSBuZWdhdGl2ZSBv
ZiBsZWZ0IGxheW91dCBvdmVyZmxvdyBhcyBzY3JvbGwgWCBvcmlnaW4uIEluY2x1ZGUgbGVmdCBs
YXlvdXQgb3ZlcmZsb3cgaW4gZG9jdW1lbnQgc2l6ZS4KKyAgICAgICAgKiBwYWdlL21hYy9XZWJD
b3JlRnJhbWVWaWV3Lmg6IEFkZCBtZXRob2RzIGZvciBzZXR0aW5nIGFuZCBnZXR0aW5nIHNjcm9s
bCBYIG9yaWdpbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6c2V0Q29udGVudHNTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
Om1heGltdW1TY3JvbGxQb3NpdGlvbik6IE1pbnVzIHNjcm9sbCBYIG9yaWdpbiBmcm9tIG1heGlt
dW0gaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjptaW5pbXVtU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRl
U2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbFZpZXdNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9y
bVNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9y
bVNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRm
b3JtU2V0U2Nyb2xsT3JpZ2luWCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKTog
SW5jbHVkZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBpbnRvIGNhbnZhcyBzaXplLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6
OmxheW91dCk6IFNhdmUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWV3Ojpkb2NMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY1dp
ZHRoKTogSW5jbHVkZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBpbnRvIGRvYyB3aWR0aCBmb3IgUlRM
IHBhZ2UuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKwogMjAxMC0xMS0xNyAg
QWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGZlMGJlNmEuLjI0ZDc5NTAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC00NDUsNyArNDQ1LDggQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVz
dFZpZXdTaXplKCkKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldENv
bnRlbnRzU2l6ZShJbnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKSwgcm9vdC0+Ym90
dG9tTGF5b3V0T3ZlcmZsb3coKSkpOworICAgIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpblgo
LXJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpKTsKKyAgICBzZXRDb250ZW50c1NpemUoSW50U2l6
ZShyb290LT5yaWdodExheW91dE92ZXJmbG93KCkgLSByb290LT5sZWZ0TGF5b3V0T3ZlcmZsb3co
KSwgcm9vdC0+Ym90dG9tTGF5b3V0T3ZlcmZsb3coKSkpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6
YXBwbHlPdmVyZmxvd1RvVmlld3BvcnQoUmVuZGVyT2JqZWN0KiBvLCBTY3JvbGxiYXJNb2RlJiBo
TW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvbWFj
L1dlYkNvcmVGcmFtZVZpZXcuaCBiL1dlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5o
CmluZGV4IDk3N2IxYTcuLjhiMjUxMDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9tYWMvV2Vi
Q29yZUZyYW1lVmlldy5oCisrKyBiL1dlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5o
CkBAIC0zMyw2ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC0gKHZvaWQpc2V0U2Nyb2xs
aW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUpaE1vZGUgdmVydGljYWw6KFdlYkNvcmU6
OlNjcm9sbGJhck1vZGUpdk1vZGUgYW5kTG9jazooQk9PTClsb2NrOwogLSAodm9pZClzY3JvbGxp
bmdNb2RlczooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSopaE1vZGUgdmVydGljYWw6KFdlYkNvcmU6
OlNjcm9sbGJhck1vZGUqKXZNb2RlOwogLSAodm9pZClzZXRTY3JvbGxCYXJzU3VwcHJlc3NlZDoo
Qk9PTClzdXBwcmVzc2VkIHJlcGFpbnRPblVuc3VwcHJlc3M6KEJPT0wpcmVwYWludDsKKy0gKHZv
aWQpc2V0U2Nyb2xsT3JpZ2luWDooaW50KXNjcm9sbE9yaWdpblg7CistIChpbnQpc2Nyb2xsT3Jp
Z2luWDsKIEBlbmQKIAogQHByb3RvY29sIFdlYkNvcmVGcmFtZVZpZXcKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCmluZGV4IGJkNzViODMuLmY3MDRiYWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApA
QCAtNTMsNiArNTMsNyBAQCBTY3JvbGxWaWV3OjpTY3JvbGxWaWV3KCkKICAgICAsIG1fZHJhd1Bh
blNjcm9sbEljb24oZmFsc2UpCiAgICAgLCBtX3VzZUZpeGVkTGF5b3V0KGZhbHNlKQogICAgICwg
bV9wYWludHNFbnRpcmVDb250ZW50cyhmYWxzZSkKKyAgICAsIG1fc2Nyb2xsT3JpZ2luWCgwKQog
ewogICAgIHBsYXRmb3JtSW5pdCgpOwogfQpAQCAtMjcyLDkgKzI3MywyMiBAQCB2b2lkIFNjcm9s
bFZpZXc6OnNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQogCiBJbnRQb2lu
dCBTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAogewotICAgIEludFNp
emUgbWF4aW11bU9mZnNldCA9IGNvbnRlbnRzU2l6ZSgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0KCku
c2l6ZSgpOworICAgIEludFBvaW50IG1heGltdW1PZmZzZXQoY29udGVudHNXaWR0aCgpIC0gdmlz
aWJsZVdpZHRoKCkgLSBtX3Njcm9sbE9yaWdpblgsIGNvbnRlbnRzSGVpZ2h0KCkgLSB2aXNpYmxl
SGVpZ2h0KCkpOwogICAgIG1heGltdW1PZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAg
IHJldHVybiBJbnRQb2ludChtYXhpbXVtT2Zmc2V0LndpZHRoKCksIG1heGltdW1PZmZzZXQuaGVp
Z2h0KCkpOworICAgIHJldHVybiBtYXhpbXVtT2Zmc2V0OworfQorCitJbnRQb2ludCBTY3JvbGxW
aWV3OjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBJbnRQb2lu
dCgtbV9zY3JvbGxPcmlnaW5YLCAwKTsKK30KKworSW50UG9pbnQgU2Nyb2xsVmlldzo6YWRqdXN0
U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpIGNv
bnN0Cit7CisgICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb2ludC5zaHJ1
bmtUbyhtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7CisgICAgbmV3U2Nyb2xsUG9zaXRpb24gPSBu
ZXdTY3JvbGxQb3NpdGlvbi5leHBhbmRlZFRvKG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKTsKKyAg
ICBuZXdTY3JvbGxQb3NpdGlvbi5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CisgICAgcmV0dXJuIG5l
d1Njcm9sbFBvc2l0aW9uOwogfQogCiBpbnQgU2Nyb2xsVmlldzo6c2Nyb2xsU2l6ZShTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29uc3QKQEAgLTI5Nyw3ICszMTEsNyBAQCB2b2lk
IFNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZChTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICBJbnRT
aXplIG5ld09mZnNldCA9IG1fc2Nyb2xsT2Zmc2V0OwogICAgIGlmIChzY3JvbGxiYXIpIHsKICAg
ICAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
KQotICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKHNjcm9sbGJhci0+dmFsdWUoKSk7Cisg
ICAgICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoc2Nyb2xsYmFyLT52YWx1ZSgpIC0gbV9zY3Jv
bGxPcmlnaW5YKTsKICAgICAgICAgZWxzZSBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09
IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICAgICAgbmV3T2Zmc2V0LnNldEhlaWdodChzY3Jv
bGxiYXItPnZhbHVlKCkpOwogICAgIH0KQEAgLTMzMyw4ICszNDcsNyBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gc2Ny
b2xsUG9pbnQuc2hydW5rVG8obWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOwotICAgIG5ld1Njcm9s
bFBvc2l0aW9uLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKyAgICBJbnRQb2ludCBuZXdTY3JvbGxQ
b3NpdGlvbiA9IGFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2Uoc2Nyb2xsUG9pbnQpOwog
CiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgaWYgKGRlbGVnYXRlc1Njcm9s
bGluZygpKSB7CkBAIC00NjIsMTAgKzQ3NSwxMCBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNj
cm9sbGJhcnMoY29uc3QgSW50U2l6ZSYgZGVzaXJlZE9mZnNldCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9pblVwZGF0ZVNjcm9sbGJhcnMgPSB0cnVlOwotICAgIEludFNpemUgbWF4U2Nyb2xs
UG9zaXRpb24oY29udGVudHNXaWR0aCgpIC0gdmlzaWJsZVdpZHRoKCksIGNvbnRlbnRzSGVpZ2h0
KCkgLSB2aXNpYmxlSGVpZ2h0KCkpOwotICAgIEludFNpemUgc2Nyb2xsID0gZGVzaXJlZE9mZnNl
dC5zaHJ1bmtUbyhtYXhTY3JvbGxQb3NpdGlvbik7Ci0gICAgc2Nyb2xsLmNsYW1wTmVnYXRpdmVU
b1plcm8oKTsKLSAKKworICAgIEludFBvaW50IHNjcm9sbFBvaW50ID0gYWRqdXN0U2Nyb2xsUG9z
aXRpb25XaXRoaW5SYW5nZShJbnRQb2ludChkZXNpcmVkT2Zmc2V0LndpZHRoKCksIGRlc2lyZWRP
ZmZzZXQuaGVpZ2h0KCkpKTsKKyAgICBJbnRTaXplIHNjcm9sbChzY3JvbGxQb2ludC54KCksIHNj
cm9sbFBvaW50LnkoKSk7CisKICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAg
ICAgIGludCBjbGllbnRXaWR0aCA9IHZpc2libGVXaWR0aCgpOwogICAgICAgICBtX2hvcml6b250
YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOwpA
QCAtNDgzLDcgKzQ5Niw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25z
dCBJbnRTaXplJiBkZXNpcmVkT2Zmc2V0KQogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xs
YmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbih0cnVlKTsKICAgICAgICAgbV9ob3Jpem9udGFs
U2Nyb2xsYmFyLT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VT
dGVwKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVu
dFdpZHRoLCBjb250ZW50c1dpZHRoKCkpOwotICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIt
PnNldFZhbHVlKHNjcm9sbC53aWR0aCgpLCBTY3JvbGxiYXI6Ok5vdEZyb21TY3JvbGxBbmltYXRv
cik7CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRo
KCkgKyBtX3Njcm9sbE9yaWdpblgsIFNjcm9sbGJhcjo6Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsK
ICAgICAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX2hvcml6
b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsgCiAgICAgfSAK
QEAgLTEwMDUsNiArMTAxOCwxNiBAQCB2b2lkIFNjcm9sbFZpZXc6OnJlbW92ZVBhblNjcm9sbElj
b24oKQogICAgIGhvc3RXaW5kb3coKS0+aW52YWxpZGF0ZUNvbnRlbnRzQW5kV2luZG93KEludFJl
Y3QobV9wYW5TY3JvbGxJY29uUG9pbnQsIEludFNpemUocGFuSWNvblNpemVMZW5ndGgsIHBhbklj
b25TaXplTGVuZ3RoKSksIHRydWUgLyppbW1lZGlhdGUqLyk7CiB9CiAKKwordm9pZCBTY3JvbGxW
aWV3OjpzZXRTY3JvbGxPcmlnaW5YKGludCB4KQoreworICAgIGlmIChwbGF0Zm9ybVdpZGdldCgp
KQorICAgICAgICBwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoeCk7CisgICAgZWxzZQorICAgICAg
ICBtX3Njcm9sbE9yaWdpblggPSB4OworfQorCisKICNpZiAhUExBVEZPUk0oV1gpICYmICFQTEFU
Rk9STShHVEspICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEVGTCkKIAogdm9pZCBTY3Jv
bGxWaWV3OjpwbGF0Zm9ybUluaXQoKQpAQCAtMTAzNSw2ICsxMDU4LDEwIEBAIHZvaWQgU2Nyb2xs
Vmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJzU3VwcHJlc3NlZChib29sKQogewogfQogCit2b2lk
IFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luWChpbnQpCit7Cit9CisKICNlbmRp
ZgogCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdYKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
aAppbmRleCA1MDZkYmYzLi4xMDNjNTBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtMTUzLDYg
KzE1Myw5IEBAIHB1YmxpYzoKICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCk7IH0KICAgICBJbnRTaXplIHNj
cm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9u
KCkgLSBJbnRQb2ludCgpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVkIHBvc2l0aW9uIGFzIGFuIElu
dFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBzaXplcy4KICAgICBJbnRQb2lu
dCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1heGltdW0gcG9zaXRpb24g
d2UgY2FuIGJlIHNjcm9sbGVkIHRvLgorICAgIEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlv
bigpIGNvbnN0OyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8u
CisgICAgLy8gQWRqdXN0IHRoZSBwYXNzIGluIHNjcm9sbCBwb3NpdGlvbiB3aXRoaW4gdGhlIG1p
bmltdW0gYW5kIG1heGltdW0gcG9zaXRpb25zLgorICAgIEludFBvaW50IGFkanVzdFNjcm9sbFBv
c2l0aW9uV2l0aGluUmFuZ2UoY29uc3QgSW50UG9pbnQmKSBjb25zdDsgCiAgICAgaW50IHNjcm9s
bFgoKSBjb25zdCB7IHJldHVybiBzY3JvbGxQb3NpdGlvbigpLngoKTsgfQogICAgIGludCBzY3Jv
bGxZKCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS55KCk7IH0KICAgICAKQEAgLTI3
Miw2ICsyNzUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGlu
dmFsaWRhdGluZyBldmVyeXRoaW5nLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c1Ns
b3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpOwogCisgICAgdm9pZCBzZXRTY3JvbGxP
cmlnaW5YKGludCk7CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyOwogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fdmVydGljYWxTY3JvbGxiYXI7
CkBAIC0zMDYsNiArMzExLDExIEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fcGFpbnRzRW50aXJl
Q29udGVudHM7CiAKKyAgICAvLyBtX3Njcm9sbE9yaWdpblggaXMgMCBmb3IgTFRSIHBhZ2UuIEFu
ZCBpdCBpcyBuZWdhdGl2ZSBvZiBsZWZ0IGxheW91dAorICAgIC8vIG92ZXJmbG93IGZvciBSVEwg
cGFnZS4gSXQgaXMgbWFpbmx5IHVzZWQgdG8gc2V0IHRoZSBob3Jpem9udGFsIHNjcm9sbGJhcgor
ICAgIC8vIHBvc2l0aW9uIGZvciBSVEwgcGFnZS4KKyAgICBpbnQgbV9zY3JvbGxPcmlnaW5YOwor
CiAgICAgdm9pZCBpbml0KCk7CiAgICAgdm9pZCBkZXN0cm95KCk7CiAKQEAgLTMzMyw2ICszNDMs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TZXRTY3JvbGxiYXJzU3VwcHJlc3NlZChi
b29sIHJlcGFpbnRPblVuc3VwcHJlc3MpOwogICAgIHZvaWQgcGxhdGZvcm1SZXBhaW50Q29udGVu
dFJlY3RhbmdsZShjb25zdCBJbnRSZWN0JiwgYm9vbCBub3cpOwogICAgIGJvb2wgcGxhdGZvcm1J
c09mZnNjcmVlbigpIGNvbnN0OworICAgCisgICAgdm9pZCBwbGF0Zm9ybVNldFNjcm9sbE9yaWdp
blgoaW50KTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNfXwogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbSBiL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KaW5kZXggN2VmNWRjNC4uNjgwMzdh
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCkBAIC0xMzAsOSArMTMwLDgg
QEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldENvbnRlbnRzU2l6ZSgpCiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIGludCB3ID0gbV9jb250ZW50c1NpemUud2lkdGgo
KTsKICAgICBpbnQgaCA9IG1fY29udGVudHNTaXplLmhlaWdodCgpOwotICAgIExPRyhGcmFtZXMs
ICIlcCAlQCBhdCB3ICVkIGggJWRcbiIsIGRvY3VtZW50VmlldygpLCBbKGlkKVtkb2N1bWVudFZp
ZXcoKSBjbGFzc10gY2xhc3NOYW1lXSwgdywgaCk7ICAgICAgICAgICAgCi0gICAgTlNTaXplIHRl
bXBTaXplID0geyBtYXgoMCwgdyksIG1heCgwLCBoKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0MjEz
MzE0Ci0gICAgW2RvY3VtZW50VmlldygpIHNldEZyYW1lU2l6ZTp0ZW1wU2l6ZV07CisgICAgTE9H
KEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9jdW1lbnRWaWV3KCksIFsoaWQpW2Rv
Y3VtZW50VmlldygpIGNsYXNzXSBjbGFzc05hbWVdLCB3LCBoKTsKKyAgICBbZG9jdW1lbnRWaWV3
KCkgc2V0RnJhbWVTaXplOk5TTWFrZVNpemUobWF4KDAsIHcpLCBtYXgoMCwgaCkpXTsKICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCkBAIC0xNDcsNyArMTQ2LDcgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdXBwcmVzc2VkKGJvb2wgcmVwYWludE9u
VW5zdXBwcmVzcykKIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxQb3NpdGlvbihj
b25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwotICAgIE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoMCwgc2Nyb2xsUG9pbnQueCgp
KSwgbWF4KDAsIHNjcm9sbFBvaW50LnkoKSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRv
IHdvcmsgYXJvdW5kIDQyMTMzMTQuCisgICAgTlNQb2ludCB0ZW1wUG9pbnQgPSBOU01ha2VQb2lu
dChtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luWF0sIHNjcm9sbFBvaW50LngoKSksIG1h
eCgwLCBzY3JvbGxQb2ludC55KCkpKTsKICAgICBbZG9jdW1lbnRWaWV3KCkgc2Nyb2xsUG9pbnQ6
dGVtcFBvaW50XTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQpAQCAtMjAyLDQg
KzIwMSwxMSBAQCBib29sIFNjcm9sbFZpZXc6OnBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdAog
ICAgIHJldHVybiAhW3BsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSB8fCAhW1twbGF0Zm9ybVdpZGdl
dCgpIHdpbmRvd10gaXNWaXNpYmxlXTsKIH0KIAordm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNl
dFNjcm9sbE9yaWdpblgoaW50IHgpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OworICAgIFtzY3JvbGxWaWV3KCkgc2V0U2Nyb2xsT3JpZ2luWDp4XTsKKyAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCA2YjE2NmEyLi41OWYwMDI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKQEAgLTc2Niw4ICs3NjYsOCBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRSb290Qm94RGVjb3Jh
dGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogCiAgICAgLy8gQ1NT
MiAxNC4yOgogICAgIC8vIFRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBib3ggZ2VuZXJhdGVkIGJ5IHRo
ZSByb290IGVsZW1lbnQgY292ZXJzIHRoZSBlbnRpcmUgY2FudmFzIGluY2x1ZGluZwotICAgIC8v
IGl0cyBtYXJnaW5zLgotICAgIGludCBieCA9IHR4IC0gbWFyZ2luTGVmdCgpOworICAgIC8vIGl0
cyBtYXJnaW5zLCBhbmQgaW5jbHVkaW5nIGl0cyBsZWZ0IGxheW91dCBvdmVyZmxvdy4KKyAgICBp
bnQgYnggPSB0eCAtIG1hcmdpbkxlZnQoKSArIHZpZXcoKS0+bGVmdExheW91dE92ZXJmbG93KCk7
CiAgICAgaW50IGJ5ID0gdHkgLSBtYXJnaW5Ub3AoKTsKICAgICBpbnQgYncgPSBtYXgodyArIG1h
cmdpbkxlZnQoKSArIG1hcmdpblJpZ2h0KCkgKyBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgp
LCBydyk7CiAgICAgaW50IGJoID0gbWF4KGggKyBtYXJnaW5Ub3AoKSArIG1hcmdpbkJvdHRvbSgp
ICsgYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSwgcmgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAppbmRleCA2YjRiNjVjLi45M2QyMTk2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApA
QCAtMTMxLDcgKzEzMSw4IEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKIAogICAgIC8vIFJl
c2V0IG92ZXJmbG93IGFuZCB0aGVuIHJlcGxhY2UgaXQgd2l0aCBkb2NXaWR0aCBhbmQgZG9jSGVp
Z2h0LgogICAgIG1fb3ZlcmZsb3cuY2xlYXIoKTsKLSAgICBhZGRMYXlvdXRPdmVyZmxvdyhJbnRS
ZWN0KDAsIDAsIGRvY1dpZHRoKCksIGRvY0hlaWdodCgpKSk7CisgICAgaW50IGxlZnRPdmVyZmxv
dyA9IGRvY0xlZnQoKTsKKyAgICBhZGRMYXlvdXRPdmVyZmxvdyhJbnRSZWN0KGxlZnRPdmVyZmxv
dywgMCwgZG9jV2lkdGgobGVmdE92ZXJmbG93KSwgZG9jSGVpZ2h0KCkpKTsKIAogICAgIEFTU0VS
VChsYXlvdXREZWx0YSgpID09IEludFNpemUoKSk7CiAgICAgQVNTRVJUKG1fbGF5b3V0U3RhdGVE
aXNhYmxlQ291bnQgPT0gMCk7CkBAIC02MzMsOSArNjM0LDE1IEBAIGludCBSZW5kZXJWaWV3Ojpk
b2NIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBoOwogfQogCi1pbnQgUmVuZGVyVmlldzo6ZG9j
V2lkdGgoKSBjb25zdAoraW50IFJlbmRlclZpZXc6OmRvY0xlZnQoKSBjb25zdAogewotICAgIGlu
dCB3ID0gcmlnaHRtb3N0UG9zaXRpb24oKTsKKyAgICAvLyBDbGlwIG91dCBsZWZ0IG92ZXJmbG93
IGluIExUUiBwYWdlLgorICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyAwIDogc3RkOjptaW4oMCwgbGVmdG1vc3RQb3NpdGlvbigpKTsKK30KKworaW50IFJlbmRl
clZpZXc6OmRvY1dpZHRoKGludCBsZWZ0T3ZlcmZsb3cpIGNvbnN0Cit7CisgICAgaW50IHcgPSBz
dHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyByaWdodG1vc3RQb3NpdGlvbigpIDog
d2lkdGgoKSAtIGxlZnRPdmVyZmxvdzsKIAogICAgIGZvciAoUmVuZGVyQm94KiBjID0gZmlyc3RD
aGlsZEJveCgpOyBjOyBjID0gYy0+bmV4dFNpYmxpbmdCb3goKSkgewogICAgICAgICBpbnQgZHcg
PSBjLT53aWR0aCgpICsgYy0+bWFyZ2luTGVmdCgpICsgYy0+bWFyZ2luUmlnaHQoKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuaAppbmRleCAwN2Y5MzNmLi5iMzJiMjFkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCkBAIC0xNzQsNyArMTc0LDggQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFJlcGFpbnQo
Y29uc3QgSW50UmVjdCYgcikgY29uc3Q7CiAgICAgICAgIAogICAgIGludCBkb2NIZWlnaHQoKSBj
b25zdDsKLSAgICBpbnQgZG9jV2lkdGgoKSBjb25zdDsKKyAgICBpbnQgZG9jTGVmdCgpIGNvbnN0
OworICAgIGludCBkb2NXaWR0aChpbnQpIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25z
IG1heSBvbmx5IGJlIGFjY2Vzc2VkIGJ5IExheW91dFN0YXRlTWFpbnRhaW5lci4KICAgICBib29s
IHB1c2hMYXlvdXRTdGF0ZShSZW5kZXJCb3gqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBvZmZz
ZXQsIGludCBwYWdlSGVpZ2h0ID0gMCwgYm9vbCBwYWdlSGVpZ2h0Q2hhbmdlZCA9IGZhbHNlLCBD
b2x1bW5JbmZvKiBjb2xJbmZvID0gMCkKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNGFjZDdlNS4uNDhhZGYzZSAxMDA2NDQKLS0t
IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxMC0xMS0xNyAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQtdG8t
bGVmdCBwYWdlcyBzaG91bGQgYmUgc2Nyb2xsYWJsZSB0byByZXZlYWwgbGVmdCBvdmVyZmxvdy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTU2CisK
KyAgICAgICAgU2V0IGFuZCBnZXQgdGhlIG9yaWdpbmFsIHgtYXhpcyBzY3JvbGwgcG9zaXRpb24g
YW5kIHJlc2V0IHNjcm9sbCBwb3NpdGlvbiBvbiBIT01FL0VORCBrZXkgcHJlc3MuCisgICAgICAg
IE1vZGlmeSBXZWJGcmFtZVZpZXcgdG8gc3VwcG9ydCBzZXR0aW5nIHRoZSBpbml0aWFsIGhvcml6
b250YWwgc2Nyb2xsZXIncyB0aHVtYiBwb3NpdGlvbiB0byB0aGUgcmlnaHQgZm9yCisgICAgICAg
IHBhZ2VzIHdpdGggYSBsZWZ0IG92ZXJmbG93LgorCisgICAgICAgICogV2ViVmlldy9XZWJEeW5h
bWljU2Nyb2xsQmFyc1ZpZXcubW06CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmll
dyByZWZyZXNoSW5pdGlhbFNjcm9sbGJhclBvc2l0aW9uXSk6CisgICAgICAgICgtW1dlYkR5bmFt
aWNTY3JvbGxCYXJzVmlldyB1cGRhdGVTY3JvbGxlcnNdKToKKyAgICAgICAgKC1bV2ViRHluYW1p
Y1Njcm9sbEJhcnNWaWV3IHJlZmxlY3RTY3JvbGxlZENsaXBWaWV3Ol0pOgorICAgICAgICAoLVtX
ZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgc2V0U2Nyb2xsT3JpZ2luWDpdKToKKyAgICAgICAgKC1b
V2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNjcm9sbE9yaWdpblhdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF9zY3JvbGxUb0Jl
Z2lubmluZ09mRG9jdW1lbnRdKToKKyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF9zY3JvbGxUb0Vu
ZE9mRG9jdW1lbnRdKToKKwogMjAxMC0xMS0xNiAgU3RlcGhhbmllIExld2lzICA8c2xld2lzQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0gYi9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCmluZGV4IDc0NDM5ZGQuLjU3
NGRlZGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFy
c1ZpZXcubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmll
dy5tbQpAQCAtNjIsNiArNjIsMTMgQEAgc3RydWN0IFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld1By
aXZhdGUgewogICAgIGJvb2wgYWx3YXlzSGlkZVZlcnRpY2FsU2Nyb2xsZXI7CiAgICAgYm9vbCBo
b3Jpem9udGFsU2Nyb2xsaW5nQWxsb3dlZEJ1dFNjcm9sbGVySGlkZGVuOwogICAgIGJvb2wgdmVy
dGljYWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRkZW47CisKKyAgICAvLyBzY3JvbGxP
cmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlIGFuZCBpcyB0aGUgbmVnYXRpdmUgb2YgbGVmdCBsYXlv
dXQgb3ZlcmZsb3cgdmFsdWUgZm9yIFJUTCBwYWdlLgorICAgIGludCBzY3JvbGxPcmlnaW5YOwor
CisgICAgLy8gRmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzY3JvbGxiYXIgdGh1bWIncyBpbml0
aWFsIHBvc2l0aW9uIG5lZWRzIHRvCisgICAgLy8gYmUgbWFudWFsbHkgc2V0LgorICAgIGJvb2wg
c2V0U2Nyb2xsYmFyVGh1bWJJbml0aWFsUG9zaXRpb247CiB9OwogCiBAaW1wbGVtZW50YXRpb24g
V2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3CkBAIC0xNDksNiArMTU2LDIzIEBAIHN0cnVjdCBXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXdQcml2YXRlIHsKICAgICByZXR1cm4gX3ByaXZhdGUtPnZlcnRp
Y2FsU2Nyb2xsaW5nQWxsb3dlZEJ1dFNjcm9sbGVySGlkZGVuIHx8IFtzZWxmIGhhc1ZlcnRpY2Fs
U2Nyb2xsZXJdOwogfQogCistICh2b2lkKXJlZnJlc2hJbml0aWFsU2Nyb2xsYmFyUG9zaXRpb24K
K3sKKyAgICBpZiAoX3ByaXZhdGUtPnNldFNjcm9sbGJhclRodW1iSW5pdGlhbFBvc2l0aW9uKSB7
CisgICAgICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKKyAg
ICAgICAgTlNSZWN0IGRvY3VtZW50UmVjdCA9IFtkb2N1bWVudFZpZXcgYm91bmRzXTsKKyAgICAg
ICAgCisgICAgICAgIC8vIElmIHNjcm9sbE9yaWdpblggaXMgbm9uLXplcm8gdGhhdCBtZWFucyB0
aGF0IHRoZXJlJ3MgYSBsZWZ0IG92ZXJmbG93IDw9PiB0aGlzIGlzIGFuIFJUTCBkb2N1bWVudCBh
bmQgdGh1cworICAgICAgICAvLyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiB0aGUgaG9yaXpvbnRh
bCBzY3JvbGxiYXIgdGh1bWIgc2hvdWxkIGJlIG9uIHRoZSByaWdodC4KKyAgICAgICAgLy8gRklY
TUU6IElmIGtub3dsZWRnZSBvZiBkb2N1bWVudCBkaXJlY3Rpb25hbGl0eSBpcyBldmVyIHByb3Bh
Z2F0ZWQgdG8gdGhlIHNjcm9sbCB2aWV3LCBpdCBwcm9iYWJseSBtYWtlcworICAgICAgICAvLyBt
b3JlIHNlbnNlIHRvIHVzZSB0aGUgZGlyZWN0aW9uYWxpdHkgZGlyZWN0bHkgaW4gdGhlIGJlbG93
IGlmIHN0YXRlbWVudCwgcmF0aGVyIHRoYW4gZG9pbmcgc28gaW5kaXJlY3RseQorICAgICAgICAv
LyB0aHJvdWdoIHNjcm9sbE9yaWdpblguCisgICAgICAgIGlmIChfcHJpdmF0ZS0+c2Nyb2xsT3Jp
Z2luWCAhPSAwKQorICAgICAgICAgICAgW2RvY3VtZW50VmlldyBzY3JvbGxQb2ludDpOU01ha2VQ
b2ludChOU01heFgoZG9jdW1lbnRSZWN0KSAtIE5TV2lkdGgoW3NlbGYgY29udGVudFZpZXdGcmFt
ZV0pLCAwKV07CisgICAgICAgIF9wcml2YXRlLT5zZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3Np
dGlvbiA9IGZhbHNlOworICAgIH0KK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3IChXZWJJbnRlcm5hbCkKQEAgLTMwMiw2ICszMjYsMTIgQEAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGNNYXhVcGRhdGVTY3JvbGxiYXJzUGFzcyA9IDI7CiAgICAgaWYg
KGhhc0hvcml6b250YWxTY3JvbGxlciAhPSBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXIpIHsKICAg
ICAgICAgX3ByaXZhdGUtPmluVXBkYXRlU2Nyb2xsZXJzID0gWUVTOwogICAgICAgICBbc2VsZiBz
ZXRIYXNIb3Jpem9udGFsU2Nyb2xsZXI6bmV3SGFzSG9yaXpvbnRhbFNjcm9sbGVyXTsKKyAgICAg
ICAgCisgICAgICAgIC8vIEZvciBSVEwgZG9jdW1lbnRzLCB3ZSBuZWVkIHRvIHNldCB0aGUgaW5p
dGlhbCBwb3NpdGlvbiBvZiB0aGUKKyAgICAgICAgLy8gaG9yaXpvbnRhbCBzY3JvbGxiYXIgdGh1
bWIgdG8gYmUgb24gdGhlIHJpZ2h0LgorICAgICAgICBpZiAobmV3SGFzSG9yaXpvbnRhbFNjcm9s
bGVyKQorICAgICAgICAgICAgX3ByaXZhdGUtPnNldFNjcm9sbGJhclRodW1iSW5pdGlhbFBvc2l0
aW9uID0gdHJ1ZTsKKyAgICAgICAgCiAgICAgICAgIF9wcml2YXRlLT5pblVwZGF0ZVNjcm9sbGVy
cyA9IE5POwogICAgICAgICBuZWVkc0xheW91dCA9IFlFUzsKICAgICB9CkBAIC0zNjQsNiArMzk0
LDExIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4VXBkYXRlU2Nyb2xsYmFyc1Bhc3MgPSAy
OwogICAgIH0KICNlbmRpZgogCisgICAgLy8gVGhlIGNhbGwgdG8gW05TVmlldyByZWZsZWN0U2Ny
b2xsZWRDbGlwVmlld10gc2V0cyB0aGUgc2Nyb2xsYmFyIHRodW1iCisgICAgLy8gcG9zaXRpb24g
dG8gMCAodGhlIGxlZnQpIHdoZW4gdGhlIHZpZXcgaXMgaW5pdGlhbGx5IGRpc3BsYXllZC4KKyAg
ICAvLyBUaGlzIGNhbGwgdXBkYXRlcyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBjb3JyZWN0bHkuCisg
ICAgW3NlbGYgcmVmcmVzaEluaXRpYWxTY3JvbGxiYXJQb3NpdGlvbl07CisKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpICYmIGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAg
ICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtzZWxmIGRvY3VtZW50Vmlld107CiAgICAgaWYgKFtk
b2N1bWVudFZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkgewpAQCAtNTI1
LDQgKzU2MCwyMiBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY01heFVwZGF0ZVNjcm9sbGJhcnNQ
YXNzID0gMjsKICAgICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRdOwogfQog
CistICh2b2lkKXNldFNjcm9sbE9yaWdpblg6KGludClzY3JvbGxPcmlnaW5YCit7CisgICAgX3By
aXZhdGUtPnNjcm9sbE9yaWdpblggPSBzY3JvbGxPcmlnaW5YOworICAgIAorICAgIGlkIGRvY1Zp
ZXcgPSBbc2VsZiBkb2N1bWVudFZpZXddOworICAgIGlmIChzY3JvbGxPcmlnaW5YICE9IFtkb2NW
aWV3IGJvdW5kc10ub3JpZ2luLngpIHsKKyAgICAgICAgLy8gIi1bc2VsZiBzY3JvbGxPcmlnaW5Y
XSIgaXMgZXF1YWwgdG8gdGhlIGxlZnQgbGF5b3V0IG92ZXJmbG93LgorICAgICAgICAvLyBNYWtl
IERvY3VtZW50IGJvdW5kcyBvcmlnaW4geCBjb29yZGluYXRlIGNvcnJlc3BvbmQgdG8gdGhlIGxl
ZnQgb3ZlcmZsb3cgc28gdGhlIGVudGlyZSBjYW52YXMgaXMgY292ZXJlZCBieSB0aGUgZG9jdW1l
bnQuCisgICAgICAgIFtkb2NWaWV3IHNldEJvdW5kc09yaWdpbjpOU01ha2VQb2ludCgtc2Nyb2xs
T3JpZ2luWCwgW2RvY1ZpZXcgYm91bmRzXS5vcmlnaW4ueSldOworICAgIH0KKworfQorCistIChp
bnQpc2Nyb2xsT3JpZ2luWAoreworICAgIHJldHVybiBfcHJpdmF0ZS0+c2Nyb2xsT3JpZ2luWDsK
K30KKwogQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5t
bSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KaW5kZXggMGRiMTJjMC4uNDBl
ZTBiMSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQorKysg
Yi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC01MzYsNiArNTM2LDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVzRnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkg
KmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2wKICAgICBpZiAoIVtzZWxmIF9pc1Njcm9sbGFibGVdKQog
ICAgICAgICByZXR1cm4gTk87CiAgICAgTlNQb2ludCBwb2ludCA9IFtbW3NlbGYgX3Njcm9sbFZp
ZXddIGRvY3VtZW50Vmlld10gZnJhbWVdLm9yaWdpbjsKKyAgICBwb2ludC54ICs9IFtbc2VsZiBf
c2Nyb2xsVmlld10gc2Nyb2xsT3JpZ2luWF07CiAgICAgcmV0dXJuIFtbc2VsZiBfY29udGVudFZp
ZXddIF9zY3JvbGxUbzomcG9pbnQgYW5pbWF0ZTpZRVNdOwogfQogCkBAIC01NDcsNiArNTQ4LDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVzRnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25h
cnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2wKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5TUmVj
dCBmcmFtZSA9IFtbW3NlbGYgX3Njcm9sbFZpZXddIGRvY3VtZW50Vmlld10gZnJhbWVdOwogICAg
IE5TUG9pbnQgcG9pbnQgPSBOU01ha2VQb2ludChmcmFtZS5vcmlnaW4ueCwgTlNNYXhZKGZyYW1l
KSk7CisgICAgcG9pbnQueCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhdOwog
ICAgIHJldHVybiBbW3NlbGYgX2NvbnRlbnRWaWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1hdGU6
WUVTXTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74197</attachid>
            <date>2010-11-17 19:36:52 -0800</date>
            <delta_ts>2010-11-18 06:45:51 -0800</delta_ts>
            <desc>snapshot</desc>
            <filename>23556.patch</filename>
            <type>text/plain</type>
            <size>38572</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjI0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTAtMTAtMjUgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0
LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZs
b3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1
NgorCisgICAgICAgIEZvciBSVEwgcGFnZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQg
aW5jbHVkZSBpdCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQu
IFVzZSB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgd2hlbiBzY3JvbGwgYW5kIHBhaW50CisgICAg
ICAgIHRoZSBwYWdlLiBCZWhhdmlvciBvbiBMVFIgcGFnZSBzaG91bGQgYmUgdW50b3VjaGVkIHNp
bmNlIGxlZnQgbGF5b3V0IAorICAgICAgICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBh
Z2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwuaHRtbAorCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjphZGp1c3RWaWV3U2l6ZSk6IFNhdmUgbmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQgb3ZlcmZsb3cg
YXMgc2Nyb2xsIFggb3JpZ2luLiBBbmQgaW5jbHVkZXMgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgaW50
byBkb2N1bWVudCBzaXplLgorICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaDog
QWRkIG1ldGhvZHMgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgc2Nyb2xsIFggb3JpZ2luLgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Vmlldzo6U2Nyb2xsVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjptYXhpbXVt
U2Nyb2xsUG9zaXRpb24pOiBNaW51cyBzY3JvbGwgWCBvcmlnaW4gZnJvbSBtYXhpbXVtIGhvcml6
b250YWwgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bWlu
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmFkanVz
dFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFNjcm9s
bFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJh
cnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxW
aWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3Jv
bGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNj
cm9sbE9yaWdpblgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludFJvb3RCb3hEZWNvcmF0aW9ucyk6IEluY2x1ZGUg
bGVmdCBsYXlvdXQgb3ZlcmZsb3cgaW50byBjYW52YXMgc2l6ZS4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpsYXlvdXQp
OiBTYXZlIGxlZnQgbGF5b3V0IG92ZXJmbG93LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmll
dzo6ZG9jTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpkb2NXaWR0aCk6IElu
Y2x1ZGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgaW50byBkb2Mgd2lkdGggZm9yIFJUTCBwYWdlLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisKIDIwMTAtMTEtMTcgIEFuZHJlYXMg
S2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDcyMjQ5KQor
KysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0NSw3ICs0
NDUsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplKCkKICAgICBpZiAoIXJvb3Qp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHNldENvbnRlbnRzU2l6ZShJbnRTaXplKHJvb3QtPnJp
Z2h0TGF5b3V0T3ZlcmZsb3coKSwgcm9vdC0+Ym90dG9tTGF5b3V0T3ZlcmZsb3coKSkpOworICAg
IFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpblgoLXJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygp
KTsKKyAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3co
KSAtIHJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpLCByb290LT5ib3R0b21MYXlvdXRPdmVyZmxv
dygpKTsKKyAgICAvLyBUYWtlIGNhcmUgb2YgdGhlIGNhc2Ugd2hlbiBjb250ZW50cyByZW1haW4g
YnV0IHRoZSBSZW5kZXJWaWV3J3MgZGlyZWN0aW9uIGNoYW5nZS4KKyAgICAvLyBJbiB3aGljaCBj
YXNlLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzY3JvbGwgYmFyIHBvc2l0aW9uLCBmb3IgZXhhbXBsZSwg
ZnJvbSBsZWZ0bW9zdAorICAgIC8vIHJpZ2h0bW9zdCB3aGVuIGRpcmVjdGlvbiBjaGFuZ2VzIGZy
b20gbGVmdC10by1yaWdodCB0byByaWdodC10by1sZWZ0LgorICAgIGlmIChzaXplID09IGNvbnRl
bnRzU2l6ZSgpICYmIHJvb3QtPmRpcmVjdGlvbkNoYW5nZWQoKSkKKyAgICAgICAgU2Nyb2xsVmll
dzo6dXBkYXRlU2Nyb2xsYmFycygpOworICAgIHJvb3QtPnJlc2V0RGlyZWN0aW9uQ2hhbmdlZCgp
OworICAgIHNldENvbnRlbnRzU2l6ZShzaXplKTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OmFwcGx5
T3ZlcmZsb3dUb1ZpZXdwb3J0KFJlbmRlck9iamVjdCogbywgU2Nyb2xsYmFyTW9kZSYgaE1vZGUs
IFNjcm9sbGJhck1vZGUmIHZNb2RlKQpJbmRleDogV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJh
bWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVWaWV3
LmgJKHJldmlzaW9uIDcyMjQ5KQorKysgV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVWaWV3
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
LSAodm9pZClzZXRTY3JvbGxpbmdNb2RlczooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSloTW9kZSB2
ZXJ0aWNhbDooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSl2TW9kZSBhbmRMb2NrOihCT09MKWxvY2s7
CiAtICh2b2lkKXNjcm9sbGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKiloTW9kZSB2
ZXJ0aWNhbDooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSopdk1vZGU7CiAtICh2b2lkKXNldFNjcm9s
bEJhcnNTdXBwcmVzc2VkOihCT09MKXN1cHByZXNzZWQgcmVwYWludE9uVW5zdXBwcmVzczooQk9P
TClyZXBhaW50OworLSAodm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Nyb2xsT3JpZ2luWDsK
Ky0gKGludClzY3JvbGxPcmlnaW5YOwogQGVuZAogCiBAcHJvdG9jb2wgV2ViQ29yZUZyYW1lVmll
dwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCShyZXZpc2lvbiA3MjI0OSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcg
QEAgU2Nyb2xsVmlldzo6U2Nyb2xsVmlldygpCiAgICAgLCBtX2RyYXdQYW5TY3JvbGxJY29uKGZh
bHNlKQogICAgICwgbV91c2VGaXhlZExheW91dChmYWxzZSkKICAgICAsIG1fcGFpbnRzRW50aXJl
Q29udGVudHMoZmFsc2UpCisgICAgLCBtX3Njcm9sbE9yaWdpblgoMCkKIHsKICAgICBwbGF0Zm9y
bUluaXQoKTsKIH0KQEAgLTI3Miw5ICsyNzMsMjIgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRDb250
ZW50c1NpemUoY29uc3QgSQogCiBJbnRQb2ludCBTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsUG9z
aXRpb24oKSBjb25zdAogewotICAgIEludFNpemUgbWF4aW11bU9mZnNldCA9IGNvbnRlbnRzU2l6
ZSgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOworICAgIEludFBvaW50IG1heGltdW1P
ZmZzZXQoY29udGVudHNXaWR0aCgpIC0gdmlzaWJsZVdpZHRoKCkgLSBtX3Njcm9sbE9yaWdpblgs
IGNvbnRlbnRzSGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkpOwogICAgIG1heGltdW1PZmZzZXQu
Y2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgIHJldHVybiBJbnRQb2ludChtYXhpbXVtT2Zmc2V0
LndpZHRoKCksIG1heGltdW1PZmZzZXQuaGVpZ2h0KCkpOworICAgIHJldHVybiBtYXhpbXVtT2Zm
c2V0OworfQorCitJbnRQb2ludCBTY3JvbGxWaWV3OjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdAoreworICAgIHJldHVybiBJbnRQb2ludCgtbV9zY3JvbGxPcmlnaW5YLCAwKTsKK30KKwor
SW50UG9pbnQgU2Nyb2xsVmlldzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShjb25z
dCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpIGNvbnN0Cit7CisgICAgSW50UG9pbnQgbmV3U2Nyb2xs
UG9zaXRpb24gPSBzY3JvbGxQb2ludC5zaHJ1bmtUbyhtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7
CisgICAgbmV3U2Nyb2xsUG9zaXRpb24gPSBuZXdTY3JvbGxQb3NpdGlvbi5leHBhbmRlZFRvKG1p
bmltdW1TY3JvbGxQb3NpdGlvbigpKTsKKyAgICBuZXdTY3JvbGxQb3NpdGlvbi5jbGFtcE5lZ2F0
aXZlVG9aZXJvKCk7CisgICAgcmV0dXJuIG5ld1Njcm9sbFBvc2l0aW9uOwogfQogCiBpbnQgU2Ny
b2xsVmlldzo6c2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29u
c3QKQEAgLTI5Nyw3ICszMTEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZChTY3Jv
bGxiYXIqCiAgICAgSW50U2l6ZSBuZXdPZmZzZXQgPSBtX3Njcm9sbE9mZnNldDsKICAgICBpZiAo
c2Nyb2xsYmFyKSB7CiAgICAgICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAgICAgIG5ld09mZnNldC5zZXRXaWR0aChzY3JvbGxi
YXItPnZhbHVlKCkpOworICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKHNjcm9sbGJhci0+
dmFsdWUoKSAtIG1fc2Nyb2xsT3JpZ2luWCk7CiAgICAgICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgICAgIG5ld09mZnNl
dC5zZXRIZWlnaHQoc2Nyb2xsYmFyLT52YWx1ZSgpKTsKICAgICB9CkBAIC0zNDAsOCArMzU0LDcg
QEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdAogICAgIH0KICNlbmRp
ZgogCi0gICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb2ludC5zaHJ1bmtU
byhtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7Ci0gICAgbmV3U2Nyb2xsUG9zaXRpb24uY2xhbXBO
ZWdhdGl2ZVRvWmVybygpOworICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gYWRqdXN0
U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShzY3JvbGxQb2ludCk7CiAKICAgICBpZiAobmV3U2Ny
b2xsUG9zaXRpb24gPT0gc2Nyb2xsUG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDYy
LDEwICs0NzUsMTAgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2luVXBkYXRlU2Nyb2xsYmFycyA9IHRydWU7Ci0gICAg
SW50U2l6ZSBtYXhTY3JvbGxQb3NpdGlvbihjb250ZW50c1dpZHRoKCkgLSB2aXNpYmxlV2lkdGgo
KSwgY29udGVudHNIZWlnaHQoKSAtIHZpc2libGVIZWlnaHQoKSk7Ci0gICAgSW50U2l6ZSBzY3Jv
bGwgPSBkZXNpcmVkT2Zmc2V0LnNocnVua1RvKG1heFNjcm9sbFBvc2l0aW9uKTsKLSAgICBzY3Jv
bGwuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotIAorCisgICAgSW50UG9pbnQgc2Nyb2xsUG9pbnQg
PSBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKEludFBvaW50KGRlc2lyZWRPZmZzZXQu
d2lkdGgoKSwgZGVzaXJlZE9mZnNldC5oZWlnaHQoKSkpOworICAgIEludFNpemUgc2Nyb2xsKHNj
cm9sbFBvaW50LngoKSwgc2Nyb2xsUG9pbnQueSgpKTsKKwogICAgIGlmIChtX2hvcml6b250YWxT
Y3JvbGxiYXIpIHsKICAgICAgICAgaW50IGNsaWVudFdpZHRoID0gdmlzaWJsZVdpZHRoKCk7CiAg
ICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0RW5hYmxlZChjb250ZW50c1dpZHRoKCkg
PiBjbGllbnRXaWR0aCk7CkBAIC00ODMsNyArNDk2LDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxiYXJzKGNvbnN0IAogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5z
ZXRTdXBwcmVzc0ludmFsaWRhdGlvbih0cnVlKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xs
YmFyLT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsK
ICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdpZHRo
LCBjb250ZW50c1dpZHRoKCkpOwotICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFZh
bHVlKHNjcm9sbC53aWR0aCgpLCBTY3JvbGxiYXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7Cisg
ICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRoKCkgKyBt
X3Njcm9sbE9yaWdpblgsIFNjcm9sbGJhcjo6Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsKICAgICAg
ICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX2hvcml6b250YWxT
Y3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsgCiAgICAgfSAKQEAgLTEw
MDUsNiArMTAxOCwyMiBAQCB2b2lkIFNjcm9sbFZpZXc6OnJlbW92ZVBhblNjcm9sbEljb24oKQog
ICAgIGhvc3RXaW5kb3coKS0+aW52YWxpZGF0ZUNvbnRlbnRzQW5kV2luZG93KEludFJlY3QobV9w
YW5TY3JvbGxJY29uUG9pbnQsIEludFNpemUocGFuSWNvblNpemVMZW5ndGgsIHBhbkljb25TaXpl
TGVuZ3RoKSksIHRydWUgLyppbW1lZGlhdGUqLyk7CiB9CiAKKwordm9pZCBTY3JvbGxWaWV3Ojpz
ZXRTY3JvbGxPcmlnaW5YKGludCB4KQoreworICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQorICAg
ICAgICBwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoeCk7CisgICAgZWxzZQorICAgICAgICBtX3Nj
cm9sbE9yaWdpblggPSB4OworfQorCit2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMo
KQoreworICAgIGlmICghcGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgdXBkYXRlU2Nyb2xsYmFy
cyhzY3JvbGxPZmZzZXQoKSk7CisgICAgLy8gRklYTUU6IG5lZWQgY29ycmVzcG9uZGluZyBmdW5j
dGlvbmFsaXR5IGZyb20gcGxhdGZvcm1XaWRnZXQuCit9CisKICNpZiAhUExBVEZPUk0oV1gpICYm
ICFQTEFURk9STShHVEspICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEVGTCkKIAogdm9p
ZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUluaXQoKQpAQCAtMTAzNSw2ICsxMDY0LDEwIEBAIHZvaWQg
U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJzU3UKIHsKIH0KIAordm9pZCBTY3JvbGxW
aWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50KQoreworfQorCiAjZW5kaWYKIAogI2lm
ICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShXWCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
CShyZXZpc2lvbiA3MjI0OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDkgQEAgcHVibGljOgogICAgIEludFBvaW50IHNjcm9s
bFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24o
KTsgfQogICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNv
bnRlbnRSZWN0KCkubG9jYXRpb24oKSAtIEludFBvaW50KCk7IH0gLy8gR2V0cyB0aGUgc2Nyb2xs
ZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6ZS4gQ29udmVuaWVudCBmb3IgYWRkaW5nIHRvIG90aGVy
IHNpemVzLgogICAgIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OyAvLyBU
aGUgbWF4aW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCisgICAgSW50UG9pbnQg
bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7IC8vIFRoZSBtaW5pbXVtIHBvc2l0aW9uIHdl
IGNhbiBiZSBzY3JvbGxlZCB0by4KKyAgICAvLyBBZGp1c3QgdGhlIHBhc3MgaW4gc2Nyb2xsIHBv
c2l0aW9uIHdpdGhpbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBwb3NpdGlvbnMuCisgICAgSW50
UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShjb25zdCBJbnRQb2ludCYpIGNv
bnN0OyAKICAgICBpbnQgc2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCku
eCgpOyB9CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVybiBzY3JvbGxQb3NpdGlvbigp
LnkoKTsgfQogICAgIApAQCAtMjc0LDYgKzI3Nyw5IEBAIHByb3RlY3RlZDoKICAgICAvLyBTY3Jv
bGwgdGhlIGNvbnRlbnQgYnkgaW52YWxpZGF0aW5nIGV2ZXJ5dGhpbmcuCiAgICAgdmlydHVhbCB2
b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCk7CiAK
KyAgICB2b2lkIHNldFNjcm9sbE9yaWdpblgoaW50KTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbGJh
cnMoKTsKKwogcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3Jv
bGxiYXI7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKQEAgLTMw
OCw2ICszMTQsMTEgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wYWludHNFbnRpcmVDb250ZW50
czsKIAorICAgIC8vIG1fc2Nyb2xsT3JpZ2luWCBpcyAwIGZvciBMVFIgcGFnZS4gQW5kIGl0IGlz
IG5lZ2F0aXZlIG9mIGxlZnQgbGF5b3V0CisgICAgLy8gb3ZlcmZsb3cgZm9yIFJUTCBwYWdlLiBJ
dCBpcyBtYWlubHkgdXNlZCB0byBzZXQgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyCisgICAgLy8g
cG9zaXRpb24gZm9yIFJUTCBwYWdlLgorICAgIGludCBtX3Njcm9sbE9yaWdpblg7CisKICAgICB2
b2lkIGluaXQoKTsKICAgICB2b2lkIGRlc3Ryb3koKTsKIApAQCAtMzM1LDYgKzM0Niw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdXBwcmVzc2VkKGJvb2wgcmVw
YWludE9uVW5zdXBwcmVzcyk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlcGFpbnRDb250ZW50UmVjdGFu
Z2xlKGNvbnN0IEludFJlY3QmLCBib29sIG5vdyk7CiAgICAgYm9vbCBwbGF0Zm9ybUlzT2Zmc2Ny
ZWVuKCkgY29uc3Q7CisgICAKKyAgICB2b2lkIHBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luWChpbnQp
OwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkIF9fT0JKQ19fCiBwdWJsaWM6CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0JKHJldmlzaW9uIDcyMjQ5KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTMwLDkgKzEzMCw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRDb250ZW50c1NpemUK
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgaW50IHcgPSBtX2NvbnRlbnRz
U2l6ZS53aWR0aCgpOwogICAgIGludCBoID0gbV9jb250ZW50c1NpemUuaGVpZ2h0KCk7Ci0gICAg
TE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9jdW1lbnRWaWV3KCksIFsoaWQp
W2RvY3VtZW50VmlldygpIGNsYXNzXSBjbGFzc05hbWVdLCB3LCBoKTsgICAgICAgICAgICAKLSAg
ICBOU1NpemUgdGVtcFNpemUgPSB7IG1heCgwLCB3KSwgbWF4KDAsIGgpIH07IC8vIHdvcmthcm91
bmQgZm9yIDQyMTMzMTQKLSAgICBbZG9jdW1lbnRWaWV3KCkgc2V0RnJhbWVTaXplOnRlbXBTaXpl
XTsKKyAgICBMT0coRnJhbWVzLCAiJXAgJUAgYXQgdyAlZCBoICVkXG4iLCBkb2N1bWVudFZpZXco
KSwgWyhpZClbZG9jdW1lbnRWaWV3KCkgY2xhc3NdIGNsYXNzTmFtZV0sIHcsIGgpOworICAgIFtk
b2N1bWVudFZpZXcoKSBzZXRGcmFtZVNpemU6TlNNYWtlU2l6ZShtYXgoMCwgdyksIG1heCgwLCBo
KSldOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKQEAgLTE0Nyw3ICsxNDYs
NyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1CiB2b2lkIFNjcm9s
bFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBv
aW50KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBOU1BvaW50IHRl
bXBQb2ludCA9IHsgbWF4KDAsIHNjcm9sbFBvaW50LngoKSksIG1heCgwLCBzY3JvbGxQb2ludC55
KCkpIH07IC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0Lgor
ICAgIE5TUG9pbnQgdGVtcFBvaW50ID0gTlNNYWtlUG9pbnQobWF4KC1bc2Nyb2xsVmlldygpIHNj
cm9sbE9yaWdpblhdLCBzY3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSk7
CiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07CiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KQEAgLTIwMiw0ICsyMDEsMTEgQEAgYm9vbCBTY3JvbGxW
aWV3OjpwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgYwogICAgIHJldHVybiAhW3BsYXRmb3JtV2lkZ2V0
KCkgd2luZG93XSB8fCAhW1twbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gaXNWaXNpYmxlXTsKIH0K
IAordm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50IHgpCit7Cisg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIFtzY3JvbGxWaWV3KCkgc2V0U2Ny
b2xsT3JpZ2luWDp4XTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9u
IDcyMjQ5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEyLDYgKzMxMiw4IEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmYKICAgICAgICAgUmVuZGVyVmlldyogdmlld1JlbmRlcmVyID0gdmlldygpOwogICAgICAg
ICBSZW5kZXJTdHlsZSogdmlld1N0eWxlID0gdmlld1JlbmRlcmVyLT5zdHlsZSgpOwogICAgICAg
ICBpZiAoaXNSb290UmVuZGVyZXIgfHwgIWRvY3VtZW50KCktPmRpcmVjdGlvblNldE9uRG9jdW1l
bnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIGlmICh2aWV3U3R5bGUtPmRpcmVjdGlvbigpICE9
IHN0eWxlKCktPmRpcmVjdGlvbigpKQorICAgICAgICAgICAgICAgIHZpZXdSZW5kZXJlci0+c2V0
RGlyZWN0aW9uQ2hhbmdlZCgpOwogICAgICAgICAgICAgdmlld1N0eWxlLT5zZXREaXJlY3Rpb24o
c3R5bGUoKS0+ZGlyZWN0aW9uKCkpOwogICAgICAgICAgICAgaWYgKGlzQm9keVJlbmRlcmVyKQog
ICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigp
LT5zdHlsZSgpLT5zZXREaXJlY3Rpb24oc3R5bGUoKS0+ZGlyZWN0aW9uKCkpOwpAQCAtNzY2LDgg
Kzc2OCw4IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludFJvb3RCb3hEZWNvcmF0aW9ucygKIAogICAg
IC8vIENTUzIgMTQuMjoKICAgICAvLyBUaGUgYmFja2dyb3VuZCBvZiB0aGUgYm94IGdlbmVyYXRl
ZCBieSB0aGUgcm9vdCBlbGVtZW50IGNvdmVycyB0aGUgZW50aXJlIGNhbnZhcyBpbmNsdWRpbmcK
LSAgICAvLyBpdHMgbWFyZ2lucy4KLSAgICBpbnQgYnggPSB0eCAtIG1hcmdpbkxlZnQoKTsKKyAg
ICAvLyBpdHMgbWFyZ2lucywgYW5kIGluY2x1ZGluZyBpdHMgbGVmdCBsYXlvdXQgb3ZlcmZsb3cu
CisgICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0KCkgKyB2aWV3KCktPmxlZnRMYXlvdXRPdmVy
ZmxvdygpOwogICAgIGludCBieSA9IHR5IC0gbWFyZ2luVG9wKCk7CiAgICAgaW50IGJ3ID0gbWF4
KHcgKyBtYXJnaW5MZWZ0KCkgKyBtYXJnaW5SaWdodCgpICsgYm9yZGVyTGVmdCgpICsgYm9yZGVy
UmlnaHQoKSwgcncpOwogICAgIGludCBiaCA9IG1heChoICsgbWFyZ2luVG9wKCkgKyBtYXJnaW5C
b3R0b20oKSArIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCksIHJoKTsKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiA3MjI0OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDggQEAgdm9pZCBS
ZW5kZXJWaWV3OjpsYXlvdXQoKQogCiAgICAgLy8gUmVzZXQgb3ZlcmZsb3cgYW5kIHRoZW4gcmVw
bGFjZSBpdCB3aXRoIGRvY1dpZHRoIGFuZCBkb2NIZWlnaHQuCiAgICAgbV9vdmVyZmxvdy5jbGVh
cigpOwotICAgIGFkZExheW91dE92ZXJmbG93KEludFJlY3QoMCwgMCwgZG9jV2lkdGgoKSwgZG9j
SGVpZ2h0KCkpKTsKKyAgICBpbnQgbGVmdE92ZXJmbG93ID0gZG9jTGVmdCgpOworICAgIGFkZExh
eW91dE92ZXJmbG93KEludFJlY3QobGVmdE92ZXJmbG93LCAwLCBkb2NXaWR0aChsZWZ0T3ZlcmZs
b3cpLCBkb2NIZWlnaHQoKSkpOwogCiAgICAgQVNTRVJUKGxheW91dERlbHRhKCkgPT0gSW50U2l6
ZSgpKTsKICAgICBBU1NFUlQobV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCA9PSAwKTsKQEAgLTYz
Myw5ICs2MzQsMTUgQEAgaW50IFJlbmRlclZpZXc6OmRvY0hlaWdodCgpIGNvbnN0CiAgICAgcmV0
dXJuIGg7CiB9CiAKLWludCBSZW5kZXJWaWV3Ojpkb2NXaWR0aCgpIGNvbnN0CitpbnQgUmVuZGVy
Vmlldzo6ZG9jTGVmdCgpIGNvbnN0CiB7Ci0gICAgaW50IHcgPSByaWdodG1vc3RQb3NpdGlvbigp
OworICAgIC8vIENsaXAgb3V0IGxlZnQgb3ZlcmZsb3cgaW4gTFRSIHBhZ2UuCisgICAgcmV0dXJu
IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IDAgOiBzdGQ6Om1pbigwLCBsZWZ0
bW9zdFBvc2l0aW9uKCkpOworfQorCitpbnQgUmVuZGVyVmlldzo6ZG9jV2lkdGgoaW50IGxlZnRP
dmVyZmxvdykgY29uc3QKK3sKKyAgICBpbnQgdyA9IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSA/IHJpZ2h0bW9zdFBvc2l0aW9uKCkgOiB3aWR0aCgpIC0gbGVmdE92ZXJmbG93Owog
CiAgICAgZm9yIChSZW5kZXJCb3gqIGMgPSBmaXJzdENoaWxkQm94KCk7IGM7IGMgPSBjLT5uZXh0
U2libGluZ0JveCgpKSB7CiAgICAgICAgIGludCBkdyA9IGMtPndpZHRoKCkgKyBjLT5tYXJnaW5M
ZWZ0KCkgKyBjLT5tYXJnaW5SaWdodCgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkocmV2
aXNpb24gNzIyNDkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MSw2ICsxNjEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTW92ZU9uc2Ny
ZWVuKCk7CiAgICAgdm9pZCB3aWxsTW92ZU9mZnNjcmVlbigpOwogCisgICAgdm9pZCBzZXREaXJl
Y3Rpb25DaGFuZ2VkKCkge21fZGlyZWN0aW9uQ2hhbmdlZCA9IHRydWU7fQorICAgIGJvb2wgZGly
ZWN0aW9uQ2hhbmdlZCgpIHtyZXR1cm4gbV9kaXJlY3Rpb25DaGFuZ2VkO30KKyAgICB2b2lkIHJl
c2V0RGlyZWN0aW9uQ2hhbmdlZCgpIHttX2RpcmVjdGlvbkNoYW5nZWQgPSBmYWxzZTt9CisKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
KiBjb21wb3NpdG9yKCk7CiAgICAgYm9vbCB1c2VzQ29tcG9zaXRpbmcoKSBjb25zdDsKQEAgLTE3
NCw3ICsxNzgsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVwYWludChjb25zdCBJbnRS
ZWN0JiByKSBjb25zdDsKICAgICAgICAgCiAgICAgaW50IGRvY0hlaWdodCgpIGNvbnN0OwotICAg
IGludCBkb2NXaWR0aCgpIGNvbnN0OworICAgIGludCBkb2NMZWZ0KCkgY29uc3Q7CisgICAgaW50
IGRvY1dpZHRoKGludCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgbWF5IG9ubHkg
YmUgYWNjZXNzZWQgYnkgTGF5b3V0U3RhdGVNYWludGFpbmVyLgogICAgIGJvb2wgcHVzaExheW91
dFN0YXRlKFJlbmRlckJveCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIG9mZnNldCwgaW50IHBh
Z2VIZWlnaHQgPSAwLCBib29sIHBhZ2VIZWlnaHRDaGFuZ2VkID0gZmFsc2UsIENvbHVtbkluZm8q
IGNvbEluZm8gPSAwKQpAQCAtMjM1LDYgKzI0MCw3IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIE93blB0cjxSZW5kZXJMYXllckNvbXBvc2l0b3I+IG1f
Y29tcG9zaXRvcjsKICNlbmRpZgorICAgIGJvb2wgbV9kaXJlY3Rpb25DaGFuZ2VkOwogfTsKIAog
aW5saW5lIFJlbmRlclZpZXcqIHRvUmVuZGVyVmlldyhSZW5kZXJPYmplY3QqIG9iamVjdCkKSW5k
ZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA3MjI0OSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMTEtMTcgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJpZ2h0LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQg
b3ZlcmZsb3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU1NgorCisgICAgICAgIFNldCBhbmQgZ2V0IHRoZSBvcmlnaW5hbCB4LWF4aXMgc2Nyb2xs
IHBvc2l0aW9uIGFuZCByZXNldCBzY3JvbGwgcG9zaXRpb24gb24gSE9NRS9FTkQga2V5IHByZXNz
LgorICAgICAgICBNb2RpZnkgV2ViRnJhbWVWaWV3IHRvIHN1cHBvcnQgc2V0dGluZyB0aGUgaW5p
dGlhbCBob3Jpem9udGFsIHNjcm9sbGVyJ3MgdGh1bWIgcG9zaXRpb24gdG8gdGhlIHJpZ2h0IGZv
cgorICAgICAgICBwYWdlcyB3aXRoIGEgbGVmdCBvdmVyZmxvdy4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tOgorICAgICAgICAoLVtXZWJEeW5hbWljU2Ny
b2xsQmFyc1ZpZXcgcmVmcmVzaEluaXRpYWxTY3JvbGxiYXJQb3NpdGlvbl0pOgorICAgICAgICAo
LVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgdXBkYXRlU2Nyb2xsZXJzXSk6CisgICAgICAgICgt
W1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyByZWZsZWN0U2Nyb2xsZWRDbGlwVmlldzpdKToKKyAg
ICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNldFNjcm9sbE9yaWdpblg6XSk6Cisg
ICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBzY3JvbGxPcmlnaW5YXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBf
c2Nyb2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBf
c2Nyb2xsVG9FbmRPZkRvY3VtZW50XSk6CisKIDIwMTAtMTEtMTYgIFN0ZXBoYW5pZSBMZXdpcyAg
PHNsZXdpc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0J
KHJldmlzaW9uIDcyMjQ5KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxC
YXJzVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTMgQEAgc3RydWN0IFdlYkR5
bmFtaWNTY3JvbGxCYXJzVmlld1ByaXZhdGUgewogICAgIGJvb2wgYWx3YXlzSGlkZVZlcnRpY2Fs
U2Nyb2xsZXI7CiAgICAgYm9vbCBob3Jpem9udGFsU2Nyb2xsaW5nQWxsb3dlZEJ1dFNjcm9sbGVy
SGlkZGVuOwogICAgIGJvb2wgdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRk
ZW47CisKKyAgICAvLyBzY3JvbGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlIGFuZCBpcyB0aGUg
bmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgdmFsdWUgZm9yIFJUTCBwYWdlLgorICAg
IGludCBzY3JvbGxPcmlnaW5YOworCisgICAgLy8gRmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBz
Y3JvbGxiYXIgdGh1bWIncyBpbml0aWFsIHBvc2l0aW9uIG5lZWRzIHRvCisgICAgLy8gYmUgbWFu
dWFsbHkgc2V0LgorICAgIGJvb2wgc2V0U2Nyb2xsYmFyVGh1bWJJbml0aWFsUG9zaXRpb247CiB9
OwogCiBAaW1wbGVtZW50YXRpb24gV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3CkBAIC0xNDksNiAr
MTU2LDIzIEBAIC0gKEJPT0wpdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkCiAgICAgcmV0dXJuIF9w
cml2YXRlLT52ZXJ0aWNhbFNjcm9sbGluZ0FsbG93ZWRCdXRTY3JvbGxlckhpZGRlbiB8fCBbc2Vs
ZiBoYXNWZXJ0aWNhbFNjcm9sbGVyXTsKIH0KIAorLSAodm9pZClyZWZyZXNoSW5pdGlhbFNjcm9s
bGJhclBvc2l0aW9uCit7CisgICAgaWYgKF9wcml2YXRlLT5zZXRTY3JvbGxiYXJUaHVtYkluaXRp
YWxQb3NpdGlvbikgeworICAgICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtzZWxmIGRvY3Vt
ZW50Vmlld107CisgICAgICAgIE5TUmVjdCBkb2N1bWVudFJlY3QgPSBbZG9jdW1lbnRWaWV3IGJv
dW5kc107CisgICAgICAgIAorICAgICAgICAvLyBJZiBzY3JvbGxPcmlnaW5YIGlzIG5vbi16ZXJv
IHRoYXQgbWVhbnMgdGhhdCB0aGVyZSdzIGEgbGVmdCBvdmVyZmxvdyA8PT4gdGhpcyBpcyBhbiBS
VEwgZG9jdW1lbnQgYW5kIHRodXMKKyAgICAgICAgLy8gdGhlIGluaXRpYWwgcG9zaXRpb24gb2Yg
dGhlIGhvcml6b250YWwgc2Nyb2xsYmFyIHRodW1iIHNob3VsZCBiZSBvbiB0aGUgcmlnaHQuCisg
ICAgICAgIC8vIEZJWE1FOiBJZiBrbm93bGVkZ2Ugb2YgZG9jdW1lbnQgZGlyZWN0aW9uYWxpdHkg
aXMgZXZlciBwcm9wYWdhdGVkIHRvIHRoZSBzY3JvbGwgdmlldywgaXQgcHJvYmFibHkgbWFrZXMK
KyAgICAgICAgLy8gbW9yZSBzZW5zZSB0byB1c2UgdGhlIGRpcmVjdGlvbmFsaXR5IGRpcmVjdGx5
IGluIHRoZSBiZWxvdyBpZiBzdGF0ZW1lbnQsIHJhdGhlciB0aGFuIGRvaW5nIHNvIGluZGlyZWN0
bHkKKyAgICAgICAgLy8gdGhyb3VnaCBzY3JvbGxPcmlnaW5YLgorICAgICAgICBpZiAoX3ByaXZh
dGUtPnNjcm9sbE9yaWdpblggIT0gMCkKKyAgICAgICAgICAgIFtkb2N1bWVudFZpZXcgc2Nyb2xs
UG9pbnQ6TlNNYWtlUG9pbnQoTlNNYXhYKGRvY3VtZW50UmVjdCkgLSBOU1dpZHRoKFtzZWxmIGNv
bnRlbnRWaWV3RnJhbWVdKSwgMCldOworICAgICAgICBfcHJpdmF0ZS0+c2V0U2Nyb2xsYmFyVGh1
bWJJbml0aWFsUG9zaXRpb24gPSBmYWxzZTsKKyAgICB9Cit9CisKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAoV2ViSW50ZXJuYWwpCkBAIC0zMDIsNiAr
MzI2LDEyIEBAIC0gKHZvaWQpdXBkYXRlU2Nyb2xsZXJzCiAgICAgaWYgKGhhc0hvcml6b250YWxT
Y3JvbGxlciAhPSBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXIpIHsKICAgICAgICAgX3ByaXZhdGUt
PmluVXBkYXRlU2Nyb2xsZXJzID0gWUVTOwogICAgICAgICBbc2VsZiBzZXRIYXNIb3Jpem9udGFs
U2Nyb2xsZXI6bmV3SGFzSG9yaXpvbnRhbFNjcm9sbGVyXTsKKyAgICAgICAgCisgICAgICAgIC8v
IEZvciBSVEwgZG9jdW1lbnRzLCB3ZSBuZWVkIHRvIHNldCB0aGUgaW5pdGlhbCBwb3NpdGlvbiBv
ZiB0aGUKKyAgICAgICAgLy8gaG9yaXpvbnRhbCBzY3JvbGxiYXIgdGh1bWIgdG8gYmUgb24gdGhl
IHJpZ2h0LgorICAgICAgICBpZiAobmV3SGFzSG9yaXpvbnRhbFNjcm9sbGVyKQorICAgICAgICAg
ICAgX3ByaXZhdGUtPnNldFNjcm9sbGJhclRodW1iSW5pdGlhbFBvc2l0aW9uID0gdHJ1ZTsKKyAg
ICAgICAgCiAgICAgICAgIF9wcml2YXRlLT5pblVwZGF0ZVNjcm9sbGVycyA9IE5POwogICAgICAg
ICBuZWVkc0xheW91dCA9IFlFUzsKICAgICB9CkBAIC0zNjQsNiArMzk0LDExIEBAIC0gKHZvaWQp
cmVmbGVjdFNjcm9sbGVkQ2xpcFZpZXc6KE5TQ2xpcFYKICAgICB9CiAjZW5kaWYKIAorICAgIC8v
IFRoZSBjYWxsIHRvIFtOU1ZpZXcgcmVmbGVjdFNjcm9sbGVkQ2xpcFZpZXddIHNldHMgdGhlIHNj
cm9sbGJhciB0aHVtYgorICAgIC8vIHBvc2l0aW9uIHRvIDAgKHRoZSBsZWZ0KSB3aGVuIHRoZSB2
aWV3IGlzIGluaXRpYWxseSBkaXNwbGF5ZWQuCisgICAgLy8gVGhpcyBjYWxsIHVwZGF0ZXMgdGhl
IGluaXRpYWwgcG9zaXRpb24gY29ycmVjdGx5LgorICAgIFtzZWxmIHJlZnJlc2hJbml0aWFsU2Ny
b2xsYmFyUG9zaXRpb25dOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBb
c2VsZiBkb2N1bWVudFZpZXddOwogICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6
W1dlYkhUTUxWaWV3IGNsYXNzXV0pIHsKQEAgLTUyNSw0ICs1NjAsMjIgQEAgLSAoQk9PTClhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkIAogICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUlzSWdu
b3JlZF07CiB9CiAKKy0gKHZvaWQpc2V0U2Nyb2xsT3JpZ2luWDooaW50KXNjcm9sbE9yaWdpblgK
K3sKKyAgICBfcHJpdmF0ZS0+c2Nyb2xsT3JpZ2luWCA9IHNjcm9sbE9yaWdpblg7CisgICAgCisg
ICAgaWQgZG9jVmlldyA9IFtzZWxmIGRvY3VtZW50Vmlld107CisgICAgaWYgKHNjcm9sbE9yaWdp
blggIT0gW2RvY1ZpZXcgYm91bmRzXS5vcmlnaW4ueCkgeworICAgICAgICAvLyAiLVtzZWxmIHNj
cm9sbE9yaWdpblhdIiBpcyBlcXVhbCB0byB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cuCisgICAg
ICAgIC8vIE1ha2UgRG9jdW1lbnQgYm91bmRzIG9yaWdpbiB4IGNvb3JkaW5hdGUgY29ycmVzcG9u
ZCB0byB0aGUgbGVmdCBvdmVyZmxvdyBzbyB0aGUgZW50aXJlIGNhbnZhcyBpcyBjb3ZlcmVkIGJ5
IHRoZSBkb2N1bWVudC4KKyAgICAgICAgW2RvY1ZpZXcgc2V0Qm91bmRzT3JpZ2luOk5TTWFrZVBv
aW50KC1zY3JvbGxPcmlnaW5YLCBbZG9jVmlldyBib3VuZHNdLm9yaWdpbi55KV07CisgICAgfQor
Cit9CisKKy0gKGludClzY3JvbGxPcmlnaW5YCit7CisgICAgcmV0dXJuIF9wcml2YXRlLT5zY3Jv
bGxPcmlnaW5YOworfQorCiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0J
KHJldmlzaW9uIDcyMjQ5KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTM2LDYgKzUzNiw3IEBAIC0gKEJPT0wpX3Njcm9sbFRvQmVnaW5u
aW5nT2ZEb2N1bWVudAogICAgIGlmICghW3NlbGYgX2lzU2Nyb2xsYWJsZV0pCiAgICAgICAgIHJl
dHVybiBOTzsKICAgICBOU1BvaW50IHBvaW50ID0gW1tbc2VsZiBfc2Nyb2xsVmlld10gZG9jdW1l
bnRWaWV3XSBmcmFtZV0ub3JpZ2luOworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3
XSBzY3JvbGxPcmlnaW5YXTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10gX3Njcm9s
bFRvOiZwb2ludCBhbmltYXRlOllFU107CiB9CiAKQEAgLTU0Nyw2ICs1NDgsNyBAQCAtIChCT09M
KV9zY3JvbGxUb0VuZE9mRG9jdW1lbnQKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5TUmVjdCBm
cmFtZSA9IFtbW3NlbGYgX3Njcm9sbFZpZXddIGRvY3VtZW50Vmlld10gZnJhbWVdOwogICAgIE5T
UG9pbnQgcG9pbnQgPSBOU01ha2VQb2ludChmcmFtZS5vcmlnaW4ueCwgTlNNYXhZKGZyYW1lKSk7
CisgICAgcG9pbnQueCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhdOwogICAg
IHJldHVybiBbW3NlbGYgX2NvbnRlbnRWaWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1hdGU6WUVT
XTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzIyNDkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0xMC0yNSAgWGlhb21laSBK
aSAgPHhqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmlnaHQtdG8tbGVmdCBwYWdlcyBzaG91bGQgYmUgc2Nyb2xsYWJsZSB0
byByZXZlYWwgbGVmdCBvdmVyZmxvdy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTU2CisKKyAgICAgICAgRm9yIFJUTCBwYWdlLCBzYXZlIGxlZnQg
bGF5b3V0IG92ZXJmbG93IGFuZCBpbmNsdWRlIGl0IGludG8gdGhlIGRvY3VtZW50CisgICAgICAg
IHNpemUgZHVyaW5nIGxheW91dC4gVXNlIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdyB3aGVuIHNj
cm9sbCBhbmQgcGFpbnQKKyAgICAgICAgdGhlIHBhZ2UuIEJlaGF2aW9yIG9uIExUUiBwYWdlIHNo
b3VsZCBiZSB1bnRvdWNoZWQgc2luY2UgbGVmdCBsYXlvdXQgCisgICAgICAgIG92ZXJmbG93IGlz
IHNldCBhcyAwIGZvciBMVFIgcGFnZS4KKworICAgICAgICAqIGZhc3QvZG9tL2hvcml6b250YWwt
c2Nyb2xsYmFyLWluLXJ0bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9sZWZ0LW92
ZXJmbG93LWluLWx0ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yaWdodC1vdmVy
Zmxvdy1pbi1ydGwuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9s
ZWZ0LW92ZXJmbG93LWluLWx0ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9mYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKwogMjAxMC0xMS0xNyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIGFkZGluZyB3aW5kb3dzIGJhc2VsaW5lIGZvcgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9s
bGJhci1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTQgQEAKKzxodG1sIGRp
cj1ydGw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQi
PgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAg
ICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAg
ICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVz
c2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1l
c3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiAr
IGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxv
ZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0VHJ1ZShtZXNzYWdlLCBmYWN0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChmYWN0KQorICAgICAgICAgICAgICAgICAg
ICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlIik7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNj
cm9sbFggPSAtMTAwMDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFkgPSA1MDA7CisK
KyAgICAgICAgICAgIHZhciBmaXJzdFRpbWVMb2FkID0gdHJ1ZTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZnVuY3Rpb24gbW91c2V3aGVlbEhhbmRsZXIoZSkgCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoIndoZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpv
bnRhbCBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxYKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rp
b24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKworICAgICAgICAgICAgICAgIGlmICghZmlyc3RUaW1lTG9hZCkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgLy8gVGVzdCBob3Jpem9u
dGFsIHNjcm9sbCBiYXIgcHJlc2VudHMgYW5kIHdhcyBpbml0aWFsbHkgYXQgdGhlIHJpZ2h0IGZv
ciBSVEwgcGFnZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogRkFJTCBpbiBNYWMgLS0gZm9y
IFJUTCBwYWdlLCB0aGUgc2Nyb2xsIGJhciBpcyBhdCB0aGUgbGVmdCB3aGVuIHBhZ2UgZmlyc3Qg
bG9hZC4KKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgib3JpZ2luYWwgc2Nyb2xsIHggZm9y
IFJUTCBwYWdlICIsIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIC8vIFRlc3QgaG9yaXpvbnRhbCBzY3JvbGwuCisgICAgICAgICAgICAgICAgd2luZG93
LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRFcXVhbCgiaG9yaXpvbnRhbCBzY3JvbGw6ICIsIHdpbmRvdy5zY3JvbGxYLCBl
eHBlY3RlZFNjcm9sbFgpOworICAgICAgICAgICAgICAgIC8vIFRlc3QgY2FsbGluZyB3aW5kb3cu
c2Nyb2xsWCBjb250aW51b3VzbHkgd29udCBjaGFuZ2UgdGhlIHNjcm9sbFggcG9zaXRpb24uCisg
ICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoImNvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3Jv
bGxYICIsIHdpbmRvdy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAgICAgCisK
KyAgICAgICAgICAgICAgICAvLyBUZXN0IHpvb21pbmcgd29udCByZXNldCBzY3JvbGwgcG9zaXRp
b24uCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEZBSUwgaW4gTWFjIC0tIGZvciBSVEwgcGFn
ZSwgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gem9vbWluZyBzZWVtcyBkb2VzIG5vdCB3
b3JrIHdlbGwuCisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3Rl
ZFNjcm9sbFkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci56b29tUGFnZUluKCk7
CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlT3V0KCk7CisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJ6b29tIGluIGFuZCBvdXQgcHJlc2VydmUgc2Nyb2xs
IHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFgsZXhwZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHJlc2l6ZSB3
b250IHJlc2V0IHNjcm9sbCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICB3aW5kb3cucmVzaXpl
VG8oMTAwMCwgd2luZG93LmlubmVySGVpZ2h0KTsKKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Ny
b2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAg
IHdpbmRvdy5yZXNpemVUbygyMDAwLCB3aW5kb3cuaW5uZXJIZWlnaHQpOworICAgICAgICAgICAg
ICAgIGFzc2VydEVxdWFsKCJyZXNpemUgcHJlc2VydmVzIHNjcm9sbCBwb3NpdGlvbiIsIHdpbmRv
dy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIC8vIFRlc3Qgd2hlZWwgc2Nyb2xsIHByZXNlcnZlcyBob3Jpem9udGFsIHNjcm9sbCBw
b3NpdGlvbi4KKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxY
LCBleHBlY3RlZFNjcm9sbFkgLyAyKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAgIGRpdi5hZGRFdmVudExp
c3RlbmVyKCJtb3VzZXdoZWVsIiwgbW91c2V3aGVlbEhhbmRsZXIsIGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICB2YXIgd2hlZWxFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJXaGVlbEV2ZW50
Iik7CisgICAgICAgICAgICAgICAgd2hlZWxFdmVudC5pbml0V2ViS2l0V2hlZWxFdmVudCgwLCBl
eHBlY3RlZFNjcm9sbFkgLyAyLCB3aW5kb3csIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkaXYuZGlzcGF0Y2hFdmVudCh3aGVlbEV2ZW50
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3QgSE9NRS9FTkQgb3BlcmF0
aW9uLgorICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gTm90IHVzaW5nIGFzc2VydCBlcXVhbCBoZXJlIHNpbmNlIHRoZSBiZWhh
dmlvciBpcyBkaWZmZXJlbnQgaW4gZWFjaCBwb3J0LiAKKyAgICAgICAgICAgICAgICAgICAgLy8g
Rm9yIGV4YW1wbGUsIGluIE1hYywgSE9NRS9FTkQga2V5IHJlc2V0IGJvdGggeCBhbmQgeSBzY3Jv
bGwgcG9zaXRpb24uIAorICAgICAgICAgICAgICAgICAgICAvLyBJbiBDaHJvbWl1bSwgSE9NRS9F
TkQga2V5IG9ubHkgcmVzZXQgeSBzY3JvbGwgcG9zaXRpb24sIGFuZCB4IHNjcm9sbCBwb3NpdGlv
biBpcyBwcmVzZXJ2ZWQuCisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBl
Y3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmtleURvd24oImhvbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJLZXlEb3du
IEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6ICIgKyB3
aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhl
eHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmtleURvd24oImVuZCIpOworICAgICAgICAgICAgICAgICAgICBsb2coIktleURv
d24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAiICsg
d2luZG93LnNjcm9sbFgsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIC8vIFRlc3Qgc2VsZWN0IGFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudCBjb250
ZW50LgorICAgICAgICAgICAgICAgIHdpbmRvdy5yZXNpemVUbyg1MDAsIDUwMCk7CisgICAgICAg
ICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKKyAgICAg
ICAgICAgICAgICBkaXYuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiU2VsZWN0QWxsIik7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRv
dy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgic2VsZWN0QWxs
IHNlbGVjdHMgYWxsIGRvY3VtZW50Iiwgc2VsZWN0aW9uLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAs
IGRpdi5pbm5lckhUTUwubGVuZ3RoKSwgZGl2LmlubmVySFRNTCk7CisKKyAgICAgICAgICAgICAg
ICBmaXJzdFRpbWVMb2FkID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogRmlu
ZCBhIHdheSB0byB0ZXN0IHJlbG9hZCBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uLgorCisgICAg
ICAgICAgICAgICAgZGl2LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
PgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0eWxlPSJ3aGl0ZXNwYWNlOm5vd3JhcDsgd2lkdGg6
IDQwMDBweDsgaGVpZ2h0OiAxMDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiPkxvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8g
ZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1
YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxs
YW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVp
cyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVz
c2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50
IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmlj
aWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uIjwvZGl2PgorICAgICAgICA8
dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXIt
d2hlbi1kaXItY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2co
c3RyKQoreworICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAg
bGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgdmFyIGNv
bnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgIGNvbnNvbGUu
YXBwZW5kQ2hpbGQobGkpOworfQorCitmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1
YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgIGxv
ZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4
cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJcbiIgKyBtZXNz
YWdlICsgIjogU3VjY2VzcyIpOworfQorCitmdW5jdGlvbiBjaGFuZ2VEaXIobmV3X2RpcikgCit7
CisgICAgZG9jdW1lbnQuYm9keS5kaXIgPSBuZXdfZGlyOworICAgIHJldHVybiBmYWxzZTsKK30K
Kworb25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB4IGZvciBS
VEwgcGFnZSAiLCB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgd2luZG93LnNjcm9sbFRvKC0xMDAs
IDApOworICAgIGFzc2VydEVxdWFsKCJob3Jpem9udGFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSAi
LCB3aW5kb3cuc2Nyb2xsWCwgLTEwMCk7CisKKyAgICBkb2N1bWVudC5ib2R5LmRpciA9ICJsdHIi
OworICAgIGFzc2VydEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgIiwgd2lu
ZG93LnNjcm9sbFgsIDApOworICAgIHdpbmRvdy5zY3JvbGxUbygxMDAsIDApOworICAgIGFzc2Vy
dEVxdWFsKCJob3Jpem9udGFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSAiLCB3aW5kb3cuc2Nyb2xs
WCwgMTAwKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKS5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBkaXI9InJ0bCI+CisK
KzxkaXYgc3R5bGU9IndpZHRoOiA0MDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiIGlkPSJk
aXYiPgorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2Npbmcg
ZWxpdC4gTnVuYyBldCBuaXNsIHRlbGx1cy4gVml2YW11cyBhbGlxdWFtIGVsaXQgbm9uIGFyY3Ug
c2NlbGVyaXNxdWUgZWdldCBkYXBpYnVzIG51bmMgdnVscHV0YXRlLiBNYWVjZW5hcyBzY2VsZXJp
c3F1ZSBlZ2VzdGFzIHB1cnVzLCBpZCBiaWJlbmR1bSBtYWduYSB2ZW5lbmF0aXMgdmVsLiBWZXN0
aWJ1bHVtIGJpYmVuZHVtIHZvbHV0cGF0IGFsaXF1YW0uIEN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5h
dGlidXMgZXQgbWFnbmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRlcywgbmFzY2V0dXIgcmlkaWN1bHVz
IG11cy4gVmVzdGlidWx1bSBlZ2V0IHJpc3VzIHNvZGFsZXMgbWkgdHJpc3RpcXVlIGRpZ25pc3Np
bSBldCBzZWQgbGVjdHVzLiBDcmFzIGNvbnZhbGxpcywgbmliaCB1dCBkYXBpYnVzIGdyYXZpZGEs
IGVuaW0gbWF1cmlzIG1vbGVzdGllIGVsaXQsIGVnZXQgZnJpbmdpbGxhIGF1Z3VlIGVzdCBuZWMg
ZXN0LiBDdXJhYml0dXIgZXUgcXVhbSBub24gcHVydXMgc29kYWxlcyBwdWx2aW5hci4gRG9uZWMg
dWx0cmljZXMgZHVpIGVnZXQgZG9sb3IgbG9ib3J0aXMgaW4gcG9ydGEgcXVhbSBydXRydW0uIE51
bGxhIHJpc3VzIGxhY3VzLCBhZGlwaXNjaW5nIHF1aXMgdWxsYW1jb3JwZXIgdmVzdGlidWx1bSwg
Y29uZGltZW50dW0gc2VkIGxhY3VzLiBTZWQgaW4gbnVuYyBkb2xvciwgcXVpcyBlZ2VzdGFzIHR1
cnBpcy4gSW50ZWdlciBhcmN1IHRlbGx1cywgcG9zdWVyZSBzaXQgYW1ldCBwZWxsZW50ZXNxdWUg
YSwgbW9sZXN0aWUgYXQgbWkuIE51bGxhIGJsYW5kaXQsIG1pIGV0IGV1aXNtb2QgaW1wZXJkaWV0
LCBhdWd1ZSBhcmN1IG9ybmFyZSBmZWxpcywgbmVjIHZpdmVycmEgbGFjdXMgbGlndWxhIHV0IG1l
dHVzLiBQcm9pbiB1dCBsZW8gYW50ZSwgYXQgY29uc2VjdGV0dXIgc2VtLiBOdWxsYW0gbm9uIG51
bmMgbGlndWxhLiBQcm9pbiBzZWQgYW50ZSBzZW0sIGlkIHJ1dHJ1bSBwdXJ1cy4KKzwvZGl2Pgor
PHVsIGlkPSJjb25zb2xlIj48L3VsPgorPGJyPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAor77u/PCFET0NUWVBFIGh0bWwgUFVCTElDICIt
Ly9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3Jn
L1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxl
PlRlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZTwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAg
ICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAg
ICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNz
YWdlLCBhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
IChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVz
c2FnZSArICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsg
ZXhwZWN0ZWQpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9n
KCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAgIAorICAg
ICAgICAgICAgb25sb2FkID0gZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB2YXIg
ZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAgIHZh
ciBvcmlnaW5hbCA9IHdpbmRvdy5zY3JvbGxYOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3Jv
bGxUbygtMSwgMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInNjcm9sbCIsIHdpbmRv
dy5zY3JvbGxYLCAwKTsKKyAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0eWxlPSJwb3Np
dGlvbjpyZWxhdGl2ZTsgcmlnaHQ6NDBweCI+dGVzdCBsZWZ0IG92ZXJmbG93IGluIExUUiBwYWdl
LjwvZGl2PgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4t
cnRsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yaWdodC1vdmVy
Zmxvdy1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAor77u/PCFET0NU
WVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIg
Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQi
PgorPGh0bWwgIHN0eWxlPSJkaXJlY3Rpb246cnRsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCIgPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+VGVzdCByaWdodCBvdmVy
ZmxvdyBpbiBSVEwgcGFnZTwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBm
dW5jdGlvbiBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFy
IGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAg
ICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4
cGVjdGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhw
ZWN0ZWQpCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1
cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdl
ICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgb25sb2Fk
ID0gZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IHdp
bmRvdy5zY3JvbGxYOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygxLCAwKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgic2Nyb2xsIiwgd2luZG93LnNjcm9sbFgsIDApOwor
ICAgIAorICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyBs
ZWZ0OjQwcHgiPnRlc3QgcmlnaHQgb3ZlcmZsb3cgaW4gUlRMIHBhZ2UuPC9kaXY+CisgICAgICAg
IDx1bCBpZD0iY29uc29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1p
bi1ydGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9o
b3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDkgQEAKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hv
cml6b250YWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3Jv
bGxYIDogU3VjY2Vzcworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjog
U3VjY2VzcworcmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3doZWVs
IHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK0tl
eURvd24gSE9NRSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTog
LTEwMDAKK0tleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJU
TCBwYWdlOiAtMTAwMAorc2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50OiBTdWNjZXNzCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNj
cm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdo
ZW4tZGlyLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1j
aGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK29yaWdpbmFs
IHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xsIHggZm9y
IFJUTCBwYWdlIDogU3VjY2Vzcworb3JpZ2luYWwgc2Nyb2xsIHggZm9yIExUUiBwYWdlIDogU3Vj
Y2VzcworaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBTdWNjZXNzCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4t
cnRsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNj
cm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAK
K29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Ny
b2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vz
cworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogRmFpbHVyZSwgYWN0
dWFsOiAtODY2OyBleHBlY3RlZDogLTEwMDAKK3Jlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0
aW9uOiBTdWNjZXNzCit3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBv
c2l0aW9uOiBTdWNjZXNzCitLZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byBy
aWdodCBmb3IgUlRMIHBhZ2U6IDAKK0tleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24g
dG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAwCitzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6
IFN1Y2Nlc3MKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9u
dGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13
aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5n
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorb3JpZ2luYWwgc2Ny
b2xsIHggZm9yIFJUTCBwYWdlIDogU3VjY2VzcworaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgUlRM
IHBhZ2UgOiBTdWNjZXNzCitvcmlnaW5hbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBGYWlsdXJl
LCBhY3R1YWw6IDMxMTA7IGV4cGVjdGVkOiAwCitob3Jpem9udGFsIHNjcm9sbCB4IGZvciBMVFIg
cGFnZSA6IFN1Y2Nlc3MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9k
b20vbGVmdC1vdmVyZmxvdy1pbi1sdHItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20v
bGVmdC1vdmVyZmxvdy1pbi1sdHItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIgQEAKK3Rlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZS4KK3Njcm9sbDogU3VjY2VzcwpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWlu
LXJ0bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4t
cnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACit0ZXN0IHJpZ2h0
IG92ZXJmbG93IGluIFJUTCBwYWdlLgorc2Nyb2xsOiBTdWNjZXNzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74233</attachid>
            <date>2010-11-18 06:45:51 -0800</date>
            <delta_ts>2010-11-18 18:39:53 -0800</delta_ts>
            <desc>patch</desc>
            <filename>left_scroll.patch</filename>
            <type>text/plain</type>
            <size>44660</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDdjMTk5OTVjZWY0MDEyNDI3ZTY1NmUwOTg0NjBhMTNmNDFjYTllOWUKQXV0aG9yOiBK
ZXJlbXkgPGplcmVteUBjaHJvbWl1bS5vcmc+CkRhdGU6ICAgVGh1IE5vdiAxOCAxMTo0NjoyMyAy
MDEwICswMjAwCgogICAgMjAxMC0xMS0xNyAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+
CiAgICAKICAgICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAgICAKICAgICAg
ICAgICAgUmlnaHQtdG8tbGVmdCBwYWdlcyBzaG91bGQgYmUgc2Nyb2xsYWJsZSB0byByZXZlYWwg
bGVmdCBvdmVyZmxvdy4KICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTU2CiAgICAKICAgICAgICAgICAgRm9yIFJUTCBwYWdlLCBzYXZlIGxlZnQg
bGF5b3V0IG92ZXJmbG93IGFuZCBpbmNsdWRlIGl0IGludG8gdGhlIGRvY3VtZW50CiAgICAgICAg
ICAgIHNpemUgZHVyaW5nIGxheW91dC4gVXNlIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdyB3aGVu
IHNjcm9sbGluZyBhbmQgcGFpbnRpbmcKICAgICAgICAgICAgIHRoZSBwYWdlLiBCZWhhdmlvciBv
biBMVFIgcGFnZSBzaG91bGQgYmUgdW5tb2RpZmllZCBzaW5jZSBsZWZ0IGxheW91dAogICAgICAg
ICAgICAgb3ZlcmZsb3cgaXMgc2V0IGFzIDAgZm9yIExUUiBwYWdlLgogICAgCiAgICAgICAgICAg
ICAqIGZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sOiBBZGRlZC4KICAg
ICAgICAgICAgICogZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbDogQWRkZWQuCiAg
ICAgICAgICAgICAqIGZhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC5odG1sOiBBZGRlZC4K
ICAgICAgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3Jv
bGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCiAgICAgICAgICAgICAqIHBsYXRmb3Jt
L21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KICAgICAgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ct
aW4tbHRyLWV4cGVjdGVkLnR4dDogQWRkZWQuCiAgICAgICAgICAgICAqIHBsYXRmb3JtL21hYy9m
YXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggOTYxYzAwYS4uYTE3OGFlYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEwLTEwLTI1ICBY
aWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSaWdodC10by1sZWZ0IHBhZ2VzIHNob3VsZCBiZSBzY3Jv
bGxhYmxlIHRvIHJldmVhbCBsZWZ0IG92ZXJmbG93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTYKKworICAgICAgICBGb3IgUlRMIHBhZ2UsIHNh
dmUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgYW5kIGluY2x1ZGUgaXQgaW50byB0aGUgZG9jdW1lbnQK
KyAgICAgICAgc2l6ZSBkdXJpbmcgbGF5b3V0LiBVc2UgdGhlIGxlZnQgbGF5b3V0IG92ZXJmbG93
IHdoZW4gc2Nyb2xsIGFuZCBwYWludAorICAgICAgICB0aGUgcGFnZS4gQmVoYXZpb3Igb24gTFRS
IHBhZ2Ugc2hvdWxkIGJlIHVudG91Y2hlZCBzaW5jZSBsZWZ0IGxheW91dCAKKyAgICAgICAgb3Zl
cmZsb3cgaXMgc2V0IGFzIDAgZm9yIExUUiBwYWdlLgorCisgICAgICAgICogZmFzdC9kb20vaG9y
aXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1sOiBB
ZGRlZAorICAgICAgICAqIGZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2Vz
bnQtZmlyZS1vbnNjcm9sbC1leHBlY3RlZC5odG1sOiBBZGRlZAorICAgICAgICAqIGZhc3QvZG9t
L2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jp
Z2h0LW92ZXJmbG93LWluLXJ0bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxi
YXItaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zh
c3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorCiAyMDEwLTExLTE4ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVcGRhdGVzIGZvciByZWNlbnQgcmViYXNlbGluZXMgYW5kIGNoYW5nZXMu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1p
bi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzUzYzk4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxi
YXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYg
QEAKK1RoaXMgdGVzdHMgdGhhdCB3aGVuIGEgcGFnZSB3aXRoIGFuIFJUTCBvdmVyZmxvdyBpcyBp
bml0aWFsbHkgbG9hZGVkLCBubyBzY3JvbGwgZXZlbnQgaXMgc2VudC4KKworVGhpcyB0ZXN0IGhh
cyBwYXNzZWQgaWYgdGhlIHRleHQgIkZBSUwgLSBzY3JvbGwgZXZlbnQgcmVjZWl2ZWQhIiBkb2Vz
IG5vdCBhcHBlYXIgYmVsb3cuCisKK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0
ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1
dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0s
IHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVp
cCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJl
aGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQg
bnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJv
aWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQg
ZXN0IGxhYm9ydW0uIgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9u
dGFsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNj
cm9sbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMjNhMDYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJh
ci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sIGRpcj1ydGw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQg
bGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVu
ZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rp
b24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG9jdW1lbnQub25zY3Jv
bGw9ZnVuY3Rpb24oKXtsb2coIkZBSUwgLSBzY3JvbGwgZXZlbnQgcmVjZWl2ZWQhIik7fQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgZGly
PWx0cj4KKyAgICAgICAgPHA+VGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBwYWdlIHdpdGggYW4gUlRM
IG92ZXJmbG93IGlzIGluaXRpYWxseSBsb2FkZWQsIG5vIHNjcm9sbCBldmVudCBpcyBzZW50Ljwv
cD4KKyAgICAgICAgPHA+VGhpcyB0ZXN0IGhhcyBwYXNzZWQgaWYgdGhlIHRleHQgIkZBSUwgLSBz
Y3JvbGwgZXZlbnQgcmVjZWl2ZWQhIiBkb2VzIG5vdCBhcHBlYXIgYmVsb3cuPC9wPgorICAgICAg
ICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0id2hpdGVzcGFjZTpub3dyYXA7
IHdpZHRoOiA0MDAwcHg7IGhlaWdodDogMTAwMHB4OyBib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij5M
b3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwg
c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu
YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0
aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1
YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2
ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRl
dXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1
aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLiI8L2Rpdj4KKyAg
ICAgICAgPHVsIGlkPSJjb25zb2xlIj48L3VsPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRkMTI4MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC5odG1sCkBAIC0wLDAgKzEsMTAzIEBACis8aHRtbCBkaXI9cnRsPgorICAgIDxoZWFkPgorICAg
ICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KKyAgICAgICAgICAgIGZ1bmN0aW9u
IGxvZyhzdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGxpID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBsaS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgICAgICAgICAgICAgICB2YXIgY29uc29s
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgICAgICAgICAg
Y29uc29sZS5hcHBlbmRDaGlsZChsaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGFzc2VydEVxdWFsKG1lc3NhZ2UsIGFjdHVhbCwgZXhwZWN0ZWQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCkK
KyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogRmFpbHVyZSwgYWN0
dWFsOiAiICsgYWN0dWFsICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBT
dWNjZXNzIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGFzc2VydFRydWUobWVzc2FnZSwgZmFjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoZmFjdCkKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsg
IjogRmFpbHVyZSIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
bG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRTY3JvbGxYID0gLTEwMDA7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRTY3JvbGxZID0gNTAwOworCisgICAgICAgICAgICBmdW5jdGlvbiBt
b3VzZXdoZWVsSGFuZGxlcihlKSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRFcXVhbCgid2hlZWwgc2Nyb2xsIHByZXNlcnZlcyBob3Jpem9udGFsIHNjcm9sbCBwb3NpdGlv
biIsIHdpbmRvdy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBvbmxvYWQgPSBmdW5jdGlvbigpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
ICAgICAgICAgICAgLy8gVGVzdCBob3Jpem9udGFsIHNjcm9sbCBiYXIgcHJlc2VudHMgYW5kIHdh
cyBpbml0aWFsbHkgYXQgdGhlIHJpZ2h0IGZvciBSVEwgcGFnZS4KKyAgICAgICAgICAgICAgICBh
c3NlcnRFcXVhbCgib3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlICIsIHdpbmRvdy5zY3Jv
bGxYLCAwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3QgaG9yaXpvbnRh
bCBzY3JvbGwuCisgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xs
WCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgiaG9yaXpv
bnRhbCBzY3JvbGw6ICIsIHdpbmRvdy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOworICAgICAg
ICAgICAgICAgIC8vIFRlc3QgY2FsbGluZyB3aW5kb3cuc2Nyb2xsWCBjb250aW51b3VzbHkgd29u
dCBjaGFuZ2UgdGhlIHNjcm9sbFggcG9zaXRpb24uCisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1
YWwoImNvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYICIsIHdpbmRvdy5zY3JvbGxYLCBl
eHBlY3RlZFNjcm9sbFgpOworICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICAvLyBUZXN0
IHpvb21pbmcgd29udCByZXNldCBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xs
VG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci56b29tUGFnZUluKCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLnpvb21QYWdlT3V0KCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJ6b29t
IGluIGFuZCBvdXQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFgsZXhw
ZWN0ZWRTY3JvbGxYKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAvLyBUZXN0IHJlc2l6ZSB3b250IHJlc2V0IHNjcm9sbCBwb3NpdGlvbi4KKyAg
ICAgICAgICAgICAgICB3aW5kb3cucmVzaXplVG8oMTAwMCwgd2luZG93LmlubmVySGVpZ2h0KTsK
KyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3Rl
ZFNjcm9sbFkpOworICAgICAgICAgICAgICAgIHdpbmRvdy5yZXNpemVUbygyMDAwLCB3aW5kb3cu
aW5uZXJIZWlnaHQpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJyZXNpemUgcHJlc2Vy
dmVzIHNjcm9sbCBwb3NpdGlvbiIsIHdpbmRvdy5zY3JvbGxYLCBleHBlY3RlZFNjcm9sbFgpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3Qgd2hlZWwgc2Nyb2xsIHBy
ZXNlcnZlcyBob3Jpem9udGFsIHNjcm9sbCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICB3aW5k
b3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkgLyAyKTsKKyAgICAg
ICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAg
ICAgICAgICAgICAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgbW91c2V3aGVl
bEhhbmRsZXIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB2YXIgd2hlZWxFdmVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUV2ZW50KCJXaGVlbEV2ZW50Iik7CisgICAgICAgICAgICAgICAgd2hlZWxFdmVu
dC5pbml0V2ViS2l0V2hlZWxFdmVudCgwLCBleHBlY3RlZFNjcm9sbFkgLyAyLCB3aW5kb3csIDAs
IDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBk
aXYuZGlzcGF0Y2hFdmVudCh3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIC8vIFRlc3QgSE9NRS9FTkQgb3BlcmF0aW9uLgorICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTm90IHVzaW5nIGFzc2Vy
dCBlcXVhbCBoZXJlIHNpbmNlIHRoZSBiZWhhdmlvciBpcyBkaWZmZXJlbnQgaW4gZWFjaCBwb3J0
LiAKKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIGluIE1hYywgSE9NRS9FTkQg
a2V5IHJlc2V0IGJvdGggeCBhbmQgeSBzY3JvbGwgcG9zaXRpb24uIAorICAgICAgICAgICAgICAg
ICAgICAvLyBJbiBDaHJvbWl1bSwgSE9NRS9FTkQga2V5IG9ubHkgcmVzZXQgeSBzY3JvbGwgcG9z
aXRpb24sIGFuZCB4IHNjcm9sbCBwb3NpdGlvbiBpcyBwcmVzZXJ2ZWQuCisgICAgICAgICAgICAg
ICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7
CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImhvbWUiKTsKKyAgICAg
ICAgICAgICAgICAgICAgbG9nKCJLZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0
byByaWdodCBmb3IgUlRMIHBhZ2U6ICIgKyB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgICAgICAg
ICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xs
WSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVuZCIpOworICAg
ICAgICAgICAgICAgICAgICBsb2coIktleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24g
dG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAiICsgd2luZG93LnNjcm9sbFgsIDApOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3Qgc2VsZWN0IGFs
bCBzZWxlY3RzIGFsbCBkb2N1bWVudCBjb250ZW50LgorICAgICAgICAgICAgICAgIHdpbmRvdy5y
ZXNpemVUbyg1MDAsIDUwMCk7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAgICBkaXYuZm9jdXMoKTsKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CisgICAgICAgICAg
ICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRFcXVhbCgic2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50Iiwgc2VsZWN0
aW9uLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGRpdi5pbm5lckhUTUwubGVuZ3RoKSwgZGl2Lmlu
bmVySFRNTCk7CisKKyAgICAgICAgICAgICAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsK
KyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9IndoaXRlc3Bh
Y2U6bm93cmFwOyB3aWR0aDogNDAwMHB4OyBoZWlnaHQ6IDEwMDBweDsgYm9yZGVyOiAxcHggc29s
aWQgcmVkOyI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2lj
aW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBk
b2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVk
IGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1v
ZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2
b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1
ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBp
biBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4i
PC9kaXY+CisgICAgICAgIDx1bCBpZD0iY29uc29sZSIgZGlyPWx0cj48L3VsPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwt
c2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9y
aXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMjExMjdiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5odG1sCkBAIC0w
LDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKHN0cikK
K3sKKyAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGxpLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgIHZhciBjb25zb2xl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICBjb25zb2xlLmFwcGVu
ZENoaWxkKGxpKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBl
eHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICBsb2coIlxu
IiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3Rl
ZDogIiArIGV4cGVjdGVkKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSAr
ICI6IFN1Y2Nlc3MiKTsKK30KKworZnVuY3Rpb24gY2hhbmdlRGlyKG5ld19kaXIpIAoreworICAg
IGRvY3VtZW50LmJvZHkuZGlyID0gbmV3X2RpcjsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK29u
bG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgIGFzc2VydEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBh
Z2UgIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgIHdpbmRvdy5zY3JvbGxUbygtMTAwLCAwKTsK
KyAgICBhc3NlcnRFcXVhbCgiaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgIiwgd2lu
ZG93LnNjcm9sbFgsIC0xMDApOworCisgICAgZG9jdW1lbnQuYm9keS5kaXIgPSAibHRyIjsKKyAg
ICBhc3NlcnRFcXVhbCgib3JpZ2luYWwgc2Nyb2xsIHggZm9yIExUUiBwYWdlICIsIHdpbmRvdy5z
Y3JvbGxYLCAwKTsKKyAgICB3aW5kb3cuc2Nyb2xsVG8oMTAwLCAwKTsKKyAgICBhc3NlcnRFcXVh
bCgiaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgIiwgd2luZG93LnNjcm9sbFgsIDEw
MCk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iikuc3R5bGUuZGlzcGxheSA9
ICJub25lIjsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgZGlyPSJydGwiPgorCis8ZGl2
IHN0eWxlPSJ3aWR0aDogNDAwMHB4OyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IiBpZD0iZGl2Ij4K
K0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQu
IE51bmMgZXQgbmlzbCB0ZWxsdXMuIFZpdmFtdXMgYWxpcXVhbSBlbGl0IG5vbiBhcmN1IHNjZWxl
cmlzcXVlIGVnZXQgZGFwaWJ1cyBudW5jIHZ1bHB1dGF0ZS4gTWFlY2VuYXMgc2NlbGVyaXNxdWUg
ZWdlc3RhcyBwdXJ1cywgaWQgYmliZW5kdW0gbWFnbmEgdmVuZW5hdGlzIHZlbC4gVmVzdGlidWx1
bSBiaWJlbmR1bSB2b2x1dHBhdCBhbGlxdWFtLiBDdW0gc29jaWlzIG5hdG9xdWUgcGVuYXRpYnVz
IGV0IG1hZ25pcyBkaXMgcGFydHVyaWVudCBtb250ZXMsIG5hc2NldHVyIHJpZGljdWx1cyBtdXMu
IFZlc3RpYnVsdW0gZWdldCByaXN1cyBzb2RhbGVzIG1pIHRyaXN0aXF1ZSBkaWduaXNzaW0gZXQg
c2VkIGxlY3R1cy4gQ3JhcyBjb252YWxsaXMsIG5pYmggdXQgZGFwaWJ1cyBncmF2aWRhLCBlbmlt
IG1hdXJpcyBtb2xlc3RpZSBlbGl0LCBlZ2V0IGZyaW5naWxsYSBhdWd1ZSBlc3QgbmVjIGVzdC4g
Q3VyYWJpdHVyIGV1IHF1YW0gbm9uIHB1cnVzIHNvZGFsZXMgcHVsdmluYXIuIERvbmVjIHVsdHJp
Y2VzIGR1aSBlZ2V0IGRvbG9yIGxvYm9ydGlzIGluIHBvcnRhIHF1YW0gcnV0cnVtLiBOdWxsYSBy
aXN1cyBsYWN1cywgYWRpcGlzY2luZyBxdWlzIHVsbGFtY29ycGVyIHZlc3RpYnVsdW0sIGNvbmRp
bWVudHVtIHNlZCBsYWN1cy4gU2VkIGluIG51bmMgZG9sb3IsIHF1aXMgZWdlc3RhcyB0dXJwaXMu
IEludGVnZXIgYXJjdSB0ZWxsdXMsIHBvc3VlcmUgc2l0IGFtZXQgcGVsbGVudGVzcXVlIGEsIG1v
bGVzdGllIGF0IG1pLiBOdWxsYSBibGFuZGl0LCBtaSBldCBldWlzbW9kIGltcGVyZGlldCwgYXVn
dWUgYXJjdSBvcm5hcmUgZmVsaXMsIG5lYyB2aXZlcnJhIGxhY3VzIGxpZ3VsYSB1dCBtZXR1cy4g
UHJvaW4gdXQgbGVvIGFudGUsIGF0IGNvbnNlY3RldHVyIHNlbS4gTnVsbGFtIG5vbiBudW5jIGxp
Z3VsYS4gUHJvaW4gc2VkIGFudGUgc2VtLCBpZCBydXRydW0gcHVydXMuCis8L2Rpdj4KKzx1bCBp
ZD0iY29uc29sZSI+PC91bD4KKzxicj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjUxYTA4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sCkBAIC0wLDAgKzEsMzggQEAKK++7vzwh
RE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8v
RU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwu
ZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiA+CisgICAg
PGhlYWQ+CisgICAgICAgIDx0aXRsZT5UZXN0IGxlZnQgb3ZlcmZsb3cgaW4gTFRSIHBhZ2U8L3Rp
dGxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVu
ZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVu
Y3Rpb24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAgICAg
ICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBhY3R1
YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKKyAg
ICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYi
KTsKKyAgICAgICAgICAgICAgICB2YXIgb3JpZ2luYWwgPSB3aW5kb3cuc2Nyb2xsWDsKKyAgICAg
ICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oLTEsIDApOworICAgICAgICAgICAgICAgIGFzc2Vy
dEVxdWFsKCJzY3JvbGwiLCB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgCisgICAgICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRp
diBpZD0iZGl2IiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IHJpZ2h0OjQwcHgiPnRlc3QgbGVm
dCBvdmVyZmxvdyBpbiBMVFIgcGFnZS48L2Rpdj4KKyAgICAgICAgPHVsIGlkPSJjb25zb2xlIj48
L3VsPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmln
aHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMjFiYTc5MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JpZ2h0
LW92ZXJmbG93LWluLXJ0bC5odG1sCkBAIC0wLDAgKzEsMzggQEAKK++7vzwhRE9DVFlQRSBodG1s
IFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8v
d3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1s
ICBzdHlsZT0iZGlyZWN0aW9uOnJ0bCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwiID4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPlRlc3QgcmlnaHQgb3ZlcmZsb3cgaW4g
UlRMIHBhZ2U8L3RpdGxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24g
bG9nKHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBj
b25zb2xlLmFwcGVuZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQor
ICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1
YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1
Y2Nlc3MiKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0
aW9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAgICB2YXIgb3JpZ2luYWwgPSB3aW5kb3cuc2Ny
b2xsWDsKKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMSwgMCk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0RXF1YWwoInNjcm9sbCIsIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5Pgor
ICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgbGVmdDo0MHB4
Ij50ZXN0IHJpZ2h0IG92ZXJmbG93IGluIFJUTCBwYWdlLjwvZGl2PgorICAgICAgICA8dWwgaWQ9
ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4t
cnRsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9t
L2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNjk5ZmRhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitvcmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRM
IHBhZ2UgOiBTdWNjZXNzCitob3Jpem9udGFsIHNjcm9sbDogOiBTdWNjZXNzCitjb250aW51b3Vz
bHkgY2FsbCB3aW5kb3cuc2Nyb2xsWCA6IFN1Y2Nlc3MKK3pvb20gaW4gYW5kIG91dCBwcmVzZXJ2
ZSBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3Jlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0
aW9uOiBTdWNjZXNzCit3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBv
c2l0aW9uOiBTdWNjZXNzCitLZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byBy
aWdodCBmb3IgUlRMIHBhZ2U6IC0xMDAwCitLZXlEb3duIEVORCBtb3ZlIHgtc2Nyb2xsIHBvc2l0
aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogLTEwMDAKK3NlbGVjdEFsbCBzZWxlY3RzIGFsbCBk
b2N1bWVudDogU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwt
c2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZDJmNjY4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGly
LWNoYW5nZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitvcmlnaW5hbCBzY3JvbGwgeCBm
b3IgUlRMIHBhZ2UgOiBTdWNjZXNzCitob3Jpem9udGFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6
IFN1Y2Nlc3MKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6
b250YWwgc2Nyb2xsIHggZm9yIExUUiBwYWdlIDogU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRh
bC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yNDIxN2M1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw5IEBACitvcmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNz
Citob3Jpem9udGFsIHNjcm9sbDogOiBTdWNjZXNzCitjb250aW51b3VzbHkgY2FsbCB3aW5kb3cu
c2Nyb2xsWCA6IFN1Y2Nlc3MKK3pvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRp
b246IEZhaWx1cmUsIGFjdHVhbDogLTg2NjsgZXhwZWN0ZWQ6IC0xMDAwCityZXNpemUgcHJlc2Vy
dmVzIHNjcm9sbCBwb3NpdGlvbjogU3VjY2Vzcword2hlZWwgc2Nyb2xsIHByZXNlcnZlcyBob3Jp
em9udGFsIHNjcm9sbCBwb3NpdGlvbjogU3VjY2VzcworS2V5RG93biBIT01FIG1vdmUgeC1zY3Jv
bGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAwCitLZXlEb3duIEVORCBtb3ZlIHgt
c2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogMAorc2VsZWN0QWxsIHNlbGVj
dHMgYWxsIGRvY3VtZW50OiBTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNj
cm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjY2NGMwY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwg
cGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDogU3VjY2Vz
cworb3JpZ2luYWwgc2Nyb2xsIHggZm9yIExUUiBwYWdlIDogRmFpbHVyZSwgYWN0dWFsOiAzMTEw
OyBleHBlY3RlZDogMAoraG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBTdWNjZXNz
CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2xlZnQt
b3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhYzRkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyIEBACit0ZXN0IGxlZnQgb3ZlcmZsb3cgaW4gTFRSIHBhZ2UuCitzY3Jv
bGw6IFN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Rv
bS9yaWdodC1vdmVyZmxvdy1pbi1ydGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM1NzljZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAordGVzdCByaWdodCBvdmVyZmxvdyBpbiBSVEwg
cGFnZS4KK3Njcm9sbDogU3VjY2VzcwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ODc1NmU4Li41YjY4OGZkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisy
MDEwLTEwLTI1ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSaWdodC10by1sZWZ0IHBhZ2VzIHNo
b3VsZCBiZSBzY3JvbGxhYmxlIHRvIHJldmVhbCBsZWZ0IG92ZXJmbG93LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTYKKworICAgICAgICBGb3Ig
UlRMIHBhZ2UsIHNhdmUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgYW5kIGluY2x1ZGUgaXQgaW50byB0
aGUgZG9jdW1lbnQKKyAgICAgICAgc2l6ZSBkdXJpbmcgbGF5b3V0LiBVc2UgdGhlIGxlZnQgbGF5
b3V0IG92ZXJmbG93IHdoZW4gc2Nyb2xsIGFuZCBwYWludAorICAgICAgICB0aGUgcGFnZS4gQmVo
YXZpb3Igb24gTFRSIHBhZ2Ugc2hvdWxkIGJlIHVudG91Y2hlZCBzaW5jZSBsZWZ0IGxheW91dCAK
KyAgICAgICAgb3ZlcmZsb3cgaXMgc2V0IGFzIDAgZm9yIExUUiBwYWdlLgorCisgICAgICAgIFRl
c3RzOiBmYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRqdXN0Vmlld1NpemUp
OiBTYXZlIG5lZ2F0aXZlIG9mIGxlZnQgbGF5b3V0IG92ZXJmbG93IGFzIHNjcm9sbCBYIG9yaWdp
bi4gQW5kIGluY2x1ZGVzIGxlZnQgbGF5b3V0IG92ZXJmbG93IGludG8gZG9jdW1lbnQgc2l6ZS4K
KyAgICAgICAgKiBwYWdlL21hYy9XZWJDb3JlRnJhbWVWaWV3Lmg6IEFkZCBtZXRob2RzIGZvciBz
ZXR0aW5nIGFuZCBnZXR0aW5nIHNjcm9sbCBYIG9yaWdpbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKTog
TWludXMgc2Nyb2xsIFggb3JpZ2luIGZyb20gbWF4aW11bSBob3Jpem9udGFsIHNjcm9sbCBwb3Np
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Om1pbmltdW1TY3JvbGxQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjphZGp1c3RTY3JvbGxQb3NpdGlvbldp
dGhpblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbFZpZXc6OndoZWVsRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6cGFpbnRSb290Qm94RGVjb3JhdGlvbnMpOiBJbmNsdWRlIGxlZnQgbGF5b3V0IG92ZXJm
bG93IGludG8gY2FudmFzIHNpemUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bGF5b3V0KTogU2F2ZSBsZWZ0IGxheW91
dCBvdmVyZmxvdy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY0xlZnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6ZG9jV2lkdGgpOiBJbmNsdWRlIGxlZnQgbGF5b3V0
IG92ZXJmbG93IGludG8gZG9jIHdpZHRoIGZvciBSVEwgcGFnZS4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5oOgorCiAyMDEwLTExLTE3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzIy
MjguCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCmluZGV4IGZlMGJlNmEuLjY1NDg4ODQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC00NDUsNyArNDQ1LDE1IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RWaWV3U2l6ZSgpCiAgICAg
aWYgKCFyb290KQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRDb250ZW50c1NpemUoSW50U2l6
ZShyb290LT5yaWdodExheW91dE92ZXJmbG93KCksIHJvb3QtPmJvdHRvbUxheW91dE92ZXJmbG93
KCkpKTsKKyAgICBTY3JvbGxWaWV3OjpzZXRTY3JvbGxPcmlnaW5YKC1yb290LT5sZWZ0TGF5b3V0
T3ZlcmZsb3coKSk7CisgICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShyb290LT5yaWdodExheW91
dE92ZXJmbG93KCkgLSByb290LT5sZWZ0TGF5b3V0T3ZlcmZsb3coKSwgcm9vdC0+Ym90dG9tTGF5
b3V0T3ZlcmZsb3coKSk7CisgICAgLy8gVGFrZSBjYXJlIG9mIHRoZSBjYXNlIHdoZW4gY29udGVu
dHMgcmVtYWluIGJ1dCB0aGUgUmVuZGVyVmlldydzIGRpcmVjdGlvbiBjaGFuZ2UuCisgICAgLy8g
SW4gd2hpY2ggY2FzZSwgd2UgbmVlZCB0byB1cGRhdGUgc2Nyb2xsIGJhciBwb3NpdGlvbiwgZm9y
IGV4YW1wbGUsIGZyb20gbGVmdG1vc3QKKyAgICAvLyByaWdodG1vc3Qgd2hlbiBkaXJlY3Rpb24g
Y2hhbmdlcyBmcm9tIGxlZnQtdG8tcmlnaHQgdG8gcmlnaHQtdG8tbGVmdC4KKyAgICBpZiAoc2l6
ZSA9PSBjb250ZW50c1NpemUoKSAmJiByb290LT5kaXJlY3Rpb25DaGFuZ2VkKCkpCisgICAgICAg
IFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoKTsKKyAgICByb290LT5yZXNldERpcmVjdGlv
bkNoYW5nZWQoKTsKKyAgICBzZXRDb250ZW50c1NpemUoc2l6ZSk7CiB9CiAKIHZvaWQgRnJhbWVW
aWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJPYmplY3QqIG8sIFNjcm9sbGJhck1v
ZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oIGIvV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVW
aWV3LmgKaW5kZXggOTc3YjFhNy4uOGIyNTEwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL21h
Yy9XZWJDb3JlRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVW
aWV3LmgKQEAgLTMzLDYgKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLSAodm9pZClzZXRT
Y3JvbGxpbmdNb2RlczooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSloTW9kZSB2ZXJ0aWNhbDooV2Vi
Q29yZTo6U2Nyb2xsYmFyTW9kZSl2TW9kZSBhbmRMb2NrOihCT09MKWxvY2s7CiAtICh2b2lkKXNj
cm9sbGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKiloTW9kZSB2ZXJ0aWNhbDooV2Vi
Q29yZTo6U2Nyb2xsYmFyTW9kZSopdk1vZGU7CiAtICh2b2lkKXNldFNjcm9sbEJhcnNTdXBwcmVz
c2VkOihCT09MKXN1cHByZXNzZWQgcmVwYWludE9uVW5zdXBwcmVzczooQk9PTClyZXBhaW50Owor
LSAodm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Nyb2xsT3JpZ2luWDsKKy0gKGludClzY3Jv
bGxPcmlnaW5YOwogQGVuZAogCiBAcHJvdG9jb2wgV2ViQ29yZUZyYW1lVmlldwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAKaW5kZXggYzJmZDUxYS4uZTQ5YTg2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCkBAIC01Myw2ICs1Myw3IEBAIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXcoKQogICAgICwgbV9k
cmF3UGFuU2Nyb2xsSWNvbihmYWxzZSkKICAgICAsIG1fdXNlRml4ZWRMYXlvdXQoZmFsc2UpCiAg
ICAgLCBtX3BhaW50c0VudGlyZUNvbnRlbnRzKGZhbHNlKQorICAgICwgbV9zY3JvbGxPcmlnaW5Y
KDApCiB7CiAgICAgcGxhdGZvcm1Jbml0KCk7CiB9CkBAIC0yNzIsOSArMjczLDIyIEBAIHZvaWQg
U2Nyb2xsVmlldzo6c2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAKIElu
dFBvaW50IFNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAg
SW50U2l6ZSBtYXhpbXVtT2Zmc2V0ID0gY29udGVudHNTaXplKCkgLSB2aXNpYmxlQ29udGVudFJl
Y3QoKS5zaXplKCk7CisgICAgSW50UG9pbnQgbWF4aW11bU9mZnNldChjb250ZW50c1dpZHRoKCkg
LSB2aXNpYmxlV2lkdGgoKSAtIG1fc2Nyb2xsT3JpZ2luWCwgY29udGVudHNIZWlnaHQoKSAtIHZp
c2libGVIZWlnaHQoKSk7CiAgICAgbWF4aW11bU9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7
Ci0gICAgcmV0dXJuIEludFBvaW50KG1heGltdW1PZmZzZXQud2lkdGgoKSwgbWF4aW11bU9mZnNl
dC5oZWlnaHQoKSk7CisgICAgcmV0dXJuIG1heGltdW1PZmZzZXQ7Cit9CisKK0ludFBvaW50IFNj
cm9sbFZpZXc6Om1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIElu
dFBvaW50KC1tX3Njcm9sbE9yaWdpblgsIDApOworfQorCitJbnRQb2ludCBTY3JvbGxWaWV3Ojph
ZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2lu
dCkgY29uc3QKK3sKKyAgICBJbnRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvaW50
LnNocnVua1RvKG1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKKyAgICBuZXdTY3JvbGxQb3NpdGlv
biA9IG5ld1Njcm9sbFBvc2l0aW9uLmV4cGFuZGVkVG8obWluaW11bVNjcm9sbFBvc2l0aW9uKCkp
OworICAgIG5ld1Njcm9sbFBvc2l0aW9uLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKyAgICByZXR1
cm4gbmV3U2Nyb2xsUG9zaXRpb247CiB9CiAKIGludCBTY3JvbGxWaWV3OjpzY3JvbGxTaXplKFNj
cm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdApAQCAtMjk3LDcgKzMxMSw3IEBA
IHZvaWQgU2Nyb2xsVmlldzo6dmFsdWVDaGFuZ2VkKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAg
IEludFNpemUgbmV3T2Zmc2V0ID0gbV9zY3JvbGxPZmZzZXQ7CiAgICAgaWYgKHNjcm9sbGJhcikg
ewogICAgICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIpCi0gICAgICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoc2Nyb2xsYmFyLT52YWx1ZSgp
KTsKKyAgICAgICAgICAgIG5ld09mZnNldC5zZXRXaWR0aChzY3JvbGxiYXItPnZhbHVlKCkgLSBt
X3Njcm9sbE9yaWdpblgpOwogICAgICAgICBlbHNlIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgICAgICBuZXdPZmZzZXQuc2V0SGVpZ2h0
KHNjcm9sbGJhci0+dmFsdWUoKSk7CiAgICAgfQpAQCAtMzQyLDggKzM1Niw3IEBAIHZvaWQgU2Ny
b2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQog
ICAgIH0KICNlbmRpZgogCi0gICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQ
b2ludC5zaHJ1bmtUbyhtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7Ci0gICAgbmV3U2Nyb2xsUG9z
aXRpb24uY2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0
aW9uID0gYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShzY3JvbGxQb2ludCk7CiAKICAg
ICBpZiAobmV3U2Nyb2xsUG9zaXRpb24gPT0gc2Nyb2xsUG9zaXRpb24oKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDY0LDEwICs0NzcsMTAgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxi
YXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1faW5VcGRhdGVTY3JvbGxiYXJzID0gdHJ1ZTsKLSAgICBJbnRTaXplIG1heFNjcm9sbFBvc2l0
aW9uKGNvbnRlbnRzV2lkdGgoKSAtIHZpc2libGVXaWR0aCgpLCBjb250ZW50c0hlaWdodCgpIC0g
dmlzaWJsZUhlaWdodCgpKTsKLSAgICBJbnRTaXplIHNjcm9sbCA9IGRlc2lyZWRPZmZzZXQuc2hy
dW5rVG8obWF4U2Nyb2xsUG9zaXRpb24pOwotICAgIHNjcm9sbC5jbGFtcE5lZ2F0aXZlVG9aZXJv
KCk7Ci0gCisKKyAgICBJbnRQb2ludCBzY3JvbGxQb2ludCA9IGFkanVzdFNjcm9sbFBvc2l0aW9u
V2l0aGluUmFuZ2UoSW50UG9pbnQoZGVzaXJlZE9mZnNldC53aWR0aCgpLCBkZXNpcmVkT2Zmc2V0
LmhlaWdodCgpKSk7CisgICAgSW50U2l6ZSBzY3JvbGwoc2Nyb2xsUG9pbnQueCgpLCBzY3JvbGxQ
b2ludC55KCkpOworCiAgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBp
bnQgY2xpZW50V2lkdGggPSB2aXNpYmxlV2lkdGgoKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Ny
b2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzV2lkdGgoKSA+IGNsaWVudFdpZHRoKTsKQEAgLTQ4
NSw3ICs0OTgsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgSW50
U2l6ZSYgZGVzaXJlZE9mZnNldCkKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+
c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9s
bGJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7
CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRXaWR0
aCwgY29udGVudHNXaWR0aCgpKTsKLSAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRW
YWx1ZShzY3JvbGwud2lkdGgoKSwgU2Nyb2xsYmFyOjpOb3RGcm9tU2Nyb2xsQW5pbWF0b3IpOwor
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFZhbHVlKHNjcm9sbC53aWR0aCgpICsg
bV9zY3JvbGxPcmlnaW5YLCBTY3JvbGxiYXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CiAgICAg
ICAgIGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICAgICAgbV9ob3Jpem9udGFs
U2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbihmYWxzZSk7IAogICAgIH0gCkBAIC0x
MDA5LDYgKzEwMjIsMjIgQEAgdm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVQYW5TY3JvbGxJY29uKCkK
ICAgICBob3N0V2luZG93KCktPmludmFsaWRhdGVDb250ZW50c0FuZFdpbmRvdyhJbnRSZWN0KG1f
cGFuU2Nyb2xsSWNvblBvaW50LCBJbnRTaXplKHBhbkljb25TaXplTGVuZ3RoLCBwYW5JY29uU2l6
ZUxlbmd0aCkpLCB0cnVlIC8qaW1tZWRpYXRlKi8pOwogfQogCisKK3ZvaWQgU2Nyb2xsVmlldzo6
c2V0U2Nyb2xsT3JpZ2luWChpbnQgeCkKK3sKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKKyAg
ICAgICAgcGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKHgpOworICAgIGVsc2UKKyAgICAgICAgbV9z
Y3JvbGxPcmlnaW5YID0geDsKK30KKwordm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJz
KCkKK3sKKyAgICBpZiAoIXBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHVwZGF0ZVNjcm9sbGJh
cnMoc2Nyb2xsT2Zmc2V0KCkpOworICAgIC8vIEZJWE1FOiBuZWVkIGNvcnJlc3BvbmRpbmcgZnVu
Y3Rpb25hbGl0eSBmcm9tIHBsYXRmb3JtV2lkZ2V0LgorfQorCiAjaWYgIVBMQVRGT1JNKFdYKSAm
JiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShFRkwpCiAKIHZv
aWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1Jbml0KCkKQEAgLTEwMzksNiArMTA2OCwxMCBAQCB2b2lk
IFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoYm9vbCkKIHsKIH0K
IAordm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50KQoreworfQor
CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShXWCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKaW5kZXggODE4NmI3Ny4uZDUyZjQxNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAg
LTE1NSw2ICsxNTUsOSBAQCBwdWJsaWM6CiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpOyB9CiAgICAgSW50
U2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5s
b2NhdGlvbigpIC0gSW50UG9pbnQoKTsgfSAvLyBHZXRzIHRoZSBzY3JvbGxlZCBwb3NpdGlvbiBh
cyBhbiBJbnRTaXplLiBDb252ZW5pZW50IGZvciBhZGRpbmcgdG8gb3RoZXIgc2l6ZXMuCiAgICAg
SW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7IC8vIFRoZSBtYXhpbXVtIHBv
c2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KKyAgICBJbnRQb2ludCBtaW5pbXVtU2Nyb2xs
UG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1pbmltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9s
bGVkIHRvLgorICAgIC8vIEFkanVzdCB0aGUgcGFzcyBpbiBzY3JvbGwgcG9zaXRpb24gd2l0aGlu
IHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0aW9ucy4KKyAgICBJbnRQb2ludCBhZGp1c3RT
Y3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNvbnN0IEludFBvaW50JikgY29uc3Q7IAogICAgIGlu
dCBzY3JvbGxYKCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS54KCk7IH0KICAgICBp
bnQgc2Nyb2xsWSgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpOyB9CiAgICAg
CkBAIC0yNzQsNiArMjc3LDkgQEAgcHJvdGVjdGVkOgogICAgIC8vIFNjcm9sbCB0aGUgY29udGVu
dCBieSBpbnZhbGlkYXRpbmcgZXZlcnl0aGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29u
dGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KTsKIAorICAgIHZvaWQgc2V0
U2Nyb2xsT3JpZ2luWChpbnQpOworICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFycygpOworCiBwcml2
YXRlOgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBS
ZWZQdHI8U2Nyb2xsYmFyPiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwpAQCAtMzA4LDYgKzMxNCwxMSBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3BhaW50c0VudGlyZUNvbnRlbnRzOwogCisgICAgLy8g
bV9zY3JvbGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlLiBBbmQgaXQgaXMgbmVnYXRpdmUgb2Yg
bGVmdCBsYXlvdXQKKyAgICAvLyBvdmVyZmxvdyBmb3IgUlRMIHBhZ2UuIEl0IGlzIG1haW5seSB1
c2VkIHRvIHNldCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKyAgICAvLyBwb3NpdGlvbiBmb3Ig
UlRMIHBhZ2UuCisgICAgaW50IG1fc2Nyb2xsT3JpZ2luWDsKKwogICAgIHZvaWQgaW5pdCgpOwog
ICAgIHZvaWQgZGVzdHJveSgpOwogCkBAIC0zMzUsNiArMzQ2LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIHBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoYm9vbCByZXBhaW50T25VbnN1cHBy
ZXNzKTsKICAgICB2b2lkIHBsYXRmb3JtUmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50
UmVjdCYsIGJvb2wgbm93KTsKICAgICBib29sIHBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdDsK
KyAgIAorICAgIHZvaWQgcGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCk7CiAKICNpZiBQTEFU
Rk9STShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxWaWV3TWFjLm1tCmluZGV4IDdlZjVkYzQuLjY4MDM3YTQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsVmlld01hYy5tbQpAQCAtMTMwLDkgKzEzMCw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6
cGxhdGZvcm1TZXRDb250ZW50c1NpemUoKQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKICAgICBpbnQgdyA9IG1fY29udGVudHNTaXplLndpZHRoKCk7CiAgICAgaW50IGggPSBtX2Nv
bnRlbnRzU2l6ZS5oZWlnaHQoKTsKLSAgICBMT0coRnJhbWVzLCAiJXAgJUAgYXQgdyAlZCBoICVk
XG4iLCBkb2N1bWVudFZpZXcoKSwgWyhpZClbZG9jdW1lbnRWaWV3KCkgY2xhc3NdIGNsYXNzTmFt
ZV0sIHcsIGgpOyAgICAgICAgICAgIAotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgbWF4KDAsIHcp
LCBtYXgoMCwgaCkgfTsgLy8gd29ya2Fyb3VuZCBmb3IgNDIxMzMxNAotICAgIFtkb2N1bWVudFZp
ZXcoKSBzZXRGcmFtZVNpemU6dGVtcFNpemVdOworICAgIExPRyhGcmFtZXMsICIlcCAlQCBhdCB3
ICVkIGggJWRcbiIsIGRvY3VtZW50VmlldygpLCBbKGlkKVtkb2N1bWVudFZpZXcoKSBjbGFzc10g
Y2xhc3NOYW1lXSwgdywgaCk7CisgICAgW2RvY3VtZW50VmlldygpIHNldEZyYW1lU2l6ZTpOU01h
a2VTaXplKG1heCgwLCB3KSwgbWF4KDAsIGgpKV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIH0KIApAQCAtMTQ3LDcgKzE0Niw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1T
ZXRTY3JvbGxiYXJzU3VwcHJlc3NlZChib29sIHJlcGFpbnRPblVuc3VwcHJlc3MpCiB2b2lkIFNj
cm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9s
bFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBOU1BvaW50
IHRlbXBQb2ludCA9IHsgbWF4KDAsIHNjcm9sbFBvaW50LngoKSksIG1heCgwLCBzY3JvbGxQb2lu
dC55KCkpIH07IC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0
LgorICAgIE5TUG9pbnQgdGVtcFBvaW50ID0gTlNNYWtlUG9pbnQobWF4KC1bc2Nyb2xsVmlldygp
IHNjcm9sbE9yaWdpblhdLCBzY3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgp
KSk7CiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07CiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KQEAgLTIwMiw0ICsyMDEsMTEgQEAgYm9vbCBTY3Jv
bGxWaWV3OjpwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgY29uc3QKICAgICByZXR1cm4gIVtwbGF0Zm9y
bVdpZGdldCgpIHdpbmRvd10gfHwgIVtbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIGlzVmlzaWJs
ZV07CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCB4
KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBbc2Nyb2xsVmlldygp
IHNldFNjcm9sbE9yaWdpblg6eF07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggOWJi
Nzc2NS4uYzJjNmQ0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0zMTIsNiArMzEyLDgg
QEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKICAgICAgICAgUmVuZGVyVmlldyogdmlld1JlbmRl
cmVyID0gdmlldygpOwogICAgICAgICBSZW5kZXJTdHlsZSogdmlld1N0eWxlID0gdmlld1JlbmRl
cmVyLT5zdHlsZSgpOwogICAgICAgICBpZiAoaXNSb290UmVuZGVyZXIgfHwgIWRvY3VtZW50KCkt
PmRpcmVjdGlvblNldE9uRG9jdW1lbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIGlmICh2aWV3
U3R5bGUtPmRpcmVjdGlvbigpICE9IHN0eWxlKCktPmRpcmVjdGlvbigpKQorICAgICAgICAgICAg
ICAgIHZpZXdSZW5kZXJlci0+c2V0RGlyZWN0aW9uQ2hhbmdlZCgpOwogICAgICAgICAgICAgdmll
d1N0eWxlLT5zZXREaXJlY3Rpb24oc3R5bGUoKS0+ZGlyZWN0aW9uKCkpOwogICAgICAgICAgICAg
aWYgKGlzQm9keVJlbmRlcmVyKQogICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmRvY3VtZW50
RWxlbWVudCgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5zZXREaXJlY3Rpb24oc3R5bGUoKS0+ZGly
ZWN0aW9uKCkpOwpAQCAtNzY2LDggKzc2OCw4IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludFJvb3RC
b3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAKICAg
ICAvLyBDU1MyIDE0LjI6CiAgICAgLy8gVGhlIGJhY2tncm91bmQgb2YgdGhlIGJveCBnZW5lcmF0
ZWQgYnkgdGhlIHJvb3QgZWxlbWVudCBjb3ZlcnMgdGhlIGVudGlyZSBjYW52YXMgaW5jbHVkaW5n
Ci0gICAgLy8gaXRzIG1hcmdpbnMuCi0gICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0KCk7Cisg
ICAgLy8gaXRzIG1hcmdpbnMsIGFuZCBpbmNsdWRpbmcgaXRzIGxlZnQgbGF5b3V0IG92ZXJmbG93
LgorICAgIGludCBieCA9IHR4IC0gbWFyZ2luTGVmdCgpICsgdmlldygpLT5sZWZ0TGF5b3V0T3Zl
cmZsb3coKTsKICAgICBpbnQgYnkgPSB0eSAtIG1hcmdpblRvcCgpOwogICAgIGludCBidyA9IG1h
eCh3ICsgbWFyZ2luTGVmdCgpICsgbWFyZ2luUmlnaHQoKSArIGJvcmRlckxlZnQoKSArIGJvcmRl
clJpZ2h0KCksIHJ3KTsKICAgICBpbnQgYmggPSBtYXgoaCArIG1hcmdpblRvcCgpICsgbWFyZ2lu
Qm90dG9tKCkgKyBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpLCByaCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCmluZGV4IDZiNGI2NWMuLjkzZDIxOTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwCkBAIC0xMzEsNyArMTMxLDggQEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogCiAg
ICAgLy8gUmVzZXQgb3ZlcmZsb3cgYW5kIHRoZW4gcmVwbGFjZSBpdCB3aXRoIGRvY1dpZHRoIGFu
ZCBkb2NIZWlnaHQuCiAgICAgbV9vdmVyZmxvdy5jbGVhcigpOwotICAgIGFkZExheW91dE92ZXJm
bG93KEludFJlY3QoMCwgMCwgZG9jV2lkdGgoKSwgZG9jSGVpZ2h0KCkpKTsKKyAgICBpbnQgbGVm
dE92ZXJmbG93ID0gZG9jTGVmdCgpOworICAgIGFkZExheW91dE92ZXJmbG93KEludFJlY3QobGVm
dE92ZXJmbG93LCAwLCBkb2NXaWR0aChsZWZ0T3ZlcmZsb3cpLCBkb2NIZWlnaHQoKSkpOwogCiAg
ICAgQVNTRVJUKGxheW91dERlbHRhKCkgPT0gSW50U2l6ZSgpKTsKICAgICBBU1NFUlQobV9sYXlv
dXRTdGF0ZURpc2FibGVDb3VudCA9PSAwKTsKQEAgLTYzMyw5ICs2MzQsMTUgQEAgaW50IFJlbmRl
clZpZXc6OmRvY0hlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIGg7CiB9CiAKLWludCBSZW5kZXJW
aWV3Ojpkb2NXaWR0aCgpIGNvbnN0CitpbnQgUmVuZGVyVmlldzo6ZG9jTGVmdCgpIGNvbnN0CiB7
Ci0gICAgaW50IHcgPSByaWdodG1vc3RQb3NpdGlvbigpOworICAgIC8vIENsaXAgb3V0IGxlZnQg
b3ZlcmZsb3cgaW4gTFRSIHBhZ2UuCisgICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSA/IDAgOiBzdGQ6Om1pbigwLCBsZWZ0bW9zdFBvc2l0aW9uKCkpOworfQorCitp
bnQgUmVuZGVyVmlldzo6ZG9jV2lkdGgoaW50IGxlZnRPdmVyZmxvdykgY29uc3QKK3sKKyAgICBp
bnQgdyA9IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHJpZ2h0bW9zdFBvc2l0
aW9uKCkgOiB3aWR0aCgpIC0gbGVmdE92ZXJmbG93OwogCiAgICAgZm9yIChSZW5kZXJCb3gqIGMg
PSBmaXJzdENoaWxkQm94KCk7IGM7IGMgPSBjLT5uZXh0U2libGluZ0JveCgpKSB7CiAgICAgICAg
IGludCBkdyA9IGMtPndpZHRoKCkgKyBjLT5tYXJnaW5MZWZ0KCkgKyBjLT5tYXJnaW5SaWdodCgp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDA3ZjkzM2YuLjYyYTg3NzcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmgKQEAgLTE2MSw2ICsxNjEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTW92
ZU9uc2NyZWVuKCk7CiAgICAgdm9pZCB3aWxsTW92ZU9mZnNjcmVlbigpOwogCisgICAgdm9pZCBz
ZXREaXJlY3Rpb25DaGFuZ2VkKCkge21fZGlyZWN0aW9uQ2hhbmdlZCA9IHRydWU7fQorICAgIGJv
b2wgZGlyZWN0aW9uQ2hhbmdlZCgpIHtyZXR1cm4gbV9kaXJlY3Rpb25DaGFuZ2VkO30KKyAgICB2
b2lkIHJlc2V0RGlyZWN0aW9uQ2hhbmdlZCgpIHttX2RpcmVjdGlvbkNoYW5nZWQgPSBmYWxzZTt9
CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yKiBjb21wb3NpdG9yKCk7CiAgICAgYm9vbCB1c2VzQ29tcG9zaXRpbmcoKSBjb25zdDsK
QEAgLTE3NCw3ICsxNzgsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVwYWludChjb25z
dCBJbnRSZWN0JiByKSBjb25zdDsKICAgICAgICAgCiAgICAgaW50IGRvY0hlaWdodCgpIGNvbnN0
OwotICAgIGludCBkb2NXaWR0aCgpIGNvbnN0OworICAgIGludCBkb2NMZWZ0KCkgY29uc3Q7Cisg
ICAgaW50IGRvY1dpZHRoKGludCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgbWF5
IG9ubHkgYmUgYWNjZXNzZWQgYnkgTGF5b3V0U3RhdGVNYWludGFpbmVyLgogICAgIGJvb2wgcHVz
aExheW91dFN0YXRlKFJlbmRlckJveCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIG9mZnNldCwg
aW50IHBhZ2VIZWlnaHQgPSAwLCBib29sIHBhZ2VIZWlnaHRDaGFuZ2VkID0gZmFsc2UsIENvbHVt
bkluZm8qIGNvbEluZm8gPSAwKQpAQCAtMjM1LDYgKzI0MCw3IEBAIHByaXZhdGU6CiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIE93blB0cjxSZW5kZXJMYXllckNvbXBvc2l0
b3I+IG1fY29tcG9zaXRvcjsKICNlbmRpZgorICAgIGJvb2wgbV9kaXJlY3Rpb25DaGFuZ2VkOwog
fTsKIAogaW5saW5lIFJlbmRlclZpZXcqIHRvUmVuZGVyVmlldyhSZW5kZXJPYmplY3QqIG9iamVj
dCkKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggNGFjZDdlNS4uNDhhZGYzZSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0xMS0x
NyAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQtdG8tbGVmdCBwYWdlcyBzaG91bGQgYmUg
c2Nyb2xsYWJsZSB0byByZXZlYWwgbGVmdCBvdmVyZmxvdy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTU2CisKKyAgICAgICAgU2V0IGFuZCBnZXQg
dGhlIG9yaWdpbmFsIHgtYXhpcyBzY3JvbGwgcG9zaXRpb24gYW5kIHJlc2V0IHNjcm9sbCBwb3Np
dGlvbiBvbiBIT01FL0VORCBrZXkgcHJlc3MuCisgICAgICAgIE1vZGlmeSBXZWJGcmFtZVZpZXcg
dG8gc3VwcG9ydCBzZXR0aW5nIHRoZSBpbml0aWFsIGhvcml6b250YWwgc2Nyb2xsZXIncyB0aHVt
YiBwb3NpdGlvbiB0byB0aGUgcmlnaHQgZm9yCisgICAgICAgIHBhZ2VzIHdpdGggYSBsZWZ0IG92
ZXJmbG93LgorCisgICAgICAgICogV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW06
CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyByZWZyZXNoSW5pdGlhbFNjcm9s
bGJhclBvc2l0aW9uXSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyB1cGRh
dGVTY3JvbGxlcnNdKToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHJlZmxl
Y3RTY3JvbGxlZENsaXBWaWV3Ol0pOgorICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcgc2V0U2Nyb2xsT3JpZ2luWDpdKToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNW
aWV3IHNjcm9sbE9yaWdpblhdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF9zY3JvbGxUb0JlZ2lubmluZ09mRG9jdW1lbnRdKToK
KyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF9zY3JvbGxUb0VuZE9mRG9jdW1lbnRdKToKKwogMjAx
MC0xMS0xNiAgU3RlcGhhbmllIExld2lzICA8c2xld2lzQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcuaCBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWlj
U2Nyb2xsQmFyc1ZpZXcuaAppbmRleCBjMjg5YTA0Li5iODk0NjJkIDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3LmgKKysrIGIvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5oCkBAIC01OCw0ICs1OCwxMCBAQCBz
dHJ1Y3QgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3UHJpdmF0ZTsKIC8vIHZpc2libGUgaXMgdGhh
dCB0aGV5IGhhdmUgYmVlbiBzdXBwcmVzc2VkIGJ5IHNldEFsd2F5c0hpZGVIb3Jpem9udGFsL1Zl
cnRpY2FsU2Nyb2xsZXI6LgogLSAoQk9PTClob3Jpem9udGFsU2Nyb2xsaW5nQWxsb3dlZDsKIC0g
KEJPT0wpdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkOworCisvLyBSZXR1cm5zIFlFUyBpZiB3ZSdy
ZSBjdXJyZW50bHkgaW4gdGhlIG1pZGRsZSBvZiBwcm9ncmFtbWF0aWNhbGx5IG1vdmluZyB0aGUK
Ky8vIHNjcm9sbGJhci4KKy8vIE5PVEU6IEFzIG9wcG9zZWQgdG8gb3RoZXIgcGxhY2VzIGluIHRo
ZSBjb2RlLCBwcm9ncmFtbWF0aWNhbGx5IG1vdmluZyB0aGUKKy8vIHNjcm9sbGVycyBmcm9tIGlu
c2lkZSB0aGlzIGNsYXNzIHNob3VsZCBub3QgZmlyZSBKUyBldmVudHMuCistIChCT09MKWluUHJv
Z3JhbWF0aWNTY3JvbGw7CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNT
Y3JvbGxCYXJzVmlldy5tbQppbmRleCA3NDQzOWRkLi40ODBkMTQ2IDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCisrKyBiL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0KQEAgLTYyLDYgKzYyLDE1IEBA
IHN0cnVjdCBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdQcml2YXRlIHsKICAgICBib29sIGFsd2F5
c0hpZGVWZXJ0aWNhbFNjcm9sbGVyOwogICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGluZ0FsbG93
ZWRCdXRTY3JvbGxlckhpZGRlbjsKICAgICBib29sIHZlcnRpY2FsU2Nyb2xsaW5nQWxsb3dlZEJ1
dFNjcm9sbGVySGlkZGVuOworCisgICAgLy8gc2Nyb2xsT3JpZ2luWCBpcyAwIGZvciBMVFIgcGFn
ZSBhbmQgaXMgdGhlIG5lZ2F0aXZlIG9mIGxlZnQgbGF5b3V0IG92ZXJmbG93IHZhbHVlIGZvciBS
VEwgcGFnZS4KKyAgICBpbnQgc2Nyb2xsT3JpZ2luWDsKKworICAgIC8vIEZsYWcgdG8gaW5kaWNh
dGUgdGhhdCB0aGUgc2Nyb2xsYmFyIHRodW1iJ3MgaW5pdGlhbCBwb3NpdGlvbiBuZWVkcyB0bwor
ICAgIC8vIGJlIG1hbnVhbGx5IHNldC4KKyAgICBib29sIHNldFNjcm9sbGJhclRodW1iSW5pdGlh
bFBvc2l0aW9uOworCisgICAgYm9vbCBpblByb2dyYW1tYXRpY1Njcm9sbDsKIH07CiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcKQEAgLTE0OSw2ICsxNTgsMTEgQEAg
c3RydWN0IFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld1ByaXZhdGUgewogICAgIHJldHVybiBfcHJp
dmF0ZS0+dmVydGljYWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRkZW4gfHwgW3NlbGYg
aGFzVmVydGljYWxTY3JvbGxlcl07CiB9CiAKKy0gKEJPT0wpaW5Qcm9ncmFtYXRpY1Njcm9sbAor
eworICAgIHJldHVybiBfcHJpdmF0ZS0+aW5Qcm9ncmFtbWF0aWNTY3JvbGw7Cit9CisKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAoV2ViSW50ZXJuYWwp
CkBAIC0yMDEsNiArMjE1LDI5IEBAIHN0cnVjdCBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdQcml2
YXRlIHsKICNlbmRpZgogfQogCistICh2b2lkKXJlZnJlc2hJbml0aWFsU2Nyb2xsYmFyUG9zaXRp
b24KK3sKKyAgICBpZiAoX3ByaXZhdGUtPnNldFNjcm9sbGJhclRodW1iSW5pdGlhbFBvc2l0aW9u
KSB7CisgICAgICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsK
KyAgICAgICAgTlNSZWN0IGRvY3VtZW50UmVjdCA9IFtkb2N1bWVudFZpZXcgYm91bmRzXTsKKwor
ICAgICAgICAvLyBJZiBzY3JvbGxPcmlnaW5YIGlzIG5vbi16ZXJvIHRoYXQgbWVhbnMgdGhhdCB0
aGVyZSdzIGEgbGVmdCBvdmVyZmxvdyA8PT4gdGhpcyBpcyBhbiBSVEwgZG9jdW1lbnQgYW5kIHRo
dXMKKyAgICAgICAgLy8gdGhlIGluaXRpYWwgcG9zaXRpb24gb2YgdGhlIGhvcml6b250YWwgc2Ny
b2xsYmFyIHRodW1iIHNob3VsZCBiZSBvbiB0aGUgcmlnaHQuCisgICAgICAgIC8vIEZJWE1FOiBJ
ZiBrbm93bGVkZ2Ugb2YgZG9jdW1lbnQgZGlyZWN0aW9uYWxpdHkgaXMgZXZlciBwcm9wYWdhdGVk
IHRvIHRoZSBzY3JvbGwgdmlldywgaXQgcHJvYmFibHkgbWFrZXMKKyAgICAgICAgLy8gbW9yZSBz
ZW5zZSB0byB1c2UgdGhlIGRpcmVjdGlvbmFsaXR5IGRpcmVjdGx5IGluIHRoZSBiZWxvdyBpZiBz
dGF0ZW1lbnQsIHJhdGhlciB0aGFuIGRvaW5nIHNvIGluZGlyZWN0bHkKKyAgICAgICAgLy8gdGhy
b3VnaCBzY3JvbGxPcmlnaW5YLgorICAgICAgICBpZiAoX3ByaXZhdGUtPnNjcm9sbE9yaWdpblgg
IT0gMCkgeworICAgICAgICAgICAgLy8gVGhlIGNhbGwgdG8gW05TVmlldyBzY3JvbGxQb2ludDpd
IGZpcmVzIG9mZiBub3RpZmljYXRpb24gdGhlIGhhbmRsZXIgZm9yIHdoaWNoIG5lZWRzIHRvIGtu
b3cgdGhhdAorICAgICAgICAgICAgLy8gd2UncmUgc2V0dGluZyB0aGUgaW5pdGlhbCBzY3JvbGwg
cG9zaXRpb24gc28gaXQgZG9lc24ndCBpbnRlcnByZXQgdGhpcyBhcyBhIHVzZXIgYWN0aW9uIGFu
ZAorICAgICAgICAgICAgLy8gZmlyZSBvZmYgYSBKUyBldmVudC4KKyAgICAgICAgICAgIF9wcml2
YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IHRydWU7CisgICAgICAgICAgICBbZG9jdW1lbnRW
aWV3IHNjcm9sbFBvaW50Ok5TTWFrZVBvaW50KE5TTWF4WChkb2N1bWVudFJlY3QpIC0gTlNXaWR0
aChbc2VsZiBjb250ZW50Vmlld0ZyYW1lXSksIDApXTsKKyAgICAgICAgICAgIF9wcml2YXRlLT5p
blByb2dyYW1tYXRpY1Njcm9sbCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIF9wcml2YXRl
LT5zZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlvbiA9IGZhbHNlOworICAgIH0KK30KKwog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNNYXhVcGRhdGVTY3JvbGxiYXJzUGFzcyA9IDI7CiAKIC0g
KHZvaWQpdXBkYXRlU2Nyb2xsZXJzCkBAIC0zMDIsNiArMzM5LDEyIEBAIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjTWF4VXBkYXRlU2Nyb2xsYmFyc1Bhc3MgPSAyOwogICAgIGlmIChoYXNIb3Jpem9u
dGFsU2Nyb2xsZXIgIT0gbmV3SGFzSG9yaXpvbnRhbFNjcm9sbGVyKSB7CiAgICAgICAgIF9wcml2
YXRlLT5pblVwZGF0ZVNjcm9sbGVycyA9IFlFUzsKICAgICAgICAgW3NlbGYgc2V0SGFzSG9yaXpv
bnRhbFNjcm9sbGVyOm5ld0hhc0hvcml6b250YWxTY3JvbGxlcl07CisgICAgICAgIAorICAgICAg
ICAvLyBGb3IgUlRMIGRvY3VtZW50cywgd2UgbmVlZCB0byBzZXQgdGhlIGluaXRpYWwgcG9zaXRp
b24gb2YgdGhlCisgICAgICAgIC8vIGhvcml6b250YWwgc2Nyb2xsYmFyIHRodW1iIHRvIGJlIG9u
IHRoZSByaWdodC4KKyAgICAgICAgaWYgKG5ld0hhc0hvcml6b250YWxTY3JvbGxlcikKKyAgICAg
ICAgICAgIF9wcml2YXRlLT5zZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlvbiA9IHRydWU7
CisgICAgICAgIAogICAgICAgICBfcHJpdmF0ZS0+aW5VcGRhdGVTY3JvbGxlcnMgPSBOTzsKICAg
ICAgICAgbmVlZHNMYXlvdXQgPSBZRVM7CiAgICAgfQpAQCAtMzY0LDYgKzQwNywxMSBAQCBzdGF0
aWMgY29uc3QgdW5zaWduZWQgY01heFVwZGF0ZVNjcm9sbGJhcnNQYXNzID0gMjsKICAgICB9CiAj
ZW5kaWYKIAorICAgIC8vIFRoZSBjYWxsIHRvIFtOU1ZpZXcgcmVmbGVjdFNjcm9sbGVkQ2xpcFZp
ZXddIHNldHMgdGhlIHNjcm9sbGJhciB0aHVtYgorICAgIC8vIHBvc2l0aW9uIHRvIDAgKHRoZSBs
ZWZ0KSB3aGVuIHRoZSB2aWV3IGlzIGluaXRpYWxseSBkaXNwbGF5ZWQuCisgICAgLy8gVGhpcyBj
YWxsIHVwZGF0ZXMgdGhlIGluaXRpYWwgcG9zaXRpb24gY29ycmVjdGx5LgorICAgIFtzZWxmIHJl
ZnJlc2hJbml0aWFsU2Nyb2xsYmFyUG9zaXRpb25dOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKSAmJiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNWaWV3ICpk
b2N1bWVudFZpZXcgPSBbc2VsZiBkb2N1bWVudFZpZXddOwogICAgIGlmIChbZG9jdW1lbnRWaWV3
IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pIHsKQEAgLTUyNSw0ICs1NzMsMjIg
QEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNNYXhVcGRhdGVTY3JvbGxiYXJzUGFzcyA9IDI7CiAg
ICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkXTsKIH0KIAorLSAodm9pZClz
ZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Nyb2xsT3JpZ2luWAoreworICAgIF9wcml2YXRlLT5zY3Jv
bGxPcmlnaW5YID0gc2Nyb2xsT3JpZ2luWDsKKyAgICAKKyAgICBpZCBkb2NWaWV3ID0gW3NlbGYg
ZG9jdW1lbnRWaWV3XTsKKyAgICBpZiAoc2Nyb2xsT3JpZ2luWCAhPSBbZG9jVmlldyBib3VuZHNd
Lm9yaWdpbi54KSB7CisgICAgICAgIC8vICItW3NlbGYgc2Nyb2xsT3JpZ2luWF0iIGlzIGVxdWFs
IHRvIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdy4KKyAgICAgICAgLy8gTWFrZSBEb2N1bWVudCBi
b3VuZHMgb3JpZ2luIHggY29vcmRpbmF0ZSBjb3JyZXNwb25kIHRvIHRoZSBsZWZ0IG92ZXJmbG93
IHNvIHRoZSBlbnRpcmUgY2FudmFzIGlzIGNvdmVyZWQgYnkgdGhlIGRvY3VtZW50LgorICAgICAg
ICBbZG9jVmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9pbnQoLXNjcm9sbE9yaWdpblgsIFtk
b2NWaWV3IGJvdW5kc10ub3JpZ2luLnkpXTsKKyAgICB9CisKK30KKworLSAoaW50KXNjcm9sbE9y
aWdpblgKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPnNjcm9sbE9yaWdpblg7Cit9CisKIEBlbmQK
ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4IDBkYjEyYzAuLjQwZWUwYjEgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KKysrIGIvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAtNTM2LDYgKzUzNiw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywg
Q2xhc3Mgb2JqQ0NsCiAgICAgaWYgKCFbc2VsZiBfaXNTY3JvbGxhYmxlXSkKICAgICAgICAgcmV0
dXJuIE5POwogICAgIE5TUG9pbnQgcG9pbnQgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVu
dFZpZXddIGZyYW1lXS5vcmlnaW47CisgICAgcG9pbnQueCArPSBbW3NlbGYgX3Njcm9sbFZpZXdd
IHNjcm9sbE9yaWdpblhdOwogICAgIHJldHVybiBbW3NlbGYgX2NvbnRlbnRWaWV3XSBfc2Nyb2xs
VG86JnBvaW50IGFuaW1hdGU6WUVTXTsKIH0KIApAQCAtNTQ3LDYgKzU0OCw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBl
cywgQ2xhc3Mgb2JqQ0NsCiAgICAgICAgIHJldHVybiBOTzsKICAgICBOU1JlY3QgZnJhbWUgPSBb
W1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVudFZpZXddIGZyYW1lXTsKICAgICBOU1BvaW50IHBv
aW50ID0gTlNNYWtlUG9pbnQoZnJhbWUub3JpZ2luLngsIE5TTWF4WShmcmFtZSkpOworICAgIHBv
aW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmlnaW5YXTsKICAgICByZXR1cm4g
W1tzZWxmIF9jb250ZW50Vmlld10gX3Njcm9sbFRvOiZwb2ludCBhbmltYXRlOllFU107CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBlYzI0NzNmLi4wN2U0ODc2IDEwMDY0NAot
LS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMTk4LDggKzExOTgsMTEgQEAgc3RhdGljIHZvaWQg
X3VwZGF0ZU1vdXNlb3ZlclRpbWVyQ2FsbGJhY2soQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZv
aWQgKmluZm8pCiAKIC0gKHZvaWQpX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkCiB7CisgICAgV2ViVmll
dyAqd2ViVmlldyA9IFtzZWxmIF93ZWJWaWV3XTsKKyAgICBXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcgKnNjcm9sbFZpZXcgPSBbW1t3ZWJWaWV3IG1haW5GcmFtZV0gZnJhbWVWaWV3XSBfc2Nyb2xs
Vmlld107CisKICAgICBOU1BvaW50IG9yaWdpbiA9IFtbc2VsZiBzdXBlcnZpZXddIGJvdW5kc10u
b3JpZ2luOwotICAgIGlmICghTlNFcXVhbFBvaW50cyhfcHJpdmF0ZS0+bGFzdFNjcm9sbFBvc2l0
aW9uLCBvcmlnaW4pKSB7CisgICAgaWYgKCFOU0VxdWFsUG9pbnRzKF9wcml2YXRlLT5sYXN0U2Ny
b2xsUG9zaXRpb24sIG9yaWdpbikgJiYgIVtzY3JvbGxWaWV3IGluUHJvZ3JhbWF0aWNTY3JvbGxd
KSB7CiAgICAgICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkg
ewogICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogY29yZVZpZXcgPSBjb3JlRnJhbWUtPnZpZXco
KSkgewogI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgpAQCAtMTIxNCw3ICsxMjE3LDYgQEAgc3Rh
dGljIHZvaWQgX3VwZGF0ZU1vdXNlb3ZlclRpbWVyQ2FsbGJhY2soQ0ZSdW5Mb29wVGltZXJSZWYg
dGltZXIsIHZvaWQgKmluZm8pCiAgICAgCiAgICAgICAgIFtfcHJpdmF0ZS0+Y29tcGxldGlvbkNv
bnRyb2xsZXIgZW5kUmV2ZXJ0aW5nQ2hhbmdlOk5PIG1vdmVMZWZ0Ok5PXTsKICAgICAgICAgCi0g
ICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbc2VsZiBfd2ViVmlld107CiAgICAgICAgIFtbd2Vi
VmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IGRpZFNjcm9sbERvY3Vt
ZW50SW5GcmFtZVZpZXc6W3NlbGYgX2ZyYW1lVmlld11dOwogICAgIH0KICAgICBfcHJpdmF0ZS0+
bGFzdFNjcm9sbFBvc2l0aW9uID0gb3JpZ2luOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74338</attachid>
            <date>2010-11-18 18:39:53 -0800</date>
            <delta_ts>2010-11-24 05:35:01 -0800</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>23556.patch.v2</filename>
            <type>text/plain</type>
            <size>67265</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjM1OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMTEtMTggIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0
LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZs
b3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1
NgorCisgICAgICAgIEZvciBSVEwgcGFnZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQg
aW5jbHVkZSBpdCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQu
IFVzZSB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgd2hlbiBzY3JvbGwgYW5kIHBhaW50CisgICAg
ICAgIHRoZSBwYWdlLiBCZWhhdmlvciBvbiBMVFIgcGFnZSBzaG91bGQgYmUgdW50b3VjaGVkIHNp
bmNlIGxlZnQgbGF5b3V0IAorICAgICAgICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBh
Z2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ob3Jp
em9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vaG9y
aXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L3JpZ2h0LW92ZXJmbG93LWluLXJ0bC5odG1sCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplKTogU2F2ZSBu
ZWdhdGl2ZSBvZiBsZWZ0IGxheW91dCBvdmVyZmxvdyBhcyBzY3JvbGwgWCBvcmlnaW4uIEFuZCBp
bmNsdWRlcyBsZWZ0IGxheW91dCBvdmVyZmxvdyBpbnRvIGRvY3VtZW50IHNpemUuCisgICAgICAg
ICogcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oOiBBZGQgbWV0aG9kcyBmb3Igc2V0dGluZyBh
bmQgZ2V0dGluZyBzY3JvbGwgWCBvcmlnaW4uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpTY3JvbGxWaWV3KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6IE1pbnVzIHNj
cm9sbCBYIG9yaWdpbiBmcm9tIG1heGltdW0gaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24uCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjptaW5pbXVtU2Nyb2xsUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luWCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnN0
eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRSb290Qm94
RGVjb3JhdGlvbnMpOiBJbmNsdWRlIGxlZnQgbGF5b3V0IG92ZXJmbG93IGludG8gY2FudmFzIHNp
emUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVmlldzo6bGF5b3V0KTogU2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdy4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6ZG9jV2lkdGgpOiBJbmNsdWRlIGxlZnQgbGF5b3V0IG92ZXJmbG93IGludG8gZG9j
IHdpZHRoIGZvciBSVEwgcGFnZS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2V0RGlyZWN0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpkaXJlY3Rpb25DaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OnJlc2V0RGlyZWN0aW9uQ2hhbmdlZCk6CisKIDIwMTAtMTEtMTgg
IEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUnVzc2VsbC4KSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA3MjMyNSkKKysrIFdl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDUsNyArNDQ1LDE1
IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RWaWV3U2l6ZSgpCiAgICAgaWYgKCFyb290KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBzZXRDb250ZW50c1NpemUoSW50U2l6ZShyb290LT5yaWdodExh
eW91dE92ZXJmbG93KCksIHJvb3QtPmJvdHRvbUxheW91dE92ZXJmbG93KCkpKTsKKyAgICBTY3Jv
bGxWaWV3OjpzZXRTY3JvbGxPcmlnaW5YKC1yb290LT5sZWZ0TGF5b3V0T3ZlcmZsb3coKSk7Cisg
ICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShyb290LT5yaWdodExheW91dE92ZXJmbG93KCkgLSBy
b290LT5sZWZ0TGF5b3V0T3ZlcmZsb3coKSwgcm9vdC0+Ym90dG9tTGF5b3V0T3ZlcmZsb3coKSk7
CisgICAgLy8gVGFrZSBjYXJlIG9mIHRoZSBjYXNlIHdoZW4gY29udGVudHMgcmVtYWluIGJ1dCB0
aGUgUmVuZGVyVmlldydzIGRpcmVjdGlvbiBjaGFuZ2UuCisgICAgLy8gSW4gd2hpY2ggY2FzZSwg
d2UgbmVlZCB0byB1cGRhdGUgc2Nyb2xsIGJhciBwb3NpdGlvbiwgZm9yIGV4YW1wbGUsIGZyb20g
bGVmdG1vc3QKKyAgICAvLyByaWdodG1vc3Qgd2hlbiBkaXJlY3Rpb24gY2hhbmdlcyBmcm9tIGxl
ZnQtdG8tcmlnaHQgdG8gcmlnaHQtdG8tbGVmdC4KKyAgICBpZiAoc2l6ZSA9PSBjb250ZW50c1Np
emUoKSAmJiByb290LT5kaXJlY3Rpb25DaGFuZ2VkKCkpCisgICAgICAgIFNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbGJhcnMoKTsKKyAgICByb290LT5yZXNldERpcmVjdGlvbkNoYW5nZWQoKTsKKyAg
ICBzZXRDb250ZW50c1NpemUoc2l6ZSk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjphcHBseU92ZXJm
bG93VG9WaWV3cG9ydChSZW5kZXJPYmplY3QqIG8sIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3Jv
bGxiYXJNb2RlJiB2TW9kZSkKSW5kZXg6IFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmll
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oCShy
ZXZpc2lvbiA3MjMyNSkKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC0gKHZv
aWQpc2V0U2Nyb2xsaW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUpaE1vZGUgdmVydGlj
YWw6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUpdk1vZGUgYW5kTG9jazooQk9PTClsb2NrOwogLSAo
dm9pZClzY3JvbGxpbmdNb2RlczooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSopaE1vZGUgdmVydGlj
YWw6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUqKXZNb2RlOwogLSAodm9pZClzZXRTY3JvbGxCYXJz
U3VwcHJlc3NlZDooQk9PTClzdXBwcmVzc2VkIHJlcGFpbnRPblVuc3VwcHJlc3M6KEJPT0wpcmVw
YWludDsKKy0gKHZvaWQpc2V0U2Nyb2xsT3JpZ2luWDooaW50KXNjcm9sbE9yaWdpblg7CistIChp
bnQpc2Nyb2xsT3JpZ2luWDsKIEBlbmQKIAogQHByb3RvY29sIFdlYkNvcmVGcmFtZVZpZXcKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gNzIzMjUpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIFNj
cm9sbFZpZXc6OlNjcm9sbFZpZXcoKQogICAgICwgbV9kcmF3UGFuU2Nyb2xsSWNvbihmYWxzZSkK
ICAgICAsIG1fdXNlRml4ZWRMYXlvdXQoZmFsc2UpCiAgICAgLCBtX3BhaW50c0VudGlyZUNvbnRl
bnRzKGZhbHNlKQorICAgICwgbV9zY3JvbGxPcmlnaW5YKDApCiB7CiAgICAgcGxhdGZvcm1Jbml0
KCk7CiB9CkBAIC0yNzIsOSArMjczLDIyIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNT
aXplKGNvbnN0IEkKIAogSW50UG9pbnQgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0aW9u
KCkgY29uc3QKIHsKLSAgICBJbnRTaXplIG1heGltdW1PZmZzZXQgPSBjb250ZW50c1NpemUoKSAt
IHZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKTsKKyAgICBJbnRQb2ludCBtYXhpbXVtT2Zmc2V0
KGNvbnRlbnRzV2lkdGgoKSAtIHZpc2libGVXaWR0aCgpIC0gbV9zY3JvbGxPcmlnaW5YLCBjb250
ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpKTsKICAgICBtYXhpbXVtT2Zmc2V0LmNsYW1w
TmVnYXRpdmVUb1plcm8oKTsKLSAgICByZXR1cm4gSW50UG9pbnQobWF4aW11bU9mZnNldC53aWR0
aCgpLCBtYXhpbXVtT2Zmc2V0LmhlaWdodCgpKTsKKyAgICByZXR1cm4gbWF4aW11bU9mZnNldDsK
K30KKworSW50UG9pbnQgU2Nyb2xsVmlldzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gSW50UG9pbnQoLW1fc2Nyb2xsT3JpZ2luWCwgMCk7Cit9CisKK0ludFBv
aW50IFNjcm9sbFZpZXc6OmFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UoY29uc3QgSW50
UG9pbnQmIHNjcm9sbFBvaW50KSBjb25zdAoreworICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0
aW9uID0gc2Nyb2xsUG9pbnQuc2hydW5rVG8obWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOworICAg
IG5ld1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24uZXhwYW5kZWRUbyhtaW5pbXVt
U2Nyb2xsUG9zaXRpb24oKSk7CisgICAgbmV3U2Nyb2xsUG9zaXRpb24uY2xhbXBOZWdhdGl2ZVRv
WmVybygpOworICAgIHJldHVybiBuZXdTY3JvbGxQb3NpdGlvbjsKIH0KIAogaW50IFNjcm9sbFZp
ZXc6OnNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0CkBA
IC0yOTcsNyArMzExLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFy
KgogICAgIEludFNpemUgbmV3T2Zmc2V0ID0gbV9zY3JvbGxPZmZzZXQ7CiAgICAgaWYgKHNjcm9s
bGJhcikgewogICAgICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250
YWxTY3JvbGxiYXIpCi0gICAgICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoc2Nyb2xsYmFyLT52
YWx1ZSgpKTsKKyAgICAgICAgICAgIG5ld09mZnNldC5zZXRXaWR0aChzY3JvbGxiYXItPnZhbHVl
KCkgLSBtX3Njcm9sbE9yaWdpblgpOwogICAgICAgICBlbHNlIGlmIChzY3JvbGxiYXItPm9yaWVu
dGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgICAgICBuZXdPZmZzZXQuc2V0
SGVpZ2h0KHNjcm9sbGJhci0+dmFsdWUoKSk7CiAgICAgfQpAQCAtMzQyLDggKzM1Niw3IEBAIHZv
aWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QKICAgICB9CiAjZW5kaWYKIAot
ICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9pbnQuc2hydW5rVG8obWF4
aW11bVNjcm9sbFBvc2l0aW9uKCkpOwotICAgIG5ld1Njcm9sbFBvc2l0aW9uLmNsYW1wTmVnYXRp
dmVUb1plcm8oKTsKKyAgICBJbnRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IGFkanVzdFNjcm9s
bFBvc2l0aW9uV2l0aGluUmFuZ2Uoc2Nyb2xsUG9pbnQpOwogCiAgICAgaWYgKG5ld1Njcm9sbFBv
c2l0aW9uID09IHNjcm9sbFBvc2l0aW9uKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ2NCwxMCAr
NDc3LDEwIEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9pblVwZGF0ZVNjcm9sbGJhcnMgPSB0cnVlOwotICAgIEludFNp
emUgbWF4U2Nyb2xsUG9zaXRpb24oY29udGVudHNXaWR0aCgpIC0gdmlzaWJsZVdpZHRoKCksIGNv
bnRlbnRzSGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkpOwotICAgIEludFNpemUgc2Nyb2xsID0g
ZGVzaXJlZE9mZnNldC5zaHJ1bmtUbyhtYXhTY3JvbGxQb3NpdGlvbik7Ci0gICAgc2Nyb2xsLmNs
YW1wTmVnYXRpdmVUb1plcm8oKTsKLSAKKworICAgIEludFBvaW50IHNjcm9sbFBvaW50ID0gYWRq
dXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShJbnRQb2ludChkZXNpcmVkT2Zmc2V0LndpZHRo
KCksIGRlc2lyZWRPZmZzZXQuaGVpZ2h0KCkpKTsKKyAgICBJbnRTaXplIHNjcm9sbChzY3JvbGxQ
b2ludC54KCksIHNjcm9sbFBvaW50LnkoKSk7CisKICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xs
YmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IHZpc2libGVXaWR0aCgpOwogICAgICAg
ICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVudHNXaWR0aCgpID4gY2xp
ZW50V2lkdGgpOwpAQCAtNDg1LDcgKzQ5OCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Ny
b2xsYmFycyhjb25zdCAKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3Vw
cHJlc3NJbnZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+
c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7CiAgICAg
ICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRXaWR0aCwgY29u
dGVudHNXaWR0aCgpKTsKLSAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShz
Y3JvbGwud2lkdGgoKSwgU2Nyb2xsYmFyOjpOb3RGcm9tU2Nyb2xsQW5pbWF0b3IpOworICAgICAg
ICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFZhbHVlKHNjcm9sbC53aWR0aCgpICsgbV9zY3Jv
bGxPcmlnaW5YLCBTY3JvbGxiYXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CiAgICAgICAgIGlm
IChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xs
YmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbihmYWxzZSk7IAogICAgIH0gCkBAIC0xMDA5LDYg
KzEwMjIsMjIgQEAgdm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVQYW5TY3JvbGxJY29uKCkKICAgICBo
b3N0V2luZG93KCktPmludmFsaWRhdGVDb250ZW50c0FuZFdpbmRvdyhJbnRSZWN0KG1fcGFuU2Ny
b2xsSWNvblBvaW50LCBJbnRTaXplKHBhbkljb25TaXplTGVuZ3RoLCBwYW5JY29uU2l6ZUxlbmd0
aCkpLCB0cnVlIC8qaW1tZWRpYXRlKi8pOwogfQogCisKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0U2Ny
b2xsT3JpZ2luWChpbnQgeCkKK3sKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAg
cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKHgpOworICAgIGVsc2UKKyAgICAgICAgbV9zY3JvbGxP
cmlnaW5YID0geDsKK30KKwordm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKCkKK3sK
KyAgICBpZiAoIXBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoc2Ny
b2xsT2Zmc2V0KCkpOworICAgIC8vIEZJWE1FOiBuZWVkIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25h
bGl0eSBmcm9tIHBsYXRmb3JtV2lkZ2V0LgorfQorCiAjaWYgIVBMQVRGT1JNKFdYKSAmJiAhUExB
VEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShFRkwpCiAKIHZvaWQgU2Ny
b2xsVmlldzo6cGxhdGZvcm1Jbml0KCkKQEAgLTEwMzksNiArMTA2OCwxMCBAQCB2b2lkIFNjcm9s
bFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1CiB7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6
cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCkKK3sKK30KKwogI2VuZGlmCiAKICNpZiAhUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oV1gpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkocmV2
aXNpb24gNzIzMjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtMTU1LDYgKzE1NSw5IEBAIHB1YmxpYzoKICAgICBJbnRQb2ludCBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCk7IH0K
ICAgICBJbnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50
UmVjdCgpLmxvY2F0aW9uKCkgLSBJbnRQb2ludCgpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVkIHBv
c2l0aW9uIGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBzaXpl
cy4KICAgICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1h
eGltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgorICAgIEludFBvaW50IG1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3ZSBjYW4g
YmUgc2Nyb2xsZWQgdG8uCisgICAgLy8gQWRqdXN0IHRoZSBwYXNzIGluIHNjcm9sbCBwb3NpdGlv
biB3aXRoaW4gdGhlIG1pbmltdW0gYW5kIG1heGltdW0gcG9zaXRpb25zLgorICAgIEludFBvaW50
IGFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UoY29uc3QgSW50UG9pbnQmKSBjb25zdDsg
CiAgICAgaW50IHNjcm9sbFgoKSBjb25zdCB7IHJldHVybiBzY3JvbGxQb3NpdGlvbigpLngoKTsg
fQogICAgIGludCBzY3JvbGxZKCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS55KCk7
IH0KICAgICAKQEAgLTI3NCw2ICsyNzcsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gU2Nyb2xsIHRo
ZSBjb250ZW50IGJ5IGludmFsaWRhdGluZyBldmVyeXRoaW5nLgogICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpOwogCisgICAg
dm9pZCBzZXRTY3JvbGxPcmlnaW5YKGludCk7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJzKCk7
CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFy
OwogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fdmVydGljYWxTY3JvbGxiYXI7CkBAIC0zMDgsNiAr
MzE0LDExIEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fcGFpbnRzRW50aXJlQ29udGVudHM7CiAK
KyAgICAvLyBtX3Njcm9sbE9yaWdpblggaXMgMCBmb3IgTFRSIHBhZ2UuIEFuZCBpdCBpcyBuZWdh
dGl2ZSBvZiBsZWZ0IGxheW91dAorICAgIC8vIG92ZXJmbG93IGZvciBSVEwgcGFnZS4gSXQgaXMg
bWFpbmx5IHVzZWQgdG8gc2V0IHRoZSBob3Jpem9udGFsIHNjcm9sbGJhcgorICAgIC8vIHBvc2l0
aW9uIGZvciBSVEwgcGFnZS4KKyAgICBpbnQgbV9zY3JvbGxPcmlnaW5YOworCiAgICAgdm9pZCBp
bml0KCk7CiAgICAgdm9pZCBkZXN0cm95KCk7CiAKQEAgLTMzNSw2ICszNDYsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGxhdGZvcm1TZXRTY3JvbGxiYXJzU3VwcHJlc3NlZChib29sIHJlcGFpbnRP
blVuc3VwcHJlc3MpOwogICAgIHZvaWQgcGxhdGZvcm1SZXBhaW50Q29udGVudFJlY3RhbmdsZShj
b25zdCBJbnRSZWN0JiwgYm9vbCBub3cpOwogICAgIGJvb2wgcGxhdGZvcm1Jc09mZnNjcmVlbigp
IGNvbnN0OworICAgCisgICAgdm9pZCBwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50KTsKIAog
I2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNfXwogcHVibGljOgpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCShyZXZpc2lvbiA3MjMyNSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMCw5
ICsxMzAsOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNTaXplCiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIGludCB3ID0gbV9jb250ZW50c1NpemUu
d2lkdGgoKTsKICAgICBpbnQgaCA9IG1fY29udGVudHNTaXplLmhlaWdodCgpOwotICAgIExPRyhG
cmFtZXMsICIlcCAlQCBhdCB3ICVkIGggJWRcbiIsIGRvY3VtZW50VmlldygpLCBbKGlkKVtkb2N1
bWVudFZpZXcoKSBjbGFzc10gY2xhc3NOYW1lXSwgdywgaCk7ICAgICAgICAgICAgCi0gICAgTlNT
aXplIHRlbXBTaXplID0geyBtYXgoMCwgdyksIG1heCgwLCBoKSB9OyAvLyB3b3JrYXJvdW5kIGZv
ciA0MjEzMzE0Ci0gICAgW2RvY3VtZW50VmlldygpIHNldEZyYW1lU2l6ZTp0ZW1wU2l6ZV07Cisg
ICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9jdW1lbnRWaWV3KCksIFso
aWQpW2RvY3VtZW50VmlldygpIGNsYXNzXSBjbGFzc05hbWVdLCB3LCBoKTsKKyAgICBbZG9jdW1l
bnRWaWV3KCkgc2V0RnJhbWVTaXplOk5TTWFrZVNpemUobWF4KDAsIHcpLCBtYXgoMCwgaCkpXTsK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCkBAIC0xNDcsNyArMTQ2LDcgQEAg
dm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdQogdm9pZCBTY3JvbGxWaWV3
OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkK
IHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgTlNQb2ludCB0ZW1wUG9p
bnQgPSB7IG1heCgwLCBzY3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSB9
OyAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KKyAgICBO
U1BvaW50IHRlbXBQb2ludCA9IE5TTWFrZVBvaW50KG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxP
cmlnaW5YXSwgc2Nyb2xsUG9pbnQueCgpKSwgbWF4KDAsIHNjcm9sbFBvaW50LnkoKSkpOwogICAg
IFtkb2N1bWVudFZpZXcoKSBzY3JvbGxQb2ludDp0ZW1wUG9pbnRdOwogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CiB9CkBAIC0yMDIsNCArMjAxLDExIEBAIGJvb2wgU2Nyb2xsVmlldzo6
cGxhdGZvcm1Jc09mZnNjcmVlbigpIGMKICAgICByZXR1cm4gIVtwbGF0Zm9ybVdpZGdldCgpIHdp
bmRvd10gfHwgIVtbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIGlzVmlzaWJsZV07CiB9CiAKK3Zv
aWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCB4KQoreworICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBbc2Nyb2xsVmlldygpIHNldFNjcm9sbE9y
aWdpblg6eF07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA3MjMy
NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw2ICszMTIsOCBAQCB2b2lkIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
CiAgICAgICAgIFJlbmRlclZpZXcqIHZpZXdSZW5kZXJlciA9IHZpZXcoKTsKICAgICAgICAgUmVu
ZGVyU3R5bGUqIHZpZXdTdHlsZSA9IHZpZXdSZW5kZXJlci0+c3R5bGUoKTsKICAgICAgICAgaWYg
KGlzUm9vdFJlbmRlcmVyIHx8ICFkb2N1bWVudCgpLT5kaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxl
bWVudCgpKSB7CisgICAgICAgICAgICBpZiAodmlld1N0eWxlLT5kaXJlY3Rpb24oKSAhPSBzdHls
ZSgpLT5kaXJlY3Rpb24oKSkKKyAgICAgICAgICAgICAgICB2aWV3UmVuZGVyZXItPnNldERpcmVj
dGlvbkNoYW5nZWQoKTsKICAgICAgICAgICAgIHZpZXdTdHlsZS0+c2V0RGlyZWN0aW9uKHN0eWxl
KCktPmRpcmVjdGlvbigpKTsKICAgICAgICAgICAgIGlmIChpc0JvZHlSZW5kZXJlcikKICAgICAg
ICAgICAgICAgICBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+c3R5
bGUoKS0+c2V0RGlyZWN0aW9uKHN0eWxlKCktPmRpcmVjdGlvbigpKTsKQEAgLTc2Niw4ICs3Njgs
OCBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRSb290Qm94RGVjb3JhdGlvbnMoCiAKICAgICAvLyBD
U1MyIDE0LjI6CiAgICAgLy8gVGhlIGJhY2tncm91bmQgb2YgdGhlIGJveCBnZW5lcmF0ZWQgYnkg
dGhlIHJvb3QgZWxlbWVudCBjb3ZlcnMgdGhlIGVudGlyZSBjYW52YXMgaW5jbHVkaW5nCi0gICAg
Ly8gaXRzIG1hcmdpbnMuCi0gICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0KCk7CisgICAgLy8g
aXRzIG1hcmdpbnMsIGFuZCBpbmNsdWRpbmcgaXRzIGxlZnQgbGF5b3V0IG92ZXJmbG93LgorICAg
IGludCBieCA9IHR4IC0gbWFyZ2luTGVmdCgpICsgdmlldygpLT5sZWZ0TGF5b3V0T3ZlcmZsb3co
KTsKICAgICBpbnQgYnkgPSB0eSAtIG1hcmdpblRvcCgpOwogICAgIGludCBidyA9IG1heCh3ICsg
bWFyZ2luTGVmdCgpICsgbWFyZ2luUmlnaHQoKSArIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0
KCksIHJ3KTsKICAgICBpbnQgYmggPSBtYXgoaCArIG1hcmdpblRvcCgpICsgbWFyZ2luQm90dG9t
KCkgKyBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpLCByaCk7CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gNzIzMjUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw4IEBAIHZvaWQgUmVuZGVy
Vmlldzo6bGF5b3V0KCkKIAogICAgIC8vIFJlc2V0IG92ZXJmbG93IGFuZCB0aGVuIHJlcGxhY2Ug
aXQgd2l0aCBkb2NXaWR0aCBhbmQgZG9jSGVpZ2h0LgogICAgIG1fb3ZlcmZsb3cuY2xlYXIoKTsK
LSAgICBhZGRMYXlvdXRPdmVyZmxvdyhJbnRSZWN0KDAsIDAsIGRvY1dpZHRoKCksIGRvY0hlaWdo
dCgpKSk7CisgICAgaW50IGxlZnRPdmVyZmxvdyA9IGRvY0xlZnQoKTsKKyAgICBhZGRMYXlvdXRP
dmVyZmxvdyhJbnRSZWN0KGxlZnRPdmVyZmxvdywgMCwgZG9jV2lkdGgobGVmdE92ZXJmbG93KSwg
ZG9jSGVpZ2h0KCkpKTsKIAogICAgIEFTU0VSVChsYXlvdXREZWx0YSgpID09IEludFNpemUoKSk7
CiAgICAgQVNTRVJUKG1fbGF5b3V0U3RhdGVEaXNhYmxlQ291bnQgPT0gMCk7CkBAIC02MzMsOSAr
NjM0LDE1IEBAIGludCBSZW5kZXJWaWV3Ojpkb2NIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBo
OwogfQogCi1pbnQgUmVuZGVyVmlldzo6ZG9jV2lkdGgoKSBjb25zdAoraW50IFJlbmRlclZpZXc6
OmRvY0xlZnQoKSBjb25zdAogewotICAgIGludCB3ID0gcmlnaHRtb3N0UG9zaXRpb24oKTsKKyAg
ICAvLyBDbGlwIG91dCBsZWZ0IG92ZXJmbG93IGluIExUUiBwYWdlLgorICAgIHJldHVybiBzdHls
ZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyAwIDogc3RkOjptaW4oMCwgbGVmdG1vc3RQ
b3NpdGlvbigpKTsKK30KKworaW50IFJlbmRlclZpZXc6OmRvY1dpZHRoKGludCBsZWZ0T3ZlcmZs
b3cpIGNvbnN0Cit7CisgICAgaW50IHcgPSBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyByaWdodG1vc3RQb3NpdGlvbigpIDogd2lkdGgoKSAtIGxlZnRPdmVyZmxvdzsKIAogICAg
IGZvciAoUmVuZGVyQm94KiBjID0gZmlyc3RDaGlsZEJveCgpOyBjOyBjID0gYy0+bmV4dFNpYmxp
bmdCb3goKSkgewogICAgICAgICBpbnQgZHcgPSBjLT53aWR0aCgpICsgYy0+bWFyZ2luTGVmdCgp
ICsgYy0+bWFyZ2luUmlnaHQoKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHJldmlzaW9u
IDcyMzI1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjEsNiArMTYxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE1vdmVPbnNjcmVlbigp
OwogICAgIHZvaWQgd2lsbE1vdmVPZmZzY3JlZW4oKTsKIAorICAgIHZvaWQgc2V0RGlyZWN0aW9u
Q2hhbmdlZCgpIHttX2RpcmVjdGlvbkNoYW5nZWQgPSB0cnVlO30KKyAgICBib29sIGRpcmVjdGlv
bkNoYW5nZWQoKSB7cmV0dXJuIG1fZGlyZWN0aW9uQ2hhbmdlZDt9CisgICAgdm9pZCByZXNldERp
cmVjdGlvbkNoYW5nZWQoKSB7bV9kaXJlY3Rpb25DaGFuZ2VkID0gZmFsc2U7fQorCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciogY29t
cG9zaXRvcigpOwogICAgIGJvb2wgdXNlc0NvbXBvc2l0aW5nKCkgY29uc3Q7CkBAIC0xNzQsNyAr
MTc4LDggQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFJlcGFpbnQoY29uc3QgSW50UmVjdCYg
cikgY29uc3Q7CiAgICAgICAgIAogICAgIGludCBkb2NIZWlnaHQoKSBjb25zdDsKLSAgICBpbnQg
ZG9jV2lkdGgoKSBjb25zdDsKKyAgICBpbnQgZG9jTGVmdCgpIGNvbnN0OworICAgIGludCBkb2NX
aWR0aChpbnQpIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIG1heSBvbmx5IGJlIGFj
Y2Vzc2VkIGJ5IExheW91dFN0YXRlTWFpbnRhaW5lci4KICAgICBib29sIHB1c2hMYXlvdXRTdGF0
ZShSZW5kZXJCb3gqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBvZmZzZXQsIGludCBwYWdlSGVp
Z2h0ID0gMCwgYm9vbCBwYWdlSGVpZ2h0Q2hhbmdlZCA9IGZhbHNlLCBDb2x1bW5JbmZvKiBjb2xJ
bmZvID0gMCkKQEAgLTIzNSw2ICsyNDAsNyBAQCBwcml2YXRlOgogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICBPd25QdHI8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPiBtX2NvbXBv
c2l0b3I7CiAjZW5kaWYKKyAgICBib29sIG1fZGlyZWN0aW9uQ2hhbmdlZDsKIH07CiAKIGlubGlu
ZSBSZW5kZXJWaWV3KiB0b1JlbmRlclZpZXcoUmVuZGVyT2JqZWN0KiBvYmplY3QpCkluZGV4OiBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gNzIzNTkpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI4IEBACisyMDEwLTExLTE4ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSaWdo
dC10by1sZWZ0IHBhZ2VzIHNob3VsZCBiZSBzY3JvbGxhYmxlIHRvIHJldmVhbCBsZWZ0IG92ZXJm
bG93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1
NTYKKworICAgICAgICBTZXQgYW5kIGdldCB0aGUgb3JpZ2luYWwgeC1heGlzIHNjcm9sbCBwb3Np
dGlvbiBhbmQgcmVzZXQgc2Nyb2xsIHBvc2l0aW9uIG9uIEhPTUUvRU5EIGtleSBwcmVzcy4KKyAg
ICAgICAgTW9kaWZ5IFdlYkZyYW1lVmlldyB0byBzdXBwb3J0IHNldHRpbmcgdGhlIGluaXRpYWwg
aG9yaXpvbnRhbCBzY3JvbGxlcidzIHRodW1iIHBvc2l0aW9uIHRvIHRoZSByaWdodCBmb3IKKyAg
ICAgICAgcGFnZXMgd2l0aCBhIGxlZnQgb3ZlcmZsb3cuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkR5bmFtaWNTY3JvbGxCYXJzVmlldy5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViRHluYW1pY1Nj
cm9sbEJhcnNWaWV3Lm1tOgorICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgaW5Q
cm9ncmFtYXRpY1Njcm9sbF0pOgorICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcg
cmVmcmVzaEluaXRpYWxTY3JvbGxiYXJQb3NpdGlvbl0pOgorICAgICAgICAoLVtXZWJEeW5hbWlj
U2Nyb2xsQmFyc1ZpZXcgdXBkYXRlU2Nyb2xsZXJzXSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNT
Y3JvbGxCYXJzVmlldyByZWZsZWN0U2Nyb2xsZWRDbGlwVmlldzpdKToKKyAgICAgICAgKC1bV2Vi
RHluYW1pY1Njcm9sbEJhcnNWaWV3IHNldFNjcm9sbE9yaWdpblg6XSk6CisgICAgICAgICgtW1dl
YkR5bmFtaWNTY3JvbGxCYXJzVmlldyBzY3JvbGxPcmlnaW5YXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9CZWdp
bm5pbmdPZkRvY3VtZW50XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9FbmRP
ZkRvY3VtZW50XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkXSk6CisKIDIwMTAtMTEtMTggIE1h
cmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBB
ZGFtIFJvYmVuLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJz
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xs
QmFyc1ZpZXcuaAkocmV2aXNpb24gNzIzMjUpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDQgKzU4LDEwIEBAIEBp
bnRlcmZhY2UgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IDogTlMKIC8vIHZpc2libGUgaXMgdGhh
dCB0aGV5IGhhdmUgYmVlbiBzdXBwcmVzc2VkIGJ5IHNldEFsd2F5c0hpZGVIb3Jpem9udGFsL1Zl
cnRpY2FsU2Nyb2xsZXI6LgogLSAoQk9PTClob3Jpem9udGFsU2Nyb2xsaW5nQWxsb3dlZDsKIC0g
KEJPT0wpdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkOworCisvLyBSZXR1cm5zIFlFUyBpZiB3ZSdy
ZSBjdXJyZW50bHkgaW4gdGhlIG1pZGRsZSBvZiBwcm9ncmFtbWF0aWNhbGx5IG1vdmluZyB0aGUK
Ky8vIHNjcm9sbGJhci4KKy8vIE5PVEU6IEFzIG9wcG9zZWQgdG8gb3RoZXIgcGxhY2VzIGluIHRo
ZSBjb2RlLCBwcm9ncmFtbWF0aWNhbGx5IG1vdmluZyB0aGUKKy8vIHNjcm9sbGVycyBmcm9tIGlu
c2lkZSB0aGlzIGNsYXNzIHNob3VsZCBub3QgZmlyZSBKUyBldmVudHMuCistIChCT09MKWluUHJv
Z3JhbWF0aWNTY3JvbGw7CiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1p
Y1Njcm9sbEJhcnNWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0JKHJldmlzaW9uIDcyMzI1KQorKysgV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIs
NiArNjIsMTUgQEAgc3RydWN0IFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld1ByaXZhdGUgewogICAg
IGJvb2wgYWx3YXlzSGlkZVZlcnRpY2FsU2Nyb2xsZXI7CiAgICAgYm9vbCBob3Jpem9udGFsU2Ny
b2xsaW5nQWxsb3dlZEJ1dFNjcm9sbGVySGlkZGVuOwogICAgIGJvb2wgdmVydGljYWxTY3JvbGxp
bmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRkZW47CisKKyAgICAvLyBzY3JvbGxPcmlnaW5YIGlzIDAg
Zm9yIExUUiBwYWdlIGFuZCBpcyB0aGUgbmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQgb3ZlcmZsb3cg
dmFsdWUgZm9yIFJUTCBwYWdlLgorICAgIGludCBzY3JvbGxPcmlnaW5YOworCisgICAgLy8gRmxh
ZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzY3JvbGxiYXIgdGh1bWIncyBpbml0aWFsIHBvc2l0aW9u
IG5lZWRzIHRvCisgICAgLy8gYmUgbWFudWFsbHkgc2V0LgorICAgIGJvb2wgc2V0U2Nyb2xsYmFy
VGh1bWJJbml0aWFsUG9zaXRpb247CisKKyAgICBib29sIGluUHJvZ3JhbW1hdGljU2Nyb2xsOwog
fTsKIAogQGltcGxlbWVudGF0aW9uIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldwpAQCAtMTQ5LDYg
KzE1OCwxMSBAQCAtIChCT09MKXZlcnRpY2FsU2Nyb2xsaW5nQWxsb3dlZAogICAgIHJldHVybiBf
cHJpdmF0ZS0+dmVydGljYWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRkZW4gfHwgW3Nl
bGYgaGFzVmVydGljYWxTY3JvbGxlcl07CiB9CiAKKy0gKEJPT0wpaW5Qcm9ncmFtYXRpY1Njcm9s
bAoreworICAgIHJldHVybiBfcHJpdmF0ZS0+aW5Qcm9ncmFtbWF0aWNTY3JvbGw7Cit9CisKIEBl
bmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAoV2ViSW50ZXJu
YWwpCkBAIC0yMDEsNiArMjE1LDI5IEBAIC0gKHZvaWQpc2V0U2Nyb2xsQmFyc1N1cHByZXNzZWQ6
KEJPT0wpc3UKICNlbmRpZgogfQogCistICh2b2lkKXJlZnJlc2hJbml0aWFsU2Nyb2xsYmFyUG9z
aXRpb24KK3sKKyAgICBpZiAoX3ByaXZhdGUtPnNldFNjcm9sbGJhclRodW1iSW5pdGlhbFBvc2l0
aW9uKSB7CisgICAgICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3
XTsKKyAgICAgICAgTlNSZWN0IGRvY3VtZW50UmVjdCA9IFtkb2N1bWVudFZpZXcgYm91bmRzXTsK
KworICAgICAgICAvLyBJZiBzY3JvbGxPcmlnaW5YIGlzIG5vbi16ZXJvIHRoYXQgbWVhbnMgdGhh
dCB0aGVyZSdzIGEgbGVmdCBvdmVyZmxvdyA8PT4gdGhpcyBpcyBhbiBSVEwgZG9jdW1lbnQgYW5k
IHRodXMKKyAgICAgICAgLy8gdGhlIGluaXRpYWwgcG9zaXRpb24gb2YgdGhlIGhvcml6b250YWwg
c2Nyb2xsYmFyIHRodW1iIHNob3VsZCBiZSBvbiB0aGUgcmlnaHQuCisgICAgICAgIC8vIEZJWE1F
OiBJZiBrbm93bGVkZ2Ugb2YgZG9jdW1lbnQgZGlyZWN0aW9uYWxpdHkgaXMgZXZlciBwcm9wYWdh
dGVkIHRvIHRoZSBzY3JvbGwgdmlldywgaXQgcHJvYmFibHkgbWFrZXMKKyAgICAgICAgLy8gbW9y
ZSBzZW5zZSB0byB1c2UgdGhlIGRpcmVjdGlvbmFsaXR5IGRpcmVjdGx5IGluIHRoZSBiZWxvdyBp
ZiBzdGF0ZW1lbnQsIHJhdGhlciB0aGFuIGRvaW5nIHNvIGluZGlyZWN0bHkKKyAgICAgICAgLy8g
dGhyb3VnaCBzY3JvbGxPcmlnaW5YLgorICAgICAgICBpZiAoX3ByaXZhdGUtPnNjcm9sbE9yaWdp
blggIT0gMCkgeworICAgICAgICAgICAgLy8gVGhlIGNhbGwgdG8gW05TVmlldyBzY3JvbGxQb2lu
dDpdIGZpcmVzIG9mZiBub3RpZmljYXRpb24gdGhlIGhhbmRsZXIgZm9yIHdoaWNoIG5lZWRzIHRv
IGtub3cgdGhhdAorICAgICAgICAgICAgLy8gd2UncmUgc2V0dGluZyB0aGUgaW5pdGlhbCBzY3Jv
bGwgcG9zaXRpb24gc28gaXQgZG9lc24ndCBpbnRlcnByZXQgdGhpcyBhcyBhIHVzZXIgYWN0aW9u
IGFuZAorICAgICAgICAgICAgLy8gZmlyZSBvZmYgYSBKUyBldmVudC4KKyAgICAgICAgICAgIF9w
cml2YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IHRydWU7CisgICAgICAgICAgICBbZG9jdW1l
bnRWaWV3IHNjcm9sbFBvaW50Ok5TTWFrZVBvaW50KE5TTWF4WChkb2N1bWVudFJlY3QpIC0gTlNX
aWR0aChbc2VsZiBjb250ZW50Vmlld0ZyYW1lXSksIDApXTsKKyAgICAgICAgICAgIF9wcml2YXRl
LT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIF9wcml2
YXRlLT5zZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlvbiA9IGZhbHNlOworICAgIH0KK30K
Kwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNNYXhVcGRhdGVTY3JvbGxiYXJzUGFzcyA9IDI7CiAK
IC0gKHZvaWQpdXBkYXRlU2Nyb2xsZXJzCkBAIC0zMDIsNiArMzM5LDEyIEBAIC0gKHZvaWQpdXBk
YXRlU2Nyb2xsZXJzCiAgICAgaWYgKGhhc0hvcml6b250YWxTY3JvbGxlciAhPSBuZXdIYXNIb3Jp
em9udGFsU2Nyb2xsZXIpIHsKICAgICAgICAgX3ByaXZhdGUtPmluVXBkYXRlU2Nyb2xsZXJzID0g
WUVTOwogICAgICAgICBbc2VsZiBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsZXI6bmV3SGFzSG9yaXpv
bnRhbFNjcm9sbGVyXTsKKyAgICAgICAgCisgICAgICAgIC8vIEZvciBSVEwgZG9jdW1lbnRzLCB3
ZSBuZWVkIHRvIHNldCB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiB0aGUKKyAgICAgICAgLy8gaG9y
aXpvbnRhbCBzY3JvbGxiYXIgdGh1bWIgdG8gYmUgb24gdGhlIHJpZ2h0LgorICAgICAgICBpZiAo
bmV3SGFzSG9yaXpvbnRhbFNjcm9sbGVyKQorICAgICAgICAgICAgX3ByaXZhdGUtPnNldFNjcm9s
bGJhclRodW1iSW5pdGlhbFBvc2l0aW9uID0gdHJ1ZTsKKyAgICAgICAgCiAgICAgICAgIF9wcml2
YXRlLT5pblVwZGF0ZVNjcm9sbGVycyA9IE5POwogICAgICAgICBuZWVkc0xheW91dCA9IFlFUzsK
ICAgICB9CkBAIC0zNjQsNiArNDA3LDExIEBAIC0gKHZvaWQpcmVmbGVjdFNjcm9sbGVkQ2xpcFZp
ZXc6KE5TQ2xpcFYKICAgICB9CiAjZW5kaWYKIAorICAgIC8vIFRoZSBjYWxsIHRvIFtOU1ZpZXcg
cmVmbGVjdFNjcm9sbGVkQ2xpcFZpZXddIHNldHMgdGhlIHNjcm9sbGJhciB0aHVtYgorICAgIC8v
IHBvc2l0aW9uIHRvIDAgKHRoZSBsZWZ0KSB3aGVuIHRoZSB2aWV3IGlzIGluaXRpYWxseSBkaXNw
bGF5ZWQuCisgICAgLy8gVGhpcyBjYWxsIHVwZGF0ZXMgdGhlIGluaXRpYWwgcG9zaXRpb24gY29y
cmVjdGx5LgorICAgIFtzZWxmIHJlZnJlc2hJbml0aWFsU2Nyb2xsYmFyUG9zaXRpb25dOworCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpCiAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBkb2N1bWVudFZpZXddOwog
ICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0p
IHsKQEAgLTUyNSw0ICs1NzMsMjIgQEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIAog
ICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUlzSWdub3JlZF07CiB9CiAKKy0gKHZvaWQp
c2V0U2Nyb2xsT3JpZ2luWDooaW50KXNjcm9sbE9yaWdpblgKK3sKKyAgICBfcHJpdmF0ZS0+c2Ny
b2xsT3JpZ2luWCA9IHNjcm9sbE9yaWdpblg7CisgICAgCisgICAgaWQgZG9jVmlldyA9IFtzZWxm
IGRvY3VtZW50Vmlld107CisgICAgaWYgKHNjcm9sbE9yaWdpblggIT0gW2RvY1ZpZXcgYm91bmRz
XS5vcmlnaW4ueCkgeworICAgICAgICAvLyAiLVtzZWxmIHNjcm9sbE9yaWdpblhdIiBpcyBlcXVh
bCB0byB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cuCisgICAgICAgIC8vIE1ha2UgRG9jdW1lbnQg
Ym91bmRzIG9yaWdpbiB4IGNvb3JkaW5hdGUgY29ycmVzcG9uZCB0byB0aGUgbGVmdCBvdmVyZmxv
dyBzbyB0aGUgZW50aXJlIGNhbnZhcyBpcyBjb3ZlcmVkIGJ5IHRoZSBkb2N1bWVudC4KKyAgICAg
ICAgW2RvY1ZpZXcgc2V0Qm91bmRzT3JpZ2luOk5TTWFrZVBvaW50KC1zY3JvbGxPcmlnaW5YLCBb
ZG9jVmlldyBib3VuZHNdLm9yaWdpbi55KV07CisgICAgfQorCit9CisKKy0gKGludClzY3JvbGxP
cmlnaW5YCit7CisgICAgcmV0dXJuIF9wcml2YXRlLT5zY3JvbGxPcmlnaW5YOworfQorCiBAZW5k
CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0JKHJldmlzaW9uIDcyMzI1KQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTM2
LDYgKzUzNiw3IEBAIC0gKEJPT0wpX3Njcm9sbFRvQmVnaW5uaW5nT2ZEb2N1bWVudAogICAgIGlm
ICghW3NlbGYgX2lzU2Nyb2xsYWJsZV0pCiAgICAgICAgIHJldHVybiBOTzsKICAgICBOU1BvaW50
IHBvaW50ID0gW1tbc2VsZiBfc2Nyb2xsVmlld10gZG9jdW1lbnRWaWV3XSBmcmFtZV0ub3JpZ2lu
OworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmlnaW5YXTsKICAg
ICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10gX3Njcm9sbFRvOiZwb2ludCBhbmltYXRlOllF
U107CiB9CiAKQEAgLTU0Nyw2ICs1NDgsNyBAQCAtIChCT09MKV9zY3JvbGxUb0VuZE9mRG9jdW1l
bnQKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5TUmVjdCBmcmFtZSA9IFtbW3NlbGYgX3Njcm9s
bFZpZXddIGRvY3VtZW50Vmlld10gZnJhbWVdOwogICAgIE5TUG9pbnQgcG9pbnQgPSBOU01ha2VQ
b2ludChmcmFtZS5vcmlnaW4ueCwgTlNNYXhZKGZyYW1lKSk7CisgICAgcG9pbnQueCArPSBbW3Nl
bGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhdOwogICAgIHJldHVybiBbW3NlbGYgX2NvbnRl
bnRWaWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1hdGU6WUVTXTsKIH0KIApJbmRleDogV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gNzIzMjUpCisrKyBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTExOTgsOCArMTE5OCwxMSBAQCBz
dGF0aWMgdm9pZCBfdXBkYXRlTW91c2VvdmVyVGltZXJDYWxsYmFjCiAKIC0gKHZvaWQpX2ZyYW1l
T3JCb3VuZHNDaGFuZ2VkCiB7CisgICAgV2ViVmlldyAqd2ViVmlldyA9IFtzZWxmIF93ZWJWaWV3
XTsKKyAgICBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgPSBbW1t3ZWJWaWV3
IG1haW5GcmFtZV0gZnJhbWVWaWV3XSBfc2Nyb2xsVmlld107CisKICAgICBOU1BvaW50IG9yaWdp
biA9IFtbc2VsZiBzdXBlcnZpZXddIGJvdW5kc10ub3JpZ2luOwotICAgIGlmICghTlNFcXVhbFBv
aW50cyhfcHJpdmF0ZS0+bGFzdFNjcm9sbFBvc2l0aW9uLCBvcmlnaW4pKSB7CisgICAgaWYgKCFO
U0VxdWFsUG9pbnRzKF9wcml2YXRlLT5sYXN0U2Nyb2xsUG9zaXRpb24sIG9yaWdpbikgJiYgIVtz
Y3JvbGxWaWV3IGluUHJvZ3JhbWF0aWNTY3JvbGxdKSB7CiAgICAgICAgIGlmIChGcmFtZSogY29y
ZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewogICAgICAgICAgICAgaWYgKEZyYW1lVmll
dyogY29yZVZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkgewogI2lmbmRlZiBCVUlMRElOR19PTl9U
SUdFUgpAQCAtMTIxNCw3ICsxMjE3LDYgQEAgLSAodm9pZClfZnJhbWVPckJvdW5kc0NoYW5nZWQK
ICAgICAKICAgICAgICAgW19wcml2YXRlLT5jb21wbGV0aW9uQ29udHJvbGxlciBlbmRSZXZlcnRp
bmdDaGFuZ2U6Tk8gbW92ZUxlZnQ6Tk9dOwogICAgICAgICAKLSAgICAgICAgV2ViVmlldyAqd2Vi
VmlldyA9IFtzZWxmIF93ZWJWaWV3XTsKICAgICAgICAgW1t3ZWJWaWV3IF9VSURlbGVnYXRlRm9y
d2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcgZGlkU2Nyb2xsRG9jdW1lbnRJbkZyYW1lVmlldzpbc2Vs
ZiBfZnJhbWVWaWV3XV07CiAgICAgfQogICAgIF9wcml2YXRlLT5sYXN0U2Nyb2xsUG9zaXRpb24g
PSBvcmlnaW47CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MjM1OSkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEwLTExLTE4ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSaWdodC10by1sZWZ0IHBhZ2VzIHNob3VsZCBiZSBzY3JvbGxhYmxl
IHRvIHJldmVhbCBsZWZ0IG92ZXJmbG93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTYKKworICAgICAgICBGb3IgUlRMIHBhZ2UsIHNhdmUgbGVm
dCBsYXlvdXQgb3ZlcmZsb3cgYW5kIGluY2x1ZGUgaXQgaW50byB0aGUgZG9jdW1lbnQKKyAgICAg
ICAgc2l6ZSBkdXJpbmcgbGF5b3V0LiBVc2UgdGhlIGxlZnQgbGF5b3V0IG92ZXJmbG93IHdoZW4g
c2Nyb2xsIGFuZCBwYWludAorICAgICAgICB0aGUgcGFnZS4gQmVoYXZpb3Igb24gTFRSIHBhZ2Ug
c2hvdWxkIGJlIHVudG91Y2hlZCBzaW5jZSBsZWZ0IGxheW91dCAKKyAgICAgICAgb3ZlcmZsb3cg
aXMgc2V0IGFzIDAgZm9yIExUUiBwYWdlLgorCisgICAgICAgICogZmFzdC9kb20vaG9yaXpvbnRh
bC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNu
dC1maXJlLW9uc2Nyb2xsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2hvcml6b250
YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ob3Jp
em9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6
b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVj
dGVkLmNoZWNrc3VtOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3Ry
dW5jYXRpb24tcnRsLWV4cGVjdGVkLnBuZzoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9i
bG9jay9iYXNpYy90cnVuY2F0aW9uLXJ0bC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9s
bGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRs
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMTEtMTggIERhdmUgSHlhdHQgIDxoeWF0dEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmly
ZS1vbnNjcm9sbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwt
c2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBwYWdlIHdpdGgg
YW4gUlRMIG92ZXJmbG93IGlzIGluaXRpYWxseSBsb2FkZWQsIG5vIHNjcm9sbCBldmVudCBpcyBz
ZW50LgorCitUaGlzIHRlc3QgaGFzIHBhc3NlZCBpZiB0aGUgdGV4dCAiRkFJTCAtIHNjcm9sbCBl
dmVudCByZWNlaXZlZCEiIGRvZXMgbm90IGFwcGVhciBiZWxvdy4KKworTG9yZW0gaXBzdW0gZG9s
b3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9k
IHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBl
bmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxh
Ym9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUg
aXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxs
dW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVj
YXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNl
cnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4iCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xs
YmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJl
LW9uc2Nyb2xsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWwgZGlyPXJ0bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBsYW5ndWFn
ZT0iamF2YXNjcmlwdCI+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxp
Iik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQo
bGkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvbmxvYWQgPSBmdW5jdGlvbigpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkb2N1bWVudC5vbnNjcm9sbD1mdW5j
dGlvbigpe2xvZygiRkFJTCAtIHNjcm9sbCBldmVudCByZWNlaXZlZCEiKTt9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBkaXI9bHRyPgor
ICAgICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgd2hlbiBhIHBhZ2Ugd2l0aCBhbiBSVEwgb3ZlcmZs
b3cgaXMgaW5pdGlhbGx5IGxvYWRlZCwgbm8gc2Nyb2xsIGV2ZW50IGlzIHNlbnQuPC9wPgorICAg
ICAgICA8cD5UaGlzIHRlc3QgaGFzIHBhc3NlZCBpZiB0aGUgdGV4dCAiRkFJTCAtIHNjcm9sbCBl
dmVudCByZWNlaXZlZCEiIGRvZXMgbm90IGFwcGVhciBiZWxvdy48L3A+CisgICAgICAgIDwvZGl2
PgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0eWxlPSJ3aGl0ZXNwYWNlOm5vd3JhcDsgd2lkdGg6
IDQwMDBweDsgaGVpZ2h0OiAxMDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiPkxvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8g
ZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1
YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxs
YW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVp
cyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVz
c2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50
IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmlj
aWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uIjwvZGl2PgorICAgICAgICA8
dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9s
bGJhci1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMgQEAKKzxodG1sIGRp
cj1ydGw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQi
PgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAg
ICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAg
ICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVz
c2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1l
c3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiAr
IGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxv
ZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0VHJ1ZShtZXNzYWdlLCBmYWN0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChmYWN0KQorICAgICAgICAgICAgICAgICAg
ICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlIik7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNj
cm9sbFggPSAtMTAwMDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFkgPSA1MDA7CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpIAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJ3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhv
cml6b250YWwgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xs
WCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1
bmN0aW9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IGhvcml6b250YWwgc2Ny
b2xsIGJhciBwcmVzZW50cyBhbmQgd2FzIGluaXRpYWxseSBhdCB0aGUgcmlnaHQgZm9yIFJUTCBw
YWdlLgorICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeCBmb3Ig
UlRMIHBhZ2UgIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgLy8gVGVzdCBob3Jpem9udGFsIHNjcm9sbC4KKyAgICAgICAgICAgICAgICB3aW5kb3cu
c2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAg
ICAgIGFzc2VydEVxdWFsKCJob3Jpem9udGFsIHNjcm9sbDogIiwgd2luZG93LnNjcm9sbFgsIGV4
cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAgICAgLy8gVGVzdCBjYWxsaW5nIHdpbmRvdy5z
Y3JvbGxYIGNvbnRpbnVvdXNseSB3b250IGNoYW5nZSB0aGUgc2Nyb2xsWCBwb3NpdGlvbi4KKyAg
ICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgiY29udGludW91c2x5IGNhbGwgd2luZG93LnNjcm9s
bFggIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAKKwor
ICAgICAgICAgICAgICAgIC8vIFRlc3Qgem9vbWluZyB3b250IHJlc2V0IHNjcm9sbCBwb3NpdGlv
bi4KKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xs
WSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlSW4oKTsKKyAgICAg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VPdXQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0RXF1YWwoInpvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRp
b24iLCB3aW5kb3cuc2Nyb2xsWCxleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3QgcmVzaXplIHdvbnQgcmVz
ZXQgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIHdpbmRvdy5yZXNpemVUbygxMDAw
LCB3aW5kb3cuaW5uZXJIZWlnaHQpOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhl
eHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgd2luZG93
LnJlc2l6ZVRvKDIwMDAsIHdpbmRvdy5pbm5lckhlaWdodCk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0RXF1YWwoInJlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9s
bFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
Ly8gVGVzdCB3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9u
LgorICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVj
dGVkU2Nyb2xsWSAvIDIpOworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGl2Iik7CisgICAgICAgICAgICAgICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNld2hlZWwiLCBtb3VzZXdoZWVsSGFuZGxlciwgZmFsc2UpOworICAgICAgICAgICAgICAg
IHZhciB3aGVlbEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIldoZWVsRXZlbnQiKTsKKyAg
ICAgICAgICAgICAgICB3aGVlbEV2ZW50LmluaXRXZWJLaXRXaGVlbEV2ZW50KDAsIGV4cGVjdGVk
U2Nyb2xsWSAvIDIsIHdpbmRvdywgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpOworICAgICAgICAgICAgICAgIGRpdi5kaXNwYXRjaEV2ZW50KHdoZWVsRXZlbnQpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCBIT01FL0VORCBvcGVyYXRpb24uCisg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
ICAgICAvLyBOb3QgdXNpbmcgYXNzZXJ0IGVxdWFsIGhlcmUgc2luY2UgdGhlIGJlaGF2aW9yIGlz
IGRpZmZlcmVudCBpbiBlYWNoIHBvcnQuIAorICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZXhh
bXBsZSwgaW4gTWFjLCBIT01FL0VORCBrZXkgcmVzZXQgYm90aCB4IGFuZCB5IHNjcm9sbCBwb3Np
dGlvbi4gCisgICAgICAgICAgICAgICAgICAgIC8vIEluIENocm9taXVtLCBIT01FL0VORCBrZXkg
b25seSByZXNldCB5IHNjcm9sbCBwb3NpdGlvbiwgYW5kIHggc2Nyb2xsIHBvc2l0aW9uIGlzIHBy
ZXNlcnZlZC4KKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Ny
b2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigiaG9tZSIpOworICAgICAgICAgICAgICAgICAgICBsb2coIktleURvd24gSE9NRSBt
b3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogIiArIHdpbmRvdy5z
Y3JvbGxYLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVk
U2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bigiZW5kIik7CisgICAgICAgICAgICAgICAgICAgIGxvZygiS2V5RG93biBFTkQg
bW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6ICIgKyB3aW5kb3cu
c2Nyb2xsWCwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgLy8gVGVzdCBzZWxlY3QgYWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50IGNvbnRlbnQuCisg
ICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKDUwMCwgNTAwKTsKKyAgICAgICAgICAgICAg
ICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAg
ICAgIGRpdi5mb2N1cygpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJT
ZWxlY3RBbGwiKTsKKyAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNl
bGVjdGlvbigpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJzZWxlY3RBbGwgc2VsZWN0
cyBhbGwgZG9jdW1lbnQiLCBzZWxlY3Rpb24udG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwgZGl2Lmlu
bmVySFRNTC5sZW5ndGgpLCBkaXYuaW5uZXJIVE1MKTsKKworICAgICAgICAgICAgICAgIGRpdi5z
dHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBp
ZD0iZGl2IiBzdHlsZT0id2hpdGVzcGFjZTpub3dyYXA7IHdpZHRoOiA0MDAwcHg7IGhlaWdodDog
MTAwMHB4OyBib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1l
dCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGlu
Y2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWlu
aW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNp
IHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xv
ciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUg
ZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0
YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxp
dCBhbmltIGlkIGVzdCBsYWJvcnVtLiI8L2Rpdj4KKyAgICAgICAgPHVsIGlkPSJjb25zb2xlIiBk
aXI9bHRyPjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXIt
Y2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9u
dGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2coc3RyKQorewor
ICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgbGkuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgdmFyIGNvbnNvbGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgIGNvbnNvbGUuYXBwZW5kQ2hp
bGQobGkpOworfQorCitmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVj
dGVkKQoreworICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgIGxvZygiXG4iICsg
bWVzc2FnZSArICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAi
ICsgZXhwZWN0ZWQpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjog
U3VjY2VzcyIpOworfQorCitmdW5jdGlvbiBjaGFuZ2VEaXIobmV3X2RpcikgCit7CisgICAgZG9j
dW1lbnQuYm9keS5kaXIgPSBuZXdfZGlyOworICAgIHJldHVybiBmYWxzZTsKK30KKworb25sb2Fk
ID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSAi
LCB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgd2luZG93LnNjcm9sbFRvKC0xMDAsIDApOworICAg
IGFzc2VydEVxdWFsKCJob3Jpem9udGFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSAiLCB3aW5kb3cu
c2Nyb2xsWCwgLTEwMCk7CisKKyAgICBkb2N1bWVudC5ib2R5LmRpciA9ICJsdHIiOworICAgIGFz
c2VydEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgIiwgd2luZG93LnNjcm9s
bFgsIDApOworICAgIHdpbmRvdy5zY3JvbGxUbygxMDAsIDApOworICAgIGFzc2VydEVxdWFsKCJo
b3Jpem9udGFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSAiLCB3aW5kb3cuc2Nyb2xsWCwgMTAwKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5v
bmUiOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBkaXI9InJ0bCI+CisKKzxkaXYgc3R5
bGU9IndpZHRoOiA0MDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiIGlkPSJkaXYiPgorTG9y
ZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTnVu
YyBldCBuaXNsIHRlbGx1cy4gVml2YW11cyBhbGlxdWFtIGVsaXQgbm9uIGFyY3Ugc2NlbGVyaXNx
dWUgZWdldCBkYXBpYnVzIG51bmMgdnVscHV0YXRlLiBNYWVjZW5hcyBzY2VsZXJpc3F1ZSBlZ2Vz
dGFzIHB1cnVzLCBpZCBiaWJlbmR1bSBtYWduYSB2ZW5lbmF0aXMgdmVsLiBWZXN0aWJ1bHVtIGJp
YmVuZHVtIHZvbHV0cGF0IGFsaXF1YW0uIEN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMgZXQg
bWFnbmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRlcywgbmFzY2V0dXIgcmlkaWN1bHVzIG11cy4gVmVz
dGlidWx1bSBlZ2V0IHJpc3VzIHNvZGFsZXMgbWkgdHJpc3RpcXVlIGRpZ25pc3NpbSBldCBzZWQg
bGVjdHVzLiBDcmFzIGNvbnZhbGxpcywgbmliaCB1dCBkYXBpYnVzIGdyYXZpZGEsIGVuaW0gbWF1
cmlzIG1vbGVzdGllIGVsaXQsIGVnZXQgZnJpbmdpbGxhIGF1Z3VlIGVzdCBuZWMgZXN0LiBDdXJh
Yml0dXIgZXUgcXVhbSBub24gcHVydXMgc29kYWxlcyBwdWx2aW5hci4gRG9uZWMgdWx0cmljZXMg
ZHVpIGVnZXQgZG9sb3IgbG9ib3J0aXMgaW4gcG9ydGEgcXVhbSBydXRydW0uIE51bGxhIHJpc3Vz
IGxhY3VzLCBhZGlwaXNjaW5nIHF1aXMgdWxsYW1jb3JwZXIgdmVzdGlidWx1bSwgY29uZGltZW50
dW0gc2VkIGxhY3VzLiBTZWQgaW4gbnVuYyBkb2xvciwgcXVpcyBlZ2VzdGFzIHR1cnBpcy4gSW50
ZWdlciBhcmN1IHRlbGx1cywgcG9zdWVyZSBzaXQgYW1ldCBwZWxsZW50ZXNxdWUgYSwgbW9sZXN0
aWUgYXQgbWkuIE51bGxhIGJsYW5kaXQsIG1pIGV0IGV1aXNtb2QgaW1wZXJkaWV0LCBhdWd1ZSBh
cmN1IG9ybmFyZSBmZWxpcywgbmVjIHZpdmVycmEgbGFjdXMgbGlndWxhIHV0IG1ldHVzLiBQcm9p
biB1dCBsZW8gYW50ZSwgYXQgY29uc2VjdGV0dXIgc2VtLiBOdWxsYW0gbm9uIG51bmMgbGlndWxh
LiBQcm9pbiBzZWQgYW50ZSBzZW0sIGlkIHJ1dHJ1bSBwdXJ1cy4KKzwvZGl2PgorPHVsIGlkPSJj
b25zb2xlIj48L3VsPgorPGJyPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzOCBAQAor77u/PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RU
RCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1s
MS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwiID4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPlRlc3QgbGVm
dCBvdmVyZmxvdyBpbiBMVFIgcGFnZTwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
ICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZh
ciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAg
ICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAg
ICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1
YWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWwg
IT0gZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6
IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBt
ZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAg
b25sb2FkID0gZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5h
bCA9IHdpbmRvdy5zY3JvbGxYOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygtMSwg
MCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInNjcm9sbCIsIHdpbmRvdy5zY3JvbGxY
LCAwKTsKKyAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0eWxlPSJwb3NpdGlvbjpyZWxh
dGl2ZTsgcmlnaHQ6NDBweCI+dGVzdCBsZWZ0IG92ZXJmbG93IGluIExUUiBwYWdlLjwvZGl2Pgor
ICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1y
dGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAor77u/PCFET0NUWVBFIGh0bWwg
UFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93
d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0bWwg
IHN0eWxlPSJkaXJlY3Rpb246cnRsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCIgPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+VGVzdCByaWdodCBvdmVyZmxvdyBpbiBS
VEwgcGFnZTwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBs
b2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnNvbGUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAgICAgIGNv
bnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisg
ICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1cmUsIGFjdHVh
bDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3Vj
Y2VzcyIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rp
b24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IHdpbmRvdy5zY3Jv
bGxYOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygxLCAwKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRFcXVhbCgic2Nyb2xsIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgIAorICAg
ICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+Cisg
ICAgICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjQwcHgi
PnRlc3QgcmlnaHQgb3ZlcmZsb3cgaW4gUlRMIHBhZ2UuPC9kaXY+CisgICAgICAgIDx1bCBpZD0i
Y29uc29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFs
LXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkg
QEAKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwg
c2Nyb2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogU3Vj
Y2Vzcworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogU3VjY2Vzcwor
cmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3doZWVsIHNjcm9sbCBw
cmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK0tleURvd24gSE9N
RSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogLTEwMDAKK0tl
eURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAt
MTAwMAorc2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50OiBTdWNjZXNzCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13
aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNo
YW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK29yaWdpbmFsIHNjcm9sbCB4
IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdl
IDogU3VjY2Vzcworb3JpZ2luYWwgc2Nyb2xsIHggZm9yIExUUiBwYWdlIDogU3VjY2VzcworaG9y
aXpvbnRhbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBTdWNjZXNzCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9ibG9jay9iYXNpYy90cnVuY2F0aW9uLXJ0bC1leHBlY3RlZC5j
aGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9ibG9j
ay9iYXNpYy90cnVuY2F0aW9uLXJ0bC1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gNzIzMjUp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9ibG9jay9iYXNpYy90cnVuY2F0aW9u
LXJ0bC1leHBlY3RlZC5jaGVja3N1bQkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotMjkxZjAw
OTExOTczNTgwMjYzNjk2NjI3YzM3NmMzMmYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitk
MTdlNzMxZTRkZWI5ZDM4NDNkODJlNDIwYzI2MzM2YgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5j
YXRpb24tcnRsLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9ibG9jay9iYXNpYy90cnVuY2F0aW9uLXJ0bC1leHBlY3RlZC5wbmcJKHJldmlz
aW9uIDcyMzI1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmxvY2svYmFzaWMv
dHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQucG5nCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNCArMTM3
LDUgQEAgbEh20EEHBewUfPjhhzdzyDxMsk9CkOW+dXNFhMuvvbj0G51AG+czzgogbyDhMMwKIA9e
uUOYz3zmM/lt/WqAjemwZOpbb72lD8j4MTWH+1j+0lx6jfke+NHEgxg6AxiChQc7PNDhD/Fw3xx0
xbXJs6VLSz+8SCv1w1tzkycT5cMaa6yhD5MmHw/ieLCVyd56y4tvcdJjLTy+sNRYlfTFqlcYEnfI
IYfoWHGww5wJjCdvcyln+CPvWEULXOHOPvvsIJP0deWv/fffX4ezqMe8f110tXKolWNuY2k6OLdO
rTfED2UN/c11Kb88z7XyMdk4woaxchAcVglDJxxfyvAVEF+jMPxNJp5rXTnnnHN0iWOUEd5iY46K
OeyCjq8TZnd2H8cat5q+GOpl9RbznEp6pWnifJS8IV7f+ojhlFjtCSs3tbm0fPqyg7zcJnCvZrcp
M5TfKDL6coBeuUvbSHT+0bbaEMhaHvrqXCrvXKfWa2kw6EiABEiABEhgcALy8K8rSf3bv/1bvPnm
m6OMu48ysTbK8qOT0vrd734XZUz8hPuyjGiUMfFRhmpF+Uqiqy194Qtf0A3S5GE7yth4PPHGq6++
Osqk7wnXWDkIKxvJg12UB+t43333RRkKIBQPPPDAKHMedAUhmYwb5Qc6YvUYrFAFWVj9SuaNRFnq
VK/32WefKA9iE/TC6jLysKEyZHx8lAnFEStoyXCj+NBDD2lYeTDS/F588cVRJsBGWbY3ykOh+nWJ
nybYJbzHqkv8O++8U1dcAgP5IqI8Ux3svI27LMGrrOSNfsTqSzKBX68hS4Y+6WaRsnys+kGOp2su
3ytHpJXamOloR1lKNsokeNVFJqBHbISZO9kLJC6zzDJql9IpaLy98oOOaZ6xulvNHhrBciLD3aJM
OI4yRCrefffdEWzkwVODoG7AjuRNupYHysUcdJU5AVG+okXYJeqLzN2JuJ87GepXtP8u+p5yyimq
gyyeEKXzoXW2pFea9ih5Qx3Cil596qN8nYsytCj+3d/9XZq8nuflAzvpw65kE57dIuGUGdqkNrvy
ZIzCIc88VldDuyedsygvAiJWDsSqZ+a89EfJd7G8pe7X3PsQQBoJOhIgARIgARIYnADeQKcTfL0E
MGEcbxFThze1eMOLyZF4O9h3OBXebCMu3CjxU136nuPnFWv7Yww2VriZajcuK+iLL1RYJWkchwnf
WFgAX5zwphrlipWUpPPXzG/oq6tXjn1srE++pqr88CUKLTYBLrBneVCdoBbYYOUiDI3Lx+6jLuDt
Oib/gi++XHnO4+bFgx++riAdc55eFmacvJmMrsd33nknYP8NeWnQKUpfdm1Ca3abMxtFRlucrvek
Q6arX+HLGb4CtbW9tTy0pVWKUyxvLGBQ6V6wA9JGmvdIgARIgARIgAR6E7jmmmu0s4FN0VKHSdbo
hGHpWzoSGIIAFpfA6nJY6pnuLwSsA3LppZdOL5IOHZBuS0JMbzaYOgmQAAmQAAmQwCwggB3Rses7
5lFg+Vi8gcf8AcwjYOdjFhTgLFJxjz320CVmZ5HKU6oqvkbYXLkpTWgg4fwCMhBIiiEBEiABEiAB
EggBQ2OwtwhWyMHmf+x40CpIYOoJyFy7ZuEALHH+pS99aeoTLaXQ4QvI+2QCCOeAlADyPgmQAAmQ
AAmQAAmQAAmQQD8ClTkgi9YmifRLjaFJgARIgARIgARIgARIgARIoEyA+4CU2dCHBEiABEiABEiA
BEiABEhgYALsgAwMlOJIgARIgARIgARIgARIgATKBNgBKbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZ
GCjFkQAJkAAJkAAJkAAJkAAJlAmwA1JmQx8SIAESIAESIAESIAESIIGBCbADMjBQiiMBEiABEiAB
EiABEiABEigTYAekzIY+JEACJEACJEACJEACJEACAxNgB2RgoBRHAiRAAiRAAiRAAiRAAiRQJsAO
SJkNfUiABEiABEiABEiABEiABAYmwA7IwEApjgRIgARIgARIgARIgARIoEyAHZAyG/qQAAmQAAmQ
AAmQAAmQAAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJkECZADsgZTb0IQESIAESIAESIAESIAESGJgA
OyADA6U4EiABEiABEiABEiABEiCBMgF2QMps6EMCJEACJEACJEACJEACJDAwAXZABgZKcSRAAiRA
AiRAAiRAAiRAAmUC7ICU2dCHBEiABEiABEiABEiABEhgYALsgAwMlOJIgARIgARIgARIgARIgATK
BNgBKbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZGCjFkQAJkAAJkAAJkAAJkAAJlAmwA1JmQx8SIAES
IAESIAESIAESIIGBCbADMjBQiiMBEiABEiABEiABEiABEigTYAekzIY+JEACJEACJEACJEACJEAC
AxNgB2RgoBRHAiRAAiRAAiRAAiRAAiRQJsAOSJkNfUiABEiABEiABEiABEiABAYmwA7IwEApjgRI
gARIgARIgARIgARIoEyAHZAyG/qQAAmQAAmQAAmQAAmQAAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJ
kECZADsgZTb0IQESIAESIAESIAESIAESGJgAOyADA6U4EiABEiABEiABEiABEiCBMgF2QMps6EMC
JEACJEACJEACJEACJDAwAXZABgZKcSRAAiRAAiRAAiRAAiRAAmUC7ICU2dCHBEiABEiABEiABEiA
BEhgYALsgAwMlOJIgARIgARIgARIgARIgATKBNgBKbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZGCjF
kQAJkAAJkAAJkAAJkAAJlAmwA1JmQx8SIAESIAESIAESIAESIIGBCbADMjBQiiMBEiABEiABEiAB
EiABEigTYAekzIY+JEACJEACJEACJEACJEACAxNgB2RgoBRHAiRAAiRAAiRAAiRAAiRQJsAOSJkN
fUiABEiABEiABEiABEiABAYmwA7IwEApjgRIgARIgARIgARIgARIoEyAHZAyG/qQAAmQAAmQAAmQ
AAmQAAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJkECZADsgZTb0IQESIAESIAESIAESIAESGJgAOyAD
A6U4EiABEiABEiABEiABEiCBMgF2QMps6EMCJEACJEACJEACJEACJDAwAXZABgZKcSRAAiRAAiRA
AiRAAiRAAmUC7ICU2dCHBEiABEiABEiABEiABEhgYALsgAwMlOJIgARIgARIgARIgARIgATKBNgB
KbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZGCjFkQAJkAAJkAAJkAAJkAAJlAmwA1JmQx8SIAESIAES
IAESIAESIIGBCbADMjBQiiMBEiABEiABEiABEiABEigTYAekzIY+JEACJEACJEACJEACJEACAxNg
B2RgoBRHAiRAAiRAAiRAAiRAAiRQJsAOSJkNfUiABEiABEiABEiABEiABAYmwA7IwEApjgRIgARI
gARIgARIgARIoEyAHZAyG/qQAAmQAAmQAAmQAAmQAAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJkECZ
ADsgZTb0IQESIAESIAESIAESIAESGJgAOyADA6U4EiABEiABEiABEiABEiCBMgF2QMps6EMCJEAC
JEACJEACJEACJDAwAXZABgZKcSRAAiRAAiRAAiRAAiRAAmUC7ICU2dCHBEiABEiABEiABEiABEhg
YALsgAwMlOJIgARIgARIgARIgARIgATKBNgBKbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZGCjFkQAJ
kAAJkAAJkAAJkAAJlAmwA1JmQx8SIAESIAESIAESIAESIIGBCbADMjBQiiMBEiABEiABEiABEiAB
EigTYAekzIY+JEACJEACJEACJEACJEACAxNgB2RgoBRHAiRAAiRAAiRAAiRAAiRQJsAOSJkNfUiA
BEiABEiABEiABEiABAYmwA7IwEApjgRIgARIgARIgARIgARIoEyAHZAyG/qQAAmQAAmQAAmQAAmQ
AAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJkECZADsgZTb0IQESIAESIAESIAESIAESGJgAOyADA6U4
EiABEiABEiABEiABEiCBMgF2QMps6EMCJEACJEACJEACJEACJDAwAXZABgZKcSRAAiRAAiRAAiRA
AiRAAmUC7ICU2dCHBEiABEiABEiABEiABEhgYALsgAwMlOJIgARIgARIgARIgARIgATKBNgBKbOh
DwmQAAmQAAmQAAmQAAmQwMAE2AEZGCjFkQAJkAAJkAAJkAAJkAAJlAmwA1JmQx8SIAESIAESIAES
IAESIIGBCbADMjBQiiMBEiABEiABEiABEiABEigTYAekzIY+JEACJEACJEACJEACJEACAxNgB2Rg
oBRHAiRAAiRAAiRAAiRAAiRQJsAOSJkNfUiABEiABEiABEiABEiABAYmwA7IwEApjgRIgARIgARI
gARIgARIoEyAHZAyG/qQAAmQAAmQAAmQAAmQAAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJkECZADsg
ZTb0IQESIAESIAESIAESIAESGJgAOyADA6U4EiABEiABEiABEiABEiCBMgF2QMps6EMCJEACJEAC
JEACJEACJDAwAXZABgZKcSRAAiRAAiRAAiRAAiRAAmUC7ICU2dCHBEiABEiABEiABEiABEhgYALs
gAwMlOJIgARIgARIgARIgARIgATKBNgBKbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZGCjFkexZ/t4A
ABXhSURBVAAJkAAJkAAJkAAJkAAJlAmwA1JmQx8SIAESIAESIAESIAESIIGBCbADMjBQiiMBEiAB
EiABEiABEiABEigTYAekzIY+JEACJEACJEACJEACJEACAxNgB2RgoBRHAiRAAiRAAiRAAiRAAiRQ
JsAOSJkNfUiABEiABEiABEiABEiABAYmwA7IwEApjgRIgARIgARIgARIgARIoEyAHZAyG/qQAAmQ
AAmQAAmQAAmQAAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJkECZADsgZTb0IQESIAESIAESIAESIAES
GJgAOyADA6U4EiABEiABEiABEiABEiCBMgF2QMps6EMCJEACJEACJEACJEACJDAwAXZABgZKcSRA
AiRAAiRAAiRAAiRAAmUC7ICU2dCHBEiABEiABEiABEiABEhgYALsgAwMlOJIgARIgARIgARIgARI
gATKBNgBKbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZGCjFkQAJkAAJkAAJkAAJkAAJlAmwA1JmQx8S
IAESIAESIAESIAESIIGBCbADMjBQiiMBEiABEiABEiABEiABEigTYAekzIY+JEACJEACJEACJEAC
JEACAxNgB2RgoBRHAiRAAiRAAiRAAiRAAiRQJsAOSJkNfUiABEiABEiABEiABEiABAYmwA7IwEAp
jgRIgARIgARIgARIgARIoEyAHZAyG/qQAAmQAAmQAAmQAAmQAAkMTIAdkIGBUhwJkAAJkAAJkAAJ
kAAJkECZADsgZTb0IQESIAESIAESIAESIAESGJgAOyADA6U4EiABEiABEiABEiABEiCBMgF2QMps
6EMCJEACJEACJEACJEACJDAwAXZABgZKcSRAAiRAAiRAAiRAAiRAAmUC7ICU2dCHBEiABEiABEiA
BEiABEhgYALsgAwMlOJIgARIgARIgARIgARIgATKBNgBKbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZ
GCjFkQAJkAAJkAAJkAAJkAAJlAmwA1JmQx8SIAESIAESIAESIAESIIGBCbADMjBQiiMBEiABEiAB
EiABEiABEigTYAekzIY+JEACJEACJEACJEACJEACAxNgB2RgoBRHAiRAAiRAAiRAAiRAAiRQJsAO
SJkNfUiABEiABEiABEiABEiABAYmwA7IwEApjgRIgARIgARIgARIgARIoEyAHZAyG/qQAAmQAAmQ
AAmQAAmQAAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJkECZADsgZTb0IQESIAESIAESIAESIAESGJgA
OyADA6U4EiABEiABEiABEiABEiCBMgF2QMps6EMCJEACJEACJEACJEACJDAwAXZABgZKcSRAAiRA
AiRAAiRAAiRAAmUC7ICU2dCHBEiABEiABEiABEiABEhgYALsgAwMlOJIgARIgARIgARIgARIgATK
BNgBKbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZGCjFkQAJkAAJkAAJkAAJkAAJlAmwA1JmQx8SIAES
IAESIAESIAESIIGBCbADMjBQiiMBEiABEiABEiABEiABEigTYAekzIY+JEACJEACJEACJEACJEAC
AxNgB2RgoBRHAiRAAiRAAiRAAiRAAiRQJsAOSJkNfUiABEiABEiABEiABEiABAYmwA7IwEApjgRI
gARIgARIgARIgARIoEyAHZAyG/qQAAmQAAmQAAmQAAmQAAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJ
kECZADsgZTb0IQESIAESIAESIAESIAESGJgAOyADA6U4EiABEiABEiABEiABEiCBMgF2QMps6EMC
JEACJEACJEACJEACJDAwAXZABgZKcSRAAiRAAiRAAiRAAiRAAmUC7ICU2dCHBEiABEiABEiABEiA
BEhgYALsgAwMlOJIgARIgARIgARIgARIgATKBNgBKbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZGCjF
kQAJkAAJkAAJkAAJkAAJlAmwA1JmQx8SIAESIAESIAESIAESIIGBCbADMjBQiiMBEiABEiABEiAB
EiABEigTYAekzIY+JEACJEACJEACJEACJEACAxNgB2RgoBRHAiRAAiRAAiRAAiRAAiRQJsAOSJkN
fUiABEiABEiABEiABEiABAYmwA7IwEApjgRIgARIgARIgARIgARIoEyAHZAyG/qQAAmQAAmQAAmQ
AAmQAAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJkECZADsgZTb0IQESIAESIAESIAESIAESGJgAOyAD
A6U4EiABEiABEiABEiABEiCBMgF2QMps6EMCJEACJEACJEACJEACJDAwAXZABgZKcSRAAiRAAiRA
AiRAAiRAAmUC7ICU2dCHBEiABEiABEiABEiABEhgYALsgAwMlOJIgARIgARIgARIgARIgATKBNgB
KbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZGCjFkQAJkAAJkAAJkAAJkAAJlAmwA1JmQx8SIAESIAES
IAESIAESIIGBCbADMjBQiiMBEiABEiABEiABEiABEigTYAekzIY+JEACJEACJEACJEACJEACAxNg
B2RgoBRHAiRAAiRAAiRAAiRAAiRQJsAOSJkNfUiABEiABEiABEiABEiABAYmwA7IwEApjgRIgARI
gARIgARIgARIoEyAHZAyG/qQAAmQAAmQAAmQAAmQAAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJkECZ
ADsgZTb0IQESIAESIAESIAESIAESGJgAOyADA6U4EiABEiABEiABEiABEiCBMgF2QMps6EMCJEAC
JEACJEACJEACJDAwAXZABgZKcSRAAiRAAiRAAiRAAiRAAmUC7ICU2dCHBEiABEiABEiABEiABEhg
YALsgAwMlOJIgARIgARIgARIgARIgATKBNgBKbOhDwmQAAmQAAmQAAmQAAmQwMAE2AEZGCjFkQAJ
kAAJkAAJkAAJkAAJlAmwA1JmQx8SIAESIAESIAESIAESIIGBCbADMjBQiiMBEiABEiABEiABEiAB
EigTYAekzIY+JEACJEACJEACJEACJEACAxNgB2RgoBRHAiRAAiRAAiRAAiRAAiRQJsAOSJkNfUiA
BEiABEiABEiABEiABAYmwA7IwEApjgRIgARIgARIgARIgARIoEyAHZAyG/qQAAmQAAmQAAmQAAmQ
AAkMTIAdkIGBUhwJkAAJkAAJkAAJkAAJkECZADsgZTb0IQESIAESIAESIAESIAESGJgAOyADA6U4
EiABEiABEiABEiABEiCBMgF2QMps6EMCJEACJEACJEACJEACJDAwAXZABgZKcSRAAiRAAiRAAiRA
AiRAAmUC7ICU2dCHBEiABEiABEiABEiABEhgYALsgAwMlOJIgARIgARIgARIgARIgATKBNgBKbOh
DwmQAAmQAAmQwP9vvw5tAAAAEIb9/zUX4CarSRB1I0CAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTb
WAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBA
gAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECA
AIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBA
vo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgAB
AgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAEC
BAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgC
AuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4I
ECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQ
IECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACB
LyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzq
jgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECA
AAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQI
EPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDE
oO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAEC
BAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBA
gACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUE
SAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQ
IECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAAB
AgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFY
QIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2F
AAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQI
ECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQ
iAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTb
WAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBA
gAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECA
AIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBA
vo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgAB
AgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAEC
BAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgC
AuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4I
ECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQ
IECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACB
LyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzq
jgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECA
AAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQI
EPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDE
oO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAEC
BAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBA
gACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUE
SAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQ
IECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAAB
AgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFY
QIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2F
AAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQI
ECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQ
iAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTb
WAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBA
gAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECA
AIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgABAgQIECBAgACBLyBA
vo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAECBAgQiAUESAzqjgAB
AgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgCAuTbWAgQIECAAAEC
BAgQiAUESAzqjgABAgQIECBAgACBLyBAvo2FAAECBAgQIECAAIFYQIDEoO4IECBAgAABAgQIEPgC
AuTbWAgQIECAAAECBAgQiAUGOElVH6k2UswAAAAASUVORK5CYIIKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCis2AS6wZ3lQnaAW2GDlIgyNy8fuoy7g7Tom/4Ivvlx5zuPmxYMfvq4gHXOeXhZm
nLyZjK7Hd955J2D/DXlp0ClKX3ZtQmt2mzMbRUZbnK73pEOmq1/hyxm+ArW1vbU8tKVVilMsbyxg
UOlesAPSRpr3SIAESIAESIAEehO45pprtLOBTdFSh0nW6IRh6Vs6EhiCABaXwOpyWOqZ7i8ErANy
6aWXTi+SDh2QbktCTG82mDoJkAAJkAAJkMAsIIAd0bHrO+ZRYPlYvIHH/AHMI2DnYxYU4CxScY89
9tAlZmeRylOqKr5G2Fy5KU1oIOH8AjIQSIohARIgARIgARIIAUNjsLcIVsjB5n/seNAqSGDqCchc
u2bhACxx/qUvfWnqEy2l0OELyPtkAgjngJQA8j4JkAAJkAAJkAAJkAAJkEA/ApU5IIvWJon0S42h
SYAESIAESIAESIAESIAESKBMgPuAlNnQhwRIgARIgARIgARIgARIYGAC7IAMDJTiSIAESIAESIAE
SIAESIAEygTYASmzoQ8JkAAJkAAJkAAJkAAJkMDABNgBGRgoxZEACZAACZAACZAACZAACZQJsANS
ZkMfEiABEiABEiABEiABEiCBgQmwAzIwUIojARIgARIgARIgARIgARIoE2AHpMyGPiRAAiRAAiRA
AiRAAiRAAgMTYAdkYKAURwIkQAIkQAIkQAIkQAIkUCbADkiZDX1IgARIgARIgARIgARIgAQGJsAO
yMBAKY4ESIAESIAESIAESIAESKBMgB2QMhv6kAAJkAAJkAAJkAAJkAAJDEyAHZCBgVIcCZAACZAA
CZAACZAACZBAmQA7IGU29CEBEiABEiABEiABEiABEhiYADsgAwOlOBIgARIgARIgARIgARIggTIB
dkDKbOhDAiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEkQAIkQAIkQAIkQAIkQAJlAuyAlNnQhwRIgARI
gARIgARIgARIYGAC7IAMDJTiSIAESIAESIAESIAESIAEygTYASmzoQ8JkAAJkAAJkAAJkAAJkMDA
BNgBGRgoxZEACZAACZAACZAACZAACZQJsANSZkMfEiABEiABEiABEiABEiCBgQmwAzIwUIojARIg
ARIgARIgARIgARIoE2AHpMyGPiRAAiRAAiRAAiRAAiRAAgMTYAdkYKAURwIkQAIkQAIkQAIkQAIk
UCbADkiZDX1IgARIgARIgARIgARIgAQGJsAOyMBAKY4ESIAESIAESIAESIAESKBMgB2QMhv6kAAJ
kAAJkAAJkAAJkAAJDEyAHZCBgVIcCZAACZAACZAACZAACZBAmQA7IGU29CEBEiABEiABEiABEiAB
EhiYADsgAwOlOBIgARIgARIgARIgARIggTIBdkDKbOhDAiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEk
QAIkQAIkQAIkQAIkQAJlAuyAlNnQhwRIgARIgARIgARIgARIYGAC7IAMDJTiSIAESIAESIAESIAE
SIAEygTYASmzoQ8JkAAJkAAJkAAJkAAJkMDABNgBGRgoxZEACZAACZAACZAACZAACZQJsANSZkMf
EiABEiABEiABEiABEiCBgQmwAzIwUIojARIgARIgARIgARIgARIoE2AHpMyGPiRAAiRAAiRAAiRA
AiRAAgMTYAdkYKAURwIkQAIkQAIkQAIkQAIkUCbADkiZDX1IgARIgARIgARIgARIgAQGJsAOyMBA
KY4ESIAESIAESIAESIAESKBMgB2QMhv6kAAJkAAJkAAJkAAJkAAJDEyAHZCBgVIcCZAACZAACZAA
CZAACZBAmQA7IGU29CEBEiABEiABEiABEiABEhiYADsgAwOlOBIgARIgARIgARIgARIggTIBdkDK
bOhDAiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEkQAIkQAIkQAIkQAIkQAJlAuyAlNnQhwRIgARIgARI
gARIgARIYGAC7IAMDJTiSIAESIAESIAESIAESIAEygTYASmzoQ8JkAAJkAAJkAAJkAAJkMDABNgB
GRgoxZEACZAACZAACZAACZAACZQJsANSZkMfEiABEiABEiABEiABEiCBgQmwAzIwUIojARIgARIg
ARIgARIgARIoE2AHpMyGPiRAAiRAAiRAAiRAAiRAAgMTYAdkYKAURwIkQAIkQAIkQAIkQAIkUCbA
DkiZDX1IgARIgARIgARIgARIgAQGJsAOyMBAKY4ESIAESIAESIAESIAESKBMgB2QMhv6kAAJkAAJ
kAAJkAAJkAAJDEyAHZCBgVIcCZAACZAACZAACZAACZBAmQA7IGU29CEBEiABEiABEiABEiABEhiY
ADsgAwOlOBIgARIgARIgARIgARIggTIBdkDKbOhDAiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEkQAIk
QAIkQAIkQAIkQAJlAuyAlNnQhwRIgARIgARIgARIgARIYGAC7IAMDJTiSIAESIAESIAESIAESIAE
ygTYASmzoQ8JkAAJkAAJkAAJkAAJkMDABNgBGRgoxZEACZAACZAACZAACZAACZQJsANSZkMfEiAB
EiABEiABEiABEiCBgQmwAzIwUIojARIgARIgARIgARIgARIoE2AHpMyGPiRAAiRAAiRAAiRAAiRA
AgMTYAdkYKAURwIkQAIkQAIkQAIkQAIkUCbADkiZDX1IgARIgARIgARIgARIgAQGJsAOyMBAKY4E
SIAESIAESIAESIAESKBMgB2QMhv6kAAJkAAJkAAJkAAJkAAJDEyAHZCBgVIcCZAACZAACZAACZAA
CZBAmQA7IGU29CEBEiABEiABEiABEiABEhiYADsgAwOlOBIgARIgARIgARIgARIggTIBdkDKbOhD
AiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEkQAIkQAIkQAIkQAIkQAJlAuyAlNnQhwRIgARIgARIgARI
gARIYGAC7IAMDJTiSIAESIAESIAESIAESIAEygTYASmzoQ8JkAAJkAAJkAAJkAAJkMDABNgBGRgo
xZEACZAACZAACZAACZAACZQJsANSZkMfEiABEiABEiABEiABEiCBgQmwAzIwUIojARIgARIgARIg
ARIgARIoE2AHpMyGPiRAAiRAAiRAAiRAAiRAAgMTYAdkYKAURwIkQAIkQAIkQAIkQAIkUCbADkiZ
DX1IgARIgARIgARIgARIgAQGJsAOyMBAKY4ESIAESIAESIAESIAESKBMgB2QMhv6kAAJkAAJkAAJ
kAAJkAAJDEyAHZCBgVIcCZAACZAACZAACZAACZBAmQA7IGU29CEBEiABEiABEiABEiABEhiYADsg
AwOlOBIgARIgARIgARIgARIggTIBdkDKbOhDAiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEkQAIkQAIk
QAIkQAIkQAJlAuyAlNnQhwRIgARIgARIgARIgARIYGAC7IAMDJTiSIAESIAESIAESIAESIAEygTY
ASmzoQ8JkAAJkAAJkAAJkAAJkMDABNgBGRgoxZHsWf7eAAAgAElEQVQACZAACZAACZAACZAACZQJ
sANSZkMfEiABEiABEiABEiABEiCBgQmwAzIwUIojARIgARIgARIgARIgARIoE2AHpMyGPiRAAiRA
AiRAAiRAAiRAAgMTYAdkYKAURwIkQAIkQAIkQAIkQAIkUCbADkiZDX1IgARIgARIgARIgARIgAQG
JsAOyMBAKY4ESIAESIAESIAESIAESKBMgB2QMhv6kAAJkAAJkAAJkAAJkAAJDEyAHZCBgVIcCZAA
CZAACZAACZAACZBAmQA7IGU29CEBEiABEiABEiABEiABEhiYADsgAwOlOBIgARIgARIgARIgARIg
gTIBdkDKbOhDAiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEkQAIkQAIkQAIkQAIkQAJlAuyAlNnQhwRI
gARIgARIgARIgARIYGAC7IAMDJTiSIAESIAESIAESIAESIAEygTYASmzoQ8JkAAJkAAJkAAJkAAJ
kMDABNgBGRgoxZEACZAACZAACZAACZAACZQJsANSZkMfEiABEiABEiABEiABEiCBgQmwAzIwUIoj
ARIgARIgARIgARIgARIoE2AHpMyGPiRAAiRAAiRAAiRAAiRAAgMTYAdkYKAURwIkQAIkQAIkQAIk
QAIkUCbADkiZDX1IgARIgARIgARIgARIgAQGJsAOyMBAKY4ESIAESIAESIAESIAESKBMgB2QMhv6
kAAJkAAJkAAJkAAJkAAJDEyAHZCBgVIcCZAACZAACZAACZAACZBAmQA7IGU29CEBEiABEiABEiAB
EiABEhiYADsgAwOlOBIgARIgARIgARIgARIggTIBdkDKbOhDAiRAAiRAAiRAAiRAAiQwMAF2QAYG
SnEkQAIkQAIkQAIkQAIkQAJlAuyAlNnQhwRIgARIgARIgARIgARIYGAC7IAMDJTiSIAESIAESIAE
SIAESIAEygTYASmzoQ8JkAAJkAAJkAAJkAAJkMDABNgBGRgoxZEACZAACZAACZAACZAACZQJsANS
ZkMfEiABEiABEiABEiABEiCBgQmwAzIwUIojARIgARIgARIgARIgARIoE2AHpMyGPiRAAiRAAiRA
AiRAAiRAAgMTYAdkYKAURwIkQAIkQAIkQAIkQAIkUCbADkiZDX1IgARIgARIgARIgARIgAQGJsAO
yMBAKY4ESIAESIAESIAESIAESKBMgB2QMhv6kAAJkAAJkAAJkAAJkAAJDEyAHZCBgVIcCZAACZAA
CZAACZAACZBAmQA7IGU29CEBEiABEiABEiABEiABEhiYADsgAwOlOBIgARIgARIgARIgARIggTIB
dkDKbOhDAiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEkQAIkQAIkQAIkQAIkQAJlAuyAlNnQhwRIgARI
gARIgARIgARIYGAC7IAMDJTiSIAESIAESIAESIAESIAEygTYASmzoQ8JkAAJkAAJkAAJkAAJkMDA
BNgBGRgoxZEACZAACZAACZAACZAACZQJsANSZkMfEiABEiABEiABEiABEiCBgQmwAzIwUIojARIg
ARIgARIgARIgARIoE2AHpMyGPiRAAiRAAiRAAiRAAiRAAgMTYAdkYKAURwIkQAIkQAIkQAIkQAIk
UCbADkiZDX1IgARIgARIgARIgARIgAQGJsAOyMBAKY4ESIAESIAESIAESIAESKBMgB2QMhv6kAAJ
kAAJkAAJkAAJkAAJDEyAHZCBgVIcCZAACZAACZAACZAACZBAmQA7IGU29CEBEiABEiABEiABEiAB
EhiYADsgAwOlOBIgARIgARIgARIgARIggTIBdkDKbOhDAiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEk
QAIkQAIkQAIkQAIkQAJlAuyAlNnQhwRIgARIgARIgARIgARIYGAC7IAMDJTiSIAESIAESIAESIAE
SIAEygTYASmzoQ8JkAAJkAAJkAAJkAAJkMDABNgBGRgoxZEACZAACZAACZAACZAACZQJsANSZkMf
EiABEiABEiABEiABEiCBgQmwAzIwUIojARIgARIgARIgARIgARIoE2AHpMyGPiRAAiRAAiRAAiRA
AiRAAgMTYAdkYKAURwIkQAIkQAIkQAIkQAIkUCbADkiZDX1IgARIgARIgARIgARIgAQGJsAOyMBA
KY4ESIAESIAESIAESIAESKBMgB2QMhv6kAAJkAAJkAAJkAAJkAAJDEyAHZCBgVIcCZAACZAACZAA
CZAACZBAmQA7IGU29CEBEiABEiABEiABEiABEhiYADsgAwOlOBIgARIgARIgARIgARIggTIBdkDK
bOhDAiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEkQAIkQAIkQAIkQAIkQAJlAuyAlNnQhwRIgARIgARI
gARIgARIYGAC7IAMDJTiSIAESIAESIAESIAESIAEygTYASmzoQ8JkAAJkAAJkAAJkAAJkMDABNgB
GRgoxZEACZAACZAACZAACZAACZQJsANSZkMfEiABEiABEiABEiABEiCBgQmwAzIwUIojARIgARIg
ARIgARIgARIoE2AHpMyGPiRAAiRAAiRAAiRAAiRAAgMTYAdkYKAURwIkQAIkQAIkQAIkQAIkUCbA
DkiZDX1IgARIgARIgARIgARIgAQGJsAOyMBAKY4ESIAESIAESIAESIAESKBMgB2QMhv6kAAJkAAJ
kAAJkAAJkAAJDEyAHZCBgVIcCZAACZAACZAACZAACZBAmQA7IGU29CEBEiABEiABEiABEiABEhiY
ADsgAwOlOBIgARIgARIgARIgARIggTIBdkDKbOhDAiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEkQAIk
QAIkQAIkQAIkQAJlAuyAlNnQhwRIgARIgARIgARIgARIYGAC7IAMDJTiSIAESIAESIAESIAESIAE
ygTYASmzoQ8JkAAJkAAJkAAJkAAJkMDABNgBGRgoxZEACZAACZAACZAACZAACZQJsANSZkMfEiAB
EiABEiABEiABEiCBgQmwAzIwUIojARIgARIgARIgARIgARIoE2AHpMyGPiRAAiRAAiRAAiRAAiRA
AgMTYAdkYKAURwIkQAIkQAIkQAIkQAIkUCbADkiZDX1IgARIgARIgARIgARIgAQGJsAOyMBAKY4E
SIAESIAESIAESIAESKBMgB2QMhv6kAAJkAAJkAAJkAAJkAAJDEyAHZCBgVIcCZAACZAACZAACZAA
CZBAmQA7IGU29CEBEiABEiABEiABEiABEhiYADsgAwOlOBIgARIgARIgARIgARIggTIBdkDKbOhD
AiRAAiRAAiRAAiRAAiQwMAF2QAYGSnEkQAIkQAIkQAIkQAIkQAJlAuyAlNnQhwRIgARIgARIgARI
gARIYGAC7IAMDJTiSIAESIAESIAESIAESIAEygTYASmzoQ8JkAAJkAAJkMD/b+9ufuwq0jsAV3ff
/nAbt40N2AmyAc3wJTQhFiKMgkAjwSKwYcmHWLKBBX8FfwISG5ZIgFAk2EQREmjCZpQwg0c4hBkH
BjBmGIwNGBu7u29/zPseU1bTuIBAZdHJc0bHp++pc6rvPNS5t3636twmQIAAgc4CAkhnUNURIECA
AAECBAgQINAWEEDaNkoIECBAgAABAgQIEOgsIIB0BlUdAQIECBAgQIAAAQJtAQGkbaOEAAECBAgQ
IECAAIHOAgJIZ1DVESBAgAABAgQIECDQFhBA2jZKCBAgQIAAAQIECBDoLCCAdAZVHQECBAgQIECA
AAECbQEBpG2jhAABAgQIECBAgACBzgICSGdQ1REgQIAAAQIECBAg0BYQQNo2SggQIECAAAECBAgQ
6CwggHQGVR0BAgQIECBAgAABAm0BAaRto4QAAQIECBAgQIAAgc4CAkhnUNURIECAAAECBAgQINAW
EEDaNkoIECBAgAABAgQIEOgsIIB0BlUdAQIECBAgQIAAAQJtAQGkbaOEAAECBAgQIECAAIHOAgJI
Z1DVESBAgAABAgQIECDQFhBA2jZKCBAgQIAAAQIECBDoLCCAdAZVHQECBAgQIECAAAECbQEBpG2j
hAABAgQIECBAgACBzgICSGdQ1REgQIAAAQIECBAg0BYQQNo2SggQIECAAAECBAgQ6CwggHQGVR0B
AgQIECBAgAABAm0BAaRto4QAAQIECBAgQIAAgc4CAkhnUNURIECAAAECBAgQINAWEEDaNkoIECBA
gAABAgQIEOgsIIB0BlUdAQIECBAgQIAAAQJtAQGkbaOEAAECBAgQIECAAIHOAgJIZ1DVESBAgAAB
AgQIECDQFhBA2jZKCBAgQIAAAQIECBDoLCCAdAZVHQECBAgQIECAAAECbQEBpG2jhAABAgQIECBA
gACBzgICSGdQ1REgQIAAAQIECBAg0BYQQNo2SggQIECAAAECBAgQ6CwggHQGVR0BAgQIECBAgAAB
Am0BAaRto4QAAQIECBAgQIAAgc4CAkhnUNURIECAAAECBAgQINAWEEDaNkoIECBAgAABAgQIEOgs
IIB0BlUdAQIECBAgQIAAAQJtAQGkbaOEAAECBAgQIECAAIHOAgJIZ1DVESBAgAABAgQIECDQFhBA
2jZKCBAgQIAAAQIECBDoLCCAdAZVHQECBAgQIECAAAECbQEBpG2jhAABAgQIECBAgACBzgICSGdQ
1REgQIAAAQIECBAg0BYQQNo2SggQIECAAAECBAgQ6CwggHQGVR0BAgQIECBAgAABAm0BAaRto4QA
AQIECBAgQIAAgc4CAkhnUNURIECAAAECBAgQINAWEEDaNkoIECBAgAABAgQIEOgsIIB0BlUdAQIE
CBAgQIAAAQJtAQGkbaOEAAECBAgQIECAAIHOAgJIZ1DVESBAgAABAgQIECDQFhBA2jZKCBAgQIAA
AQIECBDoLCCAdAZVHQECBAgQIECAAAECbQEBpG2jhAABAgQIECBAgACBzgICSGdQ1REgQIAAAQIE
CBAg0BYQQNo2SggQIECAAAECBAgQ6CwggHQGVR0BAgQIECBAgAABAm0BAaRto4QAAQIECBAgQIAA
gc4CAkhnUNURIECAAAECBAgQINAWEEDaNkoIECBAgAABAgQIEOgsIIB0BlUdAQIECBAgQIAAAQJt
AQGkbaOEAAECBAgQIECAAIHOAgJIZ1DVESBAgAABAgQIECDQFhBA2jZKCBAgQIAAAQIECBDoLCCA
dAZVHQECBAgQIECAAAECbQEBpG2jhAABAgQIECBAgACBzgICSGdQ1REgQIAAAQIECBAg0BYQQNo2
SggQIECAAAECBAgQ6CwggHQGVR0BAgQIECBAgAABAm0BAaRto4QAAQIECBAgQIAAgc4CAkhnUNUR
IECAAAECBAgQINAWEEDaNkoIECBAgAABAgQIEOgsIIB0BlUdAQIECBAgQIAAAQJtAQGkbaOEAAEC
BAgQIECAAIHOAgJIZ1DVESBAgAABAgQIECDQFhBA2jZKCBAgQIAAAQIECBDoLCCAdAZVHQECBAgQ
IECAAAECbQEBpG2jhAABAgQIECBAgACBzgICSGdQ1REgQIAAAQIECBAg0BYQQNo2SggQIECAAAEC
BAgQ6CwggHQGVR0BAgQIECBAgAABAm0BAaRto4QAAQIECBAgQIAAgc4CAkhnUNURIECAAAECBAgQ
INAWEEDaNkoIECBAgAABAgQIEOgsIIB0BlUdAQIECBAgQIAAAQJtAQGkbaOEAAECBAgQIECAAIHO
AgJIZ1DVESBAgAABAgQIECDQFhBA2jZKCBAgQIAAAQIECBDoLCCAdAZVHQECBAgQIECAAAECbQEB
pG2jhAABAgQIECBAgACBzgICSGdQ1REgQIAAAQIECBAg0BYQQNo2SggQIECAAAECBAgQ6CwggHQG
VR0BAgQIECBAgAABAm0BAaRto4QAAQIECBAgQIAAgc4CAkhnUNURIECAAAECBAgQINAWEEDaNkoI
ECBAgAABAgQIEOgsIIB0BlUdAQIECBAgQIAAAQJtAQGkbaOEAAECBAgQIECAAIHOAgJIZ1DVESBA
gAABAgQIECDQFhBA2jZKCBAgQIAAAQIECBDoLCCAdAZVHQECBAgQIECAAAECbQEBpG2jhAABAgQI
ECBAgACBzgICSGdQ1REgQIAAAQIECBAg0BYQQNo2SggQIECAAAECBAgQ6CwggHQGVR0BAgQIECBA
gAABAm0BAaRto4QAAQIECBAgQIAAgc4CAkhnUNURIECAAAECBAgQINAWEEDaNkoIECBAgAABAgQI
EOgsIIB0BlUdAQIECBAgQIAAAQJtAQGkbaOEAAECBAgQIECAAIHOAgJIZ1DVESBAgAABAgQIECDQ
FhBA2jZKCBAgQIAAAQIECBDoLCCAdAZVHQECBAgQIECAAAECbQEBpG2jhAABAgQIECBAgACBzgIC
SGdQ1REgQIAAAQIECBAg0BYQQNo2SggQIECAAAECBAgQ6CwggHQGVR0BAgQIECBAgAABAm0BAaRt
o4QAAQIECBAgQIAAgc4CAkhnUNURIECAAAECBAgQINAWEEDaNkoIECBAgAABAgQIEOgsIIB0BlUd
AQIECBAgQIAAAQJtAQGkbaOEAAECBAgQIECAAIHOAgJIZ1DVESBAgAABAgQIECDQFhBA2jZKCBAg
QIAAAQIECBDoLCCAdAZVHQECBAgQIECAAAECbQEBpG2jhAABAgQIECBAgACBzgICSGdQ1REgQIAA
AQIECBAg0BYQQNo2SggQIECAAAECBAgQ6CwggHQGVR0BAgQIECBAgAABAm0BAaRto4QAAQIECBAg
QIAAgc4CAkhnUNURIECAAAECBAgQINAWEEDaNkoIECBAgAABAgQIEOgsIIB0BlUdAQIECBAgQIAA
AQJtAQGkbaOEAAECBAgQIECAAIHOAgJIZ1DVESBAgAABAgQIECDQFhBA2jZKCBAgQIAAAQIECBDo
LCCAdAZVHQECBAgQIECAAAECbQEBpG2jhAABAgQIECBAgACBzgICSGdQ1REgQIAAAQIECBAg0BYQ
QNo2SggQIECAAAECBAgQ6CwggHQGVR0BAgQIECBAgAABAm0BAaRto4QAAQIECBAgQIAAgc4CAkhn
UNURIECAAAECBAgQINAWEEDaNkoIECBAgAABAgQIEOgsIIB0BlUdAQIECBAgQIAAAQJtAQGkbaOE
AAECBAgQIECAAIHOAgJIZ1DVESBAgAABAgQIECDQFhBA2jZKCBAgQIAAAQIECBDoLCCAdAZVHQEC
BAgQIECAAAECbQEBpG2jhAABAgQIECBAgACBzgICSGdQ1REgQIAAAQIECBAg0BYQQNo2SggQIECA
AAECBAgQ6CwggHQGVR0BAgQIECBAgAABAm0BAaRto4QAAQIECBAgQIAAgc4CAkhnUNURIECAAAEC
BAgQINAWEEDaNkoIECBAgAABAgQIEOgsIIB0BlUdAQIECBAgQIAAAQJtgdGLL75YRqNRmZqaKtPT
08OR6+vrZXJysqytrZWJiYnh55WVlZJrluW+PN5C4H9bINtgXWv7y8cWAgQIECBAgACBiwusrq5e
6MPPzc2VmZmZ4cDar699/Hp29u/rkhlg4+O6v26PHz9errjiivrwW9v8HZv7avl8ss7cZn9uNB6P
y1VXXTWEjAwVWZhrDSCfffZZ+fjjj8u2bdvK7OzssD8DS/0/kNtc6vZbz8IOAj9CINtgNt5snx/9
ZbH8+o3Fcui/Szn6yVQ5szSKGiOE5LUSDblctv1H/AanECBAgAABAgT+jwmsRecoP6eNftT2qeWy
f9dSuWn/6XLLteNy8O8OlL179w4DD9nPyr57XTMY5FIzQC0fdm7656uvvhrq2bR7eFjPawWc3P/O
O++U0e7du8s111wzBIuNISLTydtvv10++OCDsn379iF8ZADJ8JHhJNd6fH3yF3si9hH4MQJ5ISwu
LpY33jpdnv31cjn86Y4yu322/PLuy8qNV19Sdsx/PQIXF9Aok/bqWlmPNlkiD0+Mzm+jgZb1ibgQ
M8nHk5jOU1bXI3nnBRafDOQFGmvudj4/7cf14/XD66f3D++f+TqwVfsPU/HcV6LDk32exaW18oej
Z8pvDp0sfzh8rhw+eqJ89Mkfy33/NFUOHjw49OvjsGHJfnwGh4stta+/sezkyZNDdti4L39u1bGx
LANIDm6Mzp07N4SJHJqpTyA/dT527Fh56623hvBxySWXDE80w0dO08qRkgwgua3hIx9bCPQQyMa5
tLRU3v3gi/LsaxE+Tu0pE5eNyu2/3Fd+9YudZX52KkJH/Ka4YFbj2MgeZWh9kxPD/onYxqVUpqJ8
ciqDcgSMvCDjuIgqcWJML4wHkUVi33pZjh+cnyz8sl1pP64frx9eP71/eP/civ2H7Ndknyf7NDme
sf/A9rJtz1z5l3/7uBw5NVNWD6+W7XOHys6dO8v1118/9O1rwKgjF3Ha9y75AXG9beP7Dq711nCy
vLxcMnsMU7DyQY5u5JPIzt+JEyeG0Y8cBZmfnx/WDCgZMuq2hpA6EiKAfN9/AuU/VCAD8NmzZ8u/
/sfp8+EjLp6FhZly2a7poQ2uxFWVF1ZMFoxAkV2FUpYiSOTsxgwakzFDazLacryFlsk4MG9XyqCR
R+e5sYnwkVMNJ2KKVz6ecD4/7cf14/XD66f3D++fW7r/kH2gDCDnl/MfsO5emC47dm8rp0ZT5d3P
95ff/PGL8rPf/77s2rWr7N+/f+hX5fE1iHx98tAPe+mll8qDDz5Yd13YZj9t8/FZ+Oyzz5b77rtv
yA314HpcbjOEZObI82P2ykQ5c+ZMyVGOXPLnnNv15ZdfDqMfOf2qjnzUbYaP/LmGkKxDAKnUtj9F
oCblbKC/PRZT/XbGhbNztuy8ZLp8eqaUz79ajxGQGH2LF8nhGosBjXFE/hw5XImPr2PAo5TlDCCT
JWdi5ePJtYgp0UZXM4Ssx31O+QRj39JqftFC3AwVocT5/LQf14/XD6+f3j+8f27l/sNqTDGfmBx6
OcOsj+zfnDyzXnbuGA19n9PR5/nT2cvK8ePHyunTp4c1R0M29+FfeeWVIUzkVKuHHnooe03fWHKa
fParNi8vvPBCefXVV4fQctddd20uHgY5MmfkuaO8Mz4/bT516tQQKDJ45ChHDo/s2LHjQvjIoZa6
1vCRASRXAeRbxnb8SIEMIDnyllOwjq3uKjsWZsulO2cigMyUr5Ynyr//KVLz5EpMrcqGfz545KSq
vMjyHo/JuOdjeiamCZaVmIIVASTWUaT+qQgnKysx7SrWtQgn+Tty6tY49309MuJ8ftqP68frh9dP
7x/eP7dq/+H8vJD8UDW+bWp5PHzwuhypZOeO6TKR00EiOJz48oryxRf/OfTds8+f4aN+0dSRI0fK
008/XXKbdeSS/aXNS86Wutj+PCdnUT355JPl5ZdfLo888ki57rrrhrpy1CNDT2aOzB6jOqUqE0kN
GLnNAJJL/lxHPjZvjYBs/k/i8U8VyEad7Swb9uy2UQSQ6WH0Y/fC3HCBTEeYGI1iKlYEjYnJGM2I
49dituM4EsgoXjFm4vqaiiSR4xxT8XFm3n6e+6fjwssbs1biuJUYCVmLNQPI8ng1zp9yPj/tx/Xj
9cPrp/cP759buv+wkve0Rh9qfTXCR3wwOx4vleXFc2UppptPTIzL2ni6rI/Pz3yqXyyVgSDX119/
vTz11FPf6sZ9+umn39qXgxYX258fHtflzTffLI8//nh59NFHyy233DKMfmRAycCT2WOUASN/qNs8
MQ/Iez/qzzVo5DF1raMgWVGuFxuKGSrwD4H/gUAGkGxj2b72z58qK3N7ysK2mbKwPQLI/PYyNxtt
NdprTpXI0b84PEYwzo9oTMecq+loiznaMQSPbJsRVEZfT83KuZEZ5GPQYxiKHALJ8koZrzs/Ax8/
7cf14/XD66f3D++f0W/Yov2H+Ot98b/4YDWmWo1jBGR5abIsTkeHf/Fs9H/Wyzg+2J0dnRhGILLv
X/+8Rvb7b7/99nL55ZeXZ555prz//vsXem55zOalnrt5f+aBulx99dXl4YcfvjACkv27XDMvDP28
WkmelL8kn0Su+fW8mWRyLn4+zhCSncKNaw0mAkjltv2pAtnWsmHmPUnX7vqwvB/3e+Q9H/Pzs2Uh
pmHNb5+PNhhThfLejgwg8Qsj5MdN5RFM4nGueRN6jnrkaGN+Re9U/H3NnBKZx67EpwB5/LDN8LI+
im/Bcj4/7cf14/XD66f3D++fW7v/kB+sTsVNsqsrsY5ny+K56XJ2cbKciWnpizEMsm1uquwqR8ue
PXuGwYcaQDIY5HLTTTeVJ554orz22mvlueeeG+4Lzz7Z5qUOXGzen3kg+28PPPBAufPOO4fskIEj
68/+XX7Ymcfk+cMUrOGH6NXVAJIV5h8nPHz48IUAUk+u93tkBblmCMnFCMjA4J8OAtkeFxYWyj/s
Xysn3ztSpvccLHPxzrgtwsd8fFdChvE4ZBjFyK/WzVGNDBUxM6vkZRLNssRtIMNN6nndZB6PPDIc
HwMewzZmXg3Dk3nu2Pn8tB/Xj9cPr5/eP7x/bvH+Q+SPmJ5+/kPWlfhCnqnp6DDFHz1bXV4sZ6dH
Zeaz35a/nThafv7zXw33edcAkuEg1+zX5/aee+4pd9xxR3n++eeHbBDVfmOpfx/wGzvjwb333lvu
v//+IYRkLqjho2aIHMTIEDLkjkw2NYBsTDk333xz+eSTT4Y/BpcjIXmDSg0ZdZu/OCvNJ7xx3+Yn
5DGBHyqQ7Sgb6KWXXlr+/oYD5aMT/1XeOx5fdLD7H2NeZgSMfHGI8DGKayrDRX7jQ8ygGm5Cj9lZ
ZSquvgwiGTjidpHzfxcktzEqkmFjLsrzq3fHEVzyQs2RkOUMMRFInM9P+3H9eP3w+un9w/vnVu0/
5FTzGkDGEUCiK1TGi/HFEvHDyke/K3vPHj3j2vgAAAICSURBVCo3/exvym233Xb+vtoNoxsZPDb2
5fNG8ccee+wb+2pfLr85K8s3L/X4rKsu+XNd6whI5o1RjmDUdWOQyHRz6623lkOHDg1DMHlPSA0q
WUEu+UTznJps6i+zJfBTBbK9HThwoNx58+ky9+aR8sGbH5aVfb8oq1cfLLv27S5TcZ/TOAJHLtnO
c2RjLa6FmQgjq5n642IbR/DIwBLNdAgleTFm6ljK5hv78gatpdiXf7jH+fy0H9eP1w+vn94/vH9u
5f5D3uOa/ZyhXxT9pM//8lk5+e7vyumjb5Q9ix+Wq67cWe6+++6yd+/eoU9fRzyyP18DSN1GTc0l
M0Ke+11LraeGj8wKK5k38nFuR/ldvvX7fHO7cdm3b99w53rejJJ3vNcAkk+0PtmsJJd8bCHQSyAb
dv6RnPqXOvdHG/zzn18pX7z3z+X9+Ia2GoJ7/T71ECBAgAABAgS2ukDt8Ge/PPvtC/GB7r5Yr7z2
2mFg4YYbbhgCQAaCXOtSA0N9/F3bvM/jh/bD6vOpv6/mjlF+3W7+4cEMEjkXbPOSKefGG28cAkj9
64U1bGQnMdd8/H1JaHO9HhP4LoFssDlEl1+GkBdQpvX8vupsr/ld0tmQ8xgLAQIECBAgQOD/u8DG
jn5a1HBR+1JXXnnlcH9tHpd9qdqX/7FumR1+6LI5fOTv/ytRJ6Ut1CylxAAAAABJRU5ErkJgggpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9ibG9jay9iYXNpYy90cnVuY2F0aW9u
LXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcyMzI1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvYmxvY2svYmFzaWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0g
IFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg1ODUKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg1ODUKIGxheWVyIGF0ICgwLDAp
IHNpemUgODAweDIyMgogICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4MjIy
CiAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsMTYpIHNpemUgNzg0eDE5OApAQCAtMjgsMyAr
MjgsNCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHgyMjIKICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoNTEsOTEpIHdpZHRoIDk1MDogImEsIG1vbGVzdGllIGF0IG1pLiBOdWxsYSBibGFuZGl0LCBt
aSBldCBldWlzbW9kIGltcGVyZGlldCwgYXVndWUgYXJjdSBvcm5hcmUgZmVsaXMsIG5lYyB2aXZl
cnJhIGxhY3VzIGxpZ3VsYSB1dCBtZXR1cy4gUHJvaW4gdXQgbGVvIGFudGUsIGF0IGNvbnNlY3Rl
dHVyIHNlbS4iCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDYxNywxMDkpIHdpZHRoIDQgUlRMOiAi
LiIKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjIxLDEwOSkgd2lkdGggMzgwOiAiTnVsbGFtIG5v
biBudW5jIGxpZ3VsYS4gUHJvaW4gc2VkIGFudGUgc2VtLCBpZCBydXRydW0gcHVydXMiCitzY3Jv
bGxlZCB0byAyMTAsMApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hv
cml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw5IEBACitvcmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBT
dWNjZXNzCitob3Jpem9udGFsIHNjcm9sbDogOiBTdWNjZXNzCitjb250aW51b3VzbHkgY2FsbCB3
aW5kb3cuc2Nyb2xsWCA6IFN1Y2Nlc3MKK3pvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwg
cG9zaXRpb246IEZhaWx1cmUsIGFjdHVhbDogLTg2NjsgZXhwZWN0ZWQ6IC0xMDAwCityZXNpemUg
cHJlc2VydmVzIHNjcm9sbCBwb3NpdGlvbjogU3VjY2Vzcword2hlZWwgc2Nyb2xsIHByZXNlcnZl
cyBob3Jpem9udGFsIHNjcm9sbCBwb3NpdGlvbjogU3VjY2VzcworS2V5RG93biBIT01FIG1vdmUg
eC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAwCitLZXlEb3duIEVORCBt
b3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogMAorc2VsZWN0QWxs
IHNlbGVjdHMgYWxsIGRvY3VtZW50OiBTdWNjZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20v
aG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNj
cm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDYgQEAKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6
b250YWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDogU3VjY2Vzcworb3JpZ2luYWwgc2Nyb2xsIHgg
Zm9yIExUUiBwYWdlIDogRmFpbHVyZSwgYWN0dWFsOiAzMTEwOyBleHBlY3RlZDogMAoraG9yaXpv
bnRhbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBTdWNjZXNzCisKKwpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbGVmdC1v
dmVyZmxvdy1pbi1sdHItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACit0ZXN0IGxlZnQgb3ZlcmZsb3cgaW4gTFRSIHBh
Z2UuCitzY3JvbGw6IFN1Y2Nlc3MKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
ZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMiBAQAordGVzdCByaWdodCBvdmVyZmxvdyBpbiBSVEwgcGFnZS4KK3Njcm9sbDogU3Vj
Y2Vzcwo=
</data>
<flag name="review"
          id="64913"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74752</attachid>
            <date>2010-11-24 05:35:01 -0800</date>
            <delta_ts>2010-11-24 05:41:43 -0800</delta_ts>
            <desc>Patch w/layout tests</desc>
            <filename>xji.patch</filename>
            <type>text/plain</type>
            <size>50039</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNDMxMjZhLi43ZTk4ZWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMTEt
MTggIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJl
IHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZsb3cuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1NgorCisgICAgICAgIEZvciBSVEwgcGFn
ZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQgaW5jbHVkZSBpdCBpbnRvIHRoZSBkb2N1
bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQuIFVzZSB0aGUgbGVmdCBsYXlvdXQgb3Zl
cmZsb3cgd2hlbiBzY3JvbGwgYW5kIHBhaW50CisgICAgICAgIHRoZSBwYWdlLiBCZWhhdmlvciBv
biBMVFIgcGFnZSBzaG91bGQgYmUgdW50b3VjaGVkIHNpbmNlIGxlZnQgbGF5b3V0IAorICAgICAg
ICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBhZ2UuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1p
bi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4t
cnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvYmxvY2svYmFzaWMvdHJ1bmNhdGlv
bi1ydGwtZXhwZWN0ZWQuY2hlY2tzdW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvYmxv
Y2svYmFzaWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQucG5nOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6
b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9yaWdodC1vdmVy
Zmxvdy1pbi1ydGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMC0xMS0yMyAgSWx5YSBUaWto
b25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNTNjOTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1p
bi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAor
VGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBwYWdlIHdpdGggYW4gUlRMIG92ZXJmbG93IGlzIGluaXRp
YWxseSBsb2FkZWQsIG5vIHNjcm9sbCBldmVudCBpcyBzZW50LgorCitUaGlzIHRlc3QgaGFzIHBh
c3NlZCBpZiB0aGUgdGV4dCAiRkFJTCAtIHNjcm9sbCBldmVudCByZWNlaXZlZCEiIGRvZXMgbm90
IGFwcGVhciBiZWxvdy4KKworTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVy
IGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxh
Ym9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVp
cyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4
IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5k
ZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxs
YSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVu
dCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3Qg
bGFib3J1bS4iCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwt
c2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xs
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMyM2EwNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWlu
LXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWwgZGlyPXJ0bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBsYW5n
dWFnZT0iamF2YXNjcmlwdCI+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hp
bGQobGkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvbmxvYWQgPSBmdW5jdGlvbigp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkb2N1bWVudC5vbnNjcm9sbD1m
dW5jdGlvbigpe2xvZygiRkFJTCAtIHNjcm9sbCBldmVudCByZWNlaXZlZCEiKTt9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBkaXI9bHRy
PgorICAgICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgd2hlbiBhIHBhZ2Ugd2l0aCBhbiBSVEwgb3Zl
cmZsb3cgaXMgaW5pdGlhbGx5IGxvYWRlZCwgbm8gc2Nyb2xsIGV2ZW50IGlzIHNlbnQuPC9wPgor
ICAgICAgICA8cD5UaGlzIHRlc3QgaGFzIHBhc3NlZCBpZiB0aGUgdGV4dCAiRkFJTCAtIHNjcm9s
bCBldmVudCByZWNlaXZlZCEiIGRvZXMgbm90IGFwcGVhciBiZWxvdy48L3A+CisgICAgICAgIDwv
ZGl2PgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0eWxlPSJ3aGl0ZXNwYWNlOm5vd3JhcDsgd2lk
dGg6IDQwMDBweDsgaGVpZ2h0OiAxMDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiPkxvcmVt
IGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQg
ZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFs
aXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24g
dWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4g
RHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0
IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBz
aW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9m
ZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uIjwvZGl2PgorICAgICAg
ICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGQxMjgxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0
bWwKQEAgLTAsMCArMSwxMDMgQEAKKzxodG1sIGRpcj1ydGw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorICAgICAgICAgICAgZnVuY3Rpb24gbG9n
KHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBjb25z
b2xlLmFwcGVuZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAg
ICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6
ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nl
c3MiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24g
YXNzZXJ0VHJ1ZShtZXNzYWdlLCBmYWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlmIChmYWN0KQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBG
YWlsdXJlIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2co
IlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFggPSAtMTAwMDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFNjcm9sbFkgPSA1MDA7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG1vdXNl
d2hlZWxIYW5kbGVyKGUpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGFzc2VydEVx
dWFsKCJ3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uIiwg
d2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAg
ICAgICAgICAvLyBUZXN0IGhvcml6b250YWwgc2Nyb2xsIGJhciBwcmVzZW50cyBhbmQgd2FzIGlu
aXRpYWxseSBhdCB0aGUgcmlnaHQgZm9yIFJUTCBwYWdlLgorICAgICAgICAgICAgICAgIGFzc2Vy
dEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgIiwgd2luZG93LnNjcm9sbFgs
IDApOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCBob3Jpem9udGFsIHNj
cm9sbC4KKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBl
eHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJob3Jpem9udGFs
IHNjcm9sbDogIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAg
ICAgICAgLy8gVGVzdCBjYWxsaW5nIHdpbmRvdy5zY3JvbGxYIGNvbnRpbnVvdXNseSB3b250IGNo
YW5nZSB0aGUgc2Nyb2xsWCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgi
Y29udGludW91c2x5IGNhbGwgd2luZG93LnNjcm9sbFggIiwgd2luZG93LnNjcm9sbFgsIGV4cGVj
dGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIC8vIFRlc3Qgem9v
bWluZyB3b250IHJlc2V0IHNjcm9sbCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhl
eHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLnpvb21QYWdlSW4oKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
em9vbVBhZ2VPdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInpvb20gaW4g
YW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWCxleHBlY3Rl
ZFNjcm9sbFgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIC8vIFRlc3QgcmVzaXplIHdvbnQgcmVzZXQgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAg
ICAgICAgICAgIHdpbmRvdy5yZXNpemVUbygxMDAwLCB3aW5kb3cuaW5uZXJIZWlnaHQpOworICAg
ICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Ny
b2xsWSk7CisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKDIwMDAsIHdpbmRvdy5pbm5l
ckhlaWdodCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInJlc2l6ZSBwcmVzZXJ2ZXMg
c2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCB3aGVlbCBzY3JvbGwgcHJlc2Vy
dmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIHdpbmRvdy5z
Y3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSAvIDIpOworICAgICAgICAg
ICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisgICAgICAg
ICAgICAgICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCBtb3VzZXdoZWVsSGFu
ZGxlciwgZmFsc2UpOworICAgICAgICAgICAgICAgIHZhciB3aGVlbEV2ZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRXZlbnQoIldoZWVsRXZlbnQiKTsKKyAgICAgICAgICAgICAgICB3aGVlbEV2ZW50Lmlu
aXRXZWJLaXRXaGVlbEV2ZW50KDAsIGV4cGVjdGVkU2Nyb2xsWSAvIDIsIHdpbmRvdywgMCwgMCwg
MCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRpdi5k
aXNwYXRjaEV2ZW50KHdoZWVsRXZlbnQpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
Ly8gVGVzdCBIT01FL0VORCBvcGVyYXRpb24uCisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgICAgICAvLyBOb3QgdXNpbmcgYXNzZXJ0IGVx
dWFsIGhlcmUgc2luY2UgdGhlIGJlaGF2aW9yIGlzIGRpZmZlcmVudCBpbiBlYWNoIHBvcnQuIAor
ICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgaW4gTWFjLCBIT01FL0VORCBrZXkg
cmVzZXQgYm90aCB4IGFuZCB5IHNjcm9sbCBwb3NpdGlvbi4gCisgICAgICAgICAgICAgICAgICAg
IC8vIEluIENocm9taXVtLCBIT01FL0VORCBrZXkgb25seSByZXNldCB5IHNjcm9sbCBwb3NpdGlv
biwgYW5kIHggc2Nyb2xsIHBvc2l0aW9uIGlzIHByZXNlcnZlZC4KKyAgICAgICAgICAgICAgICAg
ICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAg
ICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIpOworICAgICAgICAg
ICAgICAgICAgICBsb2coIktleURvd24gSE9NRSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJp
Z2h0IGZvciBSVEwgcGFnZTogIiArIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAgICAgICAgICAg
ICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsK
KyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZW5kIik7CisgICAgICAg
ICAgICAgICAgICAgIGxvZygiS2V5RG93biBFTkQgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byBy
aWdodCBmb3IgUlRMIHBhZ2U6ICIgKyB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCBzZWxlY3QgYWxsIHNl
bGVjdHMgYWxsIGRvY3VtZW50IGNvbnRlbnQuCisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6
ZVRvKDUwMCwgNTAwKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAgIGRpdi5mb2N1cygpOworICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgICAg
ICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICAgICAgICAg
IGFzc2VydEVxdWFsKCJzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQiLCBzZWxlY3Rpb24u
dG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwgZGl2LmlubmVySFRNTC5sZW5ndGgpLCBkaXYuaW5uZXJI
VE1MKTsKKworICAgICAgICAgICAgICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0id2hpdGVzcGFjZTpu
b3dyYXA7IHdpZHRoOiA0MDAwcHg7IGhlaWdodDogMTAwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBy
ZWQ7Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcg
ZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9y
ZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhl
cmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBj
b25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVw
dGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBF
eGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1
bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLiI8L2Rp
dj4KKyAgICAgICAgPHVsIGlkPSJjb25zb2xlIiBkaXI9bHRyPjwvdWw+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3Jv
bGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9u
dGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4yMTEyN2IwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwKQEAgLTAsMCAr
MSw1MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2coc3RyKQorewor
ICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgbGkuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgdmFyIGNvbnNvbGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgIGNvbnNvbGUuYXBwZW5kQ2hp
bGQobGkpOworfQorCitmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVj
dGVkKQoreworICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgIGxvZygiXG4iICsg
bWVzc2FnZSArICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAi
ICsgZXhwZWN0ZWQpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjog
U3VjY2VzcyIpOworfQorCitmdW5jdGlvbiBjaGFuZ2VEaXIobmV3X2RpcikgCit7CisgICAgZG9j
dW1lbnQuYm9keS5kaXIgPSBuZXdfZGlyOworICAgIHJldHVybiBmYWxzZTsKK30KKworb25sb2Fk
ID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSAi
LCB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgd2luZG93LnNjcm9sbFRvKC0xMDAsIDApOworICAg
IGFzc2VydEVxdWFsKCJob3Jpem9udGFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSAiLCB3aW5kb3cu
c2Nyb2xsWCwgLTEwMCk7CisKKyAgICBkb2N1bWVudC5ib2R5LmRpciA9ICJsdHIiOworICAgIGFz
c2VydEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgIiwgd2luZG93LnNjcm9s
bFgsIDApOworICAgIHdpbmRvdy5zY3JvbGxUbygxMDAsIDApOworICAgIGFzc2VydEVxdWFsKCJo
b3Jpem9udGFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSAiLCB3aW5kb3cuc2Nyb2xsWCwgMTAwKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5v
bmUiOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBkaXI9InJ0bCI+CisKKzxkaXYgc3R5
bGU9IndpZHRoOiA0MDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiIGlkPSJkaXYiPgorTG9y
ZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTnVu
YyBldCBuaXNsIHRlbGx1cy4gVml2YW11cyBhbGlxdWFtIGVsaXQgbm9uIGFyY3Ugc2NlbGVyaXNx
dWUgZWdldCBkYXBpYnVzIG51bmMgdnVscHV0YXRlLiBNYWVjZW5hcyBzY2VsZXJpc3F1ZSBlZ2Vz
dGFzIHB1cnVzLCBpZCBiaWJlbmR1bSBtYWduYSB2ZW5lbmF0aXMgdmVsLiBWZXN0aWJ1bHVtIGJp
YmVuZHVtIHZvbHV0cGF0IGFsaXF1YW0uIEN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMgZXQg
bWFnbmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRlcywgbmFzY2V0dXIgcmlkaWN1bHVzIG11cy4gVmVz
dGlidWx1bSBlZ2V0IHJpc3VzIHNvZGFsZXMgbWkgdHJpc3RpcXVlIGRpZ25pc3NpbSBldCBzZWQg
bGVjdHVzLiBDcmFzIGNvbnZhbGxpcywgbmliaCB1dCBkYXBpYnVzIGdyYXZpZGEsIGVuaW0gbWF1
cmlzIG1vbGVzdGllIGVsaXQsIGVnZXQgZnJpbmdpbGxhIGF1Z3VlIGVzdCBuZWMgZXN0LiBDdXJh
Yml0dXIgZXUgcXVhbSBub24gcHVydXMgc29kYWxlcyBwdWx2aW5hci4gRG9uZWMgdWx0cmljZXMg
ZHVpIGVnZXQgZG9sb3IgbG9ib3J0aXMgaW4gcG9ydGEgcXVhbSBydXRydW0uIE51bGxhIHJpc3Vz
IGxhY3VzLCBhZGlwaXNjaW5nIHF1aXMgdWxsYW1jb3JwZXIgdmVzdGlidWx1bSwgY29uZGltZW50
dW0gc2VkIGxhY3VzLiBTZWQgaW4gbnVuYyBkb2xvciwgcXVpcyBlZ2VzdGFzIHR1cnBpcy4gSW50
ZWdlciBhcmN1IHRlbGx1cywgcG9zdWVyZSBzaXQgYW1ldCBwZWxsZW50ZXNxdWUgYSwgbW9sZXN0
aWUgYXQgbWkuIE51bGxhIGJsYW5kaXQsIG1pIGV0IGV1aXNtb2QgaW1wZXJkaWV0LCBhdWd1ZSBh
cmN1IG9ybmFyZSBmZWxpcywgbmVjIHZpdmVycmEgbGFjdXMgbGlndWxhIHV0IG1ldHVzLiBQcm9p
biB1dCBsZW8gYW50ZSwgYXQgY29uc2VjdGV0dXIgc2VtLiBOdWxsYW0gbm9uIG51bmMgbGlndWxh
LiBQcm9pbiBzZWQgYW50ZSBzZW0sIGlkIHJ1dHJ1bSBwdXJ1cy4KKzwvZGl2PgorPHVsIGlkPSJj
b25zb2xlIj48L3VsPgorPGJyPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNTFhMDgyOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor77u/PCFET0NU
WVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIg
Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQi
PgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHRpdGxlPlRlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZTwvdGl0bGU+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hp
bGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlv
biBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAg
ICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCAr
ICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAg
ICAgICAgfQorICAgIAorICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rpb24oKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOwor
ICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IHdpbmRvdy5zY3JvbGxYOworICAgICAgICAg
ICAgICAgIHdpbmRvdy5zY3JvbGxUbygtMSwgMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1
YWwoInNjcm9sbCIsIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlk
PSJkaXYiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgcmlnaHQ6NDBweCI+dGVzdCBsZWZ0IG92
ZXJmbG93IGluIExUUiBwYWdlLjwvZGl2PgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+
CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
cmlnaHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yaWdodC1v
dmVyZmxvdy1pbi1ydGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
MWJhNzkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmlnaHQtb3Zl
cmZsb3ctaW4tcnRsLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor77u/PCFET0NUWVBFIGh0bWwgUFVC
TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cu
dzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0bWwgIHN0
eWxlPSJkaXJlY3Rpb246cnRsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIg
PgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+VGVzdCByaWdodCBvdmVyZmxvdyBpbiBSVEwg
cGFnZTwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2co
c3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAgICAgIGNvbnNv
bGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
ICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAg
ICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1cmUsIGFjdHVhbDog
IiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2Vz
cyIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rpb24o
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRpdiIpOworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IHdpbmRvdy5zY3JvbGxY
OworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygxLCAwKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRFcXVhbCgic2Nyb2xsIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgIAorICAgICAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAg
ICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjQwcHgiPnRl
c3QgcmlnaHQgb3ZlcmZsb3cgaW4gUlRMIHBhZ2UuPC9kaXY+CisgICAgICAgIDx1bCBpZD0iY29u
c29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9y
aXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42OTlmZGE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFn
ZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBj
YWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vzcworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNj
cm9sbCBwb3NpdGlvbjogU3VjY2VzcworcmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246
IFN1Y2Nlc3MKK3doZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRp
b246IFN1Y2Nlc3MKK0tleURvd24gSE9NRSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0
IGZvciBSVEwgcGFnZTogLTEwMDAKK0tleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24g
dG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAtMTAwMAorc2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3Vt
ZW50OiBTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3Jv
bGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kMmY2NjgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hh
bmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBS
VEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDogU3Vj
Y2Vzcworb3JpZ2luYWwgc2Nyb2xsIHggZm9yIExUUiBwYWdlIDogU3VjY2VzcworaG9yaXpvbnRh
bCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9ibG9jay9iYXNpYy90cnVuY2F0aW9uLXJ0bC1leHBlY3RlZC5j
aGVja3N1bSBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5j
YXRpb24tcnRsLWV4cGVjdGVkLmNoZWNrc3VtCmluZGV4IGE3OThlYjEuLmE2MzY2YjQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRp
b24tcnRsLWV4cGVjdGVkLmNoZWNrc3VtCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLmNoZWNrc3VtCkBAIC0xICsx
IEBACi0yOTFmMDA5MTE5NzM1ODAyNjM2OTY2MjdjMzc2YzMyZgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKK2QxN2U3MzFlNGRlYjlkMzg0M2Q4MmU0MjBjMjYzMzZiClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
YmxvY2svYmFzaWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvYmxvY2svYmFzaWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQucG5nCmlu
ZGV4IDJhMDI3ZDM5Y2M4ZWM2YjE5M2RiNTAwZTdiMmM4OTlmZGExMWQwZjcuLjBlM2Y2ZWU4N2Jj
ZTIyZThhMDA2MGM5OTkwOTZjMzYxODY2ZjJmODIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVs
dGEgNjI2NAp6Y21jJiZkcE1NN0E3O3FjZW1WRHJrUXZrfU05NSlzNz5rVEhXa3BGalI4RFA5OEtz
N3FjfmM/QmFSQDF5JTN8ZiUKekNePH1+bEdCTEVsMGhRUDN9Rzs0R0tAS1d3JVl4Xl9QY2hre3Iw
TnV7b31wZl9qI31EX3VUak15UHgwdmQhSUtmCnppUkAmXz5Ja1k3TH5OSkNIfHtrWDcpUWx4V0Vj
XkBjUk04eCUhT2VYeDw2VHBkN0sjKW8+YVNeRGxfbUVVYzhJQgp6WH1oTTlSPzJ4Pj9NR1ZHTT5g
U0A7JHYzPHN7b0xxVDhgN1g/PX11TkNAM0MoOUMmJSMxLVFrPF81WUNDN08wWFUKenFvVVQ+NyFF
dztYfUJIZXR2aEVNKDk7cD0qajYlRThoTHhwczt+WSY9S2o/MSpTNj14ViFKXmdyPWFoaUQ/bkNX
CnohfnV9eFlJKD5yQzMpSyt2dXtfUGVqZlhJPSM0KCkrJHBMMzh7V09WOX1OezN7fkAmUztge0dF
NH1CY3p1TFQwJAp6UDVDSnp7azFedj1OQVdrN0lKP0E2N1Y7I19pcktuR1hJeTd6PGQzREF+RjR6
Kz1zUk9CV31PV3xBaSMqaX5qemAKekUlKHRYMHFASmVVKSNKTk1meilqZktPYWN7JEVKST1Qei04
Mm5xTmlScmYhVGZNMT45JVNadERecF40O2Eoe3Z3CnpAVkJfIT8/VkU8bDx8SW0xcEllMUBDNzZR
ZEAxQW87MD9ndikjJl89MWJ7eT5yKzR7eSpPN2c7UlJUVXE3eHoybAp6e3NjRSpySmVrMjxvKk9W
O0J5O3FZKWBVYig/UTJWKlN4RCZiJGZlem49X2BUcnZuZk9lMGZEaGM0OHVzSTV2QDsKem90K3Qr
THZPTWd2M21zXmhQKmk5OW45LSZRfkQrUXZCXyk3RD1VNThHP1RsIXZoKHV0I3ZUcTtSaVhMT1FK
bEh5CnolPUpnOClDT1cwNzdYKkx0YjNpYiVzbCpwenVfQTExUSYoeDl1NVM7d3JnTkpfamBEb1VR
Q2YqPVhvVnEyNypJIwp6SmhAOSRZLWVyZzNsZjY/RnNma155OUtjSDdoWTRHIXtvPVpBZWh8PjA8
KTEyOTlSJT1ocmdXS2ZfT3ZSNFBFWVYKemh0X09RUXF7Z2x5UWU1cT9eUD4rXlFCN088JGRLQkw1
VGdUZUNOYndTVj0wVGs1ZnY9MUMpTEItLXsqQG8lZzUrCno9QTcqMTJRaURYNV57ck5RZDVrI2kz
KTk+aVMxVCFSTV8lRlNyeVF2SXlIRFY9SWxYb0BUJllfUU1jdlg8KH1EPgp6amgmX3hGQjhlK1I4
NmhranUrdVhaPTBvODd3fjh2TS0kflEqMV5tZStlbkU8cDteaT9TeyNLWEJNPyRrLUBxV3AKemR9
TjFyZm5XZ3Y8eGkjPUg9PTkjdGwzVWRzKXo1c3NIY0U2TkxsJlc8fUErQ0F5MkhDcjxSO2NOX1Rp
K1l8Y1U9CnpQJHpIRihVeF9rK3dBfkY4IyVFYDJgNWNrcjVaZE5XZG9hT1RjOXA5UG5Sc3AmRWRF
XnNgdkJjK34kV3BaWiY3Mgp6M3RFY3F1QFZZe05hMz5BXiNLYzFyTWdZQEUhNWklYTNALXtlWlE9
Um1Ccmc+PmRKMiQxfF5re3khQm9jQGVZSTUKemshMnE+UC1oNSlKLT41RFUmMlc/RVQjTHByVEls
NVFUPU1FM2p9dUJDVz4ob0liQ3ItbypCYHhET2NLTWRvejQqCnpGRFdCYThkNl58clZUIzRgbUtD
Pll5STgzP2p3UiUkdCpeJmczYUVVRW8qYUFOaSlQQDU2blhIXiNEd2l0e3QzVAp6VHpCTEViKWEx
JTs1YSZLWkw9X09wdFo9b18hYkpHZGpUUHRMViFAfkY2bC1iYjJkISpONTstJHF0VHV+OGFOLVAK
eiYmUFh6NTMyLU1mcWheUGZVfjBFQnRaZyQ7KlpuZVpIRUB6NWsySktMJjt2O1QhMkBuNG1FVzxB
WGsrJDZQWjktCnohUVooK0ByQXZlMzRadmF3c09TS3E1KVN0O3oxfnRDdEpERGUtY2sxY3Axaz95
SCZIa05laVE4d1JldnV1R05YfQp6IUskeXkhe05hRih3bztDUHUwYyk9e3BwKSZZP3lENUZPP1lr
emZ3aTFhJVVIWklrUlZaRyhjaXhJRHlRPD5YRDcKeiR8dzc/bEBCOzhyUHlZOCRMLTZ9YS11Tz5y
QiQ8eD8xUFBtNVFNbSM0dlRIITk7NiE/QFFNMDZpT2RXKThKJU5FCno5eVNGaEtUaEp8MjJuY3Ro
QlJhJW1rcTktXnxAa1Q4NUl1Ymx7bVc1VXk+SmROQlElfnRlUjAjNkp6TEo4RG8/UAp6eXohdlZu
X2dPeCopekdBJClhNCsxdiM2OFhTQGRqVldJNEsmbX4zO0lmcG1mN35VP2tARzlDWCU7Y2l+Y3N0
dlYKekx2bnlkanlyZF9yZ15hQEA/UntfYkE0cUMhQkR+TkcqbitgSmVGU3twSSZZK1JAenEhK2ot
K19kZExrVFY2RWdQCnpoLSFfaWlMN04xezJOZncjaDF5JUxzKjQkNj9DJDQkQ3pyZWN4ckAkUCN4
LShoXl9LX1NhX0soNGF3UlJiY3t+egp6eE9adHdrRTRnbCNxdWB2VWFxOXk9dWFtd0okQSM9PnV4
XmJeNiFFdlNjK1R+WlVqYUUhc3g+MDZWNjdzRTkla0UKej01ajEhR35jU21DdSZ3ajI5NHxPbkU8
JUdnUG8qI1k4ej4/dzxOKDdaZn58WT04TDNmWWRYezElTXZ1QUhePU41CnpKJjNyOTsqXjtnOFdO
YXgkYzUofjNDfER8Pz16dFc4ZDZaPkFYPEdQIU5kakBZSUF6M1BreXVVUz13Zn1FUzUyRgp6aGli
UmZlbHc/YHBQMz1QKEw8YmV4SFhGSjZlfHNadlUxJDIoPCl8bEV0TFgwaSE2Znh0I2VOPVNMTnVD
aEB2Z34Keip0Qm4qREBnSHglfnskSHcrWmJtNFF4bDxna1NYNiNiNCFRVXBjPXtkfUZgczU1bSZi
SShtOVdHcklsdlJfa3lyCno1bVdzWmkpZEAoKkNAO29jRGlqa2YjTmE7OSlhQ0lBc1hXbygpcigr
SGllISpUQWBRPz5aU2VAWF9Ma296MjloQQp6PFMoKDNTU2B2VD0tWmItNEgtOTlpMFNGZSgxdyRH
VTB+amJZb30/TWZ9KmI3LThsXmRMTXhwaFM4RmFVaUB1VWIKejFGUkx4c2VaTyRJPSV0WHIpfT5O
bkQkaG9hN1U1dStGZGQjXjw4M195TTxuRzg/KjQjYjBJPlAqWWhzeCs4d1hZCno9Jk54VXdYVHhz
bFNra0JFan1KVDhTNHpjcUxPK3tfa2QoLVZ1d29DQmBRRVVSIWctfFl+U28tNiE/MWlZU1A5Rwp6
cz1De0pNQm9VZmZMQjYmK15KU2A7QntUTCUyJUdyclZ7T312IT5sUiNRJXU4SSY8LV5CbHJaYF5m
NFRAJX5IY0sKem84QSVgdSUtQiNpKnJpbihBa0ReRVNaZUQ/Vz48MTMhellhZmReSSNlUXUqdXQ/
MT4rbEY9YWBfa3hvMDNtak8zCnpMaG12ayl5S2t3WE9WQXY7R0o5VjQ7IWFve0IxaVBXKTFwWDdT
eyVUZHxfb0kqQiUzI0JBWHRrOEooXnVnbX03RQp6RHl0PX0qSmFBWmllaGMwKG5JX1BuPmJ7Z3Uz
bHNlPjJZbHl6UzxocCZnVTRMdEEmfmwxQEZ5bj87JT1QSWQxRjUKejkoUWliRlBsN2AzPmA5KCF+
IUFMNng8enNVQWpwMThTODAmJi1fJTkpSWxBclpgVzVAIVgmXlMpIT80K2ZtPyF2CnpyRF5tJGFw
e09AQHU1XmROcV4rYGM+VFRiMVlrYm9FenNYLVZLWj1qISp2eCQyITc2Mkx+IUtyIWlmUzdmPWtj
TQp6NEp0cXU2R1RGdWEmI0UtPjNDNT1CTjc7b1pTWD1iME1GQFQzRS13fXBpRHVkbXgtYVlmTipH
NiFEWnFgb0lAcGQKemZzcDVxRnU+UyElViVESG9FanxpSE9QcnhEPH1tR19UIUleVGtvUkdFPnsh
NGkhbjU3RnE+VHlwam12aEQ7JFM0CnpRKm4hOWppZ0NLPUdTUGArVjs+RG9MQCYmQkcqUXpNYm5Q
XlZScHtCXlUrPVRpZ3w2N1BmRW0pe0EhPyFpTUw0Iwp6ZkFyZ3xIajJ7MDwkR0s5O0xHJnhxeT1A
cHVBZjlpTWQwJWp6bkBHdGxFI09JLURjPipJfTVDMTt2WGZiKzhWM1MKejVXUmNNdnZtczItWGRe
QGc2WmBXMSF9V3YkVG94SE1ZM0tZQlJDfDQ3Y09WVHc1P30lVFA4NWxXM3tLckxUfTdLCnpVSzxW
SUh2Zy05RWFBPWI9VkY9YiM9JHlQczNtNWMqZ2x1YSNUZnJwXj98RTlUMns5fGUxKCQqNFFlUFdE
VW8wZAp6VXA8e3MlWURVKj5pVXVNLUV+X1p4MW1yVGNKY0VUe3dnaSlSc0NKQXNuWTk9T3YtMmhp
ZTMwOHBeKVoxUV49UzgKejhkeGkxYitDait2c3N7ek9taH07Y0hxfCUxLSEzT15GbihYX0RUVXBY
eTJjYFdMSG8rYERSLVMqIXIteWtBNkBJCnpKWWMrTEc+M1RJO3QpcDJfTFcmZ1FwN1VIQVFUMj1m
PlJKUHlYRE1xMVJOPmtQOSVpTEtnYWwkMCRgP15DSDJ2Ugp6I2dXNmFNM0dTUXFRQWs5Vn0qZzIp
U3RBPThgSUw5JX1tZFFJNzdgeFFJUlgjKzllKTxOIyR5NUF9QFJedjtPb28KenFKPl9VNGsyUTZU
ISZeOTMpVzRhKnt0QGFEQSh0WlAjNztrRkkrM3lLVnFyamQjYWlUX1ZXcHBPaEg5bFZqM2p7Cno+
bylKaVEwPEBJUHp8JWc0dGZVWVJ5SWoldCsjamBtQjl2LUh7TGhXJXs9TzdLd183alg7YmlHKj56
PjQpMXszUgp6b2J0Jm95YT5UcjBUV29CNmcyWkQ0JFEhND9yY0B0UnQ0S3pkaFZec15EVDw9JV9L
TmNGTlVtUE8md1lpNjlhKk0KeksyZz4rN2NqeX1xNCFAIzM3ZHZ3M2YwekluUWBjQiRONHNtNz17
fH1ncyVZK3NAR3w1eFVmYFNYMjZafm8/aClWCnpwNlolKnIwPXZ9ZGkkeCFtRyZhWEswI0stZWpD
IW9Oay1UNjh2YCFqenxPeEtHRyRuXmlScmNxfDZxZn4kczVCKwp6X040TFJjbjBneUhFPlFnbnoq
XmwxRllaM25LNXZTITFZPnk7MEEtO2teWCpMRTkzSDNZblNDTVE7KF5ebmU3aTEKenlIMmclZ2Z0
NEFJIUdFPDxGVFlGaVV4OWx5MCV7dntmaWdiazVJMSlAXkFZN09ZajMoI1BTNTcrfVN6T1dNVE1h
Cno+dHR8RlM+Pj9qWSFoITVlYGFwdnJpKEEhM0o+I0BhQysmdXIpIWdtVD47Tn5jU1Q3Jl9VUytL
JXZsaihhSVNhTAp6MHVMNDA3JV9OMWVEdmYqXmhpcVA4TiFNLVQ8K1FvbVQkfk9nPWp3ODROOzJ7
WDU9c0Q/cFREWUAhMkB2RXh2P0IKekdGYDl+VSNvZ1BNcXNsYjR9M1dCdTVHWkxWRm5TY2NyJEN9
VmByTlZSO30hI3Flc1QjKXh1T2p3bz5RNHJ1UndNCnpxeHMlMTJ4TXZrcitKRTlOfntgQmJIJSgy
Nk9LS1NSKWl7dHVycyR6dzVvLXhnUGE3QGFpJF51SXp8KX1BSEN+JQp6PE83WWhPOXJ0YSlsaTNB
LX1yUnA/fWBgck87YUlOVDxATy0pN2RIeFlkKU4/elk7WSpZKSEpKT5PMU1tK3Zua2YKd3FATSZy
SEZEOVZMJUVfbVZSOyljWn0zblFaQkNAO3MjQ1BKUHJ2QWkqdmhxUT1VI19PeUNkaVM0Z0Z8ZSo4
bChqCgpkZWx0YSAzMTIyCnpjbWJRKiZHTzxDXk09QzVZQCFjNlRedkk7JWYzbHUrfDJ1PzVFb0l4
U2loZXltd3x5bnB6Wkh9UX1HOUN0MzNydQp6bF5xJXc4WTNKVWp4MmJgQSlvLXtGZnlAbDI+ZjdU
ZFU4N2dOdVl6MyNlP1RuQTRDP1V0V2pVVlZQOWA2a15tOGcKeilLa1MyQChybStfPmVqdEJHRD1K
R3o/b31vS2pEcFh2WE9qdT5abFNobHM/MigtY3IzbDRuUmduZHoyVlBOfUNuCnozc0t9MHAjUTx5
ZHE1SURGeHUqQVJqPzJsRCluP0k8TTI1SlF2VDRieFcjWnZKdm9Jb2hBSEc1UWpiKCFrWiVoNAp6
aEplZVRmbEI8cXZ8bXE/VDl4PCtzOzZ9WVByeGFsQF5AZkxlbmBQelBqWldlZlFMeCpQZCUqVzhp
PlJYRWBKOXcKeEBkTUwtSkB1UUVCdDtPa3tHbjBubWF0Um09JDgxfEVJZFF5U0RGUSMwWEZ2O0pZ
REA8KTtUM0swUlRscWBlKjxFCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvYmxvY2svYmFzaWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmxvY2svYmFzaWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQu
dHh0CmluZGV4IGEwM2I3OTEuLjEzM2E3ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9ibG9jay9iYXNpYy90cnVuY2F0aW9uLXJ0
bC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDU4NQorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDU4NQogbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4MjIyCiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHgyMjIKICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCwxNikgc2l6ZSA3ODR4MTk4CkBAIC0y
OCwzICsyOCw0IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDIyMgogICAgICAgICAgIHRleHQg
cnVuIGF0ICg1MSw5MSkgd2lkdGggOTUwOiAiYSwgbW9sZXN0aWUgYXQgbWkuIE51bGxhIGJsYW5k
aXQsIG1pIGV0IGV1aXNtb2QgaW1wZXJkaWV0LCBhdWd1ZSBhcmN1IG9ybmFyZSBmZWxpcywgbmVj
IHZpdmVycmEgbGFjdXMgbGlndWxhIHV0IG1ldHVzLiBQcm9pbiB1dCBsZW8gYW50ZSwgYXQgY29u
c2VjdGV0dXIgc2VtLiIKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjE3LDEwOSkgd2lkdGggNCBS
VEw6ICIuIgogICAgICAgICAgIHRleHQgcnVuIGF0ICg2MjEsMTA5KSB3aWR0aCAzODA6ICJOdWxs
YW0gbm9uIG51bmMgbGlndWxhLiBQcm9pbiBzZWQgYW50ZSBzZW0sIGlkIHJ1dHJ1bSBwdXJ1cyIK
K3Njcm9sbGVkIHRvIDIxMCwwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MjE3YzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9y
aXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK29y
aWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xs
OiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vzcwor
em9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogRmFpbHVyZSwgYWN0dWFs
OiAtODY2OyBleHBlY3RlZDogLTEwMDAKK3Jlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9u
OiBTdWNjZXNzCit3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0
aW9uOiBTdWNjZXNzCitLZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdo
dCBmb3IgUlRMIHBhZ2U6IDAKK0tleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8g
cmlnaHQgZm9yIFJUTCBwYWdlOiAwCitzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1
Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jp
em9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNo
YW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY0
YzBjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Rv
bS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNiBAQAorb3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDogU3VjY2VzcworaG9y
aXpvbnRhbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNzCitvcmlnaW5hbCBzY3JvbGwg
eCBmb3IgTFRSIHBhZ2UgOiBGYWlsdXJlLCBhY3R1YWw6IDMxMTA7IGV4cGVjdGVkOiAwCitob3Jp
em9udGFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2xlZnQtb3ZlcmZs
b3ctaW4tbHRyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mYmFjNGQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAK
K3Rlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZS4KK3Njcm9sbDogU3VjY2VzcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWlu
LXJ0bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vcmln
aHQtb3ZlcmZsb3ctaW4tcnRsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5kMzU3OWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyIEBACit0ZXN0IHJpZ2h0IG92ZXJmbG93IGluIFJUTCBwYWdlLgorc2Nyb2xsOiBTdWNj
ZXNzCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGFlMzE0Y2QuLmUzOGQyZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTAtMTEtMTggIFhpYW9tZWkg
SmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJpZ2h0LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUg
dG8gcmV2ZWFsIGxlZnQgb3ZlcmZsb3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU1NgorCisgICAgICAgIEZvciBSVEwgcGFnZSwgc2F2ZSBsZWZ0
IGxheW91dCBvdmVyZmxvdyBhbmQgaW5jbHVkZSBpdCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAg
ICBzaXplIGR1cmluZyBsYXlvdXQuIFVzZSB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgd2hlbiBz
Y3JvbGwgYW5kIHBhaW50CisgICAgICAgIHRoZSBwYWdlLiBCZWhhdmlvciBvbiBMVFIgcGFnZSBz
aG91bGQgYmUgdW50b3VjaGVkIHNpbmNlIGxlZnQgbGF5b3V0IAorICAgICAgICBvdmVyZmxvdyBp
cyBzZXQgYXMgMCBmb3IgTFRSIHBhZ2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2hvcml6
b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC5odG1sCisKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFk
anVzdFZpZXdTaXplKTogU2F2ZSBuZWdhdGl2ZSBvZiBsZWZ0IGxheW91dCBvdmVyZmxvdyBhcyBz
Y3JvbGwgWCBvcmlnaW4uIEFuZCBpbmNsdWRlcyBsZWZ0IGxheW91dCBvdmVyZmxvdyBpbnRvIGRv
Y3VtZW50IHNpemUuCisgICAgICAgICogcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oOiBBZGQg
bWV0aG9kcyBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyBzY3JvbGwgWCBvcmlnaW4uCisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
OjpTY3JvbGxWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Om1heGltdW1TY3Jv
bGxQb3NpdGlvbik6IE1pbnVzIHNjcm9sbCBYIG9yaWdpbiBmcm9tIG1heGltdW0gaG9yaXpvbnRh
bCBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjptaW5pbXVt
U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6YWRqdXN0U2Ny
b2xsUG9zaXRpb25XaXRoaW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2
YWx1ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldENvbnRlbnRz
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xs
T3JpZ2luWCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cGFpbnRSb290Qm94RGVjb3JhdGlvbnMpOiBJbmNsdWRlIGxlZnQgbGF5b3V0IG92
ZXJmbG93IGludG8gY2FudmFzIHNpemUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bGF5b3V0KTogU2F2ZSBsZWZ0IGxh
eW91dCBvdmVyZmxvdy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY0xlZnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6ZG9jV2lkdGgpOiBJbmNsdWRlIGxlZnQgbGF5
b3V0IG92ZXJmbG93IGludG8gZG9jIHdpZHRoIGZvciBSVEwgcGFnZS4KKwogMjAxMC0xMS0yMyAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3NzAyMjViLi5hY2MyZjNm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtNDM1LDcgKzQzNSwxNiBAQCB2b2lkIEZyYW1lVmlldzo6YWRq
dXN0Vmlld1NpemUoKQogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0
Q29udGVudHNTaXplKEludFNpemUocm9vdC0+cmlnaHRMYXlvdXRPdmVyZmxvdygpLCByb290LT5i
b3R0b21MYXlvdXRPdmVyZmxvdygpKSk7CisgICAgaW50IHByZXZTY3JvbGxPcmlnaW5YID0gc2Ny
b2xsT3JpZ2luWCgpOworICAgIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpblgoLXJvb3QtPmxl
ZnRMYXlvdXRPdmVyZmxvdygpKTsKKyAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKHJvb3QtPnJp
Z2h0TGF5b3V0T3ZlcmZsb3coKSAtIHJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpLCByb290LT5i
b3R0b21MYXlvdXRPdmVyZmxvdygpKTsKKyAgICAvLyBUYWtlIGNhcmUgb2YgdGhlIGNhc2Ugd2hl
biBjb250ZW50cyByZW1haW4gYnV0IHRoZSBSZW5kZXJWaWV3J3MgZGlyZWN0aW9uIGhhcyBjaGFu
Z2VkLgorICAgIC8vIEluIHdoaWNoIGNhc2UsIHdlIG5lZWQgdG8gdXBkYXRlIHNjcm9sbGVyIHBv
c2l0aW9uLCBmb3IgZXhhbXBsZSwgZnJvbSBsZWZ0bW9zdCB0bworICAgIC8vIHJpZ2h0bW9zdCB3
aGVuIGRpcmVjdGlvbiBjaGFuZ2VzIGZyb20gbGVmdC10by1yaWdodCB0byByaWdodC10by1sZWZ0
LgorICAgIGJvb2wgZGlyZWN0aW9uQ2hhbmdlZCA9ICgocHJldlNjcm9sbE9yaWdpblggPT0gMCkg
fHwgKHNjcm9sbE9yaWdpblgoKSA9PSAwKSkgJiYgKHNjcm9sbE9yaWdpblgoKSAhPSBwcmV2U2Ny
b2xsT3JpZ2luWCk7CisgICAgaWYgKHNpemUgPT0gY29udGVudHNTaXplKCkgJiYgZGlyZWN0aW9u
Q2hhbmdlZCkKKyAgICAgICAgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycygpOworICAgIHNl
dENvbnRlbnRzU2l6ZShzaXplKTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZsb3dU
b1ZpZXdwb3J0KFJlbmRlck9iamVjdCogbywgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJh
ck1vZGUmIHZNb2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVW
aWV3LmggYi9XZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaAppbmRleCA5NzdiMWE3
Li44YjI1MTAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcu
aAorKysgYi9XZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaApAQCAtMzMsNiArMzMs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAtICh2b2lkKXNldFNjcm9sbGluZ01vZGVzOihXZWJD
b3JlOjpTY3JvbGxiYXJNb2RlKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2Rl
KXZNb2RlIGFuZExvY2s6KEJPT0wpbG9jazsKIC0gKHZvaWQpc2Nyb2xsaW5nTW9kZXM6KFdlYkNv
cmU6OlNjcm9sbGJhck1vZGUqKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2Rl
Kil2TW9kZTsKIC0gKHZvaWQpc2V0U2Nyb2xsQmFyc1N1cHByZXNzZWQ6KEJPT0wpc3VwcHJlc3Nl
ZCByZXBhaW50T25VbnN1cHByZXNzOihCT09MKXJlcGFpbnQ7CistICh2b2lkKXNldFNjcm9sbE9y
aWdpblg6KGludClzY3JvbGxPcmlnaW5YOworLSAoaW50KXNjcm9sbE9yaWdpblg7CiBAZW5kCiAK
IEBwcm90b2NvbCBXZWJDb3JlRnJhbWVWaWV3CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCA5
ZmFmYTM4Li5iYWJiN2IwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTU0LDYgKzU0LDcg
QEAgU2Nyb2xsVmlldzo6U2Nyb2xsVmlldygpCiAgICAgLCBtX3VzZUZpeGVkTGF5b3V0KGZhbHNl
KQogICAgICwgbV9wYWludHNFbnRpcmVDb250ZW50cyhmYWxzZSkKICAgICAsIG1fZGVsZWdhdGVz
U2Nyb2xsaW5nKGZhbHNlKQorICAgICwgbV9zY3JvbGxPcmlnaW5YKDApCiB7CiAgICAgcGxhdGZv
cm1Jbml0KCk7CiB9CkBAIC0yNzgsOSArMjc5LDIyIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0Q29u
dGVudHNTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAKIEludFBvaW50IFNjcm9sbFZpZXc6
Om1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgSW50U2l6ZSBtYXhpbXVtT2Zm
c2V0ID0gY29udGVudHNTaXplKCkgLSB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7CisgICAg
SW50UG9pbnQgbWF4aW11bU9mZnNldChjb250ZW50c1dpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSAt
IG1fc2Nyb2xsT3JpZ2luWCwgY29udGVudHNIZWlnaHQoKSAtIHZpc2libGVIZWlnaHQoKSk7CiAg
ICAgbWF4aW11bU9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgcmV0dXJuIEludFBv
aW50KG1heGltdW1PZmZzZXQud2lkdGgoKSwgbWF4aW11bU9mZnNldC5oZWlnaHQoKSk7CisgICAg
cmV0dXJuIG1heGltdW1PZmZzZXQ7Cit9CisKK0ludFBvaW50IFNjcm9sbFZpZXc6Om1pbmltdW1T
Y3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFBvaW50KC1tX3Njcm9sbE9y
aWdpblgsIDApOworfQorCitJbnRQb2ludCBTY3JvbGxWaWV3OjphZGp1c3RTY3JvbGxQb3NpdGlv
bldpdGhpblJhbmdlKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkgY29uc3QKK3sKKyAgICBJ
bnRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvaW50LnNocnVua1RvKG1heGltdW1T
Y3JvbGxQb3NpdGlvbigpKTsKKyAgICBuZXdTY3JvbGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0
aW9uLmV4cGFuZGVkVG8obWluaW11bVNjcm9sbFBvc2l0aW9uKCkpOworICAgIG5ld1Njcm9sbFBv
c2l0aW9uLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKyAgICByZXR1cm4gbmV3U2Nyb2xsUG9zaXRp
b247CiB9CiAKIGludCBTY3JvbGxWaWV3OjpzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKSBjb25zdApAQCAtMzAzLDcgKzMxNyw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6
dmFsdWVDaGFuZ2VkKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIEludFNpemUgbmV3T2Zmc2V0
ID0gbV9zY3JvbGxPZmZzZXQ7CiAgICAgaWYgKHNjcm9sbGJhcikgewogICAgICAgICBpZiAoc2Ny
b2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCi0gICAgICAgICAg
ICBuZXdPZmZzZXQuc2V0V2lkdGgoc2Nyb2xsYmFyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIG5l
d09mZnNldC5zZXRXaWR0aChzY3JvbGxiYXItPnZhbHVlKCkgLSBtX3Njcm9sbE9yaWdpblgpOwog
ICAgICAgICBlbHNlIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3Jv
bGxiYXIpCiAgICAgICAgICAgICBuZXdPZmZzZXQuc2V0SGVpZ2h0KHNjcm9sbGJhci0+dmFsdWUo
KSk7CiAgICAgfQpAQCAtMzQ4LDggKzM2Miw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogICAgIH0KICNlbmRpZgogCi0g
ICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb2ludC5zaHJ1bmtUbyhtYXhp
bXVtU2Nyb2xsUG9zaXRpb24oKSk7Ci0gICAgbmV3U2Nyb2xsUG9zaXRpb24uY2xhbXBOZWdhdGl2
ZVRvWmVybygpOworICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gYWRqdXN0U2Nyb2xs
UG9zaXRpb25XaXRoaW5SYW5nZShzY3JvbGxQb2ludCk7CiAKICAgICBpZiAobmV3U2Nyb2xsUG9z
aXRpb24gPT0gc2Nyb2xsUG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDcwLDEwICs0
ODMsMTAgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IEludFNpemUm
IGRlc2lyZWRPZmZzZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW5VcGRhdGVTY3JvbGxi
YXJzID0gdHJ1ZTsKLSAgICBJbnRTaXplIG1heFNjcm9sbFBvc2l0aW9uKGNvbnRlbnRzV2lkdGgo
KSAtIHZpc2libGVXaWR0aCgpLCBjb250ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpKTsK
LSAgICBJbnRTaXplIHNjcm9sbCA9IGRlc2lyZWRPZmZzZXQuc2hydW5rVG8obWF4U2Nyb2xsUG9z
aXRpb24pOwotICAgIHNjcm9sbC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gCisKKyAgICBJbnRQ
b2ludCBzY3JvbGxQb2ludCA9IGFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UoSW50UG9p
bnQoZGVzaXJlZE9mZnNldC53aWR0aCgpLCBkZXNpcmVkT2Zmc2V0LmhlaWdodCgpKSk7CisgICAg
SW50U2l6ZSBzY3JvbGwoc2Nyb2xsUG9pbnQueCgpLCBzY3JvbGxQb2ludC55KCkpOworCiAgICAg
aWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBpbnQgY2xpZW50V2lkdGggPSB2
aXNpYmxlV2lkdGgoKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRFbmFibGVk
KGNvbnRlbnRzV2lkdGgoKSA+IGNsaWVudFdpZHRoKTsKQEAgLTQ5MSw3ICs1MDQsNyBAQCB2b2lk
IFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgSW50U2l6ZSYgZGVzaXJlZE9mZnNl
dCkKICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlk
YXRpb24odHJ1ZSk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Ny
b2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7CiAgICAgICAgIG1faG9yaXpv
bnRhbFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRXaWR0aCwgY29udGVudHNXaWR0aCgp
KTsKLSAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwud2lkdGgo
KSwgU2Nyb2xsYmFyOjpOb3RGcm9tU2Nyb2xsQW5pbWF0b3IpOworICAgICAgICBtX2hvcml6b250
YWxTY3JvbGxiYXItPnNldFZhbHVlKHNjcm9sbC53aWR0aCgpICsgbV9zY3JvbGxPcmlnaW5YLCBT
Y3JvbGxiYXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CiAgICAgICAgIGlmIChtX3Njcm9sbGJh
cnNTdXBwcmVzc2VkKQogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBw
cmVzc0ludmFsaWRhdGlvbihmYWxzZSk7IAogICAgIH0gCkBAIC0xMDE1LDYgKzEwMjgsMjIgQEAg
dm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVQYW5TY3JvbGxJY29uKCkKICAgICBob3N0V2luZG93KCkt
PmludmFsaWRhdGVDb250ZW50c0FuZFdpbmRvdyhJbnRSZWN0KG1fcGFuU2Nyb2xsSWNvblBvaW50
LCBJbnRTaXplKHBhbkljb25TaXplTGVuZ3RoLCBwYW5JY29uU2l6ZUxlbmd0aCkpLCB0cnVlIC8q
aW1tZWRpYXRlKi8pOwogfQogCisKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsT3JpZ2luWChp
bnQgeCkKK3sKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1TZXRT
Y3JvbGxPcmlnaW5YKHgpOworCisgICAgbV9zY3JvbGxPcmlnaW5YID0geDsKK30KKwordm9pZCBT
Y3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKCkKK3sKKyAgICBpZiAoIXBsYXRmb3JtV2lkZ2V0
KCkpCisgICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoc2Nyb2xsT2Zmc2V0KCkpOworICAgIC8vIEZJ
WE1FOiBuZWVkIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25hbGl0eSBmcm9tIHBsYXRmb3JtV2lkZ2V0
LgorfQorCiAjaWYgIVBMQVRGT1JNKFdYKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0o
UVQpICYmICFQTEFURk9STShFRkwpCiAKIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1Jbml0KCkK
QEAgLTEwNDUsNiArMTA3NCwxMCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xs
YmFyc1N1cHByZXNzZWQoYm9vbCkKIHsKIH0KIAordm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNl
dFNjcm9sbE9yaWdpblgoaW50KQoreworfQorCiAjZW5kaWYKIAogI2lmICFQTEFURk9STShNQUMp
ICYmICFQTEFURk9STShXWCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggNGRlYTU2Zi4uZDRkZjJj
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTE2MCw2ICsxNjAsOSBAQCBwdWJsaWM6CiAgICAg
SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJl
Y3QoKS5sb2NhdGlvbigpOyB9CiAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpIC0gSW50UG9pbnQoKTsgfSAvLyBH
ZXRzIHRoZSBzY3JvbGxlZCBwb3NpdGlvbiBhcyBhbiBJbnRTaXplLiBDb252ZW5pZW50IGZvciBh
ZGRpbmcgdG8gb3RoZXIgc2l6ZXMuCiAgICAgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9u
KCkgY29uc3Q7IC8vIFRoZSBtYXhpbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4K
KyAgICBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1pbmlt
dW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgorICAgIC8vIEFkanVzdCB0aGUgcGFz
cyBpbiBzY3JvbGwgcG9zaXRpb24gd2l0aGluIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0
aW9ucy4KKyAgICBJbnRQb2ludCBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNvbnN0
IEludFBvaW50JikgY29uc3Q7IAogICAgIGludCBzY3JvbGxYKCkgY29uc3QgeyByZXR1cm4gc2Ny
b2xsUG9zaXRpb24oKS54KCk7IH0KICAgICBpbnQgc2Nyb2xsWSgpIGNvbnN0IHsgcmV0dXJuIHNj
cm9sbFBvc2l0aW9uKCkueSgpOyB9CiAgICAgCkBAIC0yNzksNiArMjgyLDEwIEBAIHByb3RlY3Rl
ZDoKICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgaW52YWxpZGF0aW5nIGV2ZXJ5dGhpbmcu
CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYg
dXBkYXRlUmVjdCk7CiAKKyAgICB2b2lkIHNldFNjcm9sbE9yaWdpblgoaW50KTsKKyAgICBpbnQg
c2Nyb2xsT3JpZ2luWCgpIHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luWDsgfQorICAgIHZvaWQgdXBk
YXRlU2Nyb2xsYmFycygpOworCiBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9y
aXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3ZlcnRpY2FsU2Nyb2xs
YmFyOwpAQCAtMzE0LDYgKzMyMSwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wYWludHNFbnRp
cmVDb250ZW50czsKICAgICBib29sIG1fZGVsZWdhdGVzU2Nyb2xsaW5nOwogCisgICAgLy8gbV9z
Y3JvbGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlLiBBbmQgaXQgaXMgbmVnYXRpdmUgb2YgbGVm
dCBsYXlvdXQKKyAgICAvLyBvdmVyZmxvdyBmb3IgUlRMIHBhZ2UuIEl0IGlzIG1haW5seSB1c2Vk
IHRvIHNldCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKyAgICAvLyBwb3NpdGlvbiBmb3IgUlRM
IHBhZ2UuCisgICAgaW50IG1fc2Nyb2xsT3JpZ2luWDsKKwogICAgIHZvaWQgaW5pdCgpOwogICAg
IHZvaWQgZGVzdHJveSgpOwogCkBAIC0zNDEsNiArMzUzLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoYm9vbCByZXBhaW50T25VbnN1cHByZXNz
KTsKICAgICB2b2lkIHBsYXRmb3JtUmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVj
dCYsIGJvb2wgbm93KTsKICAgICBib29sIHBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdDsKKyAg
IAorICAgIHZvaWQgcGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCk7CiAKICNpZiBQTEFURk9S
TShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxWaWV3TWFjLm1tCmluZGV4IDdlZjVkYzQuLjY4MDM3YTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsVmlld01hYy5tbQpAQCAtMTMwLDkgKzEzMCw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxh
dGZvcm1TZXRDb250ZW50c1NpemUoKQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
ICAgICBpbnQgdyA9IG1fY29udGVudHNTaXplLndpZHRoKCk7CiAgICAgaW50IGggPSBtX2NvbnRl
bnRzU2l6ZS5oZWlnaHQoKTsKLSAgICBMT0coRnJhbWVzLCAiJXAgJUAgYXQgdyAlZCBoICVkXG4i
LCBkb2N1bWVudFZpZXcoKSwgWyhpZClbZG9jdW1lbnRWaWV3KCkgY2xhc3NdIGNsYXNzTmFtZV0s
IHcsIGgpOyAgICAgICAgICAgIAotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgbWF4KDAsIHcpLCBt
YXgoMCwgaCkgfTsgLy8gd29ya2Fyb3VuZCBmb3IgNDIxMzMxNAotICAgIFtkb2N1bWVudFZpZXco
KSBzZXRGcmFtZVNpemU6dGVtcFNpemVdOworICAgIExPRyhGcmFtZXMsICIlcCAlQCBhdCB3ICVk
IGggJWRcbiIsIGRvY3VtZW50VmlldygpLCBbKGlkKVtkb2N1bWVudFZpZXcoKSBjbGFzc10gY2xh
c3NOYW1lXSwgdywgaCk7CisgICAgW2RvY3VtZW50VmlldygpIHNldEZyYW1lU2l6ZTpOU01ha2VT
aXplKG1heCgwLCB3KSwgbWF4KDAsIGgpKV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIH0KIApAQCAtMTQ3LDcgKzE0Niw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRT
Y3JvbGxiYXJzU3VwcHJlc3NlZChib29sIHJlcGFpbnRPblVuc3VwcHJlc3MpCiB2b2lkIFNjcm9s
bFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBv
aW50KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBOU1BvaW50IHRl
bXBQb2ludCA9IHsgbWF4KDAsIHNjcm9sbFBvaW50LngoKSksIG1heCgwLCBzY3JvbGxQb2ludC55
KCkpIH07IC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0Lgor
ICAgIE5TUG9pbnQgdGVtcFBvaW50ID0gTlNNYWtlUG9pbnQobWF4KC1bc2Nyb2xsVmlldygpIHNj
cm9sbE9yaWdpblhdLCBzY3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSk7
CiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07CiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KQEAgLTIwMiw0ICsyMDEsMTEgQEAgYm9vbCBTY3JvbGxW
aWV3OjpwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgY29uc3QKICAgICByZXR1cm4gIVtwbGF0Zm9ybVdp
ZGdldCgpIHdpbmRvd10gfHwgIVtbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIGlzVmlzaWJsZV07
CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCB4KQor
eworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBbc2Nyb2xsVmlldygpIHNl
dFNjcm9sbE9yaWdpblg6eF07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggOWJiNzc2
NS4uNDhkMzI0NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03NjcsNyArNzY3LDcgQEAg
dm9pZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAvLyBDU1MyIDE0LjI6CiAgICAgLy8gVGhlIGJhY2tn
cm91bmQgb2YgdGhlIGJveCBnZW5lcmF0ZWQgYnkgdGhlIHJvb3QgZWxlbWVudCBjb3ZlcnMgdGhl
IGVudGlyZSBjYW52YXMgaW5jbHVkaW5nCiAgICAgLy8gaXRzIG1hcmdpbnMuCi0gICAgaW50IGJ4
ID0gdHggLSBtYXJnaW5MZWZ0KCk7CisgICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0KCkgKyB2
aWV3KCktPmxlZnRMYXlvdXRPdmVyZmxvdygpOwogICAgIGludCBieSA9IHR5IC0gbWFyZ2luVG9w
KCk7CiAgICAgaW50IGJ3ID0gbWF4KHcgKyBtYXJnaW5MZWZ0KCkgKyBtYXJnaW5SaWdodCgpICsg
Ym9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKSwgcncpOwogICAgIGludCBiaCA9IG1heChoICsg
bWFyZ2luVG9wKCkgKyBtYXJnaW5Cb3R0b20oKSArIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9t
KCksIHJoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggNmI0YjY1Yy4uOTNkMjE5NiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTEzMSw3ICsxMzEsOCBAQCB2b2lkIFJlbmRl
clZpZXc6OmxheW91dCgpCiAKICAgICAvLyBSZXNldCBvdmVyZmxvdyBhbmQgdGhlbiByZXBsYWNl
IGl0IHdpdGggZG9jV2lkdGggYW5kIGRvY0hlaWdodC4KICAgICBtX292ZXJmbG93LmNsZWFyKCk7
Ci0gICAgYWRkTGF5b3V0T3ZlcmZsb3coSW50UmVjdCgwLCAwLCBkb2NXaWR0aCgpLCBkb2NIZWln
aHQoKSkpOworICAgIGludCBsZWZ0T3ZlcmZsb3cgPSBkb2NMZWZ0KCk7CisgICAgYWRkTGF5b3V0
T3ZlcmZsb3coSW50UmVjdChsZWZ0T3ZlcmZsb3csIDAsIGRvY1dpZHRoKGxlZnRPdmVyZmxvdyks
IGRvY0hlaWdodCgpKSk7CiAKICAgICBBU1NFUlQobGF5b3V0RGVsdGEoKSA9PSBJbnRTaXplKCkp
OwogICAgIEFTU0VSVChtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50ID09IDApOwpAQCAtNjMzLDkg
KzYzNCwxNSBAQCBpbnQgUmVuZGVyVmlldzo6ZG9jSGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4g
aDsKIH0KIAotaW50IFJlbmRlclZpZXc6OmRvY1dpZHRoKCkgY29uc3QKK2ludCBSZW5kZXJWaWV3
Ojpkb2NMZWZ0KCkgY29uc3QKIHsKLSAgICBpbnQgdyA9IHJpZ2h0bW9zdFBvc2l0aW9uKCk7Cisg
ICAgLy8gQ2xpcCBvdXQgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZS4KKyAgICByZXR1cm4gc3R5
bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gMCA6IHN0ZDo6bWluKDAsIGxlZnRtb3N0
UG9zaXRpb24oKSk7Cit9CisKK2ludCBSZW5kZXJWaWV3Ojpkb2NXaWR0aChpbnQgbGVmdE92ZXJm
bG93KSBjb25zdAoreworICAgIGludCB3ID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gcmlnaHRtb3N0UG9zaXRpb24oKSA6IHdpZHRoKCkgLSBsZWZ0T3ZlcmZsb3c7CiAKICAg
ICBmb3IgKFJlbmRlckJveCogYyA9IGZpcnN0Q2hpbGRCb3goKTsgYzsgYyA9IGMtPm5leHRTaWJs
aW5nQm94KCkpIHsKICAgICAgICAgaW50IGR3ID0gYy0+d2lkdGgoKSArIGMtPm1hcmdpbkxlZnQo
KSArIGMtPm1hcmdpblJpZ2h0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggMDdmOTMzZi4u
NDFhMDUwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMTc0LDcgKzE3NCw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBzaG91bGRSZXBhaW50KGNvbnN0IEludFJlY3QmIHIpIGNvbnN0OwogICAg
ICAgICAKICAgICBpbnQgZG9jSGVpZ2h0KCkgY29uc3Q7Ci0gICAgaW50IGRvY1dpZHRoKCkgY29u
c3Q7CisgICAgaW50IGRvY0xlZnQoKSBjb25zdDsKKyAgICBpbnQgZG9jV2lkdGgoaW50IGxlZnRP
dmVyZmxvdykgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgbWF5IG9ubHkgYmUgYWNj
ZXNzZWQgYnkgTGF5b3V0U3RhdGVNYWludGFpbmVyLgogICAgIGJvb2wgcHVzaExheW91dFN0YXRl
KFJlbmRlckJveCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIG9mZnNldCwgaW50IHBhZ2VIZWln
aHQgPSAwLCBib29sIHBhZ2VIZWlnaHRDaGFuZ2VkID0gZmFsc2UsIENvbHVtbkluZm8qIGNvbElu
Zm8gPSAwKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCA1YjlhYjkyLi5lYTI1ZmM5IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEw
LTExLTE4ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSaWdodC10by1sZWZ0IHBhZ2VzIHNob3Vs
ZCBiZSBzY3JvbGxhYmxlIHRvIHJldmVhbCBsZWZ0IG92ZXJmbG93LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTYKKworICAgICAgICBTZXQgYW5k
IGdldCB0aGUgb3JpZ2luYWwgeC1heGlzIHNjcm9sbCBwb3NpdGlvbiBhbmQgcmVzZXQgc2Nyb2xs
IHBvc2l0aW9uIG9uIEhPTUUvRU5EIGtleSBwcmVzcy4KKyAgICAgICAgTW9kaWZ5IFdlYkZyYW1l
VmlldyB0byBzdXBwb3J0IHNldHRpbmcgdGhlIGluaXRpYWwgaG9yaXpvbnRhbCBzY3JvbGxlcidz
IHRodW1iIHBvc2l0aW9uIHRvIHRoZSByaWdodCBmb3IKKyAgICAgICAgcGFnZXMgd2l0aCBhIGxl
ZnQgb3ZlcmZsb3cuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmll
dy5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgaW5Qcm9ncmFtYXRpY1Njcm9sbF0pOgor
ICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgcmVmcmVzaEluaXRpYWxTY3JvbGxi
YXJQb3NpdGlvbl0pOgorICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgdXBkYXRl
U2Nyb2xsZXJzXSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyByZWZsZWN0
U2Nyb2xsZWRDbGlwVmlldzpdKToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3
IHNldFNjcm9sbE9yaWdpblg6XSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmll
dyBzY3JvbGxPcmlnaW5YXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06Cisg
ICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9FbmRPZkRvY3VtZW50XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2ZyYW1l
T3JCb3VuZHNDaGFuZ2VkXSk6CisKIDIwMTAtMTEtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcuaCBiL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcuaAppbmRleCBjMjg5YTA0Li5iODk0
NjJkIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNW
aWV3LmgKKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5o
CkBAIC01OCw0ICs1OCwxMCBAQCBzdHJ1Y3QgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3UHJpdmF0
ZTsKIC8vIHZpc2libGUgaXMgdGhhdCB0aGV5IGhhdmUgYmVlbiBzdXBwcmVzc2VkIGJ5IHNldEFs
d2F5c0hpZGVIb3Jpem9udGFsL1ZlcnRpY2FsU2Nyb2xsZXI6LgogLSAoQk9PTClob3Jpem9udGFs
U2Nyb2xsaW5nQWxsb3dlZDsKIC0gKEJPT0wpdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkOworCisv
LyBSZXR1cm5zIFlFUyBpZiB3ZSdyZSBjdXJyZW50bHkgaW4gdGhlIG1pZGRsZSBvZiBwcm9ncmFt
bWF0aWNhbGx5IG1vdmluZyB0aGUKKy8vIHNjcm9sbGJhci4KKy8vIE5PVEU6IEFzIG9wcG9zZWQg
dG8gb3RoZXIgcGxhY2VzIGluIHRoZSBjb2RlLCBwcm9ncmFtbWF0aWNhbGx5IG1vdmluZyB0aGUK
Ky8vIHNjcm9sbGVycyBmcm9tIGluc2lkZSB0aGlzIGNsYXNzIHNob3VsZCBub3QgZmlyZSBKUyBl
dmVudHMuCistIChCT09MKWluUHJvZ3JhbWF0aWNTY3JvbGw7CiBAZW5kCmRpZmYgLS1naXQgYS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tIGIvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbQppbmRleCA3NDQzOWRkLi40ODBk
MTQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNW
aWV3Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcu
bW0KQEAgLTYyLDYgKzYyLDE1IEBAIHN0cnVjdCBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdQcml2
YXRlIHsKICAgICBib29sIGFsd2F5c0hpZGVWZXJ0aWNhbFNjcm9sbGVyOwogICAgIGJvb2wgaG9y
aXpvbnRhbFNjcm9sbGluZ0FsbG93ZWRCdXRTY3JvbGxlckhpZGRlbjsKICAgICBib29sIHZlcnRp
Y2FsU2Nyb2xsaW5nQWxsb3dlZEJ1dFNjcm9sbGVySGlkZGVuOworCisgICAgLy8gc2Nyb2xsT3Jp
Z2luWCBpcyAwIGZvciBMVFIgcGFnZSBhbmQgaXMgdGhlIG5lZ2F0aXZlIG9mIGxlZnQgbGF5b3V0
IG92ZXJmbG93IHZhbHVlIGZvciBSVEwgcGFnZS4KKyAgICBpbnQgc2Nyb2xsT3JpZ2luWDsKKwor
ICAgIC8vIEZsYWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc2Nyb2xsYmFyIHRodW1iJ3MgaW5pdGlh
bCBwb3NpdGlvbiBuZWVkcyB0bworICAgIC8vIGJlIG1hbnVhbGx5IHNldC4KKyAgICBib29sIHNl
dFNjcm9sbGJhclRodW1iSW5pdGlhbFBvc2l0aW9uOworCisgICAgYm9vbCBpblByb2dyYW1tYXRp
Y1Njcm9sbDsKIH07CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcK
QEAgLTE0OSw2ICsxNTgsMTEgQEAgc3RydWN0IFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld1ByaXZh
dGUgewogICAgIHJldHVybiBfcHJpdmF0ZS0+dmVydGljYWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Ny
b2xsZXJIaWRkZW4gfHwgW3NlbGYgaGFzVmVydGljYWxTY3JvbGxlcl07CiB9CiAKKy0gKEJPT0wp
aW5Qcm9ncmFtYXRpY1Njcm9sbAoreworICAgIHJldHVybiBfcHJpdmF0ZS0+aW5Qcm9ncmFtbWF0
aWNTY3JvbGw7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkR5bmFtaWNTY3JvbGxC
YXJzVmlldyAoV2ViSW50ZXJuYWwpCkBAIC0yMDEsNiArMjE1LDI5IEBAIHN0cnVjdCBXZWJEeW5h
bWljU2Nyb2xsQmFyc1ZpZXdQcml2YXRlIHsKICNlbmRpZgogfQogCistICh2b2lkKXJlZnJlc2hJ
bml0aWFsU2Nyb2xsYmFyUG9zaXRpb24KK3sKKyAgICBpZiAoX3ByaXZhdGUtPnNldFNjcm9sbGJh
clRodW1iSW5pdGlhbFBvc2l0aW9uKSB7CisgICAgICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0g
W3NlbGYgZG9jdW1lbnRWaWV3XTsKKyAgICAgICAgTlNSZWN0IGRvY3VtZW50UmVjdCA9IFtkb2N1
bWVudFZpZXcgYm91bmRzXTsKKworICAgICAgICAvLyBJZiBzY3JvbGxPcmlnaW5YIGlzIG5vbi16
ZXJvIHRoYXQgbWVhbnMgdGhhdCB0aGVyZSdzIGEgbGVmdCBvdmVyZmxvdyA8PT4gdGhpcyBpcyBh
biBSVEwgZG9jdW1lbnQgYW5kIHRodXMKKyAgICAgICAgLy8gdGhlIGluaXRpYWwgcG9zaXRpb24g
b2YgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyIHRodW1iIHNob3VsZCBiZSBvbiB0aGUgcmlnaHQu
CisgICAgICAgIC8vIEZJWE1FOiBJZiBrbm93bGVkZ2Ugb2YgZG9jdW1lbnQgZGlyZWN0aW9uYWxp
dHkgaXMgZXZlciBwcm9wYWdhdGVkIHRvIHRoZSBzY3JvbGwgdmlldywgaXQgcHJvYmFibHkgbWFr
ZXMKKyAgICAgICAgLy8gbW9yZSBzZW5zZSB0byB1c2UgdGhlIGRpcmVjdGlvbmFsaXR5IGRpcmVj
dGx5IGluIHRoZSBiZWxvdyBpZiBzdGF0ZW1lbnQsIHJhdGhlciB0aGFuIGRvaW5nIHNvIGluZGly
ZWN0bHkKKyAgICAgICAgLy8gdGhyb3VnaCBzY3JvbGxPcmlnaW5YLgorICAgICAgICBpZiAoX3By
aXZhdGUtPnNjcm9sbE9yaWdpblggIT0gMCkgeworICAgICAgICAgICAgLy8gVGhlIGNhbGwgdG8g
W05TVmlldyBzY3JvbGxQb2ludDpdIGZpcmVzIG9mZiBub3RpZmljYXRpb24gdGhlIGhhbmRsZXIg
Zm9yIHdoaWNoIG5lZWRzIHRvIGtub3cgdGhhdAorICAgICAgICAgICAgLy8gd2UncmUgc2V0dGlu
ZyB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gc28gaXQgZG9lc24ndCBpbnRlcnByZXQgdGhp
cyBhcyBhIHVzZXIgYWN0aW9uIGFuZAorICAgICAgICAgICAgLy8gZmlyZSBvZmYgYSBKUyBldmVu
dC4KKyAgICAgICAgICAgIF9wcml2YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IHRydWU7Cisg
ICAgICAgICAgICBbZG9jdW1lbnRWaWV3IHNjcm9sbFBvaW50Ok5TTWFrZVBvaW50KE5TTWF4WChk
b2N1bWVudFJlY3QpIC0gTlNXaWR0aChbc2VsZiBjb250ZW50Vmlld0ZyYW1lXSksIDApXTsKKyAg
ICAgICAgICAgIF9wcml2YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIF9wcml2YXRlLT5zZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlvbiA9
IGZhbHNlOworICAgIH0KK30KKwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNNYXhVcGRhdGVTY3Jv
bGxiYXJzUGFzcyA9IDI7CiAKIC0gKHZvaWQpdXBkYXRlU2Nyb2xsZXJzCkBAIC0zMDIsNiArMzM5
LDEyIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4VXBkYXRlU2Nyb2xsYmFyc1Bhc3MgPSAy
OwogICAgIGlmIChoYXNIb3Jpem9udGFsU2Nyb2xsZXIgIT0gbmV3SGFzSG9yaXpvbnRhbFNjcm9s
bGVyKSB7CiAgICAgICAgIF9wcml2YXRlLT5pblVwZGF0ZVNjcm9sbGVycyA9IFlFUzsKICAgICAg
ICAgW3NlbGYgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGVyOm5ld0hhc0hvcml6b250YWxTY3JvbGxl
cl07CisgICAgICAgIAorICAgICAgICAvLyBGb3IgUlRMIGRvY3VtZW50cywgd2UgbmVlZCB0byBz
ZXQgdGhlIGluaXRpYWwgcG9zaXRpb24gb2YgdGhlCisgICAgICAgIC8vIGhvcml6b250YWwgc2Ny
b2xsYmFyIHRodW1iIHRvIGJlIG9uIHRoZSByaWdodC4KKyAgICAgICAgaWYgKG5ld0hhc0hvcml6
b250YWxTY3JvbGxlcikKKyAgICAgICAgICAgIF9wcml2YXRlLT5zZXRTY3JvbGxiYXJUaHVtYklu
aXRpYWxQb3NpdGlvbiA9IHRydWU7CisgICAgICAgIAogICAgICAgICBfcHJpdmF0ZS0+aW5VcGRh
dGVTY3JvbGxlcnMgPSBOTzsKICAgICAgICAgbmVlZHNMYXlvdXQgPSBZRVM7CiAgICAgfQpAQCAt
MzY0LDYgKzQwNywxMSBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY01heFVwZGF0ZVNjcm9sbGJh
cnNQYXNzID0gMjsKICAgICB9CiAjZW5kaWYKIAorICAgIC8vIFRoZSBjYWxsIHRvIFtOU1ZpZXcg
cmVmbGVjdFNjcm9sbGVkQ2xpcFZpZXddIHNldHMgdGhlIHNjcm9sbGJhciB0aHVtYgorICAgIC8v
IHBvc2l0aW9uIHRvIDAgKHRoZSBsZWZ0KSB3aGVuIHRoZSB2aWV3IGlzIGluaXRpYWxseSBkaXNw
bGF5ZWQuCisgICAgLy8gVGhpcyBjYWxsIHVwZGF0ZXMgdGhlIGluaXRpYWwgcG9zaXRpb24gY29y
cmVjdGx5LgorICAgIFtzZWxmIHJlZnJlc2hJbml0aWFsU2Nyb2xsYmFyUG9zaXRpb25dOworCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpCiAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBkb2N1bWVudFZpZXddOwog
ICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0p
IHsKQEAgLTUyNSw0ICs1NzMsMjIgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNNYXhVcGRhdGVT
Y3JvbGxiYXJzUGFzcyA9IDI7CiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkXTsKIH0KIAorLSAodm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Nyb2xsT3JpZ2luWAor
eworICAgIF9wcml2YXRlLT5zY3JvbGxPcmlnaW5YID0gc2Nyb2xsT3JpZ2luWDsKKyAgICAKKyAg
ICBpZCBkb2NWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKKyAgICBpZiAoc2Nyb2xsT3JpZ2lu
WCAhPSBbZG9jVmlldyBib3VuZHNdLm9yaWdpbi54KSB7CisgICAgICAgIC8vICItW3NlbGYgc2Ny
b2xsT3JpZ2luWF0iIGlzIGVxdWFsIHRvIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdy4KKyAgICAg
ICAgLy8gTWFrZSBEb2N1bWVudCBib3VuZHMgb3JpZ2luIHggY29vcmRpbmF0ZSBjb3JyZXNwb25k
IHRvIHRoZSBsZWZ0IG92ZXJmbG93IHNvIHRoZSBlbnRpcmUgY2FudmFzIGlzIGNvdmVyZWQgYnkg
dGhlIGRvY3VtZW50LgorICAgICAgICBbZG9jVmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9p
bnQoLXNjcm9sbE9yaWdpblgsIFtkb2NWaWV3IGJvdW5kc10ub3JpZ2luLnkpXTsKKyAgICB9CisK
K30KKworLSAoaW50KXNjcm9sbE9yaWdpblgKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPnNjcm9s
bE9yaWdpblg7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZVZpZXcubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4IDBk
YjEyYzAuLjQwZWUwYjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZp
ZXcubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAtNTM2LDYg
KzUzNiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVE
aWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAgICAgaWYgKCFbc2VsZiBfaXNTY3Jv
bGxhYmxlXSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5TUG9pbnQgcG9pbnQgPSBbW1tzZWxm
IF9zY3JvbGxWaWV3XSBkb2N1bWVudFZpZXddIGZyYW1lXS5vcmlnaW47CisgICAgcG9pbnQueCAr
PSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhdOwogICAgIHJldHVybiBbW3NlbGYg
X2NvbnRlbnRWaWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1hdGU6WUVTXTsKIH0KIApAQCAtNTQ3
LDYgKzU0OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFi
bGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAgICAgICAgIHJldHVybiBOTzsK
ICAgICBOU1JlY3QgZnJhbWUgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVudFZpZXddIGZy
YW1lXTsKICAgICBOU1BvaW50IHBvaW50ID0gTlNNYWtlUG9pbnQoZnJhbWUub3JpZ2luLngsIE5T
TWF4WShmcmFtZSkpOworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxP
cmlnaW5YXTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10gX3Njcm9sbFRvOiZwb2lu
dCBhbmltYXRlOllFU107CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBlYzI0
NzNmLi4wN2U0ODc2IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMTk4LDggKzEx
OTgsMTEgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZU1vdXNlb3ZlclRpbWVyQ2FsbGJhY2soQ0ZSdW5M
b29wVGltZXJSZWYgdGltZXIsIHZvaWQgKmluZm8pCiAKIC0gKHZvaWQpX2ZyYW1lT3JCb3VuZHND
aGFuZ2VkCiB7CisgICAgV2ViVmlldyAqd2ViVmlldyA9IFtzZWxmIF93ZWJWaWV3XTsKKyAgICBX
ZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgPSBbW1t3ZWJWaWV3IG1haW5GcmFt
ZV0gZnJhbWVWaWV3XSBfc2Nyb2xsVmlld107CisKICAgICBOU1BvaW50IG9yaWdpbiA9IFtbc2Vs
ZiBzdXBlcnZpZXddIGJvdW5kc10ub3JpZ2luOwotICAgIGlmICghTlNFcXVhbFBvaW50cyhfcHJp
dmF0ZS0+bGFzdFNjcm9sbFBvc2l0aW9uLCBvcmlnaW4pKSB7CisgICAgaWYgKCFOU0VxdWFsUG9p
bnRzKF9wcml2YXRlLT5sYXN0U2Nyb2xsUG9zaXRpb24sIG9yaWdpbikgJiYgIVtzY3JvbGxWaWV3
IGluUHJvZ3JhbWF0aWNTY3JvbGxdKSB7CiAgICAgICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKSkgewogICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogY29yZVZp
ZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkgewogI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgpAQCAt
MTIxNCw3ICsxMjE3LDYgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZU1vdXNlb3ZlclRpbWVyQ2FsbGJh
Y2soQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQgKmluZm8pCiAgICAgCiAgICAgICAgIFtf
cHJpdmF0ZS0+Y29tcGxldGlvbkNvbnRyb2xsZXIgZW5kUmV2ZXJ0aW5nQ2hhbmdlOk5PIG1vdmVM
ZWZ0Ok5PXTsKICAgICAgICAgCi0gICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbc2VsZiBfd2Vi
Vmlld107CiAgICAgICAgIFtbd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3
ZWJWaWV3IGRpZFNjcm9sbERvY3VtZW50SW5GcmFtZVZpZXc6W3NlbGYgX2ZyYW1lVmlld11dOwog
ICAgIH0KICAgICBfcHJpdmF0ZS0+bGFzdFNjcm9sbFBvc2l0aW9uID0gb3JpZ2luOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74753</attachid>
            <date>2010-11-24 05:41:58 -0800</date>
            <delta_ts>2010-11-29 05:05:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-23556-20101124154153.patch</filename>
            <type>text/plain</type>
            <size>51941</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNDMxMjZhZjIwMmVmODRhMDlmZjEwNjJhYjU5MjMwZGFjMjA2NzRkLi43ZTk4ZWE4
MTllZWMxMTcxYzEyMTA1NTg3ZmU0NTc2NGQ0ZDdjMGViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMTAtMTEtMTggIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0LXRvLWxlZnQgcGFnZXMg
c2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZsb3cuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1NgorCisgICAgICAgIEZv
ciBSVEwgcGFnZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQgaW5jbHVkZSBpdCBpbnRv
IHRoZSBkb2N1bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQuIFVzZSB0aGUgbGVmdCBs
YXlvdXQgb3ZlcmZsb3cgd2hlbiBzY3JvbGwgYW5kIHBhaW50CisgICAgICAgIHRoZSBwYWdlLiBC
ZWhhdmlvciBvbiBMVFIgcGFnZSBzaG91bGQgYmUgdW50b3VjaGVkIHNpbmNlIGxlZnQgbGF5b3V0
IAorICAgICAgICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBhZ2UuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3Jv
bGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ob3Jpem9udGFsLXNj
cm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3Jv
bGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvYmxvY2svYmFzaWMv
dHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQuY2hlY2tzdW06CisgICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvYmxvY2svYmFzaWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQucG5nOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXIt
aW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3Qv
ZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9y
aWdodC1vdmVyZmxvdy1pbi1ydGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMC0xMS0yMyAg
SWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xs
YmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3Jv
bGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNTNjOTg0ODQ3ZjJhZTk2ODk1ZTA1NmNlZmFh
YWE2YTIzNjI5YmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jp
em9udGFsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBwYWdlIHdpdGggYW4gUlRM
IG92ZXJmbG93IGlzIGluaXRpYWxseSBsb2FkZWQsIG5vIHNjcm9sbCBldmVudCBpcyBzZW50Lgor
CitUaGlzIHRlc3QgaGFzIHBhc3NlZCBpZiB0aGUgdGV4dCAiRkFJTCAtIHNjcm9sbCBldmVudCBy
ZWNlaXZlZCEiIGRvZXMgbm90IGFwcGVhciBiZWxvdy4KKworTG9yZW0gaXBzdW0gZG9sb3Igc2l0
IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBv
ciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFk
IG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMg
bmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUg
ZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9s
b3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3Vw
aWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBt
b2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4iCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWRv
ZXNudC1maXJlLW9uc2Nyb2xsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMyM2EwNmNiZWRhYmM0MjE1NmU2
NzcyZTlhOGZiNGM5OTU5ZGMzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1s
CkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgZGlyPXJ0bD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CisgICAgICAgICAg
ICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBs
aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAg
dmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAg
ICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBvbmxvYWQgPSBmdW5jdGlvbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBkb2N1bWVudC5vbnNjcm9sbD1mdW5jdGlvbigpe2xvZygiRkFJTCAtIHNjcm9sbCBl
dmVudCByZWNlaXZlZCEiKTt9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keT4KKyAgICAgICAgPGRpdiBkaXI9bHRyPgorICAgICAgICA8cD5UaGlzIHRlc3RzIHRoYXQg
d2hlbiBhIHBhZ2Ugd2l0aCBhbiBSVEwgb3ZlcmZsb3cgaXMgaW5pdGlhbGx5IGxvYWRlZCwgbm8g
c2Nyb2xsIGV2ZW50IGlzIHNlbnQuPC9wPgorICAgICAgICA8cD5UaGlzIHRlc3QgaGFzIHBhc3Nl
ZCBpZiB0aGUgdGV4dCAiRkFJTCAtIHNjcm9sbCBldmVudCByZWNlaXZlZCEiIGRvZXMgbm90IGFw
cGVhciBiZWxvdy48L3A+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0
eWxlPSJ3aGl0ZXNwYWNlOm5vd3JhcDsgd2lkdGg6IDQwMDBweDsgaGVpZ2h0OiAxMDAwcHg7IGJv
cmRlcjogMXB4IHNvbGlkIHJlZDsiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0
ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1
dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0s
IHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVp
cCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJl
aGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQg
bnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJv
aWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQg
ZXN0IGxhYm9ydW0uIjwvZGl2PgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAg
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpv
bnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9u
dGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGQxMjgxMDQ1M2MyNTQ5NjYx
ZDE5ZDgyOWYxMWJmZTgxNTRlNjk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKQEAgLTAsMCArMSwxMDMgQEAK
KzxodG1sIGRpcj1ydGw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9Imph
dmFzY3JpcHQiPgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwor
ICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0
cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0
RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAgICAgICAgICAgICBsb2co
IlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBl
Y3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0VHJ1ZShtZXNzYWdlLCBm
YWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChmYWN0KQorICAgICAgICAg
ICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlIik7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBT
dWNjZXNzIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFNjcm9sbFggPSAtMTAwMDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFkg
PSA1MDA7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpIAorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJ3aGVlbCBzY3JvbGwgcHJl
c2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFgsIGV4cGVj
dGVkU2Nyb2xsWCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG9u
bG9hZCA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IGhvcml6
b250YWwgc2Nyb2xsIGJhciBwcmVzZW50cyBhbmQgd2FzIGluaXRpYWxseSBhdCB0aGUgcmlnaHQg
Zm9yIFJUTCBwYWdlLgorICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJvcmlnaW5hbCBzY3Jv
bGwgeCBmb3IgUlRMIHBhZ2UgIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgLy8gVGVzdCBob3Jpem9udGFsIHNjcm9sbC4KKyAgICAgICAgICAgICAg
ICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAg
ICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJob3Jpem9udGFsIHNjcm9sbDogIiwgd2luZG93LnNj
cm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAgICAgLy8gVGVzdCBjYWxsaW5n
IHdpbmRvdy5zY3JvbGxYIGNvbnRpbnVvdXNseSB3b250IGNoYW5nZSB0aGUgc2Nyb2xsWCBwb3Np
dGlvbi4KKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgiY29udGludW91c2x5IGNhbGwgd2lu
ZG93LnNjcm9sbFggIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAg
ICAgICAKKworICAgICAgICAgICAgICAgIC8vIFRlc3Qgem9vbWluZyB3b250IHJlc2V0IHNjcm9s
bCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVj
dGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlSW4o
KTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VPdXQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInpvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3Jv
bGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWCxleHBlY3RlZFNjcm9sbFgpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3QgcmVzaXpl
IHdvbnQgcmVzZXQgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIHdpbmRvdy5yZXNp
emVUbygxMDAwLCB3aW5kb3cuaW5uZXJIZWlnaHQpOworICAgICAgICAgICAgICAgIHdpbmRvdy5z
Y3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAg
ICAgd2luZG93LnJlc2l6ZVRvKDIwMDAsIHdpbmRvdy5pbm5lckhlaWdodCk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0RXF1YWwoInJlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uIiwgd2lu
ZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgLy8gVGVzdCB3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xs
IHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9s
bFgsIGV4cGVjdGVkU2Nyb2xsWSAvIDIpOworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisgICAgICAgICAgICAgICAgZGl2LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNld2hlZWwiLCBtb3VzZXdoZWVsSGFuZGxlciwgZmFsc2UpOworICAgICAg
ICAgICAgICAgIHZhciB3aGVlbEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIldoZWVsRXZl
bnQiKTsKKyAgICAgICAgICAgICAgICB3aGVlbEV2ZW50LmluaXRXZWJLaXRXaGVlbEV2ZW50KDAs
IGV4cGVjdGVkU2Nyb2xsWSAvIDIsIHdpbmRvdywgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRpdi5kaXNwYXRjaEV2ZW50KHdoZWVsRXZl
bnQpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCBIT01FL0VORCBvcGVy
YXRpb24uCisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgICAgICAvLyBOb3QgdXNpbmcgYXNzZXJ0IGVxdWFsIGhlcmUgc2luY2UgdGhlIGJl
aGF2aW9yIGlzIGRpZmZlcmVudCBpbiBlYWNoIHBvcnQuIAorICAgICAgICAgICAgICAgICAgICAv
LyBGb3IgZXhhbXBsZSwgaW4gTWFjLCBIT01FL0VORCBrZXkgcmVzZXQgYm90aCB4IGFuZCB5IHNj
cm9sbCBwb3NpdGlvbi4gCisgICAgICAgICAgICAgICAgICAgIC8vIEluIENocm9taXVtLCBIT01F
L0VORCBrZXkgb25seSByZXNldCB5IHNjcm9sbCBwb3NpdGlvbiwgYW5kIHggc2Nyb2xsIHBvc2l0
aW9uIGlzIHByZXNlcnZlZC4KKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4
cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIua2V5RG93bigiaG9tZSIpOworICAgICAgICAgICAgICAgICAgICBsb2coIktleURv
d24gSE9NRSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogIiAr
IHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRv
KGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigiZW5kIik7CisgICAgICAgICAgICAgICAgICAgIGxvZygiS2V5
RG93biBFTkQgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6ICIg
KyB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgLy8gVGVzdCBzZWxlY3QgYWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50IGNv
bnRlbnQuCisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKDUwMCwgNTAwKTsKKyAgICAg
ICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAg
ICAgICAgICAgICAgIGRpdi5mb2N1cygpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2lu
ZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJzZWxlY3RB
bGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQiLCBzZWxlY3Rpb24udG9TdHJpbmcoKS5zdWJzdHJpbmco
MCwgZGl2LmlubmVySFRNTC5sZW5ndGgpLCBkaXYuaW5uZXJIVE1MKTsKKworICAgICAgICAgICAg
ICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAg
ICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0id2hpdGVzcGFjZTpub3dyYXA7IHdpZHRoOiA0MDAwcHg7
IGhlaWdodDogMTAwMHB4OyBib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij5Mb3JlbSBpcHN1bSBkb2xv
ciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2Qg
dGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVu
aW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFi
b3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBp
cnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1
bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNh
dCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2Vy
dW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLiI8L2Rpdj4KKyAgICAgICAgPHVsIGlkPSJj
b25zb2xlIiBkaXI9bHRyPjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRp
ci1jaGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTEyN2IwNjllODQ5ZmY1ZTBjOTVkYzYyMzk2ZjE2
N2Y0Yjk2YzcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpv
bnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2coc3RyKQoreworICAgIHZhciBsaSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpOworICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworfQor
CitmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQoreworICAg
IGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6
IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQp
OworICAgIGVsc2UKKyAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOwor
fQorCitmdW5jdGlvbiBjaGFuZ2VEaXIobmV3X2RpcikgCit7CisgICAgZG9jdW1lbnQuYm9keS5k
aXIgPSBuZXdfZGlyOworICAgIHJldHVybiBmYWxzZTsKK30KKworb25sb2FkID0gZnVuY3Rpb24o
KQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
YXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSAiLCB3aW5kb3cuc2Ny
b2xsWCwgMCk7CisgICAgd2luZG93LnNjcm9sbFRvKC0xMDAsIDApOworICAgIGFzc2VydEVxdWFs
KCJob3Jpem9udGFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSAiLCB3aW5kb3cuc2Nyb2xsWCwgLTEw
MCk7CisKKyAgICBkb2N1bWVudC5ib2R5LmRpciA9ICJsdHIiOworICAgIGFzc2VydEVxdWFsKCJv
cmlnaW5hbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgIiwgd2luZG93LnNjcm9sbFgsIDApOworICAg
IHdpbmRvdy5zY3JvbGxUbygxMDAsIDApOworICAgIGFzc2VydEVxdWFsKCJob3Jpem9udGFsIHNj
cm9sbCB4IGZvciBMVFIgcGFnZSAiLCB3aW5kb3cuc2Nyb2xsWCwgMTAwKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBkaXI9InJ0bCI+CisKKzxkaXYgc3R5bGU9IndpZHRoOiA0
MDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiIGlkPSJkaXYiPgorTG9yZW0gaXBzdW0gZG9s
b3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTnVuYyBldCBuaXNsIHRl
bGx1cy4gVml2YW11cyBhbGlxdWFtIGVsaXQgbm9uIGFyY3Ugc2NlbGVyaXNxdWUgZWdldCBkYXBp
YnVzIG51bmMgdnVscHV0YXRlLiBNYWVjZW5hcyBzY2VsZXJpc3F1ZSBlZ2VzdGFzIHB1cnVzLCBp
ZCBiaWJlbmR1bSBtYWduYSB2ZW5lbmF0aXMgdmVsLiBWZXN0aWJ1bHVtIGJpYmVuZHVtIHZvbHV0
cGF0IGFsaXF1YW0uIEN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMgZXQgbWFnbmlzIGRpcyBw
YXJ0dXJpZW50IG1vbnRlcywgbmFzY2V0dXIgcmlkaWN1bHVzIG11cy4gVmVzdGlidWx1bSBlZ2V0
IHJpc3VzIHNvZGFsZXMgbWkgdHJpc3RpcXVlIGRpZ25pc3NpbSBldCBzZWQgbGVjdHVzLiBDcmFz
IGNvbnZhbGxpcywgbmliaCB1dCBkYXBpYnVzIGdyYXZpZGEsIGVuaW0gbWF1cmlzIG1vbGVzdGll
IGVsaXQsIGVnZXQgZnJpbmdpbGxhIGF1Z3VlIGVzdCBuZWMgZXN0LiBDdXJhYml0dXIgZXUgcXVh
bSBub24gcHVydXMgc29kYWxlcyBwdWx2aW5hci4gRG9uZWMgdWx0cmljZXMgZHVpIGVnZXQgZG9s
b3IgbG9ib3J0aXMgaW4gcG9ydGEgcXVhbSBydXRydW0uIE51bGxhIHJpc3VzIGxhY3VzLCBhZGlw
aXNjaW5nIHF1aXMgdWxsYW1jb3JwZXIgdmVzdGlidWx1bSwgY29uZGltZW50dW0gc2VkIGxhY3Vz
LiBTZWQgaW4gbnVuYyBkb2xvciwgcXVpcyBlZ2VzdGFzIHR1cnBpcy4gSW50ZWdlciBhcmN1IHRl
bGx1cywgcG9zdWVyZSBzaXQgYW1ldCBwZWxsZW50ZXNxdWUgYSwgbW9sZXN0aWUgYXQgbWkuIE51
bGxhIGJsYW5kaXQsIG1pIGV0IGV1aXNtb2QgaW1wZXJkaWV0LCBhdWd1ZSBhcmN1IG9ybmFyZSBm
ZWxpcywgbmVjIHZpdmVycmEgbGFjdXMgbGlndWxhIHV0IG1ldHVzLiBQcm9pbiB1dCBsZW8gYW50
ZSwgYXQgY29uc2VjdGV0dXIgc2VtLiBOdWxsYW0gbm9uIG51bmMgbGlndWxhLiBQcm9pbiBzZWQg
YW50ZSBzZW0sIGlkIHJ1dHJ1bSBwdXJ1cy4KKzwvZGl2PgorPHVsIGlkPSJjb25zb2xlIj48L3Vs
PgorPGJyPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xlZnQt
b3ZlcmZsb3ctaW4tbHRyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFhMDgyOWU2ZDZmNDFiNmIxM2Q0N2Y4
YjQ5Nzk4YjM0NzI0NjViYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor77u/PCFET0NUWVBF
IGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0
dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgor
PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHRpdGxlPlRlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZTwvdGl0bGU+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxp
Iik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQo
bGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBh
c3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgICAg
IGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7
IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAg
ICAgfQorICAgIAorICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rpb24oKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAg
ICAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IHdpbmRvdy5zY3JvbGxYOworICAgICAgICAgICAg
ICAgIHdpbmRvdy5zY3JvbGxUbygtMSwgMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwo
InNjcm9sbCIsIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJk
aXYiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgcmlnaHQ6NDBweCI+dGVzdCBsZWZ0IG92ZXJm
bG93IGluIExUUiBwYWdlLjwvZGl2PgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmln
aHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yaWdodC1vdmVy
Zmxvdy1pbi1ydGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWJhNzkyZDhiNjMwMTExNTk0NzZkNTBjY2Uw
OGQ0ZTRiZmQzYTNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmln
aHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor77u/PCFET0NUWVBFIGh0
bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6
Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0
bWwgIHN0eWxlPSJkaXJlY3Rpb246cnRsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCIgPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+VGVzdCByaWdodCBvdmVyZmxvdyBp
biBSVEwgcGFnZTwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlv
biBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnNv
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAgICAg
IGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVk
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQp
CisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1cmUsIGFj
dHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjog
U3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgb25sb2FkID0gZnVu
Y3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IHdpbmRvdy5z
Y3JvbGxYOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygxLCAwKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRFcXVhbCgic2Nyb2xsIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgIAor
ICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+
CisgICAgICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjQw
cHgiPnRlc3QgcmlnaHQgb3ZlcmZsb3cgaW4gUlRMIHBhZ2UuPC9kaXY+CisgICAgICAgIDx1bCBp
ZD0iY29uc29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1p
bi1ydGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9k
b20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
OTlmZGE4MDA3MDhiMzUxMzAzOWI5NGEyYzY3MTQwNjNhNWZkMjNmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3Jv
bGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK29yaWdpbmFsIHNjcm9s
bCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xsOiA6IFN1Y2Nlc3MK
K2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vzcworem9vbSBpbiBhbmQg
b3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogU3VjY2VzcworcmVzaXplIHByZXNlcnZlcyBz
Y3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3doZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRh
bCBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK0tleURvd24gSE9NRSBtb3ZlIHgtc2Nyb2xsIHBv
c2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogLTEwMDAKK0tleURvd24gRU5EIG1vdmUgeC1z
Y3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAtMTAwMAorc2VsZWN0QWxsIHNl
bGVjdHMgYWxsIGRvY3VtZW50OiBTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFu
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20v
aG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMmY2NjgxOGZlYTU3ODJlZDQ0MjViYTgzZWQ4NWMwNWJlNzg3Njc4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRh
bC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Ny
b2xsIHggZm9yIFJUTCBwYWdlIDogU3VjY2Vzcworb3JpZ2luYWwgc2Nyb2xsIHggZm9yIExUUiBw
YWdlIDogU3VjY2VzcworaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBTdWNjZXNz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9ibG9jay9iYXNpYy90
cnVuY2F0aW9uLXJ0bC1leHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLmNoZWNrc3VtCmluZGV4
IGE3OThlYjFiMzliNDM2ZGMwOGI2NWQ1NGQ1ZGQ5ZTZlMDZjOTQwY2UuLmE2MzY2YjQwZmY1NDY2
MjNmZmY1MjU3NTQwNWViZjU2MmUxZjI0ZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLmNoZWNrc3Vt
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRp
b24tcnRsLWV4cGVjdGVkLmNoZWNrc3VtCkBAIC0xICsxIEBACi0yOTFmMDA5MTE5NzM1ODAyNjM2
OTY2MjdjMzc2YzMyZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2QxN2U3MzFlNGRlYjlk
Mzg0M2Q4MmU0MjBjMjYzMzZiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmxvY2svYmFzaWMvdHJ1bmNhdGlvbi1y
dGwtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmxvY2svYmFz
aWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQucG5nCmluZGV4IDJhMDI3ZDM5Y2M4ZWM2YjE5M2Ri
NTAwZTdiMmM4OTlmZGExMWQwZjcuLjBlM2Y2ZWU4N2JjZTIyZThhMDA2MGM5OTkwOTZjMzYxODY2
ZjJmODIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNjI2NAp6Y21jJiZkcE1NN0E3O3Fj
ZW1WRHJrUXZrfU05NSlzNz5rVEhXa3BGalI4RFA5OEtzN3FjfmM/QmFSQDF5JTN8ZiUKekNePH1+
bEdCTEVsMGhRUDN9Rzs0R0tAS1d3JVl4Xl9QY2hre3IwTnV7b31wZl9qI31EX3VUak15UHgwdmQh
SUtmCnppUkAmXz5Ja1k3TH5OSkNIfHtrWDcpUWx4V0VjXkBjUk04eCUhT2VYeDw2VHBkN0sjKW8+
YVNeRGxfbUVVYzhJQgp6WH1oTTlSPzJ4Pj9NR1ZHTT5gU0A7JHYzPHN7b0xxVDhgN1g/PX11TkNA
M0MoOUMmJSMxLVFrPF81WUNDN08wWFUKenFvVVQ+NyFFdztYfUJIZXR2aEVNKDk7cD0qajYlRTho
THhwczt+WSY9S2o/MSpTNj14ViFKXmdyPWFoaUQ/bkNXCnohfnV9eFlJKD5yQzMpSyt2dXtfUGVq
ZlhJPSM0KCkrJHBMMzh7V09WOX1OezN7fkAmUztge0dFNH1CY3p1TFQwJAp6UDVDSnp7azFedj1O
QVdrN0lKP0E2N1Y7I19pcktuR1hJeTd6PGQzREF+RjR6Kz1zUk9CV31PV3xBaSMqaX5qemAKekUl
KHRYMHFASmVVKSNKTk1meilqZktPYWN7JEVKST1Qei04Mm5xTmlScmYhVGZNMT45JVNadERecF40
O2Eoe3Z3CnpAVkJfIT8/VkU8bDx8SW0xcEllMUBDNzZRZEAxQW87MD9ndikjJl89MWJ7eT5yKzR7
eSpPN2c7UlJUVXE3eHoybAp6e3NjRSpySmVrMjxvKk9WO0J5O3FZKWBVYig/UTJWKlN4RCZiJGZl
em49X2BUcnZuZk9lMGZEaGM0OHVzSTV2QDsKem90K3QrTHZPTWd2M21zXmhQKmk5OW45LSZRfkQr
UXZCXyk3RD1VNThHP1RsIXZoKHV0I3ZUcTtSaVhMT1FKbEh5CnolPUpnOClDT1cwNzdYKkx0YjNp
YiVzbCpwenVfQTExUSYoeDl1NVM7d3JnTkpfamBEb1VRQ2YqPVhvVnEyNypJIwp6SmhAOSRZLWVy
ZzNsZjY/RnNma155OUtjSDdoWTRHIXtvPVpBZWh8PjA8KTEyOTlSJT1ocmdXS2ZfT3ZSNFBFWVYK
emh0X09RUXF7Z2x5UWU1cT9eUD4rXlFCN088JGRLQkw1VGdUZUNOYndTVj0wVGs1ZnY9MUMpTEIt
LXsqQG8lZzUrCno9QTcqMTJRaURYNV57ck5RZDVrI2kzKTk+aVMxVCFSTV8lRlNyeVF2SXlIRFY9
SWxYb0BUJllfUU1jdlg8KH1EPgp6amgmX3hGQjhlK1I4NmhranUrdVhaPTBvODd3fjh2TS0kflEq
MV5tZStlbkU8cDteaT9TeyNLWEJNPyRrLUBxV3AKemR9TjFyZm5XZ3Y8eGkjPUg9PTkjdGwzVWRz
KXo1c3NIY0U2TkxsJlc8fUErQ0F5MkhDcjxSO2NOX1RpK1l8Y1U9CnpQJHpIRihVeF9rK3dBfkY4
IyVFYDJgNWNrcjVaZE5XZG9hT1RjOXA5UG5Sc3AmRWRFXnNgdkJjK34kV3BaWiY3Mgp6M3RFY3F1
QFZZe05hMz5BXiNLYzFyTWdZQEUhNWklYTNALXtlWlE9Um1Ccmc+PmRKMiQxfF5re3khQm9jQGVZ
STUKemshMnE+UC1oNSlKLT41RFUmMlc/RVQjTHByVElsNVFUPU1FM2p9dUJDVz4ob0liQ3ItbypC
YHhET2NLTWRvejQqCnpGRFdCYThkNl58clZUIzRgbUtDPll5STgzP2p3UiUkdCpeJmczYUVVRW8q
YUFOaSlQQDU2blhIXiNEd2l0e3QzVAp6VHpCTEViKWExJTs1YSZLWkw9X09wdFo9b18hYkpHZGpU
UHRMViFAfkY2bC1iYjJkISpONTstJHF0VHV+OGFOLVAKeiYmUFh6NTMyLU1mcWheUGZVfjBFQnRa
ZyQ7KlpuZVpIRUB6NWsySktMJjt2O1QhMkBuNG1FVzxBWGsrJDZQWjktCnohUVooK0ByQXZlMzRa
dmF3c09TS3E1KVN0O3oxfnRDdEpERGUtY2sxY3Axaz95SCZIa05laVE4d1JldnV1R05YfQp6IUsk
eXkhe05hRih3bztDUHUwYyk9e3BwKSZZP3lENUZPP1lremZ3aTFhJVVIWklrUlZaRyhjaXhJRHlR
PD5YRDcKeiR8dzc/bEBCOzhyUHlZOCRMLTZ9YS11Tz5yQiQ8eD8xUFBtNVFNbSM0dlRIITk7NiE/
QFFNMDZpT2RXKThKJU5FCno5eVNGaEtUaEp8MjJuY3RoQlJhJW1rcTktXnxAa1Q4NUl1Ymx7bVc1
VXk+SmROQlElfnRlUjAjNkp6TEo4RG8/UAp6eXohdlZuX2dPeCopekdBJClhNCsxdiM2OFhTQGRq
VldJNEsmbX4zO0lmcG1mN35VP2tARzlDWCU7Y2l+Y3N0dlYKekx2bnlkanlyZF9yZ15hQEA/Untf
YkE0cUMhQkR+TkcqbitgSmVGU3twSSZZK1JAenEhK2otK19kZExrVFY2RWdQCnpoLSFfaWlMN04x
ezJOZncjaDF5JUxzKjQkNj9DJDQkQ3pyZWN4ckAkUCN4LShoXl9LX1NhX0soNGF3UlJiY3t+egp6
eE9adHdrRTRnbCNxdWB2VWFxOXk9dWFtd0okQSM9PnV4XmJeNiFFdlNjK1R+WlVqYUUhc3g+MDZW
NjdzRTkla0UKej01ajEhR35jU21DdSZ3ajI5NHxPbkU8JUdnUG8qI1k4ej4/dzxOKDdaZn58WT04
TDNmWWRYezElTXZ1QUhePU41CnpKJjNyOTsqXjtnOFdOYXgkYzUofjNDfER8Pz16dFc4ZDZaPkFY
PEdQIU5kakBZSUF6M1BreXVVUz13Zn1FUzUyRgp6aGliUmZlbHc/YHBQMz1QKEw8YmV4SFhGSjZl
fHNadlUxJDIoPCl8bEV0TFgwaSE2Znh0I2VOPVNMTnVDaEB2Z34Keip0Qm4qREBnSHglfnskSHcr
WmJtNFF4bDxna1NYNiNiNCFRVXBjPXtkfUZgczU1bSZiSShtOVdHcklsdlJfa3lyCno1bVdzWmkp
ZEAoKkNAO29jRGlqa2YjTmE7OSlhQ0lBc1hXbygpcigrSGllISpUQWBRPz5aU2VAWF9Ma296Mjlo
QQp6PFMoKDNTU2B2VD0tWmItNEgtOTlpMFNGZSgxdyRHVTB+amJZb30/TWZ9KmI3LThsXmRMTXhw
aFM4RmFVaUB1VWIKejFGUkx4c2VaTyRJPSV0WHIpfT5ObkQkaG9hN1U1dStGZGQjXjw4M195TTxu
Rzg/KjQjYjBJPlAqWWhzeCs4d1hZCno9Jk54VXdYVHhzbFNra0JFan1KVDhTNHpjcUxPK3tfa2Qo
LVZ1d29DQmBRRVVSIWctfFl+U28tNiE/MWlZU1A5Rwp6cz1De0pNQm9VZmZMQjYmK15KU2A7QntU
TCUyJUdyclZ7T312IT5sUiNRJXU4SSY8LV5CbHJaYF5mNFRAJX5IY0sKem84QSVgdSUtQiNpKnJp
bihBa0ReRVNaZUQ/Vz48MTMhellhZmReSSNlUXUqdXQ/MT4rbEY9YWBfa3hvMDNtak8zCnpMaG12
ayl5S2t3WE9WQXY7R0o5VjQ7IWFve0IxaVBXKTFwWDdTeyVUZHxfb0kqQiUzI0JBWHRrOEooXnVn
bX03RQp6RHl0PX0qSmFBWmllaGMwKG5JX1BuPmJ7Z3UzbHNlPjJZbHl6UzxocCZnVTRMdEEmfmwx
QEZ5bj87JT1QSWQxRjUKejkoUWliRlBsN2AzPmA5KCF+IUFMNng8enNVQWpwMThTODAmJi1fJTkp
SWxBclpgVzVAIVgmXlMpIT80K2ZtPyF2CnpyRF5tJGFwe09AQHU1XmROcV4rYGM+VFRiMVlrYm9F
enNYLVZLWj1qISp2eCQyITc2Mkx+IUtyIWlmUzdmPWtjTQp6NEp0cXU2R1RGdWEmI0UtPjNDNT1C
Tjc7b1pTWD1iME1GQFQzRS13fXBpRHVkbXgtYVlmTipHNiFEWnFgb0lAcGQKemZzcDVxRnU+UyEl
ViVESG9FanxpSE9QcnhEPH1tR19UIUleVGtvUkdFPnshNGkhbjU3RnE+VHlwam12aEQ7JFM0CnpR
Km4hOWppZ0NLPUdTUGArVjs+RG9MQCYmQkcqUXpNYm5QXlZScHtCXlUrPVRpZ3w2N1BmRW0pe0Eh
PyFpTUw0Iwp6ZkFyZ3xIajJ7MDwkR0s5O0xHJnhxeT1AcHVBZjlpTWQwJWp6bkBHdGxFI09JLURj
PipJfTVDMTt2WGZiKzhWM1MKejVXUmNNdnZtczItWGReQGc2WmBXMSF9V3YkVG94SE1ZM0tZQlJD
fDQ3Y09WVHc1P30lVFA4NWxXM3tLckxUfTdLCnpVSzxWSUh2Zy05RWFBPWI9VkY9YiM9JHlQczNt
NWMqZ2x1YSNUZnJwXj98RTlUMns5fGUxKCQqNFFlUFdEVW8wZAp6VXA8e3MlWURVKj5pVXVNLUV+
X1p4MW1yVGNKY0VUe3dnaSlSc0NKQXNuWTk9T3YtMmhpZTMwOHBeKVoxUV49UzgKejhkeGkxYitD
ait2c3N7ek9taH07Y0hxfCUxLSEzT15GbihYX0RUVXBYeTJjYFdMSG8rYERSLVMqIXIteWtBNkBJ
CnpKWWMrTEc+M1RJO3QpcDJfTFcmZ1FwN1VIQVFUMj1mPlJKUHlYRE1xMVJOPmtQOSVpTEtnYWwk
MCRgP15DSDJ2Ugp6I2dXNmFNM0dTUXFRQWs5Vn0qZzIpU3RBPThgSUw5JX1tZFFJNzdgeFFJUlgj
KzllKTxOIyR5NUF9QFJedjtPb28KenFKPl9VNGsyUTZUISZeOTMpVzRhKnt0QGFEQSh0WlAjNztr
RkkrM3lLVnFyamQjYWlUX1ZXcHBPaEg5bFZqM2p7Cno+bylKaVEwPEBJUHp8JWc0dGZVWVJ5SWol
dCsjamBtQjl2LUh7TGhXJXs9TzdLd183alg7YmlHKj56PjQpMXszUgp6b2J0Jm95YT5UcjBUV29C
NmcyWkQ0JFEhND9yY0B0UnQ0S3pkaFZec15EVDw9JV9LTmNGTlVtUE8md1lpNjlhKk0KeksyZz4r
N2NqeX1xNCFAIzM3ZHZ3M2YwekluUWBjQiRONHNtNz17fH1ncyVZK3NAR3w1eFVmYFNYMjZafm8/
aClWCnpwNlolKnIwPXZ9ZGkkeCFtRyZhWEswI0stZWpDIW9Oay1UNjh2YCFqenxPeEtHRyRuXmlS
cmNxfDZxZn4kczVCKwp6X040TFJjbjBneUhFPlFnbnoqXmwxRllaM25LNXZTITFZPnk7MEEtO2te
WCpMRTkzSDNZblNDTVE7KF5ebmU3aTEKenlIMmclZ2Z0NEFJIUdFPDxGVFlGaVV4OWx5MCV7dntm
aWdiazVJMSlAXkFZN09ZajMoI1BTNTcrfVN6T1dNVE1hCno+dHR8RlM+Pj9qWSFoITVlYGFwdnJp
KEEhM0o+I0BhQysmdXIpIWdtVD47Tn5jU1Q3Jl9VUytLJXZsaihhSVNhTAp6MHVMNDA3JV9OMWVE
dmYqXmhpcVA4TiFNLVQ8K1FvbVQkfk9nPWp3ODROOzJ7WDU9c0Q/cFREWUAhMkB2RXh2P0IKekdG
YDl+VSNvZ1BNcXNsYjR9M1dCdTVHWkxWRm5TY2NyJEN9VmByTlZSO30hI3Flc1QjKXh1T2p3bz5R
NHJ1UndNCnpxeHMlMTJ4TXZrcitKRTlOfntgQmJIJSgyNk9LS1NSKWl7dHVycyR6dzVvLXhnUGE3
QGFpJF51SXp8KX1BSEN+JQp6PE83WWhPOXJ0YSlsaTNBLX1yUnA/fWBgck87YUlOVDxATy0pN2RI
eFlkKU4/elk7WSpZKSEpKT5PMU1tK3Zua2YKd3FATSZySEZEOVZMJUVfbVZSOyljWn0zblFaQkNA
O3MjQ1BKUHJ2QWkqdmhxUT1VI19PeUNkaVM0Z0Z8ZSo4bChqCgpkZWx0YSAzMTIyCnpjbWJRKiZH
TzxDXk09QzVZQCFjNlRedkk7JWYzbHUrfDJ1PzVFb0l4U2loZXltd3x5bnB6Wkh9UX1HOUN0MzNy
dQp6bF5xJXc4WTNKVWp4MmJgQSlvLXtGZnlAbDI+ZjdUZFU4N2dOdVl6MyNlP1RuQTRDP1V0V2pV
VlZQOWA2a15tOGcKeilLa1MyQChybStfPmVqdEJHRD1KR3o/b31vS2pEcFh2WE9qdT5abFNobHM/
MigtY3IzbDRuUmduZHoyVlBOfUNuCnozc0t9MHAjUTx5ZHE1SURGeHUqQVJqPzJsRCluP0k8TTI1
SlF2VDRieFcjWnZKdm9Jb2hBSEc1UWpiKCFrWiVoNAp6aEplZVRmbEI8cXZ8bXE/VDl4PCtzOzZ9
WVByeGFsQF5AZkxlbmBQelBqWldlZlFMeCpQZCUqVzhpPlJYRWBKOXcKeEBkTUwtSkB1UUVCdDtP
a3tHbjBubWF0Um09JDgxfEVJZFF5U0RGUSMwWEZ2O0pZREA8KTtUM0swUlRscWBlKjxFCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmxvY2svYmFzaWMvdHJ1bmNh
dGlvbi1ydGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmxv
Y2svYmFzaWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQudHh0CmluZGV4IGEwM2I3OTExNTlhZmVh
MDY1ZjEyMWE0ZGE1OGU0ZjViMzEwYmQyNzMuLjEzM2E3ZTE3NjA3ODdiYzg1MmQzOTZjNDgxYWZl
NTE2ZTM2NTI5YWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Js
b2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9ibG9jay9iYXNpYy90cnVuY2F0aW9uLXJ0bC1leHBlY3RlZC50eHQK
QEAgLTEsNSArMSw1IEBACi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmll
dyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDU4NQorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDU4NQogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
MjIyCiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgyMjIKICAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCwxNikgc2l6ZSA3ODR4MTk4CkBAIC0yOCwzICsyOCw0IEBAIGxh
eWVyIGF0ICgwLDApIHNpemUgODAweDIyMgogICAgICAgICAgIHRleHQgcnVuIGF0ICg1MSw5MSkg
d2lkdGggOTUwOiAiYSwgbW9sZXN0aWUgYXQgbWkuIE51bGxhIGJsYW5kaXQsIG1pIGV0IGV1aXNt
b2QgaW1wZXJkaWV0LCBhdWd1ZSBhcmN1IG9ybmFyZSBmZWxpcywgbmVjIHZpdmVycmEgbGFjdXMg
bGlndWxhIHV0IG1ldHVzLiBQcm9pbiB1dCBsZW8gYW50ZSwgYXQgY29uc2VjdGV0dXIgc2VtLiIK
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjE3LDEwOSkgd2lkdGggNCBSVEw6ICIuIgogICAgICAg
ICAgIHRleHQgcnVuIGF0ICg2MjEsMTA5KSB3aWR0aCAzODA6ICJOdWxsYW0gbm9uIG51bmMgbGln
dWxhLiBQcm9pbiBzZWQgYW50ZSBzZW0sIGlkIHJ1dHJ1bSBwdXJ1cyIKK3Njcm9sbGVkIHRvIDIx
MCwwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpv
bnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI0MjE3YzUyYzAzYmJhMDVmZTg3YzY1MDc3YTY3MjRhN2YzYmVlZTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRh
bC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK29yaWdpbmFs
IHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xsOiA6IFN1
Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vzcworem9vbSBp
biBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogRmFpbHVyZSwgYWN0dWFsOiAtODY2
OyBleHBlY3RlZDogLTEwMDAKK3Jlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uOiBTdWNj
ZXNzCit3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uOiBT
dWNjZXNzCitLZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3Ig
UlRMIHBhZ2U6IDAKK0tleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQg
Zm9yIFJUTCBwYWdlOiAwCitzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1Y2Nlc3MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFs
LXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY0YzBjY2VjZWU0NGE3YTMzMmNkNmI3MzNmNzVkNWNi
YzFkZDFkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNiBAQAorb3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDogU3VjY2Vzcwor
aG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNzCitvcmlnaW5hbCBzY3Jv
bGwgeCBmb3IgTFRSIHBhZ2UgOiBGYWlsdXJlLCBhY3R1YWw6IDMxMTA7IGV4cGVjdGVkOiAwCito
b3Jpem9udGFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2xlZnQtb3Zl
cmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmFjNGQxMjNiNTk5ODk2YmVi
OGFjY2NmOGZjNWIwYzE2MjI5ODhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIgQEAKK3Rlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZS4KK3Njcm9sbDogU3Vj
Y2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0
LW92ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MzU3OWNkZjJhODg4NzA3NWViOTcwOWJhYTk2NGI5YTI4YTA3YTgyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACit0ZXN0IHJpZ2h0IG92ZXJmbG93IGluIFJU
TCBwYWdlLgorc2Nyb2xsOiBTdWNjZXNzCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFlMzE0Y2RmNzNlNjk2MTI0M2RiZjYzOGM5OWFhMzNh
Njc0N2I3ZjYuLmUzOGQyZjZlZTIxYTljM2JiZGE3MjhkMzczM2QwYjA0ZmI5ZGI0OTcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDYgQEAKKzIwMTAtMTEtMTggIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0LXRvLWxl
ZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZsb3cuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1NgorCisg
ICAgICAgIEZvciBSVEwgcGFnZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQgaW5jbHVk
ZSBpdCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQuIFVzZSB0
aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgd2hlbiBzY3JvbGwgYW5kIHBhaW50CisgICAgICAgIHRo
ZSBwYWdlLiBCZWhhdmlvciBvbiBMVFIgcGFnZSBzaG91bGQgYmUgdW50b3VjaGVkIHNpbmNlIGxl
ZnQgbGF5b3V0IAorICAgICAgICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBhZ2UuCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2Vz
bnQtZmlyZS1vbnNjcm9sbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ob3Jpem9udGFs
LXNjcm9sbGJhci1pbi1ydGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vaG9yaXpvbnRh
bC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3JpZ2h0
LW92ZXJmbG93LWluLXJ0bC5odG1sCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplKTogU2F2ZSBuZWdhdGl2
ZSBvZiBsZWZ0IGxheW91dCBvdmVyZmxvdyBhcyBzY3JvbGwgWCBvcmlnaW4uIEFuZCBpbmNsdWRl
cyBsZWZ0IGxheW91dCBvdmVyZmxvdyBpbnRvIGRvY3VtZW50IHNpemUuCisgICAgICAgICogcGFn
ZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oOiBBZGQgbWV0aG9kcyBmb3Igc2V0dGluZyBhbmQgZ2V0
dGluZyBzY3JvbGwgWCBvcmlnaW4uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpTY3JvbGxWaWV3KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6IE1pbnVzIHNjcm9sbCBY
IG9yaWdpbiBmcm9tIG1heGltdW0gaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxWaWV3OjptaW5pbXVtU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjpwbGF0Zm9ybVNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luWCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnN0eWxlRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRSb290Qm94RGVjb3Jh
dGlvbnMpOiBJbmNsdWRlIGxlZnQgbGF5b3V0IG92ZXJmbG93IGludG8gY2FudmFzIHNpemUuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6bGF5b3V0KTogU2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdy4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OmRvY0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmll
dzo6ZG9jV2lkdGgpOiBJbmNsdWRlIGxlZnQgbGF5b3V0IG92ZXJmbG93IGludG8gZG9jIHdpZHRo
IGZvciBSVEwgcGFnZS4KKwogMjAxMC0xMS0yMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCA3NzAyMjViYmIyNGZmYjgxMGM1NjU5NWNjZTNhMmY5Y2NhYzk5OTM3Li4w
NjdhOGU4ZDQxM2ExOTI5YzQ0ZGM3YmM4MWNhOTQyMDIyMDA0MjU4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApA
QCAtNDM1LDcgKzQzNSwxNiBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0Vmlld1NpemUoKQogICAg
IGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0Q29udGVudHNTaXplKEludFNp
emUocm9vdC0+cmlnaHRMYXlvdXRPdmVyZmxvdygpLCByb290LT5ib3R0b21MYXlvdXRPdmVyZmxv
dygpKSk7CisgICAgaW50IHByZXZTY3JvbGxPcmlnaW5YID0gc2Nyb2xsT3JpZ2luWCgpOworICAg
IFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpblgoLXJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygp
KTsKKyAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3co
KSAtIHJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpLCByb290LT5ib3R0b21MYXlvdXRPdmVyZmxv
dygpKTsKKyAgICAvLyBUYWtlIGNhcmUgb2YgdGhlIGNhc2Ugd2hlbiBjb250ZW50cyByZW1haW4g
YnV0IHRoZSBSZW5kZXJWaWV3J3MgZGlyZWN0aW9uIGhhcyBjaGFuZ2VkLgorICAgIC8vIEluIHdo
aWNoIGNhc2UsIHdlIG5lZWQgdG8gdXBkYXRlIHNjcm9sbGVyIHBvc2l0aW9uLCBmb3IgZXhhbXBs
ZSwgZnJvbSBsZWZ0bW9zdCB0bworICAgIC8vIHJpZ2h0bW9zdCB3aGVuIGRpcmVjdGlvbiBjaGFu
Z2VzIGZyb20gbGVmdC10by1yaWdodCB0byByaWdodC10by1sZWZ0LgorICAgIGJvb2wgZGlyZWN0
aW9uQ2hhbmdlZCA9ICghcHJldlNjcm9sbE9yaWdpblggfHwgIXNjcm9sbE9yaWdpblgoKSkgJiYg
KHNjcm9sbE9yaWdpblgoKSAhPSBwcmV2U2Nyb2xsT3JpZ2luWCk7CisgICAgaWYgKHNpemUgPT0g
Y29udGVudHNTaXplKCkgJiYgZGlyZWN0aW9uQ2hhbmdlZCkKKyAgICAgICAgU2Nyb2xsVmlldzo6
dXBkYXRlU2Nyb2xsYmFycygpOworICAgIHNldENvbnRlbnRzU2l6ZShzaXplKTsKIH0KIAogdm9p
ZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJlbmRlck9iamVjdCogbywgU2Ny
b2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhck1vZGUmIHZNb2RlKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVWaWV3LmggYi9XZWJDb3JlL3BhZ2UvbWFjL1dlYkNv
cmVGcmFtZVZpZXcuaAppbmRleCA5NzdiMWE3MTNjMDU2ZGU1NWQ1NDEwMzQ0NTc3MGM1ZTZjNDk0
MjEwLi44YjI1MTAyMDBjMjJmZjE1NTgzNDU3YmE1MmRhNzk4NjMxYjAwYzMyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
bWFjL1dlYkNvcmVGcmFtZVZpZXcuaApAQCAtMzMsNiArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAtICh2b2lkKXNldFNjcm9sbGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKWhN
b2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKXZNb2RlIGFuZExvY2s6KEJPT0wp
bG9jazsKIC0gKHZvaWQpc2Nyb2xsaW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUqKWhN
b2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKil2TW9kZTsKIC0gKHZvaWQpc2V0
U2Nyb2xsQmFyc1N1cHByZXNzZWQ6KEJPT0wpc3VwcHJlc3NlZCByZXBhaW50T25VbnN1cHByZXNz
OihCT09MKXJlcGFpbnQ7CistICh2b2lkKXNldFNjcm9sbE9yaWdpblg6KGludClzY3JvbGxPcmln
aW5YOworLSAoaW50KXNjcm9sbE9yaWdpblg7CiBAZW5kCiAKIEBwcm90b2NvbCBXZWJDb3JlRnJh
bWVWaWV3CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCA5ZmFmYTM4ZTM5OGRhNWM3NTM0Njc3
YmY3NTE3ODJhZGJmNWNjMjNhLi5iYWJiN2IwNjFkOWUwMDhmMjJlMTUwNGI0M2YyYjExZjEyNjVi
Y2RmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgU2Nyb2xsVmll
dzo6U2Nyb2xsVmlldygpCiAgICAgLCBtX3VzZUZpeGVkTGF5b3V0KGZhbHNlKQogICAgICwgbV9w
YWludHNFbnRpcmVDb250ZW50cyhmYWxzZSkKICAgICAsIG1fZGVsZWdhdGVzU2Nyb2xsaW5nKGZh
bHNlKQorICAgICwgbV9zY3JvbGxPcmlnaW5YKDApCiB7CiAgICAgcGxhdGZvcm1Jbml0KCk7CiB9
CkBAIC0yNzgsOSArMjc5LDIyIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNTaXplKGNv
bnN0IEludFNpemUmIG5ld1NpemUpCiAKIEludFBvaW50IFNjcm9sbFZpZXc6Om1heGltdW1TY3Jv
bGxQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgSW50U2l6ZSBtYXhpbXVtT2Zmc2V0ID0gY29udGVu
dHNTaXplKCkgLSB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7CisgICAgSW50UG9pbnQgbWF4
aW11bU9mZnNldChjb250ZW50c1dpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSAtIG1fc2Nyb2xsT3Jp
Z2luWCwgY29udGVudHNIZWlnaHQoKSAtIHZpc2libGVIZWlnaHQoKSk7CiAgICAgbWF4aW11bU9m
ZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgcmV0dXJuIEludFBvaW50KG1heGltdW1P
ZmZzZXQud2lkdGgoKSwgbWF4aW11bU9mZnNldC5oZWlnaHQoKSk7CisgICAgcmV0dXJuIG1heGlt
dW1PZmZzZXQ7Cit9CisKK0ludFBvaW50IFNjcm9sbFZpZXc6Om1pbmltdW1TY3JvbGxQb3NpdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFBvaW50KC1tX3Njcm9sbE9yaWdpblgsIDApOwor
fQorCitJbnRQb2ludCBTY3JvbGxWaWV3OjphZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdl
KGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkgY29uc3QKK3sKKyAgICBJbnRQb2ludCBuZXdT
Y3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvaW50LnNocnVua1RvKG1heGltdW1TY3JvbGxQb3NpdGlv
bigpKTsKKyAgICBuZXdTY3JvbGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uLmV4cGFuZGVk
VG8obWluaW11bVNjcm9sbFBvc2l0aW9uKCkpOworICAgIG5ld1Njcm9sbFBvc2l0aW9uLmNsYW1w
TmVnYXRpdmVUb1plcm8oKTsKKyAgICByZXR1cm4gbmV3U2Nyb2xsUG9zaXRpb247CiB9CiAKIGlu
dCBTY3JvbGxWaWV3OjpzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KSBjb25zdApAQCAtMzAzLDcgKzMxNyw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dmFsdWVDaGFuZ2Vk
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIEludFNpemUgbmV3T2Zmc2V0ID0gbV9zY3JvbGxP
ZmZzZXQ7CiAgICAgaWYgKHNjcm9sbGJhcikgewogICAgICAgICBpZiAoc2Nyb2xsYmFyLT5vcmll
bnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCi0gICAgICAgICAgICBuZXdPZmZzZXQu
c2V0V2lkdGgoc2Nyb2xsYmFyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIG5ld09mZnNldC5zZXRX
aWR0aChzY3JvbGxiYXItPnZhbHVlKCkgLSBtX3Njcm9sbE9yaWdpblgpOwogICAgICAgICBlbHNl
IGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAg
ICAgICAgICBuZXdPZmZzZXQuc2V0SGVpZ2h0KHNjcm9sbGJhci0+dmFsdWUoKSk7CiAgICAgfQpA
QCAtMzQ4LDggKzM2Miw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24oY29u
c3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogICAgIH0KICNlbmRpZgogCi0gICAgSW50UG9pbnQg
bmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb2ludC5zaHJ1bmtUbyhtYXhpbXVtU2Nyb2xsUG9z
aXRpb24oKSk7Ci0gICAgbmV3U2Nyb2xsUG9zaXRpb24uY2xhbXBOZWdhdGl2ZVRvWmVybygpOwor
ICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRo
aW5SYW5nZShzY3JvbGxQb2ludCk7CiAKICAgICBpZiAobmV3U2Nyb2xsUG9zaXRpb24gPT0gc2Ny
b2xsUG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDcwLDEwICs0ODMsMTAgQEAgdm9p
ZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZz
ZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW5VcGRhdGVTY3JvbGxiYXJzID0gdHJ1ZTsK
LSAgICBJbnRTaXplIG1heFNjcm9sbFBvc2l0aW9uKGNvbnRlbnRzV2lkdGgoKSAtIHZpc2libGVX
aWR0aCgpLCBjb250ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpKTsKLSAgICBJbnRTaXpl
IHNjcm9sbCA9IGRlc2lyZWRPZmZzZXQuc2hydW5rVG8obWF4U2Nyb2xsUG9zaXRpb24pOwotICAg
IHNjcm9sbC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gCisKKyAgICBJbnRQb2ludCBzY3JvbGxQ
b2ludCA9IGFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UoSW50UG9pbnQoZGVzaXJlZE9m
ZnNldC53aWR0aCgpLCBkZXNpcmVkT2Zmc2V0LmhlaWdodCgpKSk7CisgICAgSW50U2l6ZSBzY3Jv
bGwoc2Nyb2xsUG9pbnQueCgpLCBzY3JvbGxQb2ludC55KCkpOworCiAgICAgaWYgKG1faG9yaXpv
bnRhbFNjcm9sbGJhcikgewogICAgICAgICBpbnQgY2xpZW50V2lkdGggPSB2aXNpYmxlV2lkdGgo
KTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzV2lk
dGgoKSA+IGNsaWVudFdpZHRoKTsKQEAgLTQ5MSw3ICs1MDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6
OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgSW50U2l6ZSYgZGVzaXJlZE9mZnNldCkKICAgICAgICAg
ICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24odHJ1ZSk7
CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhl
bHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJh
ci0+c2V0UHJvcG9ydGlvbihjbGllbnRXaWR0aCwgY29udGVudHNXaWR0aCgpKTsKLSAgICAgICAg
bV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwud2lkdGgoKSwgU2Nyb2xsYmFy
OjpOb3RGcm9tU2Nyb2xsQW5pbWF0b3IpOworICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIt
PnNldFZhbHVlKHNjcm9sbC53aWR0aCgpICsgbV9zY3JvbGxPcmlnaW5YLCBTY3JvbGxiYXI6Ok5v
dEZyb21TY3JvbGxBbmltYXRvcik7CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2Vk
KQogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRh
dGlvbihmYWxzZSk7IAogICAgIH0gCkBAIC0xMDE1LDYgKzEwMjgsMjIgQEAgdm9pZCBTY3JvbGxW
aWV3OjpyZW1vdmVQYW5TY3JvbGxJY29uKCkKICAgICBob3N0V2luZG93KCktPmludmFsaWRhdGVD
b250ZW50c0FuZFdpbmRvdyhJbnRSZWN0KG1fcGFuU2Nyb2xsSWNvblBvaW50LCBJbnRTaXplKHBh
bkljb25TaXplTGVuZ3RoLCBwYW5JY29uU2l6ZUxlbmd0aCkpLCB0cnVlIC8qaW1tZWRpYXRlKi8p
OwogfQogCisKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsT3JpZ2luWChpbnQgeCkKK3sKKyAg
ICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5Y
KHgpOworCisgICAgbV9zY3JvbGxPcmlnaW5YID0geDsKK30KKwordm9pZCBTY3JvbGxWaWV3Ojp1
cGRhdGVTY3JvbGxiYXJzKCkKK3sKKyAgICBpZiAoIXBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAg
IHVwZGF0ZVNjcm9sbGJhcnMoc2Nyb2xsT2Zmc2V0KCkpOworICAgIC8vIEZJWE1FOiBuZWVkIGNv
cnJlc3BvbmRpbmcgZnVuY3Rpb25hbGl0eSBmcm9tIHBsYXRmb3JtV2lkZ2V0LgorfQorCiAjaWYg
IVBMQVRGT1JNKFdYKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oUVQpICYmICFQTEFU
Rk9STShFRkwpCiAKIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1Jbml0KCkKQEAgLTEwNDUsNiAr
MTA3NCwxMCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1cHByZXNz
ZWQoYm9vbCkKIHsKIH0KIAordm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdp
blgoaW50KQoreworfQorCiAjZW5kaWYKIAogI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9S
TShXWCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggNGRlYTU2ZjVhNjEzZGE0OGMzYWFhMTM1MmU2
NjM4ZjYyZGU0ZWE4ZS4uZDRkZjJjYzFlNGM2OTdmOGRjMGM4YmNlMjdlMjEyYTNlZDAyYTdkNSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTE2MCw2ICsxNjAsOSBAQCBwdWJsaWM6CiAgICAgSW50
UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3Qo
KS5sb2NhdGlvbigpOyB9CiAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVy
biB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpIC0gSW50UG9pbnQoKTsgfSAvLyBHZXRz
IHRoZSBzY3JvbGxlZCBwb3NpdGlvbiBhcyBhbiBJbnRTaXplLiBDb252ZW5pZW50IGZvciBhZGRp
bmcgdG8gb3RoZXIgc2l6ZXMuCiAgICAgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkg
Y29uc3Q7IC8vIFRoZSBtYXhpbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KKyAg
ICBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1pbmltdW0g
cG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgorICAgIC8vIEFkanVzdCB0aGUgcGFzcyBp
biBzY3JvbGwgcG9zaXRpb24gd2l0aGluIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0aW9u
cy4KKyAgICBJbnRQb2ludCBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNvbnN0IElu
dFBvaW50JikgY29uc3Q7IAogICAgIGludCBzY3JvbGxYKCkgY29uc3QgeyByZXR1cm4gc2Nyb2xs
UG9zaXRpb24oKS54KCk7IH0KICAgICBpbnQgc2Nyb2xsWSgpIGNvbnN0IHsgcmV0dXJuIHNjcm9s
bFBvc2l0aW9uKCkueSgpOyB9CiAgICAgCkBAIC0yNzksNiArMjgyLDEwIEBAIHByb3RlY3RlZDoK
ICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgaW52YWxpZGF0aW5nIGV2ZXJ5dGhpbmcuCiAg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBk
YXRlUmVjdCk7CiAKKyAgICB2b2lkIHNldFNjcm9sbE9yaWdpblgoaW50KTsKKyAgICBpbnQgc2Ny
b2xsT3JpZ2luWCgpIHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luWDsgfQorICAgIHZvaWQgdXBkYXRl
U2Nyb2xsYmFycygpOworCiBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpv
bnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3ZlcnRpY2FsU2Nyb2xsYmFy
OwpAQCAtMzE0LDYgKzMyMSwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wYWludHNFbnRpcmVD
b250ZW50czsKICAgICBib29sIG1fZGVsZWdhdGVzU2Nyb2xsaW5nOwogCisgICAgLy8gbV9zY3Jv
bGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlLiBBbmQgaXQgaXMgbmVnYXRpdmUgb2YgbGVmdCBs
YXlvdXQKKyAgICAvLyBvdmVyZmxvdyBmb3IgUlRMIHBhZ2UuIEl0IGlzIG1haW5seSB1c2VkIHRv
IHNldCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKyAgICAvLyBwb3NpdGlvbiBmb3IgUlRMIHBh
Z2UuCisgICAgaW50IG1fc2Nyb2xsT3JpZ2luWDsKKwogICAgIHZvaWQgaW5pdCgpOwogICAgIHZv
aWQgZGVzdHJveSgpOwogCkBAIC0zNDEsNiArMzUzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBs
YXRmb3JtU2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoYm9vbCByZXBhaW50T25VbnN1cHByZXNzKTsK
ICAgICB2b2lkIHBsYXRmb3JtUmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYs
IGJvb2wgbm93KTsKICAgICBib29sIHBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdDsKKyAgIAor
ICAgIHZvaWQgcGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCk7CiAKICNpZiBQTEFURk9STShN
QUMpICYmIGRlZmluZWQgX19PQkpDX18KIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxW
aWV3TWFjLm1tCmluZGV4IDdlZjVkYzQzNmZmNzY5OTBlZjBiMzk1MzZiZmFlMmM2MmI2YzI2NGMu
LjY4MDM3YTQ5NmRiYWJjYWM4ODEyYTQ1NjVkZWE0NWYzZjJkMDU4ZDMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsVmlld01hYy5tbQpAQCAtMTMwLDkgKzEzMCw4IEBAIHZvaWQgU2Nyb2xsVmll
dzo6cGxhdGZvcm1TZXRDb250ZW50c1NpemUoKQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKICAgICBpbnQgdyA9IG1fY29udGVudHNTaXplLndpZHRoKCk7CiAgICAgaW50IGggPSBt
X2NvbnRlbnRzU2l6ZS5oZWlnaHQoKTsKLSAgICBMT0coRnJhbWVzLCAiJXAgJUAgYXQgdyAlZCBo
ICVkXG4iLCBkb2N1bWVudFZpZXcoKSwgWyhpZClbZG9jdW1lbnRWaWV3KCkgY2xhc3NdIGNsYXNz
TmFtZV0sIHcsIGgpOyAgICAgICAgICAgIAotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgbWF4KDAs
IHcpLCBtYXgoMCwgaCkgfTsgLy8gd29ya2Fyb3VuZCBmb3IgNDIxMzMxNAotICAgIFtkb2N1bWVu
dFZpZXcoKSBzZXRGcmFtZVNpemU6dGVtcFNpemVdOworICAgIExPRyhGcmFtZXMsICIlcCAlQCBh
dCB3ICVkIGggJWRcbiIsIGRvY3VtZW50VmlldygpLCBbKGlkKVtkb2N1bWVudFZpZXcoKSBjbGFz
c10gY2xhc3NOYW1lXSwgdywgaCk7CisgICAgW2RvY3VtZW50VmlldygpIHNldEZyYW1lU2l6ZTpO
U01ha2VTaXplKG1heCgwLCB3KSwgbWF4KDAsIGgpKV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKIH0KIApAQCAtMTQ3LDcgKzE0Niw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZv
cm1TZXRTY3JvbGxiYXJzU3VwcHJlc3NlZChib29sIHJlcGFpbnRPblVuc3VwcHJlc3MpCiB2b2lk
IFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNj
cm9sbFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBOU1Bv
aW50IHRlbXBQb2ludCA9IHsgbWF4KDAsIHNjcm9sbFBvaW50LngoKSksIG1heCgwLCBzY3JvbGxQ
b2ludC55KCkpIH07IC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEz
MzE0LgorICAgIE5TUG9pbnQgdGVtcFBvaW50ID0gTlNNYWtlUG9pbnQobWF4KC1bc2Nyb2xsVmll
dygpIHNjcm9sbE9yaWdpblhdLCBzY3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQu
eSgpKSk7CiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07CiAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KQEAgLTIwMiw0ICsyMDEsMTEgQEAgYm9vbCBT
Y3JvbGxWaWV3OjpwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgY29uc3QKICAgICByZXR1cm4gIVtwbGF0
Zm9ybVdpZGdldCgpIHdpbmRvd10gfHwgIVtbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIGlzVmlz
aWJsZV07CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGlu
dCB4KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBbc2Nyb2xsVmll
dygpIHNldFNjcm9sbE9yaWdpblg6eF07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXgg
OWJiNzc2NTc5YzU2ZDRkNWRmZTA3MTU2ODU2ZTQwN2I5MWJlYzAyZS4uNDhkMzI0N2MxMjM2MGFm
Zjk0MGM1OWQzOWZhNDE0ZDU5Y2NlOGZkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03
NjcsNyArNzY3LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAvLyBDU1MyIDE0LjI6CiAg
ICAgLy8gVGhlIGJhY2tncm91bmQgb2YgdGhlIGJveCBnZW5lcmF0ZWQgYnkgdGhlIHJvb3QgZWxl
bWVudCBjb3ZlcnMgdGhlIGVudGlyZSBjYW52YXMgaW5jbHVkaW5nCiAgICAgLy8gaXRzIG1hcmdp
bnMuCi0gICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0KCk7CisgICAgaW50IGJ4ID0gdHggLSBt
YXJnaW5MZWZ0KCkgKyB2aWV3KCktPmxlZnRMYXlvdXRPdmVyZmxvdygpOwogICAgIGludCBieSA9
IHR5IC0gbWFyZ2luVG9wKCk7CiAgICAgaW50IGJ3ID0gbWF4KHcgKyBtYXJnaW5MZWZ0KCkgKyBt
YXJnaW5SaWdodCgpICsgYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKSwgcncpOwogICAgIGlu
dCBiaCA9IG1heChoICsgbWFyZ2luVG9wKCkgKyBtYXJnaW5Cb3R0b20oKSArIGJvcmRlclRvcCgp
ICsgYm9yZGVyQm90dG9tKCksIHJoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggNmI0
YjY1Y2JmOTA3ZTNlZDc4YjljYjM5MjEyYTJlNWQxZTAyZTRjNC4uOTNkMjE5NjgxM2NjODA5MWIy
YWUzMGMxNDQ4ZWU4NDY5NTBlYzVkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTEz
MSw3ICsxMzEsOCBAQCB2b2lkIFJlbmRlclZpZXc6OmxheW91dCgpCiAKICAgICAvLyBSZXNldCBv
dmVyZmxvdyBhbmQgdGhlbiByZXBsYWNlIGl0IHdpdGggZG9jV2lkdGggYW5kIGRvY0hlaWdodC4K
ICAgICBtX292ZXJmbG93LmNsZWFyKCk7Ci0gICAgYWRkTGF5b3V0T3ZlcmZsb3coSW50UmVjdCgw
LCAwLCBkb2NXaWR0aCgpLCBkb2NIZWlnaHQoKSkpOworICAgIGludCBsZWZ0T3ZlcmZsb3cgPSBk
b2NMZWZ0KCk7CisgICAgYWRkTGF5b3V0T3ZlcmZsb3coSW50UmVjdChsZWZ0T3ZlcmZsb3csIDAs
IGRvY1dpZHRoKGxlZnRPdmVyZmxvdyksIGRvY0hlaWdodCgpKSk7CiAKICAgICBBU1NFUlQobGF5
b3V0RGVsdGEoKSA9PSBJbnRTaXplKCkpOwogICAgIEFTU0VSVChtX2xheW91dFN0YXRlRGlzYWJs
ZUNvdW50ID09IDApOwpAQCAtNjMzLDkgKzYzNCwxNSBAQCBpbnQgUmVuZGVyVmlldzo6ZG9jSGVp
Z2h0KCkgY29uc3QKICAgICByZXR1cm4gaDsKIH0KIAotaW50IFJlbmRlclZpZXc6OmRvY1dpZHRo
KCkgY29uc3QKK2ludCBSZW5kZXJWaWV3Ojpkb2NMZWZ0KCkgY29uc3QKIHsKLSAgICBpbnQgdyA9
IHJpZ2h0bW9zdFBvc2l0aW9uKCk7CisgICAgLy8gQ2xpcCBvdXQgbGVmdCBvdmVyZmxvdyBpbiBM
VFIgcGFnZS4KKyAgICByZXR1cm4gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
MCA6IHN0ZDo6bWluKDAsIGxlZnRtb3N0UG9zaXRpb24oKSk7Cit9CisKK2ludCBSZW5kZXJWaWV3
Ojpkb2NXaWR0aChpbnQgbGVmdE92ZXJmbG93KSBjb25zdAoreworICAgIGludCB3ID0gc3R5bGUo
KS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gcmlnaHRtb3N0UG9zaXRpb24oKSA6IHdpZHRo
KCkgLSBsZWZ0T3ZlcmZsb3c7CiAKICAgICBmb3IgKFJlbmRlckJveCogYyA9IGZpcnN0Q2hpbGRC
b3goKTsgYzsgYyA9IGMtPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaW50IGR3ID0gYy0+
d2lkdGgoKSArIGMtPm1hcmdpbkxlZnQoKSArIGMtPm1hcmdpblJpZ2h0KCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKaW5kZXggMDdmOTMzZmQ2OGQyZmEzNGZlZTRmMmI3NWMyM2QxZDcyOTQ4MGVjYi4u
NDFhMDUwNmQ0MWNkMTZlY2RjZjMwMTI2ZTYyMzk1ODgyMGRkN2ZhZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuaApAQCAtMTc0LDcgKzE3NCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRSZXBh
aW50KGNvbnN0IEludFJlY3QmIHIpIGNvbnN0OwogICAgICAgICAKICAgICBpbnQgZG9jSGVpZ2h0
KCkgY29uc3Q7Ci0gICAgaW50IGRvY1dpZHRoKCkgY29uc3Q7CisgICAgaW50IGRvY0xlZnQoKSBj
b25zdDsKKyAgICBpbnQgZG9jV2lkdGgoaW50IGxlZnRPdmVyZmxvdykgY29uc3Q7CiAKICAgICAv
LyBUaGVzZSBmdW5jdGlvbnMgbWF5IG9ubHkgYmUgYWNjZXNzZWQgYnkgTGF5b3V0U3RhdGVNYWlu
dGFpbmVyLgogICAgIGJvb2wgcHVzaExheW91dFN0YXRlKFJlbmRlckJveCogcmVuZGVyZXIsIGNv
bnN0IEludFNpemUmIG9mZnNldCwgaW50IHBhZ2VIZWlnaHQgPSAwLCBib29sIHBhZ2VIZWlnaHRD
aGFuZ2VkID0gZmFsc2UsIENvbHVtbkluZm8qIGNvbEluZm8gPSAwKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1YjlhYjkyYzRj
MWJhMGYwMGFkMTNlNWNlMmNlMjE2N2RhZWI4MWQ0Li5lYTI1ZmM5Y2MxZDYyNGZiZjNhMGVkZDkx
ZGQzMWE2NDMwZDNkNmU4IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEwLTExLTE4ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSaWdodC10by1sZWZ0IHBhZ2VzIHNob3VsZCBiZSBzY3JvbGxhYmxl
IHRvIHJldmVhbCBsZWZ0IG92ZXJmbG93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NTYKKworICAgICAgICBTZXQgYW5kIGdldCB0aGUgb3JpZ2lu
YWwgeC1heGlzIHNjcm9sbCBwb3NpdGlvbiBhbmQgcmVzZXQgc2Nyb2xsIHBvc2l0aW9uIG9uIEhP
TUUvRU5EIGtleSBwcmVzcy4KKyAgICAgICAgTW9kaWZ5IFdlYkZyYW1lVmlldyB0byBzdXBwb3J0
IHNldHRpbmcgdGhlIGluaXRpYWwgaG9yaXpvbnRhbCBzY3JvbGxlcidzIHRodW1iIHBvc2l0aW9u
IHRvIHRoZSByaWdodCBmb3IKKyAgICAgICAgcGFnZXMgd2l0aCBhIGxlZnQgb3ZlcmZsb3cuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5oOgorICAgICAgICAq
IFdlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tOgorICAgICAgICAoLVtXZWJEeW5h
bWljU2Nyb2xsQmFyc1ZpZXcgaW5Qcm9ncmFtYXRpY1Njcm9sbF0pOgorICAgICAgICAoLVtXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXcgcmVmcmVzaEluaXRpYWxTY3JvbGxiYXJQb3NpdGlvbl0pOgor
ICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgdXBkYXRlU2Nyb2xsZXJzXSk6Cisg
ICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyByZWZsZWN0U2Nyb2xsZWRDbGlwVmll
dzpdKToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNldFNjcm9sbE9yaWdp
blg6XSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBzY3JvbGxPcmlnaW5Y
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgtW1dlYkZy
YW1lVmlldyBfc2Nyb2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50XSk6CisgICAgICAgICgtW1dlYkZy
YW1lVmlldyBfc2Nyb2xsVG9FbmRPZkRvY3VtZW50XSk6CisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2ZyYW1lT3JCb3VuZHNDaGFuZ2Vk
XSk6CisKIDIwMTAtMTEtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcuaCBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXcuaAppbmRleCBjMjg5YTA0MTQxNWY1OTFkZmVmNjQ1M2RjZjUx
OTBhZmM3ODg4NDM4Li5iODk0NjJkYzg3YTk3NzY0YTY5MTliOGE3N2E0ZTQ2ZDczYzBiMmVmIDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3LmgK
KysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5oCkBAIC01
OCw0ICs1OCwxMCBAQCBzdHJ1Y3QgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3UHJpdmF0ZTsKIC8v
IHZpc2libGUgaXMgdGhhdCB0aGV5IGhhdmUgYmVlbiBzdXBwcmVzc2VkIGJ5IHNldEFsd2F5c0hp
ZGVIb3Jpem9udGFsL1ZlcnRpY2FsU2Nyb2xsZXI6LgogLSAoQk9PTClob3Jpem9udGFsU2Nyb2xs
aW5nQWxsb3dlZDsKIC0gKEJPT0wpdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkOworCisvLyBSZXR1
cm5zIFlFUyBpZiB3ZSdyZSBjdXJyZW50bHkgaW4gdGhlIG1pZGRsZSBvZiBwcm9ncmFtbWF0aWNh
bGx5IG1vdmluZyB0aGUKKy8vIHNjcm9sbGJhci4KKy8vIE5PVEU6IEFzIG9wcG9zZWQgdG8gb3Ro
ZXIgcGxhY2VzIGluIHRoZSBjb2RlLCBwcm9ncmFtbWF0aWNhbGx5IG1vdmluZyB0aGUKKy8vIHNj
cm9sbGVycyBmcm9tIGluc2lkZSB0aGlzIGNsYXNzIHNob3VsZCBub3QgZmlyZSBKUyBldmVudHMu
CistIChCT09MKWluUHJvZ3JhbWF0aWNTY3JvbGw7CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tIGIvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbQppbmRleCA3NDQzOWRkNmNiOTlmODg4MWU4
YmM4YTk2MDI4YmE4MDEwZTJjM2IyLi40ODBkMTQ2MzBkYWE0MjdiYmM5OTU1ZWQ1MTZmNDZlMWEy
YTFiMmQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJh
cnNWaWV3Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcubW0KQEAgLTYyLDYgKzYyLDE1IEBAIHN0cnVjdCBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdQ
cml2YXRlIHsKICAgICBib29sIGFsd2F5c0hpZGVWZXJ0aWNhbFNjcm9sbGVyOwogICAgIGJvb2wg
aG9yaXpvbnRhbFNjcm9sbGluZ0FsbG93ZWRCdXRTY3JvbGxlckhpZGRlbjsKICAgICBib29sIHZl
cnRpY2FsU2Nyb2xsaW5nQWxsb3dlZEJ1dFNjcm9sbGVySGlkZGVuOworCisgICAgLy8gc2Nyb2xs
T3JpZ2luWCBpcyAwIGZvciBMVFIgcGFnZSBhbmQgaXMgdGhlIG5lZ2F0aXZlIG9mIGxlZnQgbGF5
b3V0IG92ZXJmbG93IHZhbHVlIGZvciBSVEwgcGFnZS4KKyAgICBpbnQgc2Nyb2xsT3JpZ2luWDsK
KworICAgIC8vIEZsYWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc2Nyb2xsYmFyIHRodW1iJ3MgaW5p
dGlhbCBwb3NpdGlvbiBuZWVkcyB0bworICAgIC8vIGJlIG1hbnVhbGx5IHNldC4KKyAgICBib29s
IHNldFNjcm9sbGJhclRodW1iSW5pdGlhbFBvc2l0aW9uOworCisgICAgYm9vbCBpblByb2dyYW1t
YXRpY1Njcm9sbDsKIH07CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcKQEAgLTE0OSw2ICsxNTgsMTEgQEAgc3RydWN0IFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld1By
aXZhdGUgewogICAgIHJldHVybiBfcHJpdmF0ZS0+dmVydGljYWxTY3JvbGxpbmdBbGxvd2VkQnV0
U2Nyb2xsZXJIaWRkZW4gfHwgW3NlbGYgaGFzVmVydGljYWxTY3JvbGxlcl07CiB9CiAKKy0gKEJP
T0wpaW5Qcm9ncmFtYXRpY1Njcm9sbAoreworICAgIHJldHVybiBfcHJpdmF0ZS0+aW5Qcm9ncmFt
bWF0aWNTY3JvbGw7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkR5bmFtaWNTY3Jv
bGxCYXJzVmlldyAoV2ViSW50ZXJuYWwpCkBAIC0yMDEsNiArMjE1LDI5IEBAIHN0cnVjdCBXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXdQcml2YXRlIHsKICNlbmRpZgogfQogCistICh2b2lkKXJlZnJl
c2hJbml0aWFsU2Nyb2xsYmFyUG9zaXRpb24KK3sKKyAgICBpZiAoX3ByaXZhdGUtPnNldFNjcm9s
bGJhclRodW1iSW5pdGlhbFBvc2l0aW9uKSB7CisgICAgICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3
ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKKyAgICAgICAgTlNSZWN0IGRvY3VtZW50UmVjdCA9IFtk
b2N1bWVudFZpZXcgYm91bmRzXTsKKworICAgICAgICAvLyBJZiBzY3JvbGxPcmlnaW5YIGlzIG5v
bi16ZXJvIHRoYXQgbWVhbnMgdGhhdCB0aGVyZSdzIGEgbGVmdCBvdmVyZmxvdyA8PT4gdGhpcyBp
cyBhbiBSVEwgZG9jdW1lbnQgYW5kIHRodXMKKyAgICAgICAgLy8gdGhlIGluaXRpYWwgcG9zaXRp
b24gb2YgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyIHRodW1iIHNob3VsZCBiZSBvbiB0aGUgcmln
aHQuCisgICAgICAgIC8vIEZJWE1FOiBJZiBrbm93bGVkZ2Ugb2YgZG9jdW1lbnQgZGlyZWN0aW9u
YWxpdHkgaXMgZXZlciBwcm9wYWdhdGVkIHRvIHRoZSBzY3JvbGwgdmlldywgaXQgcHJvYmFibHkg
bWFrZXMKKyAgICAgICAgLy8gbW9yZSBzZW5zZSB0byB1c2UgdGhlIGRpcmVjdGlvbmFsaXR5IGRp
cmVjdGx5IGluIHRoZSBiZWxvdyBpZiBzdGF0ZW1lbnQsIHJhdGhlciB0aGFuIGRvaW5nIHNvIGlu
ZGlyZWN0bHkKKyAgICAgICAgLy8gdGhyb3VnaCBzY3JvbGxPcmlnaW5YLgorICAgICAgICBpZiAo
X3ByaXZhdGUtPnNjcm9sbE9yaWdpblggIT0gMCkgeworICAgICAgICAgICAgLy8gVGhlIGNhbGwg
dG8gW05TVmlldyBzY3JvbGxQb2ludDpdIGZpcmVzIG9mZiBub3RpZmljYXRpb24gdGhlIGhhbmRs
ZXIgZm9yIHdoaWNoIG5lZWRzIHRvIGtub3cgdGhhdAorICAgICAgICAgICAgLy8gd2UncmUgc2V0
dGluZyB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gc28gaXQgZG9lc24ndCBpbnRlcnByZXQg
dGhpcyBhcyBhIHVzZXIgYWN0aW9uIGFuZAorICAgICAgICAgICAgLy8gZmlyZSBvZmYgYSBKUyBl
dmVudC4KKyAgICAgICAgICAgIF9wcml2YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IHRydWU7
CisgICAgICAgICAgICBbZG9jdW1lbnRWaWV3IHNjcm9sbFBvaW50Ok5TTWFrZVBvaW50KE5TTWF4
WChkb2N1bWVudFJlY3QpIC0gTlNXaWR0aChbc2VsZiBjb250ZW50Vmlld0ZyYW1lXSksIDApXTsK
KyAgICAgICAgICAgIF9wcml2YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIF9wcml2YXRlLT5zZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlv
biA9IGZhbHNlOworICAgIH0KK30KKwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNNYXhVcGRhdGVT
Y3JvbGxiYXJzUGFzcyA9IDI7CiAKIC0gKHZvaWQpdXBkYXRlU2Nyb2xsZXJzCkBAIC0zMDIsNiAr
MzM5LDEyIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4VXBkYXRlU2Nyb2xsYmFyc1Bhc3Mg
PSAyOwogICAgIGlmIChoYXNIb3Jpem9udGFsU2Nyb2xsZXIgIT0gbmV3SGFzSG9yaXpvbnRhbFNj
cm9sbGVyKSB7CiAgICAgICAgIF9wcml2YXRlLT5pblVwZGF0ZVNjcm9sbGVycyA9IFlFUzsKICAg
ICAgICAgW3NlbGYgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGVyOm5ld0hhc0hvcml6b250YWxTY3Jv
bGxlcl07CisgICAgICAgIAorICAgICAgICAvLyBGb3IgUlRMIGRvY3VtZW50cywgd2UgbmVlZCB0
byBzZXQgdGhlIGluaXRpYWwgcG9zaXRpb24gb2YgdGhlCisgICAgICAgIC8vIGhvcml6b250YWwg
c2Nyb2xsYmFyIHRodW1iIHRvIGJlIG9uIHRoZSByaWdodC4KKyAgICAgICAgaWYgKG5ld0hhc0hv
cml6b250YWxTY3JvbGxlcikKKyAgICAgICAgICAgIF9wcml2YXRlLT5zZXRTY3JvbGxiYXJUaHVt
YkluaXRpYWxQb3NpdGlvbiA9IHRydWU7CisgICAgICAgIAogICAgICAgICBfcHJpdmF0ZS0+aW5V
cGRhdGVTY3JvbGxlcnMgPSBOTzsKICAgICAgICAgbmVlZHNMYXlvdXQgPSBZRVM7CiAgICAgfQpA
QCAtMzY0LDYgKzQwNywxMSBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY01heFVwZGF0ZVNjcm9s
bGJhcnNQYXNzID0gMjsKICAgICB9CiAjZW5kaWYKIAorICAgIC8vIFRoZSBjYWxsIHRvIFtOU1Zp
ZXcgcmVmbGVjdFNjcm9sbGVkQ2xpcFZpZXddIHNldHMgdGhlIHNjcm9sbGJhciB0aHVtYgorICAg
IC8vIHBvc2l0aW9uIHRvIDAgKHRoZSBsZWZ0KSB3aGVuIHRoZSB2aWV3IGlzIGluaXRpYWxseSBk
aXNwbGF5ZWQuCisgICAgLy8gVGhpcyBjYWxsIHVwZGF0ZXMgdGhlIGluaXRpYWwgcG9zaXRpb24g
Y29ycmVjdGx5LgorICAgIFtzZWxmIHJlZnJlc2hJbml0aWFsU2Nyb2xsYmFyUG9zaXRpb25dOwor
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBkZWZpbmVkKEJVSUxESU5HX09O
X0xFT1BBUkQpCiAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBkb2N1bWVudFZpZXdd
OwogICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNz
XV0pIHsKQEAgLTUyNSw0ICs1NzMsMjIgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNNYXhVcGRh
dGVTY3JvbGxiYXJzUGFzcyA9IDI7CiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkXTsKIH0KIAorLSAodm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Nyb2xsT3JpZ2lu
WAoreworICAgIF9wcml2YXRlLT5zY3JvbGxPcmlnaW5YID0gc2Nyb2xsT3JpZ2luWDsKKyAgICAK
KyAgICBpZCBkb2NWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKKyAgICBpZiAoc2Nyb2xsT3Jp
Z2luWCAhPSBbZG9jVmlldyBib3VuZHNdLm9yaWdpbi54KSB7CisgICAgICAgIC8vICItW3NlbGYg
c2Nyb2xsT3JpZ2luWF0iIGlzIGVxdWFsIHRvIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdy4KKyAg
ICAgICAgLy8gTWFrZSBEb2N1bWVudCBib3VuZHMgb3JpZ2luIHggY29vcmRpbmF0ZSBjb3JyZXNw
b25kIHRvIHRoZSBsZWZ0IG92ZXJmbG93IHNvIHRoZSBlbnRpcmUgY2FudmFzIGlzIGNvdmVyZWQg
YnkgdGhlIGRvY3VtZW50LgorICAgICAgICBbZG9jVmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtl
UG9pbnQoLXNjcm9sbE9yaWdpblgsIFtkb2NWaWV3IGJvdW5kc10ub3JpZ2luLnkpXTsKKyAgICB9
CisKK30KKworLSAoaW50KXNjcm9sbE9yaWdpblgKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPnNj
cm9sbE9yaWdpblg7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZVZpZXcubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4
IDBkYjEyYzA4NDk4OTYzZjBhMWEwOWFmMDc0YTU1ZmJmNjFlYzE2ZTQuLjQwZWUwYjFhMTJiZTdj
YmVmMDE1OGJiNzcxOWVlYTA3NGIxY2Y3MGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZVZpZXcubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5t
bQpAQCAtNTM2LDYgKzUzNiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFz
cyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAgICAgaWYgKCFb
c2VsZiBfaXNTY3JvbGxhYmxlXSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5TUG9pbnQgcG9p
bnQgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVudFZpZXddIGZyYW1lXS5vcmlnaW47Cisg
ICAgcG9pbnQueCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhdOwogICAgIHJl
dHVybiBbW3NlbGYgX2NvbnRlbnRWaWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1hdGU6WUVTXTsK
IH0KIApAQCAtNTQ3LDYgKzU0OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21D
bGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAgICAgICAg
IHJldHVybiBOTzsKICAgICBOU1JlY3QgZnJhbWUgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1
bWVudFZpZXddIGZyYW1lXTsKICAgICBOU1BvaW50IHBvaW50ID0gTlNNYWtlUG9pbnQoZnJhbWUu
b3JpZ2luLngsIE5TTWF4WShmcmFtZSkpOworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxW
aWV3XSBzY3JvbGxPcmlnaW5YXTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10gX3Nj
cm9sbFRvOiZwb2ludCBhbmltYXRlOllFU107CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCBlYzI0NzNmYzFiNTg0MzI3NzU4NTg4N2Y4YzJhMGRkM2ZjNTQ5NmYyLi4wN2U0ODc2
YTBkNWMzNDBlNTkyMTIyYWEzNzkyZDgyODc3MjQxNWUzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCkBAIC0xMTk4LDggKzExOTgsMTEgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZU1vdXNlb3Zl
clRpbWVyQ2FsbGJhY2soQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQgKmluZm8pCiAKIC0g
KHZvaWQpX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkCiB7CisgICAgV2ViVmlldyAqd2ViVmlldyA9IFtz
ZWxmIF93ZWJWaWV3XTsKKyAgICBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcg
PSBbW1t3ZWJWaWV3IG1haW5GcmFtZV0gZnJhbWVWaWV3XSBfc2Nyb2xsVmlld107CisKICAgICBO
U1BvaW50IG9yaWdpbiA9IFtbc2VsZiBzdXBlcnZpZXddIGJvdW5kc10ub3JpZ2luOwotICAgIGlm
ICghTlNFcXVhbFBvaW50cyhfcHJpdmF0ZS0+bGFzdFNjcm9sbFBvc2l0aW9uLCBvcmlnaW4pKSB7
CisgICAgaWYgKCFOU0VxdWFsUG9pbnRzKF9wcml2YXRlLT5sYXN0U2Nyb2xsUG9zaXRpb24sIG9y
aWdpbikgJiYgIVtzY3JvbGxWaWV3IGluUHJvZ3JhbWF0aWNTY3JvbGxdKSB7CiAgICAgICAgIGlm
IChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewogICAgICAgICAgICAg
aWYgKEZyYW1lVmlldyogY29yZVZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkgewogI2lmbmRlZiBC
VUlMRElOR19PTl9USUdFUgpAQCAtMTIxNCw3ICsxMjE3LDYgQEAgc3RhdGljIHZvaWQgX3VwZGF0
ZU1vdXNlb3ZlclRpbWVyQ2FsbGJhY2soQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQgKmlu
Zm8pCiAgICAgCiAgICAgICAgIFtfcHJpdmF0ZS0+Y29tcGxldGlvbkNvbnRyb2xsZXIgZW5kUmV2
ZXJ0aW5nQ2hhbmdlOk5PIG1vdmVMZWZ0Ok5PXTsKICAgICAgICAgCi0gICAgICAgIFdlYlZpZXcg
KndlYlZpZXcgPSBbc2VsZiBfd2ViVmlld107CiAgICAgICAgIFtbd2ViVmlldyBfVUlEZWxlZ2F0
ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IGRpZFNjcm9sbERvY3VtZW50SW5GcmFtZVZpZXc6
W3NlbGYgX2ZyYW1lVmlld11dOwogICAgIH0KICAgICBfcHJpdmF0ZS0+bGFzdFNjcm9sbFBvc2l0
aW9uID0gb3JpZ2luOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75017</attachid>
            <date>2010-11-29 05:05:47 -0800</date>
            <delta_ts>2010-11-29 14:12:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-23556-20101129150541.patch</filename>
            <type>text/plain</type>
            <size>51353</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMDY4ZTMyNDRmOWZmOGE5MDNkYzNiYTMzNzZiYzVkYzJlMmQ0ZDg4Li4yYTdmZjgy
OGQ4NjY1MWQ4NzI1MGQxYjU1Nzc1NzU0ODgyNGVjNjNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMTAtMTEtMTggIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0LXRvLWxlZnQgcGFnZXMg
c2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3ZlcmZsb3cuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1NgorCisgICAgICAgIEZv
ciBSVEwgcGFnZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBhbmQgaW5jbHVkZSBpdCBpbnRv
IHRoZSBkb2N1bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlvdXQuIFVzZSB0aGUgbGVmdCBs
YXlvdXQgb3ZlcmZsb3cgd2hlbiBzY3JvbGwgYW5kIHBhaW50CisgICAgICAgIHRoZSBwYWdlLiBC
ZWhhdmlvciBvbiBMVFIgcGFnZSBzaG91bGQgYmUgdW50b3VjaGVkIHNpbmNlIGxlZnQgbGF5b3V0
IAorICAgICAgICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRSIHBhZ2UuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3Jv
bGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ob3Jpem9udGFsLXNj
cm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0ci5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yaWdodC1vdmVyZmxvdy1pbi1ydGwuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3Jv
bGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvYmxvY2svYmFzaWMv
dHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQuY2hlY2tzdW06CisgICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvYmxvY2svYmFzaWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQucG5nOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXIt
aW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3Qv
ZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9sZWZ0LW92ZXJmbG93LWluLWx0
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9y
aWdodC1vdmVyZmxvdy1pbi1ydGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMC0xMS0yOSAg
SGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250
YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZp
cmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNTNjOTg0ODQ3ZjJhZTk2ODk1
ZTA1NmNlZmFhYWE2YTIzNjI5YmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBwYWdlIHdp
dGggYW4gUlRMIG92ZXJmbG93IGlzIGluaXRpYWxseSBsb2FkZWQsIG5vIHNjcm9sbCBldmVudCBp
cyBzZW50LgorCitUaGlzIHRlc3QgaGFzIHBhc3NlZCBpZiB0aGUgdGV4dCAiRkFJTCAtIHNjcm9s
bCBldmVudCByZWNlaXZlZCEiIGRvZXMgbm90IGFwcGVhciBiZWxvdy4KKworTG9yZW0gaXBzdW0g
ZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVz
bW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBV
dCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNv
IGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1
dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBj
aWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2Nj
YWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBk
ZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4iCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1v
bnNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXIt
aW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMyM2EwNmNiZWRh
YmM0MjE1NmU2NzcyZTlhOGZiNGM5OTU5ZGMzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNj
cm9sbC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgZGlyPXJ0
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Cisg
ICAgICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAg
ICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAg
ICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
OworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBvbmxvYWQgPSBmdW5jdGlvbigpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBkb2N1bWVudC5vbnNjcm9sbD1mdW5jdGlvbigpe2xvZygiRkFJTCAt
IHNjcm9sbCBldmVudCByZWNlaXZlZCEiKTt9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBkaXI9bHRyPgorICAgICAgICA8cD5UaGlzIHRl
c3RzIHRoYXQgd2hlbiBhIHBhZ2Ugd2l0aCBhbiBSVEwgb3ZlcmZsb3cgaXMgaW5pdGlhbGx5IGxv
YWRlZCwgbm8gc2Nyb2xsIGV2ZW50IGlzIHNlbnQuPC9wPgorICAgICAgICA8cD5UaGlzIHRlc3Qg
aGFzIHBhc3NlZCBpZiB0aGUgdGV4dCAiRkFJTCAtIHNjcm9sbCBldmVudCByZWNlaXZlZCEiIGRv
ZXMgbm90IGFwcGVhciBiZWxvdy48L3A+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGlk
PSJkaXYiIHN0eWxlPSJ3aGl0ZXNwYWNlOm5vd3JhcDsgd2lkdGg6IDQwMDBweDsgaGVpZ2h0OiAx
MDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0
LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5j
aWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5p
bSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kg
dXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9y
IGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBl
dSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRh
dCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0
IGFuaW0gaWQgZXN0IGxhYm9ydW0uIjwvZGl2PgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwv
dWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGQxMjgxMDQ1
M2MyNTQ5NjYxZDE5ZDgyOWYxMWJmZTgxNTRlNjk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKQEAgLTAsMCAr
MSwxMDMgQEAKKzxodG1sIGRpcj1ydGw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgbGFu
Z3VhZ2U9ImphdmFzY3JpcHQiPgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENo
aWxkKGxpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rp
b24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAgICAgICAg
ICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwg
KyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0VHJ1ZSht
ZXNzYWdlLCBmYWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChmYWN0KQor
ICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlIik7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3Nh
Z2UgKyAiOiBTdWNjZXNzIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFNjcm9sbFggPSAtMTAwMDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFNjcm9sbFkgPSA1MDA7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG1vdXNld2hlZWxIYW5kbGVy
KGUpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJ3aGVlbCBz
Y3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9s
bFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgICAgICAgICAvLyBU
ZXN0IGhvcml6b250YWwgc2Nyb2xsIGJhciBwcmVzZW50cyBhbmQgd2FzIGluaXRpYWxseSBhdCB0
aGUgcmlnaHQgZm9yIFJUTCBwYWdlLgorICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJvcmln
aW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgIiwgd2luZG93LnNjcm9sbFgsIDApOworICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCBob3Jpem9udGFsIHNjcm9sbC4KKyAgICAg
ICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9s
bFkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJob3Jpem9udGFsIHNjcm9sbDogIiwg
d2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAgICAgLy8gVGVz
dCBjYWxsaW5nIHdpbmRvdy5zY3JvbGxYIGNvbnRpbnVvdXNseSB3b250IGNoYW5nZSB0aGUgc2Ny
b2xsWCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgiY29udGludW91c2x5
IGNhbGwgd2luZG93LnNjcm9sbFggIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7
CisgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIC8vIFRlc3Qgem9vbWluZyB3b250IHJl
c2V0IHNjcm9sbCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9s
bFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpv
b21QYWdlSW4oKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VPdXQo
KTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInpvb20gaW4gYW5kIG91dCBwcmVz
ZXJ2ZSBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWCxleHBlY3RlZFNjcm9sbFgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRl
c3QgcmVzaXplIHdvbnQgcmVzZXQgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIHdp
bmRvdy5yZXNpemVUbygxMDAwLCB3aW5kb3cuaW5uZXJIZWlnaHQpOworICAgICAgICAgICAgICAg
IHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAg
ICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKDIwMDAsIHdpbmRvdy5pbm5lckhlaWdodCk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInJlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0
aW9uIiwgd2luZG93LnNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWCk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgLy8gVGVzdCB3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250
YWwgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBl
Y3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSAvIDIpOworICAgICAgICAgICAgICAgIHZhciBk
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisgICAgICAgICAgICAgICAgZGl2
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCBtb3VzZXdoZWVsSGFuZGxlciwgZmFsc2Up
OworICAgICAgICAgICAgICAgIHZhciB3aGVlbEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQo
IldoZWVsRXZlbnQiKTsKKyAgICAgICAgICAgICAgICB3aGVlbEV2ZW50LmluaXRXZWJLaXRXaGVl
bEV2ZW50KDAsIGV4cGVjdGVkU2Nyb2xsWSAvIDIsIHdpbmRvdywgMCwgMCwgMCwgMCwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRpdi5kaXNwYXRjaEV2ZW50
KHdoZWVsRXZlbnQpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCBIT01F
L0VORCBvcGVyYXRpb24uCisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgICAgICAvLyBOb3QgdXNpbmcgYXNzZXJ0IGVxdWFsIGhlcmUgc2lu
Y2UgdGhlIGJlaGF2aW9yIGlzIGRpZmZlcmVudCBpbiBlYWNoIHBvcnQuIAorICAgICAgICAgICAg
ICAgICAgICAvLyBGb3IgZXhhbXBsZSwgaW4gTWFjLCBIT01FL0VORCBrZXkgcmVzZXQgYm90aCB4
IGFuZCB5IHNjcm9sbCBwb3NpdGlvbi4gCisgICAgICAgICAgICAgICAgICAgIC8vIEluIENocm9t
aXVtLCBIT01FL0VORCBrZXkgb25seSByZXNldCB5IHNjcm9sbCBwb3NpdGlvbiwgYW5kIHggc2Ny
b2xsIHBvc2l0aW9uIGlzIHByZXNlcnZlZC4KKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnNj
cm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIpOworICAgICAgICAgICAgICAgICAgICBs
b2coIktleURvd24gSE9NRSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwg
cGFnZTogIiArIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgd2luZG93
LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZW5kIik7CisgICAgICAgICAgICAgICAgICAg
IGxvZygiS2V5RG93biBFTkQgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRM
IHBhZ2U6ICIgKyB3aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCBzZWxlY3QgYWxsIHNlbGVjdHMgYWxsIGRv
Y3VtZW50IGNvbnRlbnQuCisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKDUwMCwgNTAw
KTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRp
diIpOworICAgICAgICAgICAgICAgIGRpdi5mb2N1cygpOworICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgICAgICB2YXIgc2VsZWN0
aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFs
KCJzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQiLCBzZWxlY3Rpb24udG9TdHJpbmcoKS5z
dWJzdHJpbmcoMCwgZGl2LmlubmVySFRNTC5sZW5ndGgpLCBkaXYuaW5uZXJIVE1MKTsKKworICAg
ICAgICAgICAgICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICAgICAgICAg
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0id2hpdGVzcGFjZTpub3dyYXA7IHdpZHRo
OiA0MDAwcHg7IGhlaWdodDogMTAwMHB4OyBib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij5Mb3JlbSBp
cHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRv
IGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlx
dWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVs
bGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1
aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBl
c3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2lu
dCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZp
Y2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLiI8L2Rpdj4KKyAgICAgICAg
PHVsIGlkPSJjb25zb2xlIiBkaXI9bHRyPjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1k
aXItY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJh
ci13aGVuLWRpci1jaGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTEyN2IwNjllODQ5ZmY1ZTBjOTVk
YzYyMzk2ZjE2N2Y0Yjk2YzcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwKQEAgLTAsMCArMSw1
MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2coc3RyKQoreworICAg
IHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgbGkuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgdmFyIGNvbnNvbGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQo
bGkpOworfQorCitmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVk
KQoreworICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgIGxvZygiXG4iICsgbWVz
c2FnZSArICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsg
ZXhwZWN0ZWQpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3Vj
Y2VzcyIpOworfQorCitmdW5jdGlvbiBjaGFuZ2VEaXIobmV3X2RpcikgCit7CisgICAgZG9jdW1l
bnQuYm9keS5kaXIgPSBuZXdfZGlyOworICAgIHJldHVybiBmYWxzZTsKK30KKworb25sb2FkID0g
ZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSAiLCB3
aW5kb3cuc2Nyb2xsWCwgMCk7CisgICAgd2luZG93LnNjcm9sbFRvKC0xMDAsIDApOworICAgIGFz
c2VydEVxdWFsKCJob3Jpem9udGFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSAiLCB3aW5kb3cuc2Ny
b2xsWCwgLTEwMCk7CisKKyAgICBkb2N1bWVudC5ib2R5LmRpciA9ICJsdHIiOworICAgIGFzc2Vy
dEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgIiwgd2luZG93LnNjcm9sbFgs
IDApOworICAgIHdpbmRvdy5zY3JvbGxUbygxMDAsIDApOworICAgIGFzc2VydEVxdWFsKCJob3Jp
em9udGFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSAiLCB3aW5kb3cuc2Nyb2xsWCwgMTAwKTsKKwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBkaXI9InJ0bCI+CisKKzxkaXYgc3R5bGU9
IndpZHRoOiA0MDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiIGlkPSJkaXYiPgorTG9yZW0g
aXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTnVuYyBl
dCBuaXNsIHRlbGx1cy4gVml2YW11cyBhbGlxdWFtIGVsaXQgbm9uIGFyY3Ugc2NlbGVyaXNxdWUg
ZWdldCBkYXBpYnVzIG51bmMgdnVscHV0YXRlLiBNYWVjZW5hcyBzY2VsZXJpc3F1ZSBlZ2VzdGFz
IHB1cnVzLCBpZCBiaWJlbmR1bSBtYWduYSB2ZW5lbmF0aXMgdmVsLiBWZXN0aWJ1bHVtIGJpYmVu
ZHVtIHZvbHV0cGF0IGFsaXF1YW0uIEN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMgZXQgbWFn
bmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRlcywgbmFzY2V0dXIgcmlkaWN1bHVzIG11cy4gVmVzdGli
dWx1bSBlZ2V0IHJpc3VzIHNvZGFsZXMgbWkgdHJpc3RpcXVlIGRpZ25pc3NpbSBldCBzZWQgbGVj
dHVzLiBDcmFzIGNvbnZhbGxpcywgbmliaCB1dCBkYXBpYnVzIGdyYXZpZGEsIGVuaW0gbWF1cmlz
IG1vbGVzdGllIGVsaXQsIGVnZXQgZnJpbmdpbGxhIGF1Z3VlIGVzdCBuZWMgZXN0LiBDdXJhYml0
dXIgZXUgcXVhbSBub24gcHVydXMgc29kYWxlcyBwdWx2aW5hci4gRG9uZWMgdWx0cmljZXMgZHVp
IGVnZXQgZG9sb3IgbG9ib3J0aXMgaW4gcG9ydGEgcXVhbSBydXRydW0uIE51bGxhIHJpc3VzIGxh
Y3VzLCBhZGlwaXNjaW5nIHF1aXMgdWxsYW1jb3JwZXIgdmVzdGlidWx1bSwgY29uZGltZW50dW0g
c2VkIGxhY3VzLiBTZWQgaW4gbnVuYyBkb2xvciwgcXVpcyBlZ2VzdGFzIHR1cnBpcy4gSW50ZWdl
ciBhcmN1IHRlbGx1cywgcG9zdWVyZSBzaXQgYW1ldCBwZWxsZW50ZXNxdWUgYSwgbW9sZXN0aWUg
YXQgbWkuIE51bGxhIGJsYW5kaXQsIG1pIGV0IGV1aXNtb2QgaW1wZXJkaWV0LCBhdWd1ZSBhcmN1
IG9ybmFyZSBmZWxpcywgbmVjIHZpdmVycmEgbGFjdXMgbGlndWxhIHV0IG1ldHVzLiBQcm9pbiB1
dCBsZW8gYW50ZSwgYXQgY29uc2VjdGV0dXIgc2VtLiBOdWxsYW0gbm9uIG51bmMgbGlndWxhLiBQ
cm9pbiBzZWQgYW50ZSBzZW0sIGlkIHJ1dHJ1bSBwdXJ1cy4KKzwvZGl2PgorPHVsIGlkPSJjb25z
b2xlIj48L3VsPgorPGJyPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbGVmdC1vdmVyZmxvdy1pbi1sdHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFhMDgyOWU2ZDZmNDFi
NmIxM2Q0N2Y4YjQ5Nzk4YjM0NzI0NjViYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor77u/
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPlRlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZTwv
dGl0bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBw
ZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBm
dW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgICAg
ICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFj
dHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOwor
ICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rpb24oKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRp
diIpOworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IHdpbmRvdy5zY3JvbGxYOworICAg
ICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygtMSwgMCk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0RXF1YWwoInNjcm9sbCIsIHdpbmRvdy5zY3JvbGxYLCAwKTsKKyAgICAKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8
ZGl2IGlkPSJkaXYiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgcmlnaHQ6NDBweCI+dGVzdCBs
ZWZ0IG92ZXJmbG93IGluIExUUiBwYWdlLjwvZGl2PgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUi
PjwvdWw+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9y
aWdodC1vdmVyZmxvdy1pbi1ydGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWJhNzkyZDhiNjMwMTExNTk0
NzZkNTBjY2UwOGQ0ZTRiZmQzYTNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor77u/PCFE
T0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9F
TiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5k
dGQiPgorPGh0bWwgIHN0eWxlPSJkaXJlY3Rpb246cnRsIiB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCIgPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+VGVzdCByaWdodCBv
dmVyZmxvdyBpbiBSVEwgcGFnZTwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAg
ICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBs
aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAg
dmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAg
ICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWws
IGV4cGVjdGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWwgIT0g
ZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZh
aWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNz
YWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgb25s
b2FkID0gZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9
IHdpbmRvdy5zY3JvbGxYOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygxLCAwKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgic2Nyb2xsIiwgd2luZG93LnNjcm9sbFgsIDAp
OworICAgIAorICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZl
OyBsZWZ0OjQwcHgiPnRlc3QgcmlnaHQgb3ZlcmZsb3cgaW4gUlRMIHBhZ2UuPC9kaXY+CisgICAg
ICAgIDx1bCBpZD0iY29uc29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNj
cm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42OTlmZGE4MDA3MDhiMzUxMzAzOWI5NGEyYzY3MTQwNjNhNWZkMjNmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpv
bnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK29yaWdp
bmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xsOiA6
IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vzcworem9v
bSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogU3VjY2VzcworcmVzaXplIHBy
ZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3doZWVsIHNjcm9sbCBwcmVzZXJ2ZXMg
aG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK0tleURvd24gSE9NRSBtb3ZlIHgt
c2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogLTEwMDAKK0tleURvd24gRU5E
IG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAtMTAwMAorc2Vs
ZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50OiBTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVu
LWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMmY2NjgxOGZlYTU3ODJlZDQ0MjViYTgzZWQ4NWMwNWJlNzg3Njc4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20v
aG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6
b250YWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDogU3VjY2Vzcworb3JpZ2luYWwgc2Nyb2xsIHgg
Zm9yIExUUiBwYWdlIDogU3VjY2VzcworaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2Ug
OiBTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9ibG9j
ay9iYXNpYy90cnVuY2F0aW9uLXJ0bC1leHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLmNoZWNr
c3VtCmluZGV4IGE3OThlYjFiMzliNDM2ZGMwOGI2NWQ1NGQ1ZGQ5ZTZlMDZjOTQwY2UuLmE2MzY2
YjQwZmY1NDY2MjNmZmY1MjU3NTQwNWViZjU2MmUxZjI0ZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVk
LmNoZWNrc3VtCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Jsb2NrL2Jhc2lj
L3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLmNoZWNrc3VtCkBAIC0xICsxIEBACi0yOTFmMDA5MTE5
NzM1ODAyNjM2OTY2MjdjMzc2YzMyZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2QxN2U3
MzFlNGRlYjlkMzg0M2Q4MmU0MjBjMjYzMzZiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmxvY2svYmFzaWMvdHJ1
bmNhdGlvbi1ydGwtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
YmxvY2svYmFzaWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQucG5nCmluZGV4IDJhMDI3ZDM5Y2M4
ZWM2YjE5M2RiNTAwZTdiMmM4OTlmZGExMWQwZjcuLjBlM2Y2ZWU4N2JjZTIyZThhMDA2MGM5OTkw
OTZjMzYxODY2ZjJmODIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNjI2NAp6Y21jJiZk
cE1NN0E3O3FjZW1WRHJrUXZrfU05NSlzNz5rVEhXa3BGalI4RFA5OEtzN3FjfmM/QmFSQDF5JTN8
ZiUKekNePH1+bEdCTEVsMGhRUDN9Rzs0R0tAS1d3JVl4Xl9QY2hre3IwTnV7b31wZl9qI31EX3VU
ak15UHgwdmQhSUtmCnppUkAmXz5Ja1k3TH5OSkNIfHtrWDcpUWx4V0VjXkBjUk04eCUhT2VYeDw2
VHBkN0sjKW8+YVNeRGxfbUVVYzhJQgp6WH1oTTlSPzJ4Pj9NR1ZHTT5gU0A7JHYzPHN7b0xxVDhg
N1g/PX11TkNAM0MoOUMmJSMxLVFrPF81WUNDN08wWFUKenFvVVQ+NyFFdztYfUJIZXR2aEVNKDk7
cD0qajYlRThoTHhwczt+WSY9S2o/MSpTNj14ViFKXmdyPWFoaUQ/bkNXCnohfnV9eFlJKD5yQzMp
Syt2dXtfUGVqZlhJPSM0KCkrJHBMMzh7V09WOX1OezN7fkAmUztge0dFNH1CY3p1TFQwJAp6UDVD
Snp7azFedj1OQVdrN0lKP0E2N1Y7I19pcktuR1hJeTd6PGQzREF+RjR6Kz1zUk9CV31PV3xBaSMq
aX5qemAKekUlKHRYMHFASmVVKSNKTk1meilqZktPYWN7JEVKST1Qei04Mm5xTmlScmYhVGZNMT45
JVNadERecF40O2Eoe3Z3CnpAVkJfIT8/VkU8bDx8SW0xcEllMUBDNzZRZEAxQW87MD9ndikjJl89
MWJ7eT5yKzR7eSpPN2c7UlJUVXE3eHoybAp6e3NjRSpySmVrMjxvKk9WO0J5O3FZKWBVYig/UTJW
KlN4RCZiJGZlem49X2BUcnZuZk9lMGZEaGM0OHVzSTV2QDsKem90K3QrTHZPTWd2M21zXmhQKmk5
OW45LSZRfkQrUXZCXyk3RD1VNThHP1RsIXZoKHV0I3ZUcTtSaVhMT1FKbEh5CnolPUpnOClDT1cw
NzdYKkx0YjNpYiVzbCpwenVfQTExUSYoeDl1NVM7d3JnTkpfamBEb1VRQ2YqPVhvVnEyNypJIwp6
SmhAOSRZLWVyZzNsZjY/RnNma155OUtjSDdoWTRHIXtvPVpBZWh8PjA8KTEyOTlSJT1ocmdXS2Zf
T3ZSNFBFWVYKemh0X09RUXF7Z2x5UWU1cT9eUD4rXlFCN088JGRLQkw1VGdUZUNOYndTVj0wVGs1
ZnY9MUMpTEItLXsqQG8lZzUrCno9QTcqMTJRaURYNV57ck5RZDVrI2kzKTk+aVMxVCFSTV8lRlNy
eVF2SXlIRFY9SWxYb0BUJllfUU1jdlg8KH1EPgp6amgmX3hGQjhlK1I4NmhranUrdVhaPTBvODd3
fjh2TS0kflEqMV5tZStlbkU8cDteaT9TeyNLWEJNPyRrLUBxV3AKemR9TjFyZm5XZ3Y8eGkjPUg9
PTkjdGwzVWRzKXo1c3NIY0U2TkxsJlc8fUErQ0F5MkhDcjxSO2NOX1RpK1l8Y1U9CnpQJHpIRihV
eF9rK3dBfkY4IyVFYDJgNWNrcjVaZE5XZG9hT1RjOXA5UG5Sc3AmRWRFXnNgdkJjK34kV3BaWiY3
Mgp6M3RFY3F1QFZZe05hMz5BXiNLYzFyTWdZQEUhNWklYTNALXtlWlE9Um1Ccmc+PmRKMiQxfF5r
e3khQm9jQGVZSTUKemshMnE+UC1oNSlKLT41RFUmMlc/RVQjTHByVElsNVFUPU1FM2p9dUJDVz4o
b0liQ3ItbypCYHhET2NLTWRvejQqCnpGRFdCYThkNl58clZUIzRgbUtDPll5STgzP2p3UiUkdCpe
JmczYUVVRW8qYUFOaSlQQDU2blhIXiNEd2l0e3QzVAp6VHpCTEViKWExJTs1YSZLWkw9X09wdFo9
b18hYkpHZGpUUHRMViFAfkY2bC1iYjJkISpONTstJHF0VHV+OGFOLVAKeiYmUFh6NTMyLU1mcWhe
UGZVfjBFQnRaZyQ7KlpuZVpIRUB6NWsySktMJjt2O1QhMkBuNG1FVzxBWGsrJDZQWjktCnohUVoo
K0ByQXZlMzRadmF3c09TS3E1KVN0O3oxfnRDdEpERGUtY2sxY3Axaz95SCZIa05laVE4d1JldnV1
R05YfQp6IUskeXkhe05hRih3bztDUHUwYyk9e3BwKSZZP3lENUZPP1lremZ3aTFhJVVIWklrUlZa
RyhjaXhJRHlRPD5YRDcKeiR8dzc/bEBCOzhyUHlZOCRMLTZ9YS11Tz5yQiQ8eD8xUFBtNVFNbSM0
dlRIITk7NiE/QFFNMDZpT2RXKThKJU5FCno5eVNGaEtUaEp8MjJuY3RoQlJhJW1rcTktXnxAa1Q4
NUl1Ymx7bVc1VXk+SmROQlElfnRlUjAjNkp6TEo4RG8/UAp6eXohdlZuX2dPeCopekdBJClhNCsx
diM2OFhTQGRqVldJNEsmbX4zO0lmcG1mN35VP2tARzlDWCU7Y2l+Y3N0dlYKekx2bnlkanlyZF9y
Z15hQEA/UntfYkE0cUMhQkR+TkcqbitgSmVGU3twSSZZK1JAenEhK2otK19kZExrVFY2RWdQCnpo
LSFfaWlMN04xezJOZncjaDF5JUxzKjQkNj9DJDQkQ3pyZWN4ckAkUCN4LShoXl9LX1NhX0soNGF3
UlJiY3t+egp6eE9adHdrRTRnbCNxdWB2VWFxOXk9dWFtd0okQSM9PnV4XmJeNiFFdlNjK1R+WlVq
YUUhc3g+MDZWNjdzRTkla0UKej01ajEhR35jU21DdSZ3ajI5NHxPbkU8JUdnUG8qI1k4ej4/dzxO
KDdaZn58WT04TDNmWWRYezElTXZ1QUhePU41CnpKJjNyOTsqXjtnOFdOYXgkYzUofjNDfER8Pz16
dFc4ZDZaPkFYPEdQIU5kakBZSUF6M1BreXVVUz13Zn1FUzUyRgp6aGliUmZlbHc/YHBQMz1QKEw8
YmV4SFhGSjZlfHNadlUxJDIoPCl8bEV0TFgwaSE2Znh0I2VOPVNMTnVDaEB2Z34Keip0Qm4qREBn
SHglfnskSHcrWmJtNFF4bDxna1NYNiNiNCFRVXBjPXtkfUZgczU1bSZiSShtOVdHcklsdlJfa3ly
Cno1bVdzWmkpZEAoKkNAO29jRGlqa2YjTmE7OSlhQ0lBc1hXbygpcigrSGllISpUQWBRPz5aU2VA
WF9Ma296MjloQQp6PFMoKDNTU2B2VD0tWmItNEgtOTlpMFNGZSgxdyRHVTB+amJZb30/TWZ9KmI3
LThsXmRMTXhwaFM4RmFVaUB1VWIKejFGUkx4c2VaTyRJPSV0WHIpfT5ObkQkaG9hN1U1dStGZGQj
Xjw4M195TTxuRzg/KjQjYjBJPlAqWWhzeCs4d1hZCno9Jk54VXdYVHhzbFNra0JFan1KVDhTNHpj
cUxPK3tfa2QoLVZ1d29DQmBRRVVSIWctfFl+U28tNiE/MWlZU1A5Rwp6cz1De0pNQm9VZmZMQjYm
K15KU2A7QntUTCUyJUdyclZ7T312IT5sUiNRJXU4SSY8LV5CbHJaYF5mNFRAJX5IY0sKem84QSVg
dSUtQiNpKnJpbihBa0ReRVNaZUQ/Vz48MTMhellhZmReSSNlUXUqdXQ/MT4rbEY9YWBfa3hvMDNt
ak8zCnpMaG12ayl5S2t3WE9WQXY7R0o5VjQ7IWFve0IxaVBXKTFwWDdTeyVUZHxfb0kqQiUzI0JB
WHRrOEooXnVnbX03RQp6RHl0PX0qSmFBWmllaGMwKG5JX1BuPmJ7Z3UzbHNlPjJZbHl6UzxocCZn
VTRMdEEmfmwxQEZ5bj87JT1QSWQxRjUKejkoUWliRlBsN2AzPmA5KCF+IUFMNng8enNVQWpwMThT
ODAmJi1fJTkpSWxBclpgVzVAIVgmXlMpIT80K2ZtPyF2CnpyRF5tJGFwe09AQHU1XmROcV4rYGM+
VFRiMVlrYm9FenNYLVZLWj1qISp2eCQyITc2Mkx+IUtyIWlmUzdmPWtjTQp6NEp0cXU2R1RGdWEm
I0UtPjNDNT1CTjc7b1pTWD1iME1GQFQzRS13fXBpRHVkbXgtYVlmTipHNiFEWnFgb0lAcGQKemZz
cDVxRnU+UyElViVESG9FanxpSE9QcnhEPH1tR19UIUleVGtvUkdFPnshNGkhbjU3RnE+VHlwam12
aEQ7JFM0CnpRKm4hOWppZ0NLPUdTUGArVjs+RG9MQCYmQkcqUXpNYm5QXlZScHtCXlUrPVRpZ3w2
N1BmRW0pe0EhPyFpTUw0Iwp6ZkFyZ3xIajJ7MDwkR0s5O0xHJnhxeT1AcHVBZjlpTWQwJWp6bkBH
dGxFI09JLURjPipJfTVDMTt2WGZiKzhWM1MKejVXUmNNdnZtczItWGReQGc2WmBXMSF9V3YkVG94
SE1ZM0tZQlJDfDQ3Y09WVHc1P30lVFA4NWxXM3tLckxUfTdLCnpVSzxWSUh2Zy05RWFBPWI9VkY9
YiM9JHlQczNtNWMqZ2x1YSNUZnJwXj98RTlUMns5fGUxKCQqNFFlUFdEVW8wZAp6VXA8e3MlWURV
Kj5pVXVNLUV+X1p4MW1yVGNKY0VUe3dnaSlSc0NKQXNuWTk9T3YtMmhpZTMwOHBeKVoxUV49UzgK
ejhkeGkxYitDait2c3N7ek9taH07Y0hxfCUxLSEzT15GbihYX0RUVXBYeTJjYFdMSG8rYERSLVMq
IXIteWtBNkBJCnpKWWMrTEc+M1RJO3QpcDJfTFcmZ1FwN1VIQVFUMj1mPlJKUHlYRE1xMVJOPmtQ
OSVpTEtnYWwkMCRgP15DSDJ2Ugp6I2dXNmFNM0dTUXFRQWs5Vn0qZzIpU3RBPThgSUw5JX1tZFFJ
NzdgeFFJUlgjKzllKTxOIyR5NUF9QFJedjtPb28KenFKPl9VNGsyUTZUISZeOTMpVzRhKnt0QGFE
QSh0WlAjNztrRkkrM3lLVnFyamQjYWlUX1ZXcHBPaEg5bFZqM2p7Cno+bylKaVEwPEBJUHp8JWc0
dGZVWVJ5SWoldCsjamBtQjl2LUh7TGhXJXs9TzdLd183alg7YmlHKj56PjQpMXszUgp6b2J0Jm95
YT5UcjBUV29CNmcyWkQ0JFEhND9yY0B0UnQ0S3pkaFZec15EVDw9JV9LTmNGTlVtUE8md1lpNjlh
Kk0KeksyZz4rN2NqeX1xNCFAIzM3ZHZ3M2YwekluUWBjQiRONHNtNz17fH1ncyVZK3NAR3w1eFVm
YFNYMjZafm8/aClWCnpwNlolKnIwPXZ9ZGkkeCFtRyZhWEswI0stZWpDIW9Oay1UNjh2YCFqenxP
eEtHRyRuXmlScmNxfDZxZn4kczVCKwp6X040TFJjbjBneUhFPlFnbnoqXmwxRllaM25LNXZTITFZ
Pnk7MEEtO2teWCpMRTkzSDNZblNDTVE7KF5ebmU3aTEKenlIMmclZ2Z0NEFJIUdFPDxGVFlGaVV4
OWx5MCV7dntmaWdiazVJMSlAXkFZN09ZajMoI1BTNTcrfVN6T1dNVE1hCno+dHR8RlM+Pj9qWSFo
ITVlYGFwdnJpKEEhM0o+I0BhQysmdXIpIWdtVD47Tn5jU1Q3Jl9VUytLJXZsaihhSVNhTAp6MHVM
NDA3JV9OMWVEdmYqXmhpcVA4TiFNLVQ8K1FvbVQkfk9nPWp3ODROOzJ7WDU9c0Q/cFREWUAhMkB2
RXh2P0IKekdGYDl+VSNvZ1BNcXNsYjR9M1dCdTVHWkxWRm5TY2NyJEN9VmByTlZSO30hI3Flc1Qj
KXh1T2p3bz5RNHJ1UndNCnpxeHMlMTJ4TXZrcitKRTlOfntgQmJIJSgyNk9LS1NSKWl7dHVycyR6
dzVvLXhnUGE3QGFpJF51SXp8KX1BSEN+JQp6PE83WWhPOXJ0YSlsaTNBLX1yUnA/fWBgck87YUlO
VDxATy0pN2RIeFlkKU4/elk7WSpZKSEpKT5PMU1tK3Zua2YKd3FATSZySEZEOVZMJUVfbVZSOylj
Wn0zblFaQkNAO3MjQ1BKUHJ2QWkqdmhxUT1VI19PeUNkaVM0Z0Z8ZSo4bChqCgpkZWx0YSAzMTIy
CnpjbWJRKiZHTzxDXk09QzVZQCFjNlRedkk7JWYzbHUrfDJ1PzVFb0l4U2loZXltd3x5bnB6Wkh9
UX1HOUN0MzNydQp6bF5xJXc4WTNKVWp4MmJgQSlvLXtGZnlAbDI+ZjdUZFU4N2dOdVl6MyNlP1Ru
QTRDP1V0V2pVVlZQOWA2a15tOGcKeilLa1MyQChybStfPmVqdEJHRD1KR3o/b31vS2pEcFh2WE9q
dT5abFNobHM/MigtY3IzbDRuUmduZHoyVlBOfUNuCnozc0t9MHAjUTx5ZHE1SURGeHUqQVJqPzJs
RCluP0k8TTI1SlF2VDRieFcjWnZKdm9Jb2hBSEc1UWpiKCFrWiVoNAp6aEplZVRmbEI8cXZ8bXE/
VDl4PCtzOzZ9WVByeGFsQF5AZkxlbmBQelBqWldlZlFMeCpQZCUqVzhpPlJYRWBKOXcKeEBkTUwt
SkB1UUVCdDtPa3tHbjBubWF0Um09JDgxfEVJZFF5U0RGUSMwWEZ2O0pZREA8KTtUM0swUlRscWBl
KjxFCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmxvY2svYmFz
aWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvYmxvY2svYmFzaWMvdHJ1bmNhdGlvbi1ydGwtZXhwZWN0ZWQudHh0CmluZGV4IGEwM2I3
OTExNTlhZmVhMDY1ZjEyMWE0ZGE1OGU0ZjViMzEwYmQyNzMuLjEzM2E3ZTE3NjA3ODdiYzg1MmQz
OTZjNDgxYWZlNTE2ZTM2NTI5YWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L2Jsb2NrL2Jhc2ljL3RydW5jYXRpb24tcnRsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9ibG9jay9iYXNpYy90cnVuY2F0aW9uLXJ0bC1leHBl
Y3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAg
UmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDU4NQorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDU4NQogbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4MjIyCiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgyMjIK
ICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCwxNikgc2l6ZSA3ODR4MTk4CkBAIC0yOCwzICsy
OCw0IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDIyMgogICAgICAgICAgIHRleHQgcnVuIGF0
ICg1MSw5MSkgd2lkdGggOTUwOiAiYSwgbW9sZXN0aWUgYXQgbWkuIE51bGxhIGJsYW5kaXQsIG1p
IGV0IGV1aXNtb2QgaW1wZXJkaWV0LCBhdWd1ZSBhcmN1IG9ybmFyZSBmZWxpcywgbmVjIHZpdmVy
cmEgbGFjdXMgbGlndWxhIHV0IG1ldHVzLiBQcm9pbiB1dCBsZW8gYW50ZSwgYXQgY29uc2VjdGV0
dXIgc2VtLiIKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjE3LDEwOSkgd2lkdGggNCBSVEw6ICIu
IgogICAgICAgICAgIHRleHQgcnVuIGF0ICg2MjEsMTA5KSB3aWR0aCAzODA6ICJOdWxsYW0gbm9u
IG51bmMgbGlndWxhLiBQcm9pbiBzZWQgYW50ZSBzZW0sIGlkIHJ1dHJ1bSBwdXJ1cyIKK3Njcm9s
bGVkIHRvIDIxMCwwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9k
b20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI0MjE3YzUyYzAzYmJhMDVmZTg3YzY1MDc3YTY3MjRhN2YzYmVl
ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20v
aG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAK
K29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Ny
b2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vz
cworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogRmFpbHVyZSwgYWN0
dWFsOiAtODY2OyBleHBlY3RlZDogLTEwMDAKK3Jlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0
aW9uOiBTdWNjZXNzCit3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBv
c2l0aW9uOiBTdWNjZXNzCitLZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byBy
aWdodCBmb3IgUlRMIHBhZ2U6IDAKK0tleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24g
dG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAwCitzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6
IFN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9o
b3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGly
LWNoYW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY0YzBjY2VjZWU0NGE3YTMzMmNkNmI3
MzNmNzVkNWNiYzFkZDFkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorb3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDog
U3VjY2VzcworaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNzCitvcmln
aW5hbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBGYWlsdXJlLCBhY3R1YWw6IDMxMTA7IGV4cGVj
dGVkOiAwCitob3Jpem9udGFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbGVmdC1vdmVyZmxv
dy1pbi1sdHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9t
L2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmFjNGQxMjNi
NTk5ODk2YmViOGFjY2NmOGZjNWIwYzE2MjI5ODhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIgQEAKK3Rlc3QgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZS4KK3Nj
cm9sbDogU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
ZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9kb20vcmlnaHQtb3ZlcmZsb3ctaW4tcnRsLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMzU3OWNkZjJhODg4NzA3NWViOTcwOWJhYTk2NGI5YTI4YTA3YTgyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL3JpZ2h0LW92ZXJm
bG93LWluLXJ0bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACit0ZXN0IHJpZ2h0IG92ZXJm
bG93IGluIFJUTCBwYWdlLgorc2Nyb2xsOiBTdWNjZXNzCmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJmNjgwY2Y1MjgxMDgyMzA4NGI2YTVl
Zjg2YmUwNDdiN2I4YmMzYmQuLjU3MWZlYmY2YzFiZWY3MmFkZmMyNzZjYzBhMmQzYWE1MzUxYjE2
NDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDYgQEAKKzIwMTAtMTEtMTggIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJp
Z2h0LXRvLWxlZnQgcGFnZXMgc2hvdWxkIGJlIHNjcm9sbGFibGUgdG8gcmV2ZWFsIGxlZnQgb3Zl
cmZsb3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzU1NgorCisgICAgICAgIEZvciBSVEwgcGFnZSwgc2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdyBh
bmQgaW5jbHVkZSBpdCBpbnRvIHRoZSBkb2N1bWVudAorICAgICAgICBzaXplIGR1cmluZyBsYXlv
dXQuIFVzZSB0aGUgbGVmdCBsYXlvdXQgb3ZlcmZsb3cgd2hlbiBzY3JvbGwgYW5kIHBhaW50Cisg
ICAgICAgIHRoZSBwYWdlLiBCZWhhdmlvciBvbiBMVFIgcGFnZSBzaG91bGQgYmUgdW50b3VjaGVk
IHNpbmNlIGxlZnQgbGF5b3V0IAorICAgICAgICBvdmVyZmxvdyBpcyBzZXQgYXMgMCBmb3IgTFRS
IHBhZ2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWlu
LXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9o
b3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20v
aG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2xlZnQtb3ZlcmZsb3ctaW4tbHRyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL3JpZ2h0LW92ZXJmbG93LWluLXJ0bC5odG1sCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplKTogU2F2
ZSBuZWdhdGl2ZSBvZiBsZWZ0IGxheW91dCBvdmVyZmxvdyBhcyBzY3JvbGwgWCBvcmlnaW4uIEFu
ZCBpbmNsdWRlcyBsZWZ0IGxheW91dCBvdmVyZmxvdyBpbnRvIGRvY3VtZW50IHNpemUuCisgICAg
ICAgICogcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oOiBBZGQgbWV0aG9kcyBmb3Igc2V0dGlu
ZyBhbmQgZ2V0dGluZyBzY3JvbGwgWCBvcmlnaW4uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpTY3JvbGxWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6IE1pbnVz
IHNjcm9sbCBYIG9yaWdpbiBmcm9tIG1heGltdW0gaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjptaW5pbXVtU2Nyb2xsUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5S
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2YWx1ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luWCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRSb290
Qm94RGVjb3JhdGlvbnMpOiBJbmNsdWRlIGxlZnQgbGF5b3V0IG92ZXJmbG93IGludG8gY2FudmFz
IHNpemUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlldzo6bGF5b3V0KTogU2F2ZSBsZWZ0IGxheW91dCBvdmVyZmxvdy4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVmlldzo6ZG9jV2lkdGgpOiBJbmNsdWRlIGxlZnQgbGF5b3V0IG92ZXJmbG93IGludG8g
ZG9jIHdpZHRoIGZvciBSVEwgcGFnZS4KKwogMjAxMC0xMS0yNiAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRt
YW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCmluZGV4IDc3MDIyNWJiYjI0ZmZiODEwYzU2NTk1Y2NlM2EyZjljY2Fj
OTk5MzcuLjA2N2E4ZThkNDEzYTE5MjljNDRkYzdiYzgxY2E5NDIwMjIwMDQyNTggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC00MzUsNyArNDM1LDE2IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RWaWV3U2l6
ZSgpCiAgICAgaWYgKCFyb290KQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRDb250ZW50c1Np
emUoSW50U2l6ZShyb290LT5yaWdodExheW91dE92ZXJmbG93KCksIHJvb3QtPmJvdHRvbUxheW91
dE92ZXJmbG93KCkpKTsKKyAgICBpbnQgcHJldlNjcm9sbE9yaWdpblggPSBzY3JvbGxPcmlnaW5Y
KCk7CisgICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsT3JpZ2luWCgtcm9vdC0+bGVmdExheW91dE92
ZXJmbG93KCkpOworICAgIEludFNpemUgc2l6ZSA9IEludFNpemUocm9vdC0+cmlnaHRMYXlvdXRP
dmVyZmxvdygpIC0gcm9vdC0+bGVmdExheW91dE92ZXJmbG93KCksIHJvb3QtPmJvdHRvbUxheW91
dE92ZXJmbG93KCkpOworICAgIC8vIFRha2UgY2FyZSBvZiB0aGUgY2FzZSB3aGVuIGNvbnRlbnRz
IHJlbWFpbiBidXQgdGhlIFJlbmRlclZpZXcncyBkaXJlY3Rpb24gaGFzIGNoYW5nZWQuCisgICAg
Ly8gSW4gd2hpY2ggY2FzZSwgd2UgbmVlZCB0byB1cGRhdGUgc2Nyb2xsZXIgcG9zaXRpb24sIGZv
ciBleGFtcGxlLCBmcm9tIGxlZnRtb3N0IHRvCisgICAgLy8gcmlnaHRtb3N0IHdoZW4gZGlyZWN0
aW9uIGNoYW5nZXMgZnJvbSBsZWZ0LXRvLXJpZ2h0IHRvIHJpZ2h0LXRvLWxlZnQuCisgICAgYm9v
bCBkaXJlY3Rpb25DaGFuZ2VkID0gKCFwcmV2U2Nyb2xsT3JpZ2luWCB8fCAhc2Nyb2xsT3JpZ2lu
WCgpKSAmJiAoc2Nyb2xsT3JpZ2luWCgpICE9IHByZXZTY3JvbGxPcmlnaW5YKTsKKyAgICBpZiAo
c2l6ZSA9PSBjb250ZW50c1NpemUoKSAmJiBkaXJlY3Rpb25DaGFuZ2VkKQorICAgICAgICBTY3Jv
bGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKCk7CisgICAgc2V0Q29udGVudHNTaXplKHNpemUpOwog
fQogCiB2b2lkIEZyYW1lVmlldzo6YXBwbHlPdmVyZmxvd1RvVmlld3BvcnQoUmVuZGVyT2JqZWN0
KiBvLCBTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaCBiL1dlYkNvcmUvcGFnZS9t
YWMvV2ViQ29yZUZyYW1lVmlldy5oCmluZGV4IDk3N2IxYTcxM2MwNTZkZTU1ZDU0MTAzNDQ1Nzcw
YzVlNmM0OTQyMTAuLjhiMjUxMDIwMGMyMmZmMTU1ODM0NTdiYTUyZGE3OTg2MzFiMDBjMzIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oCisrKyBiL1dlYkNv
cmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oCkBAIC0zMyw2ICszMyw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC0gKHZvaWQpc2V0U2Nyb2xsaW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9sbGJh
ck1vZGUpaE1vZGUgdmVydGljYWw6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUpdk1vZGUgYW5kTG9j
azooQk9PTClsb2NrOwogLSAodm9pZClzY3JvbGxpbmdNb2RlczooV2ViQ29yZTo6U2Nyb2xsYmFy
TW9kZSopaE1vZGUgdmVydGljYWw6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUqKXZNb2RlOwogLSAo
dm9pZClzZXRTY3JvbGxCYXJzU3VwcHJlc3NlZDooQk9PTClzdXBwcmVzc2VkIHJlcGFpbnRPblVu
c3VwcHJlc3M6KEJPT0wpcmVwYWludDsKKy0gKHZvaWQpc2V0U2Nyb2xsT3JpZ2luWDooaW50KXNj
cm9sbE9yaWdpblg7CistIChpbnQpc2Nyb2xsT3JpZ2luWDsKIEBlbmQKIAogQHByb3RvY29sIFdl
YkNvcmVGcmFtZVZpZXcKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IDVmZTNiZWU5OWQwMjIz
YmFmZmU1M2EzNjZmMzEyZTljY2IzNGM5MGQuLmRlZmQ4ZDM3ODg5NDA5MGQ1NmE4OTcxMTM2Zjc0
MzViZTkzMzBlMTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNTQsNiArNTQsNyBAQCBT
Y3JvbGxWaWV3OjpTY3JvbGxWaWV3KCkKICAgICAsIG1fdXNlRml4ZWRMYXlvdXQoZmFsc2UpCiAg
ICAgLCBtX3BhaW50c0VudGlyZUNvbnRlbnRzKGZhbHNlKQogICAgICwgbV9kZWxlZ2F0ZXNTY3Jv
bGxpbmcoZmFsc2UpCisgICAgLCBtX3Njcm9sbE9yaWdpblgoMCkKIHsKICAgICBwbGF0Zm9ybUlu
aXQoKTsKIH0KQEAgLTI3OCw5ICsyNzksMjIgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRDb250ZW50
c1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogSW50UG9pbnQgU2Nyb2xsVmlldzo6bWF4
aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsKLSAgICBJbnRTaXplIG1heGltdW1PZmZzZXQg
PSBjb250ZW50c1NpemUoKSAtIHZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKTsKKyAgICBJbnRQ
b2ludCBtYXhpbXVtT2Zmc2V0KGNvbnRlbnRzV2lkdGgoKSAtIHZpc2libGVXaWR0aCgpIC0gbV9z
Y3JvbGxPcmlnaW5YLCBjb250ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpKTsKICAgICBt
YXhpbXVtT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAgICByZXR1cm4gSW50UG9pbnQo
bWF4aW11bU9mZnNldC53aWR0aCgpLCBtYXhpbXVtT2Zmc2V0LmhlaWdodCgpKTsKKyAgICByZXR1
cm4gbWF4aW11bU9mZnNldDsKK30KKworSW50UG9pbnQgU2Nyb2xsVmlldzo6bWluaW11bVNjcm9s
bFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW50UG9pbnQoLW1fc2Nyb2xsT3JpZ2lu
WCwgMCk7Cit9CisKK0ludFBvaW50IFNjcm9sbFZpZXc6OmFkanVzdFNjcm9sbFBvc2l0aW9uV2l0
aGluUmFuZ2UoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KSBjb25zdAoreworICAgIEludFBv
aW50IG5ld1Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9pbnQuc2hydW5rVG8obWF4aW11bVNjcm9s
bFBvc2l0aW9uKCkpOworICAgIG5ld1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24u
ZXhwYW5kZWRUbyhtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSk7CisgICAgbmV3U2Nyb2xsUG9zaXRp
b24uY2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIHJldHVybiBuZXdTY3JvbGxQb3NpdGlvbjsK
IH0KIAogaW50IFNjcm9sbFZpZXc6OnNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pIGNvbnN0CkBAIC0zMDMsNyArMzE3LDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp2YWx1
ZUNoYW5nZWQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgSW50U2l6ZSBuZXdPZmZzZXQgPSBt
X3Njcm9sbE9mZnNldDsKICAgICBpZiAoc2Nyb2xsYmFyKSB7CiAgICAgICAgIGlmIChzY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAgICAgIG5l
d09mZnNldC5zZXRXaWR0aChzY3JvbGxiYXItPnZhbHVlKCkpOworICAgICAgICAgICAgbmV3T2Zm
c2V0LnNldFdpZHRoKHNjcm9sbGJhci0+dmFsdWUoKSAtIG1fc2Nyb2xsT3JpZ2luWCk7CiAgICAg
ICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJh
cikKICAgICAgICAgICAgIG5ld09mZnNldC5zZXRIZWlnaHQoc2Nyb2xsYmFyLT52YWx1ZSgpKTsK
ICAgICB9CkBAIC0zNDgsOCArMzYyLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3Np
dGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiAgICAgfQogI2VuZGlmCiAKLSAgICBJ
bnRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvaW50LnNocnVua1RvKG1heGltdW1T
Y3JvbGxQb3NpdGlvbigpKTsKLSAgICBuZXdTY3JvbGxQb3NpdGlvbi5jbGFtcE5lZ2F0aXZlVG9a
ZXJvKCk7CisgICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBhZGp1c3RTY3JvbGxQb3Np
dGlvbldpdGhpblJhbmdlKHNjcm9sbFBvaW50KTsKIAogICAgIGlmIChuZXdTY3JvbGxQb3NpdGlv
biA9PSBzY3JvbGxQb3NpdGlvbigpKQogICAgICAgICByZXR1cm47CkBAIC00NzAsMTAgKzQ4Mywx
MCBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgSW50U2l6ZSYgZGVz
aXJlZE9mZnNldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pblVwZGF0ZVNjcm9sbGJhcnMg
PSB0cnVlOwotICAgIEludFNpemUgbWF4U2Nyb2xsUG9zaXRpb24oY29udGVudHNXaWR0aCgpIC0g
dmlzaWJsZVdpZHRoKCksIGNvbnRlbnRzSGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkpOwotICAg
IEludFNpemUgc2Nyb2xsID0gZGVzaXJlZE9mZnNldC5zaHJ1bmtUbyhtYXhTY3JvbGxQb3NpdGlv
bik7Ci0gICAgc2Nyb2xsLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAKKworICAgIEludFBvaW50
IHNjcm9sbFBvaW50ID0gYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShJbnRQb2ludChk
ZXNpcmVkT2Zmc2V0LndpZHRoKCksIGRlc2lyZWRPZmZzZXQuaGVpZ2h0KCkpKTsKKyAgICBJbnRT
aXplIHNjcm9sbChzY3JvbGxQb2ludC54KCksIHNjcm9sbFBvaW50LnkoKSk7CisKICAgICBpZiAo
bV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IHZpc2li
bGVXaWR0aCgpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29u
dGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOwpAQCAtNDkxLDcgKzUwNCw3IEBAIHZvaWQgU2Ny
b2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBJbnRTaXplJiBkZXNpcmVkT2Zmc2V0KQog
ICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlv
bih0cnVlKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdGVwcyhTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKICAgICAgICAgbV9ob3Jpem9udGFs
U2Nyb2xsYmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdpZHRoLCBjb250ZW50c1dpZHRoKCkpOwot
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFZhbHVlKHNjcm9sbC53aWR0aCgpLCBT
Y3JvbGxiYXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CisgICAgICAgIG1faG9yaXpvbnRhbFNj
cm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRoKCkgKyBtX3Njcm9sbE9yaWdpblgsIFNjcm9s
bGJhcjo6Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsKICAgICAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1
cHByZXNzZWQpCiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNz
SW52YWxpZGF0aW9uKGZhbHNlKTsgCiAgICAgfSAKQEAgLTEwMTUsNiArMTAyOCwyMSBAQCB2b2lk
IFNjcm9sbFZpZXc6OnJlbW92ZVBhblNjcm9sbEljb24oKQogICAgIGhvc3RXaW5kb3coKS0+aW52
YWxpZGF0ZUNvbnRlbnRzQW5kV2luZG93KEludFJlY3QobV9wYW5TY3JvbGxJY29uUG9pbnQsIElu
dFNpemUocGFuSWNvblNpemVMZW5ndGgsIHBhbkljb25TaXplTGVuZ3RoKSksIHRydWUgLyppbW1l
ZGlhdGUqLyk7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsT3JpZ2luWChpbnQgeCkK
K3sKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1TZXRTY3JvbGxP
cmlnaW5YKHgpOworCisgICAgbV9zY3JvbGxPcmlnaW5YID0geDsKK30KKwordm9pZCBTY3JvbGxW
aWV3Ojp1cGRhdGVTY3JvbGxiYXJzKCkKK3sKKyAgICBpZiAoIXBsYXRmb3JtV2lkZ2V0KCkpCisg
ICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoc2Nyb2xsT2Zmc2V0KCkpOworICAgIC8vIEZJWE1FOiBu
ZWVkIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25hbGl0eSBmcm9tIHBsYXRmb3JtV2lkZ2V0LgorfQor
CiAjaWYgIVBMQVRGT1JNKFdYKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oRUZMKQog
CiB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtSW5pdCgpCkBAIC0xMDQ1LDYgKzEwNzMsMTAgQEAg
dm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdXBwcmVzc2VkKGJvb2wpCiB7
CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCkKK3sK
K30KKwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oV1gpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oCmluZGV4IDRkZWE1NmY1YTYxM2RhNDhjM2FhYTEzNTJlNjYzOGY2MmRlNGVh
OGUuLmQ0ZGYyY2MxZTRjNjk3ZjhkYzBjOGJjZTI3ZTIxMmEzZWQwMmE3ZDUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCkBAIC0xNjAsNiArMTYwLDkgQEAgcHVibGljOgogICAgIEludFBvaW50IHNjcm9s
bFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24o
KTsgfQogICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNv
bnRlbnRSZWN0KCkubG9jYXRpb24oKSAtIEludFBvaW50KCk7IH0gLy8gR2V0cyB0aGUgc2Nyb2xs
ZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6ZS4gQ29udmVuaWVudCBmb3IgYWRkaW5nIHRvIG90aGVy
IHNpemVzLgogICAgIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OyAvLyBU
aGUgbWF4aW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCisgICAgSW50UG9pbnQg
bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7IC8vIFRoZSBtaW5pbXVtIHBvc2l0aW9uIHdl
IGNhbiBiZSBzY3JvbGxlZCB0by4KKyAgICAvLyBBZGp1c3QgdGhlIHBhc3MgaW4gc2Nyb2xsIHBv
c2l0aW9uIHdpdGhpbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBwb3NpdGlvbnMuCisgICAgSW50
UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShjb25zdCBJbnRQb2ludCYpIGNv
bnN0OyAKICAgICBpbnQgc2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCku
eCgpOyB9CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVybiBzY3JvbGxQb3NpdGlvbigp
LnkoKTsgfQogICAgIApAQCAtMjc5LDYgKzI4MiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gU2Ny
b2xsIHRoZSBjb250ZW50IGJ5IGludmFsaWRhdGluZyBldmVyeXRoaW5nLgogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpOwog
CisgICAgdm9pZCBzZXRTY3JvbGxPcmlnaW5YKGludCk7CisgICAgaW50IHNjcm9sbE9yaWdpblgo
KSB7IHJldHVybiBtX3Njcm9sbE9yaWdpblg7IH0KKyAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnMo
KTsKKwogcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3JvbGxi
YXI7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKQEAgLTMxNCw2
ICszMjEsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGFpbnRzRW50aXJlQ29udGVudHM7CiAg
ICAgYm9vbCBtX2RlbGVnYXRlc1Njcm9sbGluZzsKIAorICAgIC8vIG1fc2Nyb2xsT3JpZ2luWCBp
cyAwIGZvciBMVFIgcGFnZS4gQW5kIGl0IGlzIG5lZ2F0aXZlIG9mIGxlZnQgbGF5b3V0CisgICAg
Ly8gb3ZlcmZsb3cgZm9yIFJUTCBwYWdlLiBJdCBpcyBtYWlubHkgdXNlZCB0byBzZXQgdGhlIGhv
cml6b250YWwgc2Nyb2xsYmFyCisgICAgLy8gcG9zaXRpb24gZm9yIFJUTCBwYWdlLgorICAgIGlu
dCBtX3Njcm9sbE9yaWdpblg7CisKICAgICB2b2lkIGluaXQoKTsKICAgICB2b2lkIGRlc3Ryb3ko
KTsKIApAQCAtMzQxLDYgKzM1Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldFNj
cm9sbGJhcnNTdXBwcmVzc2VkKGJvb2wgcmVwYWludE9uVW5zdXBwcmVzcyk7CiAgICAgdm9pZCBw
bGF0Zm9ybVJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmLCBib29sIG5vdyk7
CiAgICAgYm9vbCBwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgY29uc3Q7CisgICAKKyAgICB2b2lkIHBs
YXRmb3JtU2V0U2Nyb2xsT3JpZ2luWChpbnQpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZp
bmVkIF9fT0JKQ19fCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxWaWV3TWFjLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQpp
bmRleCA3ZWY1ZGM0MzZmZjc2OTkwZWYwYjM5NTM2YmZhZTJjNjJiNmMyNjRjLi43ZTQxNWRhZTQ1
MWYxMzk4ZjQ3Mjc0NTliYmUwYjU0N2UwNzE2MDM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bFZpZXdNYWMubW0KQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3Jt
U2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoYm9vbCByZXBhaW50T25VbnN1cHByZXNzKQogdm9pZCBT
Y3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3Jv
bGxQb2ludCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgTlNQb2lu
dCB0ZW1wUG9pbnQgPSB7IG1heCgwLCBzY3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9p
bnQueSgpKSB9OyAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMx
NC4KKyAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgbWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9y
aWdpblhdLCBzY3JvbGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSB9OyAgLy8g
RG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCiAgICAgW2RvY3Vt
ZW50VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKIH0KQEAgLTIwMiw0ICsyMDIsMTEgQEAgYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9y
bUlzT2Zmc2NyZWVuKCkgY29uc3QKICAgICByZXR1cm4gIVtwbGF0Zm9ybVdpZGdldCgpIHdpbmRv
d10gfHwgIVtbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIGlzVmlzaWJsZV07CiB9CiAKK3ZvaWQg
U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW5YKGludCB4KQoreworICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBbc2Nyb2xsVmlldygpIHNldFNjcm9sbE9yaWdp
blg6eF07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggOWJiNzc2NTc5YzU2ZDRkNWRm
ZTA3MTU2ODU2ZTQwN2I5MWJlYzAyZS4uNDhkMzI0N2MxMjM2MGFmZjk0MGM1OWQzOWZhNDE0ZDU5
Y2NlOGZkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03NjcsNyArNzY3LDcgQEAgdm9p
ZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBpbnQgdHgsIGludCB0eSkKICAgICAvLyBDU1MyIDE0LjI6CiAgICAgLy8gVGhlIGJhY2tncm91
bmQgb2YgdGhlIGJveCBnZW5lcmF0ZWQgYnkgdGhlIHJvb3QgZWxlbWVudCBjb3ZlcnMgdGhlIGVu
dGlyZSBjYW52YXMgaW5jbHVkaW5nCiAgICAgLy8gaXRzIG1hcmdpbnMuCi0gICAgaW50IGJ4ID0g
dHggLSBtYXJnaW5MZWZ0KCk7CisgICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0KCkgKyB2aWV3
KCktPmxlZnRMYXlvdXRPdmVyZmxvdygpOwogICAgIGludCBieSA9IHR5IC0gbWFyZ2luVG9wKCk7
CiAgICAgaW50IGJ3ID0gbWF4KHcgKyBtYXJnaW5MZWZ0KCkgKyBtYXJnaW5SaWdodCgpICsgYm9y
ZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKSwgcncpOwogICAgIGludCBiaCA9IG1heChoICsgbWFy
Z2luVG9wKCkgKyBtYXJnaW5Cb3R0b20oKSArIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCks
IHJoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggNmI0YjY1Y2JmOTA3ZTNlZDc4Yjlj
YjM5MjEyYTJlNWQxZTAyZTRjNC4uOTNkMjE5NjgxM2NjODA5MWIyYWUzMGMxNDQ4ZWU4NDY5NTBl
YzVkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTEzMSw3ICsxMzEsOCBAQCB2b2lk
IFJlbmRlclZpZXc6OmxheW91dCgpCiAKICAgICAvLyBSZXNldCBvdmVyZmxvdyBhbmQgdGhlbiBy
ZXBsYWNlIGl0IHdpdGggZG9jV2lkdGggYW5kIGRvY0hlaWdodC4KICAgICBtX292ZXJmbG93LmNs
ZWFyKCk7Ci0gICAgYWRkTGF5b3V0T3ZlcmZsb3coSW50UmVjdCgwLCAwLCBkb2NXaWR0aCgpLCBk
b2NIZWlnaHQoKSkpOworICAgIGludCBsZWZ0T3ZlcmZsb3cgPSBkb2NMZWZ0KCk7CisgICAgYWRk
TGF5b3V0T3ZlcmZsb3coSW50UmVjdChsZWZ0T3ZlcmZsb3csIDAsIGRvY1dpZHRoKGxlZnRPdmVy
ZmxvdyksIGRvY0hlaWdodCgpKSk7CiAKICAgICBBU1NFUlQobGF5b3V0RGVsdGEoKSA9PSBJbnRT
aXplKCkpOwogICAgIEFTU0VSVChtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50ID09IDApOwpAQCAt
NjMzLDkgKzYzNCwxNSBAQCBpbnQgUmVuZGVyVmlldzo6ZG9jSGVpZ2h0KCkgY29uc3QKICAgICBy
ZXR1cm4gaDsKIH0KIAotaW50IFJlbmRlclZpZXc6OmRvY1dpZHRoKCkgY29uc3QKK2ludCBSZW5k
ZXJWaWV3Ojpkb2NMZWZ0KCkgY29uc3QKIHsKLSAgICBpbnQgdyA9IHJpZ2h0bW9zdFBvc2l0aW9u
KCk7CisgICAgLy8gQ2xpcCBvdXQgbGVmdCBvdmVyZmxvdyBpbiBMVFIgcGFnZS4KKyAgICByZXR1
cm4gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gMCA6IHN0ZDo6bWluKDAsIGxl
ZnRtb3N0UG9zaXRpb24oKSk7Cit9CisKK2ludCBSZW5kZXJWaWV3Ojpkb2NXaWR0aChpbnQgbGVm
dE92ZXJmbG93KSBjb25zdAoreworICAgIGludCB3ID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpID8gcmlnaHRtb3N0UG9zaXRpb24oKSA6IHdpZHRoKCkgLSBsZWZ0T3ZlcmZsb3c7
CiAKICAgICBmb3IgKFJlbmRlckJveCogYyA9IGZpcnN0Q2hpbGRCb3goKTsgYzsgYyA9IGMtPm5l
eHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaW50IGR3ID0gYy0+d2lkdGgoKSArIGMtPm1hcmdp
bkxlZnQoKSArIGMtPm1hcmdpblJpZ2h0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggMDdm
OTMzZmQ2OGQyZmEzNGZlZTRmMmI3NWMyM2QxZDcyOTQ4MGVjYi4uNDFhMDUwNmQ0MWNkMTZlY2Rj
ZjMwMTI2ZTYyMzk1ODgyMGRkN2ZhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMTc0LDcg
KzE3NCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRSZXBhaW50KGNvbnN0IEludFJlY3Qm
IHIpIGNvbnN0OwogICAgICAgICAKICAgICBpbnQgZG9jSGVpZ2h0KCkgY29uc3Q7Ci0gICAgaW50
IGRvY1dpZHRoKCkgY29uc3Q7CisgICAgaW50IGRvY0xlZnQoKSBjb25zdDsKKyAgICBpbnQgZG9j
V2lkdGgoaW50IGxlZnRPdmVyZmxvdykgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMg
bWF5IG9ubHkgYmUgYWNjZXNzZWQgYnkgTGF5b3V0U3RhdGVNYWludGFpbmVyLgogICAgIGJvb2wg
cHVzaExheW91dFN0YXRlKFJlbmRlckJveCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIG9mZnNl
dCwgaW50IHBhZ2VIZWlnaHQgPSAwLCBib29sIHBhZ2VIZWlnaHRDaGFuZ2VkID0gZmFsc2UsIENv
bHVtbkluZm8qIGNvbEluZm8gPSAwKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1YjlhYjkyYzRjMWJhMGYwMGFkMTNlNWNlMmNl
MjE2N2RhZWI4MWQ0Li5lYTI1ZmM5Y2MxZDYyNGZiZjNhMGVkZDkxZGQzMWE2NDMwZDNkNmU4IDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI4IEBACisyMDEwLTExLTE4ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
aWdodC10by1sZWZ0IHBhZ2VzIHNob3VsZCBiZSBzY3JvbGxhYmxlIHRvIHJldmVhbCBsZWZ0IG92
ZXJmbG93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM1NTYKKworICAgICAgICBTZXQgYW5kIGdldCB0aGUgb3JpZ2luYWwgeC1heGlzIHNjcm9sbCBw
b3NpdGlvbiBhbmQgcmVzZXQgc2Nyb2xsIHBvc2l0aW9uIG9uIEhPTUUvRU5EIGtleSBwcmVzcy4K
KyAgICAgICAgTW9kaWZ5IFdlYkZyYW1lVmlldyB0byBzdXBwb3J0IHNldHRpbmcgdGhlIGluaXRp
YWwgaG9yaXpvbnRhbCBzY3JvbGxlcidzIHRodW1iIHBvc2l0aW9uIHRvIHRoZSByaWdodCBmb3IK
KyAgICAgICAgcGFnZXMgd2l0aCBhIGxlZnQgb3ZlcmZsb3cuCisKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViRHluYW1p
Y1Njcm9sbEJhcnNWaWV3Lm1tOgorICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcg
aW5Qcm9ncmFtYXRpY1Njcm9sbF0pOgorICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcgcmVmcmVzaEluaXRpYWxTY3JvbGxiYXJQb3NpdGlvbl0pOgorICAgICAgICAoLVtXZWJEeW5h
bWljU2Nyb2xsQmFyc1ZpZXcgdXBkYXRlU2Nyb2xsZXJzXSk6CisgICAgICAgICgtW1dlYkR5bmFt
aWNTY3JvbGxCYXJzVmlldyByZWZsZWN0U2Nyb2xsZWRDbGlwVmlldzpdKToKKyAgICAgICAgKC1b
V2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNldFNjcm9sbE9yaWdpblg6XSk6CisgICAgICAgICgt
W1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBzY3JvbGxPcmlnaW5YXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9C
ZWdpbm5pbmdPZkRvY3VtZW50XSk6CisgICAgICAgICgtW1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9F
bmRPZkRvY3VtZW50XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkXSk6CisKIDIwMTAtMTEtMjIg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
VG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Ny
b2xsQmFyc1ZpZXcuaCBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcuaAppbmRleCBjMjg5YTA0MTQxNWY1OTFkZmVmNjQ1M2RjZjUxOTBhZmM3ODg4NDM4Li5iODk0
NjJkYzg3YTk3NzY0YTY5MTliOGE3N2E0ZTQ2ZDczYzBiMmVmIDEwMDY0NAotLS0gYS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3LmgKKysrIGIvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5oCkBAIC01OCw0ICs1OCwxMCBAQCBzdHJ1
Y3QgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3UHJpdmF0ZTsKIC8vIHZpc2libGUgaXMgdGhhdCB0
aGV5IGhhdmUgYmVlbiBzdXBwcmVzc2VkIGJ5IHNldEFsd2F5c0hpZGVIb3Jpem9udGFsL1ZlcnRp
Y2FsU2Nyb2xsZXI6LgogLSAoQk9PTClob3Jpem9udGFsU2Nyb2xsaW5nQWxsb3dlZDsKIC0gKEJP
T0wpdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkOworCisvLyBSZXR1cm5zIFlFUyBpZiB3ZSdyZSBj
dXJyZW50bHkgaW4gdGhlIG1pZGRsZSBvZiBwcm9ncmFtbWF0aWNhbGx5IG1vdmluZyB0aGUKKy8v
IHNjcm9sbGJhci4KKy8vIE5PVEU6IEFzIG9wcG9zZWQgdG8gb3RoZXIgcGxhY2VzIGluIHRoZSBj
b2RlLCBwcm9ncmFtbWF0aWNhbGx5IG1vdmluZyB0aGUKKy8vIHNjcm9sbGVycyBmcm9tIGluc2lk
ZSB0aGlzIGNsYXNzIHNob3VsZCBub3QgZmlyZSBKUyBldmVudHMuCistIChCT09MKWluUHJvZ3Jh
bWF0aWNTY3JvbGw7CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3Lm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3Jv
bGxCYXJzVmlldy5tbQppbmRleCA3NDQzOWRkNmNiOTlmODg4MWU4YmM4YTk2MDI4YmE4MDEwZTJj
M2IyLi40ODBkMTQ2MzBkYWE0MjdiYmM5OTU1ZWQ1MTZmNDZlMWEyYTFiMmQ2IDEwMDY0NAotLS0g
YS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCisrKyBiL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0KQEAgLTYyLDYgKzYy
LDE1IEBAIHN0cnVjdCBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdQcml2YXRlIHsKICAgICBib29s
IGFsd2F5c0hpZGVWZXJ0aWNhbFNjcm9sbGVyOwogICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGlu
Z0FsbG93ZWRCdXRTY3JvbGxlckhpZGRlbjsKICAgICBib29sIHZlcnRpY2FsU2Nyb2xsaW5nQWxs
b3dlZEJ1dFNjcm9sbGVySGlkZGVuOworCisgICAgLy8gc2Nyb2xsT3JpZ2luWCBpcyAwIGZvciBM
VFIgcGFnZSBhbmQgaXMgdGhlIG5lZ2F0aXZlIG9mIGxlZnQgbGF5b3V0IG92ZXJmbG93IHZhbHVl
IGZvciBSVEwgcGFnZS4KKyAgICBpbnQgc2Nyb2xsT3JpZ2luWDsKKworICAgIC8vIEZsYWcgdG8g
aW5kaWNhdGUgdGhhdCB0aGUgc2Nyb2xsYmFyIHRodW1iJ3MgaW5pdGlhbCBwb3NpdGlvbiBuZWVk
cyB0bworICAgIC8vIGJlIG1hbnVhbGx5IHNldC4KKyAgICBib29sIHNldFNjcm9sbGJhclRodW1i
SW5pdGlhbFBvc2l0aW9uOworCisgICAgYm9vbCBpblByb2dyYW1tYXRpY1Njcm9sbDsKIH07CiAK
IEBpbXBsZW1lbnRhdGlvbiBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcKQEAgLTE0OSw2ICsxNTgs
MTEgQEAgc3RydWN0IFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld1ByaXZhdGUgewogICAgIHJldHVy
biBfcHJpdmF0ZS0+dmVydGljYWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRkZW4gfHwg
W3NlbGYgaGFzVmVydGljYWxTY3JvbGxlcl07CiB9CiAKKy0gKEJPT0wpaW5Qcm9ncmFtYXRpY1Nj
cm9sbAoreworICAgIHJldHVybiBfcHJpdmF0ZS0+aW5Qcm9ncmFtbWF0aWNTY3JvbGw7Cit9CisK
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAoV2ViSW50
ZXJuYWwpCkBAIC0yMDEsNiArMjE1LDI5IEBAIHN0cnVjdCBXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXdQcml2YXRlIHsKICNlbmRpZgogfQogCistICh2b2lkKXJlZnJlc2hJbml0aWFsU2Nyb2xsYmFy
UG9zaXRpb24KK3sKKyAgICBpZiAoX3ByaXZhdGUtPnNldFNjcm9sbGJhclRodW1iSW5pdGlhbFBv
c2l0aW9uKSB7CisgICAgICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gW3NlbGYgZG9jdW1lbnRW
aWV3XTsKKyAgICAgICAgTlNSZWN0IGRvY3VtZW50UmVjdCA9IFtkb2N1bWVudFZpZXcgYm91bmRz
XTsKKworICAgICAgICAvLyBJZiBzY3JvbGxPcmlnaW5YIGlzIG5vbi16ZXJvIHRoYXQgbWVhbnMg
dGhhdCB0aGVyZSdzIGEgbGVmdCBvdmVyZmxvdyA8PT4gdGhpcyBpcyBhbiBSVEwgZG9jdW1lbnQg
YW5kIHRodXMKKyAgICAgICAgLy8gdGhlIGluaXRpYWwgcG9zaXRpb24gb2YgdGhlIGhvcml6b250
YWwgc2Nyb2xsYmFyIHRodW1iIHNob3VsZCBiZSBvbiB0aGUgcmlnaHQuCisgICAgICAgIC8vIEZJ
WE1FOiBJZiBrbm93bGVkZ2Ugb2YgZG9jdW1lbnQgZGlyZWN0aW9uYWxpdHkgaXMgZXZlciBwcm9w
YWdhdGVkIHRvIHRoZSBzY3JvbGwgdmlldywgaXQgcHJvYmFibHkgbWFrZXMKKyAgICAgICAgLy8g
bW9yZSBzZW5zZSB0byB1c2UgdGhlIGRpcmVjdGlvbmFsaXR5IGRpcmVjdGx5IGluIHRoZSBiZWxv
dyBpZiBzdGF0ZW1lbnQsIHJhdGhlciB0aGFuIGRvaW5nIHNvIGluZGlyZWN0bHkKKyAgICAgICAg
Ly8gdGhyb3VnaCBzY3JvbGxPcmlnaW5YLgorICAgICAgICBpZiAoX3ByaXZhdGUtPnNjcm9sbE9y
aWdpblggIT0gMCkgeworICAgICAgICAgICAgLy8gVGhlIGNhbGwgdG8gW05TVmlldyBzY3JvbGxQ
b2ludDpdIGZpcmVzIG9mZiBub3RpZmljYXRpb24gdGhlIGhhbmRsZXIgZm9yIHdoaWNoIG5lZWRz
IHRvIGtub3cgdGhhdAorICAgICAgICAgICAgLy8gd2UncmUgc2V0dGluZyB0aGUgaW5pdGlhbCBz
Y3JvbGwgcG9zaXRpb24gc28gaXQgZG9lc24ndCBpbnRlcnByZXQgdGhpcyBhcyBhIHVzZXIgYWN0
aW9uIGFuZAorICAgICAgICAgICAgLy8gZmlyZSBvZmYgYSBKUyBldmVudC4KKyAgICAgICAgICAg
IF9wcml2YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IHRydWU7CisgICAgICAgICAgICBbZG9j
dW1lbnRWaWV3IHNjcm9sbFBvaW50Ok5TTWFrZVBvaW50KE5TTWF4WChkb2N1bWVudFJlY3QpIC0g
TlNXaWR0aChbc2VsZiBjb250ZW50Vmlld0ZyYW1lXSksIDApXTsKKyAgICAgICAgICAgIF9wcml2
YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIF9w
cml2YXRlLT5zZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlvbiA9IGZhbHNlOworICAgIH0K
K30KKwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNNYXhVcGRhdGVTY3JvbGxiYXJzUGFzcyA9IDI7
CiAKIC0gKHZvaWQpdXBkYXRlU2Nyb2xsZXJzCkBAIC0zMDIsNiArMzM5LDEyIEBAIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBjTWF4VXBkYXRlU2Nyb2xsYmFyc1Bhc3MgPSAyOwogICAgIGlmIChoYXNI
b3Jpem9udGFsU2Nyb2xsZXIgIT0gbmV3SGFzSG9yaXpvbnRhbFNjcm9sbGVyKSB7CiAgICAgICAg
IF9wcml2YXRlLT5pblVwZGF0ZVNjcm9sbGVycyA9IFlFUzsKICAgICAgICAgW3NlbGYgc2V0SGFz
SG9yaXpvbnRhbFNjcm9sbGVyOm5ld0hhc0hvcml6b250YWxTY3JvbGxlcl07CisgICAgICAgIAor
ICAgICAgICAvLyBGb3IgUlRMIGRvY3VtZW50cywgd2UgbmVlZCB0byBzZXQgdGhlIGluaXRpYWwg
cG9zaXRpb24gb2YgdGhlCisgICAgICAgIC8vIGhvcml6b250YWwgc2Nyb2xsYmFyIHRodW1iIHRv
IGJlIG9uIHRoZSByaWdodC4KKyAgICAgICAgaWYgKG5ld0hhc0hvcml6b250YWxTY3JvbGxlcikK
KyAgICAgICAgICAgIF9wcml2YXRlLT5zZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlvbiA9
IHRydWU7CisgICAgICAgIAogICAgICAgICBfcHJpdmF0ZS0+aW5VcGRhdGVTY3JvbGxlcnMgPSBO
TzsKICAgICAgICAgbmVlZHNMYXlvdXQgPSBZRVM7CiAgICAgfQpAQCAtMzY0LDYgKzQwNywxMSBA
QCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY01heFVwZGF0ZVNjcm9sbGJhcnNQYXNzID0gMjsKICAg
ICB9CiAjZW5kaWYKIAorICAgIC8vIFRoZSBjYWxsIHRvIFtOU1ZpZXcgcmVmbGVjdFNjcm9sbGVk
Q2xpcFZpZXddIHNldHMgdGhlIHNjcm9sbGJhciB0aHVtYgorICAgIC8vIHBvc2l0aW9uIHRvIDAg
KHRoZSBsZWZ0KSB3aGVuIHRoZSB2aWV3IGlzIGluaXRpYWxseSBkaXNwbGF5ZWQuCisgICAgLy8g
VGhpcyBjYWxsIHVwZGF0ZXMgdGhlIGluaXRpYWwgcG9zaXRpb24gY29ycmVjdGx5LgorICAgIFtz
ZWxmIHJlZnJlc2hJbml0aWFsU2Nyb2xsYmFyUG9zaXRpb25dOworCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKSAmJiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNW
aWV3ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBkb2N1bWVudFZpZXddOwogICAgIGlmIChbZG9jdW1l
bnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pIHsKQEAgLTUyNSw0ICs1
NzMsMjIgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNNYXhVcGRhdGVTY3JvbGxiYXJzUGFzcyA9
IDI7CiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkXTsKIH0KIAorLSAo
dm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Nyb2xsT3JpZ2luWAoreworICAgIF9wcml2YXRl
LT5zY3JvbGxPcmlnaW5YID0gc2Nyb2xsT3JpZ2luWDsKKyAgICAKKyAgICBpZCBkb2NWaWV3ID0g
W3NlbGYgZG9jdW1lbnRWaWV3XTsKKyAgICBpZiAoc2Nyb2xsT3JpZ2luWCAhPSBbZG9jVmlldyBi
b3VuZHNdLm9yaWdpbi54KSB7CisgICAgICAgIC8vICItW3NlbGYgc2Nyb2xsT3JpZ2luWF0iIGlz
IGVxdWFsIHRvIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdy4KKyAgICAgICAgLy8gTWFrZSBEb2N1
bWVudCBib3VuZHMgb3JpZ2luIHggY29vcmRpbmF0ZSBjb3JyZXNwb25kIHRvIHRoZSBsZWZ0IG92
ZXJmbG93IHNvIHRoZSBlbnRpcmUgY2FudmFzIGlzIGNvdmVyZWQgYnkgdGhlIGRvY3VtZW50Lgor
ICAgICAgICBbZG9jVmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9pbnQoLXNjcm9sbE9yaWdp
blgsIFtkb2NWaWV3IGJvdW5kc10ub3JpZ2luLnkpXTsKKyAgICB9CisKK30KKworLSAoaW50KXNj
cm9sbE9yaWdpblgKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPnNjcm9sbE9yaWdpblg7Cit9CisK
IEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4IDBkYjEyYzA4NDk4OTYzZjBh
MWEwOWFmMDc0YTU1ZmJmNjFlYzE2ZTQuLjQwZWUwYjFhMTJiZTdjYmVmMDE1OGJiNzcxOWVlYTA3
NGIxY2Y3MGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0K
KysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAtNTM2LDYgKzUzNiw3
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0aW9u
YXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAgICAgaWYgKCFbc2VsZiBfaXNTY3JvbGxhYmxl
XSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5TUG9pbnQgcG9pbnQgPSBbW1tzZWxmIF9zY3Jv
bGxWaWV3XSBkb2N1bWVudFZpZXddIGZyYW1lXS5vcmlnaW47CisgICAgcG9pbnQueCArPSBbW3Nl
bGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhdOwogICAgIHJldHVybiBbW3NlbGYgX2NvbnRl
bnRWaWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1hdGU6WUVTXTsKIH0KIApAQCAtNTQ3LDYgKzU0
OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0
aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAgICAgICAgIHJldHVybiBOTzsKICAgICBO
U1JlY3QgZnJhbWUgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVudFZpZXddIGZyYW1lXTsK
ICAgICBOU1BvaW50IHBvaW50ID0gTlNNYWtlUG9pbnQoZnJhbWUub3JpZ2luLngsIE5TTWF4WShm
cmFtZSkpOworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmlnaW5Y
XTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10gX3Njcm9sbFRvOiZwb2ludCBhbmlt
YXRlOllFU107CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBlYzI0NzNmYzFi
NTg0MzI3NzU4NTg4N2Y4YzJhMGRkM2ZjNTQ5NmYyLi4wN2U0ODc2YTBkNWMzNDBlNTkyMTIyYWEz
NzkyZDgyODc3MjQxNWUzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMTk4LDgg
KzExOTgsMTEgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZU1vdXNlb3ZlclRpbWVyQ2FsbGJhY2soQ0ZS
dW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQgKmluZm8pCiAKIC0gKHZvaWQpX2ZyYW1lT3JCb3Vu
ZHNDaGFuZ2VkCiB7CisgICAgV2ViVmlldyAqd2ViVmlldyA9IFtzZWxmIF93ZWJWaWV3XTsKKyAg
ICBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgPSBbW1t3ZWJWaWV3IG1haW5G
cmFtZV0gZnJhbWVWaWV3XSBfc2Nyb2xsVmlld107CisKICAgICBOU1BvaW50IG9yaWdpbiA9IFtb
c2VsZiBzdXBlcnZpZXddIGJvdW5kc10ub3JpZ2luOwotICAgIGlmICghTlNFcXVhbFBvaW50cyhf
cHJpdmF0ZS0+bGFzdFNjcm9sbFBvc2l0aW9uLCBvcmlnaW4pKSB7CisgICAgaWYgKCFOU0VxdWFs
UG9pbnRzKF9wcml2YXRlLT5sYXN0U2Nyb2xsUG9zaXRpb24sIG9yaWdpbikgJiYgIVtzY3JvbGxW
aWV3IGluUHJvZ3JhbWF0aWNTY3JvbGxdKSB7CiAgICAgICAgIGlmIChGcmFtZSogY29yZUZyYW1l
ID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewogICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogY29y
ZVZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkgewogI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgpA
QCAtMTIxNCw3ICsxMjE3LDYgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZU1vdXNlb3ZlclRpbWVyQ2Fs
bGJhY2soQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQgKmluZm8pCiAgICAgCiAgICAgICAg
IFtfcHJpdmF0ZS0+Y29tcGxldGlvbkNvbnRyb2xsZXIgZW5kUmV2ZXJ0aW5nQ2hhbmdlOk5PIG1v
dmVMZWZ0Ok5PXTsKICAgICAgICAgCi0gICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbc2VsZiBf
d2ViVmlld107CiAgICAgICAgIFtbd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmll
dzp3ZWJWaWV3IGRpZFNjcm9sbERvY3VtZW50SW5GcmFtZVZpZXc6W3NlbGYgX2ZyYW1lVmlld11d
OwogICAgIH0KICAgICBfcHJpdmF0ZS0+bGFzdFNjcm9sbFBvc2l0aW9uID0gb3JpZ2luOwo=
</data>
<flag name="review"
          id="65742"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>