<?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>82628</bug_id>
          
          <creation_ts>2012-03-29 10:58:30 -0700</creation_ts>
          <short_desc>Hit testing on a stroke with vector-effects:non-scaling-stroke is broken</short_desc>
          <delta_ts>2012-05-20 14:39:41 -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>528+ (Nightly build)</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philip Rogers">pdr</reporter>
          <assigned_to name="Philip Rogers">pdr</assigned_to>
          <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>mnaganov</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>schenney</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>591317</commentid>
    <comment_count>0</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-03-29 10:58:30 -0700</bug_when>
    <thetext>As the description says, non-scaling-strokes are not correctly handing hit testing on the stroke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608591</commentid>
    <comment_count>1</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2012-04-24 06:04:31 -0700</bug_when>
    <thetext>Passes for a long time already:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=svg%2Fhittest%2Fsvg-ellipse-non-scale-stroke.xhtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608683</commentid>
    <comment_count>2</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-04-24 08:21:23 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Passes for a long time already:
&gt; 
&gt; http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=svg%2Fhittest%2Fsvg-ellipse-non-scale-stroke.xhtml

I believe this was a simple mistake by philn@webkit.org. http://trac.webkit.org/changeset/113986 incorrectly rebaselined svg/hittest/svg-ellipse-non-scale-stroke-expected.txt to contain &quot;FAIL&quot; values, so this test should still be failing. Re-re-baseline patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608686</commentid>
    <comment_count>3</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2012-04-24 08:23:17 -0700</bug_when>
    <thetext>Oh, right -- I&apos;ve missed the last two &quot;FAIL&quot; lines. Thanks for noticing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608696</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-24 08:29:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; Passes for a long time already:
&gt; &gt; 
&gt; &gt; http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=svg%2Fhittest%2Fsvg-ellipse-non-scale-stroke.xhtml
&gt; 
&gt; I believe this was a simple mistake by philn@webkit.org. http://trac.webkit.org/changeset/113986 incorrectly rebaselined svg/hittest/svg-ellipse-non-scale-stroke-expected.txt to contain &quot;FAIL&quot; values, so this test should still be failing. Re-re-baseline patch forthcoming.

Oops, sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608729</commentid>
    <comment_count>5</comment_count>
      <attachid>138574</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-04-24 09:00:00 -0700</bug_when>
    <thetext>Created attachment 138574
Update svg-ellipse-non-scale-stroke expectations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608827</commentid>
    <comment_count>6</comment_count>
      <attachid>138574</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-24 10:46:36 -0700</bug_when>
    <thetext>Comment on attachment 138574
Update svg-ellipse-non-scale-stroke expectations

Clearing flags on attachment: 138574

Committed r115081: &lt;http://trac.webkit.org/changeset/115081&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608828</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-24 10:46:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608838</commentid>
    <comment_count>8</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-04-24 10:54:19 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; All reviewed patches have been landed.  Closing bug.

Reopening because the bug is not fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617706</commentid>
    <comment_count>9</comment_count>
      <attachid>140550</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-05-07 10:35:15 -0700</bug_when>
    <thetext>Created attachment 140550
Fix hit testing on non-scaling strokes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617717</commentid>
    <comment_count>10</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-05-07 10:52:18 -0700</bug_when>
    <thetext>Reviewers: I&apos;m not in love with the two similar blocks of code getting the ctm and modifying the path, but I&apos;m not sure of a better way. Suggestions very welcome in those areas :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625711</commentid>
    <comment_count>11</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-05-16 12:00:15 -0700</bug_when>
    <thetext>Bump. Niko or Rob, do you have time for this? Anyone else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625757</commentid>
    <comment_count>12</comment_count>
      <attachid>140550</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-16 12:43:38 -0700</bug_when>
    <thetext>Comment on attachment 140550
Fix hit testing on non-scaling strokes

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

Patch looks good in general, some issues I&apos;d like to resolve before giving r+:

&gt; Source/WebCore/rendering/svg/RenderSVGShape.cpp:105
&gt; +    if (style()-&gt;svgStyle()-&gt;vectorEffect() == VE_NON_SCALING_STROKE) {

Shouldn&apos;t we only do this if m_path is non-null? Is this guaranteed?

&gt; Source/WebCore/rendering/svg/RenderSVGShape.cpp:108
&gt; +        SVGStyledTransformableElement* element = static_cast&lt;SVGStyledTransformableElement*&gt;(node());
&gt; +        AffineTransform nonScalingStrokeTransform = element-&gt;getScreenCTM(SVGLocatable::DisallowStyleUpdate);
&gt; +        Path* nonScaledStrokePath = nonScalingStrokePath(m_path.get(), nonScalingStrokeTransform);

You could share this code with the other code in inflateWithStrokeAndMarkerBounds.

&gt; Source/WebCore/rendering/svg/RenderSVGShape.cpp:465
&gt; +        if (style()-&gt;svgStyle()-&gt;vectorEffect() == VE_NON_SCALING_STROKE) {

I really wish we had a central place to handle VE_NON_SCALING_STROKE. Code for it is sprinkled around rendering/.
Can we do better? Do you have ideas on how to share even more of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628527</commentid>
    <comment_count>13</comment_count>
      <attachid>142887</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-05-19 18:50:08 -0700</bug_when>
    <thetext>Created attachment 142887
Update per reviewer comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628532</commentid>
    <comment_count>14</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-05-19 19:27:28 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 140550 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140550&amp;action=review
&gt; 
&gt; Patch looks good in general, some issues I&apos;d like to resolve before giving r+:
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGShape.cpp:105
&gt; &gt; +    if (style()-&gt;svgStyle()-&gt;vectorEffect() == VE_NON_SCALING_STROKE) {
&gt; 
&gt; Shouldn&apos;t we only do this if m_path is non-null? Is this guaranteed?

In this case it is guaranteed but only because RenderSVGRect and RenderSVGShape have special logic to call createShape() if they have non-scaling strokes. I added two asserts to guard against mistakes in the future.

Just as a note: I think RenderSVGShape is overdue for a big refactor (by me). I have some ideas about how we could clean up the sharing and fallback mechanisms between RenderSVGShape and subclasses, since it&apos;s not easy to see when things have a path, who triggers falling back to RenderSVGShape, who calls createShape(), etc.

&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGShape.cpp:108
&gt; &gt; +        SVGStyledTransformableElement* element = static_cast&lt;SVGStyledTransformableElement*&gt;(node());
&gt; &gt; +        AffineTransform nonScalingStrokeTransform = element-&gt;getScreenCTM(SVGLocatable::DisallowStyleUpdate);
&gt; &gt; +        Path* nonScaledStrokePath = nonScalingStrokePath(m_path.get(), nonScalingStrokeTransform);
&gt; 
&gt; You could share this code with the other code in inflateWithStrokeAndMarkerBounds.

Done. I refactored most of the non-scaling stroke code to generally clean it up as well.

&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGShape.cpp:465
&gt; &gt; +        if (style()-&gt;svgStyle()-&gt;vectorEffect() == VE_NON_SCALING_STROKE) {
&gt; 
&gt; I really wish we had a central place to handle VE_NON_SCALING_STROKE. Code for it is sprinkled around rendering/.
&gt; Can we do better? Do you have ideas on how to share even more of this?

We&apos;re not doing too bad--just code in the ResourceGradient, ResourcePattern, and RenderSVGShape/friends. Because non-scaling stroke affects both hit testing and rendering, and because we do special-cased non-raster/analytic paths like RenderSVGEllipse for performance reasons, I&apos;m not sure this sprinkling can be cleaned up without hurting performance.

For path code in particular though, it would be nice to support non-scaling at the GraphicsContext level. Depending on how it is spec&apos;ed, we might be able to unify our code for SVG2&apos;s variable-width stroke with non-scaling stroke at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628560</commentid>
    <comment_count>15</comment_count>
      <attachid>142887</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-05-20 01:54:07 -0700</bug_when>
    <thetext>Comment on attachment 142887
Update per reviewer comments

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

r=me.

&gt; Source/WebCore/rendering/svg/RenderSVGShape.cpp:470
&gt; +        // NonScalingStroke only applies to stroke and not markers, see http://www.w3.org/TR/SVGTiny12/painting.html#NonScalingStroke

Missing trailing period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628604</commentid>
    <comment_count>16</comment_count>
      <attachid>142910</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-05-20 12:06:09 -0700</bug_when>
    <thetext>Created attachment 142910
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628606</commentid>
    <comment_count>17</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-05-20 12:08:13 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 142887 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142887&amp;action=review
&gt; 
&gt; r=me.
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGShape.cpp:470
&gt; &gt; +        // NonScalingStroke only applies to stroke and not markers, see http://www.w3.org/TR/SVGTiny12/painting.html#NonScalingStroke
&gt; 
&gt; Missing trailing period.

Thanks for the review Niko!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628613</commentid>
    <comment_count>18</comment_count>
      <attachid>142910</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-20 12:49:02 -0700</bug_when>
    <thetext>Comment on attachment 142910
Patch for landing

Clearing flags on attachment: 142910

Committed r117709: &lt;http://trac.webkit.org/changeset/117709&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628614</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-20 12:49:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628628</commentid>
    <comment_count>20</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-20 14:36:00 -0700</bug_when>
    <thetext>This commit appears to have caused a test regression the EFL 64-bit Debug and GTK+ 64-bit Release bots.

The EFL bot reports the following:

--- /home/buildslave-1/webkit-buildslave/efl-linux-debug/build/layout-test-results/svg/hittest/svg-shapes-non-scale-stroke-expected.txt
+++ /home/buildslave-1/webkit-buildslave/efl-linux-debug/build/layout-test-results/svg/hittest/svg-shapes-non-scale-stroke-actual.txt
@@ -5,7 +5,7 @@
 PASS ellipse1 stroke contains point at (29, 37)
 PASS ellipse2 stroke contains point at (279, 37)
 PASS ellipse1 stroke contains point at (34, 48)
-PASS ellipse2 stroke contains point at (284, 48)
+FAIL ellipse2 stroke contains point at (284, 48)
 PASS ellipse1 stroke contains point at (94, 70)
 PASS ellipse2 stroke contains point at (344, 70)
 PASS ellipse1 stroke contains point at (100, 78)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628629</commentid>
    <comment_count>21</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-05-20 14:39:41 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; This commit appears to have caused a test regression the EFL 64-bit Debug and GTK+ 64-bit Release bots.
&gt; 
&gt; The EFL bot reports the following:
&gt; 
&gt; --- /home/buildslave-1/webkit-buildslave/efl-linux-debug/build/layout-test-results/svg/hittest/svg-shapes-non-scale-stroke-expected.txt
&gt; +++ /home/buildslave-1/webkit-buildslave/efl-linux-debug/build/layout-test-results/svg/hittest/svg-shapes-non-scale-stroke-actual.txt
&gt; @@ -5,7 +5,7 @@
&gt;  PASS ellipse1 stroke contains point at (29, 37)
&gt;  PASS ellipse2 stroke contains point at (279, 37)
&gt;  PASS ellipse1 stroke contains point at (34, 48)
&gt; -PASS ellipse2 stroke contains point at (284, 48)
&gt; +FAIL ellipse2 stroke contains point at (284, 48)
&gt;  PASS ellipse1 stroke contains point at (94, 70)
&gt;  PASS ellipse2 stroke contains point at (344, 70)
&gt;  PASS ellipse1 stroke contains point at (100, 78)

Ack, probably due to a hit testing bug in platform-specific code. Lets skip it (preparing patch now).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138574</attachid>
            <date>2012-04-24 09:00:00 -0700</date>
            <delta_ts>2012-04-24 10:46:36 -0700</delta_ts>
            <desc>Update svg-ellipse-non-scale-stroke expectations</desc>
            <filename>82628.1.patch</filename>
            <type>text/plain</type>
            <size>3979</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDExNTA2NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA0LTI0ICBQaGlsaXAgUm9nZXJzICA8
cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIHN2Zy1lbGxpcHNlLW5vbi1zY2FsZS1z
dHJva2UgZXhwZWN0YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MjYyOAorCisgICAgICAgIFVucmV2aWV3ZWQgdXBkYXRlIG9mIHRlc3QgZXhw
ZWN0YXRpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9zdmcvaGl0dGVzdC9zdmctZWxsaXBzZS1u
b24tc2NhbGUtc3Ryb2tlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHN2Zy9oaXR0ZXN0L3N2Zy1l
bGxpcHNlLW5vbi1zY2FsZS1zdHJva2UtZXhwZWN0ZWQudHh0OgorCiAyMDEyLTA0LTI0ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGVuY2Fwc3VsYXRlIGxpdmUgbG9jYXRpb24gaW50byB0aGUgU2NyaXB0LgpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAkocmV2aXNpb24gMTE1MDU1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMjcyLDYgKzEyNzIsOCBAQCBC
VUdXSzgzNzE3IE1BQyA6IHN2Zy9jdXN0b20vZm9yZWlnbi1vYmplCiAKIEJVR1dLODM4NzUgTElO
VVggOiBzdmcvdGV4dC9mb250LXNpemUtYmVsb3ctcG9pbnQtZml2ZS5zdmcgPSBQQVNTIFRFWFQK
IAorQlVHV0s4MjYyOCA6IHN2Zy9oaXR0ZXN0L3N2Zy1lbGxpcHNlLW5vbi1zY2FsZS1zdHJva2Uu
eGh0bWwgPSBGQUlMCisKIC8vIEl0IGlzIHZlcnkgaGFyZCB0byBzZWUgd2h5IHNvbWUgb2YgdGhl
c2UgYXJlIGZhaWxpbmcuIFRoZSBkaWZmIG11c3QgYmUgdGlueSBpbiBzb21lIGNhc2VzLgogLy8g
T3RoZXIgZmFpbCBpbnRlcm1pdHRlbnRseSBpbiBhIHdheSB0aGF0IGlzIG9kZCAtIGNsaXBwaW5n
IGFuZCBtYXNraW5nIHNob3VsZCBiZSBzdGFibGUuCiAvLyBJdCBpcyBwcm9iYWJseSBhIHRlc3Qg
ZGVzaWduIGZsYXcuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3Rh
dGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4
cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDExNTA1NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE1NjYsNiArMTU2
Niw4IEBAIEJVR1dLODM5MDkgOiBpZXRlc3RjZW50ZXIvY3NzMy9ncmlkL2dyaWQKIEJVR1dLODM5
MTIgOiBpZXRlc3RjZW50ZXIvY3NzMy9ncmlkL2dyaWQtaXRlbXMtMDAyLmh0bSA9IElNQUdFCiBC
VUdXSzgzOTEzIDogaWV0ZXN0Y2VudGVyL2NzczMvZ3JpZC9ncmlkLWl0ZW1zLTAwMy5odG0gPSBJ
TUFHRQogCitCVUdXSzgyNjI4IDogc3ZnL2hpdHRlc3Qvc3ZnLWVsbGlwc2Utbm9uLXNjYWxlLXN0
cm9rZS54aHRtbCA9IEZBSUwKKwogQlVHV0s3Mzc0NCA6IGZhc3QvdGFibGUvdGQtd2lkdGgtZmlm
dHktcGVyY2VudC1yZWdyZXNzaW9uLmh0bWwgPSBGQUlMCiAKIEJVR1dLODQzNzggOiBtZWRpYS90
cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXNuYXAtdG8tbGluZXMtbm90LXNldC5odG1sID0gRkFJ
TApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3N2Zy9oaXR0ZXN0L3N2Zy1lbGxpcHNl
LW5vbi1zY2FsZS1zdHJva2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9zdmcvaGl0dGVzdC9zdmctZWxsaXBzZS1ub24tc2NhbGUtc3Ryb2tlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTE1MDU1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L3N2Zy9oaXR0ZXN0L3N2Zy1lbGxpcHNlLW5vbi1zY2FsZS1zdHJva2UtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE1ICswLDAgQEAKLVRlc3RzIGZvciBXSzgwNDIzIC0gTWFrZSBz
dXJlIGhpdCB0ZXN0aW5nIHdvcmtzIHByb3Blcmx5IG9uIHN0cm9rZWQgZWxsaXBzZXMgd2l0aCBu
b24tc2NhbGluZyBzdHJva2UuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMgYW5kIG5vICJGQUlMIiBtZXNzYWdlcy4KLQotUEFTUyBlbGxpcHNl
IGNvbnRhaW5zIHBvaW50IGF0ICgxNTAsIDE1MCkKLVBBU1MgZWxsaXBzZSBjb250YWlucyBwb2lu
dCBhdCAoMjc1LCAxNTApCi1QQVNTIGVsbGlwc2UgY29udGFpbnMgcG9pbnQgYXQgKDI1MCwgMjI1
KQotUEFTUyBlbGxpcHNlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDAsIDApCi1QQVNTIGVs
bGlwc2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoMjc1LCAyNTApCi1QQVNTIGVsbGlwc2Ug
c3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgyNzUsIDI1MCkKLVBBU1MgZWxsaXBzZSBzdHJva2Ug
Y29udGFpbnMgcG9pbnQgYXQgKDMwMCwgMjAwKQotUEFTUyBlbGxpcHNlIHN0cm9rZSBkb2VzIG5v
dCBjb250YWluIHBvaW50IGF0ICgzNzUsIDM3NSkKLUZBSUwgZWxsaXBzZSBzdHJva2UgZG9lcyBu
b3QgY29udGFpbiBwb2ludCBhdCAoMCwgMCkKLUZBSUwgZWxsaXBzZSBzdHJva2UgZG9lcyBub3Qg
Y29udGFpbiBwb2ludCBhdCAoMTUwLCAxNTApCi0KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9oaXR0
ZXN0L3N2Zy1lbGxpcHNlLW5vbi1zY2FsZS1zdHJva2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1lbGxpcHNlLW5vbi1zY2FsZS1zdHJva2Ut
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMTUwNTUpCisrKyBMYXlvdXRUZXN0cy9zdmcvaGl0dGVz
dC9zdmctZWxsaXBzZS1ub24tc2NhbGUtc3Ryb2tlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTAsNiArMTAsNiBAQCBQQVNTIGVsbGlwc2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBh
dCAoCiBQQVNTIGVsbGlwc2Ugc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgyNzUsIDI1MCkKIFBB
U1MgZWxsaXBzZSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDMwMCwgMjAwKQogUEFTUyBlbGxp
cHNlIHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICgzNzUsIDM3NSkKLUZBSUwgZWxs
aXBzZSBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoMCwgMCkKLUZBSUwgZWxsaXBz
ZSBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoMTUwLCAxNTApCitQQVNTIGVsbGlw
c2Ugc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDAsIDApCitQQVNTIGVsbGlwc2Ug
c3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDE1MCwgMTUwKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140550</attachid>
            <date>2012-05-07 10:35:15 -0700</date>
            <delta_ts>2012-05-19 18:50:08 -0700</delta_ts>
            <desc>Fix hit testing on non-scaling strokes</desc>
            <filename>82628.1.patch</filename>
            <type>text/plain</type>
            <size>26332</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjMxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA1LTA3ICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4IGhpdCB0ZXN0aW5nIG9uIG5v
bi1zY2FsaW5nIHN0cm9rZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgyNjI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgZml4ZXMgaGl0IHRlc3Rpbmcgb24gbm9uLXNjYWxpbmcgc3Ry
b2tlcy4gSXQgY29udGFpbnMgZml4ZXMgZm9yIDMgYnVnczoKKyAgICAgICAgMSkgUmVuZGVyU1ZH
UmVjdDo6c2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyB3YXMgbm90IGZhbGxpbmcgYmFjayB0
byBzaGFwZS1iYXNlZCBoaXQgdGVzdGluZy4KKyAgICAgICAgMikgbV9zdHJva2VBbmRNYXJrZXJC
b3VuZGluZ0JveCBkaWQgbm90IGFjY291bnQgZm9yIG5vbi1zY2FsaW5nIHN0cm9rZXMuCisgICAg
ICAgIDMpIFJlbmRlclNWR1NoYXBlOjpzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zIGRpZCBu
b3QgaGF2ZSBhbnkgc3VwcG9ydCBmb3Igbm9uLXNjYWxpbmcgc3Ryb2tlcy4KKworICAgICAgICBU
ZXN0OiBzdmcvaGl0dGVzdC9zdmctc2hhcGVzLW5vbi1zY2FsZS1zdHJva2UuaHRtbAorCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1JlY3Q6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHU2hhcGU6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vblNjYWxpbmdTdHJva2VQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVDYWNoZWRCb3VuZGFyaWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjppbmZsYXRlV2l0aFN0cm9rZUFuZE1hcmtlckJvdW5k
cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAo
UmVuZGVyU1ZHU2hhcGUpOgorCiAyMDEyLTA1LTA3ICBNaWNoYWwgTW9jbnkgIDxtbW9jbnlAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIHNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlv
bkxpbWl0Qnl0ZXMgbmVlZHMgdG8gc2V0TmVlZHNDb21taXQuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAJKHJldmlzaW9uIDExNjMwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOCw2ICsxMzgsOSBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OnN0cm9rZVNo
YXBlKEdyYXBoaWNzCiAKIGJvb2wgUmVuZGVyU1ZHUmVjdDo6c2hhcGVEZXBlbmRlbnRTdHJva2VD
b250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKKyAgICBpZiAoaXNQYWlu
dGluZ0ZhbGxiYWNrKCkpCisgICAgICAgIHJldHVybiBSZW5kZXJTVkdTaGFwZTo6c2hhcGVEZXBl
bmRlbnRTdHJva2VDb250YWlucyhwb2ludCk7CisKICAgICByZXR1cm4gbV9vdXRlclN0cm9rZVJl
Y3QuY29udGFpbnMocG9pbnQsIEZsb2F0UmVjdDo6SW5zaWRlT3JPblN0cm9rZSkgJiYgIW1faW5u
ZXJTdHJva2VSZWN0LmNvbnRhaW5zKHBvaW50LCBGbG9hdFJlY3Q6Okluc2lkZUJ1dE5vdE9uU3Ry
b2tlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5jcHAJKHJldmlzaW9uIDExNjMwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAx
LDE2IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWMKIGJvb2wgUmVu
ZGVyU1ZHU2hhcGU6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgQm91bmRpbmdSZWN0U3Ryb2tlU3R5bGVBcHBsaWVyIGFw
cGxpZXIodGhpcywgc3R5bGUoKSk7CisKKyAgICBpZiAoc3R5bGUoKS0+c3ZnU3R5bGUoKS0+dmVj
dG9yRWZmZWN0KCkgPT0gVkVfTk9OX1NDQUxJTkdfU1RST0tFKSB7CisgICAgICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQqPihub2RlKCkpOworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbm9u
U2NhbGluZ1N0cm9rZVRyYW5zZm9ybSA9IGVsZW1lbnQtPmdldFNjcmVlbkNUTShTVkdMb2NhdGFi
bGU6OkRpc2FsbG93U3R5bGVVcGRhdGUpOworICAgICAgICBQYXRoKiBub25TY2FsZWRTdHJva2VQ
YXRoID0gbm9uU2NhbGluZ1N0cm9rZVBhdGgobV9wYXRoLmdldCgpLCBub25TY2FsaW5nU3Ryb2tl
VHJhbnNmb3JtKTsKKyAgICAgICAgRmxvYXRQb2ludCBwb2ludEluU2NyZWVuID0gbm9uU2NhbGlu
Z1N0cm9rZVRyYW5zZm9ybS5tYXBQb2ludChwb2ludCk7CisKKyAgICAgICAgcmV0dXJuIG5vblNj
YWxlZFN0cm9rZVBhdGgtPnN0cm9rZUNvbnRhaW5zKCZhcHBsaWVyLCBwb2ludEluU2NyZWVuKTsK
KyAgICB9CisKICAgICByZXR1cm4gbV9wYXRoLT5zdHJva2VDb250YWlucygmYXBwbGllciwgcG9p
bnQpOwogfQogCkBAIC0yMjUsNyArMjM1LDcgQEAgUGF0aCogUmVuZGVyU1ZHU2hhcGU6Onplcm9M
ZW5ndGhMaW5lY2FwUAogICAgIHJldHVybiAmdGVtcFBhdGg7CiB9CiAKLVBhdGgqIFJlbmRlclNW
R1NoYXBlOjpub25TY2FsaW5nU3Ryb2tlUGF0aChjb25zdCBQYXRoKiBwYXRoLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHN0cm9rZVRyYW5zZm9ybSkKK1BhdGgqIFJlbmRlclNWR1NoYXBlOjpub25T
Y2FsaW5nU3Ryb2tlUGF0aChjb25zdCBQYXRoKiBwYXRoLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHN0cm9rZVRyYW5zZm9ybSkgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFBhdGgs
IHRlbXBQYXRoLCAoKSk7CiAKQEAgLTQyMyw2ICs0MzMsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBl
Ojp1cGRhdGVDYWNoZWRCb3VuZGFyCiAgICAgbV9maWxsQm91bmRpbmdCb3ggPSBvYmplY3RCb3Vu
ZGluZ0JveCgpOwogCiAgICAgLy8gQWRkIHplcm8tbGVuZ3RoIHN1Yi1wYXRoIGxpbmVjYXBzIHRv
IHRoZSBmaWxsIGJveAorICAgIC8vIEZJWE1FOiB6ZXJvLWxlbmd0aCBzdWJwYXRocyBkbyBub3Qg
cmVzcGVjdCB2ZWN0b3ItZWZmZWN0ID0gbm9uLXNjYWxpbmctc3Ryb2tlLgogICAgIGZsb2F0IHN0
cm9rZVdpZHRoID0gdGhpcy0+c3Ryb2tlV2lkdGgoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1femVyb0xlbmd0aExpbmVjYXBMb2NhdGlvbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1f
ZmlsbEJvdW5kaW5nQm94LnVuaXRlKHplcm9MZW5ndGhTdWJwYXRoUmVjdChtX3plcm9MZW5ndGhM
aW5lY2FwTG9jYXRpb25zW2ldLCBzdHJva2VXaWR0aCkpOwpAQCAtNDQ5LDcgKzQ2MCwxOSBAQCB2
b2lkIFJlbmRlclNWR1NoYXBlOjppbmZsYXRlV2l0aFN0cm9rZUFuCiAgICAgRmxvYXRSZWN0IHN0
cm9rZVJlY3Q7CiAgICAgaWYgKHN2Z1N0eWxlLT5oYXNTdHJva2UoKSkgewogICAgICAgICBCb3Vu
ZGluZ1JlY3RTdHJva2VTdHlsZUFwcGxpZXIgc3Ryb2tlU3R5bGUodGhpcywgc3R5bGUoKSk7Ci0g
ICAgICAgIG1fc3Ryb2tlQW5kTWFya2VyQm91bmRpbmdCb3gudW5pdGUocGF0aCgpLnN0cm9rZUJv
dW5kaW5nUmVjdCgmc3Ryb2tlU3R5bGUpKTsKKworICAgICAgICAvLyBOb25TY2FsaW5nU3Ryb2tl
IG9ubHkgYXBwbGllcyB0byBzdHJva2UgYW5kIG5vdCBtYXJrZXJzLCBzZWUgaHR0cDovL3d3dy53
My5vcmcvVFIvU1ZHVGlueTEyL3BhaW50aW5nLmh0bWwjTm9uU2NhbGluZ1N0cm9rZQorICAgICAg
ICBpZiAoc3R5bGUoKS0+c3ZnU3R5bGUoKS0+dmVjdG9yRWZmZWN0KCkgPT0gVkVfTk9OX1NDQUxJ
TkdfU1RST0tFKSB7CisgICAgICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCog
ZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4obm9k
ZSgpKTsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBub25TY2FsaW5nU3Ryb2tlVHJhbnNm
b3JtID0gZWxlbWVudC0+Z2V0U2NyZWVuQ1RNKFNWR0xvY2F0YWJsZTo6RGlzYWxsb3dTdHlsZVVw
ZGF0ZSk7CisgICAgICAgICAgICBpZiAobm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybS5pc0ludmVy
dGlibGUoKSkgeworICAgICAgICAgICAgICAgIFBhdGgqIG5vblNjYWxlZFN0cm9rZVBhdGggPSBu
b25TY2FsaW5nU3Ryb2tlUGF0aChtX3BhdGguZ2V0KCksIG5vblNjYWxpbmdTdHJva2VUcmFuc2Zv
cm0pOworICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzY2FsZWRTdHJva2VCb3VuZGluZ1JlY3Qg
PSBub25TY2FsZWRTdHJva2VQYXRoLT5zdHJva2VCb3VuZGluZ1JlY3QoJnN0cm9rZVN0eWxlKTsK
KyAgICAgICAgICAgICAgICBzY2FsZWRTdHJva2VCb3VuZGluZ1JlY3QgPSBub25TY2FsaW5nU3Ry
b2tlVHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KHNjYWxlZFN0cm9rZUJvdW5kaW5nUmVjdCk7
CisgICAgICAgICAgICAgICAgbV9zdHJva2VBbmRNYXJrZXJCb3VuZGluZ0JveC51bml0ZShzY2Fs
ZWRTdHJva2VCb3VuZGluZ1JlY3QpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIG1fc3Ryb2tlQW5kTWFya2VyQm91bmRpbmdCb3gudW5pdGUocGF0aCgpLnN0cm9r
ZUJvdW5kaW5nUmVjdCgmc3Ryb2tlU3R5bGUpKTsKICAgICB9CiAgICAgaWYgKHN2Z1N0eWxlLT5o
YXNNYXJrZXJzKCkpIHsKICAgICAgICAgRmxvYXRSZWN0IG1hcmtlckJvdW5kcyA9IGNhbGN1bGF0
ZU1hcmtlckJvdW5kc0lmTmVlZGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCShyZXZpc2lvbiAxMTYzMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
MSw3ICsxMjEsNyBAQCBwcml2YXRlOgogCiAgICAgUGF0aCogemVyb0xlbmd0aExpbmVjYXBQYXRo
KGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICBib29sIHNldHVwTm9uU2NhbGluZ1N0cm9rZVRyYW5z
Zm9ybShBZmZpbmVUcmFuc2Zvcm0mLCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJik7Ci0gICAg
UGF0aCogbm9uU2NhbGluZ1N0cm9rZVBhdGgoY29uc3QgUGF0aCosIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYpOworICAgIFBhdGgqIG5vblNjYWxpbmdTdHJva2VQYXRoKGNvbnN0IFBhdGgqLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdDsKICAgICBib29sIHNob3VsZFN0cm9rZVplcm9MZW5n
dGhTdWJwYXRoKCkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IHplcm9MZW5ndGhTdWJwYXRoUmVjdChj
b25zdCBGbG9hdFBvaW50JiwgZmxvYXQpIGNvbnN0OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTYz
MTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAxMi0wNS0wNyAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAg
ICAgIEZpeCBoaXQgdGVzdGluZyBvbiBub24tc2NhbGluZyBzdHJva2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjYyOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0
aW9ucy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogc3Zn
L2N1c3RvbS9ub24tc2NhbGluZy1zdHJva2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9o
aXR0ZXN0L3N2Zy1zaGFwZXMtbm9uLXNjYWxlLXN0cm9rZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy9oaXR0ZXN0L3N2Zy1zaGFwZXMtbm9uLXNjYWxlLXN0cm9rZS5odG1sOiBB
ZGRlZC4KKwogMjAxMi0wNS0wNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogRW5oYW5jZSBXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrIGFuZCBhZGQgYSB0ZXN0IGZvciBpdApJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNp
b24gMTE2MzA0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMjc2LDggKzEyNzYsNiBAQCBCVUdXSzgzNzE3
IE1BQyA6IHN2Zy9jdXN0b20vZm9yZWlnbi1vYmplCiAKIEJVR1dLODM4NzUgTElOVVggOiBzdmcv
dGV4dC9mb250LXNpemUtYmVsb3ctcG9pbnQtZml2ZS5zdmcgPSBQQVNTIFRFWFQKIAotQlVHV0s4
MjYyOCA6IHN2Zy9oaXR0ZXN0L3N2Zy1lbGxpcHNlLW5vbi1zY2FsZS1zdHJva2UueGh0bWwgPSBG
QUlMCi0KIC8vIEl0IGlzIHZlcnkgaGFyZCB0byBzZWUgd2h5IHNvbWUgb2YgdGhlc2UgYXJlIGZh
aWxpbmcuIFRoZSBkaWZmIG11c3QgYmUgdGlueSBpbiBzb21lIGNhc2VzLgogLy8gT3RoZXIgZmFp
bCBpbnRlcm1pdHRlbnRseSBpbiBhIHdheSB0aGF0IGlzIG9kZCAtIGNsaXBwaW5nIGFuZCBtYXNr
aW5nIHNob3VsZCBiZSBzdGFibGUuCiAvLyBJdCBpcyBwcm9iYWJseSBhIHRlc3QgZGVzaWduIGZs
YXcuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9u
cy50eHQJKHJldmlzaW9uIDExNjMwNCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0
X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzMDEsOCArMTMwMSw2IEBAIEJV
R1dLODM5MDkgOiBpZXRlc3RjZW50ZXIvY3NzMy9ncmlkL2dyaWQKIEJVR1dLODM5MTIgOiBpZXRl
c3RjZW50ZXIvY3NzMy9ncmlkL2dyaWQtaXRlbXMtMDAyLmh0bSA9IElNQUdFCiBCVUdXSzgzOTEz
IDogaWV0ZXN0Y2VudGVyL2NzczMvZ3JpZC9ncmlkLWl0ZW1zLTAwMy5odG0gPSBJTUFHRQogCi1C
VUdXSzgyNjI4IDogc3ZnL2hpdHRlc3Qvc3ZnLWVsbGlwc2Utbm9uLXNjYWxlLXN0cm9rZS54aHRt
bCA9IEZBSUwKLQogQlVHV0s4NDM3OCA6IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmct
c25hcC10by1saW5lcy1ub3Qtc2V0Lmh0bWwgPSBGQUlMCiAKIEJVR1dLODQ2NzggOiBmYXN0L3Nw
YXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRhaW5lci13aGl0ZS1zcGFjZS5odG1sID0gVEVYVApJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDExNjMwNCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC02NDAsOSArNjQw
LDYgQEAgZmFzdC9yZXBhaW50L3Njcm9sbC1pbnNpZGUtdGFibGUtY2VsbC5odAogZmFzdC9yZXBh
aW50L3Njcm9sbC1yZWxhdGl2ZS10YWJsZS1pbnNpZGUtdGFibGUtY2VsbC5odG1sCiBmYXN0L3Rh
YmxlL2NlbGwtcHJlZi13aWR0aC1pbnZhbGlkYXRpb24uaHRtbAogCi0jIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjYyOAotc3ZnL2hpdHRlc3Qvc3ZnLWVsbGlwc2Ut
bm9uLXNjYWxlLXN0cm9rZS54aHRtbAotCiAjIFRoZSBpbm5lciA8aW5wdXQ+IHNob3VsZCBub3cg
Z3JvdyB0byB0YWtlIHRoZSBmdWxsIGNlbGwncyBoZWlnaHQuCiBmYXN0L3RhYmxlL2NvbHNwYW5N
aW5XaWR0aC12ZXJ0aWNhbC5odG1sCiAKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbm9u
LXNjYWxpbmctc3Ryb2tlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL25vbi1zY2FsaW5nLXN0cm9rZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDExNjMw
NCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vbm9uLXNjYWxpbmctc3Ryb2tlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIGxheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAogICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAogbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQgKDE4LDEyKSBzaXplIDI1
OXgzMDYKKyAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoMTIsMCkgc2l6ZSAyODd4NDg4CiAgICAg
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHtkZWZzfSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCB7bGluZWFyR3JhZGllbnR9IFtpZD0iZ3Jh
ZDEiXSBbZ3JhZGllbnRVbml0cz1vYmplY3RCb3VuZGluZ0JveF0gW3N0YXJ0PSgwLDApXSBbZW5k
PSgxLDEpXQogICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MC4w
MF0gW2NvbG9yPSMwMDAwRkZdCkBAIC0xNSwxNCArMTUsMTQgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCiAgICAgICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgwLDEwKSBzaXplIDEw
eDEwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwRkZdfV0gW3g9MC4wMF0gW3k9MTAu
MDBdIFt3aWR0aD0xMC4wMF0gW2hlaWdodD0xMC4wMF0KICAgICAgICAgUmVuZGVyU1ZHUmVjdCB7
cmVjdH0gYXQgKDEwLDEwKSBzaXplIDEweDEwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSNG
RkZGMDBdfV0gW3g9MTAuMDBdIFt5PTEwLjAwXSBbd2lkdGg9MTAuMDBdIFtoZWlnaHQ9MTAuMDBd
CiAgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMCwwKSBzaXplIDQwMHg1MCBbeD0wLjAw
XSBbeT0wLjAwXSBbd2lkdGg9NDAwLjAwXSBbaGVpZ2h0PTUwLjAwXQotICAgIFJlbmRlclNWR0Nv
bnRhaW5lciB7Z30gYXQgKDE4LDEyKSBzaXplIDEwNHg2NiBbdHJhbnNmb3JtPXttPSgoMS4wMCww
LjAwKSgwLjAwLDEuMDApKSB0PSgyMC4wMCwyMC4wMCl9XQotICAgICAgUmVuZGVyU1ZHUmVjdCB7
cmVjdH0gYXQgKDE4LDEyKSBzaXplIDEwNHg2NiBbdHJhbnNmb3JtPXttPSgoMC4yNSwwLjAwKSgw
LjAwLDEuMDApKSB0PSgwLjAwLDAuMDApfV0gW3N0cm9rZT17W3R5cGU9TElORUFSLUdSQURJRU5U
XSBbaWQ9ImdyYWQxIl0gW3N0cm9rZSB3aWR0aD0xNS4wMF19XSBbeD0wLjAwXSBbeT0wLjAwXSBb
d2lkdGg9NDAwLjAwXSBbaGVpZ2h0PTUwLjAwXQotICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0
ICgxOCw5Mikgc2l6ZSAxMDR4NjYgW3RyYW5zZm9ybT17bT0oKDAuMjUsMC4wMCkoMC4wMCwxLjAw
KSkgdD0oMjAuMDAsMTAwLjAwKX1dIFtzdHJva2U9e1t0eXBlPUxJTkVBUi1HUkFESUVOVF0gW2lk
PSJncmFkMiJdIFtzdHJva2Ugd2lkdGg9MTUuMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRo
PTQwMC4wMF0gW2hlaWdodD01MC4wMF0KLSAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQg
KDE4LDE3Mikgc2l6ZSAxMDR4NjYgW3RyYW5zZm9ybT17bT0oKDAuMjUsMC4wMCkoMC4wMCwxLjAw
KSkgdD0oMjAuMDAsMTgwLjAwKX1dCi0gICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTgs
MTcyKSBzaXplIDEwNHg2NiBbc3Ryb2tlPXtbdHlwZT1QQVRURVJOXSBbaWQ9InBhdHRlcm4iXSBb
c3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00MDAuMDBdIFto
ZWlnaHQ9NTAuMDBdCi0gICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgxOCwyNTIpIHNp
emUgMTA0eDY2IFt0cmFuc2Zvcm09e209KCgwLjI1LDAuMDApKDAuMDAsMS4wMCkpIHQ9KDIwLjAw
LDI2MC4wMCl9XQotICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDE4LDI1Mikgc2l6ZSAx
MDR4NjYgW3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAwXSBbc3Ryb2tlIHdpZHRo
PTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBd
Ci0gICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgxNTYsMTIpIHNpemUgMTIxeDY2IFt0
cmFuc2Zvcm09e209KCgwLjI1LDAuMDApKDAuMjUsMS4wMCkpIHQ9KDE2MC4wMCwyMC4wMCl9XQot
ICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDE1NiwxMikgc2l6ZSAxMjF4NjYgW3N0cm9r
ZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAwXSBbc3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4
PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBdCi0gICAgUmVuZGVy
U1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgxNTgsODkpIHNpemUgMTA0eDIxNyBbdHJhbnNmb3JtPXtt
PSgoMC4yNSwwLjM2KSgwLjAwLDEuMDApKSB0PSgxNjAuMDAsMTAwLjAwKX1dCi0gICAgICBSZW5k
ZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTU4LDg5KSBzaXplIDEwNHgyMTcgW3N0cm9rZT17W3R5cGU9
U09MSURdIFtjb2xvcj0jMDA4MDAwXSBbc3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4PTAuMDBdIFt5
PTAuMDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBdCisgICAgUmVuZGVyU1ZHQ29udGFp
bmVyIHtnfSBhdCAoMTIsMTIpIHNpemUgMTE2eDY2IFt0cmFuc2Zvcm09e209KCgxLjAwLDAuMDAp
KDAuMDAsMS4wMCkpIHQ9KDIwLjAwLDIwLjAwKX1dCisgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0
fSBhdCAoMTIsMTIpIHNpemUgMTE2eDY2IFt0cmFuc2Zvcm09e209KCgwLjI1LDAuMDApKDAuMDAs
MS4wMCkpIHQ9KDAuMDAsMC4wMCl9XSBbc3Ryb2tlPXtbdHlwZT1MSU5FQVItR1JBRElFTlRdIFtp
ZD0iZ3JhZDEiXSBbc3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0
aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBdCisgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDEy
LDkyKSBzaXplIDExNng2NiBbdHJhbnNmb3JtPXttPSgoMC4yNSwwLjAwKSgwLjAwLDEuMDApKSB0
PSgyMC4wMCwxMDAuMDApfV0gW3N0cm9rZT17W3R5cGU9TElORUFSLUdSQURJRU5UXSBbaWQ9Imdy
YWQyIl0gW3N0cm9rZSB3aWR0aD0xNS4wMF19XSBbeD0wLjAwXSBbeT0wLjAwXSBbd2lkdGg9NDAw
LjAwXSBbaGVpZ2h0PTUwLjAwXQorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7dXNlfSBhdCAoMTIs
MTcyKSBzaXplIDExNng2NiBbdHJhbnNmb3JtPXttPSgoMC4yNSwwLjAwKSgwLjAwLDEuMDApKSB0
PSgyMC4wMCwxODAuMDApfV0KKyAgICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgxMiwxNzIp
IHNpemUgMTE2eDY2IFtzdHJva2U9e1t0eXBlPVBBVFRFUk5dIFtpZD0icGF0dGVybiJdIFtzdHJv
a2Ugd2lkdGg9MTUuMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTQwMC4wMF0gW2hlaWdo
dD01MC4wMF0KKyAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDEyLDI1Mikgc2l6ZSAx
MTZ4NjYgW3RyYW5zZm9ybT17bT0oKDAuMjUsMC4wMCkoMC4wMCwxLjAwKSkgdD0oMjAuMDAsMjYw
LjAwKX1dCisgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTIsMjUyKSBzaXplIDExNng2
NiBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDgwMDBdIFtzdHJva2Ugd2lkdGg9MTUu
MDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTQwMC4wMF0gW2hlaWdodD01MC4wMF0KKyAg
ICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDEzNCwxMikgc2l6ZSAxNjV4NjYgW3RyYW5z
Zm9ybT17bT0oKDAuMjUsMC4wMCkoMC4yNSwxLjAwKSkgdD0oMTYwLjAwLDIwLjAwKX1dCisgICAg
ICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTM0LDEyKSBzaXplIDE2NXg2NiBbc3Ryb2tlPXtb
dHlwZT1TT0xJRF0gW2NvbG9yPSMwMDgwMDBdIFtzdHJva2Ugd2lkdGg9MTUuMDBdfV0gW3g9MC4w
MF0gW3k9MC4wMF0gW3dpZHRoPTQwMC4wMF0gW2hlaWdodD01MC4wMF0KKyAgICBSZW5kZXJTVkdD
b250YWluZXIge3VzZX0gYXQgKDE1MiwwKSBzaXplIDExNng0ODggW3RyYW5zZm9ybT17bT0oKDAu
MjUsMC4zNikoMC4wMCwxLjAwKSkgdD0oMTYwLjAwLDEwMC4wMCl9XQorICAgICAgUmVuZGVyU1ZH
UmVjdCB7cmVjdH0gYXQgKDE1MiwwKSBzaXplIDExNng0ODggW3N0cm9rZT17W3R5cGU9U09MSURd
IFtjb2xvcj0jMDA4MDAwXSBbc3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAuMDBd
IFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBdCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvaGl0
dGVzdC9zdmctc2hhcGVzLW5vbi1zY2FsZS1zdHJva2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1zaGFwZXMtbm9uLXNjYWxlLXN0cm9rZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmct
c2hhcGVzLW5vbi1zY2FsZS1zdHJva2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUxIEBACitUZXN0cyBmb3IgV0s4MjYyOCAtIE1ha2Ugc3VyZSBoaXQgdGVzdGluZyB3b3Jr
cyBwcm9wZXJseSBvbiBlbGxpcHNlcywgcmVjdHMsIGxpbmVzIGFuZCBjdXJ2ZXMgd2l0aCBub24t
c2NhbGluZyBzdHJva2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMgYW5kIG5vICJGQUlMIiBtZXNzYWdlcy4KKworUEFTUyBlbGxpcHNlMSBz
dHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDI5LCAzNykKK1BBU1MgZWxsaXBzZTIgc3Ryb2tlIGNv
bnRhaW5zIHBvaW50IGF0ICgyNzksIDM3KQorUEFTUyBlbGxpcHNlMSBzdHJva2UgY29udGFpbnMg
cG9pbnQgYXQgKDM0LCA0OCkKK1BBU1MgZWxsaXBzZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0
ICgyODQsIDQ4KQorUEFTUyBlbGxpcHNlMSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDk0LCA3
MCkKK1BBU1MgZWxsaXBzZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgzNDQsIDcwKQorUEFT
UyBlbGxpcHNlMSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDEwMCwgNzgpCitQQVNTIGVsbGlw
c2UyIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoMzUwLCA3OCkKK1BBU1MgZWxsaXBzZTEgc3Ry
b2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDMzLCAxOCkKK1BBU1MgZWxsaXBzZTIgc3Ry
b2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDI4MywgMTgpCitQQVNTIGVsbGlwc2UxIHN0
cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICg4MSwgNDkpCitQQVNTIGVsbGlwc2UyIHN0
cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICgzMzEsIDQ5KQorUEFTUyBlbGxpcHNlMSBz
dHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoMTI5LCA3OCkKK1BBU1MgZWxsaXBzZTIg
c3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDM3OSwgNzgpCitQQVNTIHJlY3QxIHN0
cm9rZSBjb250YWlucyBwb2ludCBhdCAoMTcyLCA0NSkKK1BBU1MgcmVjdDIgc3Ryb2tlIGNvbnRh
aW5zIHBvaW50IGF0ICg0MjIsIDQ1KQorUEFTUyByZWN0MSBzdHJva2UgY29udGFpbnMgcG9pbnQg
YXQgKDE4MywgNjMpCitQQVNTIHJlY3QyIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoNDMzLCA2
MykKK1BBU1MgcmVjdDEgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgyMjAsIDgyKQorUEFTUyBy
ZWN0MiBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDQ3MCwgODIpCitQQVNTIHJlY3QxIHN0cm9r
ZSBjb250YWlucyBwb2ludCBhdCAoMjMzLCA5MCkKK1BBU1MgcmVjdDIgc3Ryb2tlIGNvbnRhaW5z
IHBvaW50IGF0ICg0ODMsIDkwKQorUEFTUyByZWN0MSBzdHJva2UgZG9lcyBub3QgY29udGFpbiBw
b2ludCBhdCAoMjA1LCA2OCkKK1BBU1MgcmVjdDIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9p
bnQgYXQgKDQ1NSwgNjgpCitQQVNTIGxpbmUxIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoMTI3
LCA5NykKK1BBU1MgbGluZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgzNzcsIDk3KQorUEFT
UyBsaW5lMSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDE3NCwgMTQ2KQorUEFTUyBsaW5lMiBz
dHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDQyNCwgMTQ2KQorUEFTUyBsaW5lMSBzdHJva2UgZG9l
cyBub3QgY29udGFpbiBwb2ludCBhdCAoMTM4LCAxMzEpCitQQVNTIGxpbmUyIHN0cm9rZSBkb2Vz
IG5vdCBjb250YWluIHBvaW50IGF0ICgzODgsIDEzMSkKK1BBU1MgbGluZTEgc3Ryb2tlIGRvZXMg
bm90IGNvbnRhaW4gcG9pbnQgYXQgKDE3NywgMTI2KQorUEFTUyBsaW5lMiBzdHJva2UgZG9lcyBu
b3QgY29udGFpbiBwb2ludCBhdCAoNDI3LCAxMjYpCitQQVNTIGN1cnZlMSBzdHJva2UgY29udGFp
bnMgcG9pbnQgYXQgKDI0LCAxNTkpCitQQVNTIGN1cnZlMiBzdHJva2UgY29udGFpbnMgcG9pbnQg
YXQgKDI3NCwgMTU5KQorUEFTUyBjdXJ2ZTEgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgxMDcs
IDEyNikKK1BBU1MgY3VydmUyIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoMzU3LCAxMjYpCitQ
QVNTIGN1cnZlMSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDE2OSwgMTkzKQorUEFTUyBjdXJ2
ZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICg0MTksIDE5MykKK1BBU1MgY3VydmUxIHN0cm9r
ZSBjb250YWlucyBwb2ludCBhdCAoMTk1LCAxNTkpCitQQVNTIGN1cnZlMiBzdHJva2UgY29udGFp
bnMgcG9pbnQgYXQgKDQ0NSwgMTU5KQorUEFTUyBjdXJ2ZTEgc3Ryb2tlIGRvZXMgbm90IGNvbnRh
aW4gcG9pbnQgYXQgKDUsIDE2NCkKK1BBU1MgY3VydmUyIHN0cm9rZSBkb2VzIG5vdCBjb250YWlu
IHBvaW50IGF0ICgyNTUsIDE2NCkKK1BBU1MgY3VydmUxIHN0cm9rZSBkb2VzIG5vdCBjb250YWlu
IHBvaW50IGF0ICg4MSwgMTQwKQorUEFTUyBjdXJ2ZTIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4g
cG9pbnQgYXQgKDMzMSwgMTQwKQorUEFTUyBjdXJ2ZTEgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4g
cG9pbnQgYXQgKDE2MSwgMTc3KQorUEFTUyBjdXJ2ZTIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4g
cG9pbnQgYXQgKDQxMSwgMTc3KQorCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmct
c2hhcGVzLW5vbi1zY2FsZS1zdHJva2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvaGl0dGVzdC9zdmctc2hhcGVzLW5vbi1zY2FsZS1zdHJva2UuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1zaGFwZXMtbm9uLXNjYWxlLXN0cm9rZS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3NSBAQAorPGh0bWwgeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnPgorICA8aGVhZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPgorICAgICAgI3N2Z1Jvb3QgeworICAgICAgICBtYXJnaW46IDBweDsKKyAgICAgICAgcGFk
ZGluZzogMHB4OworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAorICAgICAgICB0b3A6IDBw
eDsgCisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgIH0KKyAgICAgIC5ub25zY2FsZXRlc3Qgewor
ICAgICAgICBzdHJva2Utd2lkdGg6IDIwcHg7CisgICAgICAgIGZpbGw6ICNjY2M7CisgICAgICAg
IGZpbGwtb3BhY2l0eTogMC40OworICAgICAgfQorICAgICAgI2VsbGlwc2UxLCAjZWxsaXBzZTIg
eworICAgICAgICAgIHN0cm9rZTogI2YzMTkwMDsKKyAgICAgIH0KKyAgICAgICNsaW5lMSwgI2xp
bmUyIHsKKyAgICAgICAgICBzdHJva2U6ICMzMzY0YzI7CisgICAgICB9CisgICAgICAjcmVjdDEs
ICNyZWN0MiB7CisgICAgICAgICAgc3Ryb2tlOiAjZjdkNzJiOworICAgICAgfQorICAgICAgI2N1
cnZlMSwgI2N1cnZlMiB7CisgICAgICAgICAgc3Ryb2tlOiAjNDRjNDAwOworICAgICAgfQorICAg
IDwvc3R5bGU+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgZnVu
Y3Rpb24gZW50ZXIoZXZlbnQpIHsKKyAgICAgICAgZXZlbnQudGFyZ2V0LnNldEF0dHJpYnV0ZSgi
c3Ryb2tlLW9wYWNpdHkiLCAiMC40Iik7CisgICAgICB9OworICAgICAgZnVuY3Rpb24gZXhpdChl
dmVudCkgeworICAgICAgICBldmVudC50YXJnZXQuc2V0QXR0cmlidXRlKCJzdHJva2Utb3BhY2l0
eSIsICIwLjciKTsKKyAgICAgIH07CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+
CisgICAgPHA+VGVzdHMgZm9yIFdLODI2MjggLSBNYWtlIHN1cmUgaGl0IHRlc3Rpbmcgd29ya3Mg
cHJvcGVybHkgb24gZWxsaXBzZXMsIHJlY3RzLCBsaW5lcyBhbmQgY3VydmVzIHdpdGggbm9uLXNj
YWxpbmcgc3Ryb2tlLjwvcD4KKyAgICA8cD5PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzIGFuZCBubyAiRkFJTCIgbWVzc2FnZXMuPC9wPgorICAgIDxw
cmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorCisgICAgPHN2ZyBpZD0ic3ZnUm9vdCIgd2lkdGg9IjUw
MHB4IiBoZWlnaHQ9IjMwMHB4IiB2aWV3Qm94PSIwIDAgNTAwIDMwMCIgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgIDwhLS0gVGhlIGZvbGxvd2luZyBhcmUgYWxsIHNt
YWxsIGFuZCBzY2FsZWQgdXAgLS0+CisgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMCwg
MCkgc2NhbGUoNSwgNSkiPgorICAgICAgICA8ZWxsaXBzZSBpZD0iZWxsaXBzZTEiIGNsYXNzPSJu
b25zY2FsZXRlc3QiIGN4PSIxMCIgY3k9IjEwIiByeD0iMTAiIHJ5PSI1IiB2ZWN0b3ItZWZmZWN0
PSJub24tc2NhbGluZy1zdHJva2UiIHBvaW50ZXItZXZlbnRzPSJ2aXNpYmxlU3Ryb2tlIiBvbm1v
dXNlb3Zlcj0iZW50ZXIoZXZ0KSIgb25tb3VzZW91dD0iZXhpdChldnQpIiBzdHJva2Utb3BhY2l0
eT0iMC43IiBzdHJva2UtZGFzaGFycmF5PSIxNSwyNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+
CisgICAgICAgIDxyZWN0IGlkPSJyZWN0MSIgY2xhc3M9Im5vbnNjYWxldGVzdCIgeD0iMzAiIHk9
IjEwIiB3aWR0aD0iMTAiIGhlaWdodD0iNyIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ry
b2tlIiBwb2ludGVyLWV2ZW50cz0idmlzaWJsZVN0cm9rZSIgb25tb3VzZW92ZXI9ImVudGVyKGV2
dCkiIG9ubW91c2VvdXQ9ImV4aXQoZXZ0KSIgc3Ryb2tlLW9wYWNpdHk9IjAuNyIgIHN0cm9rZS1k
YXNoYXJyYXk9IjE1LDI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KKyAgICAgICAgPHBhdGgg
aWQ9ImxpbmUxIiBjbGFzcz0ibm9uc2NhbGV0ZXN0IiBkPSJNMjAgMjAgbCAxMCAxMHoiIHZlY3Rv
ci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgcG9pbnRlci1ldmVudHM9InZpc2libGVTdHJv
a2UiIG9ubW91c2VvdmVyPSJlbnRlcihldnQpIiBvbm1vdXNlb3V0PSJleGl0KGV2dCkiIHN0cm9r
ZS1vcGFjaXR5PSIwLjciIHN0cm9rZS1kYXNoYXJyYXk9IjE1LDI1IiBzdHJva2UtbGluZWNhcD0i
cm91bmQiLz4KKyAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTYsIDEyKSI+CisgICAg
ICAgICAgPHBhdGggaWQ9ImN1cnZlMSIgY2xhc3M9Im5vbnNjYWxldGVzdCIgZD0iTTUsMjAgQzEw
LDEwIDI1LDEwIDI1LDIwIFM0MCwzMCA0MCwyMCIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmct
c3Ryb2tlIiBwb2ludGVyLWV2ZW50cz0idmlzaWJsZVN0cm9rZSIgb25tb3VzZW92ZXI9ImVudGVy
KGV2dCkiIG9ubW91c2VvdXQ9ImV4aXQoZXZ0KSIgc3Ryb2tlLW9wYWNpdHk9IjAuNyIgc3Ryb2tl
LWRhc2hhcnJheT0iMTUsMjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgorICAgICAgICA8L2c+
CisgICAgICA8L2c+CisgICAgICA8IS0tIFRoZSBmb2xsb3dpbmcgYXJlIGFsbCBsYXJnZSBhbmQg
c2NhbGVkIGRvd24gLS0+CisgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNzUsIDApIHNj
YWxlKDAuMiwgMC4yKSI+CisgICAgICAgIDxlbGxpcHNlIGlkPSJlbGxpcHNlMiIgY2xhc3M9Im5v
bnNjYWxldGVzdCIgY3g9IjI1MCIgY3k9IjI1MCIgcng9IjI1MCIgcnk9IjEyNSIgdmVjdG9yLWVm
ZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBwb2ludGVyLWV2ZW50cz0idmlzaWJsZVN0cm9rZSIg
b25tb3VzZW92ZXI9ImVudGVyKGV2dCkiIGNsYXNzPSJub25zY2FsZXRlc3QiIG9ubW91c2VvdXQ9
ImV4aXQoZXZ0KSIgc3Ryb2tlLW9wYWNpdHk9IjAuNyIgc3Ryb2tlLWRhc2hhcnJheT0iMTUsMjUi
IHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgorICAgICAgICA8cmVjdCBpZD0icmVjdDIiIGNsYXNz
PSJub25zY2FsZXRlc3QiIHg9Ijc1MCIgeT0iMjUwIiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjE3NSIg
dmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBwb2ludGVyLWV2ZW50cz0idmlzaWJs
ZVN0cm9rZSIgb25tb3VzZW92ZXI9ImVudGVyKGV2dCkiIG9ubW91c2VvdXQ9ImV4aXQoZXZ0KSIg
c3Ryb2tlLW9wYWNpdHk9IjAuNyIgc3Ryb2tlLWRhc2hhcnJheT0iMTUsMjUiIHN0cm9rZS1saW5l
Y2FwPSJyb3VuZCIvPgorICAgICAgICA8cGF0aCBpZD0ibGluZTIiIGNsYXNzPSJub25zY2FsZXRl
c3QiIGQ9Ik01MDAgNTAwIGwgMjUwIDI1MHoiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0
cm9rZSIgcG9pbnRlci1ldmVudHM9InZpc2libGVTdHJva2UiIG9ubW91c2VvdmVyPSJlbnRlcihl
dnQpIiBvbm1vdXNlb3V0PSJleGl0KGV2dCkiIHN0cm9rZS1vcGFjaXR5PSIwLjciIHN0cm9rZS1k
YXNoYXJyYXk9IjE1LDI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KKyAgICAgICAgPGcgdHJh
bnNmb3JtPSJ0cmFuc2xhdGUoLTE1MCwgMzAwKSI+CisgICAgICAgICAgPHBhdGggaWQ9ImN1cnZl
MiIgY2xhc3M9Im5vbnNjYWxldGVzdCIgZD0iTTEyNSw1MDAgQzI1MCwyNTAgNjI1LDI1MCA2MDAs
NTAwIFMxMDAwLDc1MCAxMDAwLDUwMCIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tl
IiBwb2ludGVyLWV2ZW50cz0idmlzaWJsZVN0cm9rZSIgb25tb3VzZW92ZXI9ImVudGVyKGV2dCki
IG9ubW91c2VvdXQ9ImV4aXQoZXZ0KSIgc3Ryb2tlLW9wYWNpdHk9IjAuNyIgc3Ryb2tlLWRhc2hh
cnJheT0iMTUsMjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgorICAgICAgICA8L2c+CisgICAg
ICA8L2c+CisgICAgPC9zdmc+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
ICAgICAgLy8gZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93biA9IGZ1bmN0aW9uKGV2dCkgeyBjb25z
b2xlLmxvZygibW91c2UgZG93biBhdCAiICsgZXZ0LnggKyAiLCIgKyBldnQueSk7IH0KKyAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgdmFyIHJlc3VsdFN0cmluZyA9ICIiOworICAg
ICAgdmFyIGVsbGlwc2UxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsbGlwc2UxIik7Cisg
ICAgICB2YXIgZWxsaXBzZTIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxsaXBzZTIiKTsg
Ly8gMjUwcHggdG8gdGhlIHJpZ2h0IG9mIGVsbGlwc2UxCisgICAgICB2YXIgcG9pbnRzT25FbGxp
cHNlMVN0cm9rZSA9IFsKKyAgICAgICAgIHt4OiAyOSwgeTogMzd9LAorICAgICAgICAge3g6IDM0
LCB5OiA0OH0sCisgICAgICAgICB7eDogOTQsIHk6IDcwfSwKKyAgICAgICAgIHt4OiAxMDAsIHk6
IDc4fQorICAgICAgXTsKKyAgICAgIHZhciBwb2ludHNOb3RPbkVsbGlwc2UxU3Ryb2tlID0gWwor
ICAgICAgICAge3g6IDMzLCB5OiAxOH0sCisgICAgICAgICB7eDogODEsIHk6IDQ5fSwKKyAgICAg
ICAgIHt4OiAxMjksIHk6IDc4fQorICAgICAgXTsKKworICAgICAgdmFyIHJlY3QxID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlY3QxIik7CisgICAgICB2YXIgcmVjdDIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVjdDIiKTsgLy8gMjUwcHggdG8gdGhlIHJpZ2h0IG9mIHJlY3QxCisg
ICAgICB2YXIgcG9pbnRzT25SZWN0MVN0cm9rZSA9IFsKKyAgICAgICAgIHt4OiAxNzIsIHk6IDQ1
fSwKKyAgICAgICAgIHt4OiAxODMsIHk6IDYzfSwKKyAgICAgICAgIHt4OiAyMjAsIHk6IDgyfSwK
KyAgICAgICAgIHt4OiAyMzMsIHk6IDkwfQorICAgICAgXTsKKyAgICAgIHZhciBwb2ludHNOb3RP
blJlY3QxU3Ryb2tlID0gWworICAgICAgICAge3g6IDIwNSwgeTogNjh9CisgICAgICBdOworCisg
ICAgICB2YXIgbGluZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGluZTEiKTsKKyAgICAg
IHZhciBsaW5lMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5lMiIpOyAvLyAyNTBweCB0
byB0aGUgcmlnaHQgb2YgbGluZTEKKyAgICAgIHZhciBwb2ludHNPbkxpbmUxU3Ryb2tlID0gWwor
ICAgICAgICAge3g6IDEyNywgeTogOTd9LAorICAgICAgICAge3g6IDE3NCwgeTogMTQ2fQorICAg
ICAgXTsKKyAgICAgIHZhciBwb2ludHNOb3RPbkxpbmUxU3Ryb2tlID0gWworICAgICAgICAge3g6
IDEzOCwgeTogMTMxfSwKKyAgICAgICAgIHt4OiAxNzcsIHk6IDEyNn0KKyAgICAgIF07CisKKyAg
ICAgIHZhciBjdXJ2ZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3VydmUxIik7CisgICAg
ICB2YXIgY3VydmUyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN1cnZlMiIpOyAvLyAyNTBw
eCB0byB0aGUgcmlnaHQgb2YgY3VydmUxCisgICAgICB2YXIgcG9pbnRzT25DdXJ2ZTFTdHJva2Ug
PSBbCisgICAgICAgICB7eDogMjQsIHk6IDE1OX0sCisgICAgICAgICB7eDogMTA3LCB5OiAxMjZ9
LAorICAgICAgICAge3g6IDE2OSwgeTogMTkzfSwKKyAgICAgICAgIHt4OiAxOTUsIHk6IDE1OX0K
KyAgICAgIF07CisgICAgICB2YXIgcG9pbnRzTm90T25DdXJ2ZTFTdHJva2UgPSBbCisgICAgICAg
ICB7eDogNSwgeTogMTY0fSwKKyAgICAgICAgIHt4OiA4MSwgeTogMTQwfSwKKyAgICAgICAgIHt4
OiAxNjEsIHk6IDE3N30KKyAgICAgIF07CisKKyAgICAgIHBvaW50c09uRWxsaXBzZTFTdHJva2Uu
Zm9yRWFjaCggZnVuY3Rpb24ocG9pbnQpIHsKKyAgICAgICAgdmFyIHBhc3MgPSAoZWxsaXBzZTEg
PT0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChwb2ludC54LCBwb2ludC55KSk7CisgICAgICAg
IHJlc3VsdFN0cmluZyArPSAoKHBhc3MpID8gIlBBU1MiIDogIkZBSUwiKSArICIgZWxsaXBzZTEg
c3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgiICsgcG9pbnQueCArICIsICIgKyBwb2ludC55ICsg
IilcbiI7CisgICAgICAgIHZhciBwYXNzID0gKGVsbGlwc2UyID09IGRvY3VtZW50LmVsZW1lbnRG
cm9tUG9pbnQocG9pbnQueCArIDI1MCwgcG9pbnQueSkpOworICAgICAgICByZXN1bHRTdHJpbmcg
Kz0gKChwYXNzKSA/ICJQQVNTIiA6ICJGQUlMIikgKyAiIGVsbGlwc2UyIHN0cm9rZSBjb250YWlu
cyBwb2ludCBhdCAoIiArIChwb2ludC54KzI1MCkgKyAiLCAiICsgcG9pbnQueSArICIpXG4iOwor
ICAgICAgfSk7CisgICAgICBwb2ludHNOb3RPbkVsbGlwc2UxU3Ryb2tlLmZvckVhY2goIGZ1bmN0
aW9uKHBvaW50KSB7CisgICAgICAgIHZhciBwYXNzID0gKGVsbGlwc2UxICE9IGRvY3VtZW50LmVs
ZW1lbnRGcm9tUG9pbnQocG9pbnQueCwgcG9pbnQueSkpOworICAgICAgICByZXN1bHRTdHJpbmcg
Kz0gKChwYXNzKSA/ICJQQVNTIiA6ICJGQUlMIikgKyAiIGVsbGlwc2UxIHN0cm9rZSBkb2VzIG5v
dCBjb250YWluIHBvaW50IGF0ICgiICsgcG9pbnQueCArICIsICIgKyBwb2ludC55ICsgIilcbiI7
CisgICAgICAgIHZhciBwYXNzID0gKGVsbGlwc2UyICE9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9p
bnQocG9pbnQueCArIDI1MCwgcG9pbnQueSkpOworICAgICAgICByZXN1bHRTdHJpbmcgKz0gKChw
YXNzKSA/ICJQQVNTIiA6ICJGQUlMIikgKyAiIGVsbGlwc2UyIHN0cm9rZSBkb2VzIG5vdCBjb250
YWluIHBvaW50IGF0ICgiICsgKHBvaW50LngrMjUwKSArICIsICIgKyBwb2ludC55ICsgIilcbiI7
CisgICAgICB9KTsKKworICAgICAgcG9pbnRzT25SZWN0MVN0cm9rZS5mb3JFYWNoKCBmdW5jdGlv
bihwb2ludCkgeworICAgICAgICB2YXIgcGFzcyA9IChyZWN0MSA9PSBkb2N1bWVudC5lbGVtZW50
RnJvbVBvaW50KHBvaW50LngsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgo
cGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiByZWN0MSBzdHJva2UgY29udGFpbnMgcG9pbnQg
YXQgKCIgKyBwb2ludC54ICsgIiwgIiArIHBvaW50LnkgKyAiKVxuIjsKKyAgICAgICAgdmFyIHBh
c3MgPSAocmVjdDIgPT0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChwb2ludC54ICsgMjUwLCBw
b2ludC55KSk7CisgICAgICAgIHJlc3VsdFN0cmluZyArPSAoKHBhc3MpID8gIlBBU1MiIDogIkZB
SUwiKSArICIgcmVjdDIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgiICsgKHBvaW50LngrMjUw
KSArICIsICIgKyBwb2ludC55ICsgIilcbiI7CisgICAgICB9KTsKKyAgICAgIHBvaW50c05vdE9u
UmVjdDFTdHJva2UuZm9yRWFjaCggZnVuY3Rpb24ocG9pbnQpIHsKKyAgICAgICAgdmFyIHBhc3Mg
PSAocmVjdDEgIT0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChwb2ludC54LCBwb2ludC55KSk7
CisgICAgICAgIHJlc3VsdFN0cmluZyArPSAoKHBhc3MpID8gIlBBU1MiIDogIkZBSUwiKSArICIg
cmVjdDEgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKCIgKyBwb2ludC54ICsgIiwg
IiArIHBvaW50LnkgKyAiKVxuIjsKKyAgICAgICAgdmFyIHBhc3MgPSAocmVjdDIgIT0gZG9jdW1l
bnQuZWxlbWVudEZyb21Qb2ludChwb2ludC54ICsgMjUwLCBwb2ludC55KSk7CisgICAgICAgIHJl
c3VsdFN0cmluZyArPSAoKHBhc3MpID8gIlBBU1MiIDogIkZBSUwiKSArICIgcmVjdDIgc3Ryb2tl
IGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKCIgKyAocG9pbnQueCsyNTApICsgIiwgIiArIHBv
aW50LnkgKyAiKVxuIjsKKyAgICAgIH0pOworCisgICAgICBwb2ludHNPbkxpbmUxU3Ryb2tlLmZv
ckVhY2goIGZ1bmN0aW9uKHBvaW50KSB7CisgICAgICAgIHZhciBwYXNzID0gKGxpbmUxID09IGRv
Y3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocG9pbnQueCwgcG9pbnQueSkpOworICAgICAgICByZXN1
bHRTdHJpbmcgKz0gKChwYXNzKSA/ICJQQVNTIiA6ICJGQUlMIikgKyAiIGxpbmUxIHN0cm9rZSBj
b250YWlucyBwb2ludCBhdCAoIiArIHBvaW50LnggKyAiLCAiICsgcG9pbnQueSArICIpXG4iOwor
ICAgICAgICB2YXIgcGFzcyA9IChsaW5lMiA9PSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBv
aW50LnggKyAyNTAsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykg
PyAiUEFTUyIgOiAiRkFJTCIpICsgIiBsaW5lMiBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKCIg
KyAocG9pbnQueCsyNTApICsgIiwgIiArIHBvaW50LnkgKyAiKVxuIjsKKyAgICAgIH0pOworICAg
ICAgcG9pbnRzTm90T25MaW5lMVN0cm9rZS5mb3JFYWNoKCBmdW5jdGlvbihwb2ludCkgeworICAg
ICAgICB2YXIgcGFzcyA9IChsaW5lMSAhPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50
LngsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFTUyIg
OiAiRkFJTCIpICsgIiBsaW5lMSBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoIiAr
IHBvaW50LnggKyAiLCAiICsgcG9pbnQueSArICIpXG4iOworICAgICAgICB2YXIgcGFzcyA9IChs
aW5lMiAhPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50LnggKyAyNTAsIHBvaW50Lnkp
KTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsg
IiBsaW5lMiBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoIiArIChwb2ludC54KzI1
MCkgKyAiLCAiICsgcG9pbnQueSArICIpXG4iOworICAgICAgfSk7CisKKyAgICAgIHBvaW50c09u
Q3VydmUxU3Ryb2tlLmZvckVhY2goIGZ1bmN0aW9uKHBvaW50KSB7CisgICAgICAgIHZhciBwYXNz
ID0gKGN1cnZlMSA9PSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50LngsIHBvaW50Lnkp
KTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsg
IiBjdXJ2ZTEgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgiICsgcG9pbnQueCArICIsICIgKyBw
b2ludC55ICsgIilcbiI7CisgICAgICAgIHZhciBwYXNzID0gKGN1cnZlMiA9PSBkb2N1bWVudC5l
bGVtZW50RnJvbVBvaW50KHBvaW50LnggKyAyNTAsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0
U3RyaW5nICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiBjdXJ2ZTIgc3Ryb2tlIGNv
bnRhaW5zIHBvaW50IGF0ICgiICsgKHBvaW50LngrMjUwKSArICIsICIgKyBwb2ludC55ICsgIilc
biI7CisgICAgICB9KTsKKyAgICAgIHBvaW50c05vdE9uQ3VydmUxU3Ryb2tlLmZvckVhY2goIGZ1
bmN0aW9uKHBvaW50KSB7CisgICAgICAgIHZhciBwYXNzID0gKGN1cnZlMSAhPSBkb2N1bWVudC5l
bGVtZW50RnJvbVBvaW50KHBvaW50LngsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5n
ICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiBjdXJ2ZTEgc3Ryb2tlIGRvZXMgbm90
IGNvbnRhaW4gcG9pbnQgYXQgKCIgKyBwb2ludC54ICsgIiwgIiArIHBvaW50LnkgKyAiKVxuIjsK
KyAgICAgICAgdmFyIHBhc3MgPSAoY3VydmUyICE9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQo
cG9pbnQueCArIDI1MCwgcG9pbnQueSkpOworICAgICAgICByZXN1bHRTdHJpbmcgKz0gKChwYXNz
KSA/ICJQQVNTIiA6ICJGQUlMIikgKyAiIGN1cnZlMiBzdHJva2UgZG9lcyBub3QgY29udGFpbiBw
b2ludCBhdCAoIiArIChwb2ludC54KzI1MCkgKyAiLCAiICsgcG9pbnQueSArICIpXG4iOworICAg
ICAgfSk7CisKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJI
VE1MID0gcmVzdWx0U3RyaW5nOworICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142887</attachid>
            <date>2012-05-19 18:50:08 -0700</date>
            <delta_ts>2012-05-20 12:06:09 -0700</delta_ts>
            <desc>Update per reviewer comments</desc>
            <filename>82628.4.patch</filename>
            <type>text/plain</type>
            <size>32959</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNzcwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA1LTE5ICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4IGhpdCB0ZXN0aW5nIG9uIG5v
bi1zY2FsaW5nIHN0cm9rZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgyNjI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgZml4ZXMgaGl0IHRlc3Rpbmcgb24gbm9uLXNjYWxpbmcgc3Ry
b2tlcy4gSXQgY29udGFpbnMgZml4ZXMgZm9yIDMgYnVnczoKKyAgICAgICAgMSkgUmVuZGVyU1ZH
UmVjdDo6c2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyB3YXMgbm90IGZhbGxpbmcgYmFjayB0
byBzaGFwZS1iYXNlZCBoaXQgdGVzdGluZy4KKyAgICAgICAgMikgbV9zdHJva2VBbmRNYXJrZXJC
b3VuZGluZ0JveCBkaWQgbm90IGFjY291bnQgZm9yIG5vbi1zY2FsaW5nIHN0cm9rZXMuCisgICAg
ICAgIDMpIFJlbmRlclNWR1NoYXBlOjpzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zIGRpZCBu
b3QgaGF2ZSBhbnkgc3VwcG9ydCBmb3Igbm9uLXNjYWxpbmcgc3Ryb2tlcy4KKworICAgICAgICBU
aGlzIGNoYW5nZSBhbHNvIGNvbnRhaW5zIHNvbWUgcmVmYWN0b3JpbmcvY2xlYW51cCBvZiB0aGUg
bm9uLXNjYWxlLXN0cm9rZSBjb2RlcGF0aHMuCisKKyAgICAgICAgVGVzdDogc3ZnL2hpdHRlc3Qv
c3ZnLXNoYXBlcy1ub24tc2NhbGUtc3Ryb2tlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdFbGxp
cHNlOjpjcmVhdGVTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1JlY3Q6OmNyZWF0ZVNoYXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1JlY3Q6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFp
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnNoYXBlRGVwZW5kZW50RmlsbENv
bnRhaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub25TY2FsaW5nU3Ry
b2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1NoYXBlOjpzZXR1cE5vblNjYWxpbmdTdHJva2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1NoYXBlOjpub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1NoYXBlOjpmaWxsQW5kU3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdTaGFwZTo6dXBkYXRlQ2FjaGVkQm91bmRhcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdTaGFwZTo6aW5mbGF0ZVdpdGhTdHJva2VBbmRNYXJrZXJCb3VuZHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1NoYXBlOjpoYXNOb25TY2FsaW5nU3Ryb2tlKToKKyAgICAgICAgKFJlbmRlclNWR1No
YXBlKToKKwogMjAxMi0wNS0xOSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgU2ltcGxpZnkgUmVuZGVyT3ZlcmZsb3cgYnkgdXNpbmcgUmVjdHMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcAko
cmV2aXNpb24gMTE3NzAzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdFbGxpcHNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFJlbmRl
clNWR0VsbGlwc2U6OmNyZWF0ZVNoYXBlKCkKICAgICBtX3JhZGlpID0gRmxvYXRTaXplKCk7CiAK
ICAgICAvLyBGYWxsYmFjayB0byBSZW5kZXJTVkdTaGFwZSBpZiBzaGFwZSBoYXMgYSBub24gc2Nh
bGluZyBzdHJva2UuCi0gICAgaWYgKHN0eWxlKCktPnN2Z1N0eWxlKCktPnZlY3RvckVmZmVjdCgp
ID09IFZFX05PTl9TQ0FMSU5HX1NUUk9LRSkgeworICAgIGlmIChoYXNOb25TY2FsaW5nU3Ryb2tl
KCkpIHsKICAgICAgICAgUmVuZGVyU1ZHU2hhcGU6OmNyZWF0ZVNoYXBlKCk7CiAgICAgICAgIHNl
dElzUGFpbnRpbmdGYWxsYmFjayh0cnVlKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCShyZXZpc2lvbiAx
MTc3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1NSw4IEBAIHZvaWQgUmVuZGVyU1ZHUmVjdDo6Y3Jl
YXRlU2hhcGUoKQogICAgIFNWR1JlY3RFbGVtZW50KiByZWN0ID0gc3RhdGljX2Nhc3Q8U1ZHUmVj
dEVsZW1lbnQqPihub2RlKCkpOwogICAgIEFTU0VSVChyZWN0KTsKIAotICAgIGJvb2wgbm9uU2Nh
bGluZ1N0cm9rZSA9IHN0eWxlKCktPnN2Z1N0eWxlKCktPnZlY3RvckVmZmVjdCgpID09IFZFX05P
Tl9TQ0FMSU5HX1NUUk9LRTsKICAgICAvLyBGYWxsYmFjayB0byBSZW5kZXJTVkdTaGFwZSBpZiBy
ZWN0IGhhcyByb3VuZGVkIGNvcm5lcnMuCi0gICAgaWYgKHJlY3QtPmhhc0F0dHJpYnV0ZShTVkdO
YW1lczo6cnhBdHRyKSB8fCByZWN0LT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJ5QXR0cikgfHwg
bm9uU2NhbGluZ1N0cm9rZSkgeworICAgIGlmIChyZWN0LT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6
OnJ4QXR0cikgfHwgcmVjdC0+aGFzQXR0cmlidXRlKFNWR05hbWVzOjpyeUF0dHIpIHx8IGhhc05v
blNjYWxpbmdTdHJva2UoKSkgewogICAgICAgIFJlbmRlclNWR1NoYXBlOjpjcmVhdGVTaGFwZSgp
OwogICAgICAgIHNldElzUGFpbnRpbmdGYWxsYmFjayh0cnVlKTsKICAgICAgICByZXR1cm47CkBA
IC0xMzgsNiArMTM3LDkgQEAgdm9pZCBSZW5kZXJTVkdSZWN0OjpzdHJva2VTaGFwZShHcmFwaGlj
cwogCiBib29sIFJlbmRlclNWR1JlY3Q6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CisgICAgaWYgKGlzUGFpbnRpbmdGYWxsYmFj
aygpKQorICAgICAgICByZXR1cm4gUmVuZGVyU1ZHU2hhcGU6OnNoYXBlRGVwZW5kZW50U3Ryb2tl
Q29udGFpbnMocG9pbnQpOworCiAgICAgcmV0dXJuIG1fb3V0ZXJTdHJva2VSZWN0LmNvbnRhaW5z
KHBvaW50LCBGbG9hdFJlY3Q6Okluc2lkZU9yT25TdHJva2UpICYmICFtX2lubmVyU3Ryb2tlUmVj
dC5jb250YWlucyhwb2ludCwgRmxvYXRSZWN0OjpJbnNpZGVCdXROb3RPblN0cm9rZSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
Y3BwCShyZXZpc2lvbiAxMTc3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1NoYXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDEyICsxMDAsMjIgQEAgdm9p
ZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoR3JhcGhpYwogCiBib29sIFJlbmRlclNWR1No
YXBlOjpzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
KSBjb25zdAogeworICAgIEFTU0VSVChtX3BhdGgpOwogICAgIEJvdW5kaW5nUmVjdFN0cm9rZVN0
eWxlQXBwbGllciBhcHBsaWVyKHRoaXMsIHN0eWxlKCkpOworCisgICAgaWYgKGhhc05vblNjYWxp
bmdTdHJva2UoKSkgeworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbm9uU2NhbGluZ1RyYW5zZm9y
bSA9IG5vblNjYWxpbmdTdHJva2VUcmFuc2Zvcm0oKTsKKyAgICAgICAgUGF0aCogdXNlUGF0aCA9
IG5vblNjYWxpbmdTdHJva2VQYXRoKG1fcGF0aC5nZXQoKSwgbm9uU2NhbGluZ1RyYW5zZm9ybSk7
CisKKyAgICAgICAgcmV0dXJuIHVzZVBhdGgtPnN0cm9rZUNvbnRhaW5zKCZhcHBsaWVyLCBub25T
Y2FsaW5nVHJhbnNmb3JtLm1hcFBvaW50KHBvaW50KSk7CisgICAgfQorCiAgICAgcmV0dXJuIG1f
cGF0aC0+c3Ryb2tlQ29udGFpbnMoJmFwcGxpZXIsIHBvaW50KTsKIH0KIAogYm9vbCBSZW5kZXJT
VkdTaGFwZTo6c2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGNvbnN0IFdpbmRSdWxlIGZpbGxSdWxlKSBjb25zdAogeworICAgIEFTU0VSVChtX3BhdGgp
OwogICAgIHJldHVybiBtX3BhdGgtPmNvbnRhaW5zKHBvaW50LCBmaWxsUnVsZSk7CiB9CiAKQEAg
LTE5Nyw2ICsyMDcsMzIgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6bGF5b3V0KCkKICAgICBzZXRO
ZWVkc0xheW91dChmYWxzZSk7CiB9CiAKK1BhdGgqIFJlbmRlclNWR1NoYXBlOjpub25TY2FsaW5n
U3Ryb2tlUGF0aChjb25zdCBQYXRoKiBwYXRoLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN0cm9r
ZVRyYW5zZm9ybSkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFBhdGgsIHRlbXBQ
YXRoLCAoKSk7CisKKyAgICB0ZW1wUGF0aCA9ICpwYXRoOworICAgIHRlbXBQYXRoLnRyYW5zZm9y
bShzdHJva2VUcmFuc2Zvcm0pOworCisgICAgcmV0dXJuICZ0ZW1wUGF0aDsKK30KKworYm9vbCBS
ZW5kZXJTVkdTaGFwZTo6c2V0dXBOb25TY2FsaW5nU3Ryb2tlQ29udGV4dChBZmZpbmVUcmFuc2Zv
cm0mIHN0cm9rZVRyYW5zZm9ybSwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciYgc3RhdGVTYXZl
cikKK3sKKyAgICBpZiAoIXN0cm9rZVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgc3RhdGVTYXZlci5zYXZlKCk7CisgICAgc3RhdGVTYXZlci5j
b250ZXh0KCktPmNvbmNhdENUTShzdHJva2VUcmFuc2Zvcm0uaW52ZXJzZSgpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworQWZmaW5lVHJhbnNmb3JtIFJlbmRlclNWR1NoYXBlOjpub25TY2FsaW5n
U3Ryb2tlVHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
Kj4obm9kZSgpKTsKKyAgICByZXR1cm4gZWxlbWVudC0+Z2V0U2NyZWVuQ1RNKFNWR0xvY2F0YWJs
ZTo6RGlzYWxsb3dTdHlsZVVwZGF0ZSk7Cit9CisKIGJvb2wgUmVuZGVyU1ZHU2hhcGU6OnNob3Vs
ZFN0cm9rZVplcm9MZW5ndGhTdWJwYXRoKCkgY29uc3QKIHsKICAgICAvLyBTcGVjKDExLjQpOiBB
bnkgemVybyBsZW5ndGggc3VicGF0aCBzaGFsbCBub3QgYmUgc3Ryb2tlZCBpZiB0aGUgInN0cm9r
ZS1saW5lY2FwIiBwcm9wZXJ0eSBoYXMgYSB2YWx1ZSBvZiBidXR0CkBAIC0yMjUsMjggKzI2MSw2
IEBAIFBhdGgqIFJlbmRlclNWR1NoYXBlOjp6ZXJvTGVuZ3RoTGluZWNhcFAKICAgICByZXR1cm4g
JnRlbXBQYXRoOwogfQogCi1QYXRoKiBSZW5kZXJTVkdTaGFwZTo6bm9uU2NhbGluZ1N0cm9rZVBh
dGgoY29uc3QgUGF0aCogcGF0aCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzdHJva2VUcmFuc2Zv
cm0pCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChQYXRoLCB0ZW1wUGF0aCwgKCkpOwotCi0g
ICAgdGVtcFBhdGggPSAqcGF0aDsKLSAgICB0ZW1wUGF0aC50cmFuc2Zvcm0oc3Ryb2tlVHJhbnNm
b3JtKTsKLQotICAgIHJldHVybiAmdGVtcFBhdGg7Ci19Ci0KLWJvb2wgUmVuZGVyU1ZHU2hhcGU6
OnNldHVwTm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZVRy
YW5zZm9ybSwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciYgc3RhdGVTYXZlcikKLXsKLSAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4obm9kZSgpKTsKLSAgICBzdHJva2VUcmFuc2Zvcm0g
PSBlbGVtZW50LT5nZXRTY3JlZW5DVE0oU1ZHTG9jYXRhYmxlOjpEaXNhbGxvd1N0eWxlVXBkYXRl
KTsKLSAgICBpZiAoIXN0cm9rZVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgc3RhdGVTYXZlci5jb250
ZXh0KCktPmNvbmNhdENUTShzdHJva2VUcmFuc2Zvcm0uaW52ZXJzZSgpKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQogdm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNoYXBlKFJlbmRlclN0eWxlKiBz
dHlsZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYXRoKiBwYXRoLCBSZW5kZXJTVkdTaGFw
ZSogc2hhcGUpCiB7CiAgICAgQ29sb3IgZmFsbGJhY2tDb2xvcjsKQEAgLTI2MywyNSArMjc3LDIz
IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShSZW5kZXJTdHkKIH0KIAogdm9pZCBS
ZW5kZXJTVkdTaGFwZTo6c3Ryb2tlUGF0aChSZW5kZXJTdHlsZSogc3R5bGUsIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgUGF0aCogcGF0aCwgUmVuZGVyU1ZHUmVzb3VyY2UqIHN0cm9rZVBhaW50
aW5nUmVzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbG9y
JiBmYWxsYmFja0NvbG9yLCBib29sIG5vblNjYWxpbmdTdHJva2UsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgbm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGFwcGx5TW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ29sb3ImIGZhbGxiYWNrQ29sb3IsIGludCBhcHBseU1vZGUpCiB7CiAgICAgaWYgKCFz
dHlsZS0+c3ZnU3R5bGUoKS0+aGFzVmlzaWJsZVN0cm9rZSgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgUGF0aCogdXNlUGF0aCA9IHBhdGg7Ci0gICAgaWYgKG5vblNjYWxpbmdTdHJva2UpIHsKLSAg
ICAgICAgdXNlUGF0aCA9IG5vblNjYWxpbmdTdHJva2VQYXRoKHBhdGgsIG5vblNjYWxpbmdTdHJv
a2VUcmFuc2Zvcm0pOwotICAgIH0KKwogICAgIGlmIChzdHJva2VQYWludGluZ1Jlc291cmNlLT5h
cHBseVJlc291cmNlKHRoaXMsIHN0eWxlLCBjb250ZXh0LCBhcHBseU1vZGUpKSB7Ci0gICAgICAg
IHN0cm9rZVBhaW50aW5nUmVzb3VyY2UtPnBvc3RBcHBseVJlc291cmNlKHRoaXMsIGNvbnRleHQs
IGFwcGx5TW9kZSwgdXNlUGF0aCwgdGhpcyk7CisgICAgICAgIHN0cm9rZVBhaW50aW5nUmVzb3Vy
Y2UtPnBvc3RBcHBseVJlc291cmNlKHRoaXMsIGNvbnRleHQsIGFwcGx5TW9kZSwgcGF0aCwgdGhp
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBpZiAoIWZhbGxiYWNrQ29sb3IuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm47CisKICAgICBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29s
b3IqIGZhbGxiYWNrUmVzb3VyY2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6c2hhcmVkU29saWRQYWlu
dGluZ1Jlc291cmNlKCk7CiAgICAgZmFsbGJhY2tSZXNvdXJjZS0+c2V0Q29sb3IoZmFsbGJhY2tD
b2xvcik7CiAgICAgaWYgKGZhbGxiYWNrUmVzb3VyY2UtPmFwcGx5UmVzb3VyY2UodGhpcywgc3R5
bGUsIGNvbnRleHQsIGFwcGx5TW9kZSkpCi0gICAgICAgIGZhbGxiYWNrUmVzb3VyY2UtPnBvc3RB
cHBseVJlc291cmNlKHRoaXMsIGNvbnRleHQsIGFwcGx5TW9kZSwgdXNlUGF0aCwgdGhpcyk7Cisg
ICAgICAgIGZhbGxiYWNrUmVzb3VyY2UtPnBvc3RBcHBseVJlc291cmNlKHRoaXMsIGNvbnRleHQs
IGFwcGx5TW9kZSwgcGF0aCwgdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxB
bmRTdHJva2VQYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKQEAgLTI5NSwyMyArMzA3LDI3
IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxBbmRTdHJva2VQYXRoKEcKICAgICBpZiAoIXN0
cm9rZVBhaW50aW5nUmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIFBhdGgqIHVzZVBh
dGggPSBtX3BhdGguZ2V0KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpjb250ZXh0LCBmYWxzZSk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG5vblNjYWxpbmdTdHJv
a2VUcmFuc2Zvcm07Ci0gICAgYm9vbCBub25TY2FsaW5nU3Ryb2tlID0gc3R5bGUtPnN2Z1N0eWxl
KCktPnZlY3RvckVmZmVjdCgpID09IFZFX05PTl9TQ0FMSU5HX1NUUk9LRTsKLSAgICBpZiAobm9u
U2NhbGluZ1N0cm9rZSkgewotICAgICAgICBpZiAoIXNldHVwTm9uU2NhbGluZ1N0cm9rZVRyYW5z
Zm9ybShub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtLCBzdGF0ZVNhdmVyKSkKKyAgICBBZmZpbmVU
cmFuc2Zvcm0gbm9uU2NhbGluZ1RyYW5zZm9ybTsKKworICAgIGlmIChoYXNOb25TY2FsaW5nU3Ry
b2tlKCkpIHsKKyAgICAgICAgbm9uU2NhbGluZ1RyYW5zZm9ybSA9IG5vblNjYWxpbmdTdHJva2VU
cmFuc2Zvcm0oKTsKKyAgICAgICAgaWYgKCFzZXR1cE5vblNjYWxpbmdTdHJva2VDb250ZXh0KG5v
blNjYWxpbmdUcmFuc2Zvcm0sIHN0YXRlU2F2ZXIpKQogICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB1c2VQYXRoID0gbm9uU2NhbGluZ1N0cm9rZVBhdGgodXNlUGF0aCwgbm9uU2NhbGluZ1Ry
YW5zZm9ybSk7CiAgICAgfQogCi0gICAgc3Ryb2tlUGF0aChzdHlsZSwgY29udGV4dCwgbV9wYXRo
LmdldCgpLCBzdHJva2VQYWludGluZ1Jlc291cmNlLCBmYWxsYmFja0NvbG9yLCBub25TY2FsaW5n
U3Ryb2tlLCBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtLCBBcHBseVRvU3Ryb2tlTW9kZSk7Cisg
ICAgc3Ryb2tlUGF0aChzdHlsZSwgY29udGV4dCwgdXNlUGF0aCwgc3Ryb2tlUGFpbnRpbmdSZXNv
dXJjZSwgZmFsbGJhY2tDb2xvciwgQXBwbHlUb1N0cm9rZU1vZGUpOwogCiAgICAgLy8gU3BlYygx
MS40KTogQW55IHplcm8gbGVuZ3RoIHN1YnBhdGggc2hhbGwgbm90IGJlIHN0cm9rZWQgaWYgdGhl
ICJzdHJva2UtbGluZWNhcCIgcHJvcGVydHkgaGFzIGEgdmFsdWUgb2YgYnV0dAogICAgIC8vIGJ1
dCBzaGFsbCBiZSBzdHJva2VkIGlmIHRoZSAic3Ryb2tlLWxpbmVjYXAiIHByb3BlcnR5IGhhcyBh
IHZhbHVlIG9mIHJvdW5kIG9yIHNxdWFyZQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV96
ZXJvTGVuZ3RoTGluZWNhcExvY2F0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBQYXRoKiB1
c2VQYXRoID0gemVyb0xlbmd0aExpbmVjYXBQYXRoKG1femVyb0xlbmd0aExpbmVjYXBMb2NhdGlv
bnNbaV0pOwotICAgICAgICBzdHJva2VQYXRoKHN0eWxlLCBjb250ZXh0LCB1c2VQYXRoLCBzdHJv
a2VQYWludGluZ1Jlc291cmNlLCBmYWxsYmFja0NvbG9yLCBub25TY2FsaW5nU3Ryb2tlLCBub25T
Y2FsaW5nU3Ryb2tlVHJhbnNmb3JtLCBBcHBseVRvRmlsbE1vZGUpOworICAgICAgICBpZiAoaGFz
Tm9uU2NhbGluZ1N0cm9rZSgpKQorICAgICAgICAgICAgdXNlUGF0aCA9IG5vblNjYWxpbmdTdHJv
a2VQYXRoKHVzZVBhdGgsIG5vblNjYWxpbmdUcmFuc2Zvcm0pOworICAgICAgICBzdHJva2VQYXRo
KHN0eWxlLCBjb250ZXh0LCB1c2VQYXRoLCBzdHJva2VQYWludGluZ1Jlc291cmNlLCBmYWxsYmFj
a0NvbG9yLCBBcHBseVRvRmlsbE1vZGUpOwogICAgIH0KLQogfQogCiB2b2lkIFJlbmRlclNWR1No
YXBlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQpAQCAt
NDIzLDYgKzQzOSw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZUNhY2hlZEJvdW5kYXIK
ICAgICBtX2ZpbGxCb3VuZGluZ0JveCA9IG9iamVjdEJvdW5kaW5nQm94KCk7CiAKICAgICAvLyBB
ZGQgemVyby1sZW5ndGggc3ViLXBhdGggbGluZWNhcHMgdG8gdGhlIGZpbGwgYm94CisgICAgLy8g
RklYTUU6IHplcm8tbGVuZ3RoIHN1YnBhdGhzIGRvIG5vdCByZXNwZWN0IHZlY3Rvci1lZmZlY3Qg
PSBub24tc2NhbGluZy1zdHJva2UuCiAgICAgZmxvYXQgc3Ryb2tlV2lkdGggPSB0aGlzLT5zdHJv
a2VXaWR0aCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV96ZXJvTGVuZ3RoTGluZWNh
cExvY2F0aW9ucy5zaXplKCk7ICsraSkKICAgICAgICAgbV9maWxsQm91bmRpbmdCb3gudW5pdGUo
emVyb0xlbmd0aFN1YnBhdGhSZWN0KG1femVyb0xlbmd0aExpbmVjYXBMb2NhdGlvbnNbaV0sIHN0
cm9rZVdpZHRoKSk7CkBAIC00NDksNyArNDY2LDE4IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6Omlu
ZmxhdGVXaXRoU3Ryb2tlQW4KICAgICBGbG9hdFJlY3Qgc3Ryb2tlUmVjdDsKICAgICBpZiAoc3Zn
U3R5bGUtPmhhc1N0cm9rZSgpKSB7CiAgICAgICAgIEJvdW5kaW5nUmVjdFN0cm9rZVN0eWxlQXBw
bGllciBzdHJva2VTdHlsZSh0aGlzLCBzdHlsZSgpKTsKLSAgICAgICAgbV9zdHJva2VBbmRNYXJr
ZXJCb3VuZGluZ0JveC51bml0ZShwYXRoKCkuc3Ryb2tlQm91bmRpbmdSZWN0KCZzdHJva2VTdHls
ZSkpOworCisgICAgICAgIC8vIE5vblNjYWxpbmdTdHJva2Ugb25seSBhcHBsaWVzIHRvIHN0cm9r
ZSBhbmQgbm90IG1hcmtlcnMsIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkdUaW55MTIvcGFp
bnRpbmcuaHRtbCNOb25TY2FsaW5nU3Ryb2tlCisgICAgICAgIGlmIChoYXNOb25TY2FsaW5nU3Ry
b2tlKCkpIHsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBub25TY2FsaW5nVHJhbnNmb3Jt
ID0gbm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSgpOworICAgICAgICAgICAgaWYgKG5vblNjYWxp
bmdUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpIHsKKyAgICAgICAgICAgICAgICBQYXRoKiB1c2VQ
YXRoID0gbm9uU2NhbGluZ1N0cm9rZVBhdGgobV9wYXRoLmdldCgpLCBub25TY2FsaW5nVHJhbnNm
b3JtKTsKKyAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdSZWN0ID0gdXNl
UGF0aC0+c3Ryb2tlQm91bmRpbmdSZWN0KCZzdHJva2VTdHlsZSk7CisgICAgICAgICAgICAgICAg
c3Ryb2tlQm91bmRpbmdSZWN0ID0gbm9uU2NhbGluZ1RyYW5zZm9ybS5pbnZlcnNlKCkubWFwUmVj
dChzdHJva2VCb3VuZGluZ1JlY3QpOworICAgICAgICAgICAgICAgIG1fc3Ryb2tlQW5kTWFya2Vy
Qm91bmRpbmdCb3gudW5pdGUoc3Ryb2tlQm91bmRpbmdSZWN0KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3N0cm9rZUFuZE1hcmtlckJvdW5kaW5nQm94LnVu
aXRlKHBhdGgoKS5zdHJva2VCb3VuZGluZ1JlY3QoJnN0cm9rZVN0eWxlKSk7CiAgICAgfQogICAg
IGlmIChzdmdTdHlsZS0+aGFzTWFya2VycygpKSB7CiAgICAgICAgIEZsb2F0UmVjdCBtYXJrZXJC
b3VuZHMgPSBjYWxjdWxhdGVNYXJrZXJCb3VuZHNJZk5lZWRlZCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAkocmV2aXNpb24gMTE3NzAz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHByb2Nlc3Na
ZXJvTGVuZ3RoU3VicGF0aHMoKTsKIAogICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0aC5nZXQoKTsgfQorICAgIGJvb2wgaGFzTm9uU2NhbGluZ1N0cm9rZSgpIGNvbnN0IHsg
cmV0dXJuIHN0eWxlKCktPnN2Z1N0eWxlKCktPnZlY3RvckVmZmVjdCgpID09IFZFX05PTl9TQ0FM
SU5HX1NUUk9LRTsgfQogCiBwcml2YXRlOgogICAgIC8vIEhpdC1kZXRlY3Rpb24gc2VwYXJhdGVk
IGZvciB0aGUgZmlsbCBhbmQgdGhlIHN0cm9rZQpAQCAtMTE4LDE1ICsxMTksMTcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgdXBkYXRlQ2FjaGVkQm91bmRhcmllcygpOwogCisgICAgQWZmaW5lVHJh
bnNmb3JtIG5vblNjYWxpbmdTdHJva2VUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICBib29sIHNldHVw
Tm9uU2NhbGluZ1N0cm9rZUNvbnRleHQoQWZmaW5lVHJhbnNmb3JtJiwgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciYpOworICAgIFBhdGgqIG5vblNjYWxpbmdTdHJva2VQYXRoKGNvbnN0IFBhdGgq
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdDsKKwogICAgIFBhdGgqIHplcm9MZW5ndGhM
aW5lY2FwUGF0aChjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgYm9vbCBzZXR1cE5vblNjYWxpbmdT
dHJva2VUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiwgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciYpOwotICAgIFBhdGgqIG5vblNjYWxpbmdTdHJva2VQYXRoKGNvbnN0IFBhdGgqLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBib29sIHNob3VsZFN0cm9rZVplcm9MZW5ndGhTdWJwYXRo
KCkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IHplcm9MZW5ndGhTdWJwYXRoUmVjdChjb25zdCBGbG9h
dFBvaW50JiwgZmxvYXQpIGNvbnN0OwogCiAgICAgdm9pZCBmaWxsU2hhcGUoUmVuZGVyU3R5bGUq
LCBHcmFwaGljc0NvbnRleHQqLCBQYXRoKiwgUmVuZGVyU1ZHU2hhcGUqKTsKICAgICB2b2lkIHN0
cm9rZVBhdGgoUmVuZGVyU3R5bGUqLCBHcmFwaGljc0NvbnRleHQqLCBQYXRoKiwgUmVuZGVyU1ZH
UmVzb3VyY2UqLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvciYsIGJvb2wsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGludCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbG9y
JiwgaW50KTsKICAgICB2b2lkIGZpbGxBbmRTdHJva2VQYXRoKEdyYXBoaWNzQ29udGV4dCopOwog
ICAgIHZvaWQgaW5mbGF0ZVdpdGhTdHJva2VBbmRNYXJrZXJCb3VuZHMoKTsKIApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTE3NzAzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDUtMTkgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBGaXggaGl0IHRlc3Rpbmcgb24gbm9uLXNjYWxpbmcgc3Ryb2tlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2MjgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2tpcHBlZDoKKyAgICAgICAgKiBzdmcvY3VzdG9tL25vbi1zY2FsaW5nLXN0cm9rZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3ZnL2hpdHRlc3Qvc3ZnLXNoYXBlcy1ub24tc2NhbGUtc3Ryb2tl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2hpdHRlc3Qvc3ZnLXNoYXBlcy1u
b24tc2NhbGUtc3Ryb2tlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA1LTE5ICBKb3NodWEgQmVsbCAg
PGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCIGxheW91dCB0ZXN0cyBz
aG91bGQgbWFrZSBiZXR0ZXIgdXNlIG9mIHRlc3QgbGlicmFyeSBmdW5jdGlvbnMKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQJKHJldmlzaW9uIDExNzcwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI4MCw4ICsxMjgwLDYgQEAg
QlVHV0s4MzcxNyBNQUMgOiBzdmcvY3VzdG9tL2ZvcmVpZ24tb2JqZQogCiBCVUdXSzgzODc1IExJ
TlVYIDogc3ZnL3RleHQvZm9udC1zaXplLWJlbG93LXBvaW50LWZpdmUuc3ZnID0gUEFTUyBURVhU
CiAKLUJVR1dLODI2MjggOiBzdmcvaGl0dGVzdC9zdmctZWxsaXBzZS1ub24tc2NhbGUtc3Ryb2tl
LnhodG1sID0gRkFJTAotCiAvLyBJdCBpcyB2ZXJ5IGhhcmQgdG8gc2VlIHdoeSBzb21lIG9mIHRo
ZXNlIGFyZSBmYWlsaW5nLiBUaGUgZGlmZiBtdXN0IGJlIHRpbnkgaW4gc29tZSBjYXNlcy4KIC8v
IE90aGVyIGZhaWwgaW50ZXJtaXR0ZW50bHkgaW4gYSB3YXkgdGhhdCBpcyBvZGQgLSBjbGlwcGlu
ZyBhbmQgbWFza2luZyBzaG91bGQgYmUgc3RhYmxlLgogLy8gSXQgaXMgcHJvYmFibHkgYSB0ZXN0
IGRlc2lnbiBmbGF3LgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDEx
NzcwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCSh3b3JraW5nIGNvcHkp
CkBAIC02NDIsOSArNjQyLDYgQEAgZmFzdC9yZXBhaW50L3Njcm9sbC1pbnNpZGUtdGFibGUtY2Vs
bC5odAogZmFzdC9yZXBhaW50L3Njcm9sbC1yZWxhdGl2ZS10YWJsZS1pbnNpZGUtdGFibGUtY2Vs
bC5odG1sCiBmYXN0L3RhYmxlL2NlbGwtcHJlZi13aWR0aC1pbnZhbGlkYXRpb24uaHRtbAogCi0j
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjYyOAotc3ZnL2hpdHRl
c3Qvc3ZnLWVsbGlwc2Utbm9uLXNjYWxlLXN0cm9rZS54aHRtbAotCiAjIFRoZSBpbm5lciA8aW5w
dXQ+IHNob3VsZCBub3cgZ3JvdyB0byB0YWtlIHRoZSBmdWxsIGNlbGwncyBoZWlnaHQuCiBmYXN0
L3RhYmxlL2NvbHNwYW5NaW5XaWR0aC12ZXJ0aWNhbC5odG1sCiAKSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9jdXN0b20vbm9uLXNjYWxpbmctc3Ryb2tlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL25vbi1zY2FsaW5nLXN0cm9rZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDExNzcwMykKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vbm9uLXNjYWxpbmct
c3Ryb2tlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIGxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYw
MAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQg
KDE4LDEyKSBzaXplIDI1OXgzMDYKKyAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoMTIsMCkgc2l6
ZSAyODd4NDg4CiAgICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHtkZWZzfSBhdCAoMCwwKSBz
aXplIDB4MAogICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCB7bGluZWFyR3Jh
ZGllbnR9IFtpZD0iZ3JhZDEiXSBbZ3JhZGllbnRVbml0cz1vYmplY3RCb3VuZGluZ0JveF0gW3N0
YXJ0PSgwLDApXSBbZW5kPSgxLDEpXQogICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0
b3B9IFtvZmZzZXQ9MC4wMF0gW2NvbG9yPSMwMDAwRkZdCkBAIC0xNSwxNCArMTUsMTQgQEAgbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0
ICgwLDEwKSBzaXplIDEweDEwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwRkZdfV0g
W3g9MC4wMF0gW3k9MTAuMDBdIFt3aWR0aD0xMC4wMF0gW2hlaWdodD0xMC4wMF0KICAgICAgICAg
UmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDEwLDEwKSBzaXplIDEweDEwIFtmaWxsPXtbdHlwZT1T
T0xJRF0gW2NvbG9yPSNGRkZGMDBdfV0gW3g9MTAuMDBdIFt5PTEwLjAwXSBbd2lkdGg9MTAuMDBd
IFtoZWlnaHQ9MTAuMDBdCiAgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMCwwKSBzaXpl
IDQwMHg1MCBbeD0wLjAwXSBbeT0wLjAwXSBbd2lkdGg9NDAwLjAwXSBbaGVpZ2h0PTUwLjAwXQot
ICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDE4LDEyKSBzaXplIDEwNHg2NiBbdHJhbnNm
b3JtPXttPSgoMS4wMCwwLjAwKSgwLjAwLDEuMDApKSB0PSgyMC4wMCwyMC4wMCl9XQotICAgICAg
UmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDE4LDEyKSBzaXplIDEwNHg2NiBbdHJhbnNmb3JtPXtt
PSgoMC4yNSwwLjAwKSgwLjAwLDEuMDApKSB0PSgwLjAwLDAuMDApfV0gW3N0cm9rZT17W3R5cGU9
TElORUFSLUdSQURJRU5UXSBbaWQ9ImdyYWQxIl0gW3N0cm9rZSB3aWR0aD0xNS4wMF19XSBbeD0w
LjAwXSBbeT0wLjAwXSBbd2lkdGg9NDAwLjAwXSBbaGVpZ2h0PTUwLjAwXQotICAgIFJlbmRlclNW
R1JlY3Qge3JlY3R9IGF0ICgxOCw5Mikgc2l6ZSAxMDR4NjYgW3RyYW5zZm9ybT17bT0oKDAuMjUs
MC4wMCkoMC4wMCwxLjAwKSkgdD0oMjAuMDAsMTAwLjAwKX1dIFtzdHJva2U9e1t0eXBlPUxJTkVB
Ui1HUkFESUVOVF0gW2lkPSJncmFkMiJdIFtzdHJva2Ugd2lkdGg9MTUuMDBdfV0gW3g9MC4wMF0g
W3k9MC4wMF0gW3dpZHRoPTQwMC4wMF0gW2hlaWdodD01MC4wMF0KLSAgICBSZW5kZXJTVkdDb250
YWluZXIge3VzZX0gYXQgKDE4LDE3Mikgc2l6ZSAxMDR4NjYgW3RyYW5zZm9ybT17bT0oKDAuMjUs
MC4wMCkoMC4wMCwxLjAwKSkgdD0oMjAuMDAsMTgwLjAwKX1dCi0gICAgICBSZW5kZXJTVkdSZWN0
IHtyZWN0fSBhdCAoMTgsMTcyKSBzaXplIDEwNHg2NiBbc3Ryb2tlPXtbdHlwZT1QQVRURVJOXSBb
aWQ9InBhdHRlcm4iXSBbc3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3
aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBdCi0gICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9
IGF0ICgxOCwyNTIpIHNpemUgMTA0eDY2IFt0cmFuc2Zvcm09e209KCgwLjI1LDAuMDApKDAuMDAs
MS4wMCkpIHQ9KDIwLjAwLDI2MC4wMCl9XQotICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQg
KDE4LDI1Mikgc2l6ZSAxMDR4NjYgW3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAw
XSBbc3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00MDAuMDBd
IFtoZWlnaHQ9NTAuMDBdCi0gICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgxNTYsMTIp
IHNpemUgMTIxeDY2IFt0cmFuc2Zvcm09e209KCgwLjI1LDAuMDApKDAuMjUsMS4wMCkpIHQ9KDE2
MC4wMCwyMC4wMCl9XQotICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDE1NiwxMikgc2l6
ZSAxMjF4NjYgW3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAwXSBbc3Ryb2tlIHdp
ZHRoPTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAu
MDBdCi0gICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgxNTgsODkpIHNpemUgMTA0eDIx
NyBbdHJhbnNmb3JtPXttPSgoMC4yNSwwLjM2KSgwLjAwLDEuMDApKSB0PSgxNjAuMDAsMTAwLjAw
KX1dCi0gICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTU4LDg5KSBzaXplIDEwNHgyMTcg
W3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAwXSBbc3Ryb2tlIHdpZHRoPTE1LjAw
XX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBdCisgICAg
UmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoMTIsMTIpIHNpemUgMTE2eDY2IFt0cmFuc2Zvcm09
e209KCgxLjAwLDAuMDApKDAuMDAsMS4wMCkpIHQ9KDIwLjAwLDIwLjAwKX1dCisgICAgICBSZW5k
ZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTIsMTIpIHNpemUgMTE2eDY2IFt0cmFuc2Zvcm09e209KCgw
LjI1LDAuMDApKDAuMDAsMS4wMCkpIHQ9KDAuMDAsMC4wMCl9XSBbc3Ryb2tlPXtbdHlwZT1MSU5F
QVItR1JBRElFTlRdIFtpZD0iZ3JhZDEiXSBbc3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4PTAuMDBd
IFt5PTAuMDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBdCisgICAgUmVuZGVyU1ZHUmVj
dCB7cmVjdH0gYXQgKDEyLDkyKSBzaXplIDExNng2NiBbdHJhbnNmb3JtPXttPSgoMC4yNSwwLjAw
KSgwLjAwLDEuMDApKSB0PSgyMC4wMCwxMDAuMDApfV0gW3N0cm9rZT17W3R5cGU9TElORUFSLUdS
QURJRU5UXSBbaWQ9ImdyYWQyIl0gW3N0cm9rZSB3aWR0aD0xNS4wMF19XSBbeD0wLjAwXSBbeT0w
LjAwXSBbd2lkdGg9NDAwLjAwXSBbaGVpZ2h0PTUwLjAwXQorICAgIFJlbmRlclNWR0NvbnRhaW5l
ciB7dXNlfSBhdCAoMTIsMTcyKSBzaXplIDExNng2NiBbdHJhbnNmb3JtPXttPSgoMC4yNSwwLjAw
KSgwLjAwLDEuMDApKSB0PSgyMC4wMCwxODAuMDApfV0KKyAgICAgIFJlbmRlclNWR1JlY3Qge3Jl
Y3R9IGF0ICgxMiwxNzIpIHNpemUgMTE2eDY2IFtzdHJva2U9e1t0eXBlPVBBVFRFUk5dIFtpZD0i
cGF0dGVybiJdIFtzdHJva2Ugd2lkdGg9MTUuMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRo
PTQwMC4wMF0gW2hlaWdodD01MC4wMF0KKyAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQg
KDEyLDI1Mikgc2l6ZSAxMTZ4NjYgW3RyYW5zZm9ybT17bT0oKDAuMjUsMC4wMCkoMC4wMCwxLjAw
KSkgdD0oMjAuMDAsMjYwLjAwKX1dCisgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTIs
MjUyKSBzaXplIDExNng2NiBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDgwMDBdIFtz
dHJva2Ugd2lkdGg9MTUuMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTQwMC4wMF0gW2hl
aWdodD01MC4wMF0KKyAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDEzNCwxMikgc2l6
ZSAxNjV4NjYgW3RyYW5zZm9ybT17bT0oKDAuMjUsMC4wMCkoMC4yNSwxLjAwKSkgdD0oMTYwLjAw
LDIwLjAwKX1dCisgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTM0LDEyKSBzaXplIDE2
NXg2NiBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDgwMDBdIFtzdHJva2Ugd2lkdGg9
MTUuMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTQwMC4wMF0gW2hlaWdodD01MC4wMF0K
KyAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDE1MiwwKSBzaXplIDExNng0ODggW3Ry
YW5zZm9ybT17bT0oKDAuMjUsMC4zNikoMC4wMCwxLjAwKSkgdD0oMTYwLjAwLDEwMC4wMCl9XQor
ICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDE1MiwwKSBzaXplIDExNng0ODggW3N0cm9r
ZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAwXSBbc3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4
PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBdCkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctc2hhcGVzLW5vbi1zY2FsZS1zdHJva2UtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1zaGFwZXMtbm9u
LXNjYWxlLXN0cm9rZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9z
dmcvaGl0dGVzdC9zdmctc2hhcGVzLW5vbi1zY2FsZS1zdHJva2UtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACitUZXN0cyBmb3IgV0s4MjYyOCAtIE1ha2Ugc3VyZSBo
aXQgdGVzdGluZyB3b3JrcyBwcm9wZXJseSBvbiBlbGxpcHNlcywgcmVjdHMsIGxpbmVzIGFuZCBj
dXJ2ZXMgd2l0aCBub24tc2NhbGluZyBzdHJva2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMgYW5kIG5vICJGQUlMIiBtZXNzYWdlcy4KKwor
UEFTUyBlbGxpcHNlMSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDI5LCAzNykKK1BBU1MgZWxs
aXBzZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgyNzksIDM3KQorUEFTUyBlbGxpcHNlMSBz
dHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDM0LCA0OCkKK1BBU1MgZWxsaXBzZTIgc3Ryb2tlIGNv
bnRhaW5zIHBvaW50IGF0ICgyODQsIDQ4KQorUEFTUyBlbGxpcHNlMSBzdHJva2UgY29udGFpbnMg
cG9pbnQgYXQgKDk0LCA3MCkKK1BBU1MgZWxsaXBzZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0
ICgzNDQsIDcwKQorUEFTUyBlbGxpcHNlMSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDEwMCwg
NzgpCitQQVNTIGVsbGlwc2UyIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoMzUwLCA3OCkKK1BB
U1MgZWxsaXBzZTEgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDMzLCAxOCkKK1BB
U1MgZWxsaXBzZTIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDI4MywgMTgpCitQ
QVNTIGVsbGlwc2UxIHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICg4MSwgNDkpCitQ
QVNTIGVsbGlwc2UyIHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICgzMzEsIDQ5KQor
UEFTUyBlbGxpcHNlMSBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoMTI5LCA3OCkK
K1BBU1MgZWxsaXBzZTIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDM3OSwgNzgp
CitQQVNTIHJlY3QxIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoMTcyLCA0NSkKK1BBU1MgcmVj
dDIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICg0MjIsIDQ1KQorUEFTUyByZWN0MSBzdHJva2Ug
Y29udGFpbnMgcG9pbnQgYXQgKDE4MywgNjMpCitQQVNTIHJlY3QyIHN0cm9rZSBjb250YWlucyBw
b2ludCBhdCAoNDMzLCA2MykKK1BBU1MgcmVjdDEgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgy
MjAsIDgyKQorUEFTUyByZWN0MiBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDQ3MCwgODIpCitQ
QVNTIHJlY3QxIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoMjMzLCA5MCkKK1BBU1MgcmVjdDIg
c3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICg0ODMsIDkwKQorUEFTUyByZWN0MSBzdHJva2UgZG9l
cyBub3QgY29udGFpbiBwb2ludCBhdCAoMjA1LCA2OCkKK1BBU1MgcmVjdDIgc3Ryb2tlIGRvZXMg
bm90IGNvbnRhaW4gcG9pbnQgYXQgKDQ1NSwgNjgpCitQQVNTIGxpbmUxIHN0cm9rZSBjb250YWlu
cyBwb2ludCBhdCAoMTI3LCA5NykKK1BBU1MgbGluZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0
ICgzNzcsIDk3KQorUEFTUyBsaW5lMSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDE3NCwgMTQ2
KQorUEFTUyBsaW5lMiBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDQyNCwgMTQ2KQorUEFTUyBs
aW5lMSBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoMTM4LCAxMzEpCitQQVNTIGxp
bmUyIHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICgzODgsIDEzMSkKK1BBU1MgbGlu
ZTEgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDE3NywgMTI2KQorUEFTUyBsaW5l
MiBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoNDI3LCAxMjYpCitQQVNTIGN1cnZl
MSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDI0LCAxNTkpCitQQVNTIGN1cnZlMiBzdHJva2Ug
Y29udGFpbnMgcG9pbnQgYXQgKDI3NCwgMTU5KQorUEFTUyBjdXJ2ZTEgc3Ryb2tlIGNvbnRhaW5z
IHBvaW50IGF0ICgxMDcsIDEyNikKK1BBU1MgY3VydmUyIHN0cm9rZSBjb250YWlucyBwb2ludCBh
dCAoMzU3LCAxMjYpCitQQVNTIGN1cnZlMSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDE2OSwg
MTkzKQorUEFTUyBjdXJ2ZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICg0MTksIDE5MykKK1BB
U1MgY3VydmUxIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoMTk1LCAxNTkpCitQQVNTIGN1cnZl
MiBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDQ0NSwgMTU5KQorUEFTUyBjdXJ2ZTEgc3Ryb2tl
IGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDUsIDE2NCkKK1BBU1MgY3VydmUyIHN0cm9rZSBk
b2VzIG5vdCBjb250YWluIHBvaW50IGF0ICgyNTUsIDE2NCkKK1BBU1MgY3VydmUxIHN0cm9rZSBk
b2VzIG5vdCBjb250YWluIHBvaW50IGF0ICg4MSwgMTQwKQorUEFTUyBjdXJ2ZTIgc3Ryb2tlIGRv
ZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDMzMSwgMTQwKQorUEFTUyBjdXJ2ZTEgc3Ryb2tlIGRv
ZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDE2MSwgMTc3KQorUEFTUyBjdXJ2ZTIgc3Ryb2tlIGRv
ZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDQxMSwgMTc3KQorCkluZGV4OiBMYXlvdXRUZXN0cy9z
dmcvaGl0dGVzdC9zdmctc2hhcGVzLW5vbi1zY2FsZS1zdHJva2UuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctc2hhcGVzLW5vbi1zY2FsZS1zdHJva2UuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1zaGFwZXMtbm9u
LXNjYWxlLXN0cm9rZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3NSBAQAorPGh0bWwg
eG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgorICA8aGVhZD4KKyAgICA8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgI3N2Z1Jvb3QgeworICAgICAgICBtYXJnaW46IDBw
eDsKKyAgICAgICAgcGFkZGluZzogMHB4OworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IAor
ICAgICAgICB0b3A6IDBweDsgCisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgIH0KKyAgICAgIC5u
b25zY2FsZXRlc3QgeworICAgICAgICBzdHJva2Utd2lkdGg6IDIwcHg7CisgICAgICAgIGZpbGw6
ICNjY2M7CisgICAgICAgIGZpbGwtb3BhY2l0eTogMC40OworICAgICAgfQorICAgICAgI2VsbGlw
c2UxLCAjZWxsaXBzZTIgeworICAgICAgICAgIHN0cm9rZTogI2YzMTkwMDsKKyAgICAgIH0KKyAg
ICAgICNsaW5lMSwgI2xpbmUyIHsKKyAgICAgICAgICBzdHJva2U6ICMzMzY0YzI7CisgICAgICB9
CisgICAgICAjcmVjdDEsICNyZWN0MiB7CisgICAgICAgICAgc3Ryb2tlOiAjZjdkNzJiOworICAg
ICAgfQorICAgICAgI2N1cnZlMSwgI2N1cnZlMiB7CisgICAgICAgICAgc3Ryb2tlOiAjNDRjNDAw
OworICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorICAgICAgZnVuY3Rpb24gZW50ZXIoZXZlbnQpIHsKKyAgICAgICAgZXZlbnQudGFyZ2V0
LnNldEF0dHJpYnV0ZSgic3Ryb2tlLW9wYWNpdHkiLCAiMC40Iik7CisgICAgICB9OworICAgICAg
ZnVuY3Rpb24gZXhpdChldmVudCkgeworICAgICAgICBldmVudC50YXJnZXQuc2V0QXR0cmlidXRl
KCJzdHJva2Utb3BhY2l0eSIsICIwLjciKTsKKyAgICAgIH07CisgICAgPC9zY3JpcHQ+CisgIDwv
aGVhZD4KKyAgPGJvZHk+CisgICAgPHA+VGVzdHMgZm9yIFdLODI2MjggLSBNYWtlIHN1cmUgaGl0
IHRlc3Rpbmcgd29ya3MgcHJvcGVybHkgb24gZWxsaXBzZXMsIHJlY3RzLCBsaW5lcyBhbmQgY3Vy
dmVzIHdpdGggbm9uLXNjYWxpbmcgc3Ryb2tlLjwvcD4KKyAgICA8cD5PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzIGFuZCBubyAiRkFJTCIgbWVzc2Fn
ZXMuPC9wPgorICAgIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorCisgICAgPHN2ZyBpZD0ic3Zn
Um9vdCIgd2lkdGg9IjUwMHB4IiBoZWlnaHQ9IjMwMHB4IiB2aWV3Qm94PSIwIDAgNTAwIDMwMCIg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgIDwhLS0gVGhlIGZvbGxv
d2luZyBhcmUgYWxsIHNtYWxsIGFuZCBzY2FsZWQgdXAgLS0+CisgICAgICA8ZyB0cmFuc2Zvcm09
InRyYW5zbGF0ZSgzMCwgMCkgc2NhbGUoNSwgNSkiPgorICAgICAgICA8ZWxsaXBzZSBpZD0iZWxs
aXBzZTEiIGNsYXNzPSJub25zY2FsZXRlc3QiIGN4PSIxMCIgY3k9IjEwIiByeD0iMTAiIHJ5PSI1
IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiIHBvaW50ZXItZXZlbnRzPSJ2aXNp
YmxlU3Ryb2tlIiBvbm1vdXNlb3Zlcj0iZW50ZXIoZXZ0KSIgb25tb3VzZW91dD0iZXhpdChldnQp
IiBzdHJva2Utb3BhY2l0eT0iMC43IiBzdHJva2UtZGFzaGFycmF5PSIxNSwyNSIgc3Ryb2tlLWxp
bmVjYXA9InJvdW5kIi8+CisgICAgICAgIDxyZWN0IGlkPSJyZWN0MSIgY2xhc3M9Im5vbnNjYWxl
dGVzdCIgeD0iMzAiIHk9IjEwIiB3aWR0aD0iMTAiIGhlaWdodD0iNyIgdmVjdG9yLWVmZmVjdD0i
bm9uLXNjYWxpbmctc3Ryb2tlIiBwb2ludGVyLWV2ZW50cz0idmlzaWJsZVN0cm9rZSIgb25tb3Vz
ZW92ZXI9ImVudGVyKGV2dCkiIG9ubW91c2VvdXQ9ImV4aXQoZXZ0KSIgc3Ryb2tlLW9wYWNpdHk9
IjAuNyIgIHN0cm9rZS1kYXNoYXJyYXk9IjE1LDI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4K
KyAgICAgICAgPHBhdGggaWQ9ImxpbmUxIiBjbGFzcz0ibm9uc2NhbGV0ZXN0IiBkPSJNMjAgMjAg
bCAxMCAxMHoiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgcG9pbnRlci1ldmVu
dHM9InZpc2libGVTdHJva2UiIG9ubW91c2VvdmVyPSJlbnRlcihldnQpIiBvbm1vdXNlb3V0PSJl
eGl0KGV2dCkiIHN0cm9rZS1vcGFjaXR5PSIwLjciIHN0cm9rZS1kYXNoYXJyYXk9IjE1LDI1IiBz
dHJva2UtbGluZWNhcD0icm91bmQiLz4KKyAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUo
LTYsIDEyKSI+CisgICAgICAgICAgPHBhdGggaWQ9ImN1cnZlMSIgY2xhc3M9Im5vbnNjYWxldGVz
dCIgZD0iTTUsMjAgQzEwLDEwIDI1LDEwIDI1LDIwIFM0MCwzMCA0MCwyMCIgdmVjdG9yLWVmZmVj
dD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBwb2ludGVyLWV2ZW50cz0idmlzaWJsZVN0cm9rZSIgb25t
b3VzZW92ZXI9ImVudGVyKGV2dCkiIG9ubW91c2VvdXQ9ImV4aXQoZXZ0KSIgc3Ryb2tlLW9wYWNp
dHk9IjAuNyIgc3Ryb2tlLWRhc2hhcnJheT0iMTUsMjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIv
PgorICAgICAgICA8L2c+CisgICAgICA8L2c+CisgICAgICA8IS0tIFRoZSBmb2xsb3dpbmcgYXJl
IGFsbCBsYXJnZSBhbmQgc2NhbGVkIGRvd24gLS0+CisgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5z
bGF0ZSgyNzUsIDApIHNjYWxlKDAuMiwgMC4yKSI+CisgICAgICAgIDxlbGxpcHNlIGlkPSJlbGxp
cHNlMiIgY2xhc3M9Im5vbnNjYWxldGVzdCIgY3g9IjI1MCIgY3k9IjI1MCIgcng9IjI1MCIgcnk9
IjEyNSIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBwb2ludGVyLWV2ZW50cz0i
dmlzaWJsZVN0cm9rZSIgb25tb3VzZW92ZXI9ImVudGVyKGV2dCkiIGNsYXNzPSJub25zY2FsZXRl
c3QiIG9ubW91c2VvdXQ9ImV4aXQoZXZ0KSIgc3Ryb2tlLW9wYWNpdHk9IjAuNyIgc3Ryb2tlLWRh
c2hhcnJheT0iMTUsMjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgorICAgICAgICA8cmVjdCBp
ZD0icmVjdDIiIGNsYXNzPSJub25zY2FsZXRlc3QiIHg9Ijc1MCIgeT0iMjUwIiB3aWR0aD0iMjUw
IiBoZWlnaHQ9IjE3NSIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBwb2ludGVy
LWV2ZW50cz0idmlzaWJsZVN0cm9rZSIgb25tb3VzZW92ZXI9ImVudGVyKGV2dCkiIG9ubW91c2Vv
dXQ9ImV4aXQoZXZ0KSIgc3Ryb2tlLW9wYWNpdHk9IjAuNyIgc3Ryb2tlLWRhc2hhcnJheT0iMTUs
MjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgorICAgICAgICA8cGF0aCBpZD0ibGluZTIiIGNs
YXNzPSJub25zY2FsZXRlc3QiIGQ9Ik01MDAgNTAwIGwgMjUwIDI1MHoiIHZlY3Rvci1lZmZlY3Q9
Im5vbi1zY2FsaW5nLXN0cm9rZSIgcG9pbnRlci1ldmVudHM9InZpc2libGVTdHJva2UiIG9ubW91
c2VvdmVyPSJlbnRlcihldnQpIiBvbm1vdXNlb3V0PSJleGl0KGV2dCkiIHN0cm9rZS1vcGFjaXR5
PSIwLjciIHN0cm9rZS1kYXNoYXJyYXk9IjE1LDI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4K
KyAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE1MCwgMzAwKSI+CisgICAgICAgICAg
PHBhdGggaWQ9ImN1cnZlMiIgY2xhc3M9Im5vbnNjYWxldGVzdCIgZD0iTTEyNSw1MDAgQzI1MCwy
NTAgNjI1LDI1MCA2MDAsNTAwIFMxMDAwLDc1MCAxMDAwLDUwMCIgdmVjdG9yLWVmZmVjdD0ibm9u
LXNjYWxpbmctc3Ryb2tlIiBwb2ludGVyLWV2ZW50cz0idmlzaWJsZVN0cm9rZSIgb25tb3VzZW92
ZXI9ImVudGVyKGV2dCkiIG9ubW91c2VvdXQ9ImV4aXQoZXZ0KSIgc3Ryb2tlLW9wYWNpdHk9IjAu
NyIgc3Ryb2tlLWRhc2hhcnJheT0iMTUsMjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgorICAg
ICAgICA8L2c+CisgICAgICA8L2c+CisgICAgPC9zdmc+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorICAgICAgLy8gZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93biA9IGZ1bmN0
aW9uKGV2dCkgeyBjb25zb2xlLmxvZygibW91c2UgZG93biBhdCAiICsgZXZ0LnggKyAiLCIgKyBl
dnQueSk7IH0KKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgdmFyIHJlc3VsdFN0
cmluZyA9ICIiOworICAgICAgdmFyIGVsbGlwc2UxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImVsbGlwc2UxIik7CisgICAgICB2YXIgZWxsaXBzZTIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZWxsaXBzZTIiKTsgLy8gMjUwcHggdG8gdGhlIHJpZ2h0IG9mIGVsbGlwc2UxCisgICAgICB2
YXIgcG9pbnRzT25FbGxpcHNlMVN0cm9rZSA9IFsKKyAgICAgICAgIHt4OiAyOSwgeTogMzd9LAor
ICAgICAgICAge3g6IDM0LCB5OiA0OH0sCisgICAgICAgICB7eDogOTQsIHk6IDcwfSwKKyAgICAg
ICAgIHt4OiAxMDAsIHk6IDc4fQorICAgICAgXTsKKyAgICAgIHZhciBwb2ludHNOb3RPbkVsbGlw
c2UxU3Ryb2tlID0gWworICAgICAgICAge3g6IDMzLCB5OiAxOH0sCisgICAgICAgICB7eDogODEs
IHk6IDQ5fSwKKyAgICAgICAgIHt4OiAxMjksIHk6IDc4fQorICAgICAgXTsKKworICAgICAgdmFy
IHJlY3QxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlY3QxIik7CisgICAgICB2YXIgcmVj
dDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVjdDIiKTsgLy8gMjUwcHggdG8gdGhlIHJp
Z2h0IG9mIHJlY3QxCisgICAgICB2YXIgcG9pbnRzT25SZWN0MVN0cm9rZSA9IFsKKyAgICAgICAg
IHt4OiAxNzIsIHk6IDQ1fSwKKyAgICAgICAgIHt4OiAxODMsIHk6IDYzfSwKKyAgICAgICAgIHt4
OiAyMjAsIHk6IDgyfSwKKyAgICAgICAgIHt4OiAyMzMsIHk6IDkwfQorICAgICAgXTsKKyAgICAg
IHZhciBwb2ludHNOb3RPblJlY3QxU3Ryb2tlID0gWworICAgICAgICAge3g6IDIwNSwgeTogNjh9
CisgICAgICBdOworCisgICAgICB2YXIgbGluZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bGluZTEiKTsKKyAgICAgIHZhciBsaW5lMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5l
MiIpOyAvLyAyNTBweCB0byB0aGUgcmlnaHQgb2YgbGluZTEKKyAgICAgIHZhciBwb2ludHNPbkxp
bmUxU3Ryb2tlID0gWworICAgICAgICAge3g6IDEyNywgeTogOTd9LAorICAgICAgICAge3g6IDE3
NCwgeTogMTQ2fQorICAgICAgXTsKKyAgICAgIHZhciBwb2ludHNOb3RPbkxpbmUxU3Ryb2tlID0g
WworICAgICAgICAge3g6IDEzOCwgeTogMTMxfSwKKyAgICAgICAgIHt4OiAxNzcsIHk6IDEyNn0K
KyAgICAgIF07CisKKyAgICAgIHZhciBjdXJ2ZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y3VydmUxIik7CisgICAgICB2YXIgY3VydmUyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN1
cnZlMiIpOyAvLyAyNTBweCB0byB0aGUgcmlnaHQgb2YgY3VydmUxCisgICAgICB2YXIgcG9pbnRz
T25DdXJ2ZTFTdHJva2UgPSBbCisgICAgICAgICB7eDogMjQsIHk6IDE1OX0sCisgICAgICAgICB7
eDogMTA3LCB5OiAxMjZ9LAorICAgICAgICAge3g6IDE2OSwgeTogMTkzfSwKKyAgICAgICAgIHt4
OiAxOTUsIHk6IDE1OX0KKyAgICAgIF07CisgICAgICB2YXIgcG9pbnRzTm90T25DdXJ2ZTFTdHJv
a2UgPSBbCisgICAgICAgICB7eDogNSwgeTogMTY0fSwKKyAgICAgICAgIHt4OiA4MSwgeTogMTQw
fSwKKyAgICAgICAgIHt4OiAxNjEsIHk6IDE3N30KKyAgICAgIF07CisKKyAgICAgIHBvaW50c09u
RWxsaXBzZTFTdHJva2UuZm9yRWFjaCggZnVuY3Rpb24ocG9pbnQpIHsKKyAgICAgICAgdmFyIHBh
c3MgPSAoZWxsaXBzZTEgPT0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChwb2ludC54LCBwb2lu
dC55KSk7CisgICAgICAgIHJlc3VsdFN0cmluZyArPSAoKHBhc3MpID8gIlBBU1MiIDogIkZBSUwi
KSArICIgZWxsaXBzZTEgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgiICsgcG9pbnQueCArICIs
ICIgKyBwb2ludC55ICsgIilcbiI7CisgICAgICAgIHZhciBwYXNzID0gKGVsbGlwc2UyID09IGRv
Y3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocG9pbnQueCArIDI1MCwgcG9pbnQueSkpOworICAgICAg
ICByZXN1bHRTdHJpbmcgKz0gKChwYXNzKSA/ICJQQVNTIiA6ICJGQUlMIikgKyAiIGVsbGlwc2Uy
IHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoIiArIChwb2ludC54KzI1MCkgKyAiLCAiICsgcG9p
bnQueSArICIpXG4iOworICAgICAgfSk7CisgICAgICBwb2ludHNOb3RPbkVsbGlwc2UxU3Ryb2tl
LmZvckVhY2goIGZ1bmN0aW9uKHBvaW50KSB7CisgICAgICAgIHZhciBwYXNzID0gKGVsbGlwc2Ux
ICE9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocG9pbnQueCwgcG9pbnQueSkpOworICAgICAg
ICByZXN1bHRTdHJpbmcgKz0gKChwYXNzKSA/ICJQQVNTIiA6ICJGQUlMIikgKyAiIGVsbGlwc2Ux
IHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICgiICsgcG9pbnQueCArICIsICIgKyBw
b2ludC55ICsgIilcbiI7CisgICAgICAgIHZhciBwYXNzID0gKGVsbGlwc2UyICE9IGRvY3VtZW50
LmVsZW1lbnRGcm9tUG9pbnQocG9pbnQueCArIDI1MCwgcG9pbnQueSkpOworICAgICAgICByZXN1
bHRTdHJpbmcgKz0gKChwYXNzKSA/ICJQQVNTIiA6ICJGQUlMIikgKyAiIGVsbGlwc2UyIHN0cm9r
ZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICgiICsgKHBvaW50LngrMjUwKSArICIsICIgKyBw
b2ludC55ICsgIilcbiI7CisgICAgICB9KTsKKworICAgICAgcG9pbnRzT25SZWN0MVN0cm9rZS5m
b3JFYWNoKCBmdW5jdGlvbihwb2ludCkgeworICAgICAgICB2YXIgcGFzcyA9IChyZWN0MSA9PSBk
b2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50LngsIHBvaW50LnkpKTsKKyAgICAgICAgcmVz
dWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiByZWN0MSBzdHJva2Ug
Y29udGFpbnMgcG9pbnQgYXQgKCIgKyBwb2ludC54ICsgIiwgIiArIHBvaW50LnkgKyAiKVxuIjsK
KyAgICAgICAgdmFyIHBhc3MgPSAocmVjdDIgPT0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChw
b2ludC54ICsgMjUwLCBwb2ludC55KSk7CisgICAgICAgIHJlc3VsdFN0cmluZyArPSAoKHBhc3Mp
ID8gIlBBU1MiIDogIkZBSUwiKSArICIgcmVjdDIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgi
ICsgKHBvaW50LngrMjUwKSArICIsICIgKyBwb2ludC55ICsgIilcbiI7CisgICAgICB9KTsKKyAg
ICAgIHBvaW50c05vdE9uUmVjdDFTdHJva2UuZm9yRWFjaCggZnVuY3Rpb24ocG9pbnQpIHsKKyAg
ICAgICAgdmFyIHBhc3MgPSAocmVjdDEgIT0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChwb2lu
dC54LCBwb2ludC55KSk7CisgICAgICAgIHJlc3VsdFN0cmluZyArPSAoKHBhc3MpID8gIlBBU1Mi
IDogIkZBSUwiKSArICIgcmVjdDEgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKCIg
KyBwb2ludC54ICsgIiwgIiArIHBvaW50LnkgKyAiKVxuIjsKKyAgICAgICAgdmFyIHBhc3MgPSAo
cmVjdDIgIT0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChwb2ludC54ICsgMjUwLCBwb2ludC55
KSk7CisgICAgICAgIHJlc3VsdFN0cmluZyArPSAoKHBhc3MpID8gIlBBU1MiIDogIkZBSUwiKSAr
ICIgcmVjdDIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKCIgKyAocG9pbnQueCsy
NTApICsgIiwgIiArIHBvaW50LnkgKyAiKVxuIjsKKyAgICAgIH0pOworCisgICAgICBwb2ludHNP
bkxpbmUxU3Ryb2tlLmZvckVhY2goIGZ1bmN0aW9uKHBvaW50KSB7CisgICAgICAgIHZhciBwYXNz
ID0gKGxpbmUxID09IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocG9pbnQueCwgcG9pbnQueSkp
OworICAgICAgICByZXN1bHRTdHJpbmcgKz0gKChwYXNzKSA/ICJQQVNTIiA6ICJGQUlMIikgKyAi
IGxpbmUxIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoIiArIHBvaW50LnggKyAiLCAiICsgcG9p
bnQueSArICIpXG4iOworICAgICAgICB2YXIgcGFzcyA9IChsaW5lMiA9PSBkb2N1bWVudC5lbGVt
ZW50RnJvbVBvaW50KHBvaW50LnggKyAyNTAsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3Ry
aW5nICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiBsaW5lMiBzdHJva2UgY29udGFp
bnMgcG9pbnQgYXQgKCIgKyAocG9pbnQueCsyNTApICsgIiwgIiArIHBvaW50LnkgKyAiKVxuIjsK
KyAgICAgIH0pOworICAgICAgcG9pbnRzTm90T25MaW5lMVN0cm9rZS5mb3JFYWNoKCBmdW5jdGlv
bihwb2ludCkgeworICAgICAgICB2YXIgcGFzcyA9IChsaW5lMSAhPSBkb2N1bWVudC5lbGVtZW50
RnJvbVBvaW50KHBvaW50LngsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgo
cGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiBsaW5lMSBzdHJva2UgZG9lcyBub3QgY29udGFp
biBwb2ludCBhdCAoIiArIHBvaW50LnggKyAiLCAiICsgcG9pbnQueSArICIpXG4iOworICAgICAg
ICB2YXIgcGFzcyA9IChsaW5lMiAhPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50Lngg
KyAyNTAsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFT
UyIgOiAiRkFJTCIpICsgIiBsaW5lMiBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAo
IiArIChwb2ludC54KzI1MCkgKyAiLCAiICsgcG9pbnQueSArICIpXG4iOworICAgICAgfSk7CisK
KyAgICAgIHBvaW50c09uQ3VydmUxU3Ryb2tlLmZvckVhY2goIGZ1bmN0aW9uKHBvaW50KSB7Cisg
ICAgICAgIHZhciBwYXNzID0gKGN1cnZlMSA9PSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBv
aW50LngsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFT
UyIgOiAiRkFJTCIpICsgIiBjdXJ2ZTEgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgiICsgcG9p
bnQueCArICIsICIgKyBwb2ludC55ICsgIilcbiI7CisgICAgICAgIHZhciBwYXNzID0gKGN1cnZl
MiA9PSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50LnggKyAyNTAsIHBvaW50LnkpKTsK
KyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiBj
dXJ2ZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgiICsgKHBvaW50LngrMjUwKSArICIsICIg
KyBwb2ludC55ICsgIilcbiI7CisgICAgICB9KTsKKyAgICAgIHBvaW50c05vdE9uQ3VydmUxU3Ry
b2tlLmZvckVhY2goIGZ1bmN0aW9uKHBvaW50KSB7CisgICAgICAgIHZhciBwYXNzID0gKGN1cnZl
MSAhPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50LngsIHBvaW50LnkpKTsKKyAgICAg
ICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiBjdXJ2ZTEg
c3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKCIgKyBwb2ludC54ICsgIiwgIiArIHBv
aW50LnkgKyAiKVxuIjsKKyAgICAgICAgdmFyIHBhc3MgPSAoY3VydmUyICE9IGRvY3VtZW50LmVs
ZW1lbnRGcm9tUG9pbnQocG9pbnQueCArIDI1MCwgcG9pbnQueSkpOworICAgICAgICByZXN1bHRT
dHJpbmcgKz0gKChwYXNzKSA/ICJQQVNTIiA6ICJGQUlMIikgKyAiIGN1cnZlMiBzdHJva2UgZG9l
cyBub3QgY29udGFpbiBwb2ludCBhdCAoIiArIChwb2ludC54KzI1MCkgKyAiLCAiICsgcG9pbnQu
eSArICIpXG4iOworICAgICAgfSk7CisKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuaW5uZXJIVE1MID0gcmVzdWx0U3RyaW5nOworICAgIDwvc2NyaXB0PgorICA8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="149314"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142910</attachid>
            <date>2012-05-20 12:06:09 -0700</date>
            <delta_ts>2012-05-20 12:49:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>82628.5.patch</filename>
            <type>text/plain</type>
            <size>32920</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNzcwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA1LTIwICBQaGlsaXAg
Um9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4IGhpdCB0ZXN0aW5nIG9uIG5v
bi1zY2FsaW5nIHN0cm9rZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgyNjI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5u
LgorCisgICAgICAgIFRoaXMgY2hhbmdlIGZpeGVzIGhpdCB0ZXN0aW5nIG9uIG5vbi1zY2FsaW5n
IHN0cm9rZXMuIEl0IGNvbnRhaW5zIGZpeGVzIGZvciAzIGJ1Z3M6CisgICAgICAgIDEpIFJlbmRl
clNWR1JlY3Q6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMgd2FzIG5vdCBmYWxsaW5nIGJh
Y2sgdG8gc2hhcGUtYmFzZWQgaGl0IHRlc3RpbmcuCisgICAgICAgIDIpIG1fc3Ryb2tlQW5kTWFy
a2VyQm91bmRpbmdCb3ggZGlkIG5vdCBhY2NvdW50IGZvciBub24tc2NhbGluZyBzdHJva2VzLgor
ICAgICAgICAzKSBSZW5kZXJTVkdTaGFwZTo6c2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyBk
aWQgbm90IGhhdmUgYW55IHN1cHBvcnQgZm9yIG5vbi1zY2FsaW5nIHN0cm9rZXMuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgYWxzbyBjb250YWlucyBzb21lIHJlZmFjdG9yaW5nL2NsZWFudXAgb2Yg
dGhlIG5vbi1zY2FsZS1zdHJva2UgY29kZXBhdGhzLgorCisgICAgICAgIFRlc3Q6IHN2Zy9oaXR0
ZXN0L3N2Zy1zaGFwZXMtbm9uLXNjYWxlLXN0cm9rZS5odG1sCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
RWxsaXBzZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZWN0OjpjcmVhdGVTaGFwZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZWN0OjpzaGFwZURlcGVuZGVudFN0cm9rZUNv
bnRhaW5zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRh
aW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzaGFwZURlcGVuZGVudEZp
bGxDb250YWlucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6bm9uU2NhbGlu
Z1N0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdTaGFwZTo6c2V0dXBOb25TY2FsaW5nU3Ryb2tlQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdTaGFwZTo6bm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdTaGFwZTo6ZmlsbEFuZFN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZUNhY2hlZEJvdW5kYXJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHU2hhcGU6OmluZmxhdGVXaXRoU3Ryb2tlQW5kTWFya2VyQm91bmRzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdTaGFwZTo6aGFzTm9uU2NhbGluZ1N0cm9rZSk6CisgICAgICAgIChSZW5kZXJT
VkdTaGFwZSk6CisKIDIwMTItMDUtMTkgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFNpbXBsaWZ5IFJlbmRlck92ZXJmbG93IGJ5IHVzaW5nIFJlY3RzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5j
cHAJKHJldmlzaW9uIDExNzcwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRWxsaXBzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBS
ZW5kZXJTVkdFbGxpcHNlOjpjcmVhdGVTaGFwZSgpCiAgICAgbV9yYWRpaSA9IEZsb2F0U2l6ZSgp
OwogCiAgICAgLy8gRmFsbGJhY2sgdG8gUmVuZGVyU1ZHU2hhcGUgaWYgc2hhcGUgaGFzIGEgbm9u
IHNjYWxpbmcgc3Ryb2tlLgotICAgIGlmIChzdHlsZSgpLT5zdmdTdHlsZSgpLT52ZWN0b3JFZmZl
Y3QoKSA9PSBWRV9OT05fU0NBTElOR19TVFJPS0UpIHsKKyAgICBpZiAoaGFzTm9uU2NhbGluZ1N0
cm9rZSgpKSB7CiAgICAgICAgIFJlbmRlclNWR1NoYXBlOjpjcmVhdGVTaGFwZSgpOwogICAgICAg
ICBzZXRJc1BhaW50aW5nRmFsbGJhY2sodHJ1ZSk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAkocmV2aXNp
b24gMTE3NzA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsOSArNTUsOCBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6
OmNyZWF0ZVNoYXBlKCkKICAgICBTVkdSZWN0RWxlbWVudCogcmVjdCA9IHN0YXRpY19jYXN0PFNW
R1JlY3RFbGVtZW50Kj4obm9kZSgpKTsKICAgICBBU1NFUlQocmVjdCk7CiAKLSAgICBib29sIG5v
blNjYWxpbmdTdHJva2UgPSBzdHlsZSgpLT5zdmdTdHlsZSgpLT52ZWN0b3JFZmZlY3QoKSA9PSBW
RV9OT05fU0NBTElOR19TVFJPS0U7CiAgICAgLy8gRmFsbGJhY2sgdG8gUmVuZGVyU1ZHU2hhcGUg
aWYgcmVjdCBoYXMgcm91bmRlZCBjb3JuZXJzLgotICAgIGlmIChyZWN0LT5oYXNBdHRyaWJ1dGUo
U1ZHTmFtZXM6OnJ4QXR0cikgfHwgcmVjdC0+aGFzQXR0cmlidXRlKFNWR05hbWVzOjpyeUF0dHIp
IHx8IG5vblNjYWxpbmdTdHJva2UpIHsKKyAgICBpZiAocmVjdC0+aGFzQXR0cmlidXRlKFNWR05h
bWVzOjpyeEF0dHIpIHx8IHJlY3QtPmhhc0F0dHJpYnV0ZShTVkdOYW1lczo6cnlBdHRyKSB8fCBo
YXNOb25TY2FsaW5nU3Ryb2tlKCkpIHsKICAgICAgICBSZW5kZXJTVkdTaGFwZTo6Y3JlYXRlU2hh
cGUoKTsKICAgICAgICBzZXRJc1BhaW50aW5nRmFsbGJhY2sodHJ1ZSk7CiAgICAgICAgcmV0dXJu
OwpAQCAtMTM4LDYgKzEzNyw5IEBAIHZvaWQgUmVuZGVyU1ZHUmVjdDo6c3Ryb2tlU2hhcGUoR3Jh
cGhpY3MKIAogYm9vbCBSZW5kZXJTVkdSZWN0OjpzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5z
KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogeworICAgIGlmIChpc1BhaW50aW5nRmFs
bGJhY2soKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclNWR1NoYXBlOjpzaGFwZURlcGVuZGVudFN0
cm9rZUNvbnRhaW5zKHBvaW50KTsKKwogICAgIHJldHVybiBtX291dGVyU3Ryb2tlUmVjdC5jb250
YWlucyhwb2ludCwgRmxvYXRSZWN0OjpJbnNpZGVPck9uU3Ryb2tlKSAmJiAhbV9pbm5lclN0cm9r
ZVJlY3QuY29udGFpbnMocG9pbnQsIEZsb2F0UmVjdDo6SW5zaWRlQnV0Tm90T25TdHJva2UpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1No
YXBlLmNwcAkocmV2aXNpb24gMTE3NzA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdTaGFwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCwxMiArMTAwLDIyIEBA
IHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWMKIAogYm9vbCBSZW5kZXJT
VkdTaGFwZTo6c2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBw
b2ludCkgY29uc3QKIHsKKyAgICBBU1NFUlQobV9wYXRoKTsKICAgICBCb3VuZGluZ1JlY3RTdHJv
a2VTdHlsZUFwcGxpZXIgYXBwbGllcih0aGlzLCBzdHlsZSgpKTsKKworICAgIGlmIChoYXNOb25T
Y2FsaW5nU3Ryb2tlKCkpIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG5vblNjYWxpbmdUcmFu
c2Zvcm0gPSBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtKCk7CisgICAgICAgIFBhdGgqIHVzZVBh
dGggPSBub25TY2FsaW5nU3Ryb2tlUGF0aChtX3BhdGguZ2V0KCksIG5vblNjYWxpbmdUcmFuc2Zv
cm0pOworCisgICAgICAgIHJldHVybiB1c2VQYXRoLT5zdHJva2VDb250YWlucygmYXBwbGllciwg
bm9uU2NhbGluZ1RyYW5zZm9ybS5tYXBQb2ludChwb2ludCkpOworICAgIH0KKwogICAgIHJldHVy
biBtX3BhdGgtPnN0cm9rZUNvbnRhaW5zKCZhcHBsaWVyLCBwb2ludCk7CiB9CiAKIGJvb2wgUmVu
ZGVyU1ZHU2hhcGU6OnNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBjb25zdCBXaW5kUnVsZSBmaWxsUnVsZSkgY29uc3QKIHsKKyAgICBBU1NFUlQobV9w
YXRoKTsKICAgICByZXR1cm4gbV9wYXRoLT5jb250YWlucyhwb2ludCwgZmlsbFJ1bGUpOwogfQog
CkBAIC0xOTcsNiArMjA3LDMyIEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmxheW91dCgpCiAgICAg
c2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCitQYXRoKiBSZW5kZXJTVkdTaGFwZTo6bm9uU2Nh
bGluZ1N0cm9rZVBhdGgoY29uc3QgUGF0aCogcGF0aCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBz
dHJva2VUcmFuc2Zvcm0pIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChQYXRoLCB0
ZW1wUGF0aCwgKCkpOworCisgICAgdGVtcFBhdGggPSAqcGF0aDsKKyAgICB0ZW1wUGF0aC50cmFu
c2Zvcm0oc3Ryb2tlVHJhbnNmb3JtKTsKKworICAgIHJldHVybiAmdGVtcFBhdGg7Cit9CisKK2Jv
b2wgUmVuZGVyU1ZHU2hhcGU6OnNldHVwTm9uU2NhbGluZ1N0cm9rZUNvbnRleHQoQWZmaW5lVHJh
bnNmb3JtJiBzdHJva2VUcmFuc2Zvcm0sIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRl
U2F2ZXIpCit7CisgICAgaWYgKCFzdHJva2VUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRlU2F2ZXIuc2F2ZSgpOworICAgIHN0YXRlU2F2
ZXIuY29udGV4dCgpLT5jb25jYXRDVE0oc3Ryb2tlVHJhbnNmb3JtLmludmVyc2UoKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK0FmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdTaGFwZTo6bm9uU2Nh
bGluZ1N0cm9rZVRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudCo+KG5vZGUoKSk7CisgICAgcmV0dXJuIGVsZW1lbnQtPmdldFNjcmVlbkNUTShTVkdMb2Nh
dGFibGU6OkRpc2FsbG93U3R5bGVVcGRhdGUpOworfQorCiBib29sIFJlbmRlclNWR1NoYXBlOjpz
aG91bGRTdHJva2VaZXJvTGVuZ3RoU3VicGF0aCgpIGNvbnN0CiB7CiAgICAgLy8gU3BlYygxMS40
KTogQW55IHplcm8gbGVuZ3RoIHN1YnBhdGggc2hhbGwgbm90IGJlIHN0cm9rZWQgaWYgdGhlICJz
dHJva2UtbGluZWNhcCIgcHJvcGVydHkgaGFzIGEgdmFsdWUgb2YgYnV0dApAQCAtMjI1LDI4ICsy
NjEsNiBAQCBQYXRoKiBSZW5kZXJTVkdTaGFwZTo6emVyb0xlbmd0aExpbmVjYXBQCiAgICAgcmV0
dXJuICZ0ZW1wUGF0aDsKIH0KIAotUGF0aCogUmVuZGVyU1ZHU2hhcGU6Om5vblNjYWxpbmdTdHJv
a2VQYXRoKGNvbnN0IFBhdGgqIHBhdGgsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlVHJh
bnNmb3JtKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGF0aCwgdGVtcFBhdGgsICgpKTsK
LQotICAgIHRlbXBQYXRoID0gKnBhdGg7Ci0gICAgdGVtcFBhdGgudHJhbnNmb3JtKHN0cm9rZVRy
YW5zZm9ybSk7Ci0KLSAgICByZXR1cm4gJnRlbXBQYXRoOwotfQotCi1ib29sIFJlbmRlclNWR1No
YXBlOjpzZXR1cE5vblNjYWxpbmdTdHJva2VUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiBzdHJv
a2VUcmFuc2Zvcm0sIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2ZXIpCi17Ci0g
ICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCo+KG5vZGUoKSk7Ci0gICAgc3Ryb2tlVHJhbnNm
b3JtID0gZWxlbWVudC0+Z2V0U2NyZWVuQ1RNKFNWR0xvY2F0YWJsZTo6RGlzYWxsb3dTdHlsZVVw
ZGF0ZSk7Ci0gICAgaWYgKCFzdHJva2VUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHN0YXRlU2F2ZXIuc2F2ZSgpOwotICAgIHN0YXRlU2F2ZXIu
Y29udGV4dCgpLT5jb25jYXRDVE0oc3Ryb2tlVHJhbnNmb3JtLmludmVyc2UoKSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShSZW5kZXJTdHls
ZSogc3R5bGUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGF0aCogcGF0aCwgUmVuZGVyU1ZH
U2hhcGUqIHNoYXBlKQogewogICAgIENvbG9yIGZhbGxiYWNrQ29sb3I7CkBAIC0yNjMsMjUgKzI3
NywyMyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoUmVuZGVyU3R5CiB9CiAKIHZv
aWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVBhdGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFBhdGgqIHBhdGgsIFJlbmRlclNWR1Jlc291cmNlKiBzdHJva2VQ
YWludGluZ1Jlc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
b2xvciYgZmFsbGJhY2tDb2xvciwgYm9vbCBub25TY2FsaW5nU3Ryb2tlLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIG5vblNjYWxpbmdTdHJva2VUcmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBhcHBseU1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENvbG9yJiBmYWxsYmFja0NvbG9yLCBpbnQgYXBwbHlNb2RlKQogewogICAgIGlm
ICghc3R5bGUtPnN2Z1N0eWxlKCktPmhhc1Zpc2libGVTdHJva2UoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIFBhdGgqIHVzZVBhdGggPSBwYXRoOwotICAgIGlmIChub25TY2FsaW5nU3Ryb2tlKSB7
Ci0gICAgICAgIHVzZVBhdGggPSBub25TY2FsaW5nU3Ryb2tlUGF0aChwYXRoLCBub25TY2FsaW5n
U3Ryb2tlVHJhbnNmb3JtKTsKLSAgICB9CisKICAgICBpZiAoc3Ryb2tlUGFpbnRpbmdSZXNvdXJj
ZS0+YXBwbHlSZXNvdXJjZSh0aGlzLCBzdHlsZSwgY29udGV4dCwgYXBwbHlNb2RlKSkgewotICAg
ICAgICBzdHJva2VQYWludGluZ1Jlc291cmNlLT5wb3N0QXBwbHlSZXNvdXJjZSh0aGlzLCBjb250
ZXh0LCBhcHBseU1vZGUsIHVzZVBhdGgsIHRoaXMpOworICAgICAgICBzdHJva2VQYWludGluZ1Jl
c291cmNlLT5wb3N0QXBwbHlSZXNvdXJjZSh0aGlzLCBjb250ZXh0LCBhcHBseU1vZGUsIHBhdGgs
IHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgaWYgKCFmYWxsYmFja0NvbG9y
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOworCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VTb2xp
ZENvbG9yKiBmYWxsYmFja1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OnNoYXJlZFNvbGlk
UGFpbnRpbmdSZXNvdXJjZSgpOwogICAgIGZhbGxiYWNrUmVzb3VyY2UtPnNldENvbG9yKGZhbGxi
YWNrQ29sb3IpOwogICAgIGlmIChmYWxsYmFja1Jlc291cmNlLT5hcHBseVJlc291cmNlKHRoaXMs
IHN0eWxlLCBjb250ZXh0LCBhcHBseU1vZGUpKQotICAgICAgICBmYWxsYmFja1Jlc291cmNlLT5w
b3N0QXBwbHlSZXNvdXJjZSh0aGlzLCBjb250ZXh0LCBhcHBseU1vZGUsIHVzZVBhdGgsIHRoaXMp
OworICAgICAgICBmYWxsYmFja1Jlc291cmNlLT5wb3N0QXBwbHlSZXNvdXJjZSh0aGlzLCBjb250
ZXh0LCBhcHBseU1vZGUsIHBhdGgsIHRoaXMpOwogfQogCiB2b2lkIFJlbmRlclNWR1NoYXBlOjpm
aWxsQW5kU3Ryb2tlUGF0aChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCkBAIC0yOTUsMjMgKzMw
NywyNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsQW5kU3Ryb2tlUGF0aChHCiAgICAgaWYg
KCFzdHJva2VQYWludGluZ1Jlc291cmNlKQogICAgICAgICByZXR1cm47CiAKKyAgICBQYXRoKiB1
c2VQYXRoID0gbV9wYXRoLmdldCgpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqY29udGV4dCwgZmFsc2UpOwotICAgIEFmZmluZVRyYW5zZm9ybSBub25TY2FsaW5n
U3Ryb2tlVHJhbnNmb3JtOwotICAgIGJvb2wgbm9uU2NhbGluZ1N0cm9rZSA9IHN0eWxlLT5zdmdT
dHlsZSgpLT52ZWN0b3JFZmZlY3QoKSA9PSBWRV9OT05fU0NBTElOR19TVFJPS0U7Ci0gICAgaWYg
KG5vblNjYWxpbmdTdHJva2UpIHsKLSAgICAgICAgaWYgKCFzZXR1cE5vblNjYWxpbmdTdHJva2VU
cmFuc2Zvcm0obm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSwgc3RhdGVTYXZlcikpCisgICAgQWZm
aW5lVHJhbnNmb3JtIG5vblNjYWxpbmdUcmFuc2Zvcm07CisKKyAgICBpZiAoaGFzTm9uU2NhbGlu
Z1N0cm9rZSgpKSB7CisgICAgICAgIG5vblNjYWxpbmdUcmFuc2Zvcm0gPSBub25TY2FsaW5nU3Ry
b2tlVHJhbnNmb3JtKCk7CisgICAgICAgIGlmICghc2V0dXBOb25TY2FsaW5nU3Ryb2tlQ29udGV4
dChub25TY2FsaW5nVHJhbnNmb3JtLCBzdGF0ZVNhdmVyKSkKICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgdXNlUGF0aCA9IG5vblNjYWxpbmdTdHJva2VQYXRoKHVzZVBhdGgsIG5vblNjYWxp
bmdUcmFuc2Zvcm0pOwogICAgIH0KIAotICAgIHN0cm9rZVBhdGgoc3R5bGUsIGNvbnRleHQsIG1f
cGF0aC5nZXQoKSwgc3Ryb2tlUGFpbnRpbmdSZXNvdXJjZSwgZmFsbGJhY2tDb2xvciwgbm9uU2Nh
bGluZ1N0cm9rZSwgbm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSwgQXBwbHlUb1N0cm9rZU1vZGUp
OworICAgIHN0cm9rZVBhdGgoc3R5bGUsIGNvbnRleHQsIHVzZVBhdGgsIHN0cm9rZVBhaW50aW5n
UmVzb3VyY2UsIGZhbGxiYWNrQ29sb3IsIEFwcGx5VG9TdHJva2VNb2RlKTsKIAogICAgIC8vIFNw
ZWMoMTEuNCk6IEFueSB6ZXJvIGxlbmd0aCBzdWJwYXRoIHNoYWxsIG5vdCBiZSBzdHJva2VkIGlm
IHRoZSAic3Ryb2tlLWxpbmVjYXAiIHByb3BlcnR5IGhhcyBhIHZhbHVlIG9mIGJ1dHQKICAgICAv
LyBidXQgc2hhbGwgYmUgc3Ryb2tlZCBpZiB0aGUgInN0cm9rZS1saW5lY2FwIiBwcm9wZXJ0eSBo
YXMgYSB2YWx1ZSBvZiByb3VuZCBvciBzcXVhcmUKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1femVyb0xlbmd0aExpbmVjYXBMb2NhdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgUGF0
aCogdXNlUGF0aCA9IHplcm9MZW5ndGhMaW5lY2FwUGF0aChtX3plcm9MZW5ndGhMaW5lY2FwTG9j
YXRpb25zW2ldKTsKLSAgICAgICAgc3Ryb2tlUGF0aChzdHlsZSwgY29udGV4dCwgdXNlUGF0aCwg
c3Ryb2tlUGFpbnRpbmdSZXNvdXJjZSwgZmFsbGJhY2tDb2xvciwgbm9uU2NhbGluZ1N0cm9rZSwg
bm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSwgQXBwbHlUb0ZpbGxNb2RlKTsKKyAgICAgICAgaWYg
KGhhc05vblNjYWxpbmdTdHJva2UoKSkKKyAgICAgICAgICAgIHVzZVBhdGggPSBub25TY2FsaW5n
U3Ryb2tlUGF0aCh1c2VQYXRoLCBub25TY2FsaW5nVHJhbnNmb3JtKTsKKyAgICAgICAgc3Ryb2tl
UGF0aChzdHlsZSwgY29udGV4dCwgdXNlUGF0aCwgc3Ryb2tlUGFpbnRpbmdSZXNvdXJjZSwgZmFs
bGJhY2tDb2xvciwgQXBwbHlUb0ZpbGxNb2RlKTsKICAgICB9Ci0KIH0KIAogdm9pZCBSZW5kZXJT
VkdTaGFwZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikK
QEAgLTQyMyw2ICs0MzksNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjp1cGRhdGVDYWNoZWRCb3Vu
ZGFyCiAgICAgbV9maWxsQm91bmRpbmdCb3ggPSBvYmplY3RCb3VuZGluZ0JveCgpOwogCiAgICAg
Ly8gQWRkIHplcm8tbGVuZ3RoIHN1Yi1wYXRoIGxpbmVjYXBzIHRvIHRoZSBmaWxsIGJveAorICAg
IC8vIEZJWE1FOiB6ZXJvLWxlbmd0aCBzdWJwYXRocyBkbyBub3QgcmVzcGVjdCB2ZWN0b3ItZWZm
ZWN0ID0gbm9uLXNjYWxpbmctc3Ryb2tlLgogICAgIGZsb2F0IHN0cm9rZVdpZHRoID0gdGhpcy0+
c3Ryb2tlV2lkdGgoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1femVyb0xlbmd0aExp
bmVjYXBMb2NhdGlvbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fZmlsbEJvdW5kaW5nQm94LnVu
aXRlKHplcm9MZW5ndGhTdWJwYXRoUmVjdChtX3plcm9MZW5ndGhMaW5lY2FwTG9jYXRpb25zW2ld
LCBzdHJva2VXaWR0aCkpOwpAQCAtNDQ5LDcgKzQ2NiwxOCBAQCB2b2lkIFJlbmRlclNWR1NoYXBl
OjppbmZsYXRlV2l0aFN0cm9rZUFuCiAgICAgRmxvYXRSZWN0IHN0cm9rZVJlY3Q7CiAgICAgaWYg
KHN2Z1N0eWxlLT5oYXNTdHJva2UoKSkgewogICAgICAgICBCb3VuZGluZ1JlY3RTdHJva2VTdHls
ZUFwcGxpZXIgc3Ryb2tlU3R5bGUodGhpcywgc3R5bGUoKSk7Ci0gICAgICAgIG1fc3Ryb2tlQW5k
TWFya2VyQm91bmRpbmdCb3gudW5pdGUocGF0aCgpLnN0cm9rZUJvdW5kaW5nUmVjdCgmc3Ryb2tl
U3R5bGUpKTsKKworICAgICAgICAvLyBTVkcxLjIgVGlueSBvbmx5IGRlZmluZXMgbm9uIHNjYWxp
bmcgc3Ryb2tlIGZvciB0aGUgc3Ryb2tlIGJ1dCBub3QgbWFya2Vycy4KKyAgICAgICAgaWYgKGhh
c05vblNjYWxpbmdTdHJva2UoKSkgeworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG5vblNj
YWxpbmdUcmFuc2Zvcm0gPSBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtKCk7CisgICAgICAgICAg
ICBpZiAobm9uU2NhbGluZ1RyYW5zZm9ybS5pc0ludmVydGlibGUoKSkgeworICAgICAgICAgICAg
ICAgIFBhdGgqIHVzZVBhdGggPSBub25TY2FsaW5nU3Ryb2tlUGF0aChtX3BhdGguZ2V0KCksIG5v
blNjYWxpbmdUcmFuc2Zvcm0pOworICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzdHJva2VCb3Vu
ZGluZ1JlY3QgPSB1c2VQYXRoLT5zdHJva2VCb3VuZGluZ1JlY3QoJnN0cm9rZVN0eWxlKTsKKyAg
ICAgICAgICAgICAgICBzdHJva2VCb3VuZGluZ1JlY3QgPSBub25TY2FsaW5nVHJhbnNmb3JtLmlu
dmVyc2UoKS5tYXBSZWN0KHN0cm9rZUJvdW5kaW5nUmVjdCk7CisgICAgICAgICAgICAgICAgbV9z
dHJva2VBbmRNYXJrZXJCb3VuZGluZ0JveC51bml0ZShzdHJva2VCb3VuZGluZ1JlY3QpOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fc3Ryb2tlQW5kTWFya2Vy
Qm91bmRpbmdCb3gudW5pdGUocGF0aCgpLnN0cm9rZUJvdW5kaW5nUmVjdCgmc3Ryb2tlU3R5bGUp
KTsKICAgICB9CiAgICAgaWYgKHN2Z1N0eWxlLT5oYXNNYXJrZXJzKCkpIHsKICAgICAgICAgRmxv
YXRSZWN0IG1hcmtlckJvdW5kcyA9IGNhbGN1bGF0ZU1hcmtlckJvdW5kc0lmTmVlZGVkKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCShy
ZXZpc2lvbiAxMTc3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgcHJvY2Vzc1plcm9MZW5ndGhTdWJwYXRocygpOwogCiAgICAgYm9vbCBoYXNQYXRoKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXRoLmdldCgpOyB9CisgICAgYm9vbCBoYXNOb25TY2FsaW5nU3Ry
b2tlKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+c3ZnU3R5bGUoKS0+dmVjdG9yRWZmZWN0KCkg
PT0gVkVfTk9OX1NDQUxJTkdfU1RST0tFOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gSGl0LWRldGVj
dGlvbiBzZXBhcmF0ZWQgZm9yIHRoZSBmaWxsIGFuZCB0aGUgc3Ryb2tlCkBAIC0xMTgsMTUgKzEx
OSwxNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVDYWNoZWRCb3VuZGFyaWVzKCk7CiAK
KyAgICBBZmZpbmVUcmFuc2Zvcm0gbm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSgpIGNvbnN0Owor
ICAgIGJvb2wgc2V0dXBOb25TY2FsaW5nU3Ryb2tlQ29udGV4dChBZmZpbmVUcmFuc2Zvcm0mLCBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJik7CisgICAgUGF0aCogbm9uU2NhbGluZ1N0cm9rZVBh
dGgoY29uc3QgUGF0aCosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0OworCiAgICAgUGF0
aCogemVyb0xlbmd0aExpbmVjYXBQYXRoKGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICBib29sIHNl
dHVwTm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0mLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyJik7Ci0gICAgUGF0aCogbm9uU2NhbGluZ1N0cm9rZVBhdGgoY29uc3Qg
UGF0aCosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogICAgIGJvb2wgc2hvdWxkU3Ryb2tlWmVy
b0xlbmd0aFN1YnBhdGgoKSBjb25zdDsKICAgICBGbG9hdFJlY3QgemVyb0xlbmd0aFN1YnBhdGhS
ZWN0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCkgY29uc3Q7CiAKICAgICB2b2lkIGZpbGxTaGFw
ZShSZW5kZXJTdHlsZSosIEdyYXBoaWNzQ29udGV4dCosIFBhdGgqLCBSZW5kZXJTVkdTaGFwZSop
OwogICAgIHZvaWQgc3Ryb2tlUGF0aChSZW5kZXJTdHlsZSosIEdyYXBoaWNzQ29udGV4dCosIFBh
dGgqLCBSZW5kZXJTVkdSZXNvdXJjZSosCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbG9y
JiwgYm9vbCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgaW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ29sb3ImLCBpbnQpOwogICAgIHZvaWQgZmlsbEFuZFN0cm9rZVBhdGgoR3JhcGhp
Y3NDb250ZXh0Kik7CiAgICAgdm9pZCBpbmZsYXRlV2l0aFN0cm9rZUFuZE1hcmtlckJvdW5kcygp
OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTc3MDcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNS0yMCAgUGhpbGlwIFJvZ2Vy
cyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIEZpeCBoaXQgdGVzdGluZyBvbiBub24tc2Nh
bGluZyBzdHJva2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MjYyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBzdmcvY3VzdG9tL25vbi1zY2Fs
aW5nLXN0cm9rZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2hpdHRlc3Qvc3ZnLXNoYXBl
cy1ub24tc2NhbGUtc3Ryb2tlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2hp
dHRlc3Qvc3ZnLXNoYXBlcy1ub24tc2NhbGUtc3Ryb2tlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA1
LTE5ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhl
ZERCIGxheW91dCB0ZXN0cyBzaG91bGQgbWFrZSBiZXR0ZXIgdXNlIG9mIHRlc3QgbGlicmFyeSBm
dW5jdGlvbnMKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDExNzcwNykKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTI4MCw4ICsxMjgwLDYgQEAgQlVHV0s4MzcxNyBNQUMgOiBzdmcvY3VzdG9tL2ZvcmVpZ24tb2Jq
ZQogCiBCVUdXSzgzODc1IExJTlVYIDogc3ZnL3RleHQvZm9udC1zaXplLWJlbG93LXBvaW50LWZp
dmUuc3ZnID0gUEFTUyBURVhUCiAKLUJVR1dLODI2MjggOiBzdmcvaGl0dGVzdC9zdmctZWxsaXBz
ZS1ub24tc2NhbGUtc3Ryb2tlLnhodG1sID0gRkFJTAotCiAvLyBJdCBpcyB2ZXJ5IGhhcmQgdG8g
c2VlIHdoeSBzb21lIG9mIHRoZXNlIGFyZSBmYWlsaW5nLiBUaGUgZGlmZiBtdXN0IGJlIHRpbnkg
aW4gc29tZSBjYXNlcy4KIC8vIE90aGVyIGZhaWwgaW50ZXJtaXR0ZW50bHkgaW4gYSB3YXkgdGhh
dCBpcyBvZGQgLSBjbGlwcGluZyBhbmQgbWFza2luZyBzaG91bGQgYmUgc3RhYmxlLgogLy8gSXQg
aXMgcHJvYmFibHkgYSB0ZXN0IGRlc2lnbiBmbGF3LgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQJKHJldmlzaW9uIDExNzcwNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCSh3b3JraW5nIGNvcHkpCkBAIC02NDIsOSArNjQyLDYgQEAgZmFzdC9yZXBhaW50L3Njcm9s
bC1pbnNpZGUtdGFibGUtY2VsbC5odAogZmFzdC9yZXBhaW50L3Njcm9sbC1yZWxhdGl2ZS10YWJs
ZS1pbnNpZGUtdGFibGUtY2VsbC5odG1sCiBmYXN0L3RhYmxlL2NlbGwtcHJlZi13aWR0aC1pbnZh
bGlkYXRpb24uaHRtbAogCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MjYyOAotc3ZnL2hpdHRlc3Qvc3ZnLWVsbGlwc2Utbm9uLXNjYWxlLXN0cm9rZS54aHRtbAot
CiAjIFRoZSBpbm5lciA8aW5wdXQ+IHNob3VsZCBub3cgZ3JvdyB0byB0YWtlIHRoZSBmdWxsIGNl
bGwncyBoZWlnaHQuCiBmYXN0L3RhYmxlL2NvbHNwYW5NaW5XaWR0aC12ZXJ0aWNhbC5odG1sCiAK
SW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vbm9uLXNjYWxpbmctc3Ryb2tlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL25vbi1zY2FsaW5nLXN0
cm9rZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDExNzcwNykKKysrIExheW91dFRlc3RzL3N2Zy9j
dXN0b20vbm9uLXNjYWxpbmctc3Ryb2tlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw3ICsxLDcgQEAKIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgODAweDYwMAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRl
clNWR1Jvb3Qge3N2Z30gYXQgKDE4LDEyKSBzaXplIDI1OXgzMDYKKyAgUmVuZGVyU1ZHUm9vdCB7
c3ZnfSBhdCAoMTIsMCkgc2l6ZSAyODd4NDg4CiAgICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
IHtkZWZzfSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJH
cmFkaWVudCB7bGluZWFyR3JhZGllbnR9IFtpZD0iZ3JhZDEiXSBbZ3JhZGllbnRVbml0cz1vYmpl
Y3RCb3VuZGluZ0JveF0gW3N0YXJ0PSgwLDApXSBbZW5kPSgxLDEpXQogICAgICAgICBSZW5kZXJT
VkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MC4wMF0gW2NvbG9yPSMwMDAwRkZdCkBAIC0x
NSwxNCArMTUsMTQgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgIFJlbmRl
clNWR1JlY3Qge3JlY3R9IGF0ICgwLDEwKSBzaXplIDEweDEwIFtmaWxsPXtbdHlwZT1TT0xJRF0g
W2NvbG9yPSMwMDAwRkZdfV0gW3g9MC4wMF0gW3k9MTAuMDBdIFt3aWR0aD0xMC4wMF0gW2hlaWdo
dD0xMC4wMF0KICAgICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDEwLDEwKSBzaXplIDEw
eDEwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSNGRkZGMDBdfV0gW3g9MTAuMDBdIFt5PTEw
LjAwXSBbd2lkdGg9MTAuMDBdIFtoZWlnaHQ9MTAuMDBdCiAgICAgICBSZW5kZXJTVkdSZWN0IHty
ZWN0fSBhdCAoMCwwKSBzaXplIDQwMHg1MCBbeD0wLjAwXSBbeT0wLjAwXSBbd2lkdGg9NDAwLjAw
XSBbaGVpZ2h0PTUwLjAwXQotICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDE4LDEyKSBz
aXplIDEwNHg2NiBbdHJhbnNmb3JtPXttPSgoMS4wMCwwLjAwKSgwLjAwLDEuMDApKSB0PSgyMC4w
MCwyMC4wMCl9XQotICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDE4LDEyKSBzaXplIDEw
NHg2NiBbdHJhbnNmb3JtPXttPSgoMC4yNSwwLjAwKSgwLjAwLDEuMDApKSB0PSgwLjAwLDAuMDAp
fV0gW3N0cm9rZT17W3R5cGU9TElORUFSLUdSQURJRU5UXSBbaWQ9ImdyYWQxIl0gW3N0cm9rZSB3
aWR0aD0xNS4wMF19XSBbeD0wLjAwXSBbeT0wLjAwXSBbd2lkdGg9NDAwLjAwXSBbaGVpZ2h0PTUw
LjAwXQotICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgxOCw5Mikgc2l6ZSAxMDR4NjYgW3Ry
YW5zZm9ybT17bT0oKDAuMjUsMC4wMCkoMC4wMCwxLjAwKSkgdD0oMjAuMDAsMTAwLjAwKX1dIFtz
dHJva2U9e1t0eXBlPUxJTkVBUi1HUkFESUVOVF0gW2lkPSJncmFkMiJdIFtzdHJva2Ugd2lkdGg9
MTUuMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTQwMC4wMF0gW2hlaWdodD01MC4wMF0K
LSAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDE4LDE3Mikgc2l6ZSAxMDR4NjYgW3Ry
YW5zZm9ybT17bT0oKDAuMjUsMC4wMCkoMC4wMCwxLjAwKSkgdD0oMjAuMDAsMTgwLjAwKX1dCi0g
ICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTgsMTcyKSBzaXplIDEwNHg2NiBbc3Ryb2tl
PXtbdHlwZT1QQVRURVJOXSBbaWQ9InBhdHRlcm4iXSBbc3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4
PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBdCi0gICAgUmVuZGVy
U1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgxOCwyNTIpIHNpemUgMTA0eDY2IFt0cmFuc2Zvcm09e209
KCgwLjI1LDAuMDApKDAuMDAsMS4wMCkpIHQ9KDIwLjAwLDI2MC4wMCl9XQotICAgICAgUmVuZGVy
U1ZHUmVjdCB7cmVjdH0gYXQgKDE4LDI1Mikgc2l6ZSAxMDR4NjYgW3N0cm9rZT17W3R5cGU9U09M
SURdIFtjb2xvcj0jMDA4MDAwXSBbc3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAu
MDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBdCi0gICAgUmVuZGVyU1ZHQ29udGFpbmVy
IHt1c2V9IGF0ICgxNTYsMTIpIHNpemUgMTIxeDY2IFt0cmFuc2Zvcm09e209KCgwLjI1LDAuMDAp
KDAuMjUsMS4wMCkpIHQ9KDE2MC4wMCwyMC4wMCl9XQotICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVj
dH0gYXQgKDE1NiwxMikgc2l6ZSAxMjF4NjYgW3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0j
MDA4MDAwXSBbc3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00
MDAuMDBdIFtoZWlnaHQ9NTAuMDBdCi0gICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgx
NTgsODkpIHNpemUgMTA0eDIxNyBbdHJhbnNmb3JtPXttPSgoMC4yNSwwLjM2KSgwLjAwLDEuMDAp
KSB0PSgxNjAuMDAsMTAwLjAwKX1dCi0gICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTU4
LDg5KSBzaXplIDEwNHgyMTcgW3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAwXSBb
c3Ryb2tlIHdpZHRoPTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00MDAuMDBdIFto
ZWlnaHQ9NTAuMDBdCisgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoMTIsMTIpIHNpemUg
MTE2eDY2IFt0cmFuc2Zvcm09e209KCgxLjAwLDAuMDApKDAuMDAsMS4wMCkpIHQ9KDIwLjAwLDIw
LjAwKX1dCisgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTIsMTIpIHNpemUgMTE2eDY2
IFt0cmFuc2Zvcm09e209KCgwLjI1LDAuMDApKDAuMDAsMS4wMCkpIHQ9KDAuMDAsMC4wMCl9XSBb
c3Ryb2tlPXtbdHlwZT1MSU5FQVItR1JBRElFTlRdIFtpZD0iZ3JhZDEiXSBbc3Ryb2tlIHdpZHRo
PTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9NTAuMDBd
CisgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDEyLDkyKSBzaXplIDExNng2NiBbdHJhbnNm
b3JtPXttPSgoMC4yNSwwLjAwKSgwLjAwLDEuMDApKSB0PSgyMC4wMCwxMDAuMDApfV0gW3N0cm9r
ZT17W3R5cGU9TElORUFSLUdSQURJRU5UXSBbaWQ9ImdyYWQyIl0gW3N0cm9rZSB3aWR0aD0xNS4w
MF19XSBbeD0wLjAwXSBbeT0wLjAwXSBbd2lkdGg9NDAwLjAwXSBbaGVpZ2h0PTUwLjAwXQorICAg
IFJlbmRlclNWR0NvbnRhaW5lciB7dXNlfSBhdCAoMTIsMTcyKSBzaXplIDExNng2NiBbdHJhbnNm
b3JtPXttPSgoMC4yNSwwLjAwKSgwLjAwLDEuMDApKSB0PSgyMC4wMCwxODAuMDApfV0KKyAgICAg
IFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgxMiwxNzIpIHNpemUgMTE2eDY2IFtzdHJva2U9e1t0
eXBlPVBBVFRFUk5dIFtpZD0icGF0dGVybiJdIFtzdHJva2Ugd2lkdGg9MTUuMDBdfV0gW3g9MC4w
MF0gW3k9MC4wMF0gW3dpZHRoPTQwMC4wMF0gW2hlaWdodD01MC4wMF0KKyAgICBSZW5kZXJTVkdD
b250YWluZXIge3VzZX0gYXQgKDEyLDI1Mikgc2l6ZSAxMTZ4NjYgW3RyYW5zZm9ybT17bT0oKDAu
MjUsMC4wMCkoMC4wMCwxLjAwKSkgdD0oMjAuMDAsMjYwLjAwKX1dCisgICAgICBSZW5kZXJTVkdS
ZWN0IHtyZWN0fSBhdCAoMTIsMjUyKSBzaXplIDExNng2NiBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0g
W2NvbG9yPSMwMDgwMDBdIFtzdHJva2Ugd2lkdGg9MTUuMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0g
W3dpZHRoPTQwMC4wMF0gW2hlaWdodD01MC4wMF0KKyAgICBSZW5kZXJTVkdDb250YWluZXIge3Vz
ZX0gYXQgKDEzNCwxMikgc2l6ZSAxNjV4NjYgW3RyYW5zZm9ybT17bT0oKDAuMjUsMC4wMCkoMC4y
NSwxLjAwKSkgdD0oMTYwLjAwLDIwLjAwKX1dCisgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBh
dCAoMTM0LDEyKSBzaXplIDE2NXg2NiBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDgw
MDBdIFtzdHJva2Ugd2lkdGg9MTUuMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTQwMC4w
MF0gW2hlaWdodD01MC4wMF0KKyAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDE1Miww
KSBzaXplIDExNng0ODggW3RyYW5zZm9ybT17bT0oKDAuMjUsMC4zNikoMC4wMCwxLjAwKSkgdD0o
MTYwLjAwLDEwMC4wMCl9XQorICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDE1MiwwKSBz
aXplIDExNng0ODggW3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA4MDAwXSBbc3Ryb2tl
IHdpZHRoPTE1LjAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD00MDAuMDBdIFtoZWlnaHQ9
NTAuMDBdCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctc2hhcGVzLW5vbi1zY2Fs
ZS1zdHJva2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9oaXR0
ZXN0L3N2Zy1zaGFwZXMtbm9uLXNjYWxlLXN0cm9rZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctc2hhcGVzLW5vbi1zY2FsZS1zdHJva2Ut
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACitUZXN0cyBmb3IgV0s4
MjYyOCAtIE1ha2Ugc3VyZSBoaXQgdGVzdGluZyB3b3JrcyBwcm9wZXJseSBvbiBlbGxpcHNlcywg
cmVjdHMsIGxpbmVzIGFuZCBjdXJ2ZXMgd2l0aCBub24tc2NhbGluZyBzdHJva2UuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMgYW5kIG5vICJG
QUlMIiBtZXNzYWdlcy4KKworUEFTUyBlbGxpcHNlMSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQg
KDI5LCAzNykKK1BBU1MgZWxsaXBzZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgyNzksIDM3
KQorUEFTUyBlbGxpcHNlMSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDM0LCA0OCkKK1BBU1Mg
ZWxsaXBzZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgyODQsIDQ4KQorUEFTUyBlbGxpcHNl
MSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDk0LCA3MCkKK1BBU1MgZWxsaXBzZTIgc3Ryb2tl
IGNvbnRhaW5zIHBvaW50IGF0ICgzNDQsIDcwKQorUEFTUyBlbGxpcHNlMSBzdHJva2UgY29udGFp
bnMgcG9pbnQgYXQgKDEwMCwgNzgpCitQQVNTIGVsbGlwc2UyIHN0cm9rZSBjb250YWlucyBwb2lu
dCBhdCAoMzUwLCA3OCkKK1BBU1MgZWxsaXBzZTEgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9p
bnQgYXQgKDMzLCAxOCkKK1BBU1MgZWxsaXBzZTIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9p
bnQgYXQgKDI4MywgMTgpCitQQVNTIGVsbGlwc2UxIHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBv
aW50IGF0ICg4MSwgNDkpCitQQVNTIGVsbGlwc2UyIHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBv
aW50IGF0ICgzMzEsIDQ5KQorUEFTUyBlbGxpcHNlMSBzdHJva2UgZG9lcyBub3QgY29udGFpbiBw
b2ludCBhdCAoMTI5LCA3OCkKK1BBU1MgZWxsaXBzZTIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4g
cG9pbnQgYXQgKDM3OSwgNzgpCitQQVNTIHJlY3QxIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAo
MTcyLCA0NSkKK1BBU1MgcmVjdDIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICg0MjIsIDQ1KQor
UEFTUyByZWN0MSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDE4MywgNjMpCitQQVNTIHJlY3Qy
IHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoNDMzLCA2MykKK1BBU1MgcmVjdDEgc3Ryb2tlIGNv
bnRhaW5zIHBvaW50IGF0ICgyMjAsIDgyKQorUEFTUyByZWN0MiBzdHJva2UgY29udGFpbnMgcG9p
bnQgYXQgKDQ3MCwgODIpCitQQVNTIHJlY3QxIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoMjMz
LCA5MCkKK1BBU1MgcmVjdDIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICg0ODMsIDkwKQorUEFT
UyByZWN0MSBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoMjA1LCA2OCkKK1BBU1Mg
cmVjdDIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDQ1NSwgNjgpCitQQVNTIGxp
bmUxIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoMTI3LCA5NykKK1BBU1MgbGluZTIgc3Ryb2tl
IGNvbnRhaW5zIHBvaW50IGF0ICgzNzcsIDk3KQorUEFTUyBsaW5lMSBzdHJva2UgY29udGFpbnMg
cG9pbnQgYXQgKDE3NCwgMTQ2KQorUEFTUyBsaW5lMiBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQg
KDQyNCwgMTQ2KQorUEFTUyBsaW5lMSBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAo
MTM4LCAxMzEpCitQQVNTIGxpbmUyIHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICgz
ODgsIDEzMSkKK1BBU1MgbGluZTEgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDE3
NywgMTI2KQorUEFTUyBsaW5lMiBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoNDI3
LCAxMjYpCitQQVNTIGN1cnZlMSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDI0LCAxNTkpCitQ
QVNTIGN1cnZlMiBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDI3NCwgMTU5KQorUEFTUyBjdXJ2
ZTEgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgxMDcsIDEyNikKK1BBU1MgY3VydmUyIHN0cm9r
ZSBjb250YWlucyBwb2ludCBhdCAoMzU3LCAxMjYpCitQQVNTIGN1cnZlMSBzdHJva2UgY29udGFp
bnMgcG9pbnQgYXQgKDE2OSwgMTkzKQorUEFTUyBjdXJ2ZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50
IGF0ICg0MTksIDE5MykKK1BBU1MgY3VydmUxIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoMTk1
LCAxNTkpCitQQVNTIGN1cnZlMiBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKDQ0NSwgMTU5KQor
UEFTUyBjdXJ2ZTEgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDUsIDE2NCkKK1BB
U1MgY3VydmUyIHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICgyNTUsIDE2NCkKK1BB
U1MgY3VydmUxIHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICg4MSwgMTQwKQorUEFT
UyBjdXJ2ZTIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDMzMSwgMTQwKQorUEFT
UyBjdXJ2ZTEgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDE2MSwgMTc3KQorUEFT
UyBjdXJ2ZTIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKDQxMSwgMTc3KQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctc2hhcGVzLW5vbi1zY2FsZS1zdHJva2Uu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctc2hhcGVzLW5v
bi1zY2FsZS1zdHJva2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9oaXR0
ZXN0L3N2Zy1zaGFwZXMtbm9uLXNjYWxlLXN0cm9rZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE3NSBAQAorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgor
ICA8aGVhZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgI3N2Z1Jvb3Qgewor
ICAgICAgICBtYXJnaW46IDBweDsKKyAgICAgICAgcGFkZGluZzogMHB4OworICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7IAorICAgICAgICB0b3A6IDBweDsgCisgICAgICAgIGxlZnQ6IDBweDsK
KyAgICAgIH0KKyAgICAgIC5ub25zY2FsZXRlc3QgeworICAgICAgICBzdHJva2Utd2lkdGg6IDIw
cHg7CisgICAgICAgIGZpbGw6ICNjY2M7CisgICAgICAgIGZpbGwtb3BhY2l0eTogMC40OworICAg
ICAgfQorICAgICAgI2VsbGlwc2UxLCAjZWxsaXBzZTIgeworICAgICAgICAgIHN0cm9rZTogI2Yz
MTkwMDsKKyAgICAgIH0KKyAgICAgICNsaW5lMSwgI2xpbmUyIHsKKyAgICAgICAgICBzdHJva2U6
ICMzMzY0YzI7CisgICAgICB9CisgICAgICAjcmVjdDEsICNyZWN0MiB7CisgICAgICAgICAgc3Ry
b2tlOiAjZjdkNzJiOworICAgICAgfQorICAgICAgI2N1cnZlMSwgI2N1cnZlMiB7CisgICAgICAg
ICAgc3Ryb2tlOiAjNDRjNDAwOworICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgZnVuY3Rpb24gZW50ZXIoZXZlbnQpIHsKKyAg
ICAgICAgZXZlbnQudGFyZ2V0LnNldEF0dHJpYnV0ZSgic3Ryb2tlLW9wYWNpdHkiLCAiMC40Iik7
CisgICAgICB9OworICAgICAgZnVuY3Rpb24gZXhpdChldmVudCkgeworICAgICAgICBldmVudC50
YXJnZXQuc2V0QXR0cmlidXRlKCJzdHJva2Utb3BhY2l0eSIsICIwLjciKTsKKyAgICAgIH07Cisg
ICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHA+VGVzdHMgZm9yIFdLODI2
MjggLSBNYWtlIHN1cmUgaGl0IHRlc3Rpbmcgd29ya3MgcHJvcGVybHkgb24gZWxsaXBzZXMsIHJl
Y3RzLCBsaW5lcyBhbmQgY3VydmVzIHdpdGggbm9uLXNjYWxpbmcgc3Ryb2tlLjwvcD4KKyAgICA8
cD5PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzIGFu
ZCBubyAiRkFJTCIgbWVzc2FnZXMuPC9wPgorICAgIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgor
CisgICAgPHN2ZyBpZD0ic3ZnUm9vdCIgd2lkdGg9IjUwMHB4IiBoZWlnaHQ9IjMwMHB4IiB2aWV3
Qm94PSIwIDAgNTAwIDMwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAg
ICAgIDwhLS0gVGhlIGZvbGxvd2luZyBhcmUgYWxsIHNtYWxsIGFuZCBzY2FsZWQgdXAgLS0+Cisg
ICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMCwgMCkgc2NhbGUoNSwgNSkiPgorICAgICAg
ICA8ZWxsaXBzZSBpZD0iZWxsaXBzZTEiIGNsYXNzPSJub25zY2FsZXRlc3QiIGN4PSIxMCIgY3k9
IjEwIiByeD0iMTAiIHJ5PSI1IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiIHBv
aW50ZXItZXZlbnRzPSJ2aXNpYmxlU3Ryb2tlIiBvbm1vdXNlb3Zlcj0iZW50ZXIoZXZ0KSIgb25t
b3VzZW91dD0iZXhpdChldnQpIiBzdHJva2Utb3BhY2l0eT0iMC43IiBzdHJva2UtZGFzaGFycmF5
PSIxNSwyNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CisgICAgICAgIDxyZWN0IGlkPSJyZWN0
MSIgY2xhc3M9Im5vbnNjYWxldGVzdCIgeD0iMzAiIHk9IjEwIiB3aWR0aD0iMTAiIGhlaWdodD0i
NyIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBwb2ludGVyLWV2ZW50cz0idmlz
aWJsZVN0cm9rZSIgb25tb3VzZW92ZXI9ImVudGVyKGV2dCkiIG9ubW91c2VvdXQ9ImV4aXQoZXZ0
KSIgc3Ryb2tlLW9wYWNpdHk9IjAuNyIgIHN0cm9rZS1kYXNoYXJyYXk9IjE1LDI1IiBzdHJva2Ut
bGluZWNhcD0icm91bmQiLz4KKyAgICAgICAgPHBhdGggaWQ9ImxpbmUxIiBjbGFzcz0ibm9uc2Nh
bGV0ZXN0IiBkPSJNMjAgMjAgbCAxMCAxMHoiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0
cm9rZSIgcG9pbnRlci1ldmVudHM9InZpc2libGVTdHJva2UiIG9ubW91c2VvdmVyPSJlbnRlcihl
dnQpIiBvbm1vdXNlb3V0PSJleGl0KGV2dCkiIHN0cm9rZS1vcGFjaXR5PSIwLjciIHN0cm9rZS1k
YXNoYXJyYXk9IjE1LDI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KKyAgICAgICAgPGcgdHJh
bnNmb3JtPSJ0cmFuc2xhdGUoLTYsIDEyKSI+CisgICAgICAgICAgPHBhdGggaWQ9ImN1cnZlMSIg
Y2xhc3M9Im5vbnNjYWxldGVzdCIgZD0iTTUsMjAgQzEwLDEwIDI1LDEwIDI1LDIwIFM0MCwzMCA0
MCwyMCIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBwb2ludGVyLWV2ZW50cz0i
dmlzaWJsZVN0cm9rZSIgb25tb3VzZW92ZXI9ImVudGVyKGV2dCkiIG9ubW91c2VvdXQ9ImV4aXQo
ZXZ0KSIgc3Ryb2tlLW9wYWNpdHk9IjAuNyIgc3Ryb2tlLWRhc2hhcnJheT0iMTUsMjUiIHN0cm9r
ZS1saW5lY2FwPSJyb3VuZCIvPgorICAgICAgICA8L2c+CisgICAgICA8L2c+CisgICAgICA8IS0t
IFRoZSBmb2xsb3dpbmcgYXJlIGFsbCBsYXJnZSBhbmQgc2NhbGVkIGRvd24gLS0+CisgICAgICA8
ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNzUsIDApIHNjYWxlKDAuMiwgMC4yKSI+CisgICAgICAg
IDxlbGxpcHNlIGlkPSJlbGxpcHNlMiIgY2xhc3M9Im5vbnNjYWxldGVzdCIgY3g9IjI1MCIgY3k9
IjI1MCIgcng9IjI1MCIgcnk9IjEyNSIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tl
IiBwb2ludGVyLWV2ZW50cz0idmlzaWJsZVN0cm9rZSIgb25tb3VzZW92ZXI9ImVudGVyKGV2dCki
IGNsYXNzPSJub25zY2FsZXRlc3QiIG9ubW91c2VvdXQ9ImV4aXQoZXZ0KSIgc3Ryb2tlLW9wYWNp
dHk9IjAuNyIgc3Ryb2tlLWRhc2hhcnJheT0iMTUsMjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIv
PgorICAgICAgICA8cmVjdCBpZD0icmVjdDIiIGNsYXNzPSJub25zY2FsZXRlc3QiIHg9Ijc1MCIg
eT0iMjUwIiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjE3NSIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxp
bmctc3Ryb2tlIiBwb2ludGVyLWV2ZW50cz0idmlzaWJsZVN0cm9rZSIgb25tb3VzZW92ZXI9ImVu
dGVyKGV2dCkiIG9ubW91c2VvdXQ9ImV4aXQoZXZ0KSIgc3Ryb2tlLW9wYWNpdHk9IjAuNyIgc3Ry
b2tlLWRhc2hhcnJheT0iMTUsMjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgorICAgICAgICA8
cGF0aCBpZD0ibGluZTIiIGNsYXNzPSJub25zY2FsZXRlc3QiIGQ9Ik01MDAgNTAwIGwgMjUwIDI1
MHoiIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgcG9pbnRlci1ldmVudHM9InZp
c2libGVTdHJva2UiIG9ubW91c2VvdmVyPSJlbnRlcihldnQpIiBvbm1vdXNlb3V0PSJleGl0KGV2
dCkiIHN0cm9rZS1vcGFjaXR5PSIwLjciIHN0cm9rZS1kYXNoYXJyYXk9IjE1LDI1IiBzdHJva2Ut
bGluZWNhcD0icm91bmQiLz4KKyAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE1MCwg
MzAwKSI+CisgICAgICAgICAgPHBhdGggaWQ9ImN1cnZlMiIgY2xhc3M9Im5vbnNjYWxldGVzdCIg
ZD0iTTEyNSw1MDAgQzI1MCwyNTAgNjI1LDI1MCA2MDAsNTAwIFMxMDAwLDc1MCAxMDAwLDUwMCIg
dmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBwb2ludGVyLWV2ZW50cz0idmlzaWJs
ZVN0cm9rZSIgb25tb3VzZW92ZXI9ImVudGVyKGV2dCkiIG9ubW91c2VvdXQ9ImV4aXQoZXZ0KSIg
c3Ryb2tlLW9wYWNpdHk9IjAuNyIgc3Ryb2tlLWRhc2hhcnJheT0iMTUsMjUiIHN0cm9rZS1saW5l
Y2FwPSJyb3VuZCIvPgorICAgICAgICA8L2c+CisgICAgICA8L2c+CisgICAgPC9zdmc+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgLy8gZG9jdW1lbnQuYm9keS5v
bm1vdXNlZG93biA9IGZ1bmN0aW9uKGV2dCkgeyBjb25zb2xlLmxvZygibW91c2UgZG93biBhdCAi
ICsgZXZ0LnggKyAiLCIgKyBldnQueSk7IH0KKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgICAgdmFyIHJlc3VsdFN0cmluZyA9ICIiOworICAgICAgdmFyIGVsbGlwc2UxID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImVsbGlwc2UxIik7CisgICAgICB2YXIgZWxsaXBzZTIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZWxsaXBzZTIiKTsgLy8gMjUwcHggdG8gdGhlIHJpZ2h0IG9m
IGVsbGlwc2UxCisgICAgICB2YXIgcG9pbnRzT25FbGxpcHNlMVN0cm9rZSA9IFsKKyAgICAgICAg
IHt4OiAyOSwgeTogMzd9LAorICAgICAgICAge3g6IDM0LCB5OiA0OH0sCisgICAgICAgICB7eDog
OTQsIHk6IDcwfSwKKyAgICAgICAgIHt4OiAxMDAsIHk6IDc4fQorICAgICAgXTsKKyAgICAgIHZh
ciBwb2ludHNOb3RPbkVsbGlwc2UxU3Ryb2tlID0gWworICAgICAgICAge3g6IDMzLCB5OiAxOH0s
CisgICAgICAgICB7eDogODEsIHk6IDQ5fSwKKyAgICAgICAgIHt4OiAxMjksIHk6IDc4fQorICAg
ICAgXTsKKworICAgICAgdmFyIHJlY3QxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlY3Qx
Iik7CisgICAgICB2YXIgcmVjdDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVjdDIiKTsg
Ly8gMjUwcHggdG8gdGhlIHJpZ2h0IG9mIHJlY3QxCisgICAgICB2YXIgcG9pbnRzT25SZWN0MVN0
cm9rZSA9IFsKKyAgICAgICAgIHt4OiAxNzIsIHk6IDQ1fSwKKyAgICAgICAgIHt4OiAxODMsIHk6
IDYzfSwKKyAgICAgICAgIHt4OiAyMjAsIHk6IDgyfSwKKyAgICAgICAgIHt4OiAyMzMsIHk6IDkw
fQorICAgICAgXTsKKyAgICAgIHZhciBwb2ludHNOb3RPblJlY3QxU3Ryb2tlID0gWworICAgICAg
ICAge3g6IDIwNSwgeTogNjh9CisgICAgICBdOworCisgICAgICB2YXIgbGluZTEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibGluZTEiKTsKKyAgICAgIHZhciBsaW5lMiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJsaW5lMiIpOyAvLyAyNTBweCB0byB0aGUgcmlnaHQgb2YgbGluZTEKKyAg
ICAgIHZhciBwb2ludHNPbkxpbmUxU3Ryb2tlID0gWworICAgICAgICAge3g6IDEyNywgeTogOTd9
LAorICAgICAgICAge3g6IDE3NCwgeTogMTQ2fQorICAgICAgXTsKKyAgICAgIHZhciBwb2ludHNO
b3RPbkxpbmUxU3Ryb2tlID0gWworICAgICAgICAge3g6IDEzOCwgeTogMTMxfSwKKyAgICAgICAg
IHt4OiAxNzcsIHk6IDEyNn0KKyAgICAgIF07CisKKyAgICAgIHZhciBjdXJ2ZTEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY3VydmUxIik7CisgICAgICB2YXIgY3VydmUyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImN1cnZlMiIpOyAvLyAyNTBweCB0byB0aGUgcmlnaHQgb2YgY3VydmUx
CisgICAgICB2YXIgcG9pbnRzT25DdXJ2ZTFTdHJva2UgPSBbCisgICAgICAgICB7eDogMjQsIHk6
IDE1OX0sCisgICAgICAgICB7eDogMTA3LCB5OiAxMjZ9LAorICAgICAgICAge3g6IDE2OSwgeTog
MTkzfSwKKyAgICAgICAgIHt4OiAxOTUsIHk6IDE1OX0KKyAgICAgIF07CisgICAgICB2YXIgcG9p
bnRzTm90T25DdXJ2ZTFTdHJva2UgPSBbCisgICAgICAgICB7eDogNSwgeTogMTY0fSwKKyAgICAg
ICAgIHt4OiA4MSwgeTogMTQwfSwKKyAgICAgICAgIHt4OiAxNjEsIHk6IDE3N30KKyAgICAgIF07
CisKKyAgICAgIHBvaW50c09uRWxsaXBzZTFTdHJva2UuZm9yRWFjaCggZnVuY3Rpb24ocG9pbnQp
IHsKKyAgICAgICAgdmFyIHBhc3MgPSAoZWxsaXBzZTEgPT0gZG9jdW1lbnQuZWxlbWVudEZyb21Q
b2ludChwb2ludC54LCBwb2ludC55KSk7CisgICAgICAgIHJlc3VsdFN0cmluZyArPSAoKHBhc3Mp
ID8gIlBBU1MiIDogIkZBSUwiKSArICIgZWxsaXBzZTEgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0
ICgiICsgcG9pbnQueCArICIsICIgKyBwb2ludC55ICsgIilcbiI7CisgICAgICAgIHZhciBwYXNz
ID0gKGVsbGlwc2UyID09IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocG9pbnQueCArIDI1MCwg
cG9pbnQueSkpOworICAgICAgICByZXN1bHRTdHJpbmcgKz0gKChwYXNzKSA/ICJQQVNTIiA6ICJG
QUlMIikgKyAiIGVsbGlwc2UyIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoIiArIChwb2ludC54
KzI1MCkgKyAiLCAiICsgcG9pbnQueSArICIpXG4iOworICAgICAgfSk7CisgICAgICBwb2ludHNO
b3RPbkVsbGlwc2UxU3Ryb2tlLmZvckVhY2goIGZ1bmN0aW9uKHBvaW50KSB7CisgICAgICAgIHZh
ciBwYXNzID0gKGVsbGlwc2UxICE9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocG9pbnQueCwg
cG9pbnQueSkpOworICAgICAgICByZXN1bHRTdHJpbmcgKz0gKChwYXNzKSA/ICJQQVNTIiA6ICJG
QUlMIikgKyAiIGVsbGlwc2UxIHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICgiICsg
cG9pbnQueCArICIsICIgKyBwb2ludC55ICsgIilcbiI7CisgICAgICAgIHZhciBwYXNzID0gKGVs
bGlwc2UyICE9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocG9pbnQueCArIDI1MCwgcG9pbnQu
eSkpOworICAgICAgICByZXN1bHRTdHJpbmcgKz0gKChwYXNzKSA/ICJQQVNTIiA6ICJGQUlMIikg
KyAiIGVsbGlwc2UyIHN0cm9rZSBkb2VzIG5vdCBjb250YWluIHBvaW50IGF0ICgiICsgKHBvaW50
LngrMjUwKSArICIsICIgKyBwb2ludC55ICsgIilcbiI7CisgICAgICB9KTsKKworICAgICAgcG9p
bnRzT25SZWN0MVN0cm9rZS5mb3JFYWNoKCBmdW5jdGlvbihwb2ludCkgeworICAgICAgICB2YXIg
cGFzcyA9IChyZWN0MSA9PSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50LngsIHBvaW50
LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIp
ICsgIiByZWN0MSBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKCIgKyBwb2ludC54ICsgIiwgIiAr
IHBvaW50LnkgKyAiKVxuIjsKKyAgICAgICAgdmFyIHBhc3MgPSAocmVjdDIgPT0gZG9jdW1lbnQu
ZWxlbWVudEZyb21Qb2ludChwb2ludC54ICsgMjUwLCBwb2ludC55KSk7CisgICAgICAgIHJlc3Vs
dFN0cmluZyArPSAoKHBhc3MpID8gIlBBU1MiIDogIkZBSUwiKSArICIgcmVjdDIgc3Ryb2tlIGNv
bnRhaW5zIHBvaW50IGF0ICgiICsgKHBvaW50LngrMjUwKSArICIsICIgKyBwb2ludC55ICsgIilc
biI7CisgICAgICB9KTsKKyAgICAgIHBvaW50c05vdE9uUmVjdDFTdHJva2UuZm9yRWFjaCggZnVu
Y3Rpb24ocG9pbnQpIHsKKyAgICAgICAgdmFyIHBhc3MgPSAocmVjdDEgIT0gZG9jdW1lbnQuZWxl
bWVudEZyb21Qb2ludChwb2ludC54LCBwb2ludC55KSk7CisgICAgICAgIHJlc3VsdFN0cmluZyAr
PSAoKHBhc3MpID8gIlBBU1MiIDogIkZBSUwiKSArICIgcmVjdDEgc3Ryb2tlIGRvZXMgbm90IGNv
bnRhaW4gcG9pbnQgYXQgKCIgKyBwb2ludC54ICsgIiwgIiArIHBvaW50LnkgKyAiKVxuIjsKKyAg
ICAgICAgdmFyIHBhc3MgPSAocmVjdDIgIT0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChwb2lu
dC54ICsgMjUwLCBwb2ludC55KSk7CisgICAgICAgIHJlc3VsdFN0cmluZyArPSAoKHBhc3MpID8g
IlBBU1MiIDogIkZBSUwiKSArICIgcmVjdDIgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQg
YXQgKCIgKyAocG9pbnQueCsyNTApICsgIiwgIiArIHBvaW50LnkgKyAiKVxuIjsKKyAgICAgIH0p
OworCisgICAgICBwb2ludHNPbkxpbmUxU3Ryb2tlLmZvckVhY2goIGZ1bmN0aW9uKHBvaW50KSB7
CisgICAgICAgIHZhciBwYXNzID0gKGxpbmUxID09IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQo
cG9pbnQueCwgcG9pbnQueSkpOworICAgICAgICByZXN1bHRTdHJpbmcgKz0gKChwYXNzKSA/ICJQ
QVNTIiA6ICJGQUlMIikgKyAiIGxpbmUxIHN0cm9rZSBjb250YWlucyBwb2ludCBhdCAoIiArIHBv
aW50LnggKyAiLCAiICsgcG9pbnQueSArICIpXG4iOworICAgICAgICB2YXIgcGFzcyA9IChsaW5l
MiA9PSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50LnggKyAyNTAsIHBvaW50LnkpKTsK
KyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiBs
aW5lMiBzdHJva2UgY29udGFpbnMgcG9pbnQgYXQgKCIgKyAocG9pbnQueCsyNTApICsgIiwgIiAr
IHBvaW50LnkgKyAiKVxuIjsKKyAgICAgIH0pOworICAgICAgcG9pbnRzTm90T25MaW5lMVN0cm9r
ZS5mb3JFYWNoKCBmdW5jdGlvbihwb2ludCkgeworICAgICAgICB2YXIgcGFzcyA9IChsaW5lMSAh
PSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50LngsIHBvaW50LnkpKTsKKyAgICAgICAg
cmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiBsaW5lMSBzdHJv
a2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoIiArIHBvaW50LnggKyAiLCAiICsgcG9pbnQu
eSArICIpXG4iOworICAgICAgICB2YXIgcGFzcyA9IChsaW5lMiAhPSBkb2N1bWVudC5lbGVtZW50
RnJvbVBvaW50KHBvaW50LnggKyAyNTAsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5n
ICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiBsaW5lMiBzdHJva2UgZG9lcyBub3Qg
Y29udGFpbiBwb2ludCBhdCAoIiArIChwb2ludC54KzI1MCkgKyAiLCAiICsgcG9pbnQueSArICIp
XG4iOworICAgICAgfSk7CisKKyAgICAgIHBvaW50c09uQ3VydmUxU3Ryb2tlLmZvckVhY2goIGZ1
bmN0aW9uKHBvaW50KSB7CisgICAgICAgIHZhciBwYXNzID0gKGN1cnZlMSA9PSBkb2N1bWVudC5l
bGVtZW50RnJvbVBvaW50KHBvaW50LngsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5n
ICs9ICgocGFzcykgPyAiUEFTUyIgOiAiRkFJTCIpICsgIiBjdXJ2ZTEgc3Ryb2tlIGNvbnRhaW5z
IHBvaW50IGF0ICgiICsgcG9pbnQueCArICIsICIgKyBwb2ludC55ICsgIilcbiI7CisgICAgICAg
IHZhciBwYXNzID0gKGN1cnZlMiA9PSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50Lngg
KyAyNTAsIHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFT
UyIgOiAiRkFJTCIpICsgIiBjdXJ2ZTIgc3Ryb2tlIGNvbnRhaW5zIHBvaW50IGF0ICgiICsgKHBv
aW50LngrMjUwKSArICIsICIgKyBwb2ludC55ICsgIilcbiI7CisgICAgICB9KTsKKyAgICAgIHBv
aW50c05vdE9uQ3VydmUxU3Ryb2tlLmZvckVhY2goIGZ1bmN0aW9uKHBvaW50KSB7CisgICAgICAg
IHZhciBwYXNzID0gKGN1cnZlMSAhPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHBvaW50Lngs
IHBvaW50LnkpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgocGFzcykgPyAiUEFTUyIgOiAi
RkFJTCIpICsgIiBjdXJ2ZTEgc3Ryb2tlIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgYXQgKCIgKyBw
b2ludC54ICsgIiwgIiArIHBvaW50LnkgKyAiKVxuIjsKKyAgICAgICAgdmFyIHBhc3MgPSAoY3Vy
dmUyICE9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocG9pbnQueCArIDI1MCwgcG9pbnQueSkp
OworICAgICAgICByZXN1bHRTdHJpbmcgKz0gKChwYXNzKSA/ICJQQVNTIiA6ICJGQUlMIikgKyAi
IGN1cnZlMiBzdHJva2UgZG9lcyBub3QgY29udGFpbiBwb2ludCBhdCAoIiArIChwb2ludC54KzI1
MCkgKyAiLCAiICsgcG9pbnQueSArICIpXG4iOworICAgICAgfSk7CisKKyAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0gcmVzdWx0U3RyaW5nOworICAg
IDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>