<?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>6838</bug_id>
          
          <creation_ts>2006-01-26 05:25:58 -0800</creation_ts>
          <short_desc>Incomplete repaint of collapsed table borders</short_desc>
          <delta_ts>2006-05-20 00:38:14 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>6888</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>bdakin</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>30084</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-01-26 05:25:58 -0800</bug_when>
    <thetext>See the attached testcase. All tables in the testcase have border-collapse: collapse and border: 8px solid. The Test buttons make changes that require some or all of the table&apos;s border to be repainted, yet only the inner 4 pixels paint. To force repaint, switch to another tab and go back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30085</commentid>
    <comment_count>1</comment_count>
      <attachid>5987</attachid>
    <who name="">mitz</who>
    <bug_when>2006-01-26 05:26:59 -0800</bug_when>
    <thetext>Created attachment 5987
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30097</commentid>
    <comment_count>2</comment_count>
      <attachid>5990</attachid>
    <who name="">mitz</who>
    <bug_when>2006-01-26 09:50:26 -0800</bug_when>
    <thetext>Created attachment 5990
Basis for a possible fix

I&apos;m not sure this is the right approach. If it is, then the margin overflow dimensions should probably be cached by the table and the FIXMEs should be addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30312</commentid>
    <comment_count>3</comment_count>
      <attachid>5990</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-27 08:50:32 -0800</bug_when>
    <thetext>Comment on attachment 5990
Basis for a possible fix

I&apos;m disappointed we have to add so much new code, but it looks pretty good to me. Is there any way to share more of this? Should we invent a structure that holds the four separate widths so it can be a single function instead of 4?

I believe you forgot to mark the functions virtual.

+    const BorderValue sb = style()-&gt;borderRight();

We normally don&apos;t mark local variables const.

+    return int(borderWidth / 2.0 + 0.5);

Can be done more efficiently by doing (borderWidth + 1) / 2. This idiom comes up multiple times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30416</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-01-28 12:54:14 -0800</bug_when>
    <thetext>I&apos;ve run into another problem: if you Select All in the testcase, the selection highlight eats into the last table&apos;s border. (I wonder why that table&apos;s contents aren&apos;t selected btw).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32219</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-02-12 01:08:38 -0800</bug_when>
    <thetext>Note that our implementation of collapsed table borders no longer matches the spec.  The spec actually changed.

&quot;UAs must compute an initial left and right border width for the table by examining the first and last cells in the first row of the table. The left border width of the table is half of the first cell&apos;s collapsed left border, and the right border width of the table is half of the last cell&apos;s collapsed right border. If subsequent rows have larger collapsed left and right borders, then any excess spills into the margin area of the table.

The top border width of the table is computed by examining all cells who collapse their top borders with the top border of the table. The top border width of the table is equal to half of the maximum collapsed top border. The bottom border width is computed by examining all cells whose bottom borders collapse with the bottom of the table. The bottom border width is equal to half of the maximum collapsed bottom border.&quot;

So top/bottom collapsed border overflow is no longer possible, and left/right overflow becomes extremely unlikely with these changes.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39138</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-04-13 06:41:28 -0700</bug_when>
    <thetext>Going to try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39269</commentid>
    <comment_count>7</comment_count>
      <attachid>7701</attachid>
    <who name="">mitz</who>
    <bug_when>2006-04-14 09:40:33 -0700</bug_when>
    <thetext>Created attachment 7701
Patch

This patch implements the updated spec. Some notes:
1. It might be better to cache outerBorderLeft/Right/Top/Bottom in RenderTable as well.
2. The spec says &quot;CSS 2.1 does not define where the edge of a background on a table element lies&quot; but I tried to maintain the current behavior. It works with solid backgrounds but image backgrounds are positioned differently, and I am not sure how to fix it.
3. The patch causes 43 layout tests to fail. With the exception of pixel failures due to (2) above, the new layouts look correct to me.
4. Some failures are due to the dump showing &quot;[border: none]&quot; due to the fact that a table has a non-zero border but its own border-width property is zero.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39590</commentid>
    <comment_count>8</comment_count>
      <attachid>7701</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-04-18 00:02:24 -0700</bug_when>
    <thetext>Comment on attachment 7701
Patch

This looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39591</commentid>
    <comment_count>9</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-04-18 00:03:31 -0700</bug_when>
    <thetext>Can you provide a testcase that illustrates an example where the image background changes? (Maybe include screenshots).  We should probably understand that different before we land anything.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39592</commentid>
    <comment_count>10</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-04-18 00:03:58 -0700</bug_when>
    <thetext>difference. :)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39598</commentid>
    <comment_count>11</comment_count>
      <attachid>7797</attachid>
    <who name="">mitz</who>
    <bug_when>2006-04-18 04:14:52 -0700</bug_when>
    <thetext>Created attachment 7797
Table background test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39599</commentid>
    <comment_count>12</comment_count>
      <attachid>7798</attachid>
    <who name="">mitz</who>
    <bug_when>2006-04-18 04:15:16 -0700</bug_when>
    <thetext>Created attachment 7798
Current background positioning</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39600</commentid>
    <comment_count>13</comment_count>
      <attachid>7799</attachid>
    <who name="">mitz</who>
    <bug_when>2006-04-18 04:17:40 -0700</bug_when>
    <thetext>Created attachment 7799
Background positioning with the patch

(In reply to comment #9)
&gt; Can you provide a testcase that illustrates an example where the image
&gt; background changes? (Maybe include screenshots).  We should probably understand
&gt; that different before we land anything.

The difference is clear. I just don&apos;t know if paintBackground or paintBackgroundExtended can do what I want them to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39640</commentid>
    <comment_count>14</comment_count>
      <attachid>7701</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-04-18 14:32:40 -0700</bug_when>
    <thetext>Comment on attachment 7701
Patch

Discussing the image positioning issue some more on IRC right now. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39644</commentid>
    <comment_count>15</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-04-18 14:46:02 -0700</bug_when>
    <thetext>Check WinIE to study what they do.  We may need a quirk.  Painting in the table&apos;s border box in strict mode seems like the right thing to do.  It won&apos;t match anyone else probably because nobody else has implemented this new spec.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39937</commentid>
    <comment_count>16</comment_count>
      <attachid>7855</attachid>
    <who name="">mitz</who>
    <bug_when>2006-04-20 13:49:55 -0700</bug_when>
    <thetext>Created attachment 7855
Another background test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39938</commentid>
    <comment_count>17</comment_count>
      <attachid>7856</attachid>
    <who name="">mitz</who>
    <bug_when>2006-04-20 13:50:46 -0700</bug_when>
    <thetext>Created attachment 7856
WinIE rendering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39939</commentid>
    <comment_count>18</comment_count>
      <attachid>7857</attachid>
    <who name="">mitz</who>
    <bug_when>2006-04-20 13:51:15 -0700</bug_when>
    <thetext>Created attachment 7857
Firefox rendering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39940</commentid>
    <comment_count>19</comment_count>
      <attachid>7858</attachid>
    <who name="">mitz</who>
    <bug_when>2006-04-20 13:51:44 -0700</bug_when>
    <thetext>Created attachment 7858
TOT WebKit rendering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39941</commentid>
    <comment_count>20</comment_count>
      <attachid>7859</attachid>
    <who name="">mitz</who>
    <bug_when>2006-04-20 13:54:45 -0700</bug_when>
    <thetext>Created attachment 7859
Patched WebKit rendering - painting in the table&apos;s border box

This is with the patch (attachment 7701) minus these lines:
+    if (collapseBorders()) {
+        _tx += borderLeft();
+        w -= borderLeft() + borderRight();
+        _ty += borderTop();
+        h -= borderTop() + borderBottom();
+    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39942</commentid>
    <comment_count>21</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-04-20 13:58:42 -0700</bug_when>
    <thetext>Neither browser rendered the table differently w/o the DOCTYPE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41006</commentid>
    <comment_count>22</comment_count>
      <attachid>8094</attachid>
    <who name="">mitz</who>
    <bug_when>2006-05-03 06:43:35 -0700</bug_when>
    <thetext>Created attachment 8094
Patch including change log and repaint test

Changed background positioning (by removing the 6 lines mentioned in the previous comment). I reviewed layout/pixel test failures from this patch and they all look like the new results should be accepted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41423</commentid>
    <comment_count>23</comment_count>
      <attachid>8094</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-05-06 22:59:56 -0700</bug_when>
    <thetext>Comment on attachment 8094
Patch including change log and repaint test

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42336</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-14 21:37:45 -0700</bug_when>
    <thetext>Committed revision 14372.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42977</commentid>
    <comment_count>25</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-05-20 00:38:14 -0700</bug_when>
    <thetext>The fix for this bug caused bug 9009.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5987</attachid>
            <date>2006-01-26 05:26:59 -0800</date>
            <delta_ts>2006-01-26 05:26:59 -0800</delta_ts>
            <desc>Testcase</desc>
            <filename>table border repaint.html</filename>
            <type>text/html</type>
            <size>1886</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGhlYWQ+CiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogICAgICAgIHRhYmxlIHsKICAgICAg
ICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgICAgICAgICAgYm9yZGVyOiA4cHgg
c29saWQ7CiAgICAgICAgICAgIG1hcmdpbjogMTBweCAwIDEwcHggMDsKICAgICAgICB9CiAgICA8
L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogICAgPGJ1dHRvbiBvbmNsaWNrPSJ0LnN0eWxlLmJvcmRl
ckNvbG9yID0gJ3JlZCciPlRlc3Q8L2J1dHRvbj4KICAgIAogICAgPHRhYmxlIGlkPSJ0Ij4KICAg
ICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAg
PHRkPkxvcmVtCiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAg
ICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkPmlwc3VtIGRv
bG9yCiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHI+CiAgICAgICAg
ICAgIDx0ZD4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkPnNpdCBhbWV0CiAgICAg
ICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KICAgIDwvdGFibGU+CiAgICAKICAgIDxidXR0b24g
b25jbGljaz0ici5yZW1vdmVDaGlsZChkKSI+VGVzdDwvYnV0dG9uPgogICAgCiAgICA8dGFibGU+
CiAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAg
ICAgIDx0ZD5Mb3JlbQogICAgICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+CiAgICAgICAgPHRy
IGlkPSJyIj4KICAgICAgICAgICAgPHRkPiZuYnNwOwogICAgICAgICAgICA8L3RkPgogICAgICAg
ICAgICA8dGQgaWQ9ImQiPmlwc3VtIGRvbG9yCiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90
cj4KICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgPC90ZD4KICAgICAg
ICAgICAgPHRkPnNpdCBhbWV0CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KICAgIDwv
dGFibGU+CiAgICAKICAgIDxidXR0b24gb25jbGljaz0icjIucmVtb3ZlQ2hpbGQoZDIpIj5UZXN0
PC9idXR0b24+CiAgICAKICAgIDx0YWJsZT4KICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD4K
ICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkPkxvcmVtIGlwc3VtCiAgICAgICAgICAg
IDwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICA8dHIgaWQ9InIyIj4KICAgICAgICAgICAgPHRk
PiZuYnNwOwogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgaWQ9ImQyIj5kb2xvcgog
ICAgICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+CiAgICAgICAgPHRyPgogICAgICAgICAgICA8
dGQ+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZD5zaXQgYW1ldAogICAgICAgICAg
ICA8L3RkPgogICAgICAgIDwvdHI+CiAgICA8L3RhYmxlPgogICAgCiAgICA8YnV0dG9uIG9uY2xp
Y2s9ImQzLmlubmVySFRNTCA9ICdpcHN1bSBkb2xvciciPlRlc3Q8L2J1dHRvbj4KICAgIAogICAg
PHRhYmxlPgogICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPgogICAgICAgICAgICA8L3RkPgog
ICAgICAgICAgICA8dGQ+TG9yZW0KICAgICAgICAgICAgPC90ZD4KICAgICAgICA8L3RyPgogICAg
ICAgIDx0cj4KICAgICAgICAgICAgPHRkPiZuYnNwOwogICAgICAgICAgICA8L3RkPgogICAgICAg
ICAgICA8dGQgaWQ9ImQzIj4KICAgICAgICAgICAgPC90ZD4KICAgICAgICA8L3RyPgogICAgICAg
IDx0cj4KICAgICAgICAgICAgPHRkPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQ+
c2l0IGFtZXQKICAgICAgICAgICAgPC90ZD4KICAgICAgICA8L3RyPgogICAgPC90YWJsZT4KPC9i
b2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5990</attachid>
            <date>2006-01-26 09:50:26 -0800</date>
            <delta_ts>2006-04-14 09:40:33 -0700</delta_ts>
            <desc>Basis for a possible fix</desc>
            <filename>6838_r0.patch</filename>
            <type>text/plain</type>
            <size>10625</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHJldmlzaW9uIDEyMzkzKQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjIsNiAr
NjYyLDg3IEBACiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpib3JkZXJCb3R0b20oKTsKIH0KIAor
aW50IFJlbmRlclRhYmxlOjp0b3BCb3JkZXJPdmVyZmxvdygpIGNvbnN0Cit7CisgICAgaWYgKCFj
b2xsYXBzZUJvcmRlcnMoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaW50IGJvcmRlcldpZHRo
ID0gMDsKKyAgICBSZW5kZXJPYmplY3QgKmNoaWxkID0gZmlyc3RDaGlsZCgpOworICAgIC8vIEZJ
WE1FOiBXaGF0IGFib3V0IHRoZSBjYXB0aW9uPworICAgIHdoaWxlIChjaGlsZCAmJiAhY2hpbGQt
PmlzVGFibGVTZWN0aW9uKCkpCisgICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7
CisgICAgaWYgKGNoaWxkICYmIGNoaWxkLT5pc1RhYmxlU2VjdGlvbigpKQorICAgICAgICBib3Jk
ZXJXaWR0aCA9IHN0YXRpY19jYXN0PFJlbmRlclRhYmxlU2VjdGlvbiAqPihjaGlsZCktPnRvcEJv
cmRlck92ZXJmbG93KCk7CisgICAgY29uc3QgQm9yZGVyVmFsdWUgdGIgPSBzdHlsZSgpLT5ib3Jk
ZXJUb3AoKTsKKyAgICBpZiAodGIuc3R5bGUgPiBCSElEREVOICYmIHRiLndpZHRoIC8gMiA+IGJv
cmRlcldpZHRoKQorICAgICAgICBib3JkZXJXaWR0aCA9IHRiLndpZHRoIC8gMjsKKyAgICByZXR1
cm4gYm9yZGVyV2lkdGg7Cit9CisKK2ludCBSZW5kZXJUYWJsZTo6Ym90dG9tQm9yZGVyT3ZlcmZs
b3coKSBjb25zdAoreworICAgIGlmICghY29sbGFwc2VCb3JkZXJzKCkpCisgICAgICAgIHJldHVy
biAwOworICAgIGludCBib3JkZXJXaWR0aCA9IDA7CisgICAgUmVuZGVyT2JqZWN0ICpjaGlsZCA9
IGxhc3RDaGlsZCgpOworICAgIC8vIEZJWE1FOiBXaGF0IGFib3V0IHRoZSBjYXB0aW9uPworICAg
IHdoaWxlIChjaGlsZCAmJiAhY2hpbGQtPmlzVGFibGVTZWN0aW9uKCkpCisgICAgICAgIGNoaWxk
ID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpOworICAgIGlmIChjaGlsZCAmJiBjaGlsZC0+aXNU
YWJsZVNlY3Rpb24oKSkKKyAgICAgICAgYm9yZGVyV2lkdGggPSBzdGF0aWNfY2FzdDxSZW5kZXJU
YWJsZVNlY3Rpb24gKj4oY2hpbGQpLT5ib3R0b21Cb3JkZXJPdmVyZmxvdygpOworICAgIGNvbnN0
IEJvcmRlclZhbHVlIHRiID0gc3R5bGUoKS0+Ym9yZGVyQm90dG9tKCk7CisgICAgaWYgKHRiLnN0
eWxlID4gQkhJRERFTiAmJiBpbnQodGIud2lkdGggLyAyLjAgKyAwLjUpID4gYm9yZGVyV2lkdGgp
CisgICAgICAgIGJvcmRlcldpZHRoID0gaW50KHRiLndpZHRoIC8gMi4wICsgMC41KTsKKyAgICBy
ZXR1cm4gYm9yZGVyV2lkdGg7Cit9CisKK2ludCBSZW5kZXJUYWJsZTo6bGVmdEJvcmRlck92ZXJm
bG93KCkgY29uc3QKK3sKKyAgICBpZiAoIWNvbGxhcHNlQm9yZGVycygpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICBpbnQgYm9yZGVyV2lkdGggPSAwOworICAgIFJlbmRlck9iamVjdCAqY2hpbGQg
PSBmaXJzdENoaWxkKCk7CisgICAgLy8gRklYTUU6IFdoYXQgYWJvdXQgdGhlIGNhcHRpb24/Cisg
ICAgd2hpbGUgKGNoaWxkKSB7CisgICAgICAgIGlmIChjaGlsZC0+aXNUYWJsZVNlY3Rpb24oKSkK
KyAgICAgICAgICAgIGJvcmRlcldpZHRoID0ga01heChib3JkZXJXaWR0aCwgc3RhdGljX2Nhc3Q8
UmVuZGVyVGFibGVTZWN0aW9uICo+KGNoaWxkKS0+bGVmdEJvcmRlck92ZXJmbG93KCkpOworICAg
ICAgICBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICB9CisgICAgY29uc3Qg
Qm9yZGVyVmFsdWUgdGIgPSBzdHlsZSgpLT5ib3JkZXJMZWZ0KCk7CisgICAgaWYgKHRiLnN0eWxl
ID4gQkhJRERFTiAmJiB0Yi53aWR0aCAvIDIgPiBib3JkZXJXaWR0aCkKKyAgICAgICAgYm9yZGVy
V2lkdGggPSB0Yi53aWR0aCAvIDI7CisgICAgcmV0dXJuIGJvcmRlcldpZHRoOworfQorCitpbnQg
UmVuZGVyVGFibGU6OnJpZ2h0Qm9yZGVyT3ZlcmZsb3coKSBjb25zdAoreworICAgIGlmICghY29s
bGFwc2VCb3JkZXJzKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGludCBib3JkZXJXaWR0aCA9
IDA7CisgICAgUmVuZGVyT2JqZWN0ICpjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKKyAgICAvLyBGSVhN
RTogV2hhdCBhYm91dCB0aGUgY2FwdGlvbj8KKyAgICB3aGlsZSAoY2hpbGQpIHsKKyAgICAgICAg
aWYgKGNoaWxkLT5pc1RhYmxlU2VjdGlvbigpKQorICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBr
TWF4KGJvcmRlcldpZHRoLCBzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZVNlY3Rpb24gKj4oY2hpbGQp
LT5yaWdodEJvcmRlck92ZXJmbG93KCkpOworICAgICAgICBjaGlsZCA9IGNoaWxkLT5wcmV2aW91
c1NpYmxpbmcoKTsKKyAgICB9CisgICAgY29uc3QgQm9yZGVyVmFsdWUgdGIgPSBzdHlsZSgpLT5i
b3JkZXJSaWdodCgpOworICAgIGlmICh0Yi5zdHlsZSA+IEJISURERU4gJiYgaW50KHRiLndpZHRo
IC8gMi4wICsgMC41KSA+IGJvcmRlcldpZHRoKQorICAgICAgICBib3JkZXJXaWR0aCA9IGludCh0
Yi53aWR0aCAvIDIuMCArIDAuNSk7CisgICAgcmV0dXJuIGJvcmRlcldpZHRoOworfQorCitJbnRS
ZWN0IFJlbmRlclRhYmxlOjpnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCkKK3sKKyAgICBpbnQgb2wg
PSBsZWZ0Qm9yZGVyT3ZlcmZsb3coKTsKKyAgICBpbnQgb3QgPSB0b3BCb3JkZXJPdmVyZmxvdygp
OworICAgIEludFJlY3Qgcigtb2wsIC1vdCwgb2wgKyB3aWR0aCgpICsgcmlnaHRCb3JkZXJPdmVy
ZmxvdygpLCBvdCArIGhlaWdodCgpICsgYm90dG9tQm9yZGVyT3ZlcmZsb3coKSk7CisgICAgaWYg
KHN0eWxlKCkpCisgICAgICAgIHIuaW5mbGF0ZShzdHlsZSgpLT5vdXRsaW5lU2l6ZSgpKTsgLy8g
RklYTUU6IFRlY2huaWNhbGx5IHRoZSBvdXRsaW5lIGluZmxhdGlvbiBjb3VsZCBmaXQgd2l0aGlu
IHRoZSB0aGVtZSBpbmZsYXRpb24uCisgICAgY29tcHV0ZUFic29sdXRlUmVwYWludFJlY3Qocik7
CisgICAgcmV0dXJuIHI7Cit9CisKIFJlbmRlclRhYmxlQ2VsbCogUmVuZGVyVGFibGU6OmNlbGxB
Ym92ZShjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgLy8gRmluZCB0
aGUgc2VjdGlvbiBhbmQgcm93IHRvIGxvb2sgaW4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
aAkocmV2aXNpb24gMTIzOTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Niw5ICs4NiwxNSBAQAogICAgIHVpbnQgY2VsbFBhZGRpbmcoKSBj
b25zdCB7IHJldHVybiBwYWRkaW5nOyB9CiAgICAgdm9pZCBzZXRDZWxsUGFkZGluZyh1aW50IHAp
IHsgcGFkZGluZyA9IHA7IH0KIAorICAgIGludCB0b3BCb3JkZXJPdmVyZmxvdygpIGNvbnN0Owor
ICAgIGludCBib3R0b21Cb3JkZXJPdmVyZmxvdygpIGNvbnN0OworICAgIGludCBsZWZ0Qm9yZGVy
T3ZlcmZsb3coKSBjb25zdDsKKyAgICBpbnQgcmlnaHRCb3JkZXJPdmVyZmxvdygpIGNvbnN0Owor
CiAgICAgLy8gb3ZlcnJpZGVzCiAgICAgdmlydHVhbCBpbnQgb3ZlcmZsb3dIZWlnaHQoYm9vbCBp
bmNsdWRlSW50ZXJpb3IgPSB0cnVlKSBjb25zdCB7IHJldHVybiBoZWlnaHQoKTsgfQogICAgIHZp
cnR1YWwgaW50IG92ZXJmbG93V2lkdGgoYm9vbCBpbmNsdWRlSW50ZXJpb3IgPSB0cnVlKSBjb25z
dCB7IHJldHVybiB3aWR0aCgpOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IGdldEFic29sdXRlUmVw
YWludFJlY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0ICpjaGls
ZCwgUmVuZGVyT2JqZWN0ICpiZWZvcmVDaGlsZCA9IDApOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mIGksIGludCB0eCwgaW50IHR5KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRC
b3hEZWNvcmF0aW9ucyhQYWludEluZm8mIGksIGludCBfdHgsIGludCBfdHkpOwpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiAxMjM5MykKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJU
YWJsZVNlY3Rpb24uaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKKyNpbmNsdWRlICJS
ZW5kZXJUYWJsZUNvbC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlUm93LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiaHRtbG5hbWVzLmgiCkBAIC01MzIsNyArNTMzLDEz
MyBAQAogICAgIHJldHVybiBtX2hlaWdodDsKIH0KIAoraW50IFJlbmRlclRhYmxlU2VjdGlvbjo6
dG9wQm9yZGVyT3ZlcmZsb3coKSBjb25zdAoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gbWF5IHJl
dHVybiBhbiBvdmVyZXN0aW1hdGUgKGUuZy4gaWYgYWxsIGNlbGxzCisgICAgLy8gaGF2ZSBib3Jk
ZXItc3R5bGU6aGlkZGVuIGl0IHdpbGwgc3RpbGwgY29uc2lkZXIgdGhlIHJvdydzIGJvcmRlcgor
ICAgIGludCB0b3RhbENvbHMgPSB0YWJsZSgpLT5jb2x1bW5zLnNpemUoKTsKKyAgICBpZiAoZ3Jp
ZFJvd3MgPT0gMCB8fCB0b3RhbENvbHMgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaW50
IGJvcmRlcldpZHRoID0gMDsKKyAgICBmb3IgKGludCBjID0gMDsgYyA8IHRvdGFsQ29sczsgYysr
KSB7CisgICAgICAgIGNvbnN0IENlbGxTdHJ1Y3QgY3VycmVudCA9IGNlbGxBdCgwLCBjKTsKKyAg
ICAgICAgaWYgKGN1cnJlbnQuaW5Db2xTcGFuIHx8ICFjdXJyZW50LmNlbGwpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgY29uc3QgQm9yZGVyVmFsdWUgY2IgPSBjdXJyZW50LmNlbGwt
PnN0eWxlKCktPmJvcmRlclRvcCgpOworICAgICAgICBpZiAoY2Iuc3R5bGUgPiBCSElEREVOICYm
IGNiLndpZHRoID4gYm9yZGVyV2lkdGgpCisgICAgICAgICAgICBib3JkZXJXaWR0aCA9IGNiLndp
ZHRoOworICAgICAgICAvLyBGSVhNRTogRG9uJ3QgcmVwZWF0IGZvciB0aGUgc2FtZSBjb2wgZ3Jv
dXAKKyAgICAgICAgUmVuZGVyVGFibGVDb2wgKmNvbEdyb3VwID0gdGFibGUoKS0+Y29sRWxlbWVu
dChjKTsKKyAgICAgICAgaWYgKGNvbEdyb3VwKSB7CisgICAgICAgICAgICBjb25zdCBCb3JkZXJW
YWx1ZSBnYiA9IGNvbEdyb3VwLT5zdHlsZSgpLT5ib3JkZXJUb3AoKTsKKyAgICAgICAgICAgIGlm
IChnYi5zdHlsZSA+IEJISURERU4gJiYgZ2Iud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAgICAg
ICAgICAgICBib3JkZXJXaWR0aCA9IGdiLndpZHRoOworICAgICAgICB9CisgICAgfQorICAgIGNv
bnN0IEJvcmRlclZhbHVlIHNiID0gc3R5bGUoKS0+Ym9yZGVyVG9wKCk7CisgICAgaWYgKHNiLnN0
eWxlID4gQkhJRERFTiAmJiBzYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAgICBib3JkZXJX
aWR0aCA9IHNiLndpZHRoOworICAgIGNvbnN0IEJvcmRlclZhbHVlIHJiID0gZmlyc3RDaGlsZCgp
LT5zdHlsZSgpLT5ib3JkZXJUb3AoKTsKKyAgICBpZiAocmIuc3R5bGUgPiBCSElEREVOICYmIHJi
LndpZHRoID4gYm9yZGVyV2lkdGgpCisgICAgICAgIGJvcmRlcldpZHRoID0gcmIud2lkdGg7Cisg
ICAgcmV0dXJuIGJvcmRlcldpZHRoIC8gMjsKK30KIAoraW50IFJlbmRlclRhYmxlU2VjdGlvbjo6
Ym90dG9tQm9yZGVyT3ZlcmZsb3coKSBjb25zdAoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gbWF5
IHJldHVybiBhbiBvdmVyZXN0aW1hdGUgKGUuZy4gaWYgYWxsIGNlbGxzCisgICAgLy8gaGF2ZSBi
b3JkZXItc3R5bGU6aGlkZGVuIGl0IHdpbGwgc3RpbGwgY29uc2lkZXIgdGhlIHJvdydzIGJvcmRl
cgorICAgIGludCB0b3RhbENvbHMgPSB0YWJsZSgpLT5jb2x1bW5zLnNpemUoKTsKKyAgICBpZiAo
Z3JpZFJvd3MgPT0gMCB8fCB0b3RhbENvbHMgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
aW50IGJvcmRlcldpZHRoID0gMDsKKyAgICBmb3IgKGludCBjID0gMDsgYyA8IHRvdGFsQ29sczsg
YysrKSB7CisgICAgICAgIGNvbnN0IENlbGxTdHJ1Y3QgY3VycmVudCA9IGNlbGxBdChncmlkUm93
cyAtIDEsIGMpOworICAgICAgICBpZiAoY3VycmVudC5pbkNvbFNwYW4gfHwgIWN1cnJlbnQuY2Vs
bCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSBjYiA9
IGN1cnJlbnQuY2VsbC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCk7CisgICAgICAgIGlmIChjYi5z
dHlsZSA+IEJISURERU4gJiYgY2Iud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAgICAgICAgIGJv
cmRlcldpZHRoID0gY2Iud2lkdGg7CisgICAgICAgIC8vIEZJWE1FOiBEb24ndCByZXBlYXQgZm9y
IHRoZSBzYW1lIGNvbCBncm91cAorICAgICAgICBSZW5kZXJUYWJsZUNvbCAqY29sR3JvdXAgPSB0
YWJsZSgpLT5jb2xFbGVtZW50KGMpOworICAgICAgICBpZiAoY29sR3JvdXApIHsKKyAgICAgICAg
ICAgIGNvbnN0IEJvcmRlclZhbHVlIGdiID0gY29sR3JvdXAtPnN0eWxlKCktPmJvcmRlckJvdHRv
bSgpOworICAgICAgICAgICAgaWYgKGdiLnN0eWxlID4gQkhJRERFTiAmJiBnYi53aWR0aCA+IGJv
cmRlcldpZHRoKQorICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gZ2Iud2lkdGg7CisgICAg
ICAgIH0KKyAgICB9CisgICAgY29uc3QgQm9yZGVyVmFsdWUgc2IgPSBzdHlsZSgpLT5ib3JkZXJC
b3R0b20oKTsKKyAgICBpZiAoc2Iuc3R5bGUgPiBCSElEREVOICYmIHNiLndpZHRoID4gYm9yZGVy
V2lkdGgpCisgICAgICAgIGJvcmRlcldpZHRoID0gc2Iud2lkdGg7CisgICAgY29uc3QgQm9yZGVy
VmFsdWUgcmIgPSBsYXN0Q2hpbGQoKS0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCk7CisgICAgaWYg
KHJiLnN0eWxlID4gQkhJRERFTiAmJiByYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAgICBi
b3JkZXJXaWR0aCA9IHJiLndpZHRoOworICAgIHJldHVybiBpbnQoYm9yZGVyV2lkdGggLyAyLjAg
KyAwLjUpOworfQorCitpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpsZWZ0Qm9yZGVyT3ZlcmZsb3co
KSBjb25zdAoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBhbiBvdmVyZXN0aW1h
dGUgKGUuZy4gaWYgYWxsIGNlbGxzCisgICAgLy8gaGF2ZSBib3JkZXItc3R5bGU6aGlkZGVuIGl0
IHdpbGwgc3RpbGwgY29uc2lkZXIgdGhlIGNvbHVtbiBncm91cCdzIGJvcmRlcgorICAgIGlmIChn
cmlkUm93cyA9PSAwIHx8IHRhYmxlKCktPmNvbHVtbnMuc2l6ZSgpID09IDApCisgICAgICAgIHJl
dHVybiAwOworICAgIGludCBib3JkZXJXaWR0aCA9IDA7CisgICAgZm9yIChpbnQgciA9IDA7IHIg
PCBncmlkUm93czsgcisrKSB7CisgICAgICAgIGNvbnN0IENlbGxTdHJ1Y3QgY3VycmVudCA9IGNl
bGxBdChyLCAwKTsKKyAgICAgICAgaWYgKCFjdXJyZW50LmNlbGwpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgLy8gRklYTUU6IERvbid0IHJlcGVhdCBmb3IgdGhlIHNhbWUgY2VsbAor
ICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSBjYiA9IGN1cnJlbnQuY2VsbC0+c3R5bGUoKS0+Ym9y
ZGVyTGVmdCgpOworICAgICAgICBpZiAoY2Iuc3R5bGUgPiBCSElEREVOICYmIGNiLndpZHRoID4g
Ym9yZGVyV2lkdGgpCisgICAgICAgICAgICBib3JkZXJXaWR0aCA9IGNiLndpZHRoOworICAgICAg
ICBjb25zdCBCb3JkZXJWYWx1ZSByYiA9IGN1cnJlbnQuY2VsbC0+cGFyZW50KCktPnN0eWxlKCkt
PmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKHJiLnN0eWxlID4gQkhJRERFTiAmJiByYi53aWR0
aCA+IGJvcmRlcldpZHRoKQorICAgICAgICAgICAgYm9yZGVyV2lkdGggPSByYi53aWR0aDsKKyAg
ICB9CisgICAgUmVuZGVyVGFibGVDb2wgKmNvbEdyb3VwID0gdGFibGUoKS0+Y29sRWxlbWVudCgw
KTsKKyAgICBpZiAoY29sR3JvdXApIHsKKyAgICAgICAgY29uc3QgQm9yZGVyVmFsdWUgZ2IgPSBj
b2xHcm91cC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpOworICAgICAgICBpZiAoZ2Iuc3R5bGUgPiBC
SElEREVOICYmIGdiLndpZHRoID4gYm9yZGVyV2lkdGgpCisgICAgICAgICAgICBib3JkZXJXaWR0
aCA9IGdiLndpZHRoOworICAgIH0KKyAgICBjb25zdCBCb3JkZXJWYWx1ZSBzYiA9IHN0eWxlKCkt
PmJvcmRlckxlZnQoKTsKKyAgICBpZiAoc2Iuc3R5bGUgPiBCSElEREVOICYmIHNiLndpZHRoID4g
Ym9yZGVyV2lkdGgpCisgICAgICAgIGJvcmRlcldpZHRoID0gc2Iud2lkdGg7CisgICAgcmV0dXJu
IGJvcmRlcldpZHRoIC8gMjsKK30KKworaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6cmlnaHRCb3Jk
ZXJPdmVyZmxvdygpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuIGFu
IG92ZXJlc3RpbWF0ZSAoZS5nLiBpZiBhbGwgY2VsbHMKKyAgICAvLyBoYXZlIGJvcmRlci1zdHls
ZTpoaWRkZW4gaXQgd2lsbCBzdGlsbCBjb25zaWRlciB0aGUgY29sdW1uIGdyb3VwJ3MgYm9yZGVy
CisgICAgaW50IHRvdGFsQ29scyA9IHRhYmxlKCktPmNvbHVtbnMuc2l6ZSgpOworICAgIGlmIChn
cmlkUm93cyA9PSAwIHx8IHRvdGFsQ29scyA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBp
bnQgYm9yZGVyV2lkdGggPSAwOworICAgIGZvciAoaW50IHIgPSAwOyByIDwgZ3JpZFJvd3M7IHIr
KykgeworICAgICAgICBjb25zdCBDZWxsU3RydWN0IGN1cnJlbnQgPSBjZWxsQXQociwgdG90YWxD
b2xzIC0gMSk7CisgICAgICAgIGlmICghY3VycmVudC5jZWxsKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIC8vIEZJWE1FOiBEb24ndCByZXBlYXQgZm9yIHRoZSBzYW1lIGNlbGwKKyAg
ICAgICAgY29uc3QgQm9yZGVyVmFsdWUgY2IgPSBjdXJyZW50LmNlbGwtPnN0eWxlKCktPmJvcmRl
clJpZ2h0KCk7CisgICAgICAgIGlmIChjYi5zdHlsZSA+IEJISURERU4gJiYgY2Iud2lkdGggPiBi
b3JkZXJXaWR0aCkKKyAgICAgICAgICAgIGJvcmRlcldpZHRoID0gY2Iud2lkdGg7CisgICAgICAg
IGNvbnN0IEJvcmRlclZhbHVlIHJiID0gY3VycmVudC5jZWxsLT5wYXJlbnQoKS0+c3R5bGUoKS0+
Ym9yZGVyUmlnaHQoKTsKKyAgICAgICAgaWYgKHJiLnN0eWxlID4gQkhJRERFTiAmJiByYi53aWR0
aCA+IGJvcmRlcldpZHRoKQorICAgICAgICAgICAgYm9yZGVyV2lkdGggPSByYi53aWR0aDsKKyAg
ICB9CisgICAgUmVuZGVyVGFibGVDb2wgKmNvbEdyb3VwID0gdGFibGUoKS0+Y29sRWxlbWVudCh0
b3RhbENvbHMgLSAxKTsKKyAgICBpZiAoY29sR3JvdXApIHsKKyAgICAgICAgY29uc3QgQm9yZGVy
VmFsdWUgZ2IgPSBjb2xHcm91cC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKTsKKyAgICAgICAgaWYg
KGdiLnN0eWxlID4gQkhJRERFTiAmJiBnYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAgICAg
ICAgYm9yZGVyV2lkdGggPSBnYi53aWR0aDsKKyAgICB9CisgICAgY29uc3QgQm9yZGVyVmFsdWUg
c2IgPSBzdHlsZSgpLT5ib3JkZXJSaWdodCgpOworICAgIGlmIChzYi5zdHlsZSA+IEJISURERU4g
JiYgc2Iud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAgICAgYm9yZGVyV2lkdGggPSBzYi53aWR0
aDsKKyAgICByZXR1cm4gaW50KGJvcmRlcldpZHRoIC8gMi4wICsgMC41KTsKK30KKwogdm9pZCBS
ZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50KFBhaW50SW5mbyYgaSwgaW50IHR4LCBpbnQgdHkpCiB7
CiAgICAgdW5zaWduZWQgaW50IHRvdGFsUm93cyA9IGdyaWRSb3dzOwpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHJldmlzaW9uIDEyMzkzKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgx
LDEwIEBACiAgICAgICAgIHJldHVybiAoKmdyaWRbcm93XS5yb3cpW2NvbF07CiAgICAgfQogCisg
ICAgaW50IHRvcEJvcmRlck92ZXJmbG93KCkgY29uc3Q7CisgICAgaW50IGJvdHRvbUJvcmRlck92
ZXJmbG93KCkgY29uc3Q7CisgICAgaW50IGxlZnRCb3JkZXJPdmVyZmxvdygpIGNvbnN0OworICAg
IGludCByaWdodEJvcmRlck92ZXJmbG93KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYgaSwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgaW50IG51bVJvd3MoKSBjb25z
dCB7IHJldHVybiBncmlkUm93czsgfQo=
</data>
<flag name="review"
          id="1415"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7701</attachid>
            <date>2006-04-14 09:40:33 -0700</date>
            <delta_ts>2006-05-03 06:43:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>6838_r0.3.patch</filename>
            <type>text/plain</type>
            <size>28262</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkocmV2aXNpb24g
MTM4NjkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGFibGVTZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCisj
aW5jbHVkZSAiUmVuZGVyVGFibGVDb2wuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgog
I2luY2x1ZGUgIlJlbmRlclRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTQ5
LDYgKzUwLDEwIEBACiAgICAgY0NvbCA9IDA7CiAgICAgY1JvdyA9IC0xOwogICAgIG5lZWRDZWxs
UmVjYWxjID0gZmFsc2U7CisgICAgbV9vdXRlckJvcmRlckxlZnQgPSAwOworICAgIG1fb3V0ZXJC
b3JkZXJSaWdodCA9IDA7CisgICAgbV9vdXRlckJvcmRlclRvcCA9IDA7CisgICAgbV9vdXRlckJv
cmRlckJvdHRvbSA9IDA7CiB9CiAKIFJlbmRlclRhYmxlU2VjdGlvbjo6flJlbmRlclRhYmxlU2Vj
dGlvbigpCkBAIC0zNzAsNiArMzc1LDggQEAKICAgICAKICAgICAvLyBTZXQgdGhlIHdpZHRoIG9m
IG91ciBzZWN0aW9uIG5vdy4gIFRoZSByb3dzIHdpbGwgYWxzbyBiZSB0aGlzIHdpZHRoLgogICAg
IG1fd2lkdGggPSB0YWJsZSgpLT5jb250ZW50V2lkdGgoKTsKKyAgICBpZiAodGFibGUoKS0+Y29s
bGFwc2VCb3JkZXJzKCkpCisgICAgICAgIHJlY2FsY091dGVyQm9yZGVyKCk7CiAgICAgCiAgICAg
aWYgKHRvQWRkICYmIHRvdGFsUm93cyAmJiAocm93UG9zW3RvdGFsUm93c10gfHwgIW5leHRTaWJs
aW5nKCkpKSB7CiAKQEAgLTYwMiw2ICs2MDksMjE2IEBACiAgICAgcmV0dXJuIGxlZnQ7CiB9CiAK
K2ludCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNPdXRlckJvcmRlclRvcCgpIGNvbnN0Cit7Cisg
ICAgaW50IHRvdGFsQ29scyA9IHRhYmxlKCktPm51bUVmZkNvbHMoKTsKKyAgICBpZiAoZ3JpZFJv
d3MgPT0gMCB8fCB0b3RhbENvbHMgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB1bnNp
Z25lZCBib3JkZXJXaWR0aCA9IDA7CisKKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgc2IgPSBzdHls
ZSgpLT5ib3JkZXJUb3AoKTsKKyAgICBpZiAoc2Iuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAg
ICByZXR1cm4gLTE7CisgICAgaWYgKHNiLnN0eWxlKCkgPiBCSElEREVOKQorICAgICAgICBib3Jk
ZXJXaWR0aCA9IHNiLndpZHRoOworCisgICAgY29uc3QgQm9yZGVyVmFsdWUmIHJiID0gZmlyc3RD
aGlsZCgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKTsKKyAgICBpZiAocmIuc3R5bGUoKSA9PSBCSElE
REVOKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHJiLnN0eWxlKCkgPiBCSElEREVOICYm
IHJiLndpZHRoID4gYm9yZGVyV2lkdGgpCisgICAgICAgIGJvcmRlcldpZHRoID0gcmIud2lkdGg7
CisKKyAgICBib29sIGFsbEhpZGRlbiA9IHRydWU7CisgICAgZm9yIChpbnQgYyA9IDA7IGMgPCB0
b3RhbENvbHM7IGMrKykgeworICAgICAgICBjb25zdCBDZWxsU3RydWN0JiBjdXJyZW50ID0gY2Vs
bEF0KDAsIGMpOworICAgICAgICBpZiAoY3VycmVudC5pbkNvbFNwYW4gfHwgIWN1cnJlbnQuY2Vs
bCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgY2Ig
PSBjdXJyZW50LmNlbGwtPnN0eWxlKCktPmJvcmRlclRvcCgpOworICAgICAgICAvLyBGSVhNRTog
RG9uJ3QgcmVwZWF0IGZvciB0aGUgc2FtZSBjb2wgZ3JvdXAKKyAgICAgICAgUmVuZGVyVGFibGVD
b2wqIGNvbEdyb3VwID0gdGFibGUoKS0+Y29sRWxlbWVudChjKTsKKyAgICAgICAgaWYgKGNvbEdy
b3VwKSB7CisgICAgICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgZ2IgPSBjb2xHcm91cC0+c3R5
bGUoKS0+Ym9yZGVyVG9wKCk7CisgICAgICAgICAgICBpZiAoZ2Iuc3R5bGUoKSA9PSBCSElEREVO
IHx8IGNiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhbGxIaWRkZW4gPSBmYWxzZTsKKyAgICAg
ICAgICAgIGlmIChnYi5zdHlsZSgpID4gQkhJRERFTiAmJiBnYi53aWR0aCA+IGJvcmRlcldpZHRo
KQorICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gZ2Iud2lkdGg7CisgICAgICAgICAgICBp
ZiAoY2Iuc3R5bGUoKSA+IEJISURERU4gJiYgY2Iud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAg
ICAgICAgICAgICBib3JkZXJXaWR0aCA9IGNiLndpZHRoOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKGNiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhbGxIaWRkZW4gPSBmYWxz
ZTsKKyAgICAgICAgICAgIGlmIChjYi5zdHlsZSgpID4gQkhJRERFTiAmJiBjYi53aWR0aCA+IGJv
cmRlcldpZHRoKQorICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gY2Iud2lkdGg7CisgICAg
ICAgIH0KKyAgICB9CisgICAgaWYgKGFsbEhpZGRlbikKKyAgICAgICAgcmV0dXJuIC0xOworCisg
ICAgcmV0dXJuIGJvcmRlcldpZHRoIC8gMjsKK30KKworaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6
Y2FsY091dGVyQm9yZGVyQm90dG9tKCkgY29uc3QKK3sKKyAgICBpbnQgdG90YWxDb2xzID0gdGFi
bGUoKS0+bnVtRWZmQ29scygpOworICAgIGlmIChncmlkUm93cyA9PSAwIHx8IHRvdGFsQ29scyA9
PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHVuc2lnbmVkIGJvcmRlcldpZHRoID0gMDsK
KworICAgIGNvbnN0IEJvcmRlclZhbHVlJiBzYiA9IHN0eWxlKCktPmJvcmRlckJvdHRvbSgpOwor
ICAgIGlmIChzYi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgIHJldHVybiAtMTsKKyAgICBp
ZiAoc2Iuc3R5bGUoKSA+IEJISURERU4pCisgICAgICAgIGJvcmRlcldpZHRoID0gc2Iud2lkdGg7
CisKKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgcmIgPSBsYXN0Q2hpbGQoKS0+c3R5bGUoKS0+Ym9y
ZGVyQm90dG9tKCk7CisgICAgaWYgKHJiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgcmV0
dXJuIC0xOworICAgIGlmIChyYi5zdHlsZSgpID4gQkhJRERFTiAmJiByYi53aWR0aCA+IGJvcmRl
cldpZHRoKQorICAgICAgICBib3JkZXJXaWR0aCA9IHJiLndpZHRoOworCisgICAgYm9vbCBhbGxI
aWRkZW4gPSB0cnVlOworICAgIGZvciAoaW50IGMgPSAwOyBjIDwgdG90YWxDb2xzOyBjKyspIHsK
KyAgICAgICAgY29uc3QgQ2VsbFN0cnVjdCYgY3VycmVudCA9IGNlbGxBdChncmlkUm93cyAtIDEs
IGMpOworICAgICAgICBpZiAoY3VycmVudC5pbkNvbFNwYW4gfHwgIWN1cnJlbnQuY2VsbCkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgY2IgPSBjdXJy
ZW50LmNlbGwtPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpOworICAgICAgICAvLyBGSVhNRTogRG9u
J3QgcmVwZWF0IGZvciB0aGUgc2FtZSBjb2wgZ3JvdXAKKyAgICAgICAgUmVuZGVyVGFibGVDb2wq
IGNvbEdyb3VwID0gdGFibGUoKS0+Y29sRWxlbWVudChjKTsKKyAgICAgICAgaWYgKGNvbEdyb3Vw
KSB7CisgICAgICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgZ2IgPSBjb2xHcm91cC0+c3R5bGUo
KS0+Ym9yZGVyQm90dG9tKCk7CisgICAgICAgICAgICBpZiAoZ2Iuc3R5bGUoKSA9PSBCSElEREVO
IHx8IGNiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhbGxIaWRkZW4gPSBmYWxzZTsKKyAgICAg
ICAgICAgIGlmIChnYi5zdHlsZSgpID4gQkhJRERFTiAmJiBnYi53aWR0aCA+IGJvcmRlcldpZHRo
KQorICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gZ2Iud2lkdGg7CisgICAgICAgICAgICBp
ZiAoY2Iuc3R5bGUoKSA+IEJISURERU4gJiYgY2Iud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAg
ICAgICAgICAgICBib3JkZXJXaWR0aCA9IGNiLndpZHRoOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKGNiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhbGxIaWRkZW4gPSBmYWxz
ZTsKKyAgICAgICAgICAgIGlmIChjYi5zdHlsZSgpID4gQkhJRERFTiAmJiBjYi53aWR0aCA+IGJv
cmRlcldpZHRoKQorICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gY2Iud2lkdGg7CisgICAg
ICAgIH0KKyAgICB9CisgICAgaWYgKGFsbEhpZGRlbikKKyAgICAgICAgcmV0dXJuIC0xOworCisg
ICAgcmV0dXJuIChib3JkZXJXaWR0aCArIDEpIC8gMjsKK30KKworaW50IFJlbmRlclRhYmxlU2Vj
dGlvbjo6Y2FsY091dGVyQm9yZGVyTGVmdChib29sIHJ0bCkgY29uc3QKK3sKKyAgICBpbnQgdG90
YWxDb2xzID0gdGFibGUoKS0+bnVtRWZmQ29scygpOworICAgIGlmIChncmlkUm93cyA9PSAwIHx8
IHRvdGFsQ29scyA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHVuc2lnbmVkIGJvcmRl
cldpZHRoID0gMDsKKworICAgIGNvbnN0IEJvcmRlclZhbHVlJiBzYiA9IHN0eWxlKCktPmJvcmRl
ckxlZnQoKTsKKyAgICBpZiAoc2Iuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICByZXR1cm4g
LTE7CisgICAgaWYgKHNiLnN0eWxlKCkgPiBCSElEREVOKQorICAgICAgICBib3JkZXJXaWR0aCA9
IHNiLndpZHRoOworCisgICAgaW50IGxlZnRtb3N0Q29sdW1uID0gcnRsID8gdG90YWxDb2xzIC0g
MSA6IDA7CisgICAgUmVuZGVyVGFibGVDb2wqIGNvbEdyb3VwID0gdGFibGUoKS0+Y29sRWxlbWVu
dChsZWZ0bW9zdENvbHVtbik7CisgICAgaWYgKGNvbEdyb3VwKSB7CisgICAgICAgIGNvbnN0IEJv
cmRlclZhbHVlJiBnYiA9IGNvbEdyb3VwLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCk7CisgICAgICAg
IGlmIChnYi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAg
ICAgIGlmIChnYi5zdHlsZSgpID4gQkhJRERFTiAmJiBnYi53aWR0aCA+IGJvcmRlcldpZHRoKQor
ICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBnYi53aWR0aDsKKyAgICB9CisKKyAgICBib29sIGFs
bEhpZGRlbiA9IHRydWU7CisgICAgZm9yIChpbnQgciA9IDA7IHIgPCBncmlkUm93czsgcisrKSB7
CisgICAgICAgIGNvbnN0IENlbGxTdHJ1Y3QmIGN1cnJlbnQgPSBjZWxsQXQociwgbGVmdG1vc3RD
b2x1bW4pOworICAgICAgICBpZiAoIWN1cnJlbnQuY2VsbCkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAvLyBGSVhNRTogRG9uJ3QgcmVwZWF0IGZvciB0aGUgc2FtZSBjZWxsCisgICAg
ICAgIGNvbnN0IEJvcmRlclZhbHVlJiBjYiA9IGN1cnJlbnQuY2VsbC0+c3R5bGUoKS0+Ym9yZGVy
TGVmdCgpOworICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgcmIgPSBjdXJyZW50LmNlbGwtPnBh
cmVudCgpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCk7CisgICAgICAgIGlmIChjYi5zdHlsZSgpID09
IEJISURERU4gfHwgcmIuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFsbEhpZGRlbiA9IGZhbHNlOworICAgICAgICBp
ZiAoY2Iuc3R5bGUoKSA+IEJISURERU4gJiYgY2Iud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAg
ICAgICAgIGJvcmRlcldpZHRoID0gY2Iud2lkdGg7CisgICAgICAgIGlmIChyYi5zdHlsZSgpID4g
QkhJRERFTiAmJiByYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAgICAgICAgYm9yZGVyV2lk
dGggPSByYi53aWR0aDsKKyAgICB9CisgICAgaWYgKGFsbEhpZGRlbikKKyAgICAgICAgcmV0dXJu
IC0xOworCisgICAgcmV0dXJuIGJvcmRlcldpZHRoIC8gMjsKK30KKworaW50IFJlbmRlclRhYmxl
U2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyUmlnaHQoYm9vbCBydGwpIGNvbnN0Cit7CisgICAgaW50
IHRvdGFsQ29scyA9IHRhYmxlKCktPm51bUVmZkNvbHMoKTsKKyAgICBpZiAoZ3JpZFJvd3MgPT0g
MCB8fCB0b3RhbENvbHMgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB1bnNpZ25lZCBi
b3JkZXJXaWR0aCA9IDA7CisKKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgc2IgPSBzdHlsZSgpLT5i
b3JkZXJSaWdodCgpOworICAgIGlmIChzYi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgIHJl
dHVybiAtMTsKKyAgICBpZiAoc2Iuc3R5bGUoKSA+IEJISURERU4pCisgICAgICAgIGJvcmRlcldp
ZHRoID0gc2Iud2lkdGg7CisKKyAgICBpbnQgcmlnaHRtb3N0Q29sdW1uID0gcnRsID8gMCA6IHRv
dGFsQ29scyAtIDE7CisgICAgUmVuZGVyVGFibGVDb2wqIGNvbEdyb3VwID0gdGFibGUoKS0+Y29s
RWxlbWVudChyaWdodG1vc3RDb2x1bW4pOworICAgIGlmIChjb2xHcm91cCkgeworICAgICAgICBj
b25zdCBCb3JkZXJWYWx1ZSYgZ2IgPSBjb2xHcm91cC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKTsK
KyAgICAgICAgaWYgKGdiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgICAgIHJldHVybiAt
MTsKKyAgICAgICAgaWYgKGdiLnN0eWxlKCkgPiBCSElEREVOICYmIGdiLndpZHRoID4gYm9yZGVy
V2lkdGgpCisgICAgICAgICAgICBib3JkZXJXaWR0aCA9IGdiLndpZHRoOworICAgIH0KKworICAg
IGJvb2wgYWxsSGlkZGVuID0gdHJ1ZTsKKyAgICBmb3IgKGludCByID0gMDsgciA8IGdyaWRSb3dz
OyByKyspIHsKKyAgICAgICAgY29uc3QgQ2VsbFN0cnVjdCYgY3VycmVudCA9IGNlbGxBdChyLCBy
aWdodG1vc3RDb2x1bW4pOworICAgICAgICBpZiAoIWN1cnJlbnQuY2VsbCkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAvLyBGSVhNRTogRG9uJ3QgcmVwZWF0IGZvciB0aGUgc2FtZSBj
ZWxsCisgICAgICAgIGNvbnN0IEJvcmRlclZhbHVlJiBjYiA9IGN1cnJlbnQuY2VsbC0+c3R5bGUo
KS0+Ym9yZGVyUmlnaHQoKTsKKyAgICAgICAgY29uc3QgQm9yZGVyVmFsdWUmIHJiID0gY3VycmVu
dC5jZWxsLT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKTsKKyAgICAgICAgaWYgKGNi
LnN0eWxlKCkgPT0gQkhJRERFTiB8fCByYi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWxsSGlkZGVuID0gZmFsc2U7
CisgICAgICAgIGlmIChjYi5zdHlsZSgpID4gQkhJRERFTiAmJiBjYi53aWR0aCA+IGJvcmRlcldp
ZHRoKQorICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBjYi53aWR0aDsKKyAgICAgICAgaWYgKHJi
LnN0eWxlKCkgPiBCSElEREVOICYmIHJiLndpZHRoID4gYm9yZGVyV2lkdGgpCisgICAgICAgICAg
ICBib3JkZXJXaWR0aCA9IHJiLndpZHRoOworICAgIH0KKyAgICBpZiAoYWxsSGlkZGVuKQorICAg
ICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gKGJvcmRlcldpZHRoICsgMSkgLyAyOworfQor
Cit2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6cmVjYWxjT3V0ZXJCb3JkZXIoKQoreworICAgIGJv
b2wgcnRsID0gdGFibGUoKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMOworICAgIG1fb3V0
ZXJCb3JkZXJUb3AgPSBjYWxjT3V0ZXJCb3JkZXJUb3AoKTsKKyAgICBtX291dGVyQm9yZGVyQm90
dG9tID0gY2FsY091dGVyQm9yZGVyQm90dG9tKCk7CisgICAgbV9vdXRlckJvcmRlckxlZnQgPSBj
YWxjT3V0ZXJCb3JkZXJMZWZ0KHJ0bCk7CisgICAgbV9vdXRlckJvcmRlclJpZ2h0ID0gY2FsY091
dGVyQm9yZGVyUmlnaHQocnRsKTsKK30KKworCiB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6cGFp
bnQoUGFpbnRJbmZvJiBpLCBpbnQgdHgsIGludCB0eSkKIHsKICAgICB1bnNpZ25lZCBpbnQgdG90
YWxSb3dzID0gZ3JpZFJvd3M7CkBAIC02MjQsMTAgKzg0MSwxNCBAQAogICAgIGZvciAoOyBzdGFy
dHJvdyA8IHRvdGFsUm93czsgc3RhcnRyb3crKykKICAgICAgICAgaWYgKHR5ICsgcm93UG9zW3N0
YXJ0cm93KzFdID49IHkgLSBvcykKICAgICAgICAgICAgIGJyZWFrOworICAgIGlmIChzdGFydHJv
dyA9PSB0b3RhbFJvd3MgJiYgdHkgKyByb3dQb3NbdG90YWxSb3dzXSArIHRhYmxlKCktPm91dGVy
Qm9yZGVyQm90dG9tKCkgPj0geSAtIG9zKQorICAgICAgICBzdGFydHJvdy0tOwogCiAgICAgZm9y
ICg7IGVuZHJvdyA+IDA7IGVuZHJvdy0tKQogICAgICAgICBpZiAoIHR5ICsgcm93UG9zW2VuZHJv
dy0xXSA8PSB5ICsgaCArIG9zKQogICAgICAgICAgICAgYnJlYWs7CisgICAgaWYgKGVuZHJvdyA9
PSAwICYmIHR5ICsgcm93UG9zWzBdIC0gdGFibGUoKS0+b3V0ZXJCb3JkZXJUb3AoKSA8PSB5ICsg
aCArIG9zKQorICAgICAgICBlbmRyb3crKzsKIAogICAgIHVuc2lnbmVkIGludCBzdGFydGNvbCA9
IDA7CiAgICAgdW5zaWduZWQgaW50IGVuZGNvbCA9IHRvdGFsQ29sczsKQEAgLTYzNiwxMCArODU3
LDE1IEBACiAgICAgICAgICAgICBpZiAodHggKyB0YWJsZSgpLT5jb2x1bW5Qb3Nbc3RhcnRjb2wg
KyAxXSA+PSB4IC0gb3MpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgaWYgKHN0YXJ0Y29sID09IHRvdGFsQ29scyAmJiB0eCArIHRhYmxlKCktPmNvbHVtblBvc1t0
b3RhbENvbHNdICsgdGFibGUoKS0+b3V0ZXJCb3JkZXJSaWdodCgpID49IHggLSBvcykKKyAgICAg
ICAgICAgIHN0YXJ0Y29sLS07CisgICAgICAgIAogICAgICAgICBmb3IgKDsgZW5kY29sID4gMDsg
ZW5kY29sLS0pIHsKICAgICAgICAgICAgIGlmICh0eCArIHRhYmxlKCktPmNvbHVtblBvc1tlbmRj
b2wgLSAxXSA8PSB4ICsgdyArIG9zKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGlmIChlbmRjb2wgPT0gMCAmJiB0eCArIHRhYmxlKCktPmNvbHVtblBvc1swXSAt
IHRhYmxlKCktPm91dGVyQm9yZGVyTGVmdCgpIDw9IHkgKyB3ICsgb3MpCisgICAgICAgICAgICBl
bmRjb2wrKzsKICAgICB9CiAKICAgICBpZiAoc3RhcnRjb2wgPCBlbmRjb2wpIHsKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gMTM4NjkpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODUs
NyArNDg1LDcgQEAKICAgICBpZiAodGFibGUoKS0+Y29sbGFwc2VCb3JkZXJzKCkpIHsKICAgICAg
ICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgYm9yZGVyID0gY29sbGFwc2VkTGVmdEJvcmRlcih0YWJs
ZSgpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBSVEwpOwogICAgICAgICBpZiAoYm9yZGVyLmV4
aXN0cygpKQotICAgICAgICAgICAgcmV0dXJuIGludChib3JkZXIud2lkdGgoKSAvIDIuMCArIDAu
NSk7IC8vIEdpdmUgdGhlIGV4dHJhIHBpeGVsIHRvIHRvcCBhbmQgbGVmdC4KKyAgICAgICAgICAg
IHJldHVybiAoYm9yZGVyLndpZHRoKCkgKyAxKSAvIDI7IC8vIEdpdmUgdGhlIGV4dHJhIHBpeGVs
IHRvIHRvcCBhbmQgbGVmdC4KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVybiBS
ZW5kZXJCbG9jazo6Ym9yZGVyTGVmdCgpOwpAQCAtNTA3LDcgKzUwNyw3IEBACiAgICAgaWYgKHRh
YmxlKCktPmNvbGxhcHNlQm9yZGVycygpKSB7CiAgICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVl
IGJvcmRlciA9IGNvbGxhcHNlZFRvcEJvcmRlcigpOwogICAgICAgICBpZiAoYm9yZGVyLmV4aXN0
cygpKQotICAgICAgICAgICAgcmV0dXJuIGludChib3JkZXIud2lkdGgoKSAvIDIuMCArIDAuNSk7
IC8vIEdpdmUgdGhlIGV4dHJhIHBpeGVsIHRvIHRvcCBhbmQgbGVmdC4KKyAgICAgICAgICAgIHJl
dHVybiAoYm9yZGVyLndpZHRoKCkgKyAxKSAvIDI7IC8vIEdpdmUgdGhlIGV4dHJhIHBpeGVsIHRv
IHRvcCBhbmQgbGVmdC4KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVybiBSZW5k
ZXJCbG9jazo6Ym9yZGVyVG9wKCk7CkBAIC01NDAsMTUgKzU0MCwxOCBAQAogCiAgICAgLy8gY2hl
Y2sgaWYgd2UgbmVlZCB0byBkbyBhbnl0aGluZyBhdCBhbGwuLi4KICAgICBpbnQgb3MgPSAyKm1h
eGltYWxPdXRsaW5lU2l6ZShpLnBoYXNlKTsKLSAgICBpZiAoX3R5ID49IGkuci5ib3R0b20oKSAr
IG9zIHx8IF90eSArIF90b3BFeHRyYSArIG1faGVpZ2h0ICsgX2JvdHRvbUV4dHJhIDw9IGkuci55
KCkgLSBvcykKLSAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGkucGhhc2UgPT0gUGFpbnRQaGFz
ZUNvbGxhcHNlZFRhYmxlQm9yZGVycyAmJiBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJM
RSkgeworICAgICAgICBpZiAoX3R5IC0gdGFibGUoKS0+b3V0ZXJCb3JkZXJUb3AoKSA+PSBpLnIu
Ym90dG9tKCkgKyBvcyB8fCBfdHkgKyBfdG9wRXh0cmEgKyBtX2hlaWdodCArIF9ib3R0b21FeHRy
YSArIHRhYmxlKCktPm91dGVyQm9yZGVyQm90dG9tKCkgPD0gaS5yLnkoKSAtIG9zKQorICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBpbnQgdyA9IHdpZHRoKCk7CiAgICAgICAgIGludCBoID0g
aGVpZ2h0KCkgKyBib3JkZXJUb3BFeHRyYSgpICsgYm9yZGVyQm90dG9tRXh0cmEoKTsKICAgICAg
ICAgcGFpbnRDb2xsYXBzZWRCb3JkZXIoaS5wLCBfdHgsIF90eSwgdywgaCk7Ci0gICAgfSBlbHNl
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKF90eSA+PSBpLnIuYm90dG9tKCkgKyBvcyB8fCBf
dHkgKyBfdG9wRXh0cmEgKyBtX2hlaWdodCArIF9ib3R0b21FeHRyYSA8PSBpLnIueSgpIC0gb3Mp
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChp
LCBfdHgsIF90eSArIF90b3BFeHRyYSk7CisgICAgfQogCiAjaWZkZWYgQk9YX0RFQlVHCiAgICAg
OjpvdXRsaW5lQm94KCBpLnAsIF90eCwgX3R5LCB3aWR0aCgpLCBoZWlnaHQoKSArIGJvcmRlclRv
cEV4dHJhKCkgKyBib3JkZXJCb3R0b21FeHRyYSgpKTsKQEAgLTY2MCw4ICs2NjMsOCBAQAogICAg
IAogICAgIF90eCAtPSBsZWZ0V2lkdGggLyAyOwogICAgIF90eSAtPSB0b3BXaWR0aCAvIDI7Ci0g
ICAgdyArPSBsZWZ0V2lkdGggLyAyICsgaW50KHJpZ2h0V2lkdGggLyAyLjAgKyAwLjUpOwotICAg
IGggKz0gdG9wV2lkdGggLyAyICsgaW50KGJvdHRvbVdpZHRoIC8gMi4wICsgMC41KTsKKyAgICB3
ICs9IGxlZnRXaWR0aCAvIDIgKyAocmlnaHRXaWR0aCArIDEpIC8gMjsKKyAgICBoICs9IHRvcFdp
ZHRoIC8gMiArIChib3R0b21XaWR0aCArIDEpIC8gMjsKICAgICAKICAgICBib29sIHR0ID0gdG9w
VmFsLmlzVHJhbnNwYXJlbnQoKTsKICAgICBib29sIGJ0ID0gYm90dG9tVmFsLmlzVHJhbnNwYXJl
bnQoKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAkocmV2aXNpb24gMTM4NjkpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw4ICs3
Miw4IEBACiAgICAgaW50IHZCb3JkZXJTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gdnNwYWNpbmc7
IH0KICAgICAKICAgICBib29sIGNvbGxhcHNlQm9yZGVycygpIGNvbnN0IHsgcmV0dXJuIHN0eWxl
KCktPmJvcmRlckNvbGxhcHNlKCk7IH0KLSAgICBpbnQgYm9yZGVyTGVmdCgpIGNvbnN0OwotICAg
IGludCBib3JkZXJSaWdodCgpIGNvbnN0OworICAgIGludCBib3JkZXJMZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3JkZXJMZWZ0OyB9CisgICAgaW50IGJvcmRlclJpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9ib3JkZXJSaWdodDsgfQogICAgIGludCBib3JkZXJUb3AoKSBjb25zdDsKICAgICBpbnQg
Ym9yZGVyQm90dG9tKCkgY29uc3Q7CiAgICAgCkBAIC04NCw5ICs4NCwxNyBAQAogICAgIHVuc2ln
bmVkIGNlbGxQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gcGFkZGluZzsgfQogICAgIHZvaWQgc2V0
Q2VsbFBhZGRpbmcodW5zaWduZWQgcCkgeyBwYWRkaW5nID0gcDsgfQogCisgICAgaW50IG91dGVy
Qm9yZGVyVG9wKCkgY29uc3Q7CisgICAgaW50IG91dGVyQm9yZGVyQm90dG9tKCkgY29uc3Q7Cisg
ICAgaW50IG91dGVyQm9yZGVyTGVmdCgpIGNvbnN0OworICAgIGludCBvdXRlckJvcmRlclJpZ2h0
KCkgY29uc3Q7CisgICAgCisgICAgaW50IGNhbGNCb3JkZXJMZWZ0KCkgY29uc3Q7CisgICAgaW50
IGNhbGNCb3JkZXJSaWdodCgpIGNvbnN0OworICAgIHZvaWQgcmVjYWxjSG9yaXpvbnRhbEJvcmRl
cnMoKTsKKwogICAgIC8vIG92ZXJyaWRlcwogICAgIHZpcnR1YWwgaW50IG92ZXJmbG93SGVpZ2h0
KGJvb2wgaW5jbHVkZUludGVyaW9yID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gaGVpZ2h0KCk7IH0K
LSAgICB2aXJ0dWFsIGludCBvdmVyZmxvd1dpZHRoKGJvb2wgaW5jbHVkZUludGVyaW9yID0gdHJ1
ZSkgY29uc3QgeyByZXR1cm4gd2lkdGgoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChS
ZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBpbnQgX3R4LCBpbnQgX3R5
KTsKQEAgLTE0Myw3ICsxNTEsNyBAQAogICAgICAgICAgICAgICAgKGNvbGxhcHNlQm9yZGVycygp
ID8gMCA6IChwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkgKyAobnVtRWZmQ29scygpICsg
MSkgKiBoQm9yZGVyU3BhY2luZygpKSk7CiAgICAgfQogCi0gICAgUmVuZGVyVGFibGVDb2wqIGNv
bEVsZW1lbnQoaW50IGNvbCk7CisgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsZW1lbnQoaW50IGNv
bCkgY29uc3Q7CiAKICAgICB2b2lkIHNldE5lZWRTZWN0aW9uUmVjYWxjKCkgeyBuZWVkU2VjdGlv
blJlY2FsYyA9IHRydWU7IH0KIApAQCAtMTg2LDYgKzE5NCw4IEBACiAgICAgCiAgICAgc2hvcnQg
aHNwYWNpbmc7CiAgICAgc2hvcnQgdnNwYWNpbmc7CisgICAgaW50IG1fYm9yZGVyUmlnaHQ7Cisg
ICAgaW50IG1fYm9yZGVyTGVmdDsKIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5oCShyZXZpc2lvbiAxMzg2OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSwxOCBAQAogICAg
IHZpcnR1YWwgaW50IGxvd2VzdFBvc2l0aW9uKGJvb2wgaW5jbHVkZU92ZXJmbG93SW50ZXJpb3Is
IGJvb2wgaW5jbHVkZVNlbGYpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IHJpZ2h0bW9zdFBvc2l0
aW9uKGJvb2wgaW5jbHVkZU92ZXJmbG93SW50ZXJpb3IsIGJvb2wgaW5jbHVkZVNlbGYpIGNvbnN0
OwogICAgIHZpcnR1YWwgaW50IGxlZnRtb3N0UG9zaXRpb24oYm9vbCBpbmNsdWRlT3ZlcmZsb3dJ
bnRlcmlvciwgYm9vbCBpbmNsdWRlU2VsZikgY29uc3Q7CisKKyAgICBpbnQgY2FsY091dGVyQm9y
ZGVyVG9wKCkgY29uc3Q7CisgICAgaW50IGNhbGNPdXRlckJvcmRlckJvdHRvbSgpIGNvbnN0Owor
ICAgIGludCBjYWxjT3V0ZXJCb3JkZXJMZWZ0KGJvb2wgcnRsKSBjb25zdDsKKyAgICBpbnQgY2Fs
Y091dGVyQm9yZGVyUmlnaHQoYm9vbCBydGwpIGNvbnN0OworICAgIHZvaWQgcmVjYWxjT3V0ZXJC
b3JkZXIoKTsKKworICAgIGludCBvdXRlckJvcmRlclRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0
ZXJCb3JkZXJUb3A7IH0KKyAgICBpbnQgb3V0ZXJCb3JkZXJCb3R0b20oKSBjb25zdCB7IHJldHVy
biBtX291dGVyQm9yZGVyQm90dG9tOyB9CisgICAgaW50IG91dGVyQm9yZGVyTGVmdCgpIGNvbnN0
IHsgcmV0dXJuIG1fb3V0ZXJCb3JkZXJMZWZ0OyB9CisgICAgaW50IG91dGVyQm9yZGVyUmlnaHQo
KSBjb25zdCB7IHJldHVybiBtX291dGVyQm9yZGVyUmlnaHQ7IH0KKwogICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mIGksIGludCB0eCwgaW50IHR5KTsKIAogICAgIGludCBudW1Sb3dz
KCkgY29uc3QgeyByZXR1cm4gZ3JpZFJvd3M7IH0KQEAgLTExNSw2ICsxMjcsMTAgQEAKIHByb3Rl
Y3RlZDoKICAgICBib29sIGVuc3VyZVJvd3MoaW50IG51bVJvd3MpOwogICAgIHZvaWQgY2xlYXJH
cmlkKCk7CisgICAgaW50IG1fb3V0ZXJCb3JkZXJMZWZ0OworICAgIGludCBtX291dGVyQm9yZGVy
UmlnaHQ7CisgICAgaW50IG1fb3V0ZXJCb3JkZXJUb3A7CisgICAgaW50IG1fb3V0ZXJCb3JkZXJC
b3R0b207CiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCShyZXZpc2lv
biAxMzg2OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsNiArNTgsOCBAQAogICAgIHBhZGRpbmcgPSAwOwogICAgIG5lZWRTZWN0aW9u
UmVjYWxjID0gZmFsc2U7CiAgICAgcGFkZGluZyA9IDA7CisgICAgbV9ib3JkZXJMZWZ0ID0gMDsK
KyAgICBtX2JvcmRlclJpZ2h0ID0gMDsKIAogICAgIGNvbHVtblBvcy5yZXNpemUoMik7CiAgICAg
Y29sdW1uUG9zLmZpbGwoMCk7CkBAIC0yNTEsNyArMjUzLDYgQEAKICAgICAKICAgICAvL2ludCBv
bGRXaWR0aCA9IG1fd2lkdGg7CiAgICAgY2FsY1dpZHRoKCk7Ci0gICAgbV9vdmVyZmxvd1dpZHRo
ID0gbV93aWR0aDsKIAogICAgIC8vIHRoZSBvcHRpbWlzYXRpb24gYmVsb3cgZG9lc24ndCB3b3Jr
IHNpbmNlIHRoZSBpbnRlcm5hbCB0YWJsZQogICAgIC8vIGxheW91dCBjb3VsZCBoYXZlIGNoYW5n
ZWQuICB3ZSBuZWVkIHRvIGFkZCBhIGZsYWcgdG8gdGhlIHRhYmxlCkBAIC0yNzcsNiArMjc4LDkg
QEAKICAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CiAKKyAgICBt
X292ZXJmbG93V2lkdGggPSBtX3dpZHRoICsgKGNvbGxhcHNlQm9yZGVycygpID8gb3V0ZXJCb3Jk
ZXJSaWdodCgpIC0gYm9yZGVyUmlnaHQoKSA6IDApOworICAgIG1fb3ZlcmZsb3dMZWZ0ID0gY29s
bGFwc2VCb3JkZXJzKCkgPyBib3JkZXJMZWZ0KCkgLSBvdXRlckJvcmRlckxlZnQoKSA6IDA7CisK
ICAgICAvLyAjIyMgY29sbGFwc2UgY2FwdGlvbiBtYXJnaW4KICAgICBpZiAodENhcHRpb24gJiYg
dENhcHRpb24tPnN0eWxlKCktPmNhcHRpb25TaWRlKCkgIT0gQ0FQQk9UVE9NKSB7CiAgICAgICAg
IHRDYXB0aW9uLT5zZXRQb3ModENhcHRpb24tPm1hcmdpbkxlZnQoKSwgbV9oZWlnaHQpOwpAQCAt
MzU1LDkgKzM1OSw2IEBACiAgICAgaWYgKGNoZWNrRm9yUmVwYWludCkKICAgICAgICAgcmVwYWlu
dEFmdGVyTGF5b3V0SWZOZWVkZWQob2xkQm91bmRzLCBvbGRGdWxsQm91bmRzKTsKICAgICAKLSAg
ICBtX292ZXJmbG93SGVpZ2h0ID0gbWF4KG1fb3ZlcmZsb3dIZWlnaHQsIG1faGVpZ2h0KTsKLSAg
ICBtX292ZXJmbG93V2lkdGggPSBtYXgobV9vdmVyZmxvd1dpZHRoLCBtX3dpZHRoKTsKLQogICAg
IHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIApAQCAtNDM0LDYgKzQzNSwxMiBAQAogICAgICAg
ICAgICAgX3R5ICs9IGNhcHRpb25IZWlnaHQ7CiAgICAgfQogCisgICAgaWYgKGNvbGxhcHNlQm9y
ZGVycygpKSB7CisgICAgICAgIF90eCArPSBib3JkZXJMZWZ0KCk7CisgICAgICAgIHcgLT0gYm9y
ZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKTsKKyAgICAgICAgX3R5ICs9IGJvcmRlclRvcCgpOwor
ICAgICAgICBoIC09IGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCk7CisgICAgfQogICAgIGlu
dCBteSA9IG1heChfdHksIGkuci55KCkpOwogICAgIGludCBtaDsKICAgICBpZiAoX3R5IDwgaS5y
LnkoKSkKQEAgLTQ1Myw2ICs0NjAsNyBAQAogCiAgICAgaWYgKG5lZWRTZWN0aW9uUmVjYWxjKQog
ICAgICAgICByZWNhbGNTZWN0aW9ucygpOworICAgIHJlY2FsY0hvcml6b250YWxCb3JkZXJzKCk7
CiAKICAgICB0YWJsZUxheW91dC0+Y2FsY01pbk1heFdpZHRoKCk7CiAKQEAgLTUxOCw3ICs1MjYs
NyBAQAogICAgIHNldE5lZWRzTGF5b3V0QW5kTWluTWF4UmVjYWxjKCk7CiB9CiAKLVJlbmRlclRh
YmxlQ29sICpSZW5kZXJUYWJsZTo6Y29sRWxlbWVudChpbnQgY29sKQorUmVuZGVyVGFibGVDb2wg
KlJlbmRlclRhYmxlOjpjb2xFbGVtZW50KGludCBjb2wpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNf
Y29sX2VsZW1zKQogICAgICAgICByZXR1cm4gMDsKQEAgLTYzMyw0NiArNjQxLDI2MSBAQAogICAg
IHJldHVybiBSZW5kZXJDb250YWluZXI6OnJlbW92ZUNoaWxkTm9kZShjaGlsZCk7CiB9CiAKLWlu
dCBSZW5kZXJUYWJsZTo6Ym9yZGVyTGVmdCgpIGNvbnN0CitpbnQgUmVuZGVyVGFibGU6OmNhbGNC
b3JkZXJMZWZ0KCkgY29uc3QKIHsKICAgICBpZiAoY29sbGFwc2VCb3JkZXJzKCkpIHsKLSAgICAg
ICAgLy8gRklYTUU6IEZvciBzdHJpY3QgbW9kZSwgcmV0dXJuaW5nIDAgaXMgY29ycmVjdCwgc2lu
Y2UgdGhlIHRhYmxlIGJvcmRlciBoYWxmIHNwaWxscyBpbnRvIHRoZSBtYXJnaW4sCi0gICAgICAg
IC8vIGJ1dCBJJ20gd29ya2luZyB0byBnZXQgdGhpcyBjaGFuZ2VkLiAgRm9yIG5vdywgZm9sbG93
IHRoZSBzcGVjLgotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgLy8gRGV0ZXJtaW5lZCBieSB0
aGUgZmlyc3QgY2VsbCBvZiB0aGUgZmlyc3Qgcm93LiBTZWUgdGhlIENTUyAyLjEgc3BlYywgc2Vj
dGlvbiAxNy42LjIuCisgICAgICAgIGlmIChudW1FZmZDb2xzKCkgPT0gMCkKKyAgICAgICAgICAg
IHJldHVybiAwOworCisgICAgICAgIHVuc2lnbmVkIGJvcmRlcldpZHRoID0gMDsKKworICAgICAg
ICBjb25zdCBCb3JkZXJWYWx1ZSYgdGIgPSBzdHlsZSgpLT5ib3JkZXJMZWZ0KCk7CisgICAgICAg
IGlmICh0Yi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgaWYgKHRiLnN0eWxlKCkgPiBCSElEREVOKQorICAgICAgICAgICAgYm9yZGVyV2lkdGggPSB0
Yi53aWR0aDsKKworICAgICAgICBpbnQgbGVmdG1vc3RDb2x1bW4gPSBzdHlsZSgpLT5kaXJlY3Rp
b24oKSA9PSBSVEwgPyBudW1FZmZDb2xzKCkgLSAxIDogMDsKKyAgICAgICAgUmVuZGVyVGFibGVD
b2wgKmNvbEdyb3VwID0gY29sRWxlbWVudChsZWZ0bW9zdENvbHVtbik7CisgICAgICAgIGlmIChj
b2xHcm91cCkgeworICAgICAgICAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGdiID0gc3R5bGUoKS0+
Ym9yZGVyTGVmdCgpOworICAgICAgICAgICAgaWYgKGdiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChnYi5zdHlsZSgpID4gQkhJ
RERFTiAmJiBnYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAgICAgICAgICAgIGJvcmRlcldp
ZHRoID0gZ2Iud2lkdGg7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJlbmRlck9iamVj
dCAqY2hpbGQgPSBmaXJzdENoaWxkKCk7CisgICAgICAgIHdoaWxlIChjaGlsZCAmJiAhY2hpbGQt
PmlzVGFibGVTZWN0aW9uKCkpCisgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpOworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQtPmlzVGFibGVTZWN0aW9uKCkpIHsKKyAg
ICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbiA9IHN0YXRpY19jYXN0PFJlbmRl
clRhYmxlU2VjdGlvbio+KGNoaWxkKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNl
Y3Rpb24tPm51bVJvd3MoKSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBib3JkZXJXaWR0
aCAvIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IEJvcmRlclZhbHVlJiBzYiA9
IHNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckxlZnQoKTsKKyAgICAgICAgICAgIGlmIChzYi5zdHls
ZSgpID09IEJISURERU4pCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBp
ZiAoc2Iuc3R5bGUoKSA+IEJISURERU4gJiYgc2Iud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAg
ICAgICAgICAgICBib3JkZXJXaWR0aCA9IHNiLndpZHRoOworCisgICAgICAgICAgICBjb25zdCBS
ZW5kZXJUYWJsZVNlY3Rpb246OkNlbGxTdHJ1Y3QmIGNzID0gc2VjdGlvbi0+Y2VsbEF0KDAsIGxl
ZnRtb3N0Q29sdW1uKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGNzLmNlbGwpIHsK
KyAgICAgICAgICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgY2IgPSBjcy5jZWxsLT5zdHlsZSgp
LT5ib3JkZXJMZWZ0KCk7CisgICAgICAgICAgICAgICAgaWYgKGNiLnN0eWxlKCkgPT0gQkhJRERF
TikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgY29uc3Qg
Qm9yZGVyVmFsdWUmIHJiID0gY3MuY2VsbC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckxlZnQo
KTsKKyAgICAgICAgICAgICAgICBpZiAocmIuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgICAgIGlmIChjYi5zdHlsZSgpID4g
QkhJRERFTiAmJiBjYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAgICAgICAgICAgICAgICBi
b3JkZXJXaWR0aCA9IGNiLndpZHRoOworICAgICAgICAgICAgICAgIGlmIChyYi5zdHlsZSgpID4g
QkhJRERFTiAmJiByYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAgICAgICAgICAgICAgICBi
b3JkZXJXaWR0aCA9IHJiLndpZHRoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHJldHVybiBib3JkZXJXaWR0aCAvIDI7CiAgICAgfQogICAgIHJldHVybiBSZW5kZXJCbG9jazo6
Ym9yZGVyTGVmdCgpOwogfQogICAgIAotaW50IFJlbmRlclRhYmxlOjpib3JkZXJSaWdodCgpIGNv
bnN0CitpbnQgUmVuZGVyVGFibGU6OmNhbGNCb3JkZXJSaWdodCgpIGNvbnN0CiB7CiAgICAgaWYg
KGNvbGxhcHNlQm9yZGVycygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBGb3Igc3RyaWN0IG1vZGUs
IHJldHVybmluZyAwIGlzIGNvcnJlY3QsIHNpbmNlIHRoZSB0YWJsZSBib3JkZXIgaGFsZiBzcGls
bHMgaW50byB0aGUgbWFyZ2luLAotICAgICAgICAvLyBidXQgSSdtIHdvcmtpbmcgdG8gZ2V0IHRo
aXMgY2hhbmdlZC4gIEZvciBub3csIGZvbGxvdyB0aGUgc3BlYy4KLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIC8vIERldGVybWluZWQgYnkgdGhlIGxhc3QgY2VsbCBvZiB0aGUgZmlyc3Qgcm93
LiBTZWUgdGhlIENTUyAyLjEgc3BlYywgc2VjdGlvbiAxNy42LjIuCisgICAgICAgIGlmIChudW1F
ZmZDb2xzKCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHVuc2lnbmVk
IGJvcmRlcldpZHRoID0gMDsKKworICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgdGIgPSBzdHls
ZSgpLT5ib3JkZXJSaWdodCgpOworICAgICAgICBpZiAodGIuc3R5bGUoKSA9PSBCSElEREVOKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICh0Yi5zdHlsZSgpID4gQkhJRERFTikK
KyAgICAgICAgICAgIGJvcmRlcldpZHRoID0gdGIud2lkdGg7CisKKyAgICAgICAgaW50IHJpZ2h0
bW9zdENvbHVtbiA9IHN0eWxlKCktPmRpcmVjdGlvbigpID09IFJUTCA/IDAgOiBudW1FZmZDb2xz
KCkgLSAxOworICAgICAgICBSZW5kZXJUYWJsZUNvbCAqY29sR3JvdXAgPSBjb2xFbGVtZW50KHJp
Z2h0bW9zdENvbHVtbik7CisgICAgICAgIGlmIChjb2xHcm91cCkgeworICAgICAgICAgICAgY29u
c3QgQm9yZGVyVmFsdWUmIGdiID0gc3R5bGUoKS0+Ym9yZGVyUmlnaHQoKTsKKyAgICAgICAgICAg
IGlmIChnYi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICBpZiAoZ2Iuc3R5bGUoKSA+IEJISURERU4gJiYgZ2Iud2lkdGggPiBib3JkZXJX
aWR0aCkKKyAgICAgICAgICAgICAgICBib3JkZXJXaWR0aCA9IGdiLndpZHRoOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBSZW5kZXJPYmplY3QgKmNoaWxkID0gZmlyc3RDaGlsZCgpOwor
ICAgICAgICB3aGlsZSAoY2hpbGQgJiYgIWNoaWxkLT5pc1RhYmxlU2VjdGlvbigpKQorICAgICAg
ICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgaWYgKGNoaWxkICYm
IGNoaWxkLT5pc1RhYmxlU2VjdGlvbigpKSB7CisgICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rp
b24qIHNlY3Rpb24gPSBzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZVNlY3Rpb24qPihjaGlsZCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzZWN0aW9uLT5udW1Sb3dzKCkgPT0gMCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gKGJvcmRlcldpZHRoICsgMSkgLyAyOworICAgICAgICAgICAg
CisgICAgICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgc2IgPSBzZWN0aW9uLT5zdHlsZSgpLT5i
b3JkZXJSaWdodCgpOworICAgICAgICAgICAgaWYgKHNiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChzYi5zdHlsZSgpID4gQkhJ
RERFTiAmJiBzYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAgICAgICAgICAgIGJvcmRlcldp
ZHRoID0gc2Iud2lkdGg7CisKKyAgICAgICAgICAgIGNvbnN0IFJlbmRlclRhYmxlU2VjdGlvbjo6
Q2VsbFN0cnVjdCYgY3MgPSBzZWN0aW9uLT5jZWxsQXQoMCwgcmlnaHRtb3N0Q29sdW1uKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGNzLmNlbGwpIHsKKyAgICAgICAgICAgICAgICBj
b25zdCBCb3JkZXJWYWx1ZSYgY2IgPSBjcy5jZWxsLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpOwor
ICAgICAgICAgICAgICAgIGlmIChjYi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIGNvbnN0IEJvcmRlclZhbHVlJiByYiA9
IGNzLmNlbGwtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpOworICAgICAgICAgICAg
ICAgIGlmIChyYi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOworCisgICAgICAgICAgICAgICAgaWYgKGNiLnN0eWxlKCkgPiBCSElEREVOICYmIGNiLndp
ZHRoID4gYm9yZGVyV2lkdGgpCisgICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gY2Iu
d2lkdGg7CisgICAgICAgICAgICAgICAgaWYgKHJiLnN0eWxlKCkgPiBCSElEREVOICYmIHJiLndp
ZHRoID4gYm9yZGVyV2lkdGgpCisgICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gcmIu
d2lkdGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChib3JkZXJX
aWR0aCArIDEpIC8gMjsKICAgICB9CiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpib3JkZXJSaWdo
dCgpOwogfQogCit2b2lkIFJlbmRlclRhYmxlOjpyZWNhbGNIb3Jpem9udGFsQm9yZGVycygpCit7
CisgICAgbV9ib3JkZXJMZWZ0ID0gY2FsY0JvcmRlckxlZnQoKTsKKyAgICBtX2JvcmRlclJpZ2h0
ID0gY2FsY0JvcmRlclJpZ2h0KCk7Cit9CisKIGludCBSZW5kZXJUYWJsZTo6Ym9yZGVyVG9wKCkg
Y29uc3QKIHsKLSAgICBpZiAoY29sbGFwc2VCb3JkZXJzKCkpIHsKLSAgICAgICAgLy8gRklYTUU6
IEZvciBzdHJpY3QgbW9kZSwgcmV0dXJuaW5nIDAgaXMgY29ycmVjdCwgc2luY2UgdGhlIHRhYmxl
IGJvcmRlciBoYWxmIHNwaWxscyBpbnRvIHRoZSBtYXJnaW4sCi0gICAgICAgIC8vIGJ1dCBJJ20g
d29ya2luZyB0byBnZXQgdGhpcyBjaGFuZ2VkLiAgRm9yIG5vdywgZm9sbG93IHRoZSBzcGVjLgot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgaWYgKGNvbGxhcHNlQm9yZGVycygpKQorICAg
ICAgICByZXR1cm4gb3V0ZXJCb3JkZXJUb3AoKTsKICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmJv
cmRlclRvcCgpOwogfQogCiBpbnQgUmVuZGVyVGFibGU6OmJvcmRlckJvdHRvbSgpIGNvbnN0CiB7
Ci0gICAgaWYgKGNvbGxhcHNlQm9yZGVycygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBGb3Igc3Ry
aWN0IG1vZGUsIHJldHVybmluZyAwIGlzIGNvcnJlY3QsIHNpbmNlIHRoZSB0YWJsZSBib3JkZXIg
aGFsZiBzcGlsbHMgaW50byB0aGUgbWFyZ2luLAotICAgICAgICAvLyBidXQgSSdtIHdvcmtpbmcg
dG8gZ2V0IHRoaXMgY2hhbmdlZC4gIEZvciBub3csIGZvbGxvdyB0aGUgc3BlYy4KKyAgICBpZiAo
Y29sbGFwc2VCb3JkZXJzKCkpCisgICAgICAgIHJldHVybiBvdXRlckJvcmRlckJvdHRvbSgpOwor
ICAgIHJldHVybiBSZW5kZXJCbG9jazo6Ym9yZGVyQm90dG9tKCk7Cit9CisKK2ludCBSZW5kZXJU
YWJsZTo6b3V0ZXJCb3JkZXJUb3AoKSBjb25zdAoreworICAgIGlmICghY29sbGFwc2VCb3JkZXJz
KCkpCiAgICAgICAgIHJldHVybiAwOworICAgIGludCBib3JkZXJXaWR0aCA9IDA7CisgICAgUmVu
ZGVyVGFibGVTZWN0aW9uKiB0b3BTZWN0aW9uOworICAgIGlmIChoZWFkKQorICAgICAgICB0b3BT
ZWN0aW9uID0gaGVhZDsKKyAgICBlbHNlIGlmIChmaXJzdEJvZHkpCisgICAgICAgIHRvcFNlY3Rp
b24gPSBmaXJzdEJvZHk7CisgICAgZWxzZSBpZiAoZm9vdCkKKyAgICAgICAgdG9wU2VjdGlvbiA9
IGZvb3Q7CisgICAgZWxzZQorICAgICAgICB0b3BTZWN0aW9uID0gMDsKKyAgICBpZiAodG9wU2Vj
dGlvbikgeworICAgICAgICBib3JkZXJXaWR0aCA9IHRvcFNlY3Rpb24tPm91dGVyQm9yZGVyVG9w
KCk7CisgICAgICAgIGlmIChib3JkZXJXaWR0aCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAw
OyAgIC8vIE92ZXJyaWRkZW4gYnkgaGlkZGVuCiAgICAgfQotICAgIHJldHVybiBSZW5kZXJCbG9j
azo6Ym9yZGVyQm90dG9tKCk7CisgICAgY29uc3QgQm9yZGVyVmFsdWUmIHRiID0gc3R5bGUoKS0+
Ym9yZGVyVG9wKCk7CisgICAgaWYgKHRiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgaWYgKHRiLnN0eWxlKCkgPiBCSElEREVOICYmIChpbnQpKHRiLndpZHRoIC8g
MikgPiBib3JkZXJXaWR0aCkKKyAgICAgICAgYm9yZGVyV2lkdGggPSB0Yi53aWR0aCAvIDI7Cisg
ICAgcmV0dXJuIGJvcmRlcldpZHRoOwogfQogCitpbnQgUmVuZGVyVGFibGU6Om91dGVyQm9yZGVy
Qm90dG9tKCkgY29uc3QKK3sKKyAgICBpZiAoIWNvbGxhcHNlQm9yZGVycygpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICBpbnQgYm9yZGVyV2lkdGggPSAwOworICAgIFJlbmRlclRhYmxlU2VjdGlv
biogYm90dG9tU2VjdGlvbjsKKyAgICBpZiAoZm9vdCkKKyAgICAgICAgYm90dG9tU2VjdGlvbiA9
IGZvb3Q7CisgICAgZWxzZSB7CisgICAgICAgIFJlbmRlck9iamVjdCogY2hpbGQ7CisgICAgICAg
IGZvciAoY2hpbGQgPSBsYXN0Q2hpbGQoKTsgY2hpbGQgJiYgIWNoaWxkLT5pc1RhYmxlU2VjdGlv
bigpOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSk7CisgICAgICAgIGJvdHRvbVNl
Y3Rpb24gPSBjaGlsZCA/IHN0YXRpY19jYXN0PFJlbmRlclRhYmxlU2VjdGlvbiAqPihjaGlsZCkg
OiAwOworICAgIH0KKyAgICBpZiAoYm90dG9tU2VjdGlvbikgeworICAgICAgICBib3JkZXJXaWR0
aCA9IGJvdHRvbVNlY3Rpb24tPm91dGVyQm9yZGVyQm90dG9tKCk7CisgICAgICAgIGlmIChib3Jk
ZXJXaWR0aCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAwOyAgIC8vIE92ZXJyaWRkZW4gYnkg
aGlkZGVuCisgICAgfQorICAgIGNvbnN0IEJvcmRlclZhbHVlJiB0YiA9IHN0eWxlKCktPmJvcmRl
ckJvdHRvbSgpOworICAgIGlmICh0Yi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgIHJldHVy
biAwOworICAgIGlmICh0Yi5zdHlsZSgpID4gQkhJRERFTiAmJiAoaW50KSh0Yi53aWR0aCArIDEp
IC8gMiA+IGJvcmRlcldpZHRoKQorICAgICAgICBib3JkZXJXaWR0aCA9ICh0Yi53aWR0aCArIDEp
IC8gMjsKKyAgICByZXR1cm4gYm9yZGVyV2lkdGg7Cit9CisKK2ludCBSZW5kZXJUYWJsZTo6b3V0
ZXJCb3JkZXJMZWZ0KCkgY29uc3QKK3sKKyAgICBpZiAoIWNvbGxhcHNlQm9yZGVycygpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGludCBib3JkZXJXaWR0aCA9IDA7CisKKyAgICBjb25zdCBC
b3JkZXJWYWx1ZSYgdGIgPSBzdHlsZSgpLT5ib3JkZXJMZWZ0KCk7CisgICAgaWYgKHRiLnN0eWxl
KCkgPT0gQkhJRERFTikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKHRiLnN0eWxlKCkgPiBC
SElEREVOKQorICAgICAgICBib3JkZXJXaWR0aCA9IHRiLndpZHRoIC8gMjsKKworICAgIGJvb2wg
YWxsSGlkZGVuID0gdHJ1ZTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCAqY2hpbGQgPSBmaXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlm
ICghY2hpbGQtPmlzVGFibGVTZWN0aW9uKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaW50IHN3ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGFibGVTZWN0aW9uICo+KGNoaWxkKS0+b3V0
ZXJCb3JkZXJMZWZ0KCk7CisgICAgICAgIGlmIChzdyA9PSAtMSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhbGxIaWRkZW4gPSBmYWxzZTsKKyAgICAg
ICAgYm9yZGVyV2lkdGggPSBtYXgoYm9yZGVyV2lkdGgsIHN3KTsKKyAgICB9CisgICAgaWYgKGFs
bEhpZGRlbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gYm9yZGVyV2lkdGg7Cit9
CisKK2ludCBSZW5kZXJUYWJsZTo6b3V0ZXJCb3JkZXJSaWdodCgpIGNvbnN0Cit7CisgICAgaWYg
KCFjb2xsYXBzZUJvcmRlcnMoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQgYm9yZGVy
V2lkdGggPSAwOworCisgICAgY29uc3QgQm9yZGVyVmFsdWUmIHRiID0gc3R5bGUoKS0+Ym9yZGVy
UmlnaHQoKTsKKyAgICBpZiAodGIuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBpZiAodGIuc3R5bGUoKSA+IEJISURERU4pCisgICAgICAgIGJvcmRlcldpZHRoID0g
KHRiLndpZHRoICsgMSkgLyAyOworCisgICAgYm9vbCBhbGxIaWRkZW4gPSB0cnVlOworICAgIGZv
ciAoUmVuZGVyT2JqZWN0ICpjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFjaGlsZC0+aXNUYWJsZVNlY3Rpb24o
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpbnQgc3cgPSBzdGF0aWNfY2FzdDxS
ZW5kZXJUYWJsZVNlY3Rpb24gKj4oY2hpbGQpLT5vdXRlckJvcmRlclJpZ2h0KCk7CisgICAgICAg
IGlmIChzdyA9PSAtMSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBhbGxIaWRkZW4gPSBmYWxzZTsKKyAgICAgICAgYm9yZGVyV2lkdGggPSBtYXgoYm9y
ZGVyV2lkdGgsIHN3KTsKKyAgICB9CisgICAgaWYgKGFsbEhpZGRlbikKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gYm9yZGVyV2lkdGg7Cit9CisKIFJlbmRlclRhYmxlQ2VsbCogUmVu
ZGVyVGFibGU6OmNlbGxBYm92ZShjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNvbnN0CiB7
CiAgICAgLy8gRmluZCB0aGUgc2VjdGlvbiBhbmQgcm93IHRvIGxvb2sgaW4KQEAgLTY4NCw2ICs5
MDcsOCBAQAogICAgICAgICBzZWN0aW9uID0gY2VsbC0+c2VjdGlvbigpOwogICAgICAgICByQWJv
dmUgPSByLTE7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGNlbGwtPnNlY3Rpb24oKSA9PSBo
ZWFkKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIC8vIGNlbGwgaXMgYXQgdG9wIG9m
IGEgc2VjdGlvbiwgdXNlIGxhc3Qgcm93IGluIHByZXZpb3VzIHNlY3Rpb24KICAgICAgICAgZm9y
IChSZW5kZXJPYmplY3QgKnByZXZTZWN0aW9uID0gY2VsbC0+c2VjdGlvbigpLT5wcmV2aW91c1Np
YmxpbmcoKTsKICAgICAgICAgICAgICBwcmV2U2VjdGlvbiAmJiByQWJvdmUgPCAwOwpAQCAtNzIx
LDYgKzk0Niw4IEBACiAgICAgICAgIHNlY3Rpb24gPSBjZWxsLT5zZWN0aW9uKCk7CiAgICAgICAg
IHJCZWxvdz0gcisxOwogICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjZWxsLT5zZWN0aW9uKCkg
PT0gZm9vdCkKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAvLyBUaGUgY2VsbCBpcyBh
dCB0aGUgYm90dG9tIG9mIGEgc2VjdGlvbi4gVXNlIHRoZSBmaXJzdCByb3cgaW4gdGhlIG5leHQg
c2VjdGlvbi4KICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIG5leHRTZWN0aW9uID0gY2VsbC0+
c2VjdGlvbigpLT5uZXh0U2libGluZygpOwogICAgICAgICAgICAgIG5leHRTZWN0aW9uICYmIHJC
ZWxvdyA8IDA7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfc3R5bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5jcHAJKHJldmlzaW9uIDEz
ODY5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzczLDcgKzc3MywyMCBAQAogICAgICAgICAgICAgICEoaW5oZXJpdGVkX2ZsYWdzLl9l
bXB0eV9jZWxscyA9PSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscykgfHwKICAg
ICAgICAgICAgICAhKGluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9zaWRlID09IG90aGVyLT5pbmhl
cml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZSkgfHwKICAgICAgICAgICAgICAhKG5vbmluaGVyaXRl
ZF9mbGFncy5fdGFibGVfbGF5b3V0ID09IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3RhYmxl
X2xheW91dCkpCi0gICAgICAgIHJldHVybiBMYXlvdXQ7CisgICAgICAgICAgICByZXR1cm4gTGF5
b3V0OworICAgICAgICAKKyAgICAgICAgLy8gSW4gdGhlIGNvbGxhcHNpbmcgYm9yZGVyIG1vZGVs
LCAnaGlkZGVuJyBzdXBwcmVzc2VzIG90aGVyIGJvcmRlcnMsIHdoaWxlICdub25lJworICAgICAg
ICAvLyBkb2VzIG5vdCwgc28gdGhlc2Ugc3R5bGUgZGlmZmVyZW5jZXMgY2FuIGJlIHdpZHRoIGRp
ZmZlcmVuY2VzLgorICAgICAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2Ug
JiYKKyAgICAgICAgICAgIChib3JkZXJUb3BTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXItPmJv
cmRlclRvcFN0eWxlKCkgPT0gQk5PTkUgfHwKKyAgICAgICAgICAgICBib3JkZXJUb3BTdHlsZSgp
ID09IEJOT05FICYmIG90aGVyLT5ib3JkZXJUb3BTdHlsZSgpID09IEJISURERU4gfHwKKyAgICAg
ICAgICAgICBib3JkZXJCb3R0b21TdHlsZSgpID09IEJISURERU4gJiYgb3RoZXItPmJvcmRlckJv
dHRvbVN0eWxlKCkgPT0gQk5PTkUgfHwKKyAgICAgICAgICAgICBib3JkZXJCb3R0b21TdHlsZSgp
ID09IEJOT05FICYmIG90aGVyLT5ib3JkZXJCb3R0b21TdHlsZSgpID09IEJISURERU4gfHwKKyAg
ICAgICAgICAgICBib3JkZXJMZWZ0U3R5bGUoKSA9PSBCSElEREVOICYmIG90aGVyLT5ib3JkZXJM
ZWZ0U3R5bGUoKSA9PSBCTk9ORSB8fAorICAgICAgICAgICAgIGJvcmRlckxlZnRTdHlsZSgpID09
IEJOT05FICYmIG90aGVyLT5ib3JkZXJMZWZ0U3R5bGUoKSA9PSBCSElEREVOIHx8CisgICAgICAg
ICAgICAgYm9yZGVyUmlnaHRTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXItPmJvcmRlclJpZ2h0
U3R5bGUoKSA9PSBCTk9ORSB8fAorICAgICAgICAgICAgIGJvcmRlclJpZ2h0U3R5bGUoKSA9PSBC
Tk9ORSAmJiBvdGhlci0+Ym9yZGVyUmlnaHRTdHlsZSgpID09IEJISURERU4pKQorICAgICAgICAg
ICAgcmV0dXJuIExheW91dDsKICAgICB9CiAKIC8vIG9ubHkgZm9yIGxpc3RzOgo=
</data>
<flag name="review"
          id="2101"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7797</attachid>
            <date>2006-04-18 04:14:52 -0700</date>
            <delta_ts>2006-04-18 04:14:52 -0700</delta_ts>
            <desc>Table background test case</desc>
            <filename>table background.html</filename>
            <type>text/html</type>
            <size>420</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PHN0eWxlPgogICAgdGFibGUgeyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBib3JkZXI6IDFw
eCBzb2xpZCByZWQ7IH0KICAgIHRkIHsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IH0KPC9z
dHlsZT4KPHRhYmxlIHN0eWxlPSJiYWNrZ3JvdW5kOiB1cmwoaHR0cDovL29wZW5kYXJ3aW4ub3Jn
L2ltYWdlcy9pc2MucG5nKTsiPgo8dHI+CiAgICA8dGQgc3R5bGU9ImJvcmRlci10b3A6IDEwcHgg
ZG90dGVkIHJlZDsiPgogICAgPC90ZD4KICAgIDx0ZD4KICAgIDwvdGQ+CjwvdHI+CjwvdGFibGU+
Cjxocj4KPHRhYmxlIHN0eWxlPSJiYWNrZ3JvdW5kOiBibHVlOyI+Cjx0cj4KICAgIDx0ZCBzdHls
ZT0iYm9yZGVyLXRvcDogMTBweCBkb3R0ZWQgcmVkOyI+CiAgICA8L3RkPgogICAgPHRkPgogICAg
PC90ZD4KPC90cj4KPC90YWJsZT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7798</attachid>
            <date>2006-04-18 04:15:16 -0700</date>
            <delta_ts>2006-04-18 04:15:16 -0700</delta_ts>
            <desc>Current background positioning</desc>
            <filename>before.png</filename>
            <type>image/png</type>
            <size>4651</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7799</attachid>
            <date>2006-04-18 04:17:40 -0700</date>
            <delta_ts>2006-04-18 04:17:40 -0700</delta_ts>
            <desc>Background positioning with the patch</desc>
            <filename>after.png</filename>
            <type>image/png</type>
            <size>4806</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">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
v+BFRnssAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7855</attachid>
            <date>2006-04-20 13:49:55 -0700</date>
            <delta_ts>2006-04-20 13:49:55 -0700</delta_ts>
            <desc>Another background test case</desc>
            <filename>collapsed borders.html</filename>
            <type>text/html</type>
            <size>793</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDov
L3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgo8aGVhZD4KPHN0eWxlPgog
ICAgdGFibGUgewogICAgICAgIGJhY2tncm91bmQ6IHVybChjcm9zc2hhaXIuZ2lmKTsKICAgICAg
ICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICAgIGJvcmRlci1ib3R0b206IDRweCBk
YXNoZWQgcmVkOwogICAgfQogICAgCiAgICB0ZCB7CiAgICAgICAgd2lkdGg6IDEyMHB4OwogICAg
ICAgIGhlaWdodDogMTIwcHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIH0K
CiAgICB0ZC5yIHsKICAgICAgICBib3JkZXItdG9wOiA4cHggZGFzaGVkIGJsYWNrOwogICAgfQog
ICAgdGQubSB7CiAgICAgICAgYm9yZGVyLXRvcDogNHB4IGRhc2hlZCBibGFjazsKICAgICAgICBi
b3JkZXItYm90dG9tOiA4cHggZGFzaGVkIGdyZWVuOwogICAgfQogICAgCiAgICBkaXYgewogICAg
ICAgIHdpZHRoOiA4MHB4OwogICAgICAgIGhlaWdodDogODBweDsKICAgICAgICBiYWNrZ3JvdW5k
OiBibGFjazsKICAgICAgICBtYXJnaW4tbGVmdDogMjBweDs7CiAgICB9Cjwvc3R5bGU+CjwvaGVh
ZD4KPGJvZHk+Cjx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgo8dHI+Cjx0
ZD48ZGl2PjwvZGl2PjwvdGQ+Cjx0ZCBjbGFzcz0ibSI+PGRpdj48L2Rpdj48L3RkPgo8dGQgY2xh
c3M9InIiPjxkaXY+PC9kaXY+PC90ZD4KPC90ZD4KPC90cj4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7856</attachid>
            <date>2006-04-20 13:50:46 -0700</date>
            <delta_ts>2006-04-20 13:50:46 -0700</delta_ts>
            <desc>WinIE rendering</desc>
            <filename>WinIE.png</filename>
            <type>image/png</type>
            <size>2180</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">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
H8EAAAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7857</attachid>
            <date>2006-04-20 13:51:15 -0700</date>
            <delta_ts>2006-04-20 13:51:15 -0700</delta_ts>
            <desc>Firefox rendering</desc>
            <filename>Firefox.png</filename>
            <type>image/png</type>
            <size>2011</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">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
Ck/eNwAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7858</attachid>
            <date>2006-04-20 13:51:44 -0700</date>
            <delta_ts>2006-04-20 13:51:44 -0700</delta_ts>
            <desc>TOT WebKit rendering</desc>
            <filename>WebKit-TOT.png</filename>
            <type>image/png</type>
            <size>2116</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">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
RU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7859</attachid>
            <date>2006-04-20 13:54:45 -0700</date>
            <delta_ts>2006-04-20 13:54:45 -0700</delta_ts>
            <desc>Patched WebKit rendering - painting in the table&apos;s border box</desc>
            <filename>WebKit-patched.png</filename>
            <type>image/png</type>
            <size>2183</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">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
g3MZNB8AAAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8094</attachid>
            <date>2006-05-03 06:43:35 -0700</date>
            <delta_ts>2006-05-06 22:59:56 -0700</delta_ts>
            <desc>Patch including change log and repaint test</desc>
            <filename>6838_r0.5.patch</filename>
            <type>text/plain</type>
            <size>42164</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0MTcwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDYtMDUtIyMgIE1pdHogUGV0dGVsICA8b3Bl
bmRhcndpbi5vcmdAbWl0enBldHRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODM4CisgICAgICAgICAgSW5jb21wbGV0ZSByZXBhaW50IG9mIGNv
bGxhcHNlZCB0YWJsZSBib3JkZXJzCisgICAgICAgICAgCisgICAgICAgICogZmFzdC9yZXBhaW50
L3RhYmxlLWNvbGxhcHNlZC1ib3JkZXItZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvcmVwYWludC90YWJsZS1jb2xsYXBzZWQtYm9yZGVyLWV4cGVjdGVkLnBuZzogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZXBhaW50L3RhYmxlLWNvbGxhcHNlZC1ib3JkZXItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvdGFibGUtY29sbGFwc2VkLWJv
cmRlci5odG1sOiBBZGRlZC4KKwogMjAwNi0wNS0wMiAgSnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5n
YXJjaWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IGhhcnJpc29uCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvdGFibGUtY29sbGFwc2VkLWJvcmRlci1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3RhYmxlLWNvbGxhcHNl
ZC1ib3JkZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9y
ZXBhaW50L3RhYmxlLWNvbGxhcHNlZC1ib3JkZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDczIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2Fu
dmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCwxMCkgc2l6ZSA3ODR4NTgwCisgICAgICBSZW5kZXJUYWJsZSB7VEFCTEV9
IGF0ICgwLDApIHNpemUgOTV4NzYgW2JvcmRlcjogKDRweCBzb2xpZCAjMDA4MDAwKV0KKyAgICAg
ICAgUmVuZGVyVGFibGVTZWN0aW9uIHtUQk9EWX0gYXQgKDQsNCkgc2l6ZSA4N3g2OAorICAgICAg
ICAgIFJlbmRlclRhYmxlUm93IHtUUn0gYXQgKDAsMCkgc2l6ZSA4N3gyNAorICAgICAgICAgICAg
UmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDAsOSkgc2l6ZSA2eDYgW2JvcmRlcjogKDRweCBub25l
ICMwMDAwMDApXSBbcj0wIGM9MCBycz0xIGNzPTFdCisgICAgICAgICAgICBSZW5kZXJUYWJsZUNl
bGwge1REfSBhdCAoNiwwKSBzaXplIDgxeDI0IFtib3JkZXI6ICg0cHggbm9uZSAjMDAwMDAwKV0g
W3I9MCBjPTEgcnM9MSBjcz0xXQorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDEsNSkgc2l6ZSA0MngxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDUpIHdpZHRo
IDQyOiAiTG9yZW0iCisgICAgICAgICAgUmVuZGVyVGFibGVSb3cge1RSfSBhdCAoMCwyNCkgc2l6
ZSA4N3gyMAorICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDAsMzMpIHNpemUg
NngyIFtib3JkZXI6IG5vbmVdIFtyPTEgYz0wIHJzPTEgY3M9MV0KKyAgICAgICAgICAgIFJlbmRl
clRhYmxlQ2VsbCB7VER9IGF0ICg2LDI0KSBzaXplIDgxeDIwIFtib3JkZXI6IG5vbmVdIFtyPTEg
Yz0xIHJzPTEgY3M9MV0KKyAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDEp
IHNpemUgNzV4MTgKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxKSB3aWR0aCA3NTog
Imlwc3VtIGRvbG9yIgorICAgICAgICAgIFJlbmRlclRhYmxlUm93IHtUUn0gYXQgKDAsNDQpIHNp
emUgODd4MjQKKyAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCB7VER9IGF0ICgwLDUzKSBzaXpl
IDZ4NiBbYm9yZGVyOiBub25lXSBbcj0yIGM9MCBycz0xIGNzPTFdCisgICAgICAgICAgICBSZW5k
ZXJUYWJsZUNlbGwge1REfSBhdCAoNiw0NCkgc2l6ZSA4MXgyNCBbYm9yZGVyOiBub25lXSBbcj0y
IGM9MSBycz0xIGNzPTFdCisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwx
KSBzaXplIDQ4eDE4CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMSkgd2lkdGggNDg6
ICJzaXQgYW1ldCIKKyAgICAgIFJlbmRlclRhYmxlIHtUQUJMRX0gYXQgKDAsODYpIHNpemUgNzJ4
NzYgW2JvcmRlcjogKDRweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVyVGFibGVTZWN0
aW9uIHtUQk9EWX0gYXQgKDQsNCkgc2l6ZSA2NHg2OAorICAgICAgICAgIFJlbmRlclRhYmxlUm93
IHtUUn0gYXQgKDAsMCkgc2l6ZSA2NHgyNAorICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsIHtU
RH0gYXQgKDAsOSkgc2l6ZSAxMHg2IFtib3JkZXI6ICg0cHggbm9uZSAjMDAwMDAwKV0gW3I9MCBj
PTAgcnM9MSBjcz0xXQorICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDEwLDAp
IHNpemUgNTR4MjQgW2JvcmRlcjogKDRweCBub25lICMwMDAwMDApXSBbcj0wIGM9MSBycz0xIGNz
PTFdCisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSw1KSBzaXplIDQyeDE4
CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEsNSkgd2lkdGggNDI6ICJMb3JlbSIKKyAg
ICAgICAgICBSZW5kZXJUYWJsZVJvdyB7VFJ9IGF0ICgwLDI0KSBzaXplIDY0eDIwCisgICAgICAg
ICAgICBSZW5kZXJUYWJsZUNlbGwge1REfSBhdCAoMCwyNCkgc2l6ZSAxMHgyMCBbYm9yZGVyOiBu
b25lXSBbcj0xIGM9MCBycz0xIGNzPTFdCisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoNSwxKSBzaXplIDR4MTgKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNSwxKSB3
aWR0aCA0OiAiICIKKyAgICAgICAgICBSZW5kZXJUYWJsZVJvdyB7VFJ9IGF0ICgwLDQ0KSBzaXpl
IDY0eDI0CisgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwge1REfSBhdCAoMCw1Mykgc2l6ZSAx
MHg2IFtib3JkZXI6IG5vbmVdIFtyPTIgYz0wIHJzPTEgY3M9MV0KKyAgICAgICAgICAgIFJlbmRl
clRhYmxlQ2VsbCB7VER9IGF0ICgxMCw0NCkgc2l6ZSA1NHgyNCBbYm9yZGVyOiBub25lXSBbcj0y
IGM9MSBycz0xIGNzPTFdCisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwx
KSBzaXplIDQ4eDE4CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMSkgd2lkdGggNDg6
ICJzaXQgYW1ldCIKKyAgICAgIFJlbmRlclRhYmxlIHtUQUJMRX0gYXQgKDAsMTcyKSBzaXplIDEw
OHg3NiBbYm9yZGVyOiAoNHB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJUYWJsZVNl
Y3Rpb24ge1RCT0RZfSBhdCAoNCw0KSBzaXplIDEwMHg2OAorICAgICAgICAgIFJlbmRlclRhYmxl
Um93IHtUUn0gYXQgKDAsMCkgc2l6ZSAxMDB4MjQKKyAgICAgICAgICAgIFJlbmRlclRhYmxlQ2Vs
bCB7VER9IGF0ICgwLDkpIHNpemUgMTB4NiBbYm9yZGVyOiAoNHB4IG5vbmUgIzAwMDAwMCldIFty
PTAgYz0wIHJzPTEgY3M9MV0KKyAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCB7VER9IGF0ICgx
MCwwKSBzaXplIDkweDI0IFtib3JkZXI6ICg0cHggbm9uZSAjMDAwMDAwKV0gW3I9MCBjPTEgcnM9
MSBjcz0xXQorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsNSkgc2l6ZSA4
NHgxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDUpIHdpZHRoIDg0OiAiTG9yZW0g
aXBzdW0iCisgICAgICAgICAgUmVuZGVyVGFibGVSb3cge1RSfSBhdCAoMCwyNCkgc2l6ZSAxMDB4
MjAKKyAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCB7VER9IGF0ICgwLDI0KSBzaXplIDEweDIw
IFtib3JkZXI6IG5vbmVdIFtyPTEgYz0wIHJzPTEgY3M9MV0KKyAgICAgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICg1LDEpIHNpemUgNHgxOAorICAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICg1LDEpIHdpZHRoIDQ6ICIgIgorICAgICAgICAgIFJlbmRlclRhYmxlUm93IHtUUn0gYXQg
KDAsNDQpIHNpemUgMTAweDI0CisgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwge1REfSBhdCAo
MCw1Mykgc2l6ZSAxMHg2IFtib3JkZXI6IG5vbmVdIFtyPTIgYz0wIHJzPTEgY3M9MV0KKyAgICAg
ICAgICAgIFJlbmRlclRhYmxlQ2VsbCB7VER9IGF0ICgxMCw0NCkgc2l6ZSA5MHgyNCBbYm9yZGVy
OiBub25lXSBbcj0yIGM9MSBycz0xIGNzPTFdCisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMSwxKSBzaXplIDQ4eDE4CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEs
MSkgd2lkdGggNDg6ICJzaXQgYW1ldCIKKyAgICAgIFJlbmRlclRhYmxlIHtUQUJMRX0gYXQgKDAs
MjU4KSBzaXplIDk5eDc2IFtib3JkZXI6ICg0cHggc29saWQgIzAwMDAwMCldCisgICAgICAgIFJl
bmRlclRhYmxlU2VjdGlvbiB7VEJPRFl9IGF0ICg0LDQpIHNpemUgOTF4NjgKKyAgICAgICAgICBS
ZW5kZXJUYWJsZVJvdyB7VFJ9IGF0ICgwLDApIHNpemUgOTF4MjQKKyAgICAgICAgICAgIFJlbmRl
clRhYmxlQ2VsbCB7VER9IGF0ICgwLDkpIHNpemUgMTB4NiBbYm9yZGVyOiAoNHB4IG5vbmUgIzAw
MDAwMCldIFtyPTAgYz0wIHJzPTEgY3M9MV0KKyAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCB7
VER9IGF0ICgxMCwwKSBzaXplIDgxeDI0IFtib3JkZXI6ICg0cHggbm9uZSAjMDAwMDAwKV0gW3I9
MCBjPTEgcnM9MSBjcz0xXQorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEs
NSkgc2l6ZSA0MngxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDUpIHdpZHRoIDQy
OiAiTG9yZW0iCisgICAgICAgICAgUmVuZGVyVGFibGVSb3cge1RSfSBhdCAoMCwyNCkgc2l6ZSA5
MXgyMAorICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDAsMjQpIHNpemUgMTB4
MjAgW2JvcmRlcjogbm9uZV0gW3I9MSBjPTAgcnM9MSBjcz0xXQorICAgICAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDUsMSkgc2l6ZSA0eDE4CisgICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDUsMSkgd2lkdGggNDogIiAiCisgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwge1RE
fSBhdCAoMTAsMjQpIHNpemUgODF4MjAgW2JvcmRlcjogbm9uZV0gW3I9MSBjPTEgcnM9MSBjcz0x
XQorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMSkgc2l6ZSA3NXgxOAor
ICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDc1OiAiaXBzdW0gZG9sb3Ii
CisgICAgICAgICAgUmVuZGVyVGFibGVSb3cge1RSfSBhdCAoMCw0NCkgc2l6ZSA5MXgyNAorICAg
ICAgICAgICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDAsNTMpIHNpemUgMTB4NiBbYm9yZGVy
OiBub25lXSBbcj0yIGM9MCBycz0xIGNzPTFdCisgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwg
e1REfSBhdCAoMTAsNDQpIHNpemUgODF4MjQgW2JvcmRlcjogbm9uZV0gW3I9MiBjPTEgcnM9MSBj
cz0xXQorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMSkgc2l6ZSA0OHgx
OAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDQ4OiAic2l0IGFtZXQi
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvdGFibGUtY29sbGFwc2VkLWJvcmRlci5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC90YWJsZS1jb2xsYXBz
ZWQtYm9yZGVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQv
dGFibGUtY29sbGFwc2VkLWJvcmRlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMSBA
QAorPGhlYWQ+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgdGFibGUgewor
ICAgICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKKyAgICAgICAgICAgIGJvcmRl
cjogOHB4IHNvbGlkOworICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDAgMTBweCAwOworICAgICAg
ICB9CisgICAgPC9zdHlsZT4KKwk8c2NyaXB0IHNyYz0icmVwYWludC5qcyIgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij48L3NjcmlwdD4KKwk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJ
ICAgZnVuY3Rpb24gcmVwYWludFRlc3QoKQorCSAgIHsKKyAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3QnKS5zdHlsZS5ib3JkZXJDb2xvciA9ICdncmVlbic7CisgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyJykucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2QnKSk7CisgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMicp
LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkMicpKTsKKyAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2QzJykuaW5uZXJIVE1MID0gJ2lwc3VtIGRvbG9yJzsK
KwkgICB9CisJPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blJlcGFpbnRUZXN0
KCk7Ij4KKyAgICA8dGFibGUgaWQ9InQiPgorICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQ+
CisgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkPkxvcmVtCisgICAgICAgICAgICA8
L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQ+CisgICAg
ICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkPmlwc3VtIGRvbG9yCisgICAgICAgICAgICA8
L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQ+CisgICAg
ICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkPnNpdCBhbWV0CisgICAgICAgICAgICA8L3Rk
PgorICAgICAgICA8L3RyPgorICAgIDwvdGFibGU+CisgICAgPHRhYmxlPgorICAgICAgICA8dHI+
CisgICAgICAgICAgICA8dGQ+CisgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkPkxv
cmVtCisgICAgICAgICAgICA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHIgaWQ9InIi
PgorICAgICAgICAgICAgPHRkPiZuYnNwOworICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAg
IDx0ZCBpZD0iZCI+aXBzdW0gZG9sb3IKKyAgICAgICAgICAgIDwvdGQ+CisgICAgICAgIDwvdHI+
CisgICAgICAgIDx0cj4KKyAgICAgICAgICAgIDx0ZD4KKyAgICAgICAgICAgIDwvdGQ+CisgICAg
ICAgICAgICA8dGQ+c2l0IGFtZXQKKyAgICAgICAgICAgIDwvdGQ+CisgICAgICAgIDwvdHI+Cisg
ICAgPC90YWJsZT4KKyAgICA8dGFibGU+CisgICAgICAgIDx0cj4KKyAgICAgICAgICAgIDx0ZD4K
KyAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8dGQ+TG9yZW0gaXBzdW0KKyAgICAgICAg
ICAgIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0ciBpZD0icjIiPgorICAgICAgICAg
ICAgPHRkPiZuYnNwOworICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIDx0ZCBpZD0iZDIi
PmRvbG9yCisgICAgICAgICAgICA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+Cisg
ICAgICAgICAgICA8dGQ+CisgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkPnNpdCBh
bWV0CisgICAgICAgICAgICA8L3RkPgorICAgICAgICA8L3RyPgorICAgIDwvdGFibGU+CisgICAg
PHRhYmxlPgorICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQ+CisgICAgICAgICAgICA8L3Rk
PgorICAgICAgICAgICAgPHRkPkxvcmVtCisgICAgICAgICAgICA8L3RkPgorICAgICAgICA8L3Ry
PgorICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQ+Jm5ic3A7CisgICAgICAgICAgICA8L3Rk
PgorICAgICAgICAgICAgPHRkIGlkPSJkMyI+CisgICAgICAgICAgICA8L3RkPgorICAgICAgICA8
L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQ+CisgICAgICAgICAgICA8L3RkPgor
ICAgICAgICAgICAgPHRkPnNpdCBhbWV0CisgICAgICAgICAgICA8L3RkPgorICAgICAgICA8L3Ry
PgorICAgIDwvdGFibGU+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQv
dGFibGUtY29sbGFwc2VkLWJvcmRlci1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlz
cGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxp
Y2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogdGFibGUtY29sbGFwc2Vk
LWJvcmRlci1leHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsg
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50
L3RhYmxlLWNvbGxhcHNlZC1ib3JkZXItZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3RhYmxlLWNvbGxhcHNlZC1ib3JkZXItZXhwZWN0ZWQu
Y2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvdGFibGUt
Y29sbGFwc2VkLWJvcmRlci1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSBAQAorZjkwMjAwMWUyYTlmMGQ2NDBlNmM4MTM4MDlmZjVmMjMKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTQxNzApCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDA2LTA1LSMjICBNaXR6IFBldHRlbCAgPG9wZW5k
YXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjgzOAorICAgICAgICAgIEluY29tcGxldGUgcmVwYWludCBvZiBjb2xs
YXBzZWQgdGFibGUgYm9yZGVycworICAgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIHVwZGF0
ZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGNvbGxhcHNpbmcgYm9yZGVycyB0byBtYXRjaAorICAg
ICAgICB0aGUgY3VycmVudCBzcGVjLgorCisgICAgICAgIFRlc3Q6IGZhc3QvcmVwYWludC90YWJs
ZS1jb2xsYXBzZWQtYm9yZGVyLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmxheW91dCk6IENhbGN1bGF0ZSBob3Jpem9udGFs
IG92ZXJmbG93cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjYWxjTWluTWF4V2lk
dGgpOiBBZGRlZCBjYWxsIHRvIHJlY2FsY0hvcml6b250YWxCb3JkZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGU6OmNvbEVsZW1lbnQpOiBNYWRlIGNvbnN0LgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGU6OmNhbGNCb3JkZXJMZWZ0KTogQ2FsY3VsYXRlcyB0aGUgbGVmdCBi
b3JkZXIuIEluIHRoZSBjb2xsYXBzaW5nCisgICAgICAgIGJvcmRlcnMgbW9kZWwsIHRoaXMgaXMg
dGhlIGxlZnQgYm9yZGVyIG9mIHRoZSBsZWZ0bW9zdCBjZWxsIG9mIHRoZSBmaXJzdCByb3cuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y2FsY0JvcmRlclJpZ2h0KTogRGl0dG8gZm9y
IHRoZSByaWdodCBib3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6cmVjYWxj
SG9yaXpvbnRhbEJvcmRlcnMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
Ojpib3JkZXJUb3ApOiBDaGFuZ2VkIHRvIHJldHVybiBvdXRlckJvcmRlclRvcCBpbiB0aGUKKyAg
ICAgICAgY29sbGFwc2luZyBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmJv
cmRlckJvdHRvbSk6IENoYW5nZWQgdG8gcmV0dXJuIG91dGVyQm9yZGVyQm90dG9tIGluCisgICAg
ICAgIHRoZSBjb2xsYXBzaW5nIGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6
b3V0ZXJCb3JkZXJUb3ApOiBBZGRlZC4gUmV0dXJucyB0aGUgdGFibGUgaGFsZiBvZiB0aGUKKyAg
ICAgICAgdG9wIGJvcmRlciwgd2hpY2ggaXMgaGFsZiB0aGUgd2lkZXN0IHRvcCBib3JkZXIgb24g
dGhlIGZpcnN0IHJvdy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpvdXRlckJvcmRl
ckJvdHRvbSk6IEFkZGVkLiBSZXR1cm5zIHRoZSB0YWJsZSBoYWxmIG9mIHRoZQorICAgICAgICBi
b3R0b20gYm9yZGVyLCB3aGljaCBpcyBoYWxmIHRoZSB3aWRlc3QgYm90dG9tIGJvcmRlciBvbiB0
aGUgbGFzdCByb3cuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6b3V0ZXJCb3JkZXJM
ZWZ0KTogQWRkZWQuIFJldHVybnMgdGhlIHRhYmxlIGhhbGYgb2YgdGhlCisgICAgICAgIGxlZnQg
Ym9yZGVyLCB3aGljaCBpcyBoYWxmIHRoZSB3aWRlc3QgbGVmdCBib3JkZXIgb24gdGhlIGxlZnRt
b3N0IGNvbHVtbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpvdXRlckJvcmRlclJp
Z2h0KTogQWRkZWQuIFJldHVybnMgdGhlIHRhYmxlIGhhbGYgb2YgdGhlCisgICAgICAgIHJpZ2h0
IGJvcmRlciwgd2hpY2ggaXMgaGFsZiB0aGUgd2lkZXN0IHJpZ2h0IGJvcmRlciBvbiB0aGUgcmln
aHRtb3N0IGNvbHVtbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjZWxsQWJvdmUp
OiBSZXR1cm4gMCBpZiB0aGUgY2VsbCBpcyBpbiB0aGUgZmlyc3Qgcm93CisgICAgICAgIG9mIHRo
ZSBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y2VsbEJlbG93KTogUmV0
dXJuIDAgaWYgdGhlIGNlbGwgaXMgaW4gdGhlIGxhc3Qgcm93CisgICAgICAgIG9mIHRoZSBmb290
ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZTo6Ym9yZGVyTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6Ym9yZGVyUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6Om92ZXJmbG93
SGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyTGVmdCk6IFJlbW92ZWQgdW5uZWNl
c3NhcnkgdXNlIG9mIGZsb2F0cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6
Ym9yZGVyVG9wKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBh
aW50KTogQWNjb3VudCBmb3IgdGhlIHRhYmxlIGhhbGYgb2YgdGhlIHZlcnRpY2FsCisgICAgICAg
IGJvcmRlcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFw
c2VkQm9yZGVyKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSB1c2Ugb2YKKyAgICAgICAgZmxvYXRzLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXRSb3dzKTogQWRkZWQgY2FsbCB0byBy
ZWNhbGNPdXRlckJvcmRlci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6
Y2FsY091dGVyQm9yZGVyVG9wKTogQWRkZWQuIENhbGN1bGF0ZXMgdGhlIG91dGVyIGhhbGYgb2YK
KyAgICAgICAgdGhlIHNlY3Rpb24ncyB0b3AgYm9yZGVyLCB3aGljaCBpcyBoYWxmIHRoZSB3aWRl
c3QgdG9wIGJvcmRlciBvbiB0aGUgZmlyc3Qgcm93LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVTZWN0aW9uOjpjYWxjT3V0ZXJCb3JkZXJCb3R0b20pOiBEaXR0byBmb3IgdGhlIGJvdHRv
bSBib3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNPdXRl
ckJvcmRlckxlZnQpOiBEaXR0byBmb3IgdGhlIGxlZnQgYm9yZGVyLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjT3V0ZXJCb3JkZXJSaWdodCk6IERpdHRvIGZvciB0
aGUgcmlnaHQgYm9yZGVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpy
ZWNhbGNPdXRlckJvcmRlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVT
ZWN0aW9uOjpwYWludCk6IEFjY291bnQgZm9yIHRoZSB0YWJsZSBoYWxmIG9mIHRoZSBib3JkZXJz
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6b3V0ZXJCb3JkZXJUb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpvdXRlckJvcmRlckJvdHRvbSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246Om91dGVyQm9yZGVyTGVmdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246Om91dGVyQm9yZGVyUmlnaHQpOgorICAgICAgICAq
IHJlbmRlcmluZy9yZW5kZXJfc3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmRpZmYpOiBDaGFuZ2VkIHRvIHJldHVybiBMYXlvdXQgaWYgYSBib3JkZXIgc3R5bGUgY2hh
bmdlZAorICAgICAgICBmcm9tICdoaWRkZW4nIHRvICdub25lJyBvciB2aWNlIHZlcnNhIGluIHRo
ZSBjb2xsYXBzaW5nIGJvcmRlcnMgbW9kZWwsIHNpbmNlCisgICAgICAgICdoaWRkZW4nIHN1cHBy
ZXNzZXMgb3RoZXIgYm9yZGVycy4KKwogMjAwNi0wNS0wMiAgQWRlbGUgUGV0ZXJzb24gIDxhZGVs
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aC4KSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkocmV2aXNpb24gMTQxNzApCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVT
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCisjaW5jbHVkZSAiUmVuZGVy
VGFibGVDb2wuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgogI2luY2x1ZGUgIlJlbmRl
clRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTQ5LDYgKzUwLDEwIEBAIFJl
bmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKE4KICAgICBjQ29sID0gMDsKICAg
ICBjUm93ID0gLTE7CiAgICAgbmVlZENlbGxSZWNhbGMgPSBmYWxzZTsKKyAgICBtX291dGVyQm9y
ZGVyTGVmdCA9IDA7CisgICAgbV9vdXRlckJvcmRlclJpZ2h0ID0gMDsKKyAgICBtX291dGVyQm9y
ZGVyVG9wID0gMDsKKyAgICBtX291dGVyQm9yZGVyQm90dG9tID0gMDsKIH0KIAogUmVuZGVyVGFi
bGVTZWN0aW9uOjp+UmVuZGVyVGFibGVTZWN0aW9uKCkKQEAgLTM3MCw2ICszNzUsOCBAQCBpbnQg
UmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXRSb3dzKGludCB0CiAgICAgCiAgICAgLy8gU2V0IHRo
ZSB3aWR0aCBvZiBvdXIgc2VjdGlvbiBub3cuICBUaGUgcm93cyB3aWxsIGFsc28gYmUgdGhpcyB3
aWR0aC4KICAgICBtX3dpZHRoID0gdGFibGUoKS0+Y29udGVudFdpZHRoKCk7CisgICAgaWYgKHRh
YmxlKCktPmNvbGxhcHNlQm9yZGVycygpKQorICAgICAgICByZWNhbGNPdXRlckJvcmRlcigpOwog
ICAgIAogICAgIGlmICh0b0FkZCAmJiB0b3RhbFJvd3MgJiYgKHJvd1Bvc1t0b3RhbFJvd3NdIHx8
ICFuZXh0U2libGluZygpKSkgewogCkBAIC02MDcsNiArNjE0LDIxNiBAQCBpbnQgUmVuZGVyVGFi
bGVTZWN0aW9uOjpsZWZ0bW9zdFBvc2l0aW9uCiAgICAgcmV0dXJuIGxlZnQ7CiB9CiAKK2ludCBS
ZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNPdXRlckJvcmRlclRvcCgpIGNvbnN0Cit7CisgICAgaW50
IHRvdGFsQ29scyA9IHRhYmxlKCktPm51bUVmZkNvbHMoKTsKKyAgICBpZiAoZ3JpZFJvd3MgPT0g
MCB8fCB0b3RhbENvbHMgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB1bnNpZ25lZCBi
b3JkZXJXaWR0aCA9IDA7CisKKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgc2IgPSBzdHlsZSgpLT5i
b3JkZXJUb3AoKTsKKyAgICBpZiAoc2Iuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICByZXR1
cm4gLTE7CisgICAgaWYgKHNiLnN0eWxlKCkgPiBCSElEREVOKQorICAgICAgICBib3JkZXJXaWR0
aCA9IHNiLndpZHRoOworCisgICAgY29uc3QgQm9yZGVyVmFsdWUmIHJiID0gZmlyc3RDaGlsZCgp
LT5zdHlsZSgpLT5ib3JkZXJUb3AoKTsKKyAgICBpZiAocmIuc3R5bGUoKSA9PSBCSElEREVOKQor
ICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHJiLnN0eWxlKCkgPiBCSElEREVOICYmIHJiLndp
ZHRoID4gYm9yZGVyV2lkdGgpCisgICAgICAgIGJvcmRlcldpZHRoID0gcmIud2lkdGg7CisKKyAg
ICBib29sIGFsbEhpZGRlbiA9IHRydWU7CisgICAgZm9yIChpbnQgYyA9IDA7IGMgPCB0b3RhbENv
bHM7IGMrKykgeworICAgICAgICBjb25zdCBDZWxsU3RydWN0JiBjdXJyZW50ID0gY2VsbEF0KDAs
IGMpOworICAgICAgICBpZiAoY3VycmVudC5pbkNvbFNwYW4gfHwgIWN1cnJlbnQuY2VsbCkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgY2IgPSBjdXJy
ZW50LmNlbGwtPnN0eWxlKCktPmJvcmRlclRvcCgpOworICAgICAgICAvLyBGSVhNRTogRG9uJ3Qg
cmVwZWF0IGZvciB0aGUgc2FtZSBjb2wgZ3JvdXAKKyAgICAgICAgUmVuZGVyVGFibGVDb2wqIGNv
bEdyb3VwID0gdGFibGUoKS0+Y29sRWxlbWVudChjKTsKKyAgICAgICAgaWYgKGNvbEdyb3VwKSB7
CisgICAgICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgZ2IgPSBjb2xHcm91cC0+c3R5bGUoKS0+
Ym9yZGVyVG9wKCk7CisgICAgICAgICAgICBpZiAoZ2Iuc3R5bGUoKSA9PSBCSElEREVOIHx8IGNi
LnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhbGxIaWRkZW4gPSBmYWxzZTsKKyAgICAgICAgICAg
IGlmIChnYi5zdHlsZSgpID4gQkhJRERFTiAmJiBnYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAg
ICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gZ2Iud2lkdGg7CisgICAgICAgICAgICBpZiAoY2Iu
c3R5bGUoKSA+IEJISURERU4gJiYgY2Iud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAgICAgICAg
ICAgICBib3JkZXJXaWR0aCA9IGNiLndpZHRoOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKGNiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhbGxIaWRkZW4gPSBmYWxzZTsKKyAg
ICAgICAgICAgIGlmIChjYi5zdHlsZSgpID4gQkhJRERFTiAmJiBjYi53aWR0aCA+IGJvcmRlcldp
ZHRoKQorICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gY2Iud2lkdGg7CisgICAgICAgIH0K
KyAgICB9CisgICAgaWYgKGFsbEhpZGRlbikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0
dXJuIGJvcmRlcldpZHRoIC8gMjsKK30KKworaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY091
dGVyQm9yZGVyQm90dG9tKCkgY29uc3QKK3sKKyAgICBpbnQgdG90YWxDb2xzID0gdGFibGUoKS0+
bnVtRWZmQ29scygpOworICAgIGlmIChncmlkUm93cyA9PSAwIHx8IHRvdGFsQ29scyA9PSAwKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHVuc2lnbmVkIGJvcmRlcldpZHRoID0gMDsKKworICAg
IGNvbnN0IEJvcmRlclZhbHVlJiBzYiA9IHN0eWxlKCktPmJvcmRlckJvdHRvbSgpOworICAgIGlm
IChzYi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoc2Iu
c3R5bGUoKSA+IEJISURERU4pCisgICAgICAgIGJvcmRlcldpZHRoID0gc2Iud2lkdGg7CisKKyAg
ICBjb25zdCBCb3JkZXJWYWx1ZSYgcmIgPSBsYXN0Q2hpbGQoKS0+c3R5bGUoKS0+Ym9yZGVyQm90
dG9tKCk7CisgICAgaWYgKHJiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgcmV0dXJuIC0x
OworICAgIGlmIChyYi5zdHlsZSgpID4gQkhJRERFTiAmJiByYi53aWR0aCA+IGJvcmRlcldpZHRo
KQorICAgICAgICBib3JkZXJXaWR0aCA9IHJiLndpZHRoOworCisgICAgYm9vbCBhbGxIaWRkZW4g
PSB0cnVlOworICAgIGZvciAoaW50IGMgPSAwOyBjIDwgdG90YWxDb2xzOyBjKyspIHsKKyAgICAg
ICAgY29uc3QgQ2VsbFN0cnVjdCYgY3VycmVudCA9IGNlbGxBdChncmlkUm93cyAtIDEsIGMpOwor
ICAgICAgICBpZiAoY3VycmVudC5pbkNvbFNwYW4gfHwgIWN1cnJlbnQuY2VsbCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgY2IgPSBjdXJyZW50LmNl
bGwtPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpOworICAgICAgICAvLyBGSVhNRTogRG9uJ3QgcmVw
ZWF0IGZvciB0aGUgc2FtZSBjb2wgZ3JvdXAKKyAgICAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEdy
b3VwID0gdGFibGUoKS0+Y29sRWxlbWVudChjKTsKKyAgICAgICAgaWYgKGNvbEdyb3VwKSB7Cisg
ICAgICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgZ2IgPSBjb2xHcm91cC0+c3R5bGUoKS0+Ym9y
ZGVyQm90dG9tKCk7CisgICAgICAgICAgICBpZiAoZ2Iuc3R5bGUoKSA9PSBCSElEREVOIHx8IGNi
LnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhbGxIaWRkZW4gPSBmYWxzZTsKKyAgICAgICAgICAg
IGlmIChnYi5zdHlsZSgpID4gQkhJRERFTiAmJiBnYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAg
ICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gZ2Iud2lkdGg7CisgICAgICAgICAgICBpZiAoY2Iu
c3R5bGUoKSA+IEJISURERU4gJiYgY2Iud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAgICAgICAg
ICAgICBib3JkZXJXaWR0aCA9IGNiLndpZHRoOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKGNiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhbGxIaWRkZW4gPSBmYWxzZTsKKyAg
ICAgICAgICAgIGlmIChjYi5zdHlsZSgpID4gQkhJRERFTiAmJiBjYi53aWR0aCA+IGJvcmRlcldp
ZHRoKQorICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gY2Iud2lkdGg7CisgICAgICAgIH0K
KyAgICB9CisgICAgaWYgKGFsbEhpZGRlbikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0
dXJuIChib3JkZXJXaWR0aCArIDEpIC8gMjsKK30KKworaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6
Y2FsY091dGVyQm9yZGVyTGVmdChib29sIHJ0bCkgY29uc3QKK3sKKyAgICBpbnQgdG90YWxDb2xz
ID0gdGFibGUoKS0+bnVtRWZmQ29scygpOworICAgIGlmIChncmlkUm93cyA9PSAwIHx8IHRvdGFs
Q29scyA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHVuc2lnbmVkIGJvcmRlcldpZHRo
ID0gMDsKKworICAgIGNvbnN0IEJvcmRlclZhbHVlJiBzYiA9IHN0eWxlKCktPmJvcmRlckxlZnQo
KTsKKyAgICBpZiAoc2Iuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICByZXR1cm4gLTE7Cisg
ICAgaWYgKHNiLnN0eWxlKCkgPiBCSElEREVOKQorICAgICAgICBib3JkZXJXaWR0aCA9IHNiLndp
ZHRoOworCisgICAgaW50IGxlZnRtb3N0Q29sdW1uID0gcnRsID8gdG90YWxDb2xzIC0gMSA6IDA7
CisgICAgUmVuZGVyVGFibGVDb2wqIGNvbEdyb3VwID0gdGFibGUoKS0+Y29sRWxlbWVudChsZWZ0
bW9zdENvbHVtbik7CisgICAgaWYgKGNvbEdyb3VwKSB7CisgICAgICAgIGNvbnN0IEJvcmRlclZh
bHVlJiBnYiA9IGNvbEdyb3VwLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCk7CisgICAgICAgIGlmIChn
Yi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlm
IChnYi5zdHlsZSgpID4gQkhJRERFTiAmJiBnYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAg
ICAgICAgYm9yZGVyV2lkdGggPSBnYi53aWR0aDsKKyAgICB9CisKKyAgICBib29sIGFsbEhpZGRl
biA9IHRydWU7CisgICAgZm9yIChpbnQgciA9IDA7IHIgPCBncmlkUm93czsgcisrKSB7CisgICAg
ICAgIGNvbnN0IENlbGxTdHJ1Y3QmIGN1cnJlbnQgPSBjZWxsQXQociwgbGVmdG1vc3RDb2x1bW4p
OworICAgICAgICBpZiAoIWN1cnJlbnQuY2VsbCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAvLyBGSVhNRTogRG9uJ3QgcmVwZWF0IGZvciB0aGUgc2FtZSBjZWxsCisgICAgICAgIGNv
bnN0IEJvcmRlclZhbHVlJiBjYiA9IGN1cnJlbnQuY2VsbC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgp
OworICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgcmIgPSBjdXJyZW50LmNlbGwtPnBhcmVudCgp
LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCk7CisgICAgICAgIGlmIChjYi5zdHlsZSgpID09IEJISURE
RU4gfHwgcmIuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGFsbEhpZGRlbiA9IGZhbHNlOworICAgICAgICBpZiAoY2Iu
c3R5bGUoKSA+IEJISURERU4gJiYgY2Iud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAgICAgICAg
IGJvcmRlcldpZHRoID0gY2Iud2lkdGg7CisgICAgICAgIGlmIChyYi5zdHlsZSgpID4gQkhJRERF
TiAmJiByYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBy
Yi53aWR0aDsKKyAgICB9CisgICAgaWYgKGFsbEhpZGRlbikKKyAgICAgICAgcmV0dXJuIC0xOwor
CisgICAgcmV0dXJuIGJvcmRlcldpZHRoIC8gMjsKK30KKworaW50IFJlbmRlclRhYmxlU2VjdGlv
bjo6Y2FsY091dGVyQm9yZGVyUmlnaHQoYm9vbCBydGwpIGNvbnN0Cit7CisgICAgaW50IHRvdGFs
Q29scyA9IHRhYmxlKCktPm51bUVmZkNvbHMoKTsKKyAgICBpZiAoZ3JpZFJvd3MgPT0gMCB8fCB0
b3RhbENvbHMgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB1bnNpZ25lZCBib3JkZXJX
aWR0aCA9IDA7CisKKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgc2IgPSBzdHlsZSgpLT5ib3JkZXJS
aWdodCgpOworICAgIGlmIChzYi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgIHJldHVybiAt
MTsKKyAgICBpZiAoc2Iuc3R5bGUoKSA+IEJISURERU4pCisgICAgICAgIGJvcmRlcldpZHRoID0g
c2Iud2lkdGg7CisKKyAgICBpbnQgcmlnaHRtb3N0Q29sdW1uID0gcnRsID8gMCA6IHRvdGFsQ29s
cyAtIDE7CisgICAgUmVuZGVyVGFibGVDb2wqIGNvbEdyb3VwID0gdGFibGUoKS0+Y29sRWxlbWVu
dChyaWdodG1vc3RDb2x1bW4pOworICAgIGlmIChjb2xHcm91cCkgeworICAgICAgICBjb25zdCBC
b3JkZXJWYWx1ZSYgZ2IgPSBjb2xHcm91cC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKTsKKyAgICAg
ICAgaWYgKGdiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAg
ICAgICAgaWYgKGdiLnN0eWxlKCkgPiBCSElEREVOICYmIGdiLndpZHRoID4gYm9yZGVyV2lkdGgp
CisgICAgICAgICAgICBib3JkZXJXaWR0aCA9IGdiLndpZHRoOworICAgIH0KKworICAgIGJvb2wg
YWxsSGlkZGVuID0gdHJ1ZTsKKyAgICBmb3IgKGludCByID0gMDsgciA8IGdyaWRSb3dzOyByKysp
IHsKKyAgICAgICAgY29uc3QgQ2VsbFN0cnVjdCYgY3VycmVudCA9IGNlbGxBdChyLCByaWdodG1v
c3RDb2x1bW4pOworICAgICAgICBpZiAoIWN1cnJlbnQuY2VsbCkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAvLyBGSVhNRTogRG9uJ3QgcmVwZWF0IGZvciB0aGUgc2FtZSBjZWxsCisg
ICAgICAgIGNvbnN0IEJvcmRlclZhbHVlJiBjYiA9IGN1cnJlbnQuY2VsbC0+c3R5bGUoKS0+Ym9y
ZGVyUmlnaHQoKTsKKyAgICAgICAgY29uc3QgQm9yZGVyVmFsdWUmIHJiID0gY3VycmVudC5jZWxs
LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKTsKKyAgICAgICAgaWYgKGNiLnN0eWxl
KCkgPT0gQkhJRERFTiB8fCByYi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWxsSGlkZGVuID0gZmFsc2U7CisgICAg
ICAgIGlmIChjYi5zdHlsZSgpID4gQkhJRERFTiAmJiBjYi53aWR0aCA+IGJvcmRlcldpZHRoKQor
ICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBjYi53aWR0aDsKKyAgICAgICAgaWYgKHJiLnN0eWxl
KCkgPiBCSElEREVOICYmIHJiLndpZHRoID4gYm9yZGVyV2lkdGgpCisgICAgICAgICAgICBib3Jk
ZXJXaWR0aCA9IHJiLndpZHRoOworICAgIH0KKyAgICBpZiAoYWxsSGlkZGVuKQorICAgICAgICBy
ZXR1cm4gLTE7CisKKyAgICByZXR1cm4gKGJvcmRlcldpZHRoICsgMSkgLyAyOworfQorCit2b2lk
IFJlbmRlclRhYmxlU2VjdGlvbjo6cmVjYWxjT3V0ZXJCb3JkZXIoKQoreworICAgIGJvb2wgcnRs
ID0gdGFibGUoKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMOworICAgIG1fb3V0ZXJCb3Jk
ZXJUb3AgPSBjYWxjT3V0ZXJCb3JkZXJUb3AoKTsKKyAgICBtX291dGVyQm9yZGVyQm90dG9tID0g
Y2FsY091dGVyQm9yZGVyQm90dG9tKCk7CisgICAgbV9vdXRlckJvcmRlckxlZnQgPSBjYWxjT3V0
ZXJCb3JkZXJMZWZ0KHJ0bCk7CisgICAgbV9vdXRlckJvcmRlclJpZ2h0ID0gY2FsY091dGVyQm9y
ZGVyUmlnaHQocnRsKTsKK30KKworCiB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnQoUGFp
bnRJbmZvJiBpLCBpbnQgdHgsIGludCB0eSkKIHsKICAgICB1bnNpZ25lZCBpbnQgdG90YWxSb3dz
ID0gZ3JpZFJvd3M7CkBAIC02MjksMTAgKzg0NiwxNCBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlv
bjo6cGFpbnQoUGFpbnRJbmZvCiAgICAgZm9yICg7IHN0YXJ0cm93IDwgdG90YWxSb3dzOyBzdGFy
dHJvdysrKQogICAgICAgICBpZiAodHkgKyByb3dQb3Nbc3RhcnRyb3crMV0gPj0geSAtIG9zKQog
ICAgICAgICAgICAgYnJlYWs7CisgICAgaWYgKHN0YXJ0cm93ID09IHRvdGFsUm93cyAmJiB0eSAr
IHJvd1Bvc1t0b3RhbFJvd3NdICsgdGFibGUoKS0+b3V0ZXJCb3JkZXJCb3R0b20oKSA+PSB5IC0g
b3MpCisgICAgICAgIHN0YXJ0cm93LS07CiAKICAgICBmb3IgKDsgZW5kcm93ID4gMDsgZW5kcm93
LS0pCiAgICAgICAgIGlmICggdHkgKyByb3dQb3NbZW5kcm93LTFdIDw9IHkgKyBoICsgb3MpCiAg
ICAgICAgICAgICBicmVhazsKKyAgICBpZiAoZW5kcm93ID09IDAgJiYgdHkgKyByb3dQb3NbMF0g
LSB0YWJsZSgpLT5vdXRlckJvcmRlclRvcCgpIDw9IHkgKyBoICsgb3MpCisgICAgICAgIGVuZHJv
dysrOwogCiAgICAgdW5zaWduZWQgaW50IHN0YXJ0Y29sID0gMDsKICAgICB1bnNpZ25lZCBpbnQg
ZW5kY29sID0gdG90YWxDb2xzOwpAQCAtNjQxLDEwICs4NjIsMTUgQEAgdm9pZCBSZW5kZXJUYWJs
ZVNlY3Rpb246OnBhaW50KFBhaW50SW5mbwogICAgICAgICAgICAgaWYgKHR4ICsgdGFibGUoKS0+
Y29sdW1uUG9zW3N0YXJ0Y29sICsgMV0gPj0geCAtIG9zKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisgICAgICAgIGlmIChzdGFydGNvbCA9PSB0b3RhbENvbHMgJiYgdHggKyB0
YWJsZSgpLT5jb2x1bW5Qb3NbdG90YWxDb2xzXSArIHRhYmxlKCktPm91dGVyQm9yZGVyUmlnaHQo
KSA+PSB4IC0gb3MpCisgICAgICAgICAgICBzdGFydGNvbC0tOworICAgICAgICAKICAgICAgICAg
Zm9yICg7IGVuZGNvbCA+IDA7IGVuZGNvbC0tKSB7CiAgICAgICAgICAgICBpZiAodHggKyB0YWJs
ZSgpLT5jb2x1bW5Qb3NbZW5kY29sIC0gMV0gPD0geCArIHcgKyBvcykKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAoZW5kY29sID09IDAgJiYgdHggKyB0YWJs
ZSgpLT5jb2x1bW5Qb3NbMF0gLSB0YWJsZSgpLT5vdXRlckJvcmRlckxlZnQoKSA8PSB5ICsgdyAr
IG9zKQorICAgICAgICAgICAgZW5kY29sKys7CiAgICAgfQogCiAgICAgaWYgKHN0YXJ0Y29sIDwg
ZW5kY29sKSB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJldmlz
aW9uIDE0MTcwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDg1LDcgKzQ4NSw3IEBAIGludCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRl
ckxlZnQoKSBjb25zdAogICAgIGlmICh0YWJsZSgpLT5jb2xsYXBzZUJvcmRlcnMoKSkgewogICAg
ICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBib3JkZXIgPSBjb2xsYXBzZWRMZWZ0Qm9yZGVyKHRh
YmxlKCktPnN0eWxlKCktPmRpcmVjdGlvbigpID09IFJUTCk7CiAgICAgICAgIGlmIChib3JkZXIu
ZXhpc3RzKCkpCi0gICAgICAgICAgICByZXR1cm4gaW50KGJvcmRlci53aWR0aCgpIC8gMi4wICsg
MC41KTsgLy8gR2l2ZSB0aGUgZXh0cmEgcGl4ZWwgdG8gdG9wIGFuZCBsZWZ0LgorICAgICAgICAg
ICAgcmV0dXJuIChib3JkZXIud2lkdGgoKSArIDEpIC8gMjsgLy8gR2l2ZSB0aGUgZXh0cmEgcGl4
ZWwgdG8gdG9wIGFuZCBsZWZ0LgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJu
IFJlbmRlckJsb2NrOjpib3JkZXJMZWZ0KCk7CkBAIC01MDcsNyArNTA3LDcgQEAgaW50IFJlbmRl
clRhYmxlQ2VsbDo6Ym9yZGVyVG9wKCkgY29uc3QKICAgICBpZiAodGFibGUoKS0+Y29sbGFwc2VC
b3JkZXJzKCkpIHsKICAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgYm9yZGVyID0gY29sbGFw
c2VkVG9wQm9yZGVyKCk7CiAgICAgICAgIGlmIChib3JkZXIuZXhpc3RzKCkpCi0gICAgICAgICAg
ICByZXR1cm4gaW50KGJvcmRlci53aWR0aCgpIC8gMi4wICsgMC41KTsgLy8gR2l2ZSB0aGUgZXh0
cmEgcGl4ZWwgdG8gdG9wIGFuZCBsZWZ0LgorICAgICAgICAgICAgcmV0dXJuIChib3JkZXIud2lk
dGgoKSArIDEpIC8gMjsgLy8gR2l2ZSB0aGUgZXh0cmEgcGl4ZWwgdG8gdG9wIGFuZCBsZWZ0Lgog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpib3JkZXJU
b3AoKTsKQEAgLTU0MCwxNSArNTQwLDE4IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludChQ
YWludEluZm8mIGkKIAogICAgIC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gZG8gYW55dGhpbmcgYXQg
YWxsLi4uCiAgICAgaW50IG9zID0gMiptYXhpbWFsT3V0bGluZVNpemUoaS5waGFzZSk7Ci0gICAg
aWYgKF90eSA+PSBpLnIuYm90dG9tKCkgKyBvcyB8fCBfdHkgKyBfdG9wRXh0cmEgKyBtX2hlaWdo
dCArIF9ib3R0b21FeHRyYSA8PSBpLnIueSgpIC0gb3MpCi0gICAgICAgIHJldHVybjsKIAogICAg
IGlmIChpLnBoYXNlID09IFBhaW50UGhhc2VDb2xsYXBzZWRUYWJsZUJvcmRlcnMgJiYgc3R5bGUo
KS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICAgICAgaWYgKF90eSAtIHRhYmxlKCkt
Pm91dGVyQm9yZGVyVG9wKCkgPj0gaS5yLmJvdHRvbSgpICsgb3MgfHwgX3R5ICsgX3RvcEV4dHJh
ICsgbV9oZWlnaHQgKyBfYm90dG9tRXh0cmEgKyB0YWJsZSgpLT5vdXRlckJvcmRlckJvdHRvbSgp
IDw9IGkuci55KCkgLSBvcykKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaW50IHcgPSB3
aWR0aCgpOwogICAgICAgICBpbnQgaCA9IGhlaWdodCgpICsgYm9yZGVyVG9wRXh0cmEoKSArIGJv
cmRlckJvdHRvbUV4dHJhKCk7CiAgICAgICAgIHBhaW50Q29sbGFwc2VkQm9yZGVyKGkucCwgX3R4
LCBfdHksIHcsIGgpOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChfdHkg
Pj0gaS5yLmJvdHRvbSgpICsgb3MgfHwgX3R5ICsgX3RvcEV4dHJhICsgbV9oZWlnaHQgKyBfYm90
dG9tRXh0cmEgPD0gaS5yLnkoKSAtIG9zKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBS
ZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoaSwgX3R4LCBfdHkgKyBfdG9wRXh0cmEpOworICAgIH0K
IAogI2lmZGVmIEJPWF9ERUJVRwogICAgIDo6b3V0bGluZUJveCggaS5wLCBfdHgsIF90eSwgd2lk
dGgoKSwgaGVpZ2h0KCkgKyBib3JkZXJUb3BFeHRyYSgpICsgYm9yZGVyQm90dG9tRXh0cmEoKSk7
CkBAIC02NjAsOCArNjYzLDggQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2Vk
Qm9yZAogICAgIAogICAgIF90eCAtPSBsZWZ0V2lkdGggLyAyOwogICAgIF90eSAtPSB0b3BXaWR0
aCAvIDI7Ci0gICAgdyArPSBsZWZ0V2lkdGggLyAyICsgaW50KHJpZ2h0V2lkdGggLyAyLjAgKyAw
LjUpOwotICAgIGggKz0gdG9wV2lkdGggLyAyICsgaW50KGJvdHRvbVdpZHRoIC8gMi4wICsgMC41
KTsKKyAgICB3ICs9IGxlZnRXaWR0aCAvIDIgKyAocmlnaHRXaWR0aCArIDEpIC8gMjsKKyAgICBo
ICs9IHRvcFdpZHRoIC8gMiArIChib3R0b21XaWR0aCArIDEpIC8gMjsKICAgICAKICAgICBib29s
IHR0ID0gdG9wVmFsLmlzVHJhbnNwYXJlbnQoKTsKICAgICBib29sIGJ0ID0gYm90dG9tVmFsLmlz
VHJhbnNwYXJlbnQoKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAkocmV2aXNpb24gMTQx
NzApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKICAgICBpbnQgdkJvcmRlclNwYWNpbmcoKSBjb25zdCB7
IHJldHVybiB2c3BhY2luZzsgfQogICAgIAogICAgIGJvb2wgY29sbGFwc2VCb3JkZXJzKCkgY29u
c3QgeyByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyQ29sbGFwc2UoKTsgfQotICAgIGludCBib3JkZXJM
ZWZ0KCkgY29uc3Q7Ci0gICAgaW50IGJvcmRlclJpZ2h0KCkgY29uc3Q7CisgICAgaW50IGJvcmRl
ckxlZnQoKSBjb25zdCB7IHJldHVybiBtX2JvcmRlckxlZnQ7IH0KKyAgICBpbnQgYm9yZGVyUmln
aHQoKSBjb25zdCB7IHJldHVybiBtX2JvcmRlclJpZ2h0OyB9CiAgICAgaW50IGJvcmRlclRvcCgp
IGNvbnN0OwogICAgIGludCBib3JkZXJCb3R0b20oKSBjb25zdDsKICAgICAKQEAgLTg0LDkgKzg0
LDE3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBjZWxsUGFkZGluZygpIGNvbnN0IHsgcmV0dXJu
IHBhZGRpbmc7IH0KICAgICB2b2lkIHNldENlbGxQYWRkaW5nKHVuc2lnbmVkIHApIHsgcGFkZGlu
ZyA9IHA7IH0KIAorICAgIGludCBvdXRlckJvcmRlclRvcCgpIGNvbnN0OworICAgIGludCBvdXRl
ckJvcmRlckJvdHRvbSgpIGNvbnN0OworICAgIGludCBvdXRlckJvcmRlckxlZnQoKSBjb25zdDsK
KyAgICBpbnQgb3V0ZXJCb3JkZXJSaWdodCgpIGNvbnN0OworICAgIAorICAgIGludCBjYWxjQm9y
ZGVyTGVmdCgpIGNvbnN0OworICAgIGludCBjYWxjQm9yZGVyUmlnaHQoKSBjb25zdDsKKyAgICB2
b2lkIHJlY2FsY0hvcml6b250YWxCb3JkZXJzKCk7CisKICAgICAvLyBvdmVycmlkZXMKICAgICB2
aXJ0dWFsIGludCBvdmVyZmxvd0hlaWdodChib29sIGluY2x1ZGVJbnRlcmlvciA9IHRydWUpIGNv
bnN0IHsgcmV0dXJuIGhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBpbnQgb3ZlcmZsb3dXaWR0aChi
b29sIGluY2x1ZGVJbnRlcmlvciA9IHRydWUpIGNvbnN0IHsgcmV0dXJuIHdpZHRoKCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0
KiBiZWZvcmVDaGlsZCA9IDApOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBp
bnQgdHgsIGludCB0eSk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFp
bnRJbmZvJiwgaW50IF90eCwgaW50IF90eSk7CkBAIC0xNDMsNyArMTUxLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgKGNvbGxhcHNlQm9yZGVycygpID8gMCA6IChwYWRkaW5nTGVmdCgpICsg
cGFkZGluZ1JpZ2h0KCkgKyAobnVtRWZmQ29scygpICsgMSkgKiBoQm9yZGVyU3BhY2luZygpKSk7
CiAgICAgfQogCi0gICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsZW1lbnQoaW50IGNvbCk7CisgICAg
UmVuZGVyVGFibGVDb2wqIGNvbEVsZW1lbnQoaW50IGNvbCkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dE5lZWRTZWN0aW9uUmVjYWxjKCkgeyBuZWVkU2VjdGlvblJlY2FsYyA9IHRydWU7IH0KIApAQCAt
MTg2LDYgKzE5NCw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgc2hvcnQgaHNwYWNpbmc7CiAgICAg
c2hvcnQgdnNwYWNpbmc7CisgICAgaW50IG1fYm9yZGVyUmlnaHQ7CisgICAgaW50IG1fYm9yZGVy
TGVmdDsKIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5o
CShyZXZpc2lvbiAxNDE3MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBpbnQgbG93ZXN0UG9zaXRpb24oYm9vbCBpbmNsdWRlT3ZlcmZsb3dJbnRlcmlvciwgYm9vbCBp
bmNsdWRlU2VsZikgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgcmlnaHRtb3N0UG9zaXRpb24oYm9v
bCBpbmNsdWRlT3ZlcmZsb3dJbnRlcmlvciwgYm9vbCBpbmNsdWRlU2VsZikgY29uc3Q7CiAgICAg
dmlydHVhbCBpbnQgbGVmdG1vc3RQb3NpdGlvbihib29sIGluY2x1ZGVPdmVyZmxvd0ludGVyaW9y
LCBib29sIGluY2x1ZGVTZWxmKSBjb25zdDsKKworICAgIGludCBjYWxjT3V0ZXJCb3JkZXJUb3Ao
KSBjb25zdDsKKyAgICBpbnQgY2FsY091dGVyQm9yZGVyQm90dG9tKCkgY29uc3Q7CisgICAgaW50
IGNhbGNPdXRlckJvcmRlckxlZnQoYm9vbCBydGwpIGNvbnN0OworICAgIGludCBjYWxjT3V0ZXJC
b3JkZXJSaWdodChib29sIHJ0bCkgY29uc3Q7CisgICAgdm9pZCByZWNhbGNPdXRlckJvcmRlcigp
OworCisgICAgaW50IG91dGVyQm9yZGVyVG9wKCkgY29uc3QgeyByZXR1cm4gbV9vdXRlckJvcmRl
clRvcDsgfQorICAgIGludCBvdXRlckJvcmRlckJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0
ZXJCb3JkZXJCb3R0b207IH0KKyAgICBpbnQgb3V0ZXJCb3JkZXJMZWZ0KCkgY29uc3QgeyByZXR1
cm4gbV9vdXRlckJvcmRlckxlZnQ7IH0KKyAgICBpbnQgb3V0ZXJCb3JkZXJSaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fb3V0ZXJCb3JkZXJSaWdodDsgfQorCiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYgaSwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgaW50IG51bVJvd3MoKSBjb25z
dCB7IHJldHVybiBncmlkUm93czsgfQpAQCAtMTE1LDYgKzEyNywxMCBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBlbnN1cmVSb3dzKGludCBudW1Sb3dzKTsKICAgICB2b2lkIGNsZWFy
R3JpZCgpOworICAgIGludCBtX291dGVyQm9yZGVyTGVmdDsKKyAgICBpbnQgbV9vdXRlckJvcmRl
clJpZ2h0OworICAgIGludCBtX291dGVyQm9yZGVyVG9wOworICAgIGludCBtX291dGVyQm9yZGVy
Qm90dG9tOwogfTsKIAogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNp
b24gMTQxNzApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDYgKzU4LDggQEAgUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKE5vZGUqIG5v
ZGUpCiAgICAgcGFkZGluZyA9IDA7CiAgICAgbmVlZFNlY3Rpb25SZWNhbGMgPSBmYWxzZTsKICAg
ICBwYWRkaW5nID0gMDsKKyAgICBtX2JvcmRlckxlZnQgPSAwOworICAgIG1fYm9yZGVyUmlnaHQg
PSAwOwogCiAgICAgY29sdW1uUG9zLnJlc2l6ZSgyKTsKICAgICBjb2x1bW5Qb3MuZmlsbCgwKTsK
QEAgLTI1MSw3ICsyNTMsNiBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAgIAogICAg
IC8vaW50IG9sZFdpZHRoID0gbV93aWR0aDsKICAgICBjYWxjV2lkdGgoKTsKLSAgICBtX292ZXJm
bG93V2lkdGggPSBtX3dpZHRoOwogCiAgICAgLy8gdGhlIG9wdGltaXNhdGlvbiBiZWxvdyBkb2Vz
bid0IHdvcmsgc2luY2UgdGhlIGludGVybmFsIHRhYmxlCiAgICAgLy8gbGF5b3V0IGNvdWxkIGhh
dmUgY2hhbmdlZC4gIHdlIG5lZWQgdG8gYWRkIGEgZmxhZyB0byB0aGUgdGFibGUKQEAgLTI3Nyw2
ICsyNzgsOSBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAgICAgICBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpOwogICAgIH0KIAorICAgIG1fb3ZlcmZsb3dXaWR0aCA9IG1fd2lk
dGggKyAoY29sbGFwc2VCb3JkZXJzKCkgPyBvdXRlckJvcmRlclJpZ2h0KCkgLSBib3JkZXJSaWdo
dCgpIDogMCk7CisgICAgbV9vdmVyZmxvd0xlZnQgPSBjb2xsYXBzZUJvcmRlcnMoKSA/IGJvcmRl
ckxlZnQoKSAtIG91dGVyQm9yZGVyTGVmdCgpIDogMDsKKwogICAgIC8vICMjIyBjb2xsYXBzZSBj
YXB0aW9uIG1hcmdpbgogICAgIGlmICh0Q2FwdGlvbiAmJiB0Q2FwdGlvbi0+c3R5bGUoKS0+Y2Fw
dGlvblNpZGUoKSAhPSBDQVBCT1RUT00pIHsKICAgICAgICAgdENhcHRpb24tPnNldFBvcyh0Q2Fw
dGlvbi0+bWFyZ2luTGVmdCgpLCBtX2hlaWdodCk7CkBAIC0zNTUsOSArMzU5LDYgQEAgdm9pZCBS
ZW5kZXJUYWJsZTo6bGF5b3V0KCkKICAgICBpZiAoY2hlY2tGb3JSZXBhaW50KQogICAgICAgICBy
ZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChvbGRCb3VuZHMsIG9sZEZ1bGxCb3VuZHMpOwogICAg
IAotICAgIG1fb3ZlcmZsb3dIZWlnaHQgPSBtYXgobV9vdmVyZmxvd0hlaWdodCwgbV9oZWlnaHQp
OwotICAgIG1fb3ZlcmZsb3dXaWR0aCA9IG1heChtX292ZXJmbG93V2lkdGgsIG1fd2lkdGgpOwot
CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCkBAIC00NTMsNiArNDU0LDcgQEAgdm9p
ZCBSZW5kZXJUYWJsZTo6Y2FsY01pbk1heFdpZHRoKCkKIAogICAgIGlmIChuZWVkU2VjdGlvblJl
Y2FsYykKICAgICAgICAgcmVjYWxjU2VjdGlvbnMoKTsKKyAgICByZWNhbGNIb3Jpem9udGFsQm9y
ZGVycygpOwogCiAgICAgdGFibGVMYXlvdXQtPmNhbGNNaW5NYXhXaWR0aCgpOwogCkBAIC01MTgs
NyArNTIwLDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6YXBwZW5kQ29sdW1uKGludCBzcGFuKQogICAg
IHNldE5lZWRzTGF5b3V0QW5kTWluTWF4UmVjYWxjKCk7CiB9CiAKLVJlbmRlclRhYmxlQ29sICpS
ZW5kZXJUYWJsZTo6Y29sRWxlbWVudChpbnQgY29sKQorUmVuZGVyVGFibGVDb2wgKlJlbmRlclRh
YmxlOjpjb2xFbGVtZW50KGludCBjb2wpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNfY29sX2VsZW1z
KQogICAgICAgICByZXR1cm4gMDsKQEAgLTYzMyw0NCArNjM1LDI1OSBAQCBSZW5kZXJPYmplY3Qq
IFJlbmRlclRhYmxlOjpyZW1vdmVDaGlsZE5vCiAgICAgcmV0dXJuIFJlbmRlckNvbnRhaW5lcjo6
cmVtb3ZlQ2hpbGROb2RlKGNoaWxkKTsKIH0KIAotaW50IFJlbmRlclRhYmxlOjpib3JkZXJMZWZ0
KCkgY29uc3QKK2ludCBSZW5kZXJUYWJsZTo6Y2FsY0JvcmRlckxlZnQoKSBjb25zdAogewogICAg
IGlmIChjb2xsYXBzZUJvcmRlcnMoKSkgewotICAgICAgICAvLyBGSVhNRTogRm9yIHN0cmljdCBt
b2RlLCByZXR1cm5pbmcgMCBpcyBjb3JyZWN0LCBzaW5jZSB0aGUgdGFibGUgYm9yZGVyIGhhbGYg
c3BpbGxzIGludG8gdGhlIG1hcmdpbiwKLSAgICAgICAgLy8gYnV0IEknbSB3b3JraW5nIHRvIGdl
dCB0aGlzIGNoYW5nZWQuICBGb3Igbm93LCBmb2xsb3cgdGhlIHNwZWMuCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICAvLyBEZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBjZWxsIG9mIHRoZSBmaXJz
dCByb3cuIFNlZSB0aGUgQ1NTIDIuMSBzcGVjLCBzZWN0aW9uIDE3LjYuMi4KKyAgICAgICAgaWYg
KG51bUVmZkNvbHMoKSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgdW5z
aWduZWQgYm9yZGVyV2lkdGggPSAwOworCisgICAgICAgIGNvbnN0IEJvcmRlclZhbHVlJiB0YiA9
IHN0eWxlKCktPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKHRiLnN0eWxlKCkgPT0gQkhJRERF
TikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAodGIuc3R5bGUoKSA+IEJISURE
RU4pCisgICAgICAgICAgICBib3JkZXJXaWR0aCA9IHRiLndpZHRoOworCisgICAgICAgIGludCBs
ZWZ0bW9zdENvbHVtbiA9IHN0eWxlKCktPmRpcmVjdGlvbigpID09IFJUTCA/IG51bUVmZkNvbHMo
KSAtIDEgOiAwOworICAgICAgICBSZW5kZXJUYWJsZUNvbCAqY29sR3JvdXAgPSBjb2xFbGVtZW50
KGxlZnRtb3N0Q29sdW1uKTsKKyAgICAgICAgaWYgKGNvbEdyb3VwKSB7CisgICAgICAgICAgICBj
b25zdCBCb3JkZXJWYWx1ZSYgZ2IgPSBzdHlsZSgpLT5ib3JkZXJMZWZ0KCk7CisgICAgICAgICAg
ICBpZiAoZ2Iuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgaWYgKGdiLnN0eWxlKCkgPiBCSElEREVOICYmIGdiLndpZHRoID4gYm9yZGVy
V2lkdGgpCisgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBnYi53aWR0aDsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgUmVuZGVyT2JqZWN0ICpjaGlsZCA9IGZpcnN0Q2hpbGQoKTsK
KyAgICAgICAgd2hpbGUgKGNoaWxkICYmICFjaGlsZC0+aXNUYWJsZVNlY3Rpb24oKSkKKyAgICAg
ICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CisgICAgICAgIGlmIChjaGlsZCAm
JiBjaGlsZC0+aXNUYWJsZVNlY3Rpb24oKSkgeworICAgICAgICAgICAgUmVuZGVyVGFibGVTZWN0
aW9uKiBzZWN0aW9uID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGFibGVTZWN0aW9uKj4oY2hpbGQpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2VjdGlvbi0+bnVtUm93cygpID09IDApCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGJvcmRlcldpZHRoIC8gMjsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgY29uc3QgQm9yZGVyVmFsdWUmIHNiID0gc2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVy
TGVmdCgpOworICAgICAgICAgICAgaWYgKHNiLnN0eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChzYi5zdHlsZSgpID4gQkhJRERFTiAm
JiBzYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0g
c2Iud2lkdGg7CisKKyAgICAgICAgICAgIGNvbnN0IFJlbmRlclRhYmxlU2VjdGlvbjo6Q2VsbFN0
cnVjdCYgY3MgPSBzZWN0aW9uLT5jZWxsQXQoMCwgbGVmdG1vc3RDb2x1bW4pOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAoY3MuY2VsbCkgeworICAgICAgICAgICAgICAgIGNvbnN0IEJv
cmRlclZhbHVlJiBjYiA9IGNzLmNlbGwtPnN0eWxlKCktPmJvcmRlckxlZnQoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoY2Iuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgcmIgPSBjcy5jZWxs
LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpOworICAgICAgICAgICAgICAgIGlmIChy
Yi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworCisg
ICAgICAgICAgICAgICAgaWYgKGNiLnN0eWxlKCkgPiBCSElEREVOICYmIGNiLndpZHRoID4gYm9y
ZGVyV2lkdGgpCisgICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gY2Iud2lkdGg7Cisg
ICAgICAgICAgICAgICAgaWYgKHJiLnN0eWxlKCkgPiBCSElEREVOICYmIHJiLndpZHRoID4gYm9y
ZGVyV2lkdGgpCisgICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gcmIud2lkdGg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJvcmRlcldpZHRoIC8gMjsK
ICAgICB9CiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpib3JkZXJMZWZ0KCk7CiB9CiAgICAgCi1p
bnQgUmVuZGVyVGFibGU6OmJvcmRlclJpZ2h0KCkgY29uc3QKK2ludCBSZW5kZXJUYWJsZTo6Y2Fs
Y0JvcmRlclJpZ2h0KCkgY29uc3QKIHsKICAgICBpZiAoY29sbGFwc2VCb3JkZXJzKCkpIHsKLSAg
ICAgICAgLy8gRklYTUU6IEZvciBzdHJpY3QgbW9kZSwgcmV0dXJuaW5nIDAgaXMgY29ycmVjdCwg
c2luY2UgdGhlIHRhYmxlIGJvcmRlciBoYWxmIHNwaWxscyBpbnRvIHRoZSBtYXJnaW4sCi0gICAg
ICAgIC8vIGJ1dCBJJ20gd29ya2luZyB0byBnZXQgdGhpcyBjaGFuZ2VkLiAgRm9yIG5vdywgZm9s
bG93IHRoZSBzcGVjLgotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgLy8gRGV0ZXJtaW5lZCBi
eSB0aGUgbGFzdCBjZWxsIG9mIHRoZSBmaXJzdCByb3cuIFNlZSB0aGUgQ1NTIDIuMSBzcGVjLCBz
ZWN0aW9uIDE3LjYuMi4KKyAgICAgICAgaWYgKG51bUVmZkNvbHMoKSA9PSAwKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAgICAgdW5zaWduZWQgYm9yZGVyV2lkdGggPSAwOworCisgICAg
ICAgIGNvbnN0IEJvcmRlclZhbHVlJiB0YiA9IHN0eWxlKCktPmJvcmRlclJpZ2h0KCk7CisgICAg
ICAgIGlmICh0Yi5zdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgaWYgKHRiLnN0eWxlKCkgPiBCSElEREVOKQorICAgICAgICAgICAgYm9yZGVyV2lkdGgg
PSB0Yi53aWR0aDsKKworICAgICAgICBpbnQgcmlnaHRtb3N0Q29sdW1uID0gc3R5bGUoKS0+ZGly
ZWN0aW9uKCkgPT0gUlRMID8gMCA6IG51bUVmZkNvbHMoKSAtIDE7CisgICAgICAgIFJlbmRlclRh
YmxlQ29sICpjb2xHcm91cCA9IGNvbEVsZW1lbnQocmlnaHRtb3N0Q29sdW1uKTsKKyAgICAgICAg
aWYgKGNvbEdyb3VwKSB7CisgICAgICAgICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgZ2IgPSBzdHls
ZSgpLT5ib3JkZXJSaWdodCgpOworICAgICAgICAgICAgaWYgKGdiLnN0eWxlKCkgPT0gQkhJRERF
TikKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChnYi5zdHlsZSgp
ID4gQkhJRERFTiAmJiBnYi53aWR0aCA+IGJvcmRlcldpZHRoKQorICAgICAgICAgICAgICAgIGJv
cmRlcldpZHRoID0gZ2Iud2lkdGg7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJlbmRl
ck9iamVjdCAqY2hpbGQgPSBmaXJzdENoaWxkKCk7CisgICAgICAgIHdoaWxlIChjaGlsZCAmJiAh
Y2hpbGQtPmlzVGFibGVTZWN0aW9uKCkpCisgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZygpOworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQtPmlzVGFibGVTZWN0aW9uKCkp
IHsKKyAgICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbiA9IHN0YXRpY19jYXN0
PFJlbmRlclRhYmxlU2VjdGlvbio+KGNoaWxkKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKHNlY3Rpb24tPm51bVJvd3MoKSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAoYm9y
ZGVyV2lkdGggKyAxKSAvIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IEJvcmRl
clZhbHVlJiBzYiA9IHNlY3Rpb24tPnN0eWxlKCktPmJvcmRlclJpZ2h0KCk7CisgICAgICAgICAg
ICBpZiAoc2Iuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgaWYgKHNiLnN0eWxlKCkgPiBCSElEREVOICYmIHNiLndpZHRoID4gYm9yZGVy
V2lkdGgpCisgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBzYi53aWR0aDsKKworICAgICAg
ICAgICAgY29uc3QgUmVuZGVyVGFibGVTZWN0aW9uOjpDZWxsU3RydWN0JiBjcyA9IHNlY3Rpb24t
PmNlbGxBdCgwLCByaWdodG1vc3RDb2x1bW4pOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoY3MuY2VsbCkgeworICAgICAgICAgICAgICAgIGNvbnN0IEJvcmRlclZhbHVlJiBjYiA9IGNz
LmNlbGwtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCk7CisgICAgICAgICAgICAgICAgaWYgKGNiLnN0
eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICAgICAgY29uc3QgQm9yZGVyVmFsdWUmIHJiID0gY3MuY2VsbC0+cGFyZW50KCktPnN0eWxl
KCktPmJvcmRlclJpZ2h0KCk7CisgICAgICAgICAgICAgICAgaWYgKHJiLnN0eWxlKCkgPT0gQkhJ
RERFTikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgICAgICBp
ZiAoY2Iuc3R5bGUoKSA+IEJISURERU4gJiYgY2Iud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAg
ICAgICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBjYi53aWR0aDsKKyAgICAgICAgICAgICAgICBp
ZiAocmIuc3R5bGUoKSA+IEJISURERU4gJiYgcmIud2lkdGggPiBib3JkZXJXaWR0aCkKKyAgICAg
ICAgICAgICAgICAgICAgYm9yZGVyV2lkdGggPSByYi53aWR0aDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gKGJvcmRlcldpZHRoICsgMSkgLyAyOwogICAgIH0KICAg
ICByZXR1cm4gUmVuZGVyQmxvY2s6OmJvcmRlclJpZ2h0KCk7CiB9CiAKK3ZvaWQgUmVuZGVyVGFi
bGU6OnJlY2FsY0hvcml6b250YWxCb3JkZXJzKCkKK3sKKyAgICBtX2JvcmRlckxlZnQgPSBjYWxj
Qm9yZGVyTGVmdCgpOworICAgIG1fYm9yZGVyUmlnaHQgPSBjYWxjQm9yZGVyUmlnaHQoKTsKK30K
KwogaW50IFJlbmRlclRhYmxlOjpib3JkZXJUb3AoKSBjb25zdAogewotICAgIGlmIChjb2xsYXBz
ZUJvcmRlcnMoKSkgewotICAgICAgICAvLyBGSVhNRTogRm9yIHN0cmljdCBtb2RlLCByZXR1cm5p
bmcgMCBpcyBjb3JyZWN0LCBzaW5jZSB0aGUgdGFibGUgYm9yZGVyIGhhbGYgc3BpbGxzIGludG8g
dGhlIG1hcmdpbiwKLSAgICAgICAgLy8gYnV0IEknbSB3b3JraW5nIHRvIGdldCB0aGlzIGNoYW5n
ZWQuICBGb3Igbm93LCBmb2xsb3cgdGhlIHNwZWMuCi0gICAgICAgIHJldHVybiAwOwotICAgIH0K
KyAgICBpZiAoY29sbGFwc2VCb3JkZXJzKCkpCisgICAgICAgIHJldHVybiBvdXRlckJvcmRlclRv
cCgpOwogICAgIHJldHVybiBSZW5kZXJCbG9jazo6Ym9yZGVyVG9wKCk7CiB9CiAKIGludCBSZW5k
ZXJUYWJsZTo6Ym9yZGVyQm90dG9tKCkgY29uc3QKIHsKLSAgICBpZiAoY29sbGFwc2VCb3JkZXJz
KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEZvciBzdHJpY3QgbW9kZSwgcmV0dXJuaW5nIDAgaXMg
Y29ycmVjdCwgc2luY2UgdGhlIHRhYmxlIGJvcmRlciBoYWxmIHNwaWxscyBpbnRvIHRoZSBtYXJn
aW4sCi0gICAgICAgIC8vIGJ1dCBJJ20gd29ya2luZyB0byBnZXQgdGhpcyBjaGFuZ2VkLiAgRm9y
IG5vdywgZm9sbG93IHRoZSBzcGVjLgorICAgIGlmIChjb2xsYXBzZUJvcmRlcnMoKSkKKyAgICAg
ICAgcmV0dXJuIG91dGVyQm9yZGVyQm90dG9tKCk7CisgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpi
b3JkZXJCb3R0b20oKTsKK30KKworaW50IFJlbmRlclRhYmxlOjpvdXRlckJvcmRlclRvcCgpIGNv
bnN0Cit7CisgICAgaWYgKCFjb2xsYXBzZUJvcmRlcnMoKSkKICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgaW50IGJvcmRlcldpZHRoID0gMDsKKyAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHRvcFNlY3Rp
b247CisgICAgaWYgKGhlYWQpCisgICAgICAgIHRvcFNlY3Rpb24gPSBoZWFkOworICAgIGVsc2Ug
aWYgKGZpcnN0Qm9keSkKKyAgICAgICAgdG9wU2VjdGlvbiA9IGZpcnN0Qm9keTsKKyAgICBlbHNl
IGlmIChmb290KQorICAgICAgICB0b3BTZWN0aW9uID0gZm9vdDsKKyAgICBlbHNlCisgICAgICAg
IHRvcFNlY3Rpb24gPSAwOworICAgIGlmICh0b3BTZWN0aW9uKSB7CisgICAgICAgIGJvcmRlcldp
ZHRoID0gdG9wU2VjdGlvbi0+b3V0ZXJCb3JkZXJUb3AoKTsKKyAgICAgICAgaWYgKGJvcmRlcldp
ZHRoID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIDA7ICAgLy8gT3ZlcnJpZGRlbiBieSBoaWRk
ZW4KICAgICB9Ci0gICAgcmV0dXJuIFJlbmRlckJsb2NrOjpib3JkZXJCb3R0b20oKTsKKyAgICBj
b25zdCBCb3JkZXJWYWx1ZSYgdGIgPSBzdHlsZSgpLT5ib3JkZXJUb3AoKTsKKyAgICBpZiAodGIu
c3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAodGIuc3R5bGUo
KSA+IEJISURERU4gJiYgKGludCkodGIud2lkdGggLyAyKSA+IGJvcmRlcldpZHRoKQorICAgICAg
ICBib3JkZXJXaWR0aCA9IHRiLndpZHRoIC8gMjsKKyAgICByZXR1cm4gYm9yZGVyV2lkdGg7Cit9
CisKK2ludCBSZW5kZXJUYWJsZTo6b3V0ZXJCb3JkZXJCb3R0b20oKSBjb25zdAoreworICAgIGlm
ICghY29sbGFwc2VCb3JkZXJzKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGludCBib3JkZXJX
aWR0aCA9IDA7CisgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBib3R0b21TZWN0aW9uOworICAgIGlm
IChmb290KQorICAgICAgICBib3R0b21TZWN0aW9uID0gZm9vdDsKKyAgICBlbHNlIHsKKyAgICAg
ICAgUmVuZGVyT2JqZWN0KiBjaGlsZDsKKyAgICAgICAgZm9yIChjaGlsZCA9IGxhc3RDaGlsZCgp
OyBjaGlsZCAmJiAhY2hpbGQtPmlzVGFibGVTZWN0aW9uKCk7IGNoaWxkID0gY2hpbGQtPnByZXZp
b3VzU2libGluZygpKTsKKyAgICAgICAgYm90dG9tU2VjdGlvbiA9IGNoaWxkID8gc3RhdGljX2Nh
c3Q8UmVuZGVyVGFibGVTZWN0aW9uICo+KGNoaWxkKSA6IDA7CisgICAgfQorICAgIGlmIChib3R0
b21TZWN0aW9uKSB7CisgICAgICAgIGJvcmRlcldpZHRoID0gYm90dG9tU2VjdGlvbi0+b3V0ZXJC
b3JkZXJCb3R0b20oKTsKKyAgICAgICAgaWYgKGJvcmRlcldpZHRoID09IC0xKQorICAgICAgICAg
ICAgcmV0dXJuIDA7ICAgLy8gT3ZlcnJpZGRlbiBieSBoaWRkZW4KKyAgICB9CisgICAgY29uc3Qg
Qm9yZGVyVmFsdWUmIHRiID0gc3R5bGUoKS0+Ym9yZGVyQm90dG9tKCk7CisgICAgaWYgKHRiLnN0
eWxlKCkgPT0gQkhJRERFTikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKHRiLnN0eWxlKCkg
PiBCSElEREVOICYmIChpbnQpKHRiLndpZHRoICsgMSkgLyAyID4gYm9yZGVyV2lkdGgpCisgICAg
ICAgIGJvcmRlcldpZHRoID0gKHRiLndpZHRoICsgMSkgLyAyOworICAgIHJldHVybiBib3JkZXJX
aWR0aDsKK30KKworaW50IFJlbmRlclRhYmxlOjpvdXRlckJvcmRlckxlZnQoKSBjb25zdAorewor
ICAgIGlmICghY29sbGFwc2VCb3JkZXJzKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaW50
IGJvcmRlcldpZHRoID0gMDsKKworICAgIGNvbnN0IEJvcmRlclZhbHVlJiB0YiA9IHN0eWxlKCkt
PmJvcmRlckxlZnQoKTsKKyAgICBpZiAodGIuc3R5bGUoKSA9PSBCSElEREVOKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICBpZiAodGIuc3R5bGUoKSA+IEJISURERU4pCisgICAgICAgIGJvcmRlcldp
ZHRoID0gdGIud2lkdGggLyAyOworCisgICAgYm9vbCBhbGxIaWRkZW4gPSB0cnVlOworICAgIGZv
ciAoUmVuZGVyT2JqZWN0ICpjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFjaGlsZC0+aXNUYWJsZVNlY3Rpb24o
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpbnQgc3cgPSBzdGF0aWNfY2FzdDxS
ZW5kZXJUYWJsZVNlY3Rpb24gKj4oY2hpbGQpLT5vdXRlckJvcmRlckxlZnQoKTsKKyAgICAgICAg
aWYgKHN3ID09IC0xKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGFsbEhpZGRlbiA9IGZhbHNlOworICAgICAgICBib3JkZXJXaWR0aCA9IG1heChib3Jk
ZXJXaWR0aCwgc3cpOworICAgIH0KKyAgICBpZiAoYWxsSGlkZGVuKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHJldHVybiBib3JkZXJXaWR0aDsKK30KKworaW50IFJlbmRlclRhYmxlOjpvdXRl
ckJvcmRlclJpZ2h0KCkgY29uc3QKK3sKKyAgICBpZiAoIWNvbGxhcHNlQm9yZGVycygpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGludCBib3JkZXJXaWR0aCA9IDA7CisKKyAgICBjb25zdCBC
b3JkZXJWYWx1ZSYgdGIgPSBzdHlsZSgpLT5ib3JkZXJSaWdodCgpOworICAgIGlmICh0Yi5zdHls
ZSgpID09IEJISURERU4pCisgICAgICAgIHJldHVybiAwOworICAgIGlmICh0Yi5zdHlsZSgpID4g
QkhJRERFTikKKyAgICAgICAgYm9yZGVyV2lkdGggPSAodGIud2lkdGggKyAxKSAvIDI7CisKKyAg
ICBib29sIGFsbEhpZGRlbiA9IHRydWU7CisgICAgZm9yIChSZW5kZXJPYmplY3QgKmNoaWxkID0g
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICBpZiAoIWNoaWxkLT5pc1RhYmxlU2VjdGlvbigpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGludCBzdyA9IHN0YXRpY19jYXN0PFJlbmRlclRhYmxlU2VjdGlvbiAqPihjaGls
ZCktPm91dGVyQm9yZGVyUmlnaHQoKTsKKyAgICAgICAgaWYgKHN3ID09IC0xKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFsbEhpZGRlbiA9IGZhbHNl
OworICAgICAgICBib3JkZXJXaWR0aCA9IG1heChib3JkZXJXaWR0aCwgc3cpOworICAgIH0KKyAg
ICBpZiAoYWxsSGlkZGVuKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBib3JkZXJX
aWR0aDsKIH0KIAogUmVuZGVyVGFibGVDZWxsKiBSZW5kZXJUYWJsZTo6Y2VsbEFib3ZlKGNvbnN0
IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkgY29uc3QKQEAgLTY4NCw2ICs5MDEsOCBAQCBSZW5kZXJU
YWJsZUNlbGwqIFJlbmRlclRhYmxlOjpjZWxsQWJvdmUoCiAgICAgICAgIHNlY3Rpb24gPSBjZWxs
LT5zZWN0aW9uKCk7CiAgICAgICAgIHJBYm92ZSA9IHItMTsKICAgICB9IGVsc2UgeworICAgICAg
ICBpZiAoY2VsbC0+c2VjdGlvbigpID09IGhlYWQpCisgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgLy8gY2VsbCBpcyBhdCB0b3Agb2YgYSBzZWN0aW9uLCB1c2UgbGFzdCByb3cgaW4gcHJl
dmlvdXMgc2VjdGlvbgogICAgICAgICBmb3IgKFJlbmRlck9iamVjdCAqcHJldlNlY3Rpb24gPSBj
ZWxsLT5zZWN0aW9uKCktPnByZXZpb3VzU2libGluZygpOwogICAgICAgICAgICAgIHByZXZTZWN0
aW9uICYmIHJBYm92ZSA8IDA7CkBAIC03MjEsNiArOTQwLDggQEAgUmVuZGVyVGFibGVDZWxsKiBS
ZW5kZXJUYWJsZTo6Y2VsbEJlbG93KAogICAgICAgICBzZWN0aW9uID0gY2VsbC0+c2VjdGlvbigp
OwogICAgICAgICByQmVsb3c9IHIrMTsKICAgICB9IGVsc2UgeworICAgICAgICBpZiAoY2VsbC0+
c2VjdGlvbigpID09IGZvb3QpCisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgLy8gVGhl
IGNlbGwgaXMgYXQgdGhlIGJvdHRvbSBvZiBhIHNlY3Rpb24uIFVzZSB0aGUgZmlyc3Qgcm93IGlu
IHRoZSBuZXh0IHNlY3Rpb24uCiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBuZXh0U2VjdGlv
biA9IGNlbGwtPnNlY3Rpb24oKS0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgICBuZXh0U2Vj
dGlvbiAmJiByQmVsb3cgPCAwOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX3N0eWxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfc3R5bGUuY3BwCShy
ZXZpc2lvbiAxNDE3MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc5Miw3ICs3OTIsMjAgQEAgUmVuZGVyU3R5bGU6OkRpZmYgUmVuZGVy
U3R5bGU6OmRpZmYoIGNvbgogICAgICAgICAgICAgICEoaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9j
ZWxscyA9PSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscykgfHwKICAgICAgICAg
ICAgICAhKGluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9zaWRlID09IG90aGVyLT5pbmhlcml0ZWRf
ZmxhZ3MuX2NhcHRpb25fc2lkZSkgfHwKICAgICAgICAgICAgICAhKG5vbmluaGVyaXRlZF9mbGFn
cy5fdGFibGVfbGF5b3V0ID09IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3RhYmxlX2xheW91
dCkpCi0gICAgICAgIHJldHVybiBMYXlvdXQ7CisgICAgICAgICAgICByZXR1cm4gTGF5b3V0Owor
ICAgICAgICAKKyAgICAgICAgLy8gSW4gdGhlIGNvbGxhcHNpbmcgYm9yZGVyIG1vZGVsLCAnaGlk
ZGVuJyBzdXBwcmVzc2VzIG90aGVyIGJvcmRlcnMsIHdoaWxlICdub25lJworICAgICAgICAvLyBk
b2VzIG5vdCwgc28gdGhlc2Ugc3R5bGUgZGlmZmVyZW5jZXMgY2FuIGJlIHdpZHRoIGRpZmZlcmVu
Y2VzLgorICAgICAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UgJiYKKyAg
ICAgICAgICAgIChib3JkZXJUb3BTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXItPmJvcmRlclRv
cFN0eWxlKCkgPT0gQk5PTkUgfHwKKyAgICAgICAgICAgICBib3JkZXJUb3BTdHlsZSgpID09IEJO
T05FICYmIG90aGVyLT5ib3JkZXJUb3BTdHlsZSgpID09IEJISURERU4gfHwKKyAgICAgICAgICAg
ICBib3JkZXJCb3R0b21TdHlsZSgpID09IEJISURERU4gJiYgb3RoZXItPmJvcmRlckJvdHRvbVN0
eWxlKCkgPT0gQk5PTkUgfHwKKyAgICAgICAgICAgICBib3JkZXJCb3R0b21TdHlsZSgpID09IEJO
T05FICYmIG90aGVyLT5ib3JkZXJCb3R0b21TdHlsZSgpID09IEJISURERU4gfHwKKyAgICAgICAg
ICAgICBib3JkZXJMZWZ0U3R5bGUoKSA9PSBCSElEREVOICYmIG90aGVyLT5ib3JkZXJMZWZ0U3R5
bGUoKSA9PSBCTk9ORSB8fAorICAgICAgICAgICAgIGJvcmRlckxlZnRTdHlsZSgpID09IEJOT05F
ICYmIG90aGVyLT5ib3JkZXJMZWZ0U3R5bGUoKSA9PSBCSElEREVOIHx8CisgICAgICAgICAgICAg
Ym9yZGVyUmlnaHRTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXItPmJvcmRlclJpZ2h0U3R5bGUo
KSA9PSBCTk9ORSB8fAorICAgICAgICAgICAgIGJvcmRlclJpZ2h0U3R5bGUoKSA9PSBCTk9ORSAm
JiBvdGhlci0+Ym9yZGVyUmlnaHRTdHlsZSgpID09IEJISURERU4pKQorICAgICAgICAgICAgcmV0
dXJuIExheW91dDsKICAgICB9CiAKIC8vIG9ubHkgZm9yIGxpc3RzOgo=
</data>
<flag name="review"
          id="2242"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>