<?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>104207</bug_id>
          
          <creation_ts>2012-12-05 21:27:07 -0800</creation_ts>
          <short_desc>Implement SVG2&apos;s buffered-rendering property</short_desc>
          <delta_ts>2013-04-02 11:41:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>113667</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philip Rogers">pdr</reporter>
          <assigned_to name="Philip Rogers">pdr</assigned_to>
          <cc>blambov</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>krit</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>schenney</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>784556</commentid>
    <comment_count>0</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-12-05 21:27:07 -0800</bug_when>
    <thetext>This is a meta bug for implementing the buffered rendering hint from SVG2:
https://svgwg.org/svg2-draft/single-page.html#painting-BufferedRendering

The basic idea here is to cache static content. Feedback from many teams has indicated this is important for performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784584</commentid>
    <comment_count>1</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-12-05 21:48:26 -0800</bug_when>
    <thetext>We should be really careful with that. It has a high risk of regressions and the checking (if an update is needed), might make the implementation difficult to understand.

This is not a concern against a feature like that (I really believe we need something like background caching). But we should not be shy to propose another approach to the SVG WG if it makes more sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784592</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-12-05 21:57:11 -0800</bug_when>
    <thetext>We just discussed it on IRC. Once we have layers in SVG, this property could create a new layer. We would need to cache the layers, which is just possible with HW acceleration at the moment IIRC. Leaving the note here for future brain storming,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795382</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-12-20 05:32:31 -0800</bug_when>
    <thetext>My example implementation of SVG using RenderLayers make use off that: an off-screen buffer associated with a RenderLayer if it&apos;s transformed (eg. translate animation). Once we fully integrate within the RenderLayer framework, we get this virtually &quot;for free&quot; (no need to take any special care outside of rendering/ for that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859060</commentid>
    <comment_count>4</comment_count>
      <attachid>193982</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-19 21:53:08 -0700</bug_when>
    <thetext>Created attachment 193982
Work in progress: add the buffered-rendering SVG2 property.

After the SVG image cache was removed, some users were saddened to learn that their scaled images would not be cached. I have been looking at implementing the SVG2 buffered-rendering property for a subset of the SVG renderers. The attached patch adds the property, but I need to decide what, where, and if we should actually cache.

For concreteness, lets talk about an svg image of a snowflake used many times under translation and rotation to create a snowing effect.

Even with layers, the snowing usecase will benefit from a hint that the snowflake image/subtree should be cached. For example: if the snowflake is complex, the rasterization time may be more expensive than simply stamping out a saved rasterized imagebuffer. This hint gives users the power to trade off memory vs performance even in purely declarative SVG files. Does this sound like a reasonable argument for adding paint-time caching of images as a first-pass?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860558</commentid>
    <comment_count>5</comment_count>
      <attachid>193982</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-03-21 12:20:57 -0700</bug_when>
    <thetext>Comment on attachment 193982
Work in progress: add the buffered-rendering SVG2 property.

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

&gt; Source/WebCore/rendering/style/SVGRenderStyle.h:420
&gt; +                // 19 bits unused

18 bits unused, because you&apos;re using 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862414</commentid>
    <comment_count>6</comment_count>
      <attachid>194768</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-24 14:43:38 -0700</bug_when>
    <thetext>Created attachment 194768
[SVG2] Add support for the buffered-rendering property

Unfortunately this patch will fail the style checker due to the enum values in SVGRenderStyleDefs.h. I think these failures can be ignored because the enum format in SVGRenderStyleDefs does not follow the WebKit code format.

Otherwise, this is ready for review! I put up a simple demo to show off our speedy cached rendering: http://philbit.com/bouncingTigers.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862415</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-24 14:46:22 -0700</bug_when>
    <thetext>Attachment 194768 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/svg/css/buffered-rendering-expected.txt&apos;, u&apos;LayoutTests/svg/css/buffered-rendering.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-image-expected.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-image.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/CSSPrimitiveValueMappings.h&apos;, u&apos;Source/WebCore/css/CSSProperty.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSParser.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSPropertyNames.in&apos;, u&apos;Source/WebCore/css/SVGCSSStyleSelector.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSValueKeywords.in&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyle.cpp&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyle.h&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyleDefs.h&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGImage.cpp&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGImage.h&apos;, u&apos;Source/WebCore/rendering/svg/SVGRenderingContext.cpp&apos;, u&apos;Source/WebCore/rendering/svg/SVGRenderingContext.h&apos;, u&apos;Source/WebCore/svg/SVGStyledElement.cpp&apos;, u&apos;Source/WebCore/svg/svgattrs.in&apos;]&quot; exit_code: 1
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:87:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:88:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:89:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862416</commentid>
    <comment_count>8</comment_count>
      <attachid>194768</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-24 14:55:19 -0700</bug_when>
    <thetext>Comment on attachment 194768
[SVG2] Add support for the buffered-rendering property

Attachment 194768 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17144674</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862417</commentid>
    <comment_count>9</comment_count>
      <attachid>194768</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-24 14:57:09 -0700</bug_when>
    <thetext>Comment on attachment 194768
[SVG2] Add support for the buffered-rendering property

Attachment 194768 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17317054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862419</commentid>
    <comment_count>10</comment_count>
      <attachid>194768</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-03-24 15:12:00 -0700</bug_when>
    <thetext>Comment on attachment 194768
[SVG2] Add support for the buffered-rendering property

Attachment 194768 did not pass gtk-ews (gtk):
Output: http://webkit-commit-queue.appspot.com/results/17313047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862420</commentid>
    <comment_count>11</comment_count>
      <attachid>194768</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-24 15:13:21 -0700</bug_when>
    <thetext>Comment on attachment 194768
[SVG2] Add support for the buffered-rendering property

Attachment 194768 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17288348</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862421</commentid>
    <comment_count>12</comment_count>
      <attachid>194768</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-24 15:16:01 -0700</bug_when>
    <thetext>Comment on attachment 194768
[SVG2] Add support for the buffered-rendering property

Attachment 194768 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17289447</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862426</commentid>
    <comment_count>13</comment_count>
      <attachid>194768</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-24 15:37:17 -0700</bug_when>
    <thetext>Comment on attachment 194768
[SVG2] Add support for the buffered-rendering property

Attachment 194768 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17220899</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862427</commentid>
    <comment_count>14</comment_count>
      <attachid>194768</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-24 15:41:07 -0700</bug_when>
    <thetext>Comment on attachment 194768
[SVG2] Add support for the buffered-rendering property

Attachment 194768 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17183984</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862511</commentid>
    <comment_count>15</comment_count>
      <attachid>194768</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-24 21:27:03 -0700</bug_when>
    <thetext>Comment on attachment 194768
[SVG2] Add support for the buffered-rendering property

Attachment 194768 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17323057</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862860</commentid>
    <comment_count>16</comment_count>
      <attachid>194875</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-25 09:51:38 -0700</bug_when>
    <thetext>Created attachment 194875
[SVG2] Add support for the buffered-rendering property

Updated to actually compile on platforms other than mac. Note that this is expected to still fail the style checker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862866</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 09:59:18 -0700</bug_when>
    <thetext>Attachment 194875 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/svg/css/buffered-rendering-expected.txt&apos;, u&apos;LayoutTests/svg/css/buffered-rendering.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-image-expected.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-image.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/CSSPrimitiveValueMappings.h&apos;, u&apos;Source/WebCore/css/CSSProperty.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSParser.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSPropertyNames.in&apos;, u&apos;Source/WebCore/css/SVGCSSStyleSelector.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSValueKeywords.in&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyle.cpp&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyle.h&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyleDefs.h&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGImage.cpp&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGImage.h&apos;, u&apos;Source/WebCore/rendering/svg/SVGRenderingContext.cpp&apos;, u&apos;Source/WebCore/rendering/svg/SVGRenderingContext.h&apos;, u&apos;Source/WebCore/svg/SVGStyledElement.cpp&apos;, u&apos;Source/WebCore/svg/svgattrs.in&apos;]&quot; exit_code: 1
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:87:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:88:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:89:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862894</commentid>
    <comment_count>18</comment_count>
      <attachid>194875</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-03-25 10:35:38 -0700</bug_when>
    <thetext>Comment on attachment 194875
[SVG2] Add support for the buffered-rendering property

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

Minor stuff, really.

Please create two tests. Use &quot;none&quot; as the expected result setting for both (i.e. both tests have the same expected result). Then have one test for dynamic and one for static.

&gt; Source/WebCore/ChangeLog:26
&gt; +        (WebCore):

ap has been telling people (and I agree) to remove the empty WebCore line, so do that everywhere.

Also, add something along the lines of &quot;All these files changed to support the new property definition and handling&quot;.

&gt; Source/WebCore/rendering/svg/SVGRenderingContext.cpp:328
&gt; +bool SVGRenderingContext::bufferForeground(OwnPtr&lt;ImageBuffer&gt;&amp; imageBuffer)

I would be happier if this were renamed &quot;bufferImageElementForeground&quot; to make it clear it only works on images, to prevent confusion with later code that enables it for more content.

&gt; Source/WebCore/rendering/svg/SVGRenderingContext.cpp:346
&gt; +

Close this if here.

&gt; Source/WebCore/rendering/svg/SVGRenderingContext.cpp:347
&gt; +        if (imageBuffer) {

Move this out.

&gt; Source/WebCore/rendering/svg/SVGRenderingContext.cpp:357
&gt; +    if (!imageBuffer)

this is now an else clause.

&gt; LayoutTests/svg/css/buffered-rendering.html:11
&gt; +description(&apos;Test that image accept different buffered rendering values&apos;);

&quot;... that SVG Image accepts all buffered rendering values&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862915</commentid>
    <comment_count>19</comment_count>
      <attachid>194875</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-03-25 11:01:49 -0700</bug_when>
    <thetext>Comment on attachment 194875
[SVG2] Add support for the buffered-rendering property

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

Naming nits :P

&gt; Source/WebCore/ChangeLog:19
&gt; +            http://philbit.com/bouncingTigers.html

Would it be possible to add this as a manual test? I&apos;m always wary of publishing links to personal content - they usually go stale sooner or later.

&gt; Source/WebCore/rendering/svg/RenderSVGImage.cpp:153
&gt; +    SVGImageElement* imageElement = static_cast&lt;SVGImageElement*&gt;(node());

I assume it&apos;s safe in this case, but I still cringe on static casts :)

&gt; Source/WebCore/rendering/svg/RenderSVGImage.h:53
&gt; +    void paintForeground(PaintInfo&amp;);

&quot;Foreground&quot; seems too narrow as we&apos;re painting the full content (filters, markers, outline, etc). &quot;paintImage&quot;/&quot;paintImageContent&quot; maybe?

&gt; Source/WebCore/rendering/svg/RenderSVGImage.h:73
&gt; +    void invalidateBufferedForeground();

I don&apos;t feel too strongly about this since it&apos;s related to the attribute name, but technically we&apos;re &quot;caching&quot; not &quot;buffering&quot;. Plus the &quot;foreground&quot; comment above :)

&gt; Source/WebCore/rendering/svg/RenderSVGImage.h:88
&gt; +    OwnPtr&lt;ImageBuffer&gt; m_bufferedForeground;

Ditto.

&gt;&gt; Source/WebCore/rendering/svg/SVGRenderingContext.cpp:357
&gt;&gt; +    if (!imageBuffer)
&gt; 
&gt; this is now an else clause.

I would move this up, combine it with the top-level test and then you can just drop the previous conditional/else branch:

  if (!imageBuffer &amp;&amp; !(imageBuffer = m_paintInfo-&gt;context-&gt;createCompatibleBuffer(expandedIntSize(boundingBox.size()), true)))
    return false;

  GraphicsContext* bufferedRenderingContext = imageBuffer-&gt;context();
  ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863151</commentid>
    <comment_count>20</comment_count>
      <attachid>194942</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-25 16:32:47 -0700</bug_when>
    <thetext>Created attachment 194942
Update per reviewer comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863154</commentid>
    <comment_count>21</comment_count>
      <attachid>194875</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-25 16:33:57 -0700</bug_when>
    <thetext>Comment on attachment 194875
[SVG2] Add support for the buffered-rendering property

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

&gt;&gt; Source/WebCore/ChangeLog:19
&gt;&gt; +            http://philbit.com/bouncingTigers.html
&gt; 
&gt; Would it be possible to add this as a manual test? I&apos;m always wary of publishing links to personal content - they usually go stale sooner or later.

I agree this link will go stale at some point. This example is just a public version of an internal benchmark created by the Swiffy team that shows this patch makes a real improvement. I&apos;m not sure this should be checked into the manualtest directory, and sadly this won&apos;t run on our perftest infrastructure :( Do you have another suggestion for where we could put it?

&gt;&gt; Source/WebCore/ChangeLog:26
&gt;&gt; +        (WebCore):
&gt; 
&gt; ap has been telling people (and I agree) to remove the empty WebCore line, so do that everywhere.
&gt; 
&gt; Also, add something along the lines of &quot;All these files changed to support the new property definition and handling&quot;.

Done, and I&apos;ve filed a bug about the extra WebCore line: https://bugs.webkit.org/show_bug.cgi?id=113221

&gt;&gt; Source/WebCore/rendering/style/SVGRenderStyleDefs.h:87
&gt;&gt; +        BR_AUTO,
&gt; 
&gt; enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]

@StyleQueue: it&apos;s like you don&apos;t even read my comments &gt;:(

&gt;&gt; Source/WebCore/rendering/style/SVGRenderStyleDefs.h:88
&gt;&gt; +        BR_DYNAMIC,
&gt; 
&gt; enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]

Ditto!

&gt;&gt; Source/WebCore/rendering/style/SVGRenderStyleDefs.h:89
&gt;&gt; +        BR_STATIC
&gt; 
&gt; enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]

Ditto!!1

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGImage.cpp:153
&gt;&gt; +    SVGImageElement* imageElement = static_cast&lt;SVGImageElement*&gt;(node());
&gt; 
&gt; I assume it&apos;s safe in this case, but I still cringe on static casts :)

I agree. Abhishek is making an automated pass through these soon.

To assuage your fears, I did check that RenderSVGImage can only be a renderer for SVGImageElements.

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGImage.h:53
&gt;&gt; +    void paintForeground(PaintInfo&amp;);
&gt; 
&gt; &quot;Foreground&quot; seems too narrow as we&apos;re painting the full content (filters, markers, outline, etc). &quot;paintImage&quot;/&quot;paintImageContent&quot; maybe?

All of these (other than outline) are considered &quot;foreground&quot; as far as the paint phases are concerned. See PaintPhase.h for the list of phases. This function is only intended for the foreground phase.

I would like to stick with this naming scheme because in a future patch I would like to add a similarly-named function to RenderSVGTransformableContainer to support buffered-rendering on &lt;g&gt;.

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGImage.h:73
&gt;&gt; +    void invalidateBufferedForeground();
&gt; 
&gt; I don&apos;t feel too strongly about this since it&apos;s related to the attribute name, but technically we&apos;re &quot;caching&quot; not &quot;buffering&quot;. Plus the &quot;foreground&quot; comment above :)

I think following the attribute naming scheme is best for readability, but, like you, I wish it was named cached-rendering.

&gt;&gt; Source/WebCore/rendering/svg/SVGRenderingContext.cpp:328
&gt;&gt; +bool SVGRenderingContext::bufferForeground(OwnPtr&lt;ImageBuffer&gt;&amp; imageBuffer)
&gt; 
&gt; I would be happier if this were renamed &quot;bufferImageElementForeground&quot; to make it clear it only works on images, to prevent confusion with later code that enables it for more content.

I would like to call this function from RenderSVGTransformableContainer in the future in order to cache the foreground rendering of &lt;g&gt; elements. This function was written to be agnostic of the renderer, with the exception of the paintForeground(), which will require us to use something like (line 353):
if (m_object-&gt;isSVGImage())
    toRenderSVGImage(m_object)-&gt;paintForeground(bufferedInfo);
else if (m_object-&gt;isSVGContainer())
    toRenderSVGContainer(m_object)-&gt;paintForeground(bufferedInfo);

Does this context change your mind? If not, I&apos;m happy to switch it.

&gt;&gt; Source/WebCore/rendering/svg/SVGRenderingContext.cpp:346
&gt;&gt; +
&gt; 
&gt; Close this if here.

You and Florin were suggesting slightly different things here. I&apos;ve cleaned this up, but could both of you please make sure you&apos;re happy here?

&gt;&gt; LayoutTests/svg/css/buffered-rendering.html:11
&gt;&gt; +description(&apos;Test that image accept different buffered rendering values&apos;);
&gt; 
&gt; &quot;... that SVG Image accepts all buffered rendering values&quot;

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863155</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 16:34:23 -0700</bug_when>
    <thetext>Attachment 194942 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/svg/css/buffered-rendering-expected.txt&apos;, u&apos;LayoutTests/svg/css/buffered-rendering.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-dynamic-image-expected.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-dynamic-image.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-static-image-expected.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-static-image.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/CSSPrimitiveValueMappings.h&apos;, u&apos;Source/WebCore/css/CSSProperty.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSParser.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSPropertyNames.in&apos;, u&apos;Source/WebCore/css/SVGCSSStyleSelector.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSValueKeywords.in&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyle.cpp&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyle.h&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyleDefs.h&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGImage.cpp&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGImage.h&apos;, u&apos;Source/WebCore/rendering/svg/SVGRenderingContext.cpp&apos;, u&apos;Source/WebCore/rendering/svg/SVGRenderingContext.h&apos;, u&apos;Source/WebCore/svg/SVGStyledElement.cpp&apos;, u&apos;Source/WebCore/svg/svgattrs.in&apos;]&quot; exit_code: 1
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:87:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:88:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:89:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863207</commentid>
    <comment_count>23</comment_count>
      <attachid>194942</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-25 17:24:52 -0700</bug_when>
    <thetext>Comment on attachment 194942
Update per reviewer comments

Attachment 194942 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17305197</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863309</commentid>
    <comment_count>24</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-25 20:17:04 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 194942 [details])
&gt; Attachment 194942 [details] did not pass mac-wk2-ews (mac-wk2):
&gt; Output: http://webkit-commit-queue.appspot.com/results/17305197

This is a real failure, I need to wrap the assignment in an additional set of parenthesis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863361</commentid>
    <comment_count>25</comment_count>
      <attachid>194942</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-25 22:21:58 -0700</bug_when>
    <thetext>Comment on attachment 194942
Update per reviewer comments

Attachment 194942 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17232784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863417</commentid>
    <comment_count>26</comment_count>
      <attachid>194942</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-26 00:24:15 -0700</bug_when>
    <thetext>Comment on attachment 194942
Update per reviewer comments

Attachment 194942 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17241414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863595</commentid>
    <comment_count>27</comment_count>
      <attachid>194942</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-03-26 05:50:18 -0700</bug_when>
    <thetext>Comment on attachment 194942
Update per reviewer comments

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

Looks like I missed an issue earlier. Another pass required.

&gt; Source/WebCore/rendering/svg/SVGRenderingContext.cpp:339
&gt; +        if (bufferSize != imageBuffer-&gt;internalSize())

Below you use expandedIntSize(boundingBox.size()), but here you compute something else to check the size against. This seems like a problem, as you&apos;ll get a different image size depending on which code path you take.

&gt; Source/WebCore/rendering/svg/SVGRenderingContext.cpp:345
&gt; +        if (imageBuffer = m_paintInfo-&gt;context-&gt;createCompatibleBuffer(expandedIntSize(boundingBox.size()), true)) {

Above you include scale information in computing the size.

&gt; LayoutTests/ChangeLog:58
&gt; +        * platform/qt/css3/selectors3/xhtml/css3-modsel-14a7-expected.png:

This seems rather unexpected. Find/Replace error?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863631</commentid>
    <comment_count>28</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-03-26 06:56:05 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 194875 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194875&amp;action=review
&gt; &gt;&gt; Source/WebCore/rendering/svg/RenderSVGImage.h:53
&gt; &gt;&gt; +    void paintForeground(PaintInfo&amp;);
&gt; &gt; 
&gt; &gt; &quot;Foreground&quot; seems too narrow as we&apos;re painting the full content (filters, markers, outline, etc). &quot;paintImage&quot;/&quot;paintImageContent&quot; maybe?
&gt; 
&gt; All of these (other than outline) are considered &quot;foreground&quot; as far as the paint phases are concerned. See PaintPhase.h for the list of phases. This function is only intended for the foreground phase.

The SVG layer patch introduces dedicated phases for masking and clipping also. 

I was interpreting the name wrong though: this is not &quot;we&apos;re only painting the foreground of the SVG content&quot; but &quot;we&apos;re painting the foreground phase of RenderSVGImage&quot;, which makes sense.


&gt; &gt;&gt; Source/WebCore/rendering/svg/SVGRenderingContext.cpp:346
&gt; &gt;&gt; +
&gt; &gt; 
&gt; &gt; Close this if here.
&gt; 
&gt; You and Florin were suggesting slightly different things here. I&apos;ve cleaned this up, but could both of you please make sure you&apos;re happy here?

I think we&apos;re both suggesting to do away with nested conditional blocks :)

Can&apos;t find it in the style guide, but I seem to remember Dirk or Niko mentioned early returns are preferred:

  if (!ok)
    return false;

  &lt;ok block&gt;

instead of

  if (ok) {
    &lt;ok block&gt;
  } else
    return false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864823</commentid>
    <comment_count>29</comment_count>
      <attachid>194942</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-27 13:37:00 -0700</bug_when>
    <thetext>Comment on attachment 194942
Update per reviewer comments

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

&gt;&gt; Source/WebCore/rendering/svg/SVGRenderingContext.cpp:339
&gt;&gt; +        if (bufferSize != imageBuffer-&gt;internalSize())
&gt; 
&gt; Below you use expandedIntSize(boundingBox.size()), but here you compute something else to check the size against. This seems like a problem, as you&apos;ll get a different image size depending on which code path you take.

These implementations end up being the same but certainly do look quite different. Above, I&apos;ve extracted out the exact sizing code used by createCompatibleBuffer.

&gt;&gt; LayoutTests/ChangeLog:58
&gt;&gt; +        * platform/qt/css3/selectors3/xhtml/css3-modsel-14a7-expected.png:
&gt; 
&gt; This seems rather unexpected. Find/Replace error?

patch gremlins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865994</commentid>
    <comment_count>30</comment_count>
      <attachid>195698</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-28 22:40:53 -0700</bug_when>
    <thetext>Created attachment 195698
Updated per reviewer comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865995</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-28 22:44:58 -0700</bug_when>
    <thetext>Attachment 195698 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/svg/css/buffered-rendering-expected.txt&apos;, u&apos;LayoutTests/svg/css/buffered-rendering.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-dynamic-image-expected.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-dynamic-image.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-static-image-expected.html&apos;, u&apos;LayoutTests/svg/repaint/buffered-rendering-static-image.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/CSSPrimitiveValueMappings.h&apos;, u&apos;Source/WebCore/css/CSSProperty.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSParser.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSPropertyNames.in&apos;, u&apos;Source/WebCore/css/SVGCSSStyleSelector.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSValueKeywords.in&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyle.cpp&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyle.h&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyleDefs.h&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGImage.cpp&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGImage.h&apos;, u&apos;Source/WebCore/rendering/svg/SVGRenderingContext.cpp&apos;, u&apos;Source/WebCore/rendering/svg/SVGRenderingContext.h&apos;, u&apos;Source/WebCore/svg/SVGStyledElement.cpp&apos;, u&apos;Source/WebCore/svg/svgattrs.in&apos;]&quot; exit_code: 1
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:87:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:88:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/rendering/style/SVGRenderStyleDefs.h:89:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868118</commentid>
    <comment_count>32</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-04-02 11:41:38 -0700</bug_when>
    <thetext>Landed manually with http://trac.webkit.org/changeset/147348</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193982</attachid>
            <date>2013-03-19 21:53:08 -0700</date>
            <delta_ts>2013-03-24 14:43:38 -0700</delta_ts>
            <desc>Work in progress: add the buffered-rendering SVG2 property.</desc>
            <filename>104207.1.patch</filename>
            <type>text/plain</type>
            <size>20910</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjMwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAzLTE5ICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJ1ZmZlcmVkLXJl
bmRlcmluZyBwcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBpcyBhIHdvcmsgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHRoZSBTVkcyIGJ1ZmZlcmVkLXJlbmRlcmluZyBwcm9wZXJ0eSBhcyBkZXNjcmliZWQg
aW4gdGhlIHNwZWM6CisgICAgICAgIGh0dHBzOi8vc3Znd2cub3JnL3N2ZzItZHJhZnQvc2luZ2xl
LXBhZ2UuaHRtbCNwYWludGluZy1CdWZmZXJlZFJlbmRlcmluZworCisgICAgICAgIFRlc3Q6IHN2
Zy9jc3MvYnVmZmVyZWQtcmVuZGVyaW5nLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJ1
ZmZlcmVkUmVuZGVyaW5nKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkpOgorICAgICAgICAq
IGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRTVkdQcm9wZXJ0eUNTU1ZhbHVlKToK
KyAgICAgICAgKiBjc3MvU1ZHQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VTVkdWYWx1ZSk6CisgICAgICAgICogY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMu
aW46CisgICAgICAgICogY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL1NW
R0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpkaWZmKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsQnVmZmVyZWRSZW5kZXJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnNldEJ1ZmZlcmVkUmVuZGVyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpidWZmZXJlZFJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0Qml0RGVmYXVsdHMpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpi
dWZmZXJlZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmg6CisgICAgICAgIChSZW5kZXJTVkdJbWFnZSk6CisgICAg
ICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5
bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3NzUHJvcGVydHlUb1R5cGVNYXApOgorICAgICAgICAqIHN2Zy9zdmdhdHRycy5p
bjoKKwogMjAxMy0wMy0xOSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIE1lcmdlIE1haW5SZXNvdXJjZUxvYWRlciBpbnRvIERvY3VtZW50TG9hZGVyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAkocmV2aXNpb24gMTQ2MTgyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw2ICszODAsNyBAQCBz
dGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb21wdXRlZFByb3BlCiAgICAgQ1NTUHJvcGVydHlX
ZWJraXRXcmFwVGhyb3VnaCwKICNlbmRpZgogI2lmIEVOQUJMRShTVkcpCisgICAgQ1NTUHJvcGVy
dHlCdWZmZXJlZFJlbmRlcmluZywKICAgICBDU1NQcm9wZXJ0eUNsaXBQYXRoLAogICAgIENTU1By
b3BlcnR5Q2xpcFJ1bGUsCiAgICAgQ1NTUHJvcGVydHlNYXNrLApAQCAtMjgxMCw2ICsyODExLDcg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU1ZHKQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJpbmc6
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwUGF0aDoKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNsaXBSdWxlOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFzazoKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2aXNpb24g
MTQ2MTgyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIzOCw2ICs0MjM4LDM4IEBAIHRlbXBsYXRlPGludCBzdXBw
b3J0ZWQ+IExlbmd0aCBDU1NQcmltaXQKIAogI2lmIEVOQUJMRShTVkcpCiAKK3RlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFQnVmZmVyZWRSZW5k
ZXJpbmcgZSkKKyAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQoreworICAgIG1fcHJpbWl0
aXZlVW5pdFR5cGUgPSBDU1NfSURFTlQ7CisgICAgc3dpdGNoIChlKSB7CisgICAgY2FzZSBCUl9B
VVRPOgorICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVBdXRvOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEJSX0RZTkFNSUM6CisgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1
ZUR5bmFtaWM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQlJfU1RBVElDOgorICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVTdGF0aWM7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVCdWZmZXJl
ZFJlbmRlcmluZygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAg
Y2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgIHJldHVybiBCUl9BVVRPOworICAgIGNhc2UgQ1NT
VmFsdWVEeW5hbWljOgorICAgICAgICByZXR1cm4gQlJfRFlOQU1JQzsKKyAgICBjYXNlIENTU1Zh
bHVlU3RhdGljOgorICAgICAgICByZXR1cm4gQlJfU1RBVElDOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBCUl9BVVRPOworfQorCiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUNvbG9ySW50ZXJwb2xh
dGlvbiBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE0NjE4MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4OSw2ICs2ODksNyBAQCBi
b29sIENTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KENTCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhc2VsaW5lU2hpZnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
QnVmZmVyZWRSZW5kZXJpbmc6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFN2Z1NoYWRvdzoK
ICNlbmRpZgogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShy
ZXZpc2lvbiAxNDYxODIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYgKzE3Nyw4IEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nOgorICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUtPmJ1ZmZlcmVkUmVuZGVyaW5nKCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6CiAgICAg
ICAgICAgICByZXR1cm4gZ2x5cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5
bGUtPmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
UGFyc2VyLmNwcAkocmV2aXNpb24gMTQ2MTgyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NWR0NT
U1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTEgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgdmFsaWRfcHJpbWl0
aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVy
ZWRSZW5kZXJpbmc6IC8vIGF1dG8gfCBkeW5hbWljIHwgc3RhdGljCisgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVEeW5hbWljIHx8IGlkID09IENTU1ZhbHVl
U3RhdGljKQorICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JQcm9maWxlOiAvLyBhdXRvIHwgc1JHQiB8
IDxuYW1lPiB8IDx1cmk+IGluaGVyaXQKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8
fCBpZCA9PSBDU1NWYWx1ZVNyZ2IpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMuaW4JKHJldmlz
aW9uIDE0NjE4MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQcm9wZXJ0eU5hbWVzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQAogI2lmIGRlZmluZWQoRU5BQkxFX1NWRykg
JiYgRU5BQkxFX1NWRwogCiAvLyBTVkcgc3R5bGUgcHJvcHMKK2J1ZmZlcmVkLXJlbmRlcmluZwog
Y2xpcC1wYXRoCiBjbGlwLXJ1bGUKIG1hc2sKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdD
U1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZH
Q1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE0NjE4MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg4LDYgKzU4
OCwxNCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZHUHJvcGVydHkoQ1NTCiAgICAgICAg
ICAgICBzdmdzdHlsZS0+c2V0VmVjdG9yRWZmZWN0KCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRS
ZW5kZXJpbmc6IHsKKyAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJ1ZmZl
cmVkUmVuZGVyaW5nLCBCdWZmZXJlZFJlbmRlcmluZykKKyAgICAgICAgICAgIGlmICghcHJpbWl0
aXZlVmFsdWUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHN2Z3N0eWxl
LT5zZXRCdWZmZXJlZFJlbmRlcmluZygqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hc2tUeXBlOiB7CiAgICAg
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXNrVHlwZSwgTWFza1R5cGUpCiAg
ICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU1ZhbHVlS2V5d29yZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDE0NjE4MikKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TVkdDU1NWYWx1ZUtleXdvcmRzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsNiAr
MjY0LDExIEBAIHJlc2V0LXNpemUKIC8vIG1pZGRsZQogLy8gZW5kCiAKKy8vIENTU19QUk9QX0JV
RkZFUkVEX1JFTkRFUklORworLy8gYXV0bworLy8gc3RhdGljCitkeW5hbWljCisKIC8vIENTU19Q
Uk9QX1ZFQ1RPUl9FRkZFQ1QKIC8vIG5vbmUKIG5vbi1zY2FsaW5nLXN0cm9rZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCShy
ZXZpc2lvbiAxNDYxODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVu
ZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDkgQEAgU3R5bGVEaWZm
ZXJlbmNlIFNWR1JlbmRlclN0eWxlOjpkaWZmKGNvbgogICAgIGlmIChzdmdfbm9uaW5oZXJpdGVk
X2ZsYWdzLmYuX3ZlY3RvckVmZmVjdCAhPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5m
Ll92ZWN0b3JFZmZlY3QpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50Owog
CisgICAgaWYgKHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYnVmZmVyZWRSZW5kZXJpbmcgIT0g
b3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYnVmZmVyZWRSZW5kZXJpbmcpCisgICAg
ICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OworCiAgICAgaWYgKHN2Z19ub25pbmhl
cml0ZWRfZmxhZ3MuZi5tYXNrVHlwZSAhPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5m
Lm1hc2tUeXBlKQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJ
KHJldmlzaW9uIDE0NjE4MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdS
ZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgRURvbWluYW50QmFzZWxpbmUgaW5pdGlhbERvbWluYW50QmFzZWxpbmUoKSB7IHJl
dHVybiBEQl9BVVRPOyB9CiAgICAgc3RhdGljIEVCYXNlbGluZVNoaWZ0IGluaXRpYWxCYXNlbGlu
ZVNoaWZ0KCkgeyByZXR1cm4gQlNfQkFTRUxJTkU7IH0KICAgICBzdGF0aWMgRVZlY3RvckVmZmVj
dCBpbml0aWFsVmVjdG9yRWZmZWN0KCkgeyByZXR1cm4gVkVfTk9ORTsgfQorICAgIHN0YXRpYyBF
QnVmZmVyZWRSZW5kZXJpbmcgaW5pdGlhbEJ1ZmZlcmVkUmVuZGVyaW5nKCkgeyByZXR1cm4gQlJf
QVVUTzsgfQogICAgIHN0YXRpYyBMaW5lQ2FwIGluaXRpYWxDYXBTdHlsZSgpIHsgcmV0dXJuIEJ1
dHRDYXA7IH0KICAgICBzdGF0aWMgV2luZFJ1bGUgaW5pdGlhbENsaXBSdWxlKCkgeyByZXR1cm4g
UlVMRV9OT05aRVJPOyB9CiAgICAgc3RhdGljIEVDb2xvckludGVycG9sYXRpb24gaW5pdGlhbENv
bG9ySW50ZXJwb2xhdGlvbigpIHsgcmV0dXJuIENJX1NSR0I7IH0KQEAgLTEyOCw2ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXREb21pbmFudEJhc2VsaW5lKEVEb21pbmFudEJhc2VsaW5l
IHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmUgPSB2YWw7
IH0KICAgICB2b2lkIHNldEJhc2VsaW5lU2hpZnQoRUJhc2VsaW5lU2hpZnQgdmFsKSB7IHN2Z19u
b25pbmhlcml0ZWRfZmxhZ3MuZi5fYmFzZWxpbmVTaGlmdCA9IHZhbDsgfQogICAgIHZvaWQgc2V0
VmVjdG9yRWZmZWN0KEVWZWN0b3JFZmZlY3QgdmFsKSB7IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3Mu
Zi5fdmVjdG9yRWZmZWN0ID0gdmFsOyB9CisgICAgdm9pZCBzZXRCdWZmZXJlZFJlbmRlcmluZyhF
QnVmZmVyZWRSZW5kZXJpbmcgdmFsKSB7IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYnVmZmVy
ZWRSZW5kZXJpbmcgPSB2YWw7IH0KICAgICB2b2lkIHNldENhcFN0eWxlKExpbmVDYXAgdmFsKSB7
IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlID0gdmFsOyB9CiAgICAgdm9pZCBzZXRDbGlw
UnVsZShXaW5kUnVsZSB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1bGUgPSB2YWw7
IH0KICAgICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbihFQ29sb3JJbnRlcnBvbGF0aW9uIHZh
bCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb24gPSB2YWw7IH0KQEAg
LTMwNSw2ICszMDcsNyBAQCBwdWJsaWM6CiAgICAgRURvbWluYW50QmFzZWxpbmUgZG9taW5hbnRC
YXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIChFRG9taW5hbnRCYXNlbGluZSkgc3ZnX25vbmluaGVy
aXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lOyB9CiAgICAgRUJhc2VsaW5lU2hpZnQgYmFz
ZWxpbmVTaGlmdCgpIGNvbnN0IHsgcmV0dXJuIChFQmFzZWxpbmVTaGlmdCkgc3ZnX25vbmluaGVy
aXRlZF9mbGFncy5mLl9iYXNlbGluZVNoaWZ0OyB9CiAgICAgRVZlY3RvckVmZmVjdCB2ZWN0b3JF
ZmZlY3QoKSBjb25zdCB7IHJldHVybiAoRVZlY3RvckVmZmVjdCkgc3ZnX25vbmluaGVyaXRlZF9m
bGFncy5mLl92ZWN0b3JFZmZlY3Q7IH0KKyAgICBFQnVmZmVyZWRSZW5kZXJpbmcgYnVmZmVyZWRS
ZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiAoRUJ1ZmZlcmVkUmVuZGVyaW5nKSBzdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzLmYuX2J1ZmZlcmVkUmVuZGVyaW5nOyB9CiAgICAgTGluZUNhcCBjYXBTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIChMaW5lQ2FwKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jYXBTdHls
ZTsgfQogICAgIFdpbmRSdWxlIGNsaXBSdWxlKCkgY29uc3QgeyByZXR1cm4gKFdpbmRSdWxlKSBz
dmdfaW5oZXJpdGVkX2ZsYWdzLl9jbGlwUnVsZTsgfQogICAgIEVDb2xvckludGVycG9sYXRpb24g
Y29sb3JJbnRlcnBvbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gKEVDb2xvckludGVycG9sYXRpb24p
IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbjsgfQpAQCAtNDEyLDggKzQx
NSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfZG9taW5hbnRCYXNl
bGluZSA6IDQ7IC8vIEVEb21pbmFudEJhc2VsaW5lCiAgICAgICAgICAgICAgICAgdW5zaWduZWQg
X2Jhc2VsaW5lU2hpZnQgOiAyOyAvLyBFQmFzZWxpbmVTaGlmdAogICAgICAgICAgICAgICAgIHVu
c2lnbmVkIF92ZWN0b3JFZmZlY3Q6IDE7IC8vIEVWZWN0b3JFZmZlY3QKKyAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBfYnVmZmVyZWRSZW5kZXJpbmc6IDI7IC8vIEVCdWZmZXJlZFJlbmRlcmluZwog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1hc2tUeXBlOiAxOyAvLyBFTWFza1R5cGUKLSAgICAg
ICAgICAgICAgICAvLyAyMCBiaXRzIHVudXNlZAorICAgICAgICAgICAgICAgIC8vIDE5IGJpdHMg
dW51c2VkCiAgICAgICAgICAgICB9IGY7CiAgICAgICAgICAgICB1aW50MzJfdCBfbmlmbGFnczsK
ICAgICAgICAgfTsKQEAgLTQ1OCw2ICs0NjIsNyBAQCBwcml2YXRlOgogICAgICAgICBzdmdfbm9u
aW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmUgPSBpbml0aWFsRG9taW5hbnRCYXNl
bGluZSgpOwogICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQg
PSBpbml0aWFsQmFzZWxpbmVTaGlmdCgpOwogICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdz
LmYuX3ZlY3RvckVmZmVjdCA9IGluaXRpYWxWZWN0b3JFZmZlY3QoKTsKKyAgICAgICAgc3ZnX25v
bmluaGVyaXRlZF9mbGFncy5mLl9idWZmZXJlZFJlbmRlcmluZyA9IGluaXRpYWxCdWZmZXJlZFJl
bmRlcmluZygpOwogICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGUgPSBp
bml0aWFsTWFza1R5cGUoKTsKICAgICB9CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaAkocmV2aXNpb24gMTQ2MTgy
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFZFX05PTl9TQ0FMSU5HX1NUUk9LRQogICAgIH07CiAKKyAgICBlbnVtIEVCdWZmZXJl
ZFJlbmRlcmluZyB7CisgICAgICAgIEJSX0FVVE8sCisgICAgICAgIEJSX0RZTkFNSUMsCisgICAg
ICAgIEJSX1NUQVRJQworICAgIH07CisKICAgICBlbnVtIEVNYXNrVHlwZSB7CiAgICAgICAgIE1U
X0xVTUlOQU5DRSwKICAgICAgICAgTVRfQUxQSEEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAxNDYxODIpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzcsNiArNzcsMTQgQEAgYm9vbCBSZW5kZXJTVkdJbWFnZTo6dXBkYXRlSW1hZ2VW
aWV3cG9ydAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFJlbmRlclNWR0ltYWdlOjpidWZm
ZXJlZFJlbmRlcmluZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKHN0eWxlKCkpOworICAgIEFTU0VS
VChzdHlsZSgpLT5zdmdTdHlsZSgpKTsKKworICAgIHJldHVybiBzdHlsZSgpLT5zdmdTdHlsZSgp
LT5idWZmZXJlZFJlbmRlcmluZygpID09IEJSX1NUQVRJQzsKK30KKwogdm9pZCBSZW5kZXJTVkdJ
bWFnZTo6bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50IGxheW91
dENoZWNrUG9pbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5oCShyZXZpc2lvbiAxNDYxODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDggQEAg
cHVibGljOgogICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UoKSB7IHJldHVy
biBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0KICAgICBjb25zdCBSZW5kZXJJbWFnZVJlc291cmNl
KiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9
CiAKKyAgICBib29sIGJ1ZmZlcmVkUmVuZGVyaW5nKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNW
R0ltYWdlIjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQ2MTgyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAgQ1NTUHJvcGVydHlJRCBTVkdTdHls
ZWRFbGVtZW50Ojpjc3NQcm9wZQogICAgICAgICAvLyBUaGlzIGlzIGEgbGlzdCBvZiBhbGwgYmFz
ZSBDU1MgYW5kIFNWRyBDU1MgcHJvcGVydGllcyB3aGljaCBhcmUgZXhwb3NlZCBhcyBTVkcgWE1M
IGF0dHJpYnV0ZXMKICAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5h
bWVUb0lkTWFwLCBhbGlnbm1lbnRfYmFzZWxpbmVBdHRyKTsKICAgICAgICAgbWFwQXR0cmlidXRl
VG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBiYXNlbGluZV9zaGlmdEF0dHIpOwor
ICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGJ1
ZmZlcmVkX3JlbmRlcmluZ0F0dHIpOwogICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5
KHByb3BlcnR5TmFtZVRvSWRNYXAsIGNsaXBBdHRyKTsKICAgICAgICAgbWFwQXR0cmlidXRlVG9D
U1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjbGlwX3BhdGhBdHRyKTsKICAgICAgICAg
bWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjbGlwX3J1bGVB
dHRyKTsKQEAgLTIxNCw2ICsyMTUsNyBAQCBzdGF0aWMgaW5saW5lIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwCiAgICAgLy8gRmlsbCB0aGUgbWFwIGZvciB0aGUgZmlyc3QgdXNlLgogICAgIHNf
Y3NzUHJvcGVydHlNYXAuc2V0KGFsaWdubWVudF9iYXNlbGluZUF0dHIsIEFuaW1hdGVkU3RyaW5n
KTsKICAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChiYXNlbGluZV9zaGlmdEF0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChidWZmZXJlZF9yZW5kZXJpbmdBdHRy
LCBBbmltYXRlZFN0cmluZyk7CiAgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY2xpcEF0dHIsIEFu
aW1hdGVkUmVjdCk7CiAgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY2xpcF9wYXRoQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOwogICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNsaXBfcnVsZUF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9zdmdhdHRycy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvc3ZnYXR0cnMuaW4JKHJldmlzaW9uIDE0NjE4
MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9zdmdhdHRycy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MjEsNiArMjEsNyBAQCBiYXNlUHJvZmlsZQogYmJveAogYmVnaW4KIGJpYXMKK2J1ZmZlcmVkLXJl
bmRlcmluZwogYnkKIGNhbGNNb2RlCiBjYXAtaGVpZ2h0CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDYz
MDEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxMy0wMy0xOSAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBidWZmZXJlZC1yZW5kZXJpbmcgcHJvcGVydHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDIwNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3ZnL2Nzcy9idWZmZXJlZC1yZW5k
ZXJpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3NzL2J1ZmZlcmVkLXJl
bmRlcmluZy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0xOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIE1vdmUgdGVzdFJ1bm5lci5zZXRUb3VjaERyYWdEcm9wRW5h
YmxlZCB0byBpbnRlcm5hbHMuc2V0dGluZ3MKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jc3MvYnVm
ZmVyZWQtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvY3NzL2J1ZmZlcmVkLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdmcvY3NzL2J1ZmZlcmVkLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAorVGVzdCB0aGF0IGltYWdlIGFjY2VwdCBkaWZmZXJl
bnQgYnVmZmVyZWQgcmVuZGVyaW5nIHZhbHVlcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBjb21wdXRlZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAiIikgaXMgImF1
dG8iCitQQVNTIGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJhdXRvIikgaXMg
ImF1dG8iCitQQVNTIGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJkeW5hbWlj
IikgaXMgImR5bmFtaWMiCitGQUlMIGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIs
ICJzdGF0aWMiKSBpcyAic3RhdGljIgorUEFTUyBjb21wdXRlZFN0eWxlKCJidWZmZXJlZC1yZW5k
ZXJpbmciLCAiMCIpIGlzICJzdGF0aWMiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJl
bmRlcmluZyIsICIxIikgaXMgInN0YXRpYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQt
cmVuZGVyaW5nIiwgInRydWUiKSBpcyAic3RhdGljIgorUEFTUyBjb21wdXRlZFN0eWxlKCJidWZm
ZXJlZC1yZW5kZXJpbmciLCAiZHluYW1pYyIpIGlzICJkeW5hbWljIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAiMCIpIGlzICJkeW5hbWljIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAiMSIpIGlzICJkeW5hbWljIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAidHJ1ZSIpIGlzICJkeW5hbWljIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKK1Rlc3QgdGhh
dCBpbWFnZSBhY2NlcHQgZGlmZmVyZW50IGJ1ZmZlcmVkIHJlbmRlcmluZyB2YWx1ZXMKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQt
cmVuZGVyaW5nIiwgIiIpIGlzICJhdXRvIgorUEFTUyBjb21wdXRlZFN0eWxlKCJidWZmZXJlZC1y
ZW5kZXJpbmciLCAiYXV0byIpIGlzICJhdXRvIgorUEFTUyBjb21wdXRlZFN0eWxlKCJidWZmZXJl
ZC1yZW5kZXJpbmciLCAiZHluYW1pYyIpIGlzICJkeW5hbWljIgorRkFJTCBjb21wdXRlZFN0eWxl
KCJidWZmZXJlZC1yZW5kZXJpbmciLCAic3RhdGljIikgaXMgInN0YXRpYyIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjAiKSBpcyAic3RhdGljIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAiMSIpIGlzICJzdGF0aWMiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJ0cnVlIikgaXMgInN0YXRpYyIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgImR5bmFtaWMiKSBpcyAiZHlu
YW1pYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjAiKSBpcyAi
ZHluYW1pYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjEiKSBp
cyAiZHluYW1pYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgInRy
dWUiKSBpcyAiZHluYW1pYyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3NzL2J1ZmZlcmVkLXJlbmRlcmlu
Zy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jc3MvYnVmZmVyZWQtcmVuZGVy
aW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3NzL2J1ZmZlcmVkLXJl
bmRlcmluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8c3R5bGU+CisqIHsgZm9udC1zaXplOiAxNnB4OyB9CitkaXYgeyBmb250
LXNpemU6IDhweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHN2Zz48aW1hZ2UgaWQ9ImltYWdlIj48
L2ltYWdlPjwvc3ZnPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCB0aGF0IGlt
YWdlIGFjY2VwdCBkaWZmZXJlbnQgYnVmZmVyZWQgcmVuZGVyaW5nIHZhbHVlcycpOworCit2YXIg
aW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKworZnVuY3Rpb24gY29t
cHV0ZWRTdHlsZShwcm9wZXJ0eSwgdmFsdWUpIHsKKyAgICBpbWFnZS5zdHlsZS5zZXRQcm9wZXJ0
eShwcm9wZXJ0eSwgdmFsdWUpOworICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGltYWdlKS5n
ZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5KTsKK30KKworZnVuY3Rpb24gdGVzdChwcm9wZXJ0eSwg
dmFsdWUsIGV4cGVjdGVkKSB7CisgICAgaWYgKGV4cGVjdGVkID09PSBudWxsKQorICAgICAgICBz
aG91bGRCZU51bGwoJ2NvbXB1dGVkU3R5bGUoIicgKyBwcm9wZXJ0eSArICciLCAiJyArIHZhbHVl
ICsgJyIpJyk7CisgICAgZWxzZQorICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2NvbXB1
dGVkU3R5bGUoIicgKyBwcm9wZXJ0eSArICciLCAiJyArIHZhbHVlICsgJyIpJywgZXhwZWN0ZWQp
OworfQorCit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiIiwgImF1dG8iKTsKK3Rlc3QoImJ1
ZmZlcmVkLXJlbmRlcmluZyIsICJhdXRvIiwgImF1dG8iKTsKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRl
cmluZyIsICJkeW5hbWljIiwgImR5bmFtaWMiKTsKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmluZyIs
ICJzdGF0aWMiLCAic3RhdGljIik7CisKKy8vIG5lZ2F0aXZlIHRlc3RzCit0ZXN0KCJidWZmZXJl
ZC1yZW5kZXJpbmciLCAiMCIsICJzdGF0aWMiKTsKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmluZyIs
ICIxIiwgInN0YXRpYyIpOwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgInRydWUiLCAic3Rh
dGljIik7CisKKy8vIG1ha2Ugc3VyZSB2YWxpZCB2YWx1ZXMgc3RpbGwgd29yawordGVzdCgiYnVm
ZmVyZWQtcmVuZGVyaW5nIiwgImR5bmFtaWMiLCAiZHluYW1pYyIpOworCisvLyBtb3JlIG5lZ2F0
aXZlIHRlc3RzCit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiMCIsICJkeW5hbWljIik7Cit0
ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiMSIsICJkeW5hbWljIik7Cit0ZXN0KCJidWZmZXJl
ZC1yZW5kZXJpbmciLCAidHJ1ZSIsICJkeW5hbWljIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9z
dmc+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgorKiB7IGZvbnQtc2l6ZTogMTZw
eDsgfQorZGl2IHsgZm9udC1zaXplOiA4cHg7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxzdmc+PGlt
YWdlIGlkPSJpbWFnZSI+PC9pbWFnZT48L3N2Zz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ1Rlc3QgdGhhdCBpbWFnZSBhY2NlcHQgZGlmZmVyZW50IGJ1ZmZlcmVkIHJlbmRlcmluZyB2
YWx1ZXMnKTsKKwordmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7
CisKK2Z1bmN0aW9uIGNvbXB1dGVkU3R5bGUocHJvcGVydHksIHZhbHVlKSB7CisgICAgaW1hZ2Uu
c3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHksIHZhbHVlKTsKKyAgICByZXR1cm4gZ2V0Q29tcHV0
ZWRTdHlsZShpbWFnZSkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSk7Cit9CisKK2Z1bmN0aW9u
IHRlc3QocHJvcGVydHksIHZhbHVlLCBleHBlY3RlZCkgeworICAgIGlmIChleHBlY3RlZCA9PT0g
bnVsbCkKKyAgICAgICAgc2hvdWxkQmVOdWxsKCdjb21wdXRlZFN0eWxlKCInICsgcHJvcGVydHkg
KyAnIiwgIicgKyB2YWx1ZSArICciKScpOworICAgIGVsc2UKKyAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdjb21wdXRlZFN0eWxlKCInICsgcHJvcGVydHkgKyAnIiwgIicgKyB2YWx1ZSAr
ICciKScsIGV4cGVjdGVkKTsKK30KKwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIiIsICJh
dXRvIik7Cit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiYXV0byIsICJhdXRvIik7Cit0ZXN0
KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiZHluYW1pYyIsICJkeW5hbWljIik7Cit0ZXN0KCJidWZm
ZXJlZC1yZW5kZXJpbmciLCAic3RhdGljIiwgInN0YXRpYyIpOworCisvLyBuZWdhdGl2ZSB0ZXN0
cwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjAiLCAic3RhdGljIik7Cit0ZXN0KCJidWZm
ZXJlZC1yZW5kZXJpbmciLCAiMSIsICJzdGF0aWMiKTsKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmlu
ZyIsICJ0cnVlIiwgInN0YXRpYyIpOworCisvLyBtYWtlIHN1cmUgdmFsaWQgdmFsdWVzIHN0aWxs
IHdvcmsKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJkeW5hbWljIiwgImR5bmFtaWMiKTsK
KworLy8gbW9yZSBuZWdhdGl2ZSB0ZXN0cwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjAi
LCAiZHluYW1pYyIpOwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjEiLCAiZHluYW1pYyIp
OwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgInRydWUiLCAiZHluYW1pYyIpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194768</attachid>
            <date>2013-03-24 14:43:38 -0700</date>
            <delta_ts>2013-03-25 09:51:38 -0700</delta_ts>
            <desc>[SVG2] Add support for the buffered-rendering property</desc>
            <filename>104207.3.patch</filename>
            <type>text/plain</type>
            <size>31882</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjczMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDEzLTAzLTI0ICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NWRzJdIEFkZCBzdXBwb3J0IGZv
ciB0aGUgYnVmZmVyZWQtcmVuZGVyaW5nIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIFNWRzIgYnVmZmVy
ZWQtcmVuZGVyaW5nIHByb3BlcnR5IGFuZCBpbXBsZW1lbnRzIGl0IGZvciB0aGUgaW1hZ2UKKyAg
ICAgICAgZWxlbWVudC4gRm9yIHJlZmVyZW5jZSwgdGhlIHNwZWMgY2FuIGJlIGZvdW5kIGF0Ogor
ICAgICAgICAgICAgaHR0cHM6Ly9zdmd3Zy5vcmcvc3ZnMi1kcmFmdC9zaW5nbGUtcGFnZS5odG1s
I3BhaW50aW5nLUJ1ZmZlcmVkUmVuZGVyaW5nCisKKyAgICAgICAgVGhlIGJ1ZmZlcmVkLXJlbmRl
cmluZyBoaW50IGNhdXNlcyBvdXIgaW1wbGVtZW50YXRpb24gdG8gY3JlYXRlIGEgdGVtcG9yYXJ5
IGltYWdlIGJ1ZmZlcgorICAgICAgICBmb3IgY2FjaGluZyBhbiBlbGVtZW50J3MgZm9yZWdyb3Vu
ZCByZW5kZXJpbmcuIFRoaXMgYmVoYXZpb3IgaGFzIGJlZW4gZGVzaWduZWQgdG8gc3VwcG9ydAor
ICAgICAgICBvdGhlciBncmFwaGljYWwgYW5kIGNvbnRhaW5lciBlbGVtZW50cyBpbiBmb2xsb3d1
cCBwYXRjaGVzIChzdWNoIGFzIHRoZSB1c2UgYW5kIGcgZWxlbWVudHMpLgorICAgICAgICBUaGlz
IHBhdGNoIHNob3VsZCBub3QgYWZmZWN0IHJlbmRlcmluZywgYW5kIGEgdGVzdCBoYXMgYmVlbiBh
ZGRlZCBzaG93aW5nIHRoZSBpbWFnZQorICAgICAgICByZXN1bHRzIGFyZSB1bmNoYW5nZWQuIAor
CisgICAgICAgIFRoZSBwZXJmb3JtYW5jZSBhc3BlY3RzIG9mIHRoaXMgcGF0Y2ggY2FuIGJlIHRl
c3RlZCB1c2luZyB0aGUgZm9sbG93aW5nIHRlc3Q6CisgICAgICAgICAgICBodHRwOi8vcGhpbGJp
dC5jb20vYm91bmNpbmdUaWdlcnMuaHRtbAorICAgICAgICBXaXRob3V0IHRoZSBwYXRjaCwgcmVu
ZGVyaW5nIGlzIGJlbG93IDFmcHMuIFdpdGggdGhlIHBhdGNoLCByZW5kZXJpbmcgaXMgZmx1aWQu
CisKKyAgICAgICAgVGVzdHM6IHN2Zy9jc3MvYnVmZmVyZWQtcmVuZGVyaW5nLmh0bWwKKyAgICAg
ICAgICAgICAgIHN2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1pbWFnZS5odG1sCisKKyAg
ICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIEVCdWZmZXJlZFJlbmRlcmluZyk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Ojppc0luaGVyaXRl
ZFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
U1ZHUHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL1NWR0NTU1BhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUpOgorICAgICAgICAqIGNz
cy9TVkdDU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9TVkdDU1NTdHlsZVNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZHUHJvcGVy
dHkpOgorICAgICAgICAqIGNzcy9TVkdDU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJTdHlsZTo6ZGlmZik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0
eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEJ1ZmZlcmVk
UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRCdWZmZXJl
ZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6YnVmZmVyZWRS
ZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnNldEJpdERlZmF1
bHRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQpOgorCisgICAgICAgICAgICBUaGUgZm9yZWdyb3Vu
ZCBwYWludGluZyBoYXMgYmVlbiBleHRyYWN0ZWQgb3V0IGludG8gYSBzZXBhcmF0ZSBmdW5jdGlv
bi4gVGhpcyBoYXMgYWxzbworICAgICAgICAgICAgYmVlbiBjaGFuZ2VkIHNvIHRoYXQgaWYgdGhl
IGJ1ZmZlcmVkLXJlbmRlcmluZyBoaW50IGlzIHByZXNlbnQsIGJ1ZmZlckZvcmVncm91bmQKKyAg
ICAgICAgICAgIGlzIHVzZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpw
YWludEZvcmVncm91bmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdJbWFnZTo6aW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCk6CisKKyAgICAgICAg
ICAgIFRoaXMgZnVuY3Rpb24gY291bGQgYmUgcmVwbGFjZWQgd2l0aCAibV9idWZmZXJlZEZvcmVn
cm91bmQgPSAwIiBidXQgb3RoZXIgcmVuZGVyZXJzCisgICAgICAgICAgICAoc3VjaCBhcyBjb250
YWluZXIgZWxlbWVudHMpIHdpbGwgcmVxdWlyZSBtb3JlIGNvbXBsZXggaW52YWxpZGF0aW9uIGxv
Z2ljLiBUbworICAgICAgICAgICAgbWFpbnRhaW4gY29uc2lzdGVuY3kgd2l0aCB0aGlzIGZ1dHVy
ZSBjb2RlLCBpbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kIGhhcyBiZWVuIHVzZWQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKFJlbmRlclNWR0ltYWdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKFNWR1JlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6
OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmNz
c1Byb3BlcnR5VG9UeXBlTWFwKToKKyAgICAgICAgKiBzdmcvc3ZnYXR0cnMuaW46CisKIDIwMTMt
MDMtMjQgIEtvbmRhcGFsbHlLYWx5YW4gIDxrYWx5YW4ua29uZGFwYWxseUBpbnRlbC5jb20+CiAK
ICAgICAgICAgW0VGTF0gQWRkIHN1cHBvcnQgdG8gY2hlY2sgZm9yIGN1cnJlbnQgRHJhd2FibGUu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcAkocmV2aXNpb24gMTQ2NTI5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Miw2ICszODIs
NyBAQCBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb21wdXRlZFByb3BlCiAgICAgQ1NTUHJv
cGVydHlXZWJraXRXcmFwVGhyb3VnaCwKICNlbmRpZgogI2lmIEVOQUJMRShTVkcpCisgICAgQ1NT
UHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZywKICAgICBDU1NQcm9wZXJ0eUNsaXBQYXRoLAogICAg
IENTU1Byb3BlcnR5Q2xpcFJ1bGUsCiAgICAgQ1NTUHJvcGVydHlNYXNrLApAQCAtMjgyMSw2ICsy
ODIyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoU1ZHKQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5k
ZXJpbmc6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwUGF0aDoKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUNsaXBSdWxlOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFzazoKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2
aXNpb24gMTQ2NTI5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDIzOCw2ICs0MjM4LDM4IEBAIHRlbXBsYXRlPGlu
dCBzdXBwb3J0ZWQ+IExlbmd0aCBDU1NQcmltaXQKIAogI2lmIEVOQUJMRShTVkcpCiAKK3RlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFQnVmZmVy
ZWRSZW5kZXJpbmcgZSkKKyAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQoreworICAgIG1f
cHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfSURFTlQ7CisgICAgc3dpdGNoIChlKSB7CisgICAgY2Fz
ZSBCUl9BVVRPOgorICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVBdXRvOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEJSX0RZTkFNSUM6CisgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBD
U1NWYWx1ZUR5bmFtaWM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQlJfU1RBVElDOgorICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVTdGF0aWM7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVC
dWZmZXJlZFJlbmRlcmluZygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7
CisgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgIHJldHVybiBCUl9BVVRPOworICAgIGNh
c2UgQ1NTVmFsdWVEeW5hbWljOgorICAgICAgICByZXR1cm4gQlJfRFlOQU1JQzsKKyAgICBjYXNl
IENTU1ZhbHVlU3RhdGljOgorICAgICAgICByZXR1cm4gQlJfU1RBVElDOworICAgIH0KKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBCUl9BVVRPOworfQorCiB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUNvbG9ySW50
ZXJwb2xhdGlvbiBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE0NjUyOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5MSw2ICs2OTEs
NyBAQCBib29sIENTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KENTCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhc2VsaW5lU2hpZnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFz
ZWxpbmU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdDoKKyAgICBjYXNlIENTU1By
b3BlcnR5QnVmZmVyZWRSZW5kZXJpbmc6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFN2Z1No
YWRvdzoKICNlbmRpZgogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCShyZXZpc2lvbiAxNDY1MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYgKzE3Nyw4IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nOgorICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUtPmJ1ZmZlcmVkUmVuZGVyaW5n
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6
CiAgICAgICAgICAgICByZXR1cm4gZ2x5cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUo
c3ZnU3R5bGUtPmdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMTQ2NTI5KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTEgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgdmFsaWRf
cHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENTU1Byb3BlcnR5
QnVmZmVyZWRSZW5kZXJpbmc6IC8vIGF1dG8gfCBkeW5hbWljIHwgc3RhdGljCisgICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVEeW5hbWljIHx8IGlkID09IENT
U1ZhbHVlU3RhdGljKQorICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JQcm9maWxlOiAvLyBhdXRvIHwg
c1JHQiB8IDxuYW1lPiB8IDx1cmk+IGluaGVyaXQKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
QXV0byB8fCBpZCA9PSBDU1NWYWx1ZVNyZ2IpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUg
PSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMuaW4J
KHJldmlzaW9uIDE0NjUyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQcm9wZXJ0eU5h
bWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQAogI2lmIGRlZmluZWQoRU5BQkxF
X1NWRykgJiYgRU5BQkxFX1NWRwogCiAvLyBTVkcgc3R5bGUgcHJvcHMKK2J1ZmZlcmVkLXJlbmRl
cmluZwogY2xpcC1wYXRoCiBjbGlwLXJ1bGUKIG1hc2sKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE0NjUyOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg4
LDYgKzU4OCwxNCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZHUHJvcGVydHkoQ1NTCiAg
ICAgICAgICAgICBzdmdzdHlsZS0+c2V0VmVjdG9yRWZmZWN0KCpwcmltaXRpdmVWYWx1ZSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5QnVm
ZmVyZWRSZW5kZXJpbmc6IHsKKyAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
KGJ1ZmZlcmVkUmVuZGVyaW5nLCBCdWZmZXJlZFJlbmRlcmluZykKKyAgICAgICAgICAgIGlmICgh
cHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHN2
Z3N0eWxlLT5zZXRCdWZmZXJlZFJlbmRlcmluZygqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hc2tUeXBlOiB7
CiAgICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXNrVHlwZSwgTWFza1R5
cGUpCiAgICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1ZhbHVlS2V5d29yZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDE0NjUyOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TVkdDU1NWYWx1ZUtleXdvcmRzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjQsNiArMjY0LDExIEBAIHJlc2V0LXNpemUKIC8vIG1pZGRsZQogLy8gZW5kCiAKKy8vIENTU19Q
Uk9QX0JVRkZFUkVEX1JFTkRFUklORworLy8gYXV0bworLy8gc3RhdGljCitkeW5hbWljCisKIC8v
IENTU19QUk9QX1ZFQ1RPUl9FRkZFQ1QKIC8vIG5vbmUKIG5vbi1zY2FsaW5nLXN0cm9rZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
Y3BwCShyZXZpc2lvbiAxNDY1MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U1ZHUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDkgQEAgU3R5
bGVEaWZmZXJlbmNlIFNWR1JlbmRlclN0eWxlOjpkaWZmKGNvbgogICAgIGlmIChzdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVjdCAhPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9m
bGFncy5mLl92ZWN0b3JFZmZlY3QpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBh
aW50OwogCisgICAgaWYgKHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmlu
ZyAhPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nKQor
ICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsKKwogICAgIGlmIChzdmdfbm9u
aW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGUgIT0gb3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxh
Z3MuZi5tYXNrVHlwZSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHls
ZS5oCShyZXZpc2lvbiAxNDY1MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U1ZHUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEVEb21pbmFudEJhc2VsaW5lIGluaXRpYWxEb21pbmFudEJhc2VsaW5lKCkg
eyByZXR1cm4gREJfQVVUTzsgfQogICAgIHN0YXRpYyBFQmFzZWxpbmVTaGlmdCBpbml0aWFsQmFz
ZWxpbmVTaGlmdCgpIHsgcmV0dXJuIEJTX0JBU0VMSU5FOyB9CiAgICAgc3RhdGljIEVWZWN0b3JF
ZmZlY3QgaW5pdGlhbFZlY3RvckVmZmVjdCgpIHsgcmV0dXJuIFZFX05PTkU7IH0KKyAgICBzdGF0
aWMgRUJ1ZmZlcmVkUmVuZGVyaW5nIGluaXRpYWxCdWZmZXJlZFJlbmRlcmluZygpIHsgcmV0dXJu
IEJSX0FVVE87IH0KICAgICBzdGF0aWMgTGluZUNhcCBpbml0aWFsQ2FwU3R5bGUoKSB7IHJldHVy
biBCdXR0Q2FwOyB9CiAgICAgc3RhdGljIFdpbmRSdWxlIGluaXRpYWxDbGlwUnVsZSgpIHsgcmV0
dXJuIFJVTEVfTk9OWkVSTzsgfQogICAgIHN0YXRpYyBFQ29sb3JJbnRlcnBvbGF0aW9uIGluaXRp
YWxDb2xvckludGVycG9sYXRpb24oKSB7IHJldHVybiBDSV9TUkdCOyB9CkBAIC0xMjgsNiArMTI5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RG9taW5hbnRCYXNlbGluZShFRG9taW5hbnRCYXNl
bGluZSB2YWwpIHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lID0g
dmFsOyB9CiAgICAgdm9pZCBzZXRCYXNlbGluZVNoaWZ0KEVCYXNlbGluZVNoaWZ0IHZhbCkgeyBz
dmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQgPSB2YWw7IH0KICAgICB2b2lk
IHNldFZlY3RvckVmZmVjdChFVmVjdG9yRWZmZWN0IHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2Zs
YWdzLmYuX3ZlY3RvckVmZmVjdCA9IHZhbDsgfQorICAgIHZvaWQgc2V0QnVmZmVyZWRSZW5kZXJp
bmcoRUJ1ZmZlcmVkUmVuZGVyaW5nIHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuYnVm
ZmVyZWRSZW5kZXJpbmcgPSB2YWw7IH0KICAgICB2b2lkIHNldENhcFN0eWxlKExpbmVDYXAgdmFs
KSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlID0gdmFsOyB9CiAgICAgdm9pZCBzZXRD
bGlwUnVsZShXaW5kUnVsZSB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1bGUgPSB2
YWw7IH0KICAgICB2b2lkIHNldENvbG9ySW50ZXJwb2xhdGlvbihFQ29sb3JJbnRlcnBvbGF0aW9u
IHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb24gPSB2YWw7IH0K
QEAgLTMwNSw2ICszMDcsNyBAQCBwdWJsaWM6CiAgICAgRURvbWluYW50QmFzZWxpbmUgZG9taW5h
bnRCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIChFRG9taW5hbnRCYXNlbGluZSkgc3ZnX25vbmlu
aGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lOyB9CiAgICAgRUJhc2VsaW5lU2hpZnQg
YmFzZWxpbmVTaGlmdCgpIGNvbnN0IHsgcmV0dXJuIChFQmFzZWxpbmVTaGlmdCkgc3ZnX25vbmlu
aGVyaXRlZF9mbGFncy5mLl9iYXNlbGluZVNoaWZ0OyB9CiAgICAgRVZlY3RvckVmZmVjdCB2ZWN0
b3JFZmZlY3QoKSBjb25zdCB7IHJldHVybiAoRVZlY3RvckVmZmVjdCkgc3ZnX25vbmluaGVyaXRl
ZF9mbGFncy5mLl92ZWN0b3JFZmZlY3Q7IH0KKyAgICBFQnVmZmVyZWRSZW5kZXJpbmcgYnVmZmVy
ZWRSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiAoRUJ1ZmZlcmVkUmVuZGVyaW5nKSBzdmdfbm9u
aW5oZXJpdGVkX2ZsYWdzLmYuYnVmZmVyZWRSZW5kZXJpbmc7IH0KICAgICBMaW5lQ2FwIGNhcFN0
eWxlKCkgY29uc3QgeyByZXR1cm4gKExpbmVDYXApIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0
eWxlOyB9CiAgICAgV2luZFJ1bGUgY2xpcFJ1bGUoKSBjb25zdCB7IHJldHVybiAoV2luZFJ1bGUp
IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NsaXBSdWxlOyB9CiAgICAgRUNvbG9ySW50ZXJwb2xhdGlv
biBjb2xvckludGVycG9sYXRpb24oKSBjb25zdCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlv
bikgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uOyB9CkBAIC00MTIsOCAr
NDE1LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9kb21pbmFudEJh
c2VsaW5lIDogNDsgLy8gRURvbWluYW50QmFzZWxpbmUKICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBfYmFzZWxpbmVTaGlmdCA6IDI7IC8vIEVCYXNlbGluZVNoaWZ0CiAgICAgICAgICAgICAgICAg
dW5zaWduZWQgX3ZlY3RvckVmZmVjdDogMTsgLy8gRVZlY3RvckVmZmVjdAorICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGJ1ZmZlcmVkUmVuZGVyaW5nOiAyOyAvLyBFQnVmZmVyZWRSZW5kZXJpbmcK
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXNrVHlwZTogMTsgLy8gRU1hc2tUeXBlCi0gICAg
ICAgICAgICAgICAgLy8gMjAgYml0cyB1bnVzZWQKKyAgICAgICAgICAgICAgICAvLyAxOCBiaXRz
IHVudXNlZAogICAgICAgICAgICAgfSBmOwogICAgICAgICAgICAgdWludDMyX3QgX25pZmxhZ3M7
CiAgICAgICAgIH07CkBAIC00NTgsNiArNDYyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3ZnX25v
bmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lID0gaW5pdGlhbERvbWluYW50QmFz
ZWxpbmUoKTsKICAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9iYXNlbGluZVNoaWZ0
ID0gaW5pdGlhbEJhc2VsaW5lU2hpZnQoKTsKICAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFn
cy5mLl92ZWN0b3JFZmZlY3QgPSBpbml0aWFsVmVjdG9yRWZmZWN0KCk7CisgICAgICAgIHN2Z19u
b25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmluZyA9IGluaXRpYWxCdWZmZXJlZFJl
bmRlcmluZygpOwogICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGUgPSBp
bml0aWFsTWFza1R5cGUoKTsKICAgICB9CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaAkocmV2aXNpb24gMTQ2NTI5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFZFX05PTl9TQ0FMSU5HX1NUUk9LRQogICAgIH07CiAKKyAgICBlbnVtIEVCdWZmZXJl
ZFJlbmRlcmluZyB7CisgICAgICAgIEJSX0FVVE8sCisgICAgICAgIEJSX0RZTkFNSUMsCisgICAg
ICAgIEJSX1NUQVRJQworICAgIH07CisKICAgICBlbnVtIEVNYXNrVHlwZSB7CiAgICAgICAgIE1U
X0xVTUlOQU5DRSwKICAgICAgICAgTVRfQUxQSEEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAxNDY1MjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMyLDE0ICsxMzIsMTAgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFp
bnRJbmZvJiBwYQogICAgICAgICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250
ZXh0KHRoaXMsIGNoaWxkUGFpbnRJbmZvKTsKIAogICAgICAgICAgICAgaWYgKHJlbmRlcmluZ0Nv
bnRleHQuaXNSZW5kZXJpbmdQcmVwYXJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPElt
YWdlPiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKTsKLSAgICAgICAgICAgICAgICBG
bG9hdFJlY3QgZGVzdFJlY3QgPSBtX29iamVjdEJvdW5kaW5nQm94OwotICAgICAgICAgICAgICAg
IEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkp
OworICAgICAgICAgICAgICAgIGlmIChzdHlsZSgpLT5zdmdTdHlsZSgpLT5idWZmZXJlZFJlbmRl
cmluZygpID09IEJSX1NUQVRJQyAgJiYgcmVuZGVyaW5nQ29udGV4dC5idWZmZXJGb3JlZ3JvdW5k
KG1fYnVmZmVyZWRGb3JlZ3JvdW5kKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgICAgICAgICAgU1ZHSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxTVkdJbWFnZUVsZW1lbnQqPihub2RlKCkpOwotICAgICAgICAgICAgICAgIGltYWdlRWxlbWVu
dC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3Qp
OwotCi0gICAgICAgICAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGlt
YWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAg
ICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5kKGNoaWxkUGFpbnRJbmZvKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCkBAIC0xNDgsNiArMTQ0LDIzIEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6
OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBh
aW50Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKK3sKKyAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZSgpOworICAgIEZsb2F0UmVjdCBkZXN0UmVj
dCA9IG1fb2JqZWN0Qm91bmRpbmdCb3g7CisgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1h
Z2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7CisKKyAgICBTVkdJbWFnZUVsZW1lbnQqIGlt
YWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7CisgICAg
aW1hZ2VFbGVtZW50LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkudHJhbnNmb3JtUmVjdChkZXN0UmVj
dCwgc3JjUmVjdCk7CisKKyAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdl
dCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7Cit9CisKK3ZvaWQg
UmVuZGVyU1ZHSW1hZ2U6OmludmFsaWRhdGVCdWZmZXJlZEZvcmVncm91bmQoKQoreworICAgIG1f
YnVmZmVyZWRGb3JlZ3JvdW5kID0gMDsKK30KKwogYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0
RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYg
cmVzdWx0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uIGhp
dFRlc3RBY3Rpb24pCiB7CiAgICAgLy8gV2Ugb25seSBkcmF3IGluIHRoZSBmb3Jncm91bmQgcGhh
c2UsIHNvIHdlIG9ubHkgaGl0LXRlc3QgdGhlbi4KQEAgLTE4OCw2ICsyMDEsOCBAQCB2b2lkIFJl
bmRlclNWR0ltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlCiAgICAgbV9vYmplY3RCb3VuZGluZ0Jv
eCA9IEZsb2F0UmVjdCgpOwogICAgIHVwZGF0ZUltYWdlVmlld3BvcnQoKTsKIAorICAgIGludmFs
aWRhdGVCdWZmZXJlZEZvcmVncm91bmQoKTsKKwogICAgIHJlcGFpbnQoKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAkocmV2aXNp
b24gMTQ2NTI5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSwxMiBAQCBwdWJsaWM6CiAgICAgUmVuZGVy
SW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJjZSgpIHsgcmV0dXJuIG1faW1hZ2VSZXNvdXJjZS5n
ZXQoKTsgfQogICAgIGNvbnN0IFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0KIAorICAgIC8vIE5vdGU6IEFz
c3VtZXMgdGhlIFBhaW50SW5mbyBjb250ZXh0IGhhcyBoYWQgYWxsIGxvY2FsIHRyYW5zZm9ybXMg
YXBwbGllZC4KKyAgICB2b2lkIHBhaW50Rm9yZWdyb3VuZChQYWludEluZm8mKTsKKwogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAi
UmVuZGVyU1ZHSW1hZ2UiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zv
cm07IH0KIApAQCAtNjcsNiArNzAsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKTsKIAorICAgIHZvaWQgaW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCgpOworCiAgICAg
dmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlv
bik7CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KQEAgLTc5LDYgKzg0LDggQEAgcHJpdmF0ZToK
ICAgICBGbG9hdFJlY3QgbV9yZXBhaW50Qm91bmRpbmdCb3g7CiAgICAgRmxvYXRSZWN0IG1fcmVw
YWludEJvdW5kaW5nQm94RXhjbHVkaW5nU2hhZG93OwogICAgIE93blB0cjxSZW5kZXJJbWFnZVJl
c291cmNlPiBtX2ltYWdlUmVzb3VyY2U7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fYnVm
ZmVyZWRGb3JlZ3JvdW5kOwogfTsKIAogaW5saW5lIFJlbmRlclNWR0ltYWdlKiB0b1JlbmRlclNW
R0ltYWdlKFJlbmRlck9iamVjdCogb2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNDY1
MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1
ZGUgIlJlbmRlclNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNp
bmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5oIgpAQCAtMzI0LDYgKzMyNSw0MiBAQCB2b2lkIFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNsZWFyMkRSb3RhdGlvCiAgICAgdHJhbnNmb3JtLnJlY29tcG9zZShkZWNvbXBvc2l0
aW9uKTsKIH0KIAorYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKE93
blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKQoreworICAgIEFTU0VSVChtX3BhaW50SW5m
byk7CisgICAgQVNTRVJUKG1fb2JqZWN0LT5pc1NWR0ltYWdlKCkpOworICAgIEZsb2F0UmVjdCBi
b3VuZGluZ0JveCA9IG1fb2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpOworCisgICAgLy8gSW52
YWxpZGF0ZSBhbiBleGlzdGluZyBidWZmZXIgaWYgdGhlIHNjYWxlIGlzIG5vdCBjb3JyZWN0Lgor
ICAgIGlmIChpbWFnZUJ1ZmZlcikgeworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3Jt
ID0gbV9wYWludEluZm8tPmNvbnRleHQtPmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRl
bHlJbmNsdWRlRGV2aWNlU2NhbGUpOworICAgICAgICBJbnRTaXplIGV4cGFuZGVkQm91bmRpbmdC
b3ggPSBleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKTsKKyAgICAgICAgSW50U2l6
ZSBidWZmZXJTaXplKHN0YXRpY19jYXN0PGludD4oY2VpbChleHBhbmRlZEJvdW5kaW5nQm94Lndp
ZHRoKCkgKiB0cmFuc2Zvcm0ueFNjYWxlKCkpKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsKGV4cGFu
ZGVkQm91bmRpbmdCb3guaGVpZ2h0KCkgKiB0cmFuc2Zvcm0ueVNjYWxlKCkpKSk7CisgICAgICAg
IGlmIChidWZmZXJTaXplICE9IGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKSkKKyAgICAgICAg
ICAgIGltYWdlQnVmZmVyID0gMDsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgYnVmZmVy
IGFuZCBwYWludCB0aGUgZm9yZWdyb3VuZCBpbnRvIGl0LgorICAgIGlmICghaW1hZ2VCdWZmZXIp
IHsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4dC0+Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgdHJ1ZSk7
CisKKyAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRl
eHQqIGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Cisg
ICAgICAgICAgICBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQtPnRyYW5zbGF0ZSgtYm91bmRpbmdC
b3gueCgpLCAtYm91bmRpbmdCb3gueSgpKTsKKyAgICAgICAgICAgIFBhaW50SW5mbyBidWZmZXJl
ZEluZm8oKm1fcGFpbnRJbmZvKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkSW5mby5jb250ZXh0ID0g
YnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0OworCisgICAgICAgICAgICB0b1JlbmRlclNWR0ltYWdl
KG1fb2JqZWN0KS0+cGFpbnRGb3JlZ3JvdW5kKGJ1ZmZlcmVkSW5mbyk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBtX3BhaW50SW5mby0+Y29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgp
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBib3VuZGluZ0JveCk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gMTQ2NTI5KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTkzLDYgKzkzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVj
dChhYnNvbHV0ZVRyYW5zZm9ybS5tYXBSZWN0KHRhcmdldFJlY3QpKTsKICAgICB9CiAKKyAgICAv
LyBTdXBwb3J0IGZvciB0aGUgYnVmZmVyZWQtcmVuZGVyaW5nIGhpbnQuCisgICAgYm9vbCBidWZm
ZXJGb3JlZ3JvdW5kKE93blB0cjxJbWFnZUJ1ZmZlcj4mKTsKKwogcHJpdmF0ZToKICAgICAvLyBU
byBwcm9wZXJseSByZXZlcnQgcGFydGlhbGx5IHN1Y2Nlc3NmdWwgaW5pdGlhbGl6dGlvbnMgaW4g
dGhlIGRlc3RydWN0b3IsIHdlIHJlY29yZCBhbGwgc3VjY2Vzc2Z1bCBzdGVwcy4KICAgICBlbnVt
IFJlbmRlcmluZ0ZsYWdzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE0NjUyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBAIENTU1Byb3BlcnR5
SUQgU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGUKICAgICAgICAgLy8gVGhpcyBpcyBhIGxpc3Qg
b2YgYWxsIGJhc2UgQ1NTIGFuZCBTVkcgQ1NTIHByb3BlcnRpZXMgd2hpY2ggYXJlIGV4cG9zZWQg
YXMgU1ZHIFhNTCBhdHRyaWJ1dGVzCiAgICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHko
cHJvcGVydHlOYW1lVG9JZE1hcCwgYWxpZ25tZW50X2Jhc2VsaW5lQXR0cik7CiAgICAgICAgIG1h
cEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgYmFzZWxpbmVfc2hp
ZnRBdHRyKTsKKyAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVU
b0lkTWFwLCBidWZmZXJlZF9yZW5kZXJpbmdBdHRyKTsKICAgICAgICAgbWFwQXR0cmlidXRlVG9D
U1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjbGlwQXR0cik7CiAgICAgICAgIG1hcEF0
dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgY2xpcF9wYXRoQXR0cik7
CiAgICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwg
Y2xpcF9ydWxlQXR0cik7CkBAIC0yMTQsNiArMjE1LDcgQEAgc3RhdGljIGlubGluZSBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcAogICAgIC8vIEZpbGwgdGhlIG1hcCBmb3IgdGhlIGZpcnN0IHVz
ZS4KICAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChhbGlnbm1lbnRfYmFzZWxpbmVBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CiAgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoYmFzZWxpbmVfc2hpZnRBdHRy
LCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoYnVmZmVyZWRfcmVu
ZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwogICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNs
aXBBdHRyLCBBbmltYXRlZFJlY3QpOwogICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNsaXBfcGF0
aEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKICAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjbGlwX3J1
bGVBdHRyLCBBbmltYXRlZFN0cmluZyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvc3ZnYXR0
cnMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3N2Z2F0dHJzLmluCShyZXZp
c2lvbiAxNDY1MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvc3ZnYXR0cnMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDYgKzIxLDcgQEAgYmFzZVByb2ZpbGUKIGJib3gKIGJlZ2luCiBiaWFzCiti
dWZmZXJlZC1yZW5kZXJpbmcKIGJ5CiBjYWxjTW9kZQogY2FwLWhlaWdodApJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTQ2NzMzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMjQgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNv
bT4KKworICAgICAgICBbU1ZHMl0gQWRkIHN1cHBvcnQgZm9yIHRoZSBidWZmZXJlZC1yZW5kZXJp
bmcgcHJvcGVydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNDIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3ZnL2Nzcy9idWZmZXJlZC1yZW5kZXJpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvY3NzL2J1ZmZlcmVkLXJlbmRlcmluZy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvcmVwYWludC9idWZmZXJlZC1yZW5kZXJpbmctaW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLWltYWdlLmh0bWw6
IEFkZGVkLgorCiAyMDEzLTAzLTI0ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5j
b20+CiAKICAgICAgICAgQVg6IENyYXNoIGluIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0
dG9uOjppbmNyZW1lbnRCdXR0b24oKQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Nzcy9idWZmZXJl
ZC1yZW5kZXJpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9j
c3MvYnVmZmVyZWQtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3N2Zy9jc3MvYnVmZmVyZWQtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDIwIEBACitUZXN0IHRoYXQgaW1hZ2UgYWNjZXB0IGRpZmZlcmVudCBi
dWZmZXJlZCByZW5kZXJpbmcgdmFsdWVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICIiKSBpcyAiYXV0byIK
K1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgImF1dG8iKSBpcyAiYXV0
byIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgImR5bmFtaWMiKSBp
cyAiZHluYW1pYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgInN0
YXRpYyIpIGlzICJzdGF0aWMiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmlu
ZyIsICIwIikgaXMgInN0YXRpYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVy
aW5nIiwgIjEiKSBpcyAic3RhdGljIgorUEFTUyBjb21wdXRlZFN0eWxlKCJidWZmZXJlZC1yZW5k
ZXJpbmciLCAidHJ1ZSIpIGlzICJzdGF0aWMiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVk
LXJlbmRlcmluZyIsICJkeW5hbWljIikgaXMgImR5bmFtaWMiCitQQVNTIGNvbXB1dGVkU3R5bGUo
ImJ1ZmZlcmVkLXJlbmRlcmluZyIsICIwIikgaXMgImR5bmFtaWMiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICIxIikgaXMgImR5bmFtaWMiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJ0cnVlIikgaXMgImR5bmFtaWMiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvc3ZnL2Nzcy9idWZmZXJlZC1yZW5kZXJpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdmcvY3NzL2J1ZmZlcmVkLXJlbmRlcmluZy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvc3ZnL2Nzcy9idWZmZXJlZC1yZW5kZXJpbmcuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgorKiB7
IGZvbnQtc2l6ZTogMTZweDsgfQorZGl2IHsgZm9udC1zaXplOiA4cHg7IH0KKzwvc3R5bGU+Cis8
Ym9keT4KKzxzdmc+PGltYWdlIGlkPSJpbWFnZSI+PC9pbWFnZT48L3N2Zz4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBpbWFnZSBhY2NlcHQgZGlmZmVyZW50IGJ1ZmZl
cmVkIHJlbmRlcmluZyB2YWx1ZXMnKTsKKwordmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2ltYWdlJyk7CisKK2Z1bmN0aW9uIGNvbXB1dGVkU3R5bGUocHJvcGVydHksIHZhbHVl
KSB7CisgICAgaW1hZ2Uuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHksIHZhbHVlKTsKKyAgICBy
ZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShpbWFnZSkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSk7
Cit9CisKK2Z1bmN0aW9uIHRlc3QocHJvcGVydHksIHZhbHVlLCBleHBlY3RlZCkgeworICAgIGlm
IChleHBlY3RlZCA9PT0gbnVsbCkKKyAgICAgICAgc2hvdWxkQmVOdWxsKCdjb21wdXRlZFN0eWxl
KCInICsgcHJvcGVydHkgKyAnIiwgIicgKyB2YWx1ZSArICciKScpOworICAgIGVsc2UKKyAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjb21wdXRlZFN0eWxlKCInICsgcHJvcGVydHkgKyAn
IiwgIicgKyB2YWx1ZSArICciKScsIGV4cGVjdGVkKTsKK30KKwordGVzdCgiYnVmZmVyZWQtcmVu
ZGVyaW5nIiwgIiIsICJhdXRvIik7Cit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiYXV0byIs
ICJhdXRvIik7Cit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiZHluYW1pYyIsICJkeW5hbWlj
Iik7Cit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAic3RhdGljIiwgInN0YXRpYyIpOworCisv
LyBuZWdhdGl2ZSB0ZXN0cwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjAiLCAic3RhdGlj
Iik7Cit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiMSIsICJzdGF0aWMiKTsKK3Rlc3QoImJ1
ZmZlcmVkLXJlbmRlcmluZyIsICJ0cnVlIiwgInN0YXRpYyIpOworCisvLyBtYWtlIHN1cmUgdmFs
aWQgdmFsdWVzIHN0aWxsIHdvcmsKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJkeW5hbWlj
IiwgImR5bmFtaWMiKTsKKworLy8gbW9yZSBuZWdhdGl2ZSB0ZXN0cwordGVzdCgiYnVmZmVyZWQt
cmVuZGVyaW5nIiwgIjAiLCAiZHluYW1pYyIpOwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwg
IjEiLCAiZHluYW1pYyIpOwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgInRydWUiLCAiZHlu
YW1pYyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvcmVwYWludC9idWZmZXJlZC1y
ZW5kZXJpbmctaW1hZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvcmVwYWludC9idWZmZXJlZC1yZW5kZXJpbmctaW1hZ2UtZXhwZWN0ZWQuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1pbWFn
ZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9yZXBh
aW50L3Jlc291cmNlcy9yZXBhaW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAg
ICBmdW5jdGlvbiByZXBhaW50VGVzdCgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdiZWhpbmRTdGF0aWMnKS5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnZ3JlZW4nKTsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFuc2xhdGVTdGF0aWMnKS5zZXRB
dHRyaWJ1dGUoJ3gnLCAnMCcpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RyYW5zZm9ybVN0YXRpYycpLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgw
IDApJyk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NhbGVTdGF0aWMn
KS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsICdzY2FsZSgxKScpOworICAgICAgICB9CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blJlcGFpbnRUZXN0KCkiPgorVGVz
dCBmb3IgV0sxMDQyMDc6IFRoaXMgdGVzdCBwYXNzZXMgaWYgdGhlcmUgYXJlIDQgZ3JlZW4gc3F1
YXJlcyBlYWNoIHdpdGggYSBzbW9vdGggYmxhY2sgY2lyY2xlIGluIHRoZSB0b3AtbGVmdCBjb3Ju
ZXIuPGJyLz4KKyAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0NTAiPgorICAgICAgICA8IS0tIFRlc3QgaW52YWxpZGF0aW5nIGNv
bnRlbnQgYmVoaW5kIHRoZSBkeW5hbWljIGNvbnRlbnQuIC0tPgorICAgICAgICA8cmVjdCBpZD0i
YmVoaW5kU3RhdGljIiB4PSI0MCIgeT0iMTAiIHdpZHRoPSIyMCIgaGVpZ2h0PSI4MCIgZmlsbD0i
cmVkIi8+CisgICAgICAgIDxpbWFnZSB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgYnVmZmVyZWQtcmVuZGVyaW5nPSJkeW5hbWljIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2
Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAn
IGhlaWdodD0nMTAwJz48cmVjdCB4PScxMCcgeT0nMTAnIHdpZHRoPSczMCcgaGVpZ2h0PSc4MCcg
ZmlsbD0nZ3JlZW4nLz48cmVjdCB4PSc2MCcgeT0nMTAnIHdpZHRoPSczMCcgaGVpZ2h0PSc4MCcg
ZmlsbD0nZ3JlZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9JzI1JyByPScxMCcgZmlsbD0nZ3JlZW4n
IHN0cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPiIvPgorCisgICAgICAgIDwh
LS0gVGVzdCB0cmFuc2xhdGluZyBkeW5hbWljIGNvbnRlbnQgLS0+CisgICAgICAgIDxyZWN0IHg9
IjIwIiB5PSIxNDAiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0icmVkIi8+CisgICAgICAg
IDxpbWFnZSBpZD0idHJhbnNsYXRlU3RhdGljIiB4PSI1MCIgeT0iMTIwIiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjEwMCIgYnVmZmVyZWQtcmVuZGVyaW5nPSJkeW5hbWljIiB4bGluazpocmVmPSJkYXRh
OmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdp
ZHRoPScxMDAnIGhlaWdodD0nMTAwJz48cmVjdCB4PScxMCUnIHk9JzEwJScgd2lkdGg9JzgwJScg
aGVpZ2h0PSc4MCUnIGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBjeD0nMjUnIGN5PScyNScgcj0nMTAn
IGZpbGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnLz48L3N2Zz4iLz4K
KworICAgICAgICA8IS0tIFRlc3QgdHJhbnNmb3JtaW5nIGR5bmFtaWMgY29udGVudCAtLT4KKyAg
ICAgICAgPHJlY3QgeD0iMjAiIHk9IjI2MCIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSJy
ZWQiLz4KKyAgICAgICAgPGltYWdlIGlkPSJ0cmFuc2Zvcm1TdGF0aWMiIHRyYW5zZm9ybT0ic2tl
d1goMzApIiB4PSIwIiB5PSIyNDAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBidWZmZXJlZC1y
ZW5kZXJpbmc9ImR5bmFtaWMiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAn
PjxyZWN0IHg9JzEwJScgeT0nMTAlJyB3aWR0aD0nODAlJyBoZWlnaHQ9JzgwJScgZmlsbD0nZ3Jl
ZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9JzI1JyByPScxMCcgZmlsbD0nZ3JlZW4nIHN0cm9rZT0n
YmxhY2snIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPiIvPgorCisgICAgICAgIDwhLS0gVGVzdCBz
Y2FsaW5nIGR5bmFtaWMgY29udGVudCAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjM4MCIg
d2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSJyZWQiLz4KKyAgICAgICAgPGltYWdlIGlkPSJz
Y2FsZVN0YXRpYyIgdHJhbnNmb3JtPSJzY2FsZSgwLjEpIiB4PSIwIiB5PSIzNjAiIHdpZHRoPSIx
MDAiIGhlaWdodD0iMTAwIiBidWZmZXJlZC1yZW5kZXJpbmc9ImR5bmFtaWMiIHhsaW5rOmhyZWY9
ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxyZWN0IHg9JzEwJScgeT0nMTAlJyB3aWR0aD0n
ODAlJyBoZWlnaHQ9JzgwJScgZmlsbD0nZ3JlZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9JzI1JyBy
PScxMCcgZmlsbD0nZ3JlZW4nIHN0cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScvPjwvc3Zn
PiIvPgorICAgIDwvc3ZnPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLWltYWdlLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvcmVwYWludC9idWZmZXJlZC1yZW5kZXJpbmctaW1h
Z2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvcmVwYWludC9yZXNv
dXJjZXMvcmVwYWludC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rp
b24gcmVwYWludFRlc3QoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YmVoaW5kU3RhdGljJykuc2V0QXR0cmlidXRlKCdmaWxsJywgJ2dyZWVuJyk7CisgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJhbnNsYXRlU3RhdGljJykuc2V0QXR0cmlidXRl
KCd4JywgJzAnKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFuc2Zv
cm1TdGF0aWMnKS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoMCAwKScpOwor
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjYWxlU3RhdGljJykuc2V0QXR0
cmlidXRlKCd0cmFuc2Zvcm0nLCAnc2NhbGUoMSknKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5SZXBhaW50VGVzdCgpIj4KK1Rlc3QgZm9yIFdL
MTA0MjA3OiBUaGlzIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGFyZSA0IGdyZWVuIHNxdWFyZXMgZWFj
aCB3aXRoIGEgc21vb3RoIGJsYWNrIGNpcmNsZSBpbiB0aGUgdG9wLWxlZnQgY29ybmVyLjxici8+
CisgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDUwIj4KKyAgICAgICAgPCEtLSBUZXN0IGludmFsaWRhdGluZyBjb250ZW50IGJl
aGluZCB0aGUgc3RhdGljIGNvbnRlbnQuIC0tPgorICAgICAgICA8cmVjdCBpZD0iYmVoaW5kU3Rh
dGljIiB4PSI0MCIgeT0iMTAiIHdpZHRoPSIyMCIgaGVpZ2h0PSI4MCIgZmlsbD0icmVkIi8+Cisg
ICAgICAgIDxpbWFnZSB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgYnVmZmVy
ZWQtcmVuZGVyaW5nPSJzdGF0aWMiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3Zn
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScx
MDAnPjxyZWN0IHg9JzEwJyB5PScxMCcgd2lkdGg9JzMwJyBoZWlnaHQ9JzgwJyBmaWxsPSdncmVl
bicvPjxyZWN0IHg9JzYwJyB5PScxMCcgd2lkdGg9JzMwJyBoZWlnaHQ9JzgwJyBmaWxsPSdncmVl
bicvPjxjaXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVlbicgc3Ryb2tlPSdi
bGFjaycgc3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+Ii8+CisKKyAgICAgICAgPCEtLSBUZXN0IHRy
YW5zbGF0aW5nIHN0YXRpYyBjb250ZW50IC0tPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMTQw
IiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9InJlZCIvPgorICAgICAgICA8aW1hZ2UgaWQ9
InRyYW5zbGF0ZVN0YXRpYyIgeD0iNTAiIHk9IjEyMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAi
IGJ1ZmZlcmVkLXJlbmRlcmluZz0ic3RhdGljIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4
bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhl
aWdodD0nMTAwJz48cmVjdCB4PScxMCUnIHk9JzEwJScgd2lkdGg9JzgwJScgaGVpZ2h0PSc4MCUn
IGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBjeD0nMjUnIGN5PScyNScgcj0nMTAnIGZpbGw9J2dyZWVu
JyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnLz48L3N2Zz4iLz4KKworICAgICAgICA8
IS0tIFRlc3QgdHJhbnNmb3JtaW5nIHN0YXRpYyBjb250ZW50IC0tPgorICAgICAgICA8cmVjdCB4
PSIyMCIgeT0iMjYwIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9InJlZCIvPgorICAgICAg
ICA8aW1hZ2UgaWQ9InRyYW5zZm9ybVN0YXRpYyIgdHJhbnNmb3JtPSJza2V3WCgzMCkiIHg9IjAi
IHk9IjI0MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGJ1ZmZlcmVkLXJlbmRlcmluZz0ic3Rh
dGljIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz48cmVjdCB4PScxMCUn
IHk9JzEwJScgd2lkdGg9JzgwJScgaGVpZ2h0PSc4MCUnIGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBj
eD0nMjUnIGN5PScyNScgcj0nMTAnIGZpbGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBzdHJva2Ut
d2lkdGg9JzEnLz48L3N2Zz4iLz4KKworICAgICAgICA8IS0tIFRlc3Qgc2NhbGluZyBzdGF0aWMg
Y29udGVudCAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjM4MCIgd2lkdGg9IjMwIiBoZWln
aHQ9IjMwIiBmaWxsPSJyZWQiLz4KKyAgICAgICAgPGltYWdlIGlkPSJzY2FsZVN0YXRpYyIgdHJh
bnNmb3JtPSJzY2FsZSgwLjEpIiB4PSIwIiB5PSIzNjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAw
IiBidWZmZXJlZC1yZW5kZXJpbmc9InN0YXRpYyIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcr
eG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBo
ZWlnaHQ9JzEwMCc+PHJlY3QgeD0nMTAlJyB5PScxMCUnIHdpZHRoPSc4MCUnIGhlaWdodD0nODAl
JyBmaWxsPSdncmVlbicvPjxjaXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVl
bicgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+Ii8+CisgICAgPC9zdmc+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="216544"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194875</attachid>
            <date>2013-03-25 09:51:38 -0700</date>
            <delta_ts>2013-03-28 22:40:53 -0700</delta_ts>
            <desc>[SVG2] Add support for the buffered-rendering property</desc>
            <filename>104207.4.patch</filename>
            <type>text/plain</type>
            <size>31863</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Njc3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDEzLTAzLTI1ICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NWRzJdIEFkZCBzdXBwb3J0IGZv
ciB0aGUgYnVmZmVyZWQtcmVuZGVyaW5nIGhpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgU1ZHMiBidWZmZXJlZC1y
ZW5kZXJpbmcgcHJvcGVydHkgYW5kIGltcGxlbWVudHMgaXQgZm9yIHRoZSBpbWFnZQorICAgICAg
ICBlbGVtZW50LiBGb3IgcmVmZXJlbmNlLCB0aGUgc3BlYyBjYW4gYmUgZm91bmQgYXQ6CisgICAg
ICAgICAgICBodHRwczovL3N2Z3dnLm9yZy9zdmcyLWRyYWZ0L3NpbmdsZS1wYWdlLmh0bWwjcGFp
bnRpbmctQnVmZmVyZWRSZW5kZXJpbmcKKworICAgICAgICBUaGUgYnVmZmVyZWQtcmVuZGVyaW5n
IGhpbnQgY2F1c2VzIG91ciBpbXBsZW1lbnRhdGlvbiB0byBjcmVhdGUgYSB0ZW1wb3JhcnkgaW1h
Z2UgYnVmZmVyCisgICAgICAgIGZvciBjYWNoaW5nIGFuIGVsZW1lbnQncyBmb3JlZ3JvdW5kIHJl
bmRlcmluZy4gVGhpcyBiZWhhdmlvciBoYXMgYmVlbiBkZXNpZ25lZCB0byBzdXBwb3J0CisgICAg
ICAgIG90aGVyIGdyYXBoaWNhbCBhbmQgY29udGFpbmVyIGVsZW1lbnRzIGluIGZvbGxvd3VwIHBh
dGNoZXMgKHN1Y2ggYXMgdGhlIHVzZSBhbmQgZyBlbGVtZW50cykuCisgICAgICAgIFRoaXMgcGF0
Y2ggc2hvdWxkIG5vdCBhZmZlY3QgcmVuZGVyaW5nLCBhbmQgYSB0ZXN0IGhhcyBiZWVuIGFkZGVk
IHNob3dpbmcgdGhlIGltYWdlCisgICAgICAgIHJlc3VsdHMgYXJlIHVuY2hhbmdlZC4gCisKKyAg
ICAgICAgVGhlIHBlcmZvcm1hbmNlIGFzcGVjdHMgb2YgdGhpcyBwYXRjaCBjYW4gYmUgdGVzdGVk
IHVzaW5nIHRoZSBmb2xsb3dpbmcgdGVzdDoKKyAgICAgICAgICAgIGh0dHA6Ly9waGlsYml0LmNv
bS9ib3VuY2luZ1RpZ2Vycy5odG1sCisgICAgICAgIFdpdGhvdXQgdGhlIHBhdGNoLCByZW5kZXJp
bmcgaXMgYmVsb3cgMWZwcy4gV2l0aCB0aGUgcGF0Y2gsIHJlbmRlcmluZyBpcyBmbHVpZC4KKwor
ICAgICAgICBUZXN0czogc3ZnL2Nzcy9idWZmZXJlZC1yZW5kZXJpbmcuaHRtbAorICAgICAgICAg
ICAgICAgc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLWltYWdlLmh0bWwKKworICAgICAg
ICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgRUJ1ZmZlcmVkUmVuZGVyaW5nKToKKyAgICAgICAgKiBjc3MvQ1NTUHJv
cGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJv
cGVydHkpOgorICAgICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRTVkdQ
cm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZSk6CisgICAgICAgICogY3NzL1NW
R0NTU1Byb3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eSk6
CisgICAgICAgICogY3NzL1NWR0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRl
clN0eWxlOjpkaWZmKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsQnVmZmVyZWRSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnNldEJ1ZmZlcmVkUmVu
ZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpidWZmZXJlZFJlbmRl
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0Qml0RGVmYXVsdHMp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisKKyAgICAgICAgICAgIFRoZSBmb3JlZ3JvdW5kIHBh
aW50aW5nIGhhcyBiZWVuIGV4dHJhY3RlZCBvdXQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uLiBU
aGlzIGhhcyBhbHNvCisgICAgICAgICAgICBiZWVuIGNoYW5nZWQgc28gdGhhdCBpZiB0aGUgYnVm
ZmVyZWQtcmVuZGVyaW5nIGhpbnQgaXMgcHJlc2VudCwgYnVmZmVyRm9yZWdyb3VuZAorICAgICAg
ICAgICAgaXMgdXNlZC4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50
Rm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0ltYWdlOjppbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKToKKworICAgICAgICAgICAg
VGhpcyBmdW5jdGlvbiBjb3VsZCBiZSByZXBsYWNlZCB3aXRoICJtX2J1ZmZlcmVkRm9yZWdyb3Vu
ZC5jbGVhcigpIiBidXQgb3RoZXIgcmVuZGVyZXJzCisgICAgICAgICAgICAoc3VjaCBhcyBjb250
YWluZXIgZWxlbWVudHMpIHdpbGwgcmVxdWlyZSBtb3JlIGNvbXBsZXggaW52YWxpZGF0aW9uIGxv
Z2ljLiBUbworICAgICAgICAgICAgbWFpbnRhaW4gY29uc2lzdGVuY3kgd2l0aCB0aGlzIGZ1dHVy
ZSBjb2RlLCBpbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kIGhhcyBiZWVuIHVzZWQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKFJlbmRlclNWR0ltYWdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKFNWR1JlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6
OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmNz
c1Byb3BlcnR5VG9UeXBlTWFwKToKKyAgICAgICAgKiBzdmcvc3ZnYXR0cnMuaW46CisKIDIwMTMt
MDMtMjUgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbVGltZWxpbmVdIHNldCBnbHVlIHJlY29yZHMgbW9kZSBvZmYgYnkgZGVm
YXVsdApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDE0Njc3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNiAr
MzgyLDcgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9wZQogICAgIENT
U1Byb3BlcnR5V2Via2l0V3JhcFRocm91Z2gsCiAjZW5kaWYKICNpZiBFTkFCTEUoU1ZHKQorICAg
IENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJpbmcsCiAgICAgQ1NTUHJvcGVydHlDbGlwUGF0aCwK
ICAgICBDU1NQcm9wZXJ0eUNsaXBSdWxlLAogICAgIENTU1Byb3BlcnR5TWFzaywKQEAgLTI4MjEs
NiArMjgyMiw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFNWRykKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJ1ZmZlcmVk
UmVuZGVyaW5nOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcFBhdGg6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlDbGlwUnVsZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hc2s6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJ
KHJldmlzaW9uIDE0Njc3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyMzgsNiArNDIzOCwzOCBAQCB0ZW1wbGF0
ZTxpbnQgc3VwcG9ydGVkPiBMZW5ndGggQ1NTUHJpbWl0CiAKICNpZiBFTkFCTEUoU1ZHKQogCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUJ1
ZmZlcmVkUmVuZGVyaW5nIGUpCisgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKK3sKKyAg
ICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX0lERU5UOworICAgIHN3aXRjaCAoZSkgeworICAg
IGNhc2UgQlJfQVVUTzoKKyAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlQXV0bzsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBCUl9EWU5BTUlDOgorICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTVmFsdWVEeW5hbWljOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEJSX1NUQVRJQzoK
KyAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlU3RhdGljOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBFQnVmZmVyZWRSZW5kZXJpbmcoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVu
dCkgeworICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgorICAgICAgICByZXR1cm4gQlJfQVVUTzsKKyAg
ICBjYXNlIENTU1ZhbHVlRHluYW1pYzoKKyAgICAgICAgcmV0dXJuIEJSX0RZTkFNSUM7CisgICAg
Y2FzZSBDU1NWYWx1ZVN0YXRpYzoKKyAgICAgICAgcmV0dXJuIEJSX1NUQVRJQzsKKyAgICB9CisK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQlJfQVVUTzsKK30KKwogdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVDb2xv
ckludGVycG9sYXRpb24gZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCShyZXZpc2lvbiAxNDY3NzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTEsNiAr
NjkxLDcgQEAgYm9vbCBDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShDUwogICAgIGNh
c2UgQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0OgogICAgIGNhc2UgQ1NTUHJvcGVydHlEb21pbmFu
dEJhc2VsaW5lOgogICAgIGNhc2UgQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3Q6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRT
dmdTaGFkb3c6CiAjZW5kaWYKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAkocmV2aXNpb24gMTQ2NzczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw2ICsxNzcs
OCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9
CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZzoKKyAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLT5idWZmZXJlZFJlbmRl
cmluZygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9u
dGFsOgogICAgICAgICAgICAgcmV0dXJuIGdseXBoT3JpZW50YXRpb25Ub0NTU1ByaW1pdGl2ZVZh
bHVlKHN2Z1N0eWxlLT5nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25WZXJ0aWNhbDogewpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL1NWR0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE0Njc3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TVkdDU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDExIEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgIHZh
bGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nOiAvLyBhdXRvIHwgZHluYW1pYyB8IHN0YXRpYworICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlRHluYW1pYyB8fCBpZCA9
PSBDU1NWYWx1ZVN0YXRpYykKKyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7Cisg
ICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yUHJvZmlsZTogLy8gYXV0
byB8IHNSR0IgfCA8bmFtZT4gfCA8dXJpPiBpbmhlcml0CiAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVTcmdiKQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0
aXZlID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQcm9wZXJ0eU5hbWVz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQcm9wZXJ0eU5hbWVz
LmluCShyZXZpc2lvbiAxNDY3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUHJvcGVy
dHlOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAKICNpZiBkZWZpbmVkKEVO
QUJMRV9TVkcpICYmIEVOQUJMRV9TVkcKIAogLy8gU1ZHIHN0eWxlIHByb3BzCitidWZmZXJlZC1y
ZW5kZXJpbmcKIGNsaXAtcGF0aAogY2xpcC1ydWxlCiBtYXNrCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxNDY3NzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU4OCw2ICs1ODgsMTQgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KENT
UwogICAgICAgICAgICAgc3Znc3R5bGUtPnNldFZlY3RvckVmZmVjdCgqcHJpbWl0aXZlVmFsdWUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJ1ZmZlcmVkUmVuZGVyaW5nOiB7CisgICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTChidWZmZXJlZFJlbmRlcmluZywgQnVmZmVyZWRSZW5kZXJpbmcpCisgICAgICAgICAgICBp
ZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICBzdmdzdHlsZS0+c2V0QnVmZmVyZWRSZW5kZXJpbmcoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrVHlw
ZTogewogICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFza1R5cGUsIE1h
c2tUeXBlKQogICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TVkdDU1NWYWx1ZUtleXdvcmRzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TVkdDU1NWYWx1ZUtleXdvcmRzLmluCShyZXZpc2lvbiAxNDY3NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTVmFsdWVLZXl3b3Jkcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMjY0LDYgKzI2NCwxMSBAQCByZXNldC1zaXplCiAvLyBtaWRkbGUKIC8vIGVuZAogCisvLyBD
U1NfUFJPUF9CVUZGRVJFRF9SRU5ERVJJTkcKKy8vIGF1dG8KKy8vIHN0YXRpYworZHluYW1pYwor
CiAvLyBDU1NfUFJPUF9WRUNUT1JfRUZGRUNUCiAvLyBub25lCiBub24tc2NhbGluZy1zdHJva2UK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0
eWxlLmNwcAkocmV2aXNpb24gMTQ2NzczKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw5IEBA
IFN0eWxlRGlmZmVyZW5jZSBTVkdSZW5kZXJTdHlsZTo6ZGlmZihjb24KICAgICBpZiAoc3ZnX25v
bmluaGVyaXRlZF9mbGFncy5mLl92ZWN0b3JFZmZlY3QgIT0gb3RoZXItPnN2Z19ub25pbmhlcml0
ZWRfZmxhZ3MuZi5fdmVjdG9yRWZmZWN0KQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNl
UmVwYWludDsKIAorICAgIGlmIChzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuYnVmZmVyZWRSZW5k
ZXJpbmcgIT0gb3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmlu
ZykKKyAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CisKICAgICBpZiAoc3Zn
X25vbmluaGVyaXRlZF9mbGFncy5mLm1hc2tUeXBlICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVk
X2ZsYWdzLmYubWFza1R5cGUpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuaAkocmV2aXNpb24gMTQ2NzczKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBFRG9taW5hbnRCYXNlbGluZSBpbml0aWFsRG9taW5hbnRCYXNlbGlu
ZSgpIHsgcmV0dXJuIERCX0FVVE87IH0KICAgICBzdGF0aWMgRUJhc2VsaW5lU2hpZnQgaW5pdGlh
bEJhc2VsaW5lU2hpZnQoKSB7IHJldHVybiBCU19CQVNFTElORTsgfQogICAgIHN0YXRpYyBFVmVj
dG9yRWZmZWN0IGluaXRpYWxWZWN0b3JFZmZlY3QoKSB7IHJldHVybiBWRV9OT05FOyB9CisgICAg
c3RhdGljIEVCdWZmZXJlZFJlbmRlcmluZyBpbml0aWFsQnVmZmVyZWRSZW5kZXJpbmcoKSB7IHJl
dHVybiBCUl9BVVRPOyB9CiAgICAgc3RhdGljIExpbmVDYXAgaW5pdGlhbENhcFN0eWxlKCkgeyBy
ZXR1cm4gQnV0dENhcDsgfQogICAgIHN0YXRpYyBXaW5kUnVsZSBpbml0aWFsQ2xpcFJ1bGUoKSB7
IHJldHVybiBSVUxFX05PTlpFUk87IH0KICAgICBzdGF0aWMgRUNvbG9ySW50ZXJwb2xhdGlvbiBp
bml0aWFsQ29sb3JJbnRlcnBvbGF0aW9uKCkgeyByZXR1cm4gQ0lfU1JHQjsgfQpAQCAtMTI4LDYg
KzEyOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERvbWluYW50QmFzZWxpbmUoRURvbWluYW50
QmFzZWxpbmUgdmFsKSB7IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fZG9taW5hbnRCYXNlbGlu
ZSA9IHZhbDsgfQogICAgIHZvaWQgc2V0QmFzZWxpbmVTaGlmdChFQmFzZWxpbmVTaGlmdCB2YWwp
IHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9iYXNlbGluZVNoaWZ0ID0gdmFsOyB9CiAgICAg
dm9pZCBzZXRWZWN0b3JFZmZlY3QoRVZlY3RvckVmZmVjdCB2YWwpIHsgc3ZnX25vbmluaGVyaXRl
ZF9mbGFncy5mLl92ZWN0b3JFZmZlY3QgPSB2YWw7IH0KKyAgICB2b2lkIHNldEJ1ZmZlcmVkUmVu
ZGVyaW5nKEVCdWZmZXJlZFJlbmRlcmluZyB2YWwpIHsgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5m
LmJ1ZmZlcmVkUmVuZGVyaW5nID0gdmFsOyB9CiAgICAgdm9pZCBzZXRDYXBTdHlsZShMaW5lQ2Fw
IHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jYXBTdHlsZSA9IHZhbDsgfQogICAgIHZvaWQg
c2V0Q2xpcFJ1bGUoV2luZFJ1bGUgdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NsaXBSdWxl
ID0gdmFsOyB9CiAgICAgdm9pZCBzZXRDb2xvckludGVycG9sYXRpb24oRUNvbG9ySW50ZXJwb2xh
dGlvbiB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uID0gdmFs
OyB9CkBAIC0zMDUsNiArMzA3LDcgQEAgcHVibGljOgogICAgIEVEb21pbmFudEJhc2VsaW5lIGRv
bWluYW50QmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiAoRURvbWluYW50QmFzZWxpbmUpIHN2Z19u
b25pbmhlcml0ZWRfZmxhZ3MuZi5fZG9taW5hbnRCYXNlbGluZTsgfQogICAgIEVCYXNlbGluZVNo
aWZ0IGJhc2VsaW5lU2hpZnQoKSBjb25zdCB7IHJldHVybiAoRUJhc2VsaW5lU2hpZnQpIHN2Z19u
b25pbmhlcml0ZWRfZmxhZ3MuZi5fYmFzZWxpbmVTaGlmdDsgfQogICAgIEVWZWN0b3JFZmZlY3Qg
dmVjdG9yRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gKEVWZWN0b3JFZmZlY3QpIHN2Z19ub25pbmhl
cml0ZWRfZmxhZ3MuZi5fdmVjdG9yRWZmZWN0OyB9CisgICAgRUJ1ZmZlcmVkUmVuZGVyaW5nIGJ1
ZmZlcmVkUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gKEVCdWZmZXJlZFJlbmRlcmluZykgc3Zn
X25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nOyB9CiAgICAgTGluZUNhcCBj
YXBTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIChMaW5lQ2FwKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9j
YXBTdHlsZTsgfQogICAgIFdpbmRSdWxlIGNsaXBSdWxlKCkgY29uc3QgeyByZXR1cm4gKFdpbmRS
dWxlKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jbGlwUnVsZTsgfQogICAgIEVDb2xvckludGVycG9s
YXRpb24gY29sb3JJbnRlcnBvbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gKEVDb2xvckludGVycG9s
YXRpb24pIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NvbG9ySW50ZXJwb2xhdGlvbjsgfQpAQCAtNDEy
LDggKzQxNSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfZG9taW5h
bnRCYXNlbGluZSA6IDQ7IC8vIEVEb21pbmFudEJhc2VsaW5lCiAgICAgICAgICAgICAgICAgdW5z
aWduZWQgX2Jhc2VsaW5lU2hpZnQgOiAyOyAvLyBFQmFzZWxpbmVTaGlmdAogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIF92ZWN0b3JFZmZlY3Q6IDE7IC8vIEVWZWN0b3JFZmZlY3QKKyAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBidWZmZXJlZFJlbmRlcmluZzogMjsgLy8gRUJ1ZmZlcmVkUmVuZGVy
aW5nCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWFza1R5cGU6IDE7IC8vIEVNYXNrVHlwZQot
ICAgICAgICAgICAgICAgIC8vIDIwIGJpdHMgdW51c2VkCisgICAgICAgICAgICAgICAgLy8gMTgg
Yml0cyB1bnVzZWQKICAgICAgICAgICAgIH0gZjsKICAgICAgICAgICAgIHVpbnQzMl90IF9uaWZs
YWdzOwogICAgICAgICB9OwpAQCAtNDU4LDYgKzQ2Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN2
Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fZG9taW5hbnRCYXNlbGluZSA9IGluaXRpYWxEb21pbmFu
dEJhc2VsaW5lKCk7CiAgICAgICAgIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYmFzZWxpbmVT
aGlmdCA9IGluaXRpYWxCYXNlbGluZVNoaWZ0KCk7CiAgICAgICAgIHN2Z19ub25pbmhlcml0ZWRf
ZmxhZ3MuZi5fdmVjdG9yRWZmZWN0ID0gaW5pdGlhbFZlY3RvckVmZmVjdCgpOworICAgICAgICBz
dmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuYnVmZmVyZWRSZW5kZXJpbmcgPSBpbml0aWFsQnVmZmVy
ZWRSZW5kZXJpbmcoKTsKICAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLm1hc2tUeXBl
ID0gaW5pdGlhbE1hc2tUeXBlKCk7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmgJKHJldmlzaW9uIDE0
Njc3MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURl
ZnMuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBWRV9OT05fU0NBTElOR19TVFJPS0UKICAgICB9OwogCisgICAgZW51bSBFQnVm
ZmVyZWRSZW5kZXJpbmcgeworICAgICAgICBCUl9BVVRPLAorICAgICAgICBCUl9EWU5BTUlDLAor
ICAgICAgICBCUl9TVEFUSUMKKyAgICB9OworCiAgICAgZW51bSBFTWFza1R5cGUgewogICAgICAg
ICBNVF9MVU1JTkFOQ0UsCiAgICAgICAgIE1UX0FMUEhBCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2aXNpb24gMTQ2NzczKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzMiwxNCArMTMyLDEwIEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50
KFBhaW50SW5mbyYgcGEKICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVyaW5n
Q29udGV4dCh0aGlzLCBjaGlsZFBhaW50SW5mbyk7CiAKICAgICAgICAgICAgIGlmIChyZW5kZXJp
bmdDb250ZXh0LmlzUmVuZGVyaW5nUHJlcGFyZWQoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7Ci0gICAgICAgICAgICAg
ICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gbV9vYmplY3RCb3VuZGluZ0JveDsKLSAgICAgICAgICAg
ICAgICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdo
dCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGUoKS0+c3ZnU3R5bGUoKS0+YnVmZmVyZWRS
ZW5kZXJpbmcoKSA9PSBCUl9TVEFUSUMgICYmIHJlbmRlcmluZ0NvbnRleHQuYnVmZmVyRm9yZWdy
b3VuZChtX2J1ZmZlcmVkRm9yZWdyb3VuZCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgICAgIFNWR0ltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9kZSgpKTsKLSAgICAgICAgICAgICAgICBpbWFnZUVs
ZW1lbnQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNS
ZWN0KTsKLQotICAgICAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwor
ICAgICAgICAgICAgICAgIHBhaW50Rm9yZWdyb3VuZChjaGlsZFBhaW50SW5mbyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIApAQCAtMTQ4LDYgKzE0NCwyMyBAQCB2b2lkIFJlbmRlclNWR0lt
YWdlOjpwYWludChQYWludEluZm8mIHBhCiAgICAgfQogfQogCit2b2lkIFJlbmRlclNWR0ltYWdl
OjpwYWludEZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8pCit7CisgICAgUmVmUHRyPElt
YWdlPiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKTsKKyAgICBGbG9hdFJlY3QgZGVz
dFJlY3QgPSBtX29iamVjdEJvdW5kaW5nQm94OworICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAs
IGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOworCisgICAgU1ZHSW1hZ2VFbGVtZW50
KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihub2RlKCkpOwor
ICAgIGltYWdlRWxlbWVudC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVz
dFJlY3QsIHNyY1JlY3QpOworCisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFn
ZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworfQorCit2
b2lkIFJlbmRlclNWR0ltYWdlOjppbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCkKK3sKKyAg
ICBtX2J1ZmZlcmVkRm9yZWdyb3VuZC5jbGVhcigpOworfQorCiBib29sIFJlbmRlclNWR0ltYWdl
Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RB
Y3Rpb24gaGl0VGVzdEFjdGlvbikKIHsKICAgICAvLyBXZSBvbmx5IGRyYXcgaW4gdGhlIGZvcmdy
b3VuZCBwaGFzZSwgc28gd2Ugb25seSBoaXQtdGVzdCB0aGVuLgpAQCAtMTg4LDYgKzIwMSw4IEBA
IHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGUKICAgICBtX29iamVjdEJv
dW5kaW5nQm94ID0gRmxvYXRSZWN0KCk7CiAgICAgdXBkYXRlSW1hZ2VWaWV3cG9ydCgpOwogCisg
ICAgaW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCgpOworCiAgICAgcmVwYWludCgpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5o
CShyZXZpc2lvbiAxNDY3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDEyIEBAIHB1YmxpYzoKICAg
ICBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgeyByZXR1cm4gbV9pbWFnZVJl
c291cmNlLmdldCgpOyB9CiAgICAgY29uc3QgUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VSZXNvdXJjZS5nZXQoKTsgfQogCisgICAgLy8g
Tm90ZTogQXNzdW1lcyB0aGUgUGFpbnRJbmZvIGNvbnRleHQgaGFzIGhhZCBhbGwgbG9jYWwgdHJh
bnNmb3JtcyBhcHBsaWVkLgorICAgIHZvaWQgcGFpbnRGb3JlZ3JvdW5kKFBhaW50SW5mbyYpOwor
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJTVkdJbWFnZSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2Nh
bFRyYW5zZm9ybTsgfQogCkBAIC02Nyw2ICs3MCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpOwogCisgICAgdm9pZCBpbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCk7
CisKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRU
ZXN0QWN0aW9uKTsKIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQpAQCAtNzksNiArODQsOCBAQCBw
cml2YXRlOgogICAgIEZsb2F0UmVjdCBtX3JlcGFpbnRCb3VuZGluZ0JveDsKICAgICBGbG9hdFJl
Y3QgbV9yZXBhaW50Qm91bmRpbmdCb3hFeGNsdWRpbmdTaGFkb3c7CiAgICAgT3duUHRyPFJlbmRl
ckltYWdlUmVzb3VyY2U+IG1faW1hZ2VSZXNvdXJjZTsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZl
cj4gbV9idWZmZXJlZEZvcmVncm91bmQ7CiB9OwogCiBpbmxpbmUgUmVuZGVyU1ZHSW1hZ2UqIHRv
UmVuZGVyU1ZHSW1hZ2UoUmVuZGVyT2JqZWN0KiBvYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlz
aW9uIDE0Njc3MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgi
CisjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJj
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIgogI2luY2x1ZGUgIlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmgiCkBAIC0zMjQsNiArMzI1LDQyIEBAIHZvaWQgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y2xlYXIyRFJvdGF0aW8KICAgICB0cmFuc2Zvcm0ucmVjb21wb3NlKGRl
Y29tcG9zaXRpb24pOwogfQogCitib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVn
cm91bmQoT3duUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIpCit7CisgICAgQVNTRVJUKG1f
cGFpbnRJbmZvKTsKKyAgICBBU1NFUlQobV9vYmplY3QtPmlzU1ZHSW1hZ2UoKSk7CisgICAgRmxv
YXRSZWN0IGJvdW5kaW5nQm94ID0gbV9vYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCk7CisKKyAg
ICAvLyBJbnZhbGlkYXRlIGFuIGV4aXN0aW5nIGJ1ZmZlciBpZiB0aGUgc2NhbGUgaXMgbm90IGNv
cnJlY3QuCisgICAgaWYgKGltYWdlQnVmZmVyKSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBtX3BhaW50SW5mby0+Y29udGV4dC0+Z2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6
RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgICAgIEludFNpemUgZXhwYW5kZWRC
b3VuZGluZ0JveCA9IGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpOworICAgICAg
ICBJbnRTaXplIGJ1ZmZlclNpemUoc3RhdGljX2Nhc3Q8aW50PihjZWlsKGV4cGFuZGVkQm91bmRp
bmdCb3gud2lkdGgoKSAqIHRyYW5zZm9ybS54U2NhbGUoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KGNl
aWwoZXhwYW5kZWRCb3VuZGluZ0JveC5oZWlnaHQoKSAqIHRyYW5zZm9ybS55U2NhbGUoKSkpKTsK
KyAgICAgICAgaWYgKGJ1ZmZlclNpemUgIT0gaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpKQor
ICAgICAgICAgICAgaW1hZ2VCdWZmZXIuY2xlYXIoKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUg
YSBuZXcgYnVmZmVyIGFuZCBwYWludCB0aGUgZm9yZWdyb3VuZCBpbnRvIGl0LgorICAgIGlmICgh
aW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4
dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6
ZSgpKSwgdHJ1ZSk7CisKKyAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CisgICAgICAgICAgICBH
cmFwaGljc0NvbnRleHQqIGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4dCA9IGltYWdlQnVmZmVyLT5j
b250ZXh0KCk7CisgICAgICAgICAgICBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQtPnRyYW5zbGF0
ZSgtYm91bmRpbmdCb3gueCgpLCAtYm91bmRpbmdCb3gueSgpKTsKKyAgICAgICAgICAgIFBhaW50
SW5mbyBidWZmZXJlZEluZm8oKm1fcGFpbnRJbmZvKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkSW5m
by5jb250ZXh0ID0gYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0OworCisgICAgICAgICAgICB0b1Jl
bmRlclNWR0ltYWdlKG1fb2JqZWN0KS0+cGFpbnRGb3JlZ3JvdW5kKGJ1ZmZlcmVkSW5mbyk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBib3VuZGluZ0JveCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gMTQ2NzczKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZW5j
bG9zaW5nSW50UmVjdChhYnNvbHV0ZVRyYW5zZm9ybS5tYXBSZWN0KHRhcmdldFJlY3QpKTsKICAg
ICB9CiAKKyAgICAvLyBTdXBwb3J0IGZvciB0aGUgYnVmZmVyZWQtcmVuZGVyaW5nIGhpbnQuCisg
ICAgYm9vbCBidWZmZXJGb3JlZ3JvdW5kKE93blB0cjxJbWFnZUJ1ZmZlcj4mKTsKKwogcHJpdmF0
ZToKICAgICAvLyBUbyBwcm9wZXJseSByZXZlcnQgcGFydGlhbGx5IHN1Y2Nlc3NmdWwgaW5pdGlh
bGl6dGlvbnMgaW4gdGhlIGRlc3RydWN0b3IsIHdlIHJlY29yZCBhbGwgc3VjY2Vzc2Z1bCBzdGVw
cy4KICAgICBlbnVtIFJlbmRlcmluZ0ZsYWdzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0Njc3MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBA
IENTU1Byb3BlcnR5SUQgU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGUKICAgICAgICAgLy8gVGhp
cyBpcyBhIGxpc3Qgb2YgYWxsIGJhc2UgQ1NTIGFuZCBTVkcgQ1NTIHByb3BlcnRpZXMgd2hpY2gg
YXJlIGV4cG9zZWQgYXMgU1ZHIFhNTCBhdHRyaWJ1dGVzCiAgICAgICAgIG1hcEF0dHJpYnV0ZVRv
Q1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgYWxpZ25tZW50X2Jhc2VsaW5lQXR0cik7
CiAgICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwg
YmFzZWxpbmVfc2hpZnRBdHRyKTsKKyAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShw
cm9wZXJ0eU5hbWVUb0lkTWFwLCBidWZmZXJlZF9yZW5kZXJpbmdBdHRyKTsKICAgICAgICAgbWFw
QXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjbGlwQXR0cik7CiAg
ICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgY2xp
cF9wYXRoQXR0cik7CiAgICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlO
YW1lVG9JZE1hcCwgY2xpcF9ydWxlQXR0cik7CkBAIC0yMTQsNiArMjE1LDcgQEAgc3RhdGljIGlu
bGluZSBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcAogICAgIC8vIEZpbGwgdGhlIG1hcCBmb3Ig
dGhlIGZpcnN0IHVzZS4KICAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChhbGlnbm1lbnRfYmFzZWxp
bmVBdHRyLCBBbmltYXRlZFN0cmluZyk7CiAgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoYmFzZWxp
bmVfc2hpZnRBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQo
YnVmZmVyZWRfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwogICAgIHNfY3NzUHJvcGVy
dHlNYXAuc2V0KGNsaXBBdHRyLCBBbmltYXRlZFJlY3QpOwogICAgIHNfY3NzUHJvcGVydHlNYXAu
c2V0KGNsaXBfcGF0aEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKICAgICBzX2Nzc1Byb3BlcnR5TWFw
LnNldChjbGlwX3J1bGVBdHRyLCBBbmltYXRlZFN0cmluZyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvc3ZnYXR0cnMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3N2Z2F0
dHJzLmluCShyZXZpc2lvbiAxNDY3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvc3ZnYXR0cnMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAgYmFzZVByb2ZpbGUKIGJib3gKIGJl
Z2luCiBiaWFzCitidWZmZXJlZC1yZW5kZXJpbmcKIGJ5CiBjYWxjTW9kZQogY2FwLWhlaWdodApJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTQ2NzgzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMjUgIFBoaWxpcCBSb2dlcnMgIDxw
ZHJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU1ZHMl0gQWRkIHN1cHBvcnQgZm9yIHRoZSBidWZm
ZXJlZC1yZW5kZXJpbmcgaGludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA0MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzdmcvY3NzL2J1ZmZlcmVkLXJlbmRlcmluZy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy9jc3MvYnVmZmVyZWQtcmVuZGVyaW5nLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1pbWFnZS1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvcmVwYWludC9idWZmZXJlZC1yZW5kZXJpbmctaW1h
Z2UuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMjUgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlYmFzZWxpbmUgc3ZnL2N1c3RvbS9tYXJrZXIt
b3JpZW50LWF1dG8KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jc3MvYnVmZmVyZWQtcmVuZGVyaW5n
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3NzL2J1ZmZlcmVk
LXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcv
Y3NzL2J1ZmZlcmVkLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjAgQEAKK1Rlc3QgdGhhdCBpbWFnZSBhY2NlcHQgZGlmZmVyZW50IGJ1ZmZlcmVkIHJlbmRl
cmluZyB2YWx1ZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIiIpIGlzICJhdXRvIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAiYXV0byIpIGlzICJhdXRvIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAiZHluYW1pYyIpIGlzICJkeW5hbWljIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAic3RhdGljIikgaXMgInN0
YXRpYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjAiKSBpcyAi
c3RhdGljIgorUEFTUyBjb21wdXRlZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAiMSIpIGlz
ICJzdGF0aWMiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJ0cnVl
IikgaXMgInN0YXRpYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwg
ImR5bmFtaWMiKSBpcyAiZHluYW1pYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVu
ZGVyaW5nIiwgIjAiKSBpcyAiZHluYW1pYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQt
cmVuZGVyaW5nIiwgIjEiKSBpcyAiZHluYW1pYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVy
ZWQtcmVuZGVyaW5nIiwgInRydWUiKSBpcyAiZHluYW1pYyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3Nz
L2J1ZmZlcmVkLXJlbmRlcmluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9j
c3MvYnVmZmVyZWQtcmVuZGVyaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9z
dmcvY3NzL2J1ZmZlcmVkLXJlbmRlcmluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgorKiB7IGZvbnQtc2l6ZTogMTZw
eDsgfQorZGl2IHsgZm9udC1zaXplOiA4cHg7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxzdmc+PGlt
YWdlIGlkPSJpbWFnZSI+PC9pbWFnZT48L3N2Zz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ1Rlc3QgdGhhdCBpbWFnZSBhY2NlcHQgZGlmZmVyZW50IGJ1ZmZlcmVkIHJlbmRlcmluZyB2
YWx1ZXMnKTsKKwordmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7
CisKK2Z1bmN0aW9uIGNvbXB1dGVkU3R5bGUocHJvcGVydHksIHZhbHVlKSB7CisgICAgaW1hZ2Uu
c3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHksIHZhbHVlKTsKKyAgICByZXR1cm4gZ2V0Q29tcHV0
ZWRTdHlsZShpbWFnZSkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSk7Cit9CisKK2Z1bmN0aW9u
IHRlc3QocHJvcGVydHksIHZhbHVlLCBleHBlY3RlZCkgeworICAgIGlmIChleHBlY3RlZCA9PT0g
bnVsbCkKKyAgICAgICAgc2hvdWxkQmVOdWxsKCdjb21wdXRlZFN0eWxlKCInICsgcHJvcGVydHkg
KyAnIiwgIicgKyB2YWx1ZSArICciKScpOworICAgIGVsc2UKKyAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdjb21wdXRlZFN0eWxlKCInICsgcHJvcGVydHkgKyAnIiwgIicgKyB2YWx1ZSAr
ICciKScsIGV4cGVjdGVkKTsKK30KKwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIiIsICJh
dXRvIik7Cit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiYXV0byIsICJhdXRvIik7Cit0ZXN0
KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiZHluYW1pYyIsICJkeW5hbWljIik7Cit0ZXN0KCJidWZm
ZXJlZC1yZW5kZXJpbmciLCAic3RhdGljIiwgInN0YXRpYyIpOworCisvLyBuZWdhdGl2ZSB0ZXN0
cwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjAiLCAic3RhdGljIik7Cit0ZXN0KCJidWZm
ZXJlZC1yZW5kZXJpbmciLCAiMSIsICJzdGF0aWMiKTsKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmlu
ZyIsICJ0cnVlIiwgInN0YXRpYyIpOworCisvLyBtYWtlIHN1cmUgdmFsaWQgdmFsdWVzIHN0aWxs
IHdvcmsKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJkeW5hbWljIiwgImR5bmFtaWMiKTsK
KworLy8gbW9yZSBuZWdhdGl2ZSB0ZXN0cwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjAi
LCAiZHluYW1pYyIpOwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjEiLCAiZHluYW1pYyIp
OwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgInRydWUiLCAiZHluYW1pYyIpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvcmVwYWludC9idWZmZXJlZC1yZW5kZXJpbmctaW1hZ2Ut
ZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvcmVwYWludC9idWZm
ZXJlZC1yZW5kZXJpbmctaW1hZ2UtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1pbWFnZS1leHBlY3RlZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvcmVwYWludC9yZXNvdXJjZXMvcmVw
YWludC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcmVwYWlu
dFRlc3QoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVoaW5kU3Rh
dGljJykuc2V0QXR0cmlidXRlKCdmaWxsJywgJ2dyZWVuJyk7CisgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndHJhbnNsYXRlU3RhdGljJykuc2V0QXR0cmlidXRlKCd4JywgJzAn
KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFuc2Zvcm1TdGF0aWMn
KS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoMCAwKScpOworICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjYWxlU3RhdGljJykuc2V0QXR0cmlidXRlKCd0
cmFuc2Zvcm0nLCAnc2NhbGUoMSknKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5SZXBhaW50VGVzdCgpIj4KK1Rlc3QgZm9yIFdLMTA0MjA3OiBU
aGlzIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGFyZSA0IGdyZWVuIHNxdWFyZXMgZWFjaCB3aXRoIGEg
c21vb3RoIGJsYWNrIGNpcmNsZSBpbiB0aGUgdG9wLWxlZnQgY29ybmVyLjxici8+CisgICAgPHN2
ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MDAiIGhlaWdodD0i
NDUwIj4KKyAgICAgICAgPCEtLSBUZXN0IGludmFsaWRhdGluZyBjb250ZW50IGJlaGluZCB0aGUg
ZHluYW1pYyBjb250ZW50LiAtLT4KKyAgICAgICAgPHJlY3QgaWQ9ImJlaGluZFN0YXRpYyIgeD0i
NDAiIHk9IjEwIiB3aWR0aD0iMjAiIGhlaWdodD0iODAiIGZpbGw9InJlZCIvPgorICAgICAgICA8
aW1hZ2UgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGJ1ZmZlcmVkLXJlbmRl
cmluZz0iZHluYW1pYyIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+PHJl
Y3QgeD0nMTAnIHk9JzEwJyB3aWR0aD0nMzAnIGhlaWdodD0nODAnIGZpbGw9J2dyZWVuJy8+PHJl
Y3QgeD0nNjAnIHk9JzEwJyB3aWR0aD0nMzAnIGhlaWdodD0nODAnIGZpbGw9J2dyZWVuJy8+PGNp
cmNsZSBjeD0nMjUnIGN5PScyNScgcj0nMTAnIGZpbGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBz
dHJva2Utd2lkdGg9JzEnLz48L3N2Zz4iLz4KKworICAgICAgICA8IS0tIFRlc3QgdHJhbnNsYXRp
bmcgZHluYW1pYyBjb250ZW50IC0tPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMTQwIiB3aWR0
aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9InJlZCIvPgorICAgICAgICA8aW1hZ2UgaWQ9InRyYW5z
bGF0ZVN0YXRpYyIgeD0iNTAiIHk9IjEyMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGJ1ZmZl
cmVkLXJlbmRlcmluZz0iZHluYW1pYyIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sLDxz
dmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9
JzEwMCc+PHJlY3QgeD0nMTAlJyB5PScxMCUnIHdpZHRoPSc4MCUnIGhlaWdodD0nODAlJyBmaWxs
PSdncmVlbicvPjxjaXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVlbicgc3Ry
b2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+Ii8+CisKKyAgICAgICAgPCEtLSBU
ZXN0IHRyYW5zZm9ybWluZyBkeW5hbWljIGNvbnRlbnQgLS0+CisgICAgICAgIDxyZWN0IHg9IjIw
IiB5PSIyNjAiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0icmVkIi8+CisgICAgICAgIDxp
bWFnZSBpZD0idHJhbnNmb3JtU3RhdGljIiB0cmFuc2Zvcm09InNrZXdYKDMwKSIgeD0iMCIgeT0i
MjQwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgYnVmZmVyZWQtcmVuZGVyaW5nPSJkeW5hbWlj
IiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz48cmVjdCB4PScxMCUnIHk9
JzEwJScgd2lkdGg9JzgwJScgaGVpZ2h0PSc4MCUnIGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBjeD0n
MjUnIGN5PScyNScgcj0nMTAnIGZpbGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lk
dGg9JzEnLz48L3N2Zz4iLz4KKworICAgICAgICA8IS0tIFRlc3Qgc2NhbGluZyBkeW5hbWljIGNv
bnRlbnQgLS0+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIzODAiIHdpZHRoPSIzMCIgaGVpZ2h0
PSIzMCIgZmlsbD0icmVkIi8+CisgICAgICAgIDxpbWFnZSBpZD0ic2NhbGVTdGF0aWMiIHRyYW5z
Zm9ybT0ic2NhbGUoMC4xKSIgeD0iMCIgeT0iMzYwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIg
YnVmZmVyZWQtcmVuZGVyaW5nPSJkeW5hbWljIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4
bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhl
aWdodD0nMTAwJz48cmVjdCB4PScxMCUnIHk9JzEwJScgd2lkdGg9JzgwJScgaGVpZ2h0PSc4MCUn
IGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBjeD0nMjUnIGN5PScyNScgcj0nMTAnIGZpbGw9J2dyZWVu
JyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnLz48L3N2Zz4iLz4KKyAgICA8L3N2Zz4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVk
LXJlbmRlcmluZy1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9yZXBh
aW50L2J1ZmZlcmVkLXJlbmRlcmluZy1pbWFnZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLWltYWdlLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9yZXBhaW50L3Jlc291cmNlcy9yZXBhaW50LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiByZXBhaW50VGVzdCgpIHsK
KyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZWhpbmRTdGF0aWMnKS5zZXRB
dHRyaWJ1dGUoJ2ZpbGwnLCAnZ3JlZW4nKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0cmFuc2xhdGVTdGF0aWMnKS5zZXRBdHRyaWJ1dGUoJ3gnLCAnMCcpOworICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyYW5zZm9ybVN0YXRpYycpLnNldEF0dHJp
YnV0ZSgndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgwIDApJyk7CisgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc2NhbGVTdGF0aWMnKS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScs
ICdzY2FsZSgxKScpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blJlcGFpbnRUZXN0KCkiPgorVGVzdCBmb3IgV0sxMDQyMDc6IFRoaXMgdGVzdCBw
YXNzZXMgaWYgdGhlcmUgYXJlIDQgZ3JlZW4gc3F1YXJlcyBlYWNoIHdpdGggYSBzbW9vdGggYmxh
Y2sgY2lyY2xlIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIuPGJyLz4KKyAgICA8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0NTAiPgorICAg
ICAgICA8IS0tIFRlc3QgaW52YWxpZGF0aW5nIGNvbnRlbnQgYmVoaW5kIHRoZSBzdGF0aWMgY29u
dGVudC4gLS0+CisgICAgICAgIDxyZWN0IGlkPSJiZWhpbmRTdGF0aWMiIHg9IjQwIiB5PSIxMCIg
d2lkdGg9IjIwIiBoZWlnaHQ9IjgwIiBmaWxsPSJyZWQiLz4KKyAgICAgICAgPGltYWdlIHg9IjAi
IHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBidWZmZXJlZC1yZW5kZXJpbmc9InN0YXRp
YyIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+PHJlY3QgeD0nMTAnIHk9
JzEwJyB3aWR0aD0nMzAnIGhlaWdodD0nODAnIGZpbGw9J2dyZWVuJy8+PHJlY3QgeD0nNjAnIHk9
JzEwJyB3aWR0aD0nMzAnIGhlaWdodD0nODAnIGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBjeD0nMjUn
IGN5PScyNScgcj0nMTAnIGZpbGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9
JzEnLz48L3N2Zz4iLz4KKworICAgICAgICA8IS0tIFRlc3QgdHJhbnNsYXRpbmcgc3RhdGljIGNv
bnRlbnQgLS0+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIxNDAiIHdpZHRoPSIzMCIgaGVpZ2h0
PSIzMCIgZmlsbD0icmVkIi8+CisgICAgICAgIDxpbWFnZSBpZD0idHJhbnNsYXRlU3RhdGljIiB4
PSI1MCIgeT0iMTIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgYnVmZmVyZWQtcmVuZGVyaW5n
PSJzdGF0aWMiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxyZWN0IHg9
JzEwJScgeT0nMTAlJyB3aWR0aD0nODAlJyBoZWlnaHQ9JzgwJScgZmlsbD0nZ3JlZW4nLz48Y2ly
Y2xlIGN4PScyNScgY3k9JzI1JyByPScxMCcgZmlsbD0nZ3JlZW4nIHN0cm9rZT0nYmxhY2snIHN0
cm9rZS13aWR0aD0nMScvPjwvc3ZnPiIvPgorCisgICAgICAgIDwhLS0gVGVzdCB0cmFuc2Zvcm1p
bmcgc3RhdGljIGNvbnRlbnQgLS0+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyNjAiIHdpZHRo
PSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0icmVkIi8+CisgICAgICAgIDxpbWFnZSBpZD0idHJhbnNm
b3JtU3RhdGljIiB0cmFuc2Zvcm09InNrZXdYKDMwKSIgeD0iMCIgeT0iMjQwIiB3aWR0aD0iMTAw
IiBoZWlnaHQ9IjEwMCIgYnVmZmVyZWQtcmVuZGVyaW5nPSJzdGF0aWMiIHhsaW5rOmhyZWY9ImRh
dGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycg
d2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxyZWN0IHg9JzEwJScgeT0nMTAlJyB3aWR0aD0nODAl
JyBoZWlnaHQ9JzgwJScgZmlsbD0nZ3JlZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9JzI1JyByPScx
MCcgZmlsbD0nZ3JlZW4nIHN0cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPiIv
PgorCisgICAgICAgIDwhLS0gVGVzdCBzY2FsaW5nIHN0YXRpYyBjb250ZW50IC0tPgorICAgICAg
ICA8cmVjdCB4PSIyMCIgeT0iMzgwIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9InJlZCIv
PgorICAgICAgICA8aW1hZ2UgaWQ9InNjYWxlU3RhdGljIiB0cmFuc2Zvcm09InNjYWxlKDAuMSki
IHg9IjAiIHk9IjM2MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGJ1ZmZlcmVkLXJlbmRlcmlu
Zz0ic3RhdGljIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz48cmVjdCB4
PScxMCUnIHk9JzEwJScgd2lkdGg9JzgwJScgaGVpZ2h0PSc4MCUnIGZpbGw9J2dyZWVuJy8+PGNp
cmNsZSBjeD0nMjUnIGN5PScyNScgcj0nMTAnIGZpbGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBz
dHJva2Utd2lkdGg9JzEnLz48L3N2Zz4iLz4KKyAgICA8L3N2Zz4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="216674"
          type_id="1"
          status="-"
          setter="schenney"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194942</attachid>
            <date>2013-03-25 16:32:47 -0700</date>
            <delta_ts>2013-03-28 22:40:53 -0700</delta_ts>
            <desc>Update per reviewer comments</desc>
            <filename>104207.5.patch</filename>
            <type>text/plain</type>
            <size>38674</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Njc3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDEzLTAzLTI1ICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NWRzJdIEFkZCBzdXBwb3J0IGZv
ciB0aGUgYnVmZmVyZWQtcmVuZGVyaW5nIGhpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgU1ZHMiBidWZmZXJlZC1y
ZW5kZXJpbmcgcHJvcGVydHkgYW5kIGltcGxlbWVudHMgaXQgZm9yIHRoZSBpbWFnZQorICAgICAg
ICBlbGVtZW50LiBGb3IgcmVmZXJlbmNlLCB0aGUgc3BlYyBjYW4gYmUgZm91bmQgYXQ6CisgICAg
ICAgICAgICBodHRwczovL3N2Z3dnLm9yZy9zdmcyLWRyYWZ0L3NpbmdsZS1wYWdlLmh0bWwjcGFp
bnRpbmctQnVmZmVyZWRSZW5kZXJpbmcKKworICAgICAgICBUaGUgYnVmZmVyZWQtcmVuZGVyaW5n
IGhpbnQgY2F1c2VzIG91ciBpbXBsZW1lbnRhdGlvbiB0byBjcmVhdGUgYSB0ZW1wb3JhcnkgaW1h
Z2UgYnVmZmVyCisgICAgICAgIGZvciBjYWNoaW5nIGFuIGVsZW1lbnQncyBmb3JlZ3JvdW5kIHJl
bmRlcmluZy4gVGhpcyBiZWhhdmlvciBoYXMgYmVlbiBkZXNpZ25lZCB0byBzdXBwb3J0CisgICAg
ICAgIG90aGVyIGdyYXBoaWNhbCBhbmQgY29udGFpbmVyIGVsZW1lbnRzIGluIGZvbGxvd3VwIHBh
dGNoZXMgKHN1Y2ggYXMgdGhlIHVzZSBhbmQgZyBlbGVtZW50cykuCisgICAgICAgIFRoaXMgcGF0
Y2ggc2hvdWxkIG5vdCBhZmZlY3QgcmVuZGVyaW5nLCBhbmQgYSB0ZXN0IGhhcyBiZWVuIGFkZGVk
IHNob3dpbmcgdGhlIGltYWdlCisgICAgICAgIHJlc3VsdHMgYXJlIHVuY2hhbmdlZC4gCisKKyAg
ICAgICAgVGhlIHBlcmZvcm1hbmNlIGFzcGVjdHMgb2YgdGhpcyBwYXRjaCBjYW4gYmUgdGVzdGVk
IHVzaW5nIHRoZSBmb2xsb3dpbmcgdGVzdDoKKyAgICAgICAgICAgIGh0dHA6Ly9waGlsYml0LmNv
bS9ib3VuY2luZ1RpZ2Vycy5odG1sCisgICAgICAgIFdpdGhvdXQgdGhlIHBhdGNoLCByZW5kZXJp
bmcgaXMgYmVsb3cgMWZwcy4gV2l0aCB0aGUgcGF0Y2gsIHJlbmRlcmluZyBpcyBmbHVpZC4KKwor
ICAgICAgICBUZXN0czogc3ZnL2Nzcy9idWZmZXJlZC1yZW5kZXJpbmcuaHRtbAorICAgICAgICAg
ICAgICAgc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLWR5bmFtaWMtaW1hZ2UuaHRtbAor
ICAgICAgICAgICAgICAgc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLXN0YXRpYy1pbWFn
ZS5odG1sCisKKyAgICAgICAgT3RoZXIgdGhhbiB0aGUgY2hhbmdlcyB0byBSZW5kZXJTVkdJbWFn
ZSBhbmQgU1ZHUmVuZGVyaW5nQ29udGV4dCwgdGhlIGNoYW5nZXMgYmVsb3cgYXJlIHRvCisgICAg
ICAgIHN1cHBvcnQgdGhlIG5ldyBidWZmZXJlZC1yZW5kZXJpbmcgcHJvcGVydHk6CisKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6Cisg
ICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQnVm
ZmVyZWRSZW5kZXJpbmcpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eSk6CisgICAgICAgICog
Y3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFNWR1Byb3BlcnR5Q1NTVmFsdWUpOgor
ICAgICAgICAqIGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZVNWR1ZhbHVlKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTUHJvcGVydHlOYW1lcy5p
bjoKKyAgICAgICAgKiBjc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU1ZH
Q1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmRpZmYpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCdWZmZXJlZFJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0QnVmZmVyZWRSZW5kZXJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmJ1ZmZlcmVkUmVuZGVyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRCaXREZWZhdWx0cyk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBh
aW50KToKKworICAgICAgICAgICAgVGhlIGZvcmVncm91bmQgcGFpbnRpbmcgaGFzIGJlZW4gZXh0
cmFjdGVkIG91dCBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uIFRoaXMgaGFzIGFsc28KKyAgICAg
ICAgICAgIGJlZW4gY2hhbmdlZCBzbyB0aGF0IGlmIHRoZSBidWZmZXJlZC1yZW5kZXJpbmcgaGlu
dCBpcyBwcmVzZW50LCBidWZmZXJGb3JlZ3JvdW5kCisgICAgICAgICAgICBpcyB1c2VkLgorCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnRGb3JlZ3JvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmludmFsaWRh
dGVCdWZmZXJlZEZvcmVncm91bmQpOgorCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGNvdWxk
IGJlIHJlcGxhY2VkIHdpdGggIm1fYnVmZmVyZWRGb3JlZ3JvdW5kLmNsZWFyKCkiIGJ1dCBvdGhl
ciByZW5kZXJlcnMKKyAgICAgICAgICAgIChzdWNoIGFzIGNvbnRhaW5lciBlbGVtZW50cykgd2ls
bCByZXF1aXJlIG1vcmUgY29tcGxleCBpbnZhbGlkYXRpb24gbG9naWMuIFRvCisgICAgICAgICAg
ICBtYWludGFpbiBjb25zaXN0ZW5jeSB3aXRoIHRoaXMgZnV0dXJlIGNvZGUsIGludmFsaWRhdGVC
dWZmZXJlZEZvcmVncm91bmQgaGFzIGJlZW4gdXNlZC4KKworICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5oOgorICAgICAgICAoUmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAo
U1ZHUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNW
R0F0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlUb1R5cGVNYXAp
OgorICAgICAgICAqIHN2Zy9zdmdhdHRycy5pbjoKKwogMjAxMy0wMy0yNSAgQW5kcmV5IEtvc3lh
a292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtUaW1l
bGluZV0gc2V0IGdsdWUgcmVjb3JkcyBtb2RlIG9mZiBieSBkZWZhdWx0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2
aXNpb24gMTQ2NzczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Miw2ICszODIsNyBAQCBzdGF0aWMgY29u
c3QgQ1NTUHJvcGVydHlJRCBjb21wdXRlZFByb3BlCiAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFw
VGhyb3VnaCwKICNlbmRpZgogI2lmIEVOQUJMRShTVkcpCisgICAgQ1NTUHJvcGVydHlCdWZmZXJl
ZFJlbmRlcmluZywKICAgICBDU1NQcm9wZXJ0eUNsaXBQYXRoLAogICAgIENTU1Byb3BlcnR5Q2xp
cFJ1bGUsCiAgICAgQ1NTUHJvcGVydHlNYXNrLApAQCAtMjgyMSw2ICsyODIyLDcgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U1ZHKQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJpbmc6CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlDbGlwUGF0aDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXBS
dWxlOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFzazoKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2aXNpb24gMTQ2NzczKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIzOCw2ICs0MjM4LDM4IEBAIHRlbXBsYXRlPGludCBzdXBwb3J0ZWQ+IExl
bmd0aCBDU1NQcmltaXQKIAogI2lmIEVOQUJMRShTVkcpCiAKK3RlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFQnVmZmVyZWRSZW5kZXJpbmcgZSkK
KyAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQoreworICAgIG1fcHJpbWl0aXZlVW5pdFR5
cGUgPSBDU1NfSURFTlQ7CisgICAgc3dpdGNoIChlKSB7CisgICAgY2FzZSBCUl9BVVRPOgorICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVBdXRvOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEJSX0RZTkFNSUM6CisgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZUR5bmFtaWM7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQlJfU1RBVElDOgorICAgICAgICBtX3ZhbHVlLmlk
ZW50ID0gQ1NTVmFsdWVTdGF0aWM7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVCdWZmZXJlZFJlbmRlcmlu
ZygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgY2FzZSBDU1NW
YWx1ZUF1dG86CisgICAgICAgIHJldHVybiBCUl9BVVRPOworICAgIGNhc2UgQ1NTVmFsdWVEeW5h
bWljOgorICAgICAgICByZXR1cm4gQlJfRFlOQU1JQzsKKyAgICBjYXNlIENTU1ZhbHVlU3RhdGlj
OgorICAgICAgICByZXR1cm4gQlJfU1RBVElDOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBCUl9BVVRPOworfQorCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUNvbG9ySW50ZXJwb2xhdGlvbiBlKQog
ICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE0Njc3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5MSw2ICs2OTEsNyBAQCBib29sIENTU1By
b3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KENTCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhc2Vs
aW5lU2hpZnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRS
ZW5kZXJpbmc6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFN2Z1NoYWRvdzoKICNlbmRpZgog
I2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAx
NDY3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYgKzE3Nyw4IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nOgorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUtPmJ1ZmZlcmVkUmVuZGVyaW5nKCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6CiAgICAgICAgICAgICBy
ZXR1cm4gZ2x5cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUtPmdseXBo
T3JpZW50YXRpb25Ib3Jpem9udGFsKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5R2x5cGhP
cmllbnRhdGlvblZlcnRpY2FsOiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNw
cAkocmV2aXNpb24gMTQ2NzczKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlU1ZHVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1
ZTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJp
bmc6IC8vIGF1dG8gfCBkeW5hbWljIHwgc3RhdGljCisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVEeW5hbWljIHx8IGlkID09IENTU1ZhbHVlU3RhdGljKQor
ICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisKICAg
ICBjYXNlIENTU1Byb3BlcnR5Q29sb3JQcm9maWxlOiAvLyBhdXRvIHwgc1JHQiB8IDxuYW1lPiB8
IDx1cmk+IGluaGVyaXQKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBD
U1NWYWx1ZVNyZ2IpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMuaW4JKHJldmlzaW9uIDE0Njc3
MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQcm9wZXJ0eU5hbWVzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC01LDYgKzUsNyBAQAogI2lmIGRlZmluZWQoRU5BQkxFX1NWRykgJiYgRU5BQkxF
X1NWRwogCiAvLyBTVkcgc3R5bGUgcHJvcHMKK2J1ZmZlcmVkLXJlbmRlcmluZwogY2xpcC1wYXRo
CiBjbGlwLXJ1bGUKIG1hc2sKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NTdHlsZVNl
bGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE0Njc3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdD
U1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg4LDYgKzU4OCwxNCBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZHUHJvcGVydHkoQ1NTCiAgICAgICAgICAgICBzdmdz
dHlsZS0+c2V0VmVjdG9yRWZmZWN0KCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJpbmc6
IHsKKyAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJ1ZmZlcmVkUmVuZGVy
aW5nLCBCdWZmZXJlZFJlbmRlcmluZykKKyAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRCdWZm
ZXJlZFJlbmRlcmluZygqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hc2tUeXBlOiB7CiAgICAgICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXNrVHlwZSwgTWFza1R5cGUpCiAgICAgICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Zh
bHVlS2V5d29yZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Zh
bHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDE0Njc3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NWYWx1ZUtleXdvcmRzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsNiArMjY0LDExIEBA
IHJlc2V0LXNpemUKIC8vIG1pZGRsZQogLy8gZW5kCiAKKy8vIENTU19QUk9QX0JVRkZFUkVEX1JF
TkRFUklORworLy8gYXV0bworLy8gc3RhdGljCitkeW5hbWljCisKIC8vIENTU19QUk9QX1ZFQ1RP
Ul9FRkZFQ1QKIC8vIG5vbmUKIG5vbi1zY2FsaW5nLXN0cm9rZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAx
NDY3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDkgQEAgU3R5bGVEaWZmZXJlbmNlIFNW
R1JlbmRlclN0eWxlOjpkaWZmKGNvbgogICAgIGlmIChzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYu
X3ZlY3RvckVmZmVjdCAhPSBvdGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl92ZWN0b3JF
ZmZlY3QpCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwogCisgICAgaWYg
KHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmluZyAhPSBvdGhlci0+c3Zn
X25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nKQorICAgICAgICByZXR1cm4g
U3R5bGVEaWZmZXJlbmNlUmVwYWludDsKKwogICAgIGlmIChzdmdfbm9uaW5oZXJpdGVkX2ZsYWdz
LmYubWFza1R5cGUgIT0gb3RoZXItPnN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5tYXNrVHlwZSkK
ICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAx
NDY3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVE
b21pbmFudEJhc2VsaW5lIGluaXRpYWxEb21pbmFudEJhc2VsaW5lKCkgeyByZXR1cm4gREJfQVVU
TzsgfQogICAgIHN0YXRpYyBFQmFzZWxpbmVTaGlmdCBpbml0aWFsQmFzZWxpbmVTaGlmdCgpIHsg
cmV0dXJuIEJTX0JBU0VMSU5FOyB9CiAgICAgc3RhdGljIEVWZWN0b3JFZmZlY3QgaW5pdGlhbFZl
Y3RvckVmZmVjdCgpIHsgcmV0dXJuIFZFX05PTkU7IH0KKyAgICBzdGF0aWMgRUJ1ZmZlcmVkUmVu
ZGVyaW5nIGluaXRpYWxCdWZmZXJlZFJlbmRlcmluZygpIHsgcmV0dXJuIEJSX0FVVE87IH0KICAg
ICBzdGF0aWMgTGluZUNhcCBpbml0aWFsQ2FwU3R5bGUoKSB7IHJldHVybiBCdXR0Q2FwOyB9CiAg
ICAgc3RhdGljIFdpbmRSdWxlIGluaXRpYWxDbGlwUnVsZSgpIHsgcmV0dXJuIFJVTEVfTk9OWkVS
TzsgfQogICAgIHN0YXRpYyBFQ29sb3JJbnRlcnBvbGF0aW9uIGluaXRpYWxDb2xvckludGVycG9s
YXRpb24oKSB7IHJldHVybiBDSV9TUkdCOyB9CkBAIC0xMjgsNiArMTI5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0RG9taW5hbnRCYXNlbGluZShFRG9taW5hbnRCYXNlbGluZSB2YWwpIHsgc3Zn
X25vbmluaGVyaXRlZF9mbGFncy5mLl9kb21pbmFudEJhc2VsaW5lID0gdmFsOyB9CiAgICAgdm9p
ZCBzZXRCYXNlbGluZVNoaWZ0KEVCYXNlbGluZVNoaWZ0IHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVk
X2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQgPSB2YWw7IH0KICAgICB2b2lkIHNldFZlY3RvckVmZmVj
dChFVmVjdG9yRWZmZWN0IHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVm
ZmVjdCA9IHZhbDsgfQorICAgIHZvaWQgc2V0QnVmZmVyZWRSZW5kZXJpbmcoRUJ1ZmZlcmVkUmVu
ZGVyaW5nIHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuYnVmZmVyZWRSZW5kZXJpbmcg
PSB2YWw7IH0KICAgICB2b2lkIHNldENhcFN0eWxlKExpbmVDYXAgdmFsKSB7IHN2Z19pbmhlcml0
ZWRfZmxhZ3MuX2NhcFN0eWxlID0gdmFsOyB9CiAgICAgdm9pZCBzZXRDbGlwUnVsZShXaW5kUnVs
ZSB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1bGUgPSB2YWw7IH0KICAgICB2b2lk
IHNldENvbG9ySW50ZXJwb2xhdGlvbihFQ29sb3JJbnRlcnBvbGF0aW9uIHZhbCkgeyBzdmdfaW5o
ZXJpdGVkX2ZsYWdzLl9jb2xvckludGVycG9sYXRpb24gPSB2YWw7IH0KQEAgLTMwNSw2ICszMDcs
NyBAQCBwdWJsaWM6CiAgICAgRURvbWluYW50QmFzZWxpbmUgZG9taW5hbnRCYXNlbGluZSgpIGNv
bnN0IHsgcmV0dXJuIChFRG9taW5hbnRCYXNlbGluZSkgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5m
Ll9kb21pbmFudEJhc2VsaW5lOyB9CiAgICAgRUJhc2VsaW5lU2hpZnQgYmFzZWxpbmVTaGlmdCgp
IGNvbnN0IHsgcmV0dXJuIChFQmFzZWxpbmVTaGlmdCkgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5m
Ll9iYXNlbGluZVNoaWZ0OyB9CiAgICAgRVZlY3RvckVmZmVjdCB2ZWN0b3JFZmZlY3QoKSBjb25z
dCB7IHJldHVybiAoRVZlY3RvckVmZmVjdCkgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl92ZWN0
b3JFZmZlY3Q7IH0KKyAgICBFQnVmZmVyZWRSZW5kZXJpbmcgYnVmZmVyZWRSZW5kZXJpbmcoKSBj
b25zdCB7IHJldHVybiAoRUJ1ZmZlcmVkUmVuZGVyaW5nKSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdz
LmYuYnVmZmVyZWRSZW5kZXJpbmc7IH0KICAgICBMaW5lQ2FwIGNhcFN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gKExpbmVDYXApIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2NhcFN0eWxlOyB9CiAgICAgV2lu
ZFJ1bGUgY2xpcFJ1bGUoKSBjb25zdCB7IHJldHVybiAoV2luZFJ1bGUpIHN2Z19pbmhlcml0ZWRf
ZmxhZ3MuX2NsaXBSdWxlOyB9CiAgICAgRUNvbG9ySW50ZXJwb2xhdGlvbiBjb2xvckludGVycG9s
YXRpb24oKSBjb25zdCB7IHJldHVybiAoRUNvbG9ySW50ZXJwb2xhdGlvbikgc3ZnX2luaGVyaXRl
ZF9mbGFncy5fY29sb3JJbnRlcnBvbGF0aW9uOyB9CkBAIC00MTIsOCArNDE1LDkgQEAgcHJvdGVj
dGVkOgogICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9kb21pbmFudEJhc2VsaW5lIDogNDsgLy8g
RURvbWluYW50QmFzZWxpbmUKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfYmFzZWxpbmVTaGlm
dCA6IDI7IC8vIEVCYXNlbGluZVNoaWZ0CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgX3ZlY3Rv
ckVmZmVjdDogMTsgLy8gRVZlY3RvckVmZmVjdAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ1
ZmZlcmVkUmVuZGVyaW5nOiAyOyAvLyBFQnVmZmVyZWRSZW5kZXJpbmcKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBtYXNrVHlwZTogMTsgLy8gRU1hc2tUeXBlCi0gICAgICAgICAgICAgICAgLy8g
MjAgYml0cyB1bnVzZWQKKyAgICAgICAgICAgICAgICAvLyAxOCBiaXRzIHVudXNlZAogICAgICAg
ICAgICAgfSBmOwogICAgICAgICAgICAgdWludDMyX3QgX25pZmxhZ3M7CiAgICAgICAgIH07CkBA
IC00NTgsNiArNDYyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFn
cy5mLl9kb21pbmFudEJhc2VsaW5lID0gaW5pdGlhbERvbWluYW50QmFzZWxpbmUoKTsKICAgICAg
ICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl9iYXNlbGluZVNoaWZ0ID0gaW5pdGlhbEJhc2Vs
aW5lU2hpZnQoKTsKICAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLl92ZWN0b3JFZmZl
Y3QgPSBpbml0aWFsVmVjdG9yRWZmZWN0KCk7CisgICAgICAgIHN2Z19ub25pbmhlcml0ZWRfZmxh
Z3MuZi5idWZmZXJlZFJlbmRlcmluZyA9IGluaXRpYWxCdWZmZXJlZFJlbmRlcmluZygpOwogICAg
ICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGUgPSBpbml0aWFsTWFza1R5cGUo
KTsKICAgICB9CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1Jl
bmRlclN0eWxlRGVmcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaAkocmV2aXNpb24gMTQ2NzczKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Myw2ICs4MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFZFX05PTl9T
Q0FMSU5HX1NUUk9LRQogICAgIH07CiAKKyAgICBlbnVtIEVCdWZmZXJlZFJlbmRlcmluZyB7Cisg
ICAgICAgIEJSX0FVVE8sCisgICAgICAgIEJSX0RZTkFNSUMsCisgICAgICAgIEJSX1NUQVRJQwor
ICAgIH07CisKICAgICBlbnVtIEVNYXNrVHlwZSB7CiAgICAgICAgIE1UX0xVTUlOQU5DRSwKICAg
ICAgICAgTVRfQUxQSEEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAxNDY3NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDE0
ICsxMzIsMTAgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYQogICAg
ICAgICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0KHRoaXMsIGNoaWxk
UGFpbnRJbmZvKTsKIAogICAgICAgICAgICAgaWYgKHJlbmRlcmluZ0NvbnRleHQuaXNSZW5kZXJp
bmdQcmVwYXJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1f
aW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKTsKLSAgICAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdFJl
Y3QgPSBtX29iamVjdEJvdW5kaW5nQm94OwotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzcmNS
ZWN0KDAsIDAsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOworICAgICAgICAgICAg
ICAgIGlmIChzdHlsZSgpLT5zdmdTdHlsZSgpLT5idWZmZXJlZFJlbmRlcmluZygpID09IEJSX1NU
QVRJQyAgJiYgcmVuZGVyaW5nQ29udGV4dC5idWZmZXJGb3JlZ3JvdW5kKG1fYnVmZmVyZWRGb3Jl
Z3JvdW5kKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICAgICAg
U1ZHSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1l
bnQqPihub2RlKCkpOwotICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC0+cHJlc2VydmVBc3Bl
Y3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3QpOwotCi0gICAgICAgICAg
ICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgICAgICAgICAgcGFp
bnRGb3JlZ3JvdW5kKGNoaWxkUGFpbnRJbmZvKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
CkBAIC0xNDgsNiArMTQ0LDIzIEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5m
byYgcGEKICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50Rm9yZWdyb3VuZChQ
YWludEluZm8mIHBhaW50SW5mbykKK3sKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9pbWFn
ZVJlc291cmNlLT5pbWFnZSgpOworICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IG1fb2JqZWN0Qm91
bmRpbmdCb3g7CisgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1hZ2UtPndpZHRoKCksIGlt
YWdlLT5oZWlnaHQoKSk7CisKKyAgICBTVkdJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IHN0
YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7CisgICAgaW1hZ2VFbGVtZW50LT5w
cmVzZXJ2ZUFzcGVjdFJhdGlvKCkudHJhbnNmb3JtUmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7CisK
KyAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7Cit9CisKK3ZvaWQgUmVuZGVyU1ZHSW1hZ2U6
OmludmFsaWRhdGVCdWZmZXJlZEZvcmVncm91bmQoKQoreworICAgIG1fYnVmZmVyZWRGb3JlZ3Jv
dW5kLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9u
KQogewogICAgIC8vIFdlIG9ubHkgZHJhdyBpbiB0aGUgZm9yZ3JvdW5kIHBoYXNlLCBzbyB3ZSBv
bmx5IGhpdC10ZXN0IHRoZW4uCkBAIC0xODgsNiArMjAxLDggQEAgdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZQogICAgIG1fb2JqZWN0Qm91bmRpbmdCb3ggPSBGbG9hdFJl
Y3QoKTsKICAgICB1cGRhdGVJbWFnZVZpZXdwb3J0KCk7CiAKKyAgICBpbnZhbGlkYXRlQnVmZmVy
ZWRGb3JlZ3JvdW5kKCk7CisKICAgICByZXBhaW50KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgJKHJldmlzaW9uIDE0Njc3MykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksOSArNDksMTIgQEAgcHVibGljOgogICAgIFJlbmRlckltYWdlUmVzb3Vy
Y2UqIGltYWdlUmVzb3VyY2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0KICAg
ICBjb25zdCBSZW5kZXJJbWFnZVJlc291cmNlKiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9CiAKKyAgICAvLyBOb3RlOiBBc3N1bWVzIHRoZSBQ
YWludEluZm8gY29udGV4dCBoYXMgaGFkIGFsbCBsb2NhbCB0cmFuc2Zvcm1zIGFwcGxpZWQuCisg
ICAgdm9pZCBwYWludEZvcmVncm91bmQoUGFpbnRJbmZvJik7CisKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR0lt
YWdlIjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9Q
YXJlbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKQEAg
LTY3LDYgKzcwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKKyAg
ICB2b2lkIGludmFsaWRhdGVCdWZmZXJlZEZvcmVncm91bmQoKTsKKwogICAgIHZpcnR1YWwgYm9v
bCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwogCiAgICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBt
X2xvY2FsVHJhbnNmb3JtOyB9CkBAIC03OSw2ICs4NCw4IEBAIHByaXZhdGU6CiAgICAgRmxvYXRS
ZWN0IG1fcmVwYWludEJvdW5kaW5nQm94OwogICAgIEZsb2F0UmVjdCBtX3JlcGFpbnRCb3VuZGlu
Z0JveEV4Y2x1ZGluZ1NoYWRvdzsKICAgICBPd25QdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gbV9p
bWFnZVJlc291cmNlOworCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX2J1ZmZlcmVkRm9yZWdy
b3VuZDsKIH07CiAKIGlubGluZSBSZW5kZXJTVkdJbWFnZSogdG9SZW5kZXJTVkdJbWFnZShSZW5k
ZXJPYmplY3QqIG9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMTQ2NzczKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJT
VkdJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuaCIKQEAgLTMyNCw2ICszMjUsMzcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGVh
cjJEUm90YXRpbwogICAgIHRyYW5zZm9ybS5yZWNvbXBvc2UoZGVjb21wb3NpdGlvbik7CiB9CiAK
K2Jvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChPd25QdHI8SW1hZ2VC
dWZmZXI+JiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBBU1NFUlQobV9wYWludEluZm8pOworICAgIEFT
U0VSVChtX29iamVjdC0+aXNTVkdJbWFnZSgpKTsKKyAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3gg
PSBtX29iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKTsKKworICAgIC8vIEludmFsaWRhdGUgYW4g
ZXhpc3RpbmcgYnVmZmVyIGlmIHRoZSBzY2FsZSBpcyBub3QgY29ycmVjdC4KKyAgICBpZiAoaW1h
Z2VCdWZmZXIpIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IG1fcGFpbnRJ
bmZvLT5jb250ZXh0LT5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURl
dmljZVNjYWxlKTsKKyAgICAgICAgSW50U2l6ZSBleHBhbmRlZEJvdW5kaW5nQm94ID0gZXhwYW5k
ZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSk7CisgICAgICAgIEludFNpemUgYnVmZmVyU2l6
ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoZXhwYW5kZWRCb3VuZGluZ0JveC53aWR0aCgpICogdHJh
bnNmb3JtLnhTY2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChleHBhbmRlZEJvdW5kaW5n
Qm94LmhlaWdodCgpICogdHJhbnNmb3JtLnlTY2FsZSgpKSkpOworICAgICAgICBpZiAoYnVmZmVy
U2l6ZSAhPSBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCkpCisgICAgICAgICAgICBpbWFnZUJ1
ZmZlci5jbGVhcigpOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBh
aW50IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCisgICAgaWYgKCFpbWFnZUJ1ZmZlcikgeworICAg
ICAgICBpZiAoaW1hZ2VCdWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4dC0+Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgdHJ1ZSkpIHsK
KyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0ID0g
aW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkUmVuZGVyaW5nQ29u
dGV4dC0+dHJhbnNsYXRlKC1ib3VuZGluZ0JveC54KCksIC1ib3VuZGluZ0JveC55KCkpOworICAg
ICAgICAgICAgUGFpbnRJbmZvIGJ1ZmZlcmVkSW5mbygqbV9wYWludEluZm8pOworICAgICAgICAg
ICAgYnVmZmVyZWRJbmZvLmNvbnRleHQgPSBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQ7CisgICAg
ICAgICAgICB0b1JlbmRlclNWR0ltYWdlKG1fb2JqZWN0KS0+cGFpbnRGb3JlZ3JvdW5kKGJ1ZmZl
cmVkSW5mbyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJvdW5kaW5nQm94KTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAxNDY3NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNiArOTMsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBlbmNsb3Np
bmdJbnRSZWN0KGFic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QodGFyZ2V0UmVjdCkpOwogICAgIH0K
IAorICAgIC8vIFN1cHBvcnQgZm9yIHRoZSBidWZmZXJlZC1yZW5kZXJpbmcgaGludC4KKyAgICBi
b29sIGJ1ZmZlckZvcmVncm91bmQoT3duUHRyPEltYWdlQnVmZmVyPiYpOworCiBwcml2YXRlOgog
ICAgIC8vIFRvIHByb3Blcmx5IHJldmVydCBwYXJ0aWFsbHkgc3VjY2Vzc2Z1bCBpbml0aWFsaXp0
aW9ucyBpbiB0aGUgZGVzdHJ1Y3Rvciwgd2UgcmVjb3JkIGFsbCBzdWNjZXNzZnVsIHN0ZXBzLgog
ICAgIGVudW0gUmVuZGVyaW5nRmxhZ3MgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ2NzczKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAgQ1NT
UHJvcGVydHlJRCBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZQogICAgICAgICAvLyBUaGlzIGlz
IGEgbGlzdCBvZiBhbGwgYmFzZSBDU1MgYW5kIFNWRyBDU1MgcHJvcGVydGllcyB3aGljaCBhcmUg
ZXhwb3NlZCBhcyBTVkcgWE1MIGF0dHJpYnV0ZXMKICAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQ
cm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBhbGlnbm1lbnRfYmFzZWxpbmVBdHRyKTsKICAg
ICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBiYXNl
bGluZV9zaGlmdEF0dHIpOworICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3Bl
cnR5TmFtZVRvSWRNYXAsIGJ1ZmZlcmVkX3JlbmRlcmluZ0F0dHIpOwogICAgICAgICBtYXBBdHRy
aWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGNsaXBBdHRyKTsKICAgICAg
ICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjbGlwX3Bh
dGhBdHRyKTsKICAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVU
b0lkTWFwLCBjbGlwX3J1bGVBdHRyKTsKQEAgLTIxNCw2ICsyMTUsNyBAQCBzdGF0aWMgaW5saW5l
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwCiAgICAgLy8gRmlsbCB0aGUgbWFwIGZvciB0aGUg
Zmlyc3QgdXNlLgogICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGFsaWdubWVudF9iYXNlbGluZUF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKICAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChiYXNlbGluZV9z
aGlmdEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChidWZm
ZXJlZF9yZW5kZXJpbmdBdHRyLCBBbmltYXRlZFN0cmluZyk7CiAgICAgc19jc3NQcm9wZXJ0eU1h
cC5zZXQoY2xpcEF0dHIsIEFuaW1hdGVkUmVjdCk7CiAgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQo
Y2xpcF9wYXRoQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwogICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0
KGNsaXBfcnVsZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9zdmdhdHRycy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvc3ZnYXR0cnMu
aW4JKHJldmlzaW9uIDE0Njc3MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9zdmdhdHRycy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQCBiYXNlUHJvZmlsZQogYmJveAogYmVnaW4K
IGJpYXMKK2J1ZmZlcmVkLXJlbmRlcmluZwogYnkKIGNhbGNNb2RlCiBjYXAtaGVpZ2h0CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNDY3ODMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wMy0yNSAgUGhpbGlwIFJvZ2VycyAgPHBkckBn
b29nbGUuY29tPgorCisgICAgICAgIFtTVkcyXSBBZGQgc3VwcG9ydCBmb3IgdGhlIGJ1ZmZlcmVk
LXJlbmRlcmluZyBoaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDQyMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHN2Zy9jc3MvYnVmZmVyZWQtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogc3ZnL2Nzcy9idWZmZXJlZC1yZW5kZXJpbmcuaHRtbDogQWRkZWQuCisgICAg
ICAgICogc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLWR5bmFtaWMtaW1hZ2UtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5n
LWR5bmFtaWMtaW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL3JlcGFpbnQvYnVmZmVy
ZWQtcmVuZGVyaW5nLXN0YXRpYy1pbWFnZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvcmVwYWludC9idWZmZXJlZC1yZW5kZXJpbmctc3RhdGljLWltYWdlLmh0bWw6IEFkZGVk
LgorCiAyMDEzLTAzLTI1ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBSZWJhc2VsaW5lIHN2Zy9jdXN0b20vbWFya2VyLW9yaWVudC1hdXRvCkBA
IC00MSw3ICs1NSw3IEBACiAKICAgICAgICAgKiBwbGF0Zm9ybS9xdC9jc3MzL3NlbGVjdG9yczMv
eGh0bWwvY3NzMy1tb2RzZWwtMTQ2YS1leHBlY3RlZC5wbmc6CiAgICAgICAgICogcGxhdGZvcm0v
cXQvY3NzMy9zZWxlY3RvcnMzL3hodG1sL2NzczMtbW9kc2VsLTE0NmItZXhwZWN0ZWQucG5nOgot
ICAgICAgICAqIHBsYXRmb3JtL3F0L2NzczMvc2VsZWN0b3JzMy94aHRtbC9jc3MzLW1vZHNlbC0x
NDdhLWV4cGVjdGVkLnBuZzoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9jc3MzL3NlbGVjdG9yczMv
eGh0bWwvY3NzMy1tb2RzZWwtMTRhNy1leHBlY3RlZC5wbmc6CiAgICAgICAgICogcGxhdGZvcm0v
cXQvY3NzMy9zZWxlY3RvcnMzL3hodG1sL2NzczMtbW9kc2VsLTE0N2ItZXhwZWN0ZWQucG5nOgog
ICAgICAgICAqIHBsYXRmb3JtL3F0L2NzczMvc2VsZWN0b3JzMy94aHRtbC9jc3MzLW1vZHNlbC0x
NGMtZXhwZWN0ZWQucG5nOgogICAgICAgICAqIHBsYXRmb3JtL3F0L2NzczMvc2VsZWN0b3JzMy94
aHRtbC9jc3MzLW1vZHNlbC0xNGUtZXhwZWN0ZWQucG5nOgpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2Nzcy9idWZmZXJlZC1yZW5kZXJpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N2Zy9jc3MvYnVmZmVyZWQtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3N2Zy9jc3MvYnVmZmVyZWQtcmVuZGVyaW5nLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorVGVzdCB0aGF0IGFuIFNWRyBpbWFnZSBh
Y2NlcHRzIGFsbCBidWZmZXJlZCByZW5kZXJpbmcgdmFsdWVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICIi
KSBpcyAiYXV0byIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgImF1
dG8iKSBpcyAiYXV0byIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwg
ImR5bmFtaWMiKSBpcyAiZHluYW1pYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVu
ZGVyaW5nIiwgInN0YXRpYyIpIGlzICJzdGF0aWMiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJ1ZmZl
cmVkLXJlbmRlcmluZyIsICIwIikgaXMgInN0YXRpYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVm
ZmVyZWQtcmVuZGVyaW5nIiwgIjEiKSBpcyAic3RhdGljIgorUEFTUyBjb21wdXRlZFN0eWxlKCJi
dWZmZXJlZC1yZW5kZXJpbmciLCAidHJ1ZSIpIGlzICJzdGF0aWMiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJkeW5hbWljIikgaXMgImR5bmFtaWMiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICIwIikgaXMgImR5bmFtaWMiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICIxIikgaXMgImR5bmFtaWMiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJ0cnVlIikgaXMgImR5bmFt
aWMiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvc3ZnL2Nzcy9idWZmZXJlZC1yZW5kZXJpbmcuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3NzL2J1ZmZlcmVkLXJlbmRlcmluZy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2Nzcy9idWZmZXJlZC1yZW5kZXJpbmcuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxz
dHlsZT4KKyogeyBmb250LXNpemU6IDE2cHg7IH0KK2RpdiB7IGZvbnQtc2l6ZTogOHB4OyB9Cis8
L3N0eWxlPgorPGJvZHk+Cis8c3ZnPjxpbWFnZSBpZD0iaW1hZ2UiPjwvaW1hZ2U+PC9zdmc+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgYW4gU1ZHIGltYWdlIGFjY2Vw
dHMgYWxsIGJ1ZmZlcmVkIHJlbmRlcmluZyB2YWx1ZXMnKTsKKwordmFyIGltYWdlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisKK2Z1bmN0aW9uIGNvbXB1dGVkU3R5bGUocHJv
cGVydHksIHZhbHVlKSB7CisgICAgaW1hZ2Uuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHksIHZh
bHVlKTsKKyAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShpbWFnZSkuZ2V0UHJvcGVydHlWYWx1
ZShwcm9wZXJ0eSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QocHJvcGVydHksIHZhbHVlLCBleHBlY3Rl
ZCkgeworICAgIGlmIChleHBlY3RlZCA9PT0gbnVsbCkKKyAgICAgICAgc2hvdWxkQmVOdWxsKCdj
b21wdXRlZFN0eWxlKCInICsgcHJvcGVydHkgKyAnIiwgIicgKyB2YWx1ZSArICciKScpOworICAg
IGVsc2UKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjb21wdXRlZFN0eWxlKCInICsg
cHJvcGVydHkgKyAnIiwgIicgKyB2YWx1ZSArICciKScsIGV4cGVjdGVkKTsKK30KKwordGVzdCgi
YnVmZmVyZWQtcmVuZGVyaW5nIiwgIiIsICJhdXRvIik7Cit0ZXN0KCJidWZmZXJlZC1yZW5kZXJp
bmciLCAiYXV0byIsICJhdXRvIik7Cit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiZHluYW1p
YyIsICJkeW5hbWljIik7Cit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAic3RhdGljIiwgInN0
YXRpYyIpOworCisvLyBuZWdhdGl2ZSB0ZXN0cwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwg
IjAiLCAic3RhdGljIik7Cit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiMSIsICJzdGF0aWMi
KTsKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJ0cnVlIiwgInN0YXRpYyIpOworCisvLyBt
YWtlIHN1cmUgdmFsaWQgdmFsdWVzIHN0aWxsIHdvcmsKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmlu
ZyIsICJkeW5hbWljIiwgImR5bmFtaWMiKTsKKworLy8gbW9yZSBuZWdhdGl2ZSB0ZXN0cwordGVz
dCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjAiLCAiZHluYW1pYyIpOwordGVzdCgiYnVmZmVyZWQt
cmVuZGVyaW5nIiwgIjEiLCAiZHluYW1pYyIpOwordGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwg
InRydWUiLCAiZHluYW1pYyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvcmVwYWlu
dC9idWZmZXJlZC1yZW5kZXJpbmctZHluYW1pYy1pbWFnZS1leHBlY3RlZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1keW5hbWlj
LWltYWdlLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvcmVw
YWludC9idWZmZXJlZC1yZW5kZXJpbmctZHluYW1pYy1pbWFnZS1leHBlY3RlZC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvcmVwYWludC9yZXNvdXJjZXMvcmVwYWludC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcmVwYWludFRlc3Qo
KSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVoaW5kJykuc2V0QXR0
cmlidXRlKCdmaWxsJywgJ2dyZWVuJyk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndHJhbnNsYXRlJykuc2V0QXR0cmlidXRlKCd4JywgJzAnKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFuc2Zvcm0nKS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9y
bScsICd0cmFuc2xhdGUoMCAwKScpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3NjYWxlJykuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCAnc2NhbGUoMSknKTsKKyAgICAg
ICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5SZXBhaW50VGVz
dCgpIj4KK1Rlc3QgZm9yIFdLMTA0MjA3OiBUaGlzIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGFyZSA0
IGdyZWVuIHNxdWFyZXMgZWFjaCB3aXRoIGEgc21vb3RoIGJsYWNrIGNpcmNsZSBpbiB0aGUgdG9w
LWxlZnQgY29ybmVyLjxici8+CisgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHdpZHRoPSI0MDAiIGhlaWdodD0iNDUwIj4KKyAgICAgICAgPCEtLSBUZXN0IGludmFs
aWRhdGluZyBjb250ZW50IGJlaGluZCB0aGUgZHluYW1pYyBjb250ZW50LiAtLT4KKyAgICAgICAg
PHJlY3QgaWQ9ImJlaGluZCIgeD0iNDAiIHk9IjEwIiB3aWR0aD0iMjAiIGhlaWdodD0iODAiIGZp
bGw9InJlZCIvPgorICAgICAgICA8aW1hZ2UgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0
PSIxMDAiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxyZWN0IHg9JzEw
JyB5PScxMCcgd2lkdGg9JzMwJyBoZWlnaHQ9JzgwJyBmaWxsPSdncmVlbicvPjxyZWN0IHg9JzYw
JyB5PScxMCcgd2lkdGg9JzMwJyBoZWlnaHQ9JzgwJyBmaWxsPSdncmVlbicvPjxjaXJjbGUgY3g9
JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVlbicgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdp
ZHRoPScxJy8+PC9zdmc+Ii8+CisKKyAgICAgICAgPCEtLSBUZXN0IHRyYW5zbGF0aW5nIGR5bmFt
aWMgY29udGVudCAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjE0MCIgd2lkdGg9IjMwIiBo
ZWlnaHQ9IjMwIiBmaWxsPSJyZWQiLz4KKyAgICAgICAgPGltYWdlIGlkPSJ0cmFuc2xhdGUiIHg9
IjUwIiB5PSIxMjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB4bGluazpocmVmPSJkYXRhOmlt
YWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRo
PScxMDAnIGhlaWdodD0nMTAwJz48cmVjdCB4PScxMCUnIHk9JzEwJScgd2lkdGg9JzgwJScgaGVp
Z2h0PSc4MCUnIGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBjeD0nMjUnIGN5PScyNScgcj0nMTAnIGZp
bGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnLz48L3N2Zz4iLz4KKwor
ICAgICAgICA8IS0tIFRlc3QgdHJhbnNmb3JtaW5nIGR5bmFtaWMgY29udGVudCAtLT4KKyAgICAg
ICAgPHJlY3QgeD0iMjAiIHk9IjI2MCIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSJyZWQi
Lz4KKyAgICAgICAgPGltYWdlIGlkPSJ0cmFuc2Zvcm0iIHRyYW5zZm9ybT0ic2tld1goMzApIiB4
PSIwIiB5PSIyNDAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB4bGluazpocmVmPSJkYXRhOmlt
YWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRo
PScxMDAnIGhlaWdodD0nMTAwJz48cmVjdCB4PScxMCUnIHk9JzEwJScgd2lkdGg9JzgwJScgaGVp
Z2h0PSc4MCUnIGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBjeD0nMjUnIGN5PScyNScgcj0nMTAnIGZp
bGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnLz48L3N2Zz4iLz4KKwor
ICAgICAgICA8IS0tIFRlc3Qgc2NhbGluZyBkeW5hbWljIGNvbnRlbnQgLS0+CisgICAgICAgIDxy
ZWN0IHg9IjIwIiB5PSIzODAiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0icmVkIi8+Cisg
ICAgICAgIDxpbWFnZSBpZD0ic2NhbGUiIHRyYW5zZm9ybT0ic2NhbGUoMC4xKSIgeD0iMCIgeT0i
MzYwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcr
eG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBo
ZWlnaHQ9JzEwMCc+PHJlY3QgeD0nMTAlJyB5PScxMCUnIHdpZHRoPSc4MCUnIGhlaWdodD0nODAl
JyBmaWxsPSdncmVlbicvPjxjaXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVl
bicgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+Ii8+CisgICAgPC9zdmc+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvcmVwYWludC9idWZmZXJl
ZC1yZW5kZXJpbmctZHluYW1pYy1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1keW5hbWljLWltYWdlLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvcmVwYWludC9idWZmZXJlZC1yZW5kZXJpbmctZHlu
YW1pYy1pbWFnZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvcmVwYWlu
dC9yZXNvdXJjZXMvcmVwYWludC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAg
ZnVuY3Rpb24gcmVwYWludFRlc3QoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYmVoaW5kRHluYW1pYycpLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdncmVlbicpOworICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyYW5zbGF0ZUR5bmFtaWMnKS5zZXRB
dHRyaWJ1dGUoJ3gnLCAnMCcpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RyYW5zZm9ybUR5bmFtaWMnKS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUo
MCAwKScpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjYWxlRHluYW1p
YycpLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywgJ3NjYWxlKDEpJyk7CisgICAgICAgIH0KKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuUmVwYWludFRlc3QoKSI+CitU
ZXN0IGZvciBXSzEwNDIwNzogVGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGVyZSBhcmUgNCBncmVlbiBz
cXVhcmVzIGVhY2ggd2l0aCBhIHNtb290aCBibGFjayBjaXJjbGUgaW4gdGhlIHRvcC1sZWZ0IGNv
cm5lci48YnIvPgorICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3
aWR0aD0iNDAwIiBoZWlnaHQ9IjQ1MCI+CisgICAgICAgIDwhLS0gVGVzdCBpbnZhbGlkYXRpbmcg
Y29udGVudCBiZWhpbmQgdGhlIGR5bmFtaWMgY29udGVudC4gLS0+CisgICAgICAgIDxyZWN0IGlk
PSJiZWhpbmREeW5hbWljIiB4PSI0MCIgeT0iMTAiIHdpZHRoPSIyMCIgaGVpZ2h0PSI4MCIgZmls
bD0icmVkIi8+CisgICAgICAgIDxpbWFnZSB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjEwMCIgYnVmZmVyZWQtcmVuZGVyaW5nPSJkeW5hbWljIiB4bGluazpocmVmPSJkYXRhOmltYWdl
L3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScx
MDAnIGhlaWdodD0nMTAwJz48cmVjdCB4PScxMCcgeT0nMTAnIHdpZHRoPSczMCcgaGVpZ2h0PSc4
MCcgZmlsbD0nZ3JlZW4nLz48cmVjdCB4PSc2MCcgeT0nMTAnIHdpZHRoPSczMCcgaGVpZ2h0PSc4
MCcgZmlsbD0nZ3JlZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9JzI1JyByPScxMCcgZmlsbD0nZ3Jl
ZW4nIHN0cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPiIvPgorCisgICAgICAg
IDwhLS0gVGVzdCB0cmFuc2xhdGluZyBkeW5hbWljIGNvbnRlbnQgLS0+CisgICAgICAgIDxyZWN0
IHg9IjIwIiB5PSIxNDAiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0icmVkIi8+CisgICAg
ICAgIDxpbWFnZSBpZD0idHJhbnNsYXRlRHluYW1pYyIgeD0iNTAiIHk9IjEyMCIgd2lkdGg9IjEw
MCIgaGVpZ2h0PSIxMDAiIGJ1ZmZlcmVkLXJlbmRlcmluZz0iZHluYW1pYyIgeGxpbms6aHJlZj0i
ZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
JyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+PHJlY3QgeD0nMTAlJyB5PScxMCUnIHdpZHRoPSc4
MCUnIGhlaWdodD0nODAlJyBmaWxsPSdncmVlbicvPjxjaXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9
JzEwJyBmaWxsPSdncmVlbicgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+
Ii8+CisKKyAgICAgICAgPCEtLSBUZXN0IHRyYW5zZm9ybWluZyBkeW5hbWljIGNvbnRlbnQgLS0+
CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyNjAiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmls
bD0icmVkIi8+CisgICAgICAgIDxpbWFnZSBpZD0idHJhbnNmb3JtRHluYW1pYyIgdHJhbnNmb3Jt
PSJza2V3WCgzMCkiIHg9IjAiIHk9IjI0MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGJ1ZmZl
cmVkLXJlbmRlcmluZz0iZHluYW1pYyIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sLDxz
dmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9
JzEwMCc+PHJlY3QgeD0nMTAlJyB5PScxMCUnIHdpZHRoPSc4MCUnIGhlaWdodD0nODAlJyBmaWxs
PSdncmVlbicvPjxjaXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVlbicgc3Ry
b2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+Ii8+CisKKyAgICAgICAgPCEtLSBU
ZXN0IHNjYWxpbmcgZHluYW1pYyBjb250ZW50IC0tPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0i
MzgwIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9InJlZCIvPgorICAgICAgICA8aW1hZ2Ug
aWQ9InNjYWxlRHluYW1pYyIgdHJhbnNmb3JtPSJzY2FsZSgwLjEpIiB4PSIwIiB5PSIzNjAiIHdp
ZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBidWZmZXJlZC1yZW5kZXJpbmc9ImR5bmFtaWMiIHhsaW5r
OmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxyZWN0IHg9JzEwJScgeT0nMTAlJyB3
aWR0aD0nODAlJyBoZWlnaHQ9JzgwJScgZmlsbD0nZ3JlZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9
JzI1JyByPScxMCcgZmlsbD0nZ3JlZW4nIHN0cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScv
Pjwvc3ZnPiIvPgorICAgIDwvc3ZnPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLXN0YXRpYy1pbWFnZS1leHBlY3RlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRl
cmluZy1zdGF0aWMtaW1hZ2UtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1zdGF0aWMtaW1hZ2UtZXhwZWN0ZWQu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L3JlcGFpbnQvcmVzb3VyY2Vz
L3JlcGFpbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHJl
cGFpbnRUZXN0KCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JlaGlu
ZCcpLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdncmVlbicpOworICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3RyYW5zbGF0ZScpLnNldEF0dHJpYnV0ZSgneCcsICcwJyk7CisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJhbnNmb3JtJykuc2V0QXR0cmlidXRl
KCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDAgMCknKTsKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzY2FsZScpLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywgJ3NjYWxlKDEp
Jyk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
UmVwYWludFRlc3QoKSI+CitUZXN0IGZvciBXSzEwNDIwNzogVGhpcyB0ZXN0IHBhc3NlcyBpZiB0
aGVyZSBhcmUgNCBncmVlbiBzcXVhcmVzIGVhY2ggd2l0aCBhIHNtb290aCBibGFjayBjaXJjbGUg
aW4gdGhlIHRvcC1sZWZ0IGNvcm5lci48YnIvPgorICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQ1MCI+CisgICAgICAgIDwhLS0g
VGVzdCBpbnZhbGlkYXRpbmcgY29udGVudCBiZWhpbmQgdGhlIHN0YXRpYyBjb250ZW50LiAtLT4K
KyAgICAgICAgPHJlY3QgaWQ9ImJlaGluZCIgeD0iNDAiIHk9IjEwIiB3aWR0aD0iMjAiIGhlaWdo
dD0iODAiIGZpbGw9InJlZCIvPgorICAgICAgICA8aW1hZ2UgeD0iMCIgeT0iMCIgd2lkdGg9IjEw
MCIgaGVpZ2h0PSIxMDAiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxy
ZWN0IHg9JzEwJyB5PScxMCcgd2lkdGg9JzMwJyBoZWlnaHQ9JzgwJyBmaWxsPSdncmVlbicvPjxy
ZWN0IHg9JzYwJyB5PScxMCcgd2lkdGg9JzMwJyBoZWlnaHQ9JzgwJyBmaWxsPSdncmVlbicvPjxj
aXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVlbicgc3Ryb2tlPSdibGFjaycg
c3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+Ii8+CisKKyAgICAgICAgPCEtLSBUZXN0IHRyYW5zbGF0
aW5nIHN0YXRpYyBjb250ZW50IC0tPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMTQwIiB3aWR0
aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9InJlZCIvPgorICAgICAgICA8aW1hZ2UgaWQ9InRyYW5z
bGF0ZSIgeD0iNTAiIHk9IjEyMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHhsaW5rOmhyZWY9
ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxyZWN0IHg9JzEwJScgeT0nMTAlJyB3aWR0aD0n
ODAlJyBoZWlnaHQ9JzgwJScgZmlsbD0nZ3JlZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9JzI1JyBy
PScxMCcgZmlsbD0nZ3JlZW4nIHN0cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScvPjwvc3Zn
PiIvPgorCisgICAgICAgIDwhLS0gVGVzdCB0cmFuc2Zvcm1pbmcgc3RhdGljIGNvbnRlbnQgLS0+
CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyNjAiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmls
bD0icmVkIi8+CisgICAgICAgIDxpbWFnZSBpZD0idHJhbnNmb3JtIiB0cmFuc2Zvcm09InNrZXdY
KDMwKSIgeD0iMCIgeT0iMjQwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeGxpbms6aHJlZj0i
ZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
JyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+PHJlY3QgeD0nMTAlJyB5PScxMCUnIHdpZHRoPSc4
MCUnIGhlaWdodD0nODAlJyBmaWxsPSdncmVlbicvPjxjaXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9
JzEwJyBmaWxsPSdncmVlbicgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+
Ii8+CisKKyAgICAgICAgPCEtLSBUZXN0IHNjYWxpbmcgc3RhdGljIGNvbnRlbnQgLS0+CisgICAg
ICAgIDxyZWN0IHg9IjIwIiB5PSIzODAiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0icmVk
Ii8+CisgICAgICAgIDxpbWFnZSBpZD0ic2NhbGUiIHRyYW5zZm9ybT0ic2NhbGUoMC4xKSIgeD0i
MCIgeT0iMzYwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeGxpbms6aHJlZj0iZGF0YTppbWFn
ZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0n
MTAwJyBoZWlnaHQ9JzEwMCc+PHJlY3QgeD0nMTAlJyB5PScxMCUnIHdpZHRoPSc4MCUnIGhlaWdo
dD0nODAlJyBmaWxsPSdncmVlbicvPjxjaXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxs
PSdncmVlbicgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+Ii8+CisgICAg
PC9zdmc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvcmVwYWludC9i
dWZmZXJlZC1yZW5kZXJpbmctc3RhdGljLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLXN0YXRpYy1pbWFnZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5n
LXN0YXRpYy1pbWFnZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvcmVw
YWludC9yZXNvdXJjZXMvcmVwYWludC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAg
ICAgZnVuY3Rpb24gcmVwYWludFRlc3QoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYmVoaW5kU3RhdGljJykuc2V0QXR0cmlidXRlKCdmaWxsJywgJ2dyZWVuJyk7Cisg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJhbnNsYXRlU3RhdGljJykuc2V0
QXR0cmlidXRlKCd4JywgJzAnKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0cmFuc2Zvcm1TdGF0aWMnKS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUo
MCAwKScpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjYWxlU3RhdGlj
Jykuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCAnc2NhbGUoMSknKTsKKyAgICAgICAgfQorICAg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5SZXBhaW50VGVzdCgpIj4KK1Rl
c3QgZm9yIFdLMTA0MjA3OiBUaGlzIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGFyZSA0IGdyZWVuIHNx
dWFyZXMgZWFjaCB3aXRoIGEgc21vb3RoIGJsYWNrIGNpcmNsZSBpbiB0aGUgdG9wLWxlZnQgY29y
bmVyLjxici8+CisgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdp
ZHRoPSI0MDAiIGhlaWdodD0iNDUwIj4KKyAgICAgICAgPCEtLSBUZXN0IGludmFsaWRhdGluZyBj
b250ZW50IGJlaGluZCB0aGUgc3RhdGljIGNvbnRlbnQuIC0tPgorICAgICAgICA8cmVjdCBpZD0i
YmVoaW5kU3RhdGljIiB4PSI0MCIgeT0iMTAiIHdpZHRoPSIyMCIgaGVpZ2h0PSI4MCIgZmlsbD0i
cmVkIi8+CisgICAgICAgIDxpbWFnZSB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgYnVmZmVyZWQtcmVuZGVyaW5nPSJzdGF0aWMiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3Zn
K3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcg
aGVpZ2h0PScxMDAnPjxyZWN0IHg9JzEwJyB5PScxMCcgd2lkdGg9JzMwJyBoZWlnaHQ9JzgwJyBm
aWxsPSdncmVlbicvPjxyZWN0IHg9JzYwJyB5PScxMCcgd2lkdGg9JzMwJyBoZWlnaHQ9JzgwJyBm
aWxsPSdncmVlbicvPjxjaXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVlbicg
c3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+Ii8+CisKKyAgICAgICAgPCEt
LSBUZXN0IHRyYW5zbGF0aW5nIHN0YXRpYyBjb250ZW50IC0tPgorICAgICAgICA8cmVjdCB4PSIy
MCIgeT0iMTQwIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9InJlZCIvPgorICAgICAgICA8
aW1hZ2UgaWQ9InRyYW5zbGF0ZVN0YXRpYyIgeD0iNTAiIHk9IjEyMCIgd2lkdGg9IjEwMCIgaGVp
Z2h0PSIxMDAiIGJ1ZmZlcmVkLXJlbmRlcmluZz0ic3RhdGljIiB4bGluazpocmVmPSJkYXRhOmlt
YWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRo
PScxMDAnIGhlaWdodD0nMTAwJz48cmVjdCB4PScxMCUnIHk9JzEwJScgd2lkdGg9JzgwJScgaGVp
Z2h0PSc4MCUnIGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBjeD0nMjUnIGN5PScyNScgcj0nMTAnIGZp
bGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnLz48L3N2Zz4iLz4KKwor
ICAgICAgICA8IS0tIFRlc3QgdHJhbnNmb3JtaW5nIHN0YXRpYyBjb250ZW50IC0tPgorICAgICAg
ICA8cmVjdCB4PSIyMCIgeT0iMjYwIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9InJlZCIv
PgorICAgICAgICA8aW1hZ2UgaWQ9InRyYW5zZm9ybVN0YXRpYyIgdHJhbnNmb3JtPSJza2V3WCgz
MCkiIHg9IjAiIHk9IjI0MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGJ1ZmZlcmVkLXJlbmRl
cmluZz0ic3RhdGljIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz48cmVj
dCB4PScxMCUnIHk9JzEwJScgd2lkdGg9JzgwJScgaGVpZ2h0PSc4MCUnIGZpbGw9J2dyZWVuJy8+
PGNpcmNsZSBjeD0nMjUnIGN5PScyNScgcj0nMTAnIGZpbGw9J2dyZWVuJyBzdHJva2U9J2JsYWNr
JyBzdHJva2Utd2lkdGg9JzEnLz48L3N2Zz4iLz4KKworICAgICAgICA8IS0tIFRlc3Qgc2NhbGlu
ZyBzdGF0aWMgY29udGVudCAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjM4MCIgd2lkdGg9
IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSJyZWQiLz4KKyAgICAgICAgPGltYWdlIGlkPSJzY2FsZVN0
YXRpYyIgdHJhbnNmb3JtPSJzY2FsZSgwLjEpIiB4PSIwIiB5PSIzNjAiIHdpZHRoPSIxMDAiIGhl
aWdodD0iMTAwIiBidWZmZXJlZC1yZW5kZXJpbmc9InN0YXRpYyIgeGxpbms6aHJlZj0iZGF0YTpp
bWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0
aD0nMTAwJyBoZWlnaHQ9JzEwMCc+PHJlY3QgeD0nMTAlJyB5PScxMCUnIHdpZHRoPSc4MCUnIGhl
aWdodD0nODAlJyBmaWxsPSdncmVlbicvPjxjaXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9JzEwJyBm
aWxsPSdncmVlbicgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+Ii8+Cisg
ICAgPC9zdmc+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="216745"
          type_id="1"
          status="-"
          setter="schenney"
    />
    <flag name="commit-queue"
          id="216769"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195698</attachid>
            <date>2013-03-28 22:40:53 -0700</date>
            <delta_ts>2013-03-29 15:54:51 -0700</delta_ts>
            <desc>Updated per reviewer comments</desc>
            <filename>104207.2842.patch</filename>
            <type>text/plain</type>
            <size>39808</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NzE5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDEzLTAzLTI4ICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NWRzJdIEFkZCBzdXBwb3J0IGZv
ciB0aGUgYnVmZmVyZWQtcmVuZGVyaW5nIGhpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDIwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgU1ZHMiBidWZmZXJlZC1y
ZW5kZXJpbmcgcHJvcGVydHkgYW5kIGltcGxlbWVudHMgaXQgZm9yIHRoZSBpbWFnZQorICAgICAg
ICBlbGVtZW50LiBGb3IgcmVmZXJlbmNlLCB0aGUgc3BlYyBjYW4gYmUgZm91bmQgYXQ6CisgICAg
ICAgICAgICBodHRwczovL3N2Z3dnLm9yZy9zdmcyLWRyYWZ0L3NpbmdsZS1wYWdlLmh0bWwjcGFp
bnRpbmctQnVmZmVyZWRSZW5kZXJpbmcKKworICAgICAgICBUaGUgYnVmZmVyZWQtcmVuZGVyaW5n
IGhpbnQgY2F1c2VzIG91ciBpbXBsZW1lbnRhdGlvbiB0byBjcmVhdGUgYSB0ZW1wb3JhcnkgaW1h
Z2UgYnVmZmVyCisgICAgICAgIGZvciBjYWNoaW5nIGFuIGVsZW1lbnQncyBmb3JlZ3JvdW5kIHJl
bmRlcmluZy4gVGhpcyBiZWhhdmlvciBoYXMgYmVlbiBkZXNpZ25lZCB0byBzdXBwb3J0CisgICAg
ICAgIG90aGVyIGdyYXBoaWNhbCBhbmQgY29udGFpbmVyIGVsZW1lbnRzIGluIGZvbGxvd3VwIHBh
dGNoZXMgKHN1Y2ggYXMgdGhlIHVzZSBhbmQgZyBlbGVtZW50cykuCisgICAgICAgIFRoaXMgcGF0
Y2ggc2hvdWxkIG5vdCBhZmZlY3QgcmVuZGVyaW5nLCBhbmQgYSB0ZXN0IGhhcyBiZWVuIGFkZGVk
IHNob3dpbmcgdGhlIGltYWdlCisgICAgICAgIHJlc3VsdHMgYXJlIHVuY2hhbmdlZC4gCisKKyAg
ICAgICAgVGhlIHBlcmZvcm1hbmNlIGFzcGVjdHMgb2YgdGhpcyBwYXRjaCBjYW4gYmUgdGVzdGVk
IHVzaW5nIHRoZSBmb2xsb3dpbmcgdGVzdDoKKyAgICAgICAgICAgIGh0dHA6Ly9waGlsYml0LmNv
bS9ib3VuY2luZ1RpZ2Vycy5odG1sCisgICAgICAgIFdpdGhvdXQgdGhlIHBhdGNoLCByZW5kZXJp
bmcgaXMgYmVsb3cgMWZwcy4gV2l0aCB0aGUgcGF0Y2gsIHJlbmRlcmluZyBpcyBmbHVpZC4KKwor
ICAgICAgICBUZXN0czogc3ZnL2Nzcy9idWZmZXJlZC1yZW5kZXJpbmcuaHRtbAorICAgICAgICAg
ICAgICAgc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLWR5bmFtaWMtaW1hZ2UuaHRtbAor
ICAgICAgICAgICAgICAgc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLXN0YXRpYy1pbWFn
ZS5odG1sCisKKyAgICAgICAgT3RoZXIgdGhhbiB0aGUgY2hhbmdlcyB0byBSZW5kZXJTVkdJbWFn
ZSBhbmQgU1ZHUmVuZGVyaW5nQ29udGV4dCwgdGhlIGNoYW5nZXMgYmVsb3cgYXJlIHRvCisgICAg
ICAgIHN1cHBvcnQgdGhlIG5ldyBidWZmZXJlZC1yZW5kZXJpbmcgcHJvcGVydHk6CisKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6Cisg
ICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQnVm
ZmVyZWRSZW5kZXJpbmcpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eSk6CisgICAgICAgICog
Y3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFNWR1Byb3BlcnR5Q1NTVmFsdWUpOgor
ICAgICAgICAqIGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZVNWR1ZhbHVlKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTUHJvcGVydHlOYW1lcy5p
bjoKKyAgICAgICAgKiBjc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU1ZH
Q1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmRpZmYpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCdWZmZXJlZFJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0QnVmZmVyZWRSZW5kZXJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmJ1ZmZlcmVkUmVuZGVyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzZXRCaXREZWZhdWx0cyk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBh
aW50KToKKworICAgICAgICAgICAgVGhlIGZvcmVncm91bmQgcGFpbnRpbmcgaGFzIGJlZW4gZXh0
cmFjdGVkIG91dCBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uIFRoaXMgaGFzIGFsc28KKyAgICAg
ICAgICAgIGJlZW4gY2hhbmdlZCBzbyB0aGF0IGlmIHRoZSBidWZmZXJlZC1yZW5kZXJpbmcgaGlu
dCBpcyBwcmVzZW50LCBidWZmZXJGb3JlZ3JvdW5kCisgICAgICAgICAgICBpcyB1c2VkLgorCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnRGb3JlZ3JvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmludmFsaWRh
dGVCdWZmZXJlZEZvcmVncm91bmQpOgorCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGNvdWxk
IGJlIHJlcGxhY2VkIHdpdGggIm1fYnVmZmVyZWRGb3JlZ3JvdW5kLmNsZWFyKCkiIGJ1dCBvdGhl
ciByZW5kZXJlcnMKKyAgICAgICAgICAgIChzdWNoIGFzIGNvbnRhaW5lciBlbGVtZW50cykgd2ls
bCByZXF1aXJlIG1vcmUgY29tcGxleCBpbnZhbGlkYXRpb24gbG9naWMuIFRvCisgICAgICAgICAg
ICBtYWludGFpbiBjb25zaXN0ZW5jeSB3aXRoIHRoaXMgZnV0dXJlIGNvZGUsIGludmFsaWRhdGVC
dWZmZXJlZEZvcmVncm91bmQgaGFzIGJlZW4gdXNlZC4KKworICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5oOgorICAgICAgICAoUmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAo
U1ZHUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNW
R0F0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlUb1R5cGVNYXAp
OgorICAgICAgICAqIHN2Zy9zdmdhdHRycy5pbjoKKwogMjAxMy0wMy0yOCAgUGhpbGlwIFJvZ2Vy
cyAgPHBkckBnb29nbGUuY29tPgogCiAgICAgICAgIEZpeCBjb21waWxlciB3YXJuaW5nIGluIElE
QlRyYW5zYWN0aW9uOjptb2RlVG9TdHJpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxNDcxOTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgyLDYgKzM4Miw3IEBAIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlE
IGNvbXB1dGVkUHJvcGUKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBUaHJvdWdoLAogI2VuZGlm
CiAjaWYgRU5BQkxFKFNWRykKKyAgICBDU1NQcm9wZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nLAogICAg
IENTU1Byb3BlcnR5Q2xpcFBhdGgsCiAgICAgQ1NTUHJvcGVydHlDbGlwUnVsZSwKICAgICBDU1NQ
cm9wZXJ0eU1hc2ssCkBAIC0yODIxLDYgKzI4MjIsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTVkcpCisgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZzoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUNsaXBQYXRoOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcFJ1bGU6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlNYXNrOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAxNDcxOTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjM4
LDYgKzQyMzgsMzggQEAgdGVtcGxhdGU8aW50IHN1cHBvcnRlZD4gTGVuZ3RoIENTU1ByaW1pdAog
CiAjaWYgRU5BQkxFKFNWRykKIAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKEVCdWZmZXJlZFJlbmRlcmluZyBlKQorICAgIDogQ1NTVmFsdWUo
UHJpbWl0aXZlQ2xhc3MpCit7CisgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19JREVOVDsK
KyAgICBzd2l0Y2ggKGUpIHsKKyAgICBjYXNlIEJSX0FVVE86CisgICAgICAgIG1fdmFsdWUuaWRl
bnQgPSBDU1NWYWx1ZUF1dG87CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQlJfRFlOQU1JQzoK
KyAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlRHluYW1pYzsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBCUl9TVEFUSUM6CisgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZVN0
YXRpYzsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJ1ZmZlcmVkUmVuZGVyaW5nKCkgY29uc3QKK3sKKyAg
ICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAg
ICAgcmV0dXJuIEJSX0FVVE87CisgICAgY2FzZSBDU1NWYWx1ZUR5bmFtaWM6CisgICAgICAgIHJl
dHVybiBCUl9EWU5BTUlDOworICAgIGNhc2UgQ1NTVmFsdWVTdGF0aWM6CisgICAgICAgIHJldHVy
biBCUl9TVEFUSUM7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIEJSX0FVVE87Cit9CisKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShFQ29sb3JJbnRlcnBvbGF0aW9uIGUpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAkocmV2
aXNpb24gMTQ3MTkyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjkxLDYgKzY5MSw3IEBAIGJvb2wgQ1NTUHJvcGVydHk6OmlzSW5oZXJp
dGVkUHJvcGVydHkoQ1MKICAgICBjYXNlIENTU1Byb3BlcnR5QmFzZWxpbmVTaGlmdDoKICAgICBj
YXNlIENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZToKICAgICBjYXNlIENTU1Byb3BlcnR5VmVj
dG9yRWZmZWN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZzoKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0U3ZnU2hhZG93OgogI2VuZGlmCiAjaWYgRU5BQkxFKERBU0hC
T0FSRF9TVVBQT1JUKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NWR0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDE0NzE5MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzcsNiArMTc3LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0
ZWRTdHlsZURlYwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgfQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRS
ZW5kZXJpbmc6CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dmdTdHlsZS0+YnVmZmVyZWRSZW5kZXJpbmcoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlH
bHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDoKICAgICAgICAgICAgIHJldHVybiBnbHlwaE9yaWVu
dGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS0+Z2x5cGhPcmllbnRhdGlvbkhvcml6
b250YWwoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlHbHlwaE9yaWVudGF0aW9uVmVydGlj
YWw6IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAxNDcx
OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM4LDYgKzEzOCwxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShDU1NQ
cm9wZXJ0CiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVh
azsKIAorICAgIGNhc2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZzogLy8gYXV0byB8IGR5
bmFtaWMgfCBzdGF0aWMKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBD
U1NWYWx1ZUR5bmFtaWMgfHwgaWQgPT0gQ1NTVmFsdWVTdGF0aWMpCisgICAgICAgICAgICB2YWxp
ZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlDb2xvclByb2ZpbGU6IC8vIGF1dG8gfCBzUkdCIHwgPG5hbWU+IHwgPHVyaT4gaW5oZXJpdAog
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlU3JnYikKICAg
ICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTUHJvcGVydHlOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTUHJvcGVydHlOYW1lcy5pbgkocmV2aXNpb24gMTQ3MTkyKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTUsNiAr
NSw3IEBACiAjaWYgZGVmaW5lZChFTkFCTEVfU1ZHKSAmJiBFTkFCTEVfU1ZHCiAKIC8vIFNWRyBz
dHlsZSBwcm9wcworYnVmZmVyZWQtcmVuZGVyaW5nCiBjbGlwLXBhdGgKIGNsaXAtcnVsZQogbWFz
awpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2
aXNpb24gMTQ3MTkyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODgsNiArNTg4LDE0IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlTVkdQcm9wZXJ0eShDU1MKICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRWZWN0b3JF
ZmZlY3QoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cisg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZzogeworICAgICAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYnVmZmVyZWRSZW5kZXJpbmcsIEJ1ZmZlcmVkUmVu
ZGVyaW5nKQorICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgc3Znc3R5bGUtPnNldEJ1ZmZlcmVkUmVuZGVyaW5nKCpw
cmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5TWFza1R5cGU6IHsKICAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKG1hc2tUeXBlLCBNYXNrVHlwZSkKICAgICAgICAgICAgIGlmICghcHJpbWl0aXZl
VmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTVmFsdWVLZXl3b3Jkcy5pbgko
cmV2aXNpb24gMTQ3MTkyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1ZhbHVlS2V5d29y
ZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsMTEgQEAgcmVzZXQtc2l6ZQogLy8g
bWlkZGxlCiAvLyBlbmQKIAorLy8gQ1NTX1BST1BfQlVGRkVSRURfUkVOREVSSU5HCisvLyBhdXRv
CisvLyBzdGF0aWMKK2R5bmFtaWMKKwogLy8gQ1NTX1BST1BfVkVDVE9SX0VGRkVDVAogLy8gbm9u
ZQogbm9uLXNjYWxpbmctc3Ryb2tlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDE0NzE5MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyMyw2ICsyMjMsOSBAQCBTdHlsZURpZmZlcmVuY2UgU1ZHUmVuZGVyU3R5bGU6OmRp
ZmYoY29uCiAgICAgaWYgKHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fdmVjdG9yRWZmZWN0ICE9
IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVjdCkKICAgICAgICAg
cmV0dXJuIFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQ7CiAKKyAgICBpZiAoc3ZnX25vbmluaGVyaXRl
ZF9mbGFncy5mLmJ1ZmZlcmVkUmVuZGVyaW5nICE9IG90aGVyLT5zdmdfbm9uaW5oZXJpdGVkX2Zs
YWdzLmYuYnVmZmVyZWRSZW5kZXJpbmcpCisgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VS
ZXBhaW50OworCiAgICAgaWYgKHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5tYXNrVHlwZSAhPSBv
dGhlci0+c3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLm1hc2tUeXBlKQogICAgICAgICByZXR1cm4g
U3R5bGVEaWZmZXJlbmNlUmVwYWludDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDE0NzE5MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRURvbWluYW50QmFzZWxpbmUg
aW5pdGlhbERvbWluYW50QmFzZWxpbmUoKSB7IHJldHVybiBEQl9BVVRPOyB9CiAgICAgc3RhdGlj
IEVCYXNlbGluZVNoaWZ0IGluaXRpYWxCYXNlbGluZVNoaWZ0KCkgeyByZXR1cm4gQlNfQkFTRUxJ
TkU7IH0KICAgICBzdGF0aWMgRVZlY3RvckVmZmVjdCBpbml0aWFsVmVjdG9yRWZmZWN0KCkgeyBy
ZXR1cm4gVkVfTk9ORTsgfQorICAgIHN0YXRpYyBFQnVmZmVyZWRSZW5kZXJpbmcgaW5pdGlhbEJ1
ZmZlcmVkUmVuZGVyaW5nKCkgeyByZXR1cm4gQlJfQVVUTzsgfQogICAgIHN0YXRpYyBMaW5lQ2Fw
IGluaXRpYWxDYXBTdHlsZSgpIHsgcmV0dXJuIEJ1dHRDYXA7IH0KICAgICBzdGF0aWMgV2luZFJ1
bGUgaW5pdGlhbENsaXBSdWxlKCkgeyByZXR1cm4gUlVMRV9OT05aRVJPOyB9CiAgICAgc3RhdGlj
IEVDb2xvckludGVycG9sYXRpb24gaW5pdGlhbENvbG9ySW50ZXJwb2xhdGlvbigpIHsgcmV0dXJu
IENJX1NSR0I7IH0KQEAgLTEyOCw2ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREb21p
bmFudEJhc2VsaW5lKEVEb21pbmFudEJhc2VsaW5lIHZhbCkgeyBzdmdfbm9uaW5oZXJpdGVkX2Zs
YWdzLmYuX2RvbWluYW50QmFzZWxpbmUgPSB2YWw7IH0KICAgICB2b2lkIHNldEJhc2VsaW5lU2hp
ZnQoRUJhc2VsaW5lU2hpZnQgdmFsKSB7IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fYmFzZWxp
bmVTaGlmdCA9IHZhbDsgfQogICAgIHZvaWQgc2V0VmVjdG9yRWZmZWN0KEVWZWN0b3JFZmZlY3Qg
dmFsKSB7IHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5fdmVjdG9yRWZmZWN0ID0gdmFsOyB9Cisg
ICAgdm9pZCBzZXRCdWZmZXJlZFJlbmRlcmluZyhFQnVmZmVyZWRSZW5kZXJpbmcgdmFsKSB7IHN2
Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRlcmluZyA9IHZhbDsgfQogICAgIHZv
aWQgc2V0Q2FwU3R5bGUoTGluZUNhcCB2YWwpIHsgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2FwU3R5
bGUgPSB2YWw7IH0KICAgICB2b2lkIHNldENsaXBSdWxlKFdpbmRSdWxlIHZhbCkgeyBzdmdfaW5o
ZXJpdGVkX2ZsYWdzLl9jbGlwUnVsZSA9IHZhbDsgfQogICAgIHZvaWQgc2V0Q29sb3JJbnRlcnBv
bGF0aW9uKEVDb2xvckludGVycG9sYXRpb24gdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2Nv
bG9ySW50ZXJwb2xhdGlvbiA9IHZhbDsgfQpAQCAtMzA1LDYgKzMwNyw3IEBAIHB1YmxpYzoKICAg
ICBFRG9taW5hbnRCYXNlbGluZSBkb21pbmFudEJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gKEVE
b21pbmFudEJhc2VsaW5lKSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxp
bmU7IH0KICAgICBFQmFzZWxpbmVTaGlmdCBiYXNlbGluZVNoaWZ0KCkgY29uc3QgeyByZXR1cm4g
KEVCYXNlbGluZVNoaWZ0KSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQ7
IH0KICAgICBFVmVjdG9yRWZmZWN0IHZlY3RvckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIChFVmVj
dG9yRWZmZWN0KSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVjdDsgfQorICAg
IEVCdWZmZXJlZFJlbmRlcmluZyBidWZmZXJlZFJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIChF
QnVmZmVyZWRSZW5kZXJpbmcpIHN2Z19ub25pbmhlcml0ZWRfZmxhZ3MuZi5idWZmZXJlZFJlbmRl
cmluZzsgfQogICAgIExpbmVDYXAgY2FwU3R5bGUoKSBjb25zdCB7IHJldHVybiAoTGluZUNhcCkg
c3ZnX2luaGVyaXRlZF9mbGFncy5fY2FwU3R5bGU7IH0KICAgICBXaW5kUnVsZSBjbGlwUnVsZSgp
IGNvbnN0IHsgcmV0dXJuIChXaW5kUnVsZSkgc3ZnX2luaGVyaXRlZF9mbGFncy5fY2xpcFJ1bGU7
IH0KICAgICBFQ29sb3JJbnRlcnBvbGF0aW9uIGNvbG9ySW50ZXJwb2xhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIChFQ29sb3JJbnRlcnBvbGF0aW9uKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9jb2xvcklu
dGVycG9sYXRpb247IH0KQEAgLTQxMiw4ICs0MTUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgX2RvbWluYW50QmFzZWxpbmUgOiA0OyAvLyBFRG9taW5hbnRCYXNlbGlu
ZQogICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9iYXNlbGluZVNoaWZ0IDogMjsgLy8gRUJhc2Vs
aW5lU2hpZnQKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfdmVjdG9yRWZmZWN0OiAxOyAvLyBF
VmVjdG9yRWZmZWN0CisgICAgICAgICAgICAgICAgdW5zaWduZWQgYnVmZmVyZWRSZW5kZXJpbmc6
IDI7IC8vIEVCdWZmZXJlZFJlbmRlcmluZwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1hc2tU
eXBlOiAxOyAvLyBFTWFza1R5cGUKLSAgICAgICAgICAgICAgICAvLyAyMCBiaXRzIHVudXNlZAor
ICAgICAgICAgICAgICAgIC8vIDE4IGJpdHMgdW51c2VkCiAgICAgICAgICAgICB9IGY7CiAgICAg
ICAgICAgICB1aW50MzJfdCBfbmlmbGFnczsKICAgICAgICAgfTsKQEAgLTQ1OCw2ICs0NjIsNyBA
QCBwcml2YXRlOgogICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2RvbWluYW50QmFz
ZWxpbmUgPSBpbml0aWFsRG9taW5hbnRCYXNlbGluZSgpOwogICAgICAgICBzdmdfbm9uaW5oZXJp
dGVkX2ZsYWdzLmYuX2Jhc2VsaW5lU2hpZnQgPSBpbml0aWFsQmFzZWxpbmVTaGlmdCgpOwogICAg
ICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX3ZlY3RvckVmZmVjdCA9IGluaXRpYWxWZWN0
b3JFZmZlY3QoKTsKKyAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLmJ1ZmZlcmVkUmVu
ZGVyaW5nID0gaW5pdGlhbEJ1ZmZlcmVkUmVuZGVyaW5nKCk7CiAgICAgICAgIHN2Z19ub25pbmhl
cml0ZWRfZmxhZ3MuZi5tYXNrVHlwZSA9IGluaXRpYWxNYXNrVHlwZSgpOwogICAgIH0KIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0
eWxlRGVmcy5oCShyZXZpc2lvbiAxNDcxOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVkVfTk9OX1NDQUxJTkdfU1RST0tFCiAg
ICAgfTsKIAorICAgIGVudW0gRUJ1ZmZlcmVkUmVuZGVyaW5nIHsKKyAgICAgICAgQlJfQVVUTywK
KyAgICAgICAgQlJfRFlOQU1JQywKKyAgICAgICAgQlJfU1RBVElDCisgICAgfTsKKwogICAgIGVu
dW0gRU1hc2tUeXBlIHsKICAgICAgICAgTVRfTFVNSU5BTkNFLAogICAgICAgICBNVF9BTFBIQQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5j
cHAJKHJldmlzaW9uIDE0NzE5MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsMTQgKzEzMiwxMCBAQCB2b2lk
IFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhCiAgICAgICAgICAgICBTVkdSZW5k
ZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRleHQodGhpcywgY2hpbGRQYWludEluZm8pOwogCiAg
ICAgICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsK
LSAgICAgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9pbWFnZVJlc291cmNlLT5p
bWFnZSgpOwotICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IG1fb2JqZWN0Qm91
bmRpbmdCb3g7Ci0gICAgICAgICAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1hZ2Ut
PndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgaWYgKHN0eWxlKCkt
PnN2Z1N0eWxlKCktPmJ1ZmZlcmVkUmVuZGVyaW5nKCkgPT0gQlJfU1RBVElDICAmJiByZW5kZXJp
bmdDb250ZXh0LmJ1ZmZlckZvcmVncm91bmQobV9idWZmZXJlZEZvcmVncm91bmQpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICBTVkdJbWFnZUVsZW1lbnQq
IGltYWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7Ci0g
ICAgICAgICAgICAgICAgaW1hZ2VFbGVtZW50LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkudHJhbnNm
b3JtUmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7Ci0KLSAgICAgICAgICAgICAgICBjaGlsZFBhaW50
SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICAgICAgICAgICAgICBwYWludEZvcmVncm91bmQoY2hp
bGRQYWludEluZm8pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTE0OCw2ICsxNDQs
MjMgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYQogICAgIH0KIH0K
IAordm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJ
bmZvKQoreworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdl
KCk7CisgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gbV9vYmplY3RCb3VuZGluZ0JveDsKKyAgICBG
bG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsK
KworICAgIFNWR0ltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHSW1h
Z2VFbGVtZW50Kj4obm9kZSgpKTsKKyAgICBpbWFnZUVsZW1lbnQtPnByZXNlcnZlQXNwZWN0UmF0
aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKKworICAgIHBhaW50SW5mby5j
b250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RS
ZWN0LCBzcmNSZWN0KTsKK30KKwordm9pZCBSZW5kZXJTVkdJbWFnZTo6aW52YWxpZGF0ZUJ1ZmZl
cmVkRm9yZWdyb3VuZCgpCit7CisgICAgbV9idWZmZXJlZEZvcmVncm91bmQuY2xlYXIoKTsKK30K
KwogYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7CiAgICAgLy8gV2Ug
b25seSBkcmF3IGluIHRoZSBmb3Jncm91bmQgcGhhc2UsIHNvIHdlIG9ubHkgaGl0LXRlc3QgdGhl
bi4KQEAgLTE4OCw2ICsyMDEsOCBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjppbWFnZUNoYW5nZWQo
V3JhcHBlCiAgICAgbV9vYmplY3RCb3VuZGluZ0JveCA9IEZsb2F0UmVjdCgpOwogICAgIHVwZGF0
ZUltYWdlVmlld3BvcnQoKTsKIAorICAgIGludmFsaWRhdGVCdWZmZXJlZEZvcmVncm91bmQoKTsK
KwogICAgIHJlcGFpbnQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTQ3MTkyKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5
ICs0OSwxMiBAQCBwdWJsaWM6CiAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogaW1hZ2VSZXNvdXJj
ZSgpIHsgcmV0dXJuIG1faW1hZ2VSZXNvdXJjZS5nZXQoKTsgfQogICAgIGNvbnN0IFJlbmRlcklt
YWdlUmVzb3VyY2UqIGltYWdlUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlUmVzb3Vy
Y2UuZ2V0KCk7IH0KIAorICAgIC8vIE5vdGU6IEFzc3VtZXMgdGhlIFBhaW50SW5mbyBjb250ZXh0
IGhhcyBoYWQgYWxsIGxvY2FsIHRyYW5zZm9ybXMgYXBwbGllZC4KKyAgICB2b2lkIHBhaW50Rm9y
ZWdyb3VuZChQYWludEluZm8mKTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHSW1hZ2UiOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KIApAQCAtNjcsNiArNzAsOCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAorICAgIHZvaWQgaW52YWxpZGF0
ZUJ1ZmZlcmVkRm9yZWdyb3VuZCgpOworCiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7CiAKICAgICB2aXJ0dWFsIEFmZmluZVRy
YW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07
IH0KQEAgLTc5LDYgKzg0LDggQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZXBhaW50Qm91
bmRpbmdCb3g7CiAgICAgRmxvYXRSZWN0IG1fcmVwYWludEJvdW5kaW5nQm94RXhjbHVkaW5nU2hh
ZG93OwogICAgIE93blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPiBtX2ltYWdlUmVzb3VyY2U7CisK
KyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fYnVmZmVyZWRGb3JlZ3JvdW5kOwogfTsKIAogaW5s
aW5lIFJlbmRlclNWR0ltYWdlKiB0b1JlbmRlclNWR0ltYWdlKFJlbmRlck9iamVjdCogb2JqZWN0
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNDcxOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIgpAQCAtMzI0LDYg
KzMyNSwzNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsZWFyMkRSb3RhdGlvCiAgICAg
dHJhbnNmb3JtLnJlY29tcG9zZShkZWNvbXBvc2l0aW9uKTsKIH0KIAorYm9vbCBTVkdSZW5kZXJp
bmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVm
ZmVyKQoreworICAgIEFTU0VSVChtX3BhaW50SW5mbyk7CisgICAgQVNTRVJUKG1fb2JqZWN0LT5p
c1NWR0ltYWdlKCkpOworICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IG1fb2JqZWN0LT5vYmpl
Y3RCb3VuZGluZ0JveCgpOworCisgICAgLy8gSW52YWxpZGF0ZSBhbiBleGlzdGluZyBidWZmZXIg
aWYgdGhlIHNjYWxlIGlzIG5vdCBjb3JyZWN0LgorICAgIGlmIChpbWFnZUJ1ZmZlcikgeworICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbV9wYWludEluZm8tPmNvbnRleHQtPmdl
dENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpOworICAg
ICAgICBJbnRTaXplIGV4cGFuZGVkQm91bmRpbmdCb3ggPSBleHBhbmRlZEludFNpemUoYm91bmRp
bmdCb3guc2l6ZSgpKTsKKyAgICAgICAgSW50U2l6ZSBidWZmZXJTaXplKHN0YXRpY19jYXN0PGlu
dD4oY2VpbChleHBhbmRlZEJvdW5kaW5nQm94LndpZHRoKCkgKiB0cmFuc2Zvcm0ueFNjYWxlKCkp
KSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsKGV4cGFuZGVkQm91bmRpbmdCb3guaGVpZ2h0KCkgKiB0
cmFuc2Zvcm0ueVNjYWxlKCkpKSk7CisgICAgICAgIGlmIChidWZmZXJTaXplICE9IGltYWdlQnVm
ZmVyLT5pbnRlcm5hbFNpemUoKSkKKyAgICAgICAgICAgIGltYWdlQnVmZmVyLmNsZWFyKCk7Cisg
ICAgfQorCisgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVncm91
bmQgaW50byBpdC4KKyAgICBpZiAoIWltYWdlQnVmZmVyKSB7CisgICAgICAgIGlmICgoaW1hZ2VC
dWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBh
bmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgdHJ1ZSkpKSB7CisgICAgICAgICAgICBH
cmFwaGljc0NvbnRleHQqIGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4dCA9IGltYWdlQnVmZmVyLT5j
b250ZXh0KCk7CisgICAgICAgICAgICBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQtPnRyYW5zbGF0
ZSgtYm91bmRpbmdCb3gueCgpLCAtYm91bmRpbmdCb3gueSgpKTsKKyAgICAgICAgICAgIFBhaW50
SW5mbyBidWZmZXJlZEluZm8oKm1fcGFpbnRJbmZvKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkSW5m
by5jb250ZXh0ID0gYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0OworICAgICAgICAgICAgdG9SZW5k
ZXJTVkdJbWFnZShtX29iamVjdCktPnBhaW50Rm9yZWdyb3VuZChidWZmZXJlZEluZm8pOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX3Bh
aW50SW5mby0+Y29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBib3VuZGluZ0JveCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0K
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gMTQ3MTkyKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkz
LDYgKzkzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChhYnNv
bHV0ZVRyYW5zZm9ybS5tYXBSZWN0KHRhcmdldFJlY3QpKTsKICAgICB9CiAKKyAgICAvLyBTdXBw
b3J0IGZvciB0aGUgYnVmZmVyZWQtcmVuZGVyaW5nIGhpbnQuCisgICAgYm9vbCBidWZmZXJGb3Jl
Z3JvdW5kKE93blB0cjxJbWFnZUJ1ZmZlcj4mKTsKKwogcHJpdmF0ZToKICAgICAvLyBUbyBwcm9w
ZXJseSByZXZlcnQgcGFydGlhbGx5IHN1Y2Nlc3NmdWwgaW5pdGlhbGl6dGlvbnMgaW4gdGhlIGRl
c3RydWN0b3IsIHdlIHJlY29yZCBhbGwgc3VjY2Vzc2Z1bCBzdGVwcy4KICAgICBlbnVtIFJlbmRl
cmluZ0ZsYWdzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NzE5MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBAIENTU1Byb3BlcnR5SUQgU1ZH
U3R5bGVkRWxlbWVudDo6Y3NzUHJvcGUKICAgICAgICAgLy8gVGhpcyBpcyBhIGxpc3Qgb2YgYWxs
IGJhc2UgQ1NTIGFuZCBTVkcgQ1NTIHByb3BlcnRpZXMgd2hpY2ggYXJlIGV4cG9zZWQgYXMgU1ZH
IFhNTCBhdHRyaWJ1dGVzCiAgICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVy
dHlOYW1lVG9JZE1hcCwgYWxpZ25tZW50X2Jhc2VsaW5lQXR0cik7CiAgICAgICAgIG1hcEF0dHJp
YnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgYmFzZWxpbmVfc2hpZnRBdHRy
KTsKKyAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFw
LCBidWZmZXJlZF9yZW5kZXJpbmdBdHRyKTsKICAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9w
ZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjbGlwQXR0cik7CiAgICAgICAgIG1hcEF0dHJpYnV0
ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgY2xpcF9wYXRoQXR0cik7CiAgICAg
ICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgY2xpcF9y
dWxlQXR0cik7CkBAIC0yMTQsNiArMjE1LDcgQEAgc3RhdGljIGlubGluZSBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcAogICAgIC8vIEZpbGwgdGhlIG1hcCBmb3IgdGhlIGZpcnN0IHVzZS4KICAg
ICBzX2Nzc1Byb3BlcnR5TWFwLnNldChhbGlnbm1lbnRfYmFzZWxpbmVBdHRyLCBBbmltYXRlZFN0
cmluZyk7CiAgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoYmFzZWxpbmVfc2hpZnRBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoYnVmZmVyZWRfcmVuZGVyaW5n
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwogICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNsaXBBdHRy
LCBBbmltYXRlZFJlY3QpOwogICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNsaXBfcGF0aEF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKICAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjbGlwX3J1bGVBdHRy
LCBBbmltYXRlZFN0cmluZyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvc3ZnYXR0cnMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3N2Z2F0dHJzLmluCShyZXZpc2lvbiAx
NDcxOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvc3ZnYXR0cnMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTIxLDYgKzIxLDcgQEAgYmFzZVByb2ZpbGUKIGJib3gKIGJlZ2luCiBiaWFzCitidWZmZXJl
ZC1yZW5kZXJpbmcKIGJ5CiBjYWxjTW9kZQogY2FwLWhlaWdodApJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTQ3MTkyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTMtMDMtMjggIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBbU1ZHMl0gQWRkIHN1cHBvcnQgZm9yIHRoZSBidWZmZXJlZC1yZW5kZXJpbmcgaGlu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MjA3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdmcv
Y3NzL2J1ZmZlcmVkLXJlbmRlcmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2
Zy9jc3MvYnVmZmVyZWQtcmVuZGVyaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9yZXBh
aW50L2J1ZmZlcmVkLXJlbmRlcmluZy1keW5hbWljLWltYWdlLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHN2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1keW5hbWljLWltYWdl
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1z
dGF0aWMtaW1hZ2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL3JlcGFpbnQv
YnVmZmVyZWQtcmVuZGVyaW5nLXN0YXRpYy1pbWFnZS5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0y
OCAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
Z2FyZGVuaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Nzcy9idWZmZXJlZC1yZW5kZXJpbmct
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jc3MvYnVmZmVyZWQt
cmVuZGVyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9j
c3MvYnVmZmVyZWQtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIwIEBACitUZXN0IHRoYXQgYW4gU1ZHIGltYWdlIGFjY2VwdHMgYWxsIGJ1ZmZlcmVkIHJl
bmRlcmluZyB2YWx1ZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIiIpIGlzICJhdXRvIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAiYXV0byIpIGlzICJhdXRvIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAiZHluYW1pYyIpIGlzICJkeW5hbWlj
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAic3RhdGljIikgaXMg
InN0YXRpYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgIjAiKSBp
cyAic3RhdGljIgorUEFTUyBjb21wdXRlZFN0eWxlKCJidWZmZXJlZC1yZW5kZXJpbmciLCAiMSIp
IGlzICJzdGF0aWMiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJ0
cnVlIikgaXMgInN0YXRpYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQtcmVuZGVyaW5n
IiwgImR5bmFtaWMiKSBpcyAiZHluYW1pYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVyZWQt
cmVuZGVyaW5nIiwgIjAiKSBpcyAiZHluYW1pYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVmZmVy
ZWQtcmVuZGVyaW5nIiwgIjEiKSBpcyAiZHluYW1pYyIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYnVm
ZmVyZWQtcmVuZGVyaW5nIiwgInRydWUiKSBpcyAiZHluYW1pYyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9zdmcvY3NzL2J1ZmZlcmVkLXJlbmRlcmluZy1leHBlY3RlZC50eHQKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCitMRgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3NzL2J1ZmZlcmVkLXJl
bmRlcmluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jc3MvYnVmZmVyZWQt
cmVuZGVyaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3NzL2J1ZmZl
cmVkLXJlbmRlcmluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8c3R5bGU+CisqIHsgZm9udC1zaXplOiAxNnB4OyB9CitkaXYg
eyBmb250LXNpemU6IDhweDsgfQorPC9zdHlsZT4KKzxib2R5PgorPHN2Zz48aW1hZ2UgaWQ9Imlt
YWdlIj48L2ltYWdlPjwvc3ZnPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCB0
aGF0IGFuIFNWRyBpbWFnZSBhY2NlcHRzIGFsbCBidWZmZXJlZCByZW5kZXJpbmcgdmFsdWVzJyk7
CisKK3ZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworCitmdW5j
dGlvbiBjb21wdXRlZFN0eWxlKHByb3BlcnR5LCB2YWx1ZSkgeworICAgIGltYWdlLnN0eWxlLnNl
dFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSk7CisgICAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUo
aW1hZ2UpLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpOworfQorCitmdW5jdGlvbiB0ZXN0KHBy
b3BlcnR5LCB2YWx1ZSwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoZXhwZWN0ZWQgPT09IG51bGwpCisg
ICAgICAgIHNob3VsZEJlTnVsbCgnY29tcHV0ZWRTdHlsZSgiJyArIHByb3BlcnR5ICsgJyIsICIn
ICsgdmFsdWUgKyAnIiknKTsKKyAgICBlbHNlCisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnY29tcHV0ZWRTdHlsZSgiJyArIHByb3BlcnR5ICsgJyIsICInICsgdmFsdWUgKyAnIiknLCBl
eHBlY3RlZCk7Cit9CisKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICIiLCAiYXV0byIpOwor
dGVzdCgiYnVmZmVyZWQtcmVuZGVyaW5nIiwgImF1dG8iLCAiYXV0byIpOwordGVzdCgiYnVmZmVy
ZWQtcmVuZGVyaW5nIiwgImR5bmFtaWMiLCAiZHluYW1pYyIpOwordGVzdCgiYnVmZmVyZWQtcmVu
ZGVyaW5nIiwgInN0YXRpYyIsICJzdGF0aWMiKTsKKworLy8gbmVnYXRpdmUgdGVzdHMKK3Rlc3Qo
ImJ1ZmZlcmVkLXJlbmRlcmluZyIsICIwIiwgInN0YXRpYyIpOwordGVzdCgiYnVmZmVyZWQtcmVu
ZGVyaW5nIiwgIjEiLCAic3RhdGljIik7Cit0ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAidHJ1
ZSIsICJzdGF0aWMiKTsKKworLy8gbWFrZSBzdXJlIHZhbGlkIHZhbHVlcyBzdGlsbCB3b3JrCit0
ZXN0KCJidWZmZXJlZC1yZW5kZXJpbmciLCAiZHluYW1pYyIsICJkeW5hbWljIik7CisKKy8vIG1v
cmUgbmVnYXRpdmUgdGVzdHMKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICIwIiwgImR5bmFt
aWMiKTsKK3Rlc3QoImJ1ZmZlcmVkLXJlbmRlcmluZyIsICIxIiwgImR5bmFtaWMiKTsKK3Rlc3Qo
ImJ1ZmZlcmVkLXJlbmRlcmluZyIsICJ0cnVlIiwgImR5bmFtaWMiKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvc3ZnL2Nzcy9idWZmZXJlZC1yZW5kZXJpbmcuaHRt
bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQvaHRt
bApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0wLDAgKzEgIyMKK0xGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1keW5hbWljLWltYWdlLWV4
cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvYnVmZmVy
ZWQtcmVuZGVyaW5nLWR5bmFtaWMtaW1hZ2UtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1keW5hbWljLWltYWdl
LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L3JlcGFp
bnQvcmVzb3VyY2VzL3JlcGFpbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAg
IGZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2JlaGluZCcpLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdncmVlbicpOworICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyYW5zbGF0ZScpLnNldEF0dHJpYnV0ZSgneCcs
ICcwJyk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJhbnNmb3JtJyku
c2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDAgMCknKTsKKyAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2FsZScpLnNldEF0dHJpYnV0ZSgndHJhbnNmb3Jt
JywgJ3NjYWxlKDEpJyk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuUmVwYWludFRlc3QoKSI+CitUZXN0IGZvciBXSzEwNDIwNzogVGhpcyB0ZXN0
IHBhc3NlcyBpZiB0aGVyZSBhcmUgNCBncmVlbiBzcXVhcmVzIGVhY2ggd2l0aCBhIHNtb290aCBi
bGFjayBjaXJjbGUgaW4gdGhlIHRvcC1sZWZ0IGNvcm5lci48YnIvPgorICAgIDxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQ1MCI+Cisg
ICAgICAgIDwhLS0gVGVzdCBpbnZhbGlkYXRpbmcgY29udGVudCBiZWhpbmQgdGhlIGR5bmFtaWMg
Y29udGVudC4gLS0+CisgICAgICAgIDxyZWN0IGlkPSJiZWhpbmQiIHg9IjQwIiB5PSIxMCIgd2lk
dGg9IjIwIiBoZWlnaHQ9IjgwIiBmaWxsPSJyZWQiLz4KKyAgICAgICAgPGltYWdlIHg9IjAiIHk9
IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4
bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhl
aWdodD0nMTAwJz48cmVjdCB4PScxMCcgeT0nMTAnIHdpZHRoPSczMCcgaGVpZ2h0PSc4MCcgZmls
bD0nZ3JlZW4nLz48cmVjdCB4PSc2MCcgeT0nMTAnIHdpZHRoPSczMCcgaGVpZ2h0PSc4MCcgZmls
bD0nZ3JlZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9JzI1JyByPScxMCcgZmlsbD0nZ3JlZW4nIHN0
cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPiIvPgorCisgICAgICAgIDwhLS0g
VGVzdCB0cmFuc2xhdGluZyBkeW5hbWljIGNvbnRlbnQgLS0+CisgICAgICAgIDxyZWN0IHg9IjIw
IiB5PSIxNDAiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0icmVkIi8+CisgICAgICAgIDxp
bWFnZSBpZD0idHJhbnNsYXRlIiB4PSI1MCIgeT0iMTIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+PHJlY3QgeD0nMTAlJyB5
PScxMCUnIHdpZHRoPSc4MCUnIGhlaWdodD0nODAlJyBmaWxsPSdncmVlbicvPjxjaXJjbGUgY3g9
JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVlbicgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdp
ZHRoPScxJy8+PC9zdmc+Ii8+CisKKyAgICAgICAgPCEtLSBUZXN0IHRyYW5zZm9ybWluZyBkeW5h
bWljIGNvbnRlbnQgLS0+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyNjAiIHdpZHRoPSIzMCIg
aGVpZ2h0PSIzMCIgZmlsbD0icmVkIi8+CisgICAgICAgIDxpbWFnZSBpZD0idHJhbnNmb3JtIiB0
cmFuc2Zvcm09InNrZXdYKDMwKSIgeD0iMCIgeT0iMjQwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+PHJlY3QgeD0nMTAlJyB5
PScxMCUnIHdpZHRoPSc4MCUnIGhlaWdodD0nODAlJyBmaWxsPSdncmVlbicvPjxjaXJjbGUgY3g9
JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVlbicgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdp
ZHRoPScxJy8+PC9zdmc+Ii8+CisKKyAgICAgICAgPCEtLSBUZXN0IHNjYWxpbmcgZHluYW1pYyBj
b250ZW50IC0tPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMzgwIiB3aWR0aD0iMzAiIGhlaWdo
dD0iMzAiIGZpbGw9InJlZCIvPgorICAgICAgICA8aW1hZ2UgaWQ9InNjYWxlIiB0cmFuc2Zvcm09
InNjYWxlKDAuMSkiIHg9IjAiIHk9IjM2MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHhsaW5r
OmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxyZWN0IHg9JzEwJScgeT0nMTAlJyB3
aWR0aD0nODAlJyBoZWlnaHQ9JzgwJScgZmlsbD0nZ3JlZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9
JzI1JyByPScxMCcgZmlsbD0nZ3JlZW4nIHN0cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScv
Pjwvc3ZnPiIvPgorICAgIDwvc3ZnPgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLWR5bmFtaWMt
aW1hZ2UtZXhwZWN0ZWQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0w
LDAgKzEgIyMKK0xGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjpt
aW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9odG1sClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmlu
Zy1keW5hbWljLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL3JlcGFp
bnQvYnVmZmVyZWQtcmVuZGVyaW5nLWR5bmFtaWMtaW1hZ2UuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1keW5hbWljLWltYWdl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L3JlcGFpbnQvcmVzb3Vy
Y2VzL3JlcGFpbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9u
IHJlcGFpbnRUZXN0KCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jl
aGluZER5bmFtaWMnKS5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnZ3JlZW4nKTsKKyAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFuc2xhdGVEeW5hbWljJykuc2V0QXR0cmlidXRl
KCd4JywgJzAnKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFuc2Zv
cm1EeW5hbWljJykuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDAgMCknKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2FsZUR5bmFtaWMnKS5zZXRB
dHRyaWJ1dGUoJ3RyYW5zZm9ybScsICdzY2FsZSgxKScpOworICAgICAgICB9CisgICAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blJlcGFpbnRUZXN0KCkiPgorVGVzdCBmb3Ig
V0sxMDQyMDc6IFRoaXMgdGVzdCBwYXNzZXMgaWYgdGhlcmUgYXJlIDQgZ3JlZW4gc3F1YXJlcyBl
YWNoIHdpdGggYSBzbW9vdGggYmxhY2sgY2lyY2xlIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIuPGJy
Lz4KKyAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQw
MCIgaGVpZ2h0PSI0NTAiPgorICAgICAgICA8IS0tIFRlc3QgaW52YWxpZGF0aW5nIGNvbnRlbnQg
YmVoaW5kIHRoZSBkeW5hbWljIGNvbnRlbnQuIC0tPgorICAgICAgICA8cmVjdCBpZD0iYmVoaW5k
RHluYW1pYyIgeD0iNDAiIHk9IjEwIiB3aWR0aD0iMjAiIGhlaWdodD0iODAiIGZpbGw9InJlZCIv
PgorICAgICAgICA8aW1hZ2UgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGJ1
ZmZlcmVkLXJlbmRlcmluZz0iZHluYW1pYyIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1s
LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWln
aHQ9JzEwMCc+PHJlY3QgeD0nMTAnIHk9JzEwJyB3aWR0aD0nMzAnIGhlaWdodD0nODAnIGZpbGw9
J2dyZWVuJy8+PHJlY3QgeD0nNjAnIHk9JzEwJyB3aWR0aD0nMzAnIGhlaWdodD0nODAnIGZpbGw9
J2dyZWVuJy8+PGNpcmNsZSBjeD0nMjUnIGN5PScyNScgcj0nMTAnIGZpbGw9J2dyZWVuJyBzdHJv
a2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnLz48L3N2Zz4iLz4KKworICAgICAgICA8IS0tIFRl
c3QgdHJhbnNsYXRpbmcgZHluYW1pYyBjb250ZW50IC0tPgorICAgICAgICA8cmVjdCB4PSIyMCIg
eT0iMTQwIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9InJlZCIvPgorICAgICAgICA8aW1h
Z2UgaWQ9InRyYW5zbGF0ZUR5bmFtaWMiIHg9IjUwIiB5PSIxMjAiIHdpZHRoPSIxMDAiIGhlaWdo
dD0iMTAwIiBidWZmZXJlZC1yZW5kZXJpbmc9ImR5bmFtaWMiIHhsaW5rOmhyZWY9ImRhdGE6aW1h
Z2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9
JzEwMCcgaGVpZ2h0PScxMDAnPjxyZWN0IHg9JzEwJScgeT0nMTAlJyB3aWR0aD0nODAlJyBoZWln
aHQ9JzgwJScgZmlsbD0nZ3JlZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9JzI1JyByPScxMCcgZmls
bD0nZ3JlZW4nIHN0cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPiIvPgorCisg
ICAgICAgIDwhLS0gVGVzdCB0cmFuc2Zvcm1pbmcgZHluYW1pYyBjb250ZW50IC0tPgorICAgICAg
ICA8cmVjdCB4PSIyMCIgeT0iMjYwIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9InJlZCIv
PgorICAgICAgICA8aW1hZ2UgaWQ9InRyYW5zZm9ybUR5bmFtaWMiIHRyYW5zZm9ybT0ic2tld1go
MzApIiB4PSIwIiB5PSIyNDAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBidWZmZXJlZC1yZW5k
ZXJpbmc9ImR5bmFtaWMiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxy
ZWN0IHg9JzEwJScgeT0nMTAlJyB3aWR0aD0nODAlJyBoZWlnaHQ9JzgwJScgZmlsbD0nZ3JlZW4n
Lz48Y2lyY2xlIGN4PScyNScgY3k9JzI1JyByPScxMCcgZmlsbD0nZ3JlZW4nIHN0cm9rZT0nYmxh
Y2snIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPiIvPgorCisgICAgICAgIDwhLS0gVGVzdCBzY2Fs
aW5nIGR5bmFtaWMgY29udGVudCAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjM4MCIgd2lk
dGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSJyZWQiLz4KKyAgICAgICAgPGltYWdlIGlkPSJzY2Fs
ZUR5bmFtaWMiIHRyYW5zZm9ybT0ic2NhbGUoMC4xKSIgeD0iMCIgeT0iMzYwIiB3aWR0aD0iMTAw
IiBoZWlnaHQ9IjEwMCIgYnVmZmVyZWQtcmVuZGVyaW5nPSJkeW5hbWljIiB4bGluazpocmVmPSJk
YXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcn
IHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz48cmVjdCB4PScxMCUnIHk9JzEwJScgd2lkdGg9Jzgw
JScgaGVpZ2h0PSc4MCUnIGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBjeD0nMjUnIGN5PScyNScgcj0n
MTAnIGZpbGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnLz48L3N2Zz4i
Lz4KKyAgICA8L3N2Zz4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1keW5hbWljLWltYWdlLmh0
bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L2h0
bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpBZGRlZDogc3ZuOmVvbC1zdHlsZQoj
IyAtMCwwICsxICMjCitMRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvcmVwYWludC9idWZmZXJlZC1yZW5kZXJpbmctc3RhdGljLWltYWdlLWV4
cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvYnVmZmVy
ZWQtcmVuZGVyaW5nLXN0YXRpYy1pbWFnZS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLXN0YXRpYy1pbWFnZS1l
eHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9yZXBhaW50
L3Jlc291cmNlcy9yZXBhaW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBm
dW5jdGlvbiByZXBhaW50VGVzdCgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdiZWhpbmQnKS5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnZ3JlZW4nKTsKKyAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFuc2xhdGUnKS5zZXRBdHRyaWJ1dGUoJ3gnLCAn
MCcpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyYW5zZm9ybScpLnNl
dEF0dHJpYnV0ZSgndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgwIDApJyk7CisgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NhbGUnKS5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScs
ICdzY2FsZSgxKScpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blJlcGFpbnRUZXN0KCkiPgorVGVzdCBmb3IgV0sxMDQyMDc6IFRoaXMgdGVzdCBw
YXNzZXMgaWYgdGhlcmUgYXJlIDQgZ3JlZW4gc3F1YXJlcyBlYWNoIHdpdGggYSBzbW9vdGggYmxh
Y2sgY2lyY2xlIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIuPGJyLz4KKyAgICA8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0NTAiPgorICAg
ICAgICA8IS0tIFRlc3QgaW52YWxpZGF0aW5nIGNvbnRlbnQgYmVoaW5kIHRoZSBzdGF0aWMgY29u
dGVudC4gLS0+CisgICAgICAgIDxyZWN0IGlkPSJiZWhpbmQiIHg9IjQwIiB5PSIxMCIgd2lkdGg9
IjIwIiBoZWlnaHQ9IjgwIiBmaWxsPSJyZWQiLz4KKyAgICAgICAgPGltYWdlIHg9IjAiIHk9IjAi
IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWws
PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdo
dD0nMTAwJz48cmVjdCB4PScxMCcgeT0nMTAnIHdpZHRoPSczMCcgaGVpZ2h0PSc4MCcgZmlsbD0n
Z3JlZW4nLz48cmVjdCB4PSc2MCcgeT0nMTAnIHdpZHRoPSczMCcgaGVpZ2h0PSc4MCcgZmlsbD0n
Z3JlZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9JzI1JyByPScxMCcgZmlsbD0nZ3JlZW4nIHN0cm9r
ZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScvPjwvc3ZnPiIvPgorCisgICAgICAgIDwhLS0gVGVz
dCB0cmFuc2xhdGluZyBzdGF0aWMgY29udGVudCAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9
IjE0MCIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSJyZWQiLz4KKyAgICAgICAgPGltYWdl
IGlkPSJ0cmFuc2xhdGUiIHg9IjUwIiB5PSIxMjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB4
bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz48cmVjdCB4PScxMCUnIHk9JzEw
JScgd2lkdGg9JzgwJScgaGVpZ2h0PSc4MCUnIGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBjeD0nMjUn
IGN5PScyNScgcj0nMTAnIGZpbGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9
JzEnLz48L3N2Zz4iLz4KKworICAgICAgICA8IS0tIFRlc3QgdHJhbnNmb3JtaW5nIHN0YXRpYyBj
b250ZW50IC0tPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjYwIiB3aWR0aD0iMzAiIGhlaWdo
dD0iMzAiIGZpbGw9InJlZCIvPgorICAgICAgICA8aW1hZ2UgaWQ9InRyYW5zZm9ybSIgdHJhbnNm
b3JtPSJza2V3WCgzMCkiIHg9IjAiIHk9IjI0MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHhs
aW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxyZWN0IHg9JzEwJScgeT0nMTAl
JyB3aWR0aD0nODAlJyBoZWlnaHQ9JzgwJScgZmlsbD0nZ3JlZW4nLz48Y2lyY2xlIGN4PScyNScg
Y3k9JzI1JyByPScxMCcgZmlsbD0nZ3JlZW4nIHN0cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0n
MScvPjwvc3ZnPiIvPgorCisgICAgICAgIDwhLS0gVGVzdCBzY2FsaW5nIHN0YXRpYyBjb250ZW50
IC0tPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMzgwIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAi
IGZpbGw9InJlZCIvPgorICAgICAgICA8aW1hZ2UgaWQ9InNjYWxlIiB0cmFuc2Zvcm09InNjYWxl
KDAuMSkiIHg9IjAiIHk9IjM2MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHhsaW5rOmhyZWY9
ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxyZWN0IHg9JzEwJScgeT0nMTAlJyB3aWR0aD0n
ODAlJyBoZWlnaHQ9JzgwJScgZmlsbD0nZ3JlZW4nLz48Y2lyY2xlIGN4PScyNScgY3k9JzI1JyBy
PScxMCcgZmlsbD0nZ3JlZW4nIHN0cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScvPjwvc3Zn
PiIvPgorICAgIDwvc3ZnPgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLXN0YXRpYy1pbWFnZS1l
eHBlY3RlZC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAj
IwordGV4dC9odG1sClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTAsMCArMSAjIworTEYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvYnVmZmVyZWQtcmVuZGVyaW5nLXN0YXRp
Yy1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9yZXBhaW50L2J1ZmZl
cmVkLXJlbmRlcmluZy1zdGF0aWMtaW1hZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3N2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1zdGF0aWMtaW1hZ2UuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvcmVwYWludC9yZXNvdXJjZXMvcmVwYWlu
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gcmVwYWludFRl
c3QoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVoaW5kU3RhdGlj
Jykuc2V0QXR0cmlidXRlKCdmaWxsJywgJ2dyZWVuJyk7CisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndHJhbnNsYXRlU3RhdGljJykuc2V0QXR0cmlidXRlKCd4JywgJzAnKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFuc2Zvcm1TdGF0aWMnKS5z
ZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoMCAwKScpOworICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjYWxlU3RhdGljJykuc2V0QXR0cmlidXRlKCd0cmFu
c2Zvcm0nLCAnc2NhbGUoMSknKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5SZXBhaW50VGVzdCgpIj4KK1Rlc3QgZm9yIFdLMTA0MjA3OiBUaGlz
IHRlc3QgcGFzc2VzIGlmIHRoZXJlIGFyZSA0IGdyZWVuIHNxdWFyZXMgZWFjaCB3aXRoIGEgc21v
b3RoIGJsYWNrIGNpcmNsZSBpbiB0aGUgdG9wLWxlZnQgY29ybmVyLjxici8+CisgICAgPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MDAiIGhlaWdodD0iNDUw
Ij4KKyAgICAgICAgPCEtLSBUZXN0IGludmFsaWRhdGluZyBjb250ZW50IGJlaGluZCB0aGUgc3Rh
dGljIGNvbnRlbnQuIC0tPgorICAgICAgICA8cmVjdCBpZD0iYmVoaW5kU3RhdGljIiB4PSI0MCIg
eT0iMTAiIHdpZHRoPSIyMCIgaGVpZ2h0PSI4MCIgZmlsbD0icmVkIi8+CisgICAgICAgIDxpbWFn
ZSB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgYnVmZmVyZWQtcmVuZGVyaW5n
PSJzdGF0aWMiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPjxyZWN0IHg9
JzEwJyB5PScxMCcgd2lkdGg9JzMwJyBoZWlnaHQ9JzgwJyBmaWxsPSdncmVlbicvPjxyZWN0IHg9
JzYwJyB5PScxMCcgd2lkdGg9JzMwJyBoZWlnaHQ9JzgwJyBmaWxsPSdncmVlbicvPjxjaXJjbGUg
Y3g9JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVlbicgc3Ryb2tlPSdibGFjaycgc3Ryb2tl
LXdpZHRoPScxJy8+PC9zdmc+Ii8+CisKKyAgICAgICAgPCEtLSBUZXN0IHRyYW5zbGF0aW5nIHN0
YXRpYyBjb250ZW50IC0tPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMTQwIiB3aWR0aD0iMzAi
IGhlaWdodD0iMzAiIGZpbGw9InJlZCIvPgorICAgICAgICA8aW1hZ2UgaWQ9InRyYW5zbGF0ZVN0
YXRpYyIgeD0iNTAiIHk9IjEyMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGJ1ZmZlcmVkLXJl
bmRlcmluZz0ic3RhdGljIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxu
cz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz48
cmVjdCB4PScxMCUnIHk9JzEwJScgd2lkdGg9JzgwJScgaGVpZ2h0PSc4MCUnIGZpbGw9J2dyZWVu
Jy8+PGNpcmNsZSBjeD0nMjUnIGN5PScyNScgcj0nMTAnIGZpbGw9J2dyZWVuJyBzdHJva2U9J2Js
YWNrJyBzdHJva2Utd2lkdGg9JzEnLz48L3N2Zz4iLz4KKworICAgICAgICA8IS0tIFRlc3QgdHJh
bnNmb3JtaW5nIHN0YXRpYyBjb250ZW50IC0tPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjYw
IiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9InJlZCIvPgorICAgICAgICA8aW1hZ2UgaWQ9
InRyYW5zZm9ybVN0YXRpYyIgdHJhbnNmb3JtPSJza2V3WCgzMCkiIHg9IjAiIHk9IjI0MCIgd2lk
dGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGJ1ZmZlcmVkLXJlbmRlcmluZz0ic3RhdGljIiB4bGluazpo
cmVmPSJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz48cmVjdCB4PScxMCUnIHk9JzEwJScgd2lk
dGg9JzgwJScgaGVpZ2h0PSc4MCUnIGZpbGw9J2dyZWVuJy8+PGNpcmNsZSBjeD0nMjUnIGN5PScy
NScgcj0nMTAnIGZpbGw9J2dyZWVuJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnLz48
L3N2Zz4iLz4KKworICAgICAgICA8IS0tIFRlc3Qgc2NhbGluZyBzdGF0aWMgY29udGVudCAtLT4K
KyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjM4MCIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxs
PSJyZWQiLz4KKyAgICAgICAgPGltYWdlIGlkPSJzY2FsZVN0YXRpYyIgdHJhbnNmb3JtPSJzY2Fs
ZSgwLjEpIiB4PSIwIiB5PSIzNjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBidWZmZXJlZC1y
ZW5kZXJpbmc9InN0YXRpYyIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+
PHJlY3QgeD0nMTAlJyB5PScxMCUnIHdpZHRoPSc4MCUnIGhlaWdodD0nODAlJyBmaWxsPSdncmVl
bicvPjxjaXJjbGUgY3g9JzI1JyBjeT0nMjUnIHI9JzEwJyBmaWxsPSdncmVlbicgc3Ryb2tlPSdi
bGFjaycgc3Ryb2tlLXdpZHRoPScxJy8+PC9zdmc+Ii8+CisgICAgPC9zdmc+Cis8L2JvZHk+Cis8
L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9zdmcvcmVwYWludC9idWZm
ZXJlZC1yZW5kZXJpbmctc3RhdGljLWltYWdlLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1p
bWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCitMRgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5Cg==
</data>
<flag name="review"
          id="217632"
          type_id="1"
          status="+"
          setter="schenney"
    />
          </attachment>
      

    </bug>

</bugzilla>