<?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>81809</bug_id>
          
          <creation_ts>2012-03-21 11:35:19 -0700</creation_ts>
          <short_desc>percentage height/width values in quirks mode are incorrectly resolved in flexbox children</short_desc>
          <delta_ts>2012-08-08 11:29:11 -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>Layout and Rendering</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>http://plexode.com/eval3/#ht=%3Ciframe%20src%3D%22data%3Atext%2Fhtml%2C%0A%3Cdiv%20style%3D&apos;height%3A%2050px&apos;%3E%0A%20%20%3Cdiv%3E%0A%20%20%20%20%3Cdiv%20style%3D&apos;min-height%3A%20100%25%3B%20background-color%3A%20blue&apos;%3Etest%3C%2Fdiv%3E%0A%20%20%3C%2Fdiv%3E%0A%3C%2Fdiv%3E%0A%3Cdiv%20style%3D&apos;height%3A%2050px&apos;%3E%0A%20%20%3Cdiv%20style%3D&apos;display%3A%20-webkit-flexbox%3B%20-webkit-flex-direction%3A%20column&apos;%3E%0A%20%20%20%20%3Cdiv%20style%3D&apos;min-height%3A%20100%25%3B%20background-color%3A%20green&apos;%3Etest%3C%2Fdiv%3E%0A%20%20%3C%2Fdiv%3E%0A%3C%2Fdiv%3E%0A%22%3E%3C%2Fiframe%3E%0A%0A%3Cdiv%20style%3D&apos;height%3A%2050px&apos;%3E%0A%20%20%3Cdiv%3E%0A%20%20%20%20%3Cdiv%20style%3D&apos;min-height%3A%20100%25%3B%20background-color%3A%20blue&apos;%3Etest%3C%2Fdiv%3E%0A%20%20%3C%2Fdiv%3E%0A%3C%2Fdiv%3E%0A%0A%3Cdiv%20style%3D&apos;height%3A%2050px&apos;%3E%0A%20%20%3Cdiv%20style%3D&apos;display%3A%20-webkit-flexbox%3B%20-webkit-flex-direction%3A%20column&apos;%3E%0A%20%20%20%20%3Cdiv%20style%3D&apos;min-height%3A%20100%25%3B%20background-color%3A%20green&apos;%3Etest%3C%2Fdiv%3E%0A%20%20%3C%2Fdiv%3E%0A%3C%2Fdiv%3E%0A&amp;ohh=1&amp;ohj=1&amp;jt=frames%5B0%5D.document.compatMode&amp;ojh=1&amp;ojj=1&amp;ms=100&amp;oth=0&amp;otj=0&amp;cex=1</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>62048</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>eric</cc>
    
    <cc>esprehn</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>ojan</cc>
    
    <cc>ssandela</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>584413</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-21 11:35:19 -0700</bug_when>
    <thetext>When computing min/max-height/width and height/width of flex children, we resolve percentage values by only looking at the flexbox size.  In quirks mode, if the flexbox size is auto, we should check parents for a definite value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585242</commentid>
    <comment_count>1</comment_count>
    <who name="SravanKumar S(:sravan)">ssandela</who>
    <bug_when>2012-03-22 07:29:36 -0700</bug_when>
    <thetext>Hi Tony, can you please elaborate?.
Are you speaking about RenderFlexibleBox?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585400</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-22 09:51:17 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Hi Tony, can you please elaborate?.
&gt; Are you speaking about RenderFlexibleBox?

Yes, this is in RenderFlexibleBox.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585468</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-22 10:48:38 -0700</bug_when>
    <thetext>Demo in the URL.

This may actually just work (the above test case with min-height seems to).  We should add tests for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688354</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-06 12:41:37 -0700</bug_when>
    <thetext>Added a few more cases to test: http://plexode.com/u/#R!*!style%3DAzframe2q%3Eb_%3C%2FdivqfZ0pxHSK-8blueOrYXR!columnTK-8grerXP)NHVL-directionrWNTmargin-bottomRrVSdisplayRLbox%3B6T%3B!ES!!(%272R%3AQPJow93)!!)bO9)G8red92)G*bN%0A(%27*50pxfL!-webkit-flexrKIlid!orangeHGminrJ0pxTmax-8yellrIborderR!3px!soQH%27q%0AMG!!SU9%27qtestr84round-colorR!r4*100%25TbackgU*heightR!n)_%0An(%3Cdiv!*2!%20~http://plexode.com/eval3/#ht=%3Ciz!*%22heightR350px%22!src%3D%22dataRtext%2Fhtml%2CW!11Z10YenO10P)%22q%3C%2Fizq%0AW!6Z6YenO6P_&amp;jt=zs%5B0%5D.document.compatMode

I agree that this is working correctly, but looking at the code I don&apos;t understand why. :( Makes me a little worried that there may be cases where it doesn&apos;t work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688404</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-06 13:48:08 -0700</bug_when>
    <thetext>Ugh. All of these are invalid due to renaming flexbox to flex. Uploading a valid test case. Still, we seem to get the height right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688405</commentid>
    <comment_count>6</comment_count>
      <attachid>156758</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-06 13:48:20 -0700</bug_when>
    <thetext>Created attachment 156758
testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688410</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-06 14:07:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Ugh. All of these are invalid due to renaming flexbox to flex. Uploading a valid test case. Still, we seem to get the height right.

Yeah, I think we just need to add some layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688419</commentid>
    <comment_count>8</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-06 14:15:21 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; Ugh. All of these are invalid due to renaming flexbox to flex. Uploading a valid test case. Still, we seem to get the height right.
&gt; 
&gt; Yeah, I think we just need to add some layout tests.

I&apos;ve found at least one bug as I&apos;ve been trying to understand this. I&apos;ll post an update once I feel that I&apos;ve found all the relevant bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688586</commentid>
    <comment_count>9</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-06 17:07:51 -0700</bug_when>
    <thetext>I&apos;ve found a few bugs and will post a patch soon. Having some weird issues with my fix. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689378</commentid>
    <comment_count>10</comment_count>
      <attachid>157004</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-07 14:23:49 -0700</bug_when>
    <thetext>Created attachment 157004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689410</commentid>
    <comment_count>11</comment_count>
      <attachid>157004</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-07 14:41:08 -0700</bug_when>
    <thetext>Comment on attachment 157004
Patch

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

&gt; Source/WebCore/rendering/RenderBox.cpp:2064
&gt; +LayoutUnit RenderBox::computeLogicalClientHeight(SizeType heightType, const Length&amp; height)

Tony originally said this didn&apos;t make sense here because it&apos;s not useful for things outside new Flexbox. What&apos;s different now?

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:817
&gt; +            return minSize;

The -1 check seems bad. Negative min/max height are illegal, so it shouldn&apos;t even be isSpecified() if it&apos;s negative. Is that a bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689454</commentid>
    <comment_count>12</comment_count>
      <attachid>157004</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-07 15:02:29 -0700</bug_when>
    <thetext>Comment on attachment 157004
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:2064
&gt;&gt; +LayoutUnit RenderBox::computeLogicalClientHeight(SizeType heightType, const Length&amp; height)
&gt; 
&gt; Tony originally said this didn&apos;t make sense here because it&apos;s not useful for things outside new Flexbox. What&apos;s different now?

I&apos;m thinking ahead to Grid, which will need this same logic for restricting to min/max sizes. The alternative for this patch would have been to pass in the RenderBox to use, which is fine (we&apos;d pass in &quot;this&quot; everwhere except in the three cases where we&apos;d pass in the flex item). But given the Grid need, I went with the simpler patch.

I&apos;m a little wary of all these methods with very similar sounding names, but I couldn&apos;t think of a great solution.

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:817
&gt;&gt; +            return minSize;
&gt; 
&gt; The -1 check seems bad. Negative min/max height are illegal, so it shouldn&apos;t even be isSpecified() if it&apos;s negative. Is that a bug?

computePercentageLogicalHeight can return -1 in some cases depending on the state of the containingBlock (e.g. in standards mode if the containing block is height:auto).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689721</commentid>
    <comment_count>13</comment_count>
      <attachid>157004</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-07 18:27:18 -0700</bug_when>
    <thetext>Comment on attachment 157004
Patch

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

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:407
&gt; +    if (isColumnFlow())
&gt; +        return child-&gt;computeLogicalClientHeight(sizeType, size);
&gt; +    return child-&gt;computeContentBoxLogicalWidth(valueForLength(size, availableSize, view()));

This looks wrong for orthogonal flows, but I guess it&apos;s what we had before.

&gt;&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:817
&gt;&gt;&gt; +            return minSize;
&gt;&gt; 
&gt;&gt; The -1 check seems bad. Negative min/max height are illegal, so it shouldn&apos;t even be isSpecified() if it&apos;s negative. Is that a bug?
&gt; 
&gt; computePercentageLogicalHeight can return -1 in some cases depending on the state of the containingBlock (e.g. in standards mode if the containing block is height:auto).

I wonder if we can remove the isSpecified() check.  I don&apos;t have a strong preference one way or another.

&gt; Source/WebCore/rendering/RenderFlexibleBox.h:88
&gt; +    LayoutUnit computeMainAxisSizeForChild(RenderBox* child, SizeType, const Length&amp; size, LayoutUnit availableSize);

Nit: I think we normally use Extent instead of Size for lengths.  I don&apos;t feel strongly about this.

&gt; LayoutTests/css3/flexbox/percentage-sizes-quirks.html:37
&gt; +&lt;script&gt;
&gt; +if (window.testRunner)
&gt; +    testRunner.dumpAsText();
&gt; +&lt;/script&gt;

Nit: I would probably print document.compatMode somewhere just to be sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690518</commentid>
    <comment_count>14</comment_count>
      <attachid>157004</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-08 10:58:41 -0700</bug_when>
    <thetext>Comment on attachment 157004
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:407
&gt;&gt; +    return child-&gt;computeContentBoxLogicalWidth(valueForLength(size, availableSize, view()));
&gt; 
&gt; This looks wrong for orthogonal flows, but I guess it&apos;s what we had before.

Good catch. Adding a FIXME for now.

&gt;&gt;&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:817
&gt;&gt;&gt;&gt; +            return minSize;
&gt;&gt;&gt; 
&gt;&gt;&gt; The -1 check seems bad. Negative min/max height are illegal, so it shouldn&apos;t even be isSpecified() if it&apos;s negative. Is that a bug?
&gt;&gt; 
&gt;&gt; computePercentageLogicalHeight can return -1 in some cases depending on the state of the containingBlock (e.g. in standards mode if the containing block is height:auto).
&gt; 
&gt; I wonder if we can remove the isSpecified() check.  I don&apos;t have a strong preference one way or another.

Seems fine to me. I suppose the minSize != -1 is redundant with the childSize&lt;minSize check since childSize is at least 0 (but the -1 check is definitely needed for maxSize).

This just means we&apos;ll need to check of the auto case first since we want that to go down a special code path for flexitems.

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.h:88
&gt;&gt; +    LayoutUnit computeMainAxisSizeForChild(RenderBox* child, SizeType, const Length&amp; size, LayoutUnit availableSize);
&gt; 
&gt; Nit: I think we normally use Extent instead of Size for lengths.  I don&apos;t feel strongly about this.

Yeah, I thought about it after the fact and was too lazy to change it. :) But you&apos;re right, I should be consistent.

&gt;&gt; LayoutTests/css3/flexbox/percentage-sizes-quirks.html:37
&gt;&gt; +&lt;/script&gt;
&gt; 
&gt; Nit: I would probably print document.compatMode somewhere just to be sure.

makes sense</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690531</commentid>
    <comment_count>15</comment_count>
      <attachid>157004</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-08 11:17:51 -0700</bug_when>
    <thetext>Comment on attachment 157004
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:817
&gt;&gt;&gt;&gt;&gt; +            return minSize;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; The -1 check seems bad. Negative min/max height are illegal, so it shouldn&apos;t even be isSpecified() if it&apos;s negative. Is that a bug?
&gt;&gt;&gt; 
&gt;&gt;&gt; computePercentageLogicalHeight can return -1 in some cases depending on the state of the containingBlock (e.g. in standards mode if the containing block is height:auto).
&gt;&gt; 
&gt;&gt; I wonder if we can remove the isSpecified() check.  I don&apos;t have a strong preference one way or another.
&gt; 
&gt; Seems fine to me. I suppose the minSize != -1 is redundant with the childSize&lt;minSize check since childSize is at least 0 (but the -1 check is definitely needed for maxSize).
&gt; 
&gt; This just means we&apos;ll need to check of the auto case first since we want that to go down a special code path for flexitems.

Actually, on closer look, the valueForLength functions all ASSERT_NOT_REACHED for intrinsic values other than FillAvailable and Auto. So, we should probably keep the checks in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690544</commentid>
    <comment_count>16</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-08 11:29:11 -0700</bug_when>
    <thetext>Committed r125055: &lt;http://trac.webkit.org/changeset/125055&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>156758</attachid>
            <date>2012-08-06 13:48:20 -0700</date>
            <delta_ts>2012-08-06 13:48:20 -0700</delta_ts>
            <desc>testcase</desc>
            <filename>scratch.html</filename>
            <type>text/html</type>
            <size>1454</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxpZnJhbWUgc3R5bGU9ImhlaWdodDozNTBweCIgc3JjPSJkYXRhOnRl
eHQvaHRtbCwKPGRpdiBzdHlsZT0naGVpZ2h0OiA1MHB4OyBtYXJnaW4tYm90dG9tOiAxMTBweCc+
CiAgPGRpdiBzdHlsZT0nYm9yZGVyOiAzcHggc29saWQgb3JhbmdlJz4KICAgIDxkaXYgc3R5bGU9
J21pbi1oZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQtY29sb3I6IGJsdWUnPnRlc3Q8L2Rpdj4KICAg
IDxkaXYgc3R5bGU9J2hlaWdodDogMTAwJTsgYmFja2dyb3VuZC1jb2xvcjogcmVkJz50ZXN0Mjwv
ZGl2PgogICAgPGRpdiBzdHlsZT0naGVpZ2h0OiAxMDBweDsgbWF4LWhlaWdodDogMTAwJTsgYmFj
a2dyb3VuZC1jb2xvcjogeWVsbG93Jz50ZXN0MzwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCjxkaXYg
c3R5bGU9J2hlaWdodDogNTBweCc+CiAgPGRpdiBzdHlsZT0nZGlzcGxheTogLXdlYmtpdC1mbGV4
OyAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGJvcmRlcjogM3B4IHNvbGlkIG9yYW5n
ZSc+CiAgICA8ZGl2IHN0eWxlPSdtaW4taGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbic+dGVzdDwvZGl2PgogICAgPGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5k
LWNvbG9yOiByZWQnPnRlc3QyPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6IDEwMHB4OyBt
YXgtaGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3cnPnRlc3QzPC9kaXY+CiAg
PC9kaXY+CjwvZGl2PgoiPjwvaWZyYW1lPgoKPGRpdiBzdHlsZT0naGVpZ2h0OiA1MHB4OyBtYXJn
aW4tYm90dG9tOiA2MHB4Jz4KICA8ZGl2IHN0eWxlPSdib3JkZXI6IDNweCBzb2xpZCBvcmFuZ2Un
PgogICAgPGRpdiBzdHlsZT0nbWluLWhlaWdodDogMTAwJTsgYmFja2dyb3VuZC1jb2xvcjogYmx1
ZSc+dGVzdDwvZGl2PgogICAgPGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kLWNv
bG9yOiByZWQnPnRlc3QyPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6IDYwcHg7IG1heC1o
ZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdyc+dGVzdDM8L2Rpdj4KICA8L2Rp
dj4KPC9kaXY+Cgo8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwcHgnPgogIDxkaXYgc3R5bGU9J2Rpc3Bs
YXk6IC13ZWJraXQtZmxleDsgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uOyBib3JkZXI6
IDNweCBzb2xpZCBvcmFuZ2UnPgogICAgPGRpdiBzdHlsZT0nbWluLWhlaWdodDogMTAwJTsgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW4nPnRlc3Q8L2Rpdj4KICAgIDxkaXYgc3R5bGU9J2hlaWdodDog
MTAwJTsgYmFja2dyb3VuZC1jb2xvcjogcmVkJz50ZXN0MjwvZGl2PgogICAgPGRpdiBzdHlsZT0n
aGVpZ2h0OiA2MHB4OyBtYXgtaGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3cn
PnRlc3QzPC9kaXY+CiAgPC9kaXY+CjwvZGl2Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157004</attachid>
            <date>2012-08-07 14:23:49 -0700</date>
            <delta_ts>2012-08-08 11:17:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81809-20120807142324.patch</filename>
            <type>text/plain</type>
            <size>17675</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdjZmQ3MzEyNzBhMjcx
YjBlODYzZjUzNzdmMjNjMzhkZDExZTNjZC4uMGVlYTc3MDBkMDc0YTFjYTJjMjczYTIxMWY4YTRj
NGNhNDVlMjUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA4LTA3ICBPamFu
IFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgcGVyY2VudGFnZSBoZWlnaHQv
d2lkdGggdmFsdWVzIGluIHF1aXJrcyBtb2RlIGFyZSBpbmNvcnJlY3RseSByZXNvbHZlZCBpbiBm
bGV4Ym94IGNoaWxkcmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MTgwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdoZW4gY29tcHV0aW5nIHBlcmNlbnRhZ2UgbG9naWNhbCBoZWlnaHRzIHdlIG5lZWQg
dG8gdXNlIHRoZSBSZW5kZXJCb3ggaGVscGVyIG1ldGhvZHMKKyAgICAgICAgdG8gbWFrZSBzdXJl
IHdlIGhhbmRsZSBhbGwgdGhlIGVkZ2UgY2FzZXMgY29ycmVjdGx5IChlLmcuIHdhbGsgdXAgdGhl
IGNvbnRhaW5pbmcgYmxvY2sKKyAgICAgICAgYW5jZXN0b3IgY2hhaW4gaW4gcXVpcmtzIG1vZGUg
dW50aWwgd2UgZmluZCBhIGRlZmluaXRlIHNpemUpLgorCisgICAgICAgIEZvciB3aWR0aHMsIHRo
ZSBjb250YWluaW5nIGJsb2NrIGFsd2F5cyBoYXMgYSBkZWZpbml0ZSBzaXplLCBzbyBhbGwgd2Ug
bmVlZCB0byBkbworICAgICAgICBpcyBjYWxsIGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRo
KHZhbHVlRm9yTGVuZ3RoKC4uLikpLCBhbHRob3VnaCBJJ20gbm90IHN1cmUKKyAgICAgICAgdGhp
cyBkb2VzIHRoZSByaWdodCB0aGluZyBmb3IgdGhlIGludHJpbnNpYyBzaXppbmcga2V5d29yZHMu
CisKKyAgICAgICAgVGVzdHM6IGNzczMvZmxleGJveC9ib3gtc2l6aW5nLW1pbi1tYXgtc2l6ZXMu
aHRtbAorICAgICAgICAgICAgICAgY3NzMy9mbGV4Ym94L3BlcmNlbnRhZ2Utc2l6ZXMtcXVpcmtz
Lmh0bWwKKyAgICAgICAgICAgICAgIGNzczMvZmxleGJveC9wZXJjZW50YWdlLXNpemVzLmh0bWwK
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbENsaWVudEhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChSZW5kZXJCb3gp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1haW5BeGlzU2l6ZUZvckNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRNYWluQXhpc0Nv
bnRlbnRFeHRlbnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJv
eDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guaDoKKwogMjAxMi0wOC0wNyAgTWFyY2VsbyBMaXJhICA8bWFyY2Vsby5s
aXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBBZGQgc3VwcG9ydCBmb3IgdGhlIEdh
bWVwYWQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDA4MDFk
YjYyZmY4OGE4MzNmNDAyN2FmNjc0MDUxYjE5ZmJkNmFlZGQuLmUwMjU1MzRhMzI2ZjE2NzJiZDBi
OWViNTcyNTkyMDI4ZjhkNTRkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0yMDYxLDYgKzIwNjEsMTQgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVM
b2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3QKICAgICBy
ZXR1cm4gbG9naWNhbEhlaWdodDsKIH0KIAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVM
b2dpY2FsQ2xpZW50SGVpZ2h0KFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVp
Z2h0KQoreworICAgIExheW91dFVuaXQgaGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0
ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoaGVpZ2h0VHlwZSwgaGVpZ2h0KTsKKyAgICBpZiAo
aGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFyID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAg
cmV0dXJuIHN0ZDo6bWF4KExheW91dFVuaXQoMCksIGNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhl
aWdodChoZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIpIC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgp
KTsKK30KKwogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdo
dFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0KQogewogICAg
IGlmIChoZWlnaHQuaXNBdXRvKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5k
ZXggYzZkMjU5Njc0ZTg3ODVjYTc2NTEyZGNiMjI1MTVhMjI1NzY0MjU1Mi4uMmRjYzNjZGM3Y2Iw
NGIyOGU5NTAwZWQ4NDc1MDhjZTMzYzhhYmVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaApAQCAtMzQyLDYgKzM0Miw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dFVuaXQgY29t
cHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoU2l6ZVR5cGUsIExheW91dFVuaXQgYXZhaWxh
YmxlTG9naWNhbFdpZHRoLCBjb25zdCBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrLCBSZW5k
ZXJSZWdpb24qLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOwog
ICAgIExheW91dFVuaXQgY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSwgY29uc3Qg
TGVuZ3RoJiBoZWlnaHQpOworICAgIExheW91dFVuaXQgY29tcHV0ZUxvZ2ljYWxDbGllbnRIZWln
aHQoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0KTsKICAgICBMYXlvdXRVbml0IGNvbXB1
dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdo
dCk7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhTaXpl
VHlwZSwgTGVuZ3RoIHdpZHRoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0aChMYXlvdXRVbml0IGxvZ2ljYWxXaWR0
aCwgYm9vbCBpbmNsdWRlTWF4V2lkdGggPSB0cnVlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IGYzYWYwYjg5NWViMTgzODI2
ZjI5ZWY0NTQ3OGE1NDk5OTRlOWEzMzguLjY5ZjExNjU3YWNkNjkzOTY2MThjZTlkYjdkNzlmODVh
M2RhMDFiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcApAQCAtNDAwLDEyICs0MDAsMTEgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJv
eDo6bWFpbkF4aXNDb250ZW50RXh0ZW50KCkKICAgICByZXR1cm4gY29udGVudExvZ2ljYWxXaWR0
aCgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTG9naWNhbENs
aWVudEhlaWdodChTaXplVHlwZSBoZWlnaHRUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCkKK0xh
eW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc1NpemVGb3JDaGlsZChS
ZW5kZXJCb3gqIGNoaWxkLCBTaXplVHlwZSBzaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBzaXplLCBM
YXlvdXRVbml0IGF2YWlsYWJsZVNpemUpCiB7Ci0gICAgTGF5b3V0VW5pdCBoZWlnaHRJbmNsdWRp
bmdTY3JvbGxiYXIgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyhoZWlnaHRUeXBl
LCBoZWlnaHQpOwotICAgIGlmIChoZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIgPT0gLTEpCi0gICAg
ICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gc3RkOjptYXgoTGF5b3V0VW5pdCgwKSwgY29tcHV0
ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhcikgLSBzY3Jv
bGxiYXJMb2dpY2FsSGVpZ2h0KCkpOworICAgIGlmIChpc0NvbHVtbkZsb3coKSkKKyAgICAgICAg
cmV0dXJuIGNoaWxkLT5jb21wdXRlTG9naWNhbENsaWVudEhlaWdodChzaXplVHlwZSwgc2l6ZSk7
CisgICAgcmV0dXJuIGNoaWxkLT5jb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aCh2YWx1ZUZv
ckxlbmd0aChzaXplLCBhdmFpbGFibGVTaXplLCB2aWV3KCkpKTsKIH0KIAogV3JpdGluZ01vZGUg
UmVuZGVyRmxleGlibGVCb3g6OnRyYW5zZm9ybWVkV3JpdGluZ01vZGUoKSBjb25zdApAQCAtNjA0
LDkgKzYwMyw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZE1haW5B
eGlzQ29udGVudEV4dGVudEZvckNoaWxkKFJlbmRlckJveCoKICAgICAgICAgTGF5b3V0VW5pdCBt
YWluQXhpc0V4dGVudCA9IGhhc09ydGhvZ29uYWxGbG93KGNoaWxkKSA/IGNoaWxkLT5sb2dpY2Fs
SGVpZ2h0KCkgOiBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CiAgICAgICAgIHJl
dHVybiBtYWluQXhpc0V4dGVudCAtIG1haW5BeGlzQm9yZGVyQW5kUGFkZGluZ0V4dGVudEZvckNo
aWxkKGNoaWxkKTsKICAgICB9Ci0gICAgTGF5b3V0VW5pdCBleHRlbnQgPSBtaW5pbXVtVmFsdWVG
b3JMZW5ndGgoZmxleEJhc2lzLCBtYWluQXhpc0NvbnRlbnRFeHRlbnQoKSwgdmlldygpKTsKLSAg
ICBleHRlbnQgPSBpc0NvbHVtbkZsb3coKSA/IGNoaWxkLT5jb21wdXRlQ29udGVudEJveExvZ2lj
YWxIZWlnaHQoZXh0ZW50KSA6IGNoaWxkLT5jb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChl
eHRlbnQpOwotICAgIHJldHVybiBzdGQ6Om1heChMYXlvdXRVbml0KDApLCBleHRlbnQpOworICAg
IHJldHVybiBzdGQ6Om1heChMYXlvdXRVbml0KDApLCBjb21wdXRlTWFpbkF4aXNTaXplRm9yQ2hp
bGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUsIGZsZXhCYXNpcywgbWFpbkF4aXNDb250ZW50
RXh0ZW50KCkpKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUF2
YWlsYWJsZUZyZWVTcGFjZShMYXlvdXRVbml0IHByZWZlcnJlZE1haW5BeGlzRXh0ZW50KQpAQCAt
ODA1LDI0ICs4MDIsMjUgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bGluZUJyZWFr
TGVuZ3RoKCkKIAogTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXpl
Rm9yTWluQW5kTWF4KFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQgY2hpbGRTaXplLCBMYXlv
dXRVbml0IGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KQogeworICAgIC8vIEZJWE1FOiBT
dXBwb3J0IG1pbi9tYXggc2l6ZXMgb2YgZml0LWNvbnRlbnQsIG1heC1jb250ZW50IGFuZCBmaWxs
LWF2YWlsYWJsZS4KICAgICBMZW5ndGggbWF4ID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQt
PnN0eWxlKCktPm1heFdpZHRoKCkgOiBjaGlsZC0+c3R5bGUoKS0+bWF4SGVpZ2h0KCk7Ci0gICAg
TGVuZ3RoIG1pbiA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0
aCgpIDogY2hpbGQtPnN0eWxlKCktPm1pbkhlaWdodCgpOwotICAgIFJlbmRlclZpZXcqIHJlbmRl
clZpZXcgPSB2aWV3KCk7Ci0gICAgLy8gRklYTUU6IHZhbHVlRm9yTGVuZ3RoIGlzbid0IHF1aXRl
IHJpZ2h0IGluIHF1aXJrcyBtb2RlOiBwZXJjZW50YWdlIGhlaWdodHMgc2hvdWxkIGNoZWNrIHBh
cmVudHMgdW50aWwgYSB2YWx1ZSBpcyBmb3VuZC4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE4MDkKLSAgICBpZiAobWF4LmlzU3BlY2lmaWVkKCkgJiYg
Y2hpbGRTaXplID4gdmFsdWVGb3JMZW5ndGgobWF4LCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4
dGVudCwgcmVuZGVyVmlldykpCi0gICAgICAgIGNoaWxkU2l6ZSA9IHZhbHVlRm9yTGVuZ3RoKG1h
eCwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQsIHJlbmRlclZpZXcpOwotCi0gICAgaWYg
KG1pbi5pc1NwZWNpZmllZCgpICYmIGNoaWxkU2l6ZSA8IHZhbHVlRm9yTGVuZ3RoKG1pbiwgZmxl
eGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQsIHJlbmRlclZpZXcpKQotICAgICAgICByZXR1cm4g
dmFsdWVGb3JMZW5ndGgobWluLCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCwgcmVuZGVy
Vmlldyk7CisgICAgaWYgKG1heC5pc1NwZWNpZmllZCgpKSB7CisgICAgICAgIExheW91dFVuaXQg
bWF4U2l6ZSA9IGNvbXB1dGVNYWluQXhpc1NpemVGb3JDaGlsZChjaGlsZCwgTWF4U2l6ZSwgbWF4
LCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCk7CisgICAgICAgIGlmIChtYXhTaXplICE9
IC0xICYmIGNoaWxkU2l6ZSA+IG1heFNpemUpCisgICAgICAgICAgICBjaGlsZFNpemUgPSBtYXhT
aXplOworICAgIH0KIAotICAgIC8vIEZJWE1FOiBTdXBwb3J0IG1pbi9tYXggc2l6ZXMgb2YgZml0
LWNvbnRlbnQsIG1heC1jb250ZW50IGFuZCBmaWxsLWF2YWlsYWJsZS4KLSAgICBpZiAobWluLmlz
QXV0bygpKSB7CisgICAgTGVuZ3RoIG1pbiA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5z
dHlsZSgpLT5taW5XaWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPm1pbkhlaWdodCgpOworICAgIGlm
IChtaW4uaXNTcGVjaWZpZWQoKSkgeworICAgICAgICBMYXlvdXRVbml0IG1pblNpemUgPSBjb21w
dXRlTWFpbkF4aXNTaXplRm9yQ2hpbGQoY2hpbGQsIE1pblNpemUsIG1pbiwgZmxleGJveEF2YWls
YWJsZUNvbnRlbnRFeHRlbnQpOworICAgICAgICBpZiAobWluU2l6ZSAhPSAtMSAmJiBjaGlsZFNp
emUgPCBtaW5TaXplKQorICAgICAgICAgICAgcmV0dXJuIG1pblNpemU7CisgICAgfSBlbHNlIGlm
IChtaW4uaXNBdXRvKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBiZSBhZGp1c3Rp
bmcgdGhpcyB2YWx1ZSBmb3IgYm94LXNpemluZzogYm9yZGVyLWJveD8KICAgICAgICAgTGF5b3V0
VW5pdCBtaW5Db250ZW50ID0gaGFzT3J0aG9nb25hbEZsb3coY2hpbGQpID8gY2hpbGQtPmxvZ2lj
YWxIZWlnaHQoKSA6IGNoaWxkLT5taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKICAgICAgICAg
bWluQ29udGVudCAtPSBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnRGb3JDaGlsZChjaGls
ZCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUsIG1pbkNvbnRlbnQpOwogICAg
IH0KLQogICAgIHJldHVybiBjaGlsZFNpemU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggNjI0ZWYxNjZiNTQzZDg4OTVlYzMxNTI0MTE0
NmZjMTUyMWM1MDYzOC4uYjYyZGEzZWMyNGRiMzg5MjkzMjA0YTIzOWUwZWNmOTdhYTQwNGUxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTg1
LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IG1haW5BeGlzRXh0ZW50KCkgY29u
c3Q7CiAgICAgTGF5b3V0VW5pdCBjcm9zc0F4aXNDb250ZW50RXh0ZW50KCkgY29uc3Q7CiAgICAg
TGF5b3V0VW5pdCBtYWluQXhpc0NvbnRlbnRFeHRlbnQoKTsKLSAgICBMYXlvdXRVbml0IGNvbXB1
dGVMb2dpY2FsQ2xpZW50SGVpZ2h0KFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCk7Cisg
ICAgTGF5b3V0VW5pdCBjb21wdXRlTWFpbkF4aXNTaXplRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGls
ZCwgU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgc2l6ZSwgTGF5b3V0VW5pdCBhdmFpbGFibGVTaXpl
KTsKICAgICBXcml0aW5nTW9kZSB0cmFuc2Zvcm1lZFdyaXRpbmdNb2RlKCkgY29uc3Q7CiAgICAg
TGF5b3V0VW5pdCBmbG93QXdhcmVCb3JkZXJTdGFydCgpIGNvbnN0OwogICAgIExheW91dFVuaXQg
Zmxvd0F3YXJlQm9yZGVyRW5kKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDZkZDU1MzM4MzY4ZDg3MWVhYmE0
OTc2ZWYyODZjYTQ3ZWJiOWU1OC4uNDQ3MGZmOTlkZWRmZDBiYWU3MWUwMDg1NTQyODk3MDJkYjNh
ZWRhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA4LTA3ICBPamFuIFZhZmFpICA8b2ph
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgcGVyY2VudGFnZSBoZWlnaHQvd2lkdGggdmFsdWVz
IGluIHF1aXJrcyBtb2RlIGFyZSBpbmNvcnJlY3RseSByZXNvbHZlZCBpbiBmbGV4Ym94IGNoaWxk
cmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTgw
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3Nz
My9mbGV4Ym94L2JveC1zaXppbmctbWluLW1heC1zaXplcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGNzczMvZmxleGJveC9ib3gtc2l6aW5nLW1pbi1tYXgtc2l6ZXMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogY3NzMy9mbGV4Ym94L3BlcmNlbnRhZ2Utc2l6ZXMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZsZXhib3gvcGVyY2VudGFnZS1zaXplcy1xdWlya3Mt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZsZXhib3gvcGVyY2VudGFnZS1z
aXplcy1xdWlya3MuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy9mbGV4Ym94L3BlcmNlbnRh
Z2Utc2l6ZXMuaHRtbDogQWRkZWQuCisKIDIwMTItMDgtMDcgIE1hcmNlbG8gTGlyYSAgPG1hcmNl
bG8ubGlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0gQWRkIHN1cHBvcnQgZm9yIHRo
ZSBHYW1lcGFkIEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9mbGV4Ym94L2JveC1z
aXppbmctbWluLW1heC1zaXplcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhi
b3gvYm94LXNpemluZy1taW4tbWF4LXNpemVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGUw
MzUyNTE1NWMxYmQyY2Q2NDg1ZGUyMzVlZGI0MmQ1NGFmYTFmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY3NzMy9mbGV4Ym94L2JveC1zaXppbmctbWluLW1heC1zaXplcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyIEBACitQQVNTCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jc3MzL2ZsZXhib3gvYm94LXNpemluZy1taW4tbWF4LXNpemVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9jc3MzL2ZsZXhib3gvYm94LXNpemluZy1taW4tbWF4LXNpemVzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjQ5YTY1YTlkNzQwMjdkNGE0NmYyMjgyY2U5MmFiNWVlNjExNDI1NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9ib3gtc2l6aW5nLW1pbi1tYXgtc2l6ZXMuaHRt
bApAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgorLmZs
ZXhib3ggeworICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiB0ZWFsOworfQorLmZsZXhib3ggPiBkaXYgeworICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7
Cit9CisuY29sdW1uIHsKKyAgICAtd2Via2l0LWZsZXgtZmxvdzogY29sdW1uOworfQorPC9zdHls
ZT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvY2hlY2st
bGF5b3V0LmpzIj48L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQoJy5mbGV4Ym94
JykiPgorCis8ZGl2IGNsYXNzPSJmbGV4Ym94Ij4KKyAgICA8ZGl2IHN0eWxlPSJib3JkZXI6IDVw
eCBzb2xpZCBvcmFuZ2U7IHBhZGRpbmc6IDVweDsgbWF4LXdpZHRoOiAzMHB4OyB3aWR0aDogNDBw
eDsiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MzA+PC9kaXY+CisgICAgPGRpdiBzdHlsZT0iYm9yZGVy
OiA1cHggc29saWQgb3JhbmdlOyBwYWRkaW5nOiA1cHg7IG1pbi13aWR0aDogMzBweDsgd2lkdGg6
IDEwcHg7IiBkYXRhLWV4cGVjdGVkLXdpZHRoPTMwPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xh
c3M9ImZsZXhib3ggY29sdW1uIj4KKyAgICA8ZGl2IHN0eWxlPSJib3JkZXI6IDVweCBzb2xpZCBv
cmFuZ2U7IHBhZGRpbmc6IDVweDsgbWF4LWhlaWdodDogMzBweDsgaGVpZ2h0OiA0MHB4OyIgZGF0
YS1leHBlY3RlZC1oZWlnaHQ9MzA+PC9kaXY+CisgICAgPGRpdiBzdHlsZT0iYm9yZGVyOiA1cHgg
c29saWQgb3JhbmdlOyBwYWRkaW5nOiA1cHg7IG1pbi1oZWlnaHQ6IDMwcHg7IGhlaWdodDogMTBw
eDsiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PTMwPjwvZGl2PgorPC9kaXY+CisKKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9wZXJjZW50YWdlLXNp
emVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9wZXJjZW50YWdlLXNp
emVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjE5NjZkMDMwODJhYmYwNjdmZmFjMTI5NWM0
ZDJjYmM3MTk4NWU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9mbGV4Ym94
L3BlcmNlbnRhZ2Utc2l6ZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorUEFTUworUEFT
UworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzMy9mbGV4Ym94L3BlcmNlbnRhZ2Utc2l6ZXMtcXVpcmtzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2NzczMvZmxleGJveC9wZXJjZW50YWdlLXNpemVzLXF1aXJrcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDRhNTllMmMyNDIxZGRmMjQ2MmEzMTczMGMyMjVmYjhjZWZkNjlm
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9wZXJjZW50YWdl
LXNpemVzLXF1aXJrcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitQQVNTCitQQVNTCitQ
QVNTCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvcGVyY2VudGFn
ZS1zaXplcy1xdWlya3MuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9wZXJjZW50YWdl
LXNpemVzLXF1aXJrcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MTNiYWYzNTJmMzgxYjNlODI5ZTI5Y2Vk
YzI0MjIyYzcyNmQxOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhi
b3gvcGVyY2VudGFnZS1zaXplcy1xdWlya3MuaHRtbApAQCAtMCwwICsxLDcxIEBACis8c3R5bGU+
CisuZmxleGJveCB7CisgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OworfQorLmNvbHVtbiB7Cisg
ICAgaGVpZ2h0OiA1MHB4OworfQorLnJvdyB7CisgICAgd2lkdGg6IDUwcHg7Cit9CisuY29udGFp
bmVyID4gZGl2IHsKKyAgICBvdXRsaW5lOiAycHggc29saWQgYmx1ZTsKK30KKy5yb3cgPiBkaXYg
PiBkaXYgeworICAgIGhlaWdodDogMjBweDsKKyAgICAtd2Via2l0LWZsZXg6IDAgMCBhdXRvOwor
fQorLmNvbHVtbiA+IC5mbGV4Ym94IHsKKyAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1
bW47Cit9CisuY29udGFpbmVyID4gZGl2ID4gOm50aC1jaGlsZCgxKSB7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogb3JhbmdlOworfQorLmNvbnRhaW5lciA+IGRpdiA+IDpudGgtY2hpbGQoMikgewor
ICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKK30KKy5jb250YWluZXIgPiBkaXYgPiA6bnRo
LWNoaWxkKDMpIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzYWxtb247Cit9CisuY29udGFpbmVy
ID4gZGl2ID4gOm50aC1jaGlsZCg0KSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcHVycGxlOwor
fQorPC9zdHlsZT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvY2hlY2stbGF5b3V0LmpzIj48L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQo
Jy5mbGV4Ym94JykiPgorCis8ZGl2IGNsYXNzPSJjb250YWluZXIgcm93Ij4KKyAgICA8ZGl2IGNs
YXNzPSJmbGV4Ym94Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0nd2lkdGg6IDEwcHg7IG1pbi13aWR0
aDogNTAlOycgZGF0YS1leHBlY3RlZC13aWR0aD0yNT48L2Rpdj4KKyAgICAgICAgPGRpdiBzdHls
ZT0nd2lkdGg6IDUwJTsnIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MjU+PC9kaXY+CisgICAgICAgIDxk
aXYgc3R5bGU9J3dpZHRoOiAxMHB4OyBtYXgtd2lkdGg6IDUwJTsnIGRhdGEtZXhwZWN0ZWQtd2lk
dGg9MTA+PC9kaXY+CisgICAgICAgIDxkaXYgc3R5bGU9J21pbi13aWR0aDogMTBweDsgd2lkdGg6
IDEwMHB4OyBtYXgtd2lkdGg6IDUwJTsnIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MjU+PC9kaXY+Cisg
ICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY29udGFpbmVyIGNvbHVtbiIgc3R5bGU9
J21hcmdpbi1ib3R0b206IDUwcHgnPgorICAgIDxkaXYgY2xhc3M9ImZsZXhib3giPgorICAgICAg
ICA8ZGl2IHN0eWxlPSdoZWlnaHQ6IDEwcHg7IG1pbi1oZWlnaHQ6IDUwJTsnIGRhdGEtZXhwZWN0
ZWQtaGVpZ2h0PTI1PjwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwJTsnIGRh
dGEtZXhwZWN0ZWQtaGVpZ2h0PTI1PjwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6
IDEwcHg7IG1heC1oZWlnaHQ6IDUwJTsnIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PTEwPjwvZGl2Pgor
ICAgICAgICA8ZGl2IHN0eWxlPSdtaW4taGVpZ2h0OiAxMHB4OyBoZWlnaHQ6IDEwMHB4OyBtYXgt
aGVpZ2h0OiA1MCU7JyBkYXRhLWV4cGVjdGVkLWhlaWdodD0yNT48L2Rpdj4KKyAgICA8L2Rpdj4K
KzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjb250YWluZXIgcm93Ij4KKyAgICA8ZGl2IGNsYXNzPSJm
bGV4Ym94Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0iLXdlYmtpdC1mbGV4OiAwIDAgNTAlIiBkYXRh
LWV4cGVjdGVkLXdpZHRoPTI1PjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xh
c3M9ImNvbnRhaW5lciBjb2x1bW4iPgorICAgIDxkaXYgY2xhc3M9ImZsZXhib3giPgorICAgICAg
ICA8ZGl2IHN0eWxlPSItd2Via2l0LWZsZXg6IDAgMCA1MCUiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0
PTI1PjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvZmxleGJveC9wZXJjZW50YWdlLXNpemVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9jc3MzL2ZsZXhib3gvcGVyY2VudGFnZS1zaXplcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2MTlkNTY0
YjFmZDFhYzI5YjIyZDgzMzllYzVkNDdlMmJjNzBiNDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9jc3MzL2ZsZXhib3gvcGVyY2VudGFnZS1zaXplcy5odG1sCkBAIC0wLDAgKzEsMTA0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzdHlsZT4KKy5mbGV4Ym94IHsKKyAgICBkaXNwbGF5OiAt
d2Via2l0LWZsZXg7Cit9CisuY29sdW1uLCAuY29sdW1uIC5maXhlZCB7CisgICAgaGVpZ2h0OiA1
MHB4OworfQorLnJvdywgLnJvdyAuZml4ZWQgeworICAgIHdpZHRoOiA1MHB4OworfQorLmNvbnRh
aW5lciA+IGRpdiB7CisgICAgb3V0bGluZTogMnB4IHNvbGlkIGJsdWU7Cit9Cisucm93ID4gZGl2
ID4gZGl2IHsKKyAgICBoZWlnaHQ6IDIwcHg7Cit9CisuZmxleGJveCA+IGRpdiB7CisgICAgLXdl
YmtpdC1mbGV4OiAwIDAgYXV0bzsKK30KKy5jb2x1bW4gPiAuZmxleGJveCB7CisgICAgLXdlYmtp
dC1mbGV4LWRpcmVjdGlvbjogY29sdW1uOworfQorLmNvbnRhaW5lciA+IGRpdiA+IDpudGgtY2hp
bGQoMSkgeworICAgIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsKK30KKy5jb250YWluZXIgPiBk
aXYgPiA6bnRoLWNoaWxkKDIpIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Cit9Cisu
Y29udGFpbmVyID4gZGl2ID4gOm50aC1jaGlsZCgzKSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
c2FsbW9uOworfQorLmNvbnRhaW5lciA+IGRpdiA+IDpudGgtY2hpbGQoNCkgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IHB1cnBsZTsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2NoZWNrLWxheW91dC5qcyI+PC9zY3JpcHQ+Cis8Ym9k
eSBvbmxvYWQ9ImNoZWNrTGF5b3V0KCcuZmxleGJveCcpIj4KKworPGRpdiBjbGFzcz0iY29udGFp
bmVyIHJvdyI+CisgICAgPGRpdiBjbGFzcz0iZmxleGJveCI+CisgICAgICAgIDxkaXYgc3R5bGU9
J3dpZHRoOiAxMHB4OyBtaW4td2lkdGg6IDUwJTsnIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MjU+PC9k
aXY+CisgICAgICAgIDxkaXYgc3R5bGU9J3dpZHRoOiA1MCU7JyBkYXRhLWV4cGVjdGVkLXdpZHRo
PTI1PjwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxlPSd3aWR0aDogMTBweDsgbWF4LXdpZHRoOiA1
MCU7JyBkYXRhLWV4cGVjdGVkLXdpZHRoPTEwPjwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxlPSdt
aW4td2lkdGg6IDEwcHg7IHdpZHRoOiAxMDBweDsgbWF4LXdpZHRoOiA1MCU7JyBkYXRhLWV4cGVj
dGVkLXdpZHRoPTI1PjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNv
bnRhaW5lciByb3ciIHN0eWxlPSd3aWR0aDogMTAwcHgnPgorICAgIDxkaXYgY2xhc3M9ImZsZXhi
b3ggZml4ZWQiPgorICAgICAgICA8ZGl2IHN0eWxlPSd3aWR0aDogMTBweDsgbWluLXdpZHRoOiA1
MCU7JyBkYXRhLWV4cGVjdGVkLXdpZHRoPTI1PjwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxlPSd3
aWR0aDogNTAlOycgZGF0YS1leHBlY3RlZC13aWR0aD0yNT48L2Rpdj4KKyAgICAgICAgPGRpdiBz
dHlsZT0nd2lkdGg6IDEwcHg7IG1heC13aWR0aDogNTAlOycgZGF0YS1leHBlY3RlZC13aWR0aD0x
MD48L2Rpdj4KKyAgICAgICAgPGRpdiBzdHlsZT0nbWluLXdpZHRoOiAxMHB4OyB3aWR0aDogMTAw
cHg7IG1heC13aWR0aDogNTAlOycgZGF0YS1leHBlY3RlZC13aWR0aD0yNT48L2Rpdj4KKyAgICA8
L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjb250YWluZXIgY29sdW1uIiBzdHlsZT0nbWFy
Z2luLWJvdHRvbTogMTAwcHgnPgorICAgIDxkaXYgY2xhc3M9ImZsZXhib3giIHN0eWxlPSJoZWln
aHQ6IGF1dG8iPgorICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6IDEwcHg7IG1pbi1oZWlnaHQ6
IDUwJTsnIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PTEwPjwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxl
PSdoZWlnaHQ6IDUwJTsnIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PTA+PC9kaXY+CisgICAgICAgIDxk
aXYgc3R5bGU9J2hlaWdodDogMTBweDsgbWF4LWhlaWdodDogNTAlOycgZGF0YS1leHBlY3RlZC1o
ZWlnaHQ9MTA+PC9kaXY+CisgICAgICAgIDxkaXYgc3R5bGU9J21pbi1oZWlnaHQ6IDEwcHg7IGhl
aWdodDogMTAwcHg7IG1heC1oZWlnaHQ6IDUwJTsnIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PTEwMD48
L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjb250YWluZXIgY29sdW1u
Ij4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4Ym94IGZpeGVkIj4KKyAgICAgICAgPGRpdiBzdHlsZT0n
aGVpZ2h0OiAxMHB4OyBtaW4taGVpZ2h0OiA1MCU7JyBkYXRhLWV4cGVjdGVkLWhlaWdodD0yNT48
L2Rpdj4KKyAgICAgICAgPGRpdiBzdHlsZT0naGVpZ2h0OiA1MCU7JyBkYXRhLWV4cGVjdGVkLWhl
aWdodD0yNT48L2Rpdj4KKyAgICAgICAgPGRpdiBzdHlsZT0naGVpZ2h0OiAxMHB4OyBtYXgtaGVp
Z2h0OiA1MCU7JyBkYXRhLWV4cGVjdGVkLWhlaWdodD0xMD48L2Rpdj4KKyAgICAgICAgPGRpdiBz
dHlsZT0nbWluLWhlaWdodDogMTBweDsgaGVpZ2h0OiAxMDBweDsgbWF4LWhlaWdodDogNTAlOycg
ZGF0YS1leHBlY3RlZC1oZWlnaHQ9MjU+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRp
diBjbGFzcz0iY29udGFpbmVyIHJvdyI+CisgICAgPGRpdiBjbGFzcz0iZmxleGJveCI+CisgICAg
ICAgIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxleDogMCAwIDUwJSIgZGF0YS1leHBlY3RlZC13aWR0
aD0yNT48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjb250YWluZXIg
Y29sdW1uIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4Ym94Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
LXdlYmtpdC1mbGV4OiAwIDAgNTAlIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0wPjwvZGl2PgorICAg
IDwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNvbnRhaW5lciByb3ciPgorICAgIDxkaXYg
Y2xhc3M9ImZsZXhib3ggZml4ZWQiPgorICAgICAgICA8ZGl2IHN0eWxlPSItd2Via2l0LWZsZXg6
IDAgMCA1MCUiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MjU+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rp
dj4KKworPGRpdiBjbGFzcz0iY29udGFpbmVyIGNvbHVtbiI+CisgICAgPGRpdiBjbGFzcz0iZmxl
eGJveCBmaXhlZCI+CisgICAgICAgIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxleDogMCAwIDUwJSIg
ZGF0YS1leHBlY3RlZC1oZWlnaHQ9MjU+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPC9i
b2R5Pgo=
</data>
<flag name="review"
          id="166810"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>