<?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>7301</bug_id>
          
          <creation_ts>2006-02-16 07:29:22 -0800</creation_ts>
          <short_desc>Text shadow does not repaint correctly</short_desc>
          <delta_ts>2006-04-04 01:48:45 -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>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>32961</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-02-16 07:29:22 -0800</bug_when>
    <thetext>Text shadow is not accounted for in repaint. In the attached testcase, press Test to move the gray div and note how the part of the (blue) shadow that overflows the div is not erased from the old position nor painted in the new position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32962</commentid>
    <comment_count>1</comment_count>
      <attachid>6541</attachid>
    <who name="">mitz</who>
    <bug_when>2006-02-16 07:30:54 -0800</bug_when>
    <thetext>Created attachment 6541
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37063</commentid>
    <comment_count>2</comment_count>
      <attachid>7193</attachid>
    <who name="">mitz</who>
    <bug_when>2006-03-20 12:43:28 -0800</bug_when>
    <thetext>Created attachment 7193
Patch w/o test and change log

This patch fixes the repaint issues by treating the shadows as overflow. This has the side effect that the selection highlight also grows to cover the shadow, but on the other hand, it eats into the next line&apos;s highlighting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37120</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-03-20 22:51:12 -0800</bug_when>
    <thetext>The patch breaks the appearance of the &quot;segmented control&quot; in the Web Inspector: the selected segment&apos;s label is scrolled up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37192</commentid>
    <comment_count>4</comment_count>
      <attachid>7215</attachid>
    <who name="">mitz</who>
    <bug_when>2006-03-21 09:57:24 -0800</bug_when>
    <thetext>Created attachment 7215
Patch w/o test and change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37347</commentid>
    <comment_count>5</comment_count>
      <attachid>7231</attachid>
    <who name="">mitz</who>
    <bug_when>2006-03-22 08:22:34 -0800</bug_when>
    <thetext>Created attachment 7231
Incomplete patch

This patch takes care of vertical overflow (with the side-effect on selection highlighting) and of horizontal overflow for InlineFlowBox (and blocks), but not for InlineTextBox itself. This means that if only the shadow is in the damage rect, it still won&apos;t be painted (e.g. if you highlight only &quot;bar&quot; in &quot;&lt;span style=&quot;text-shadow: green 10px 5px;&quot;&gt;foo&lt;/span&gt;bar&quot;).

A possible solution that won&apos;t involve adding data to InlineTextBox is to cache the max horizontal overflow per InlineFlowBox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37565</commentid>
    <comment_count>6</comment_count>
      <attachid>7295</attachid>
    <who name="">mitz</who>
    <bug_when>2006-03-25 11:38:17 -0800</bug_when>
    <thetext>Created attachment 7295
Separate vertical overflow from vertical selection bounds and handle horizontal shadow overflow

This version addresses horizontal overflow and also separates vertical painting overflow from vertical selection bounds, so the selection highlight is not affected by shadows. As a bonus, it makes inline blocks with overflow repaint correctly.

I removed parts of the previous patch that are now part of bug 7916, so this patch alone doesn&apos;t even fix this bug&apos;s test case. I also didn&apos;t make a test because I want to make an automated one once DumpRenderTree supports repaint tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37566</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-03-25 11:40:50 -0800</bug_when>
    <thetext>Forgot to add that I think this mechanism could be used to fix bug 6274 once you figure out how to tell how far a given font can really paint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37673</commentid>
    <comment_count>8</comment_count>
      <attachid>7334</attachid>
    <who name="">mitz</who>
    <bug_when>2006-03-27 08:50:24 -0800</bug_when>
    <thetext>Created attachment 7334
Patch including tests and change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37982</commentid>
    <comment_count>9</comment_count>
      <attachid>7334</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-30 08:42:41 -0800</bug_when>
    <thetext>Comment on attachment 7334
Patch including tests and change log

It&apos;s sad that we have to add all these fields, but I think it&apos;s justified.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38480</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-04-04 01:48:45 -0700</bug_when>
    <thetext>Verified in r13675 nightly.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6541</attachid>
            <date>2006-02-16 07:30:54 -0800</date>
            <delta_ts>2006-02-16 07:30:54 -0800</delta_ts>
            <desc>Testcase</desc>
            <filename>shadow repaint testcase.html</filename>
            <type>text/html</type>
            <size>172</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGJ1dHRvbiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndCcpLnN0eWxlLm1hcmdp
blRvcCA9ICczMHB4JyI+VGVzdDwvYnV0dG9uPgo8ZGl2IGlkPSJ0IiBzdHlsZT0iYmFja2dyb3Vu
ZDogc2lsdmVyOyB0ZXh0LXNoYWRvdzogYmx1ZSAxMHB4IDEwcHgiPkxvcmVtIGlwc3VtPC9kaXY+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7193</attachid>
            <date>2006-03-20 12:43:28 -0800</date>
            <delta_ts>2006-03-21 09:57:24 -0800</delta_ts>
            <desc>Patch w/o test and change log</desc>
            <filename>7301_r0.patch</filename>
            <type>text/plain</type>
            <size>3141</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMTMzOTkpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjgsNyArNzY4LDcg
QEAgdm9pZCBSZW5kZXJCb3g6OnNldElubGluZUJveFdyYXBwZXIoSW5saQogCiBJbnRSZWN0IFJl
bmRlckJveDo6Z2V0QWJzb2x1dGVSZXBhaW50UmVjdCgpCiB7Ci0gICAgSW50UmVjdCByKDAsIDAs
IG92ZXJmbG93V2lkdGgoZmFsc2UpLCBvdmVyZmxvd0hlaWdodChmYWxzZSkpOworICAgIEludFJl
Y3QgciA9IG92ZXJmbG93UmVjdChmYWxzZSk7CiAgICAgaWYgKHN0eWxlKCkpIHsKICAgICAgICAg
aWYgKHN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgICAgIC8vIFRoZSB0aGVtZSBt
YXkgd2lzaCB0byBpbmZsYXRlIHRoZSByZWN0IHVzZWQgd2hlbiByZXBhaW50aW5nLgpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvYmlkaS5jcHAJKHJldmlzaW9uIDEzMzk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MTMsNyArMTcxMyw4IEBAIEludFJlY3QgUmVuZGVyQmxv
Y2s6OmxheW91dElubGluZUNoaWxkcmUKICAgICBjaGVja0xpbmVzRm9yT3ZlcmZsb3coKTsKIAog
ICAgIGlmICh1c2VSZXBhaW50UmVjdCkgewotICAgICAgICByZXBhaW50UmVjdC5zZXRXaWR0aChr
TWF4KChpbnQpbV93aWR0aCwgbV9vdmVyZmxvd1dpZHRoKSk7CisgICAgICAgIHJlcGFpbnRSZWN0
LnNldFgobV9vdmVyZmxvd0xlZnQpOworICAgICAgICByZXBhaW50UmVjdC5zZXRXaWR0aChrTWF4
KChpbnQpbV93aWR0aCwgbV9vdmVyZmxvd1dpZHRoKSAtIG1fb3ZlcmZsb3dMZWZ0KTsKICAgICAg
ICAgaWYgKHJlcGFpbnRSZWN0LmhlaWdodCgpID09IDApCiAgICAgICAgICAgICByZXBhaW50UmVj
dC5zZXRIZWlnaHQoa01heChvbGRMaW5lQm90dG9tLCBtX292ZXJmbG93SGVpZ2h0KSAtIHJlcGFp
bnRSZWN0LnkoKSk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2xpbmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9saW5lLmNwcAkocmV2
aXNpb24gMTMzOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfbGluZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3Niw4ICs0NzYsMTQgQEAgaW50IElubGluZUZsb3dCb3g6OnBsYWNlQm94
ZXNIb3Jpem9udGFsbAogICAgICAgICAgICAgICAgIG5lZWRzV29yZFNwYWNpbmcgPSAhcnQtPnRl
eHQoKVt0ZXh0LT5lbmQoKV0uaXNTcGFjZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
dGV4dC0+c2V0WFBvcyh4KTsKLSAgICAgICAgICAgIGxlZnRQb3NpdGlvbiA9IGtNaW4oeCwgbGVm
dFBvc2l0aW9uKTsKLSAgICAgICAgICAgIHJpZ2h0UG9zaXRpb24gPSBrTWF4KHggKyB0ZXh0LT53
aWR0aCgpLCByaWdodFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGludCBzaGFkb3dMZWZ0ID0gMDsK
KyAgICAgICAgICAgIGludCBzaGFkb3dSaWdodCA9IDA7CisgICAgICAgICAgICBmb3IgKFNoYWRv
d0RhdGEqIHNoYWRvdyA9IHJ0LT5zdHlsZSgpLT50ZXh0U2hhZG93KCk7IHNoYWRvdzsgc2hhZG93
ID0gc2hhZG93LT5uZXh0KSB7CisgICAgICAgICAgICAgICAgc2hhZG93TGVmdCA9IGtNaW4oc2hh
ZG93TGVmdCwgc2hhZG93LT54IC0gc2hhZG93LT5ibHVyKTsKKyAgICAgICAgICAgICAgICBzaGFk
b3dSaWdodCA9IGtNYXgoc2hhZG93UmlnaHQsIHNoYWRvdy0+eCArIHNoYWRvdy0+Ymx1cik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBsZWZ0UG9zaXRpb24gPSBrTWluKHggKyBzaGFkb3dM
ZWZ0LCBsZWZ0UG9zaXRpb24pOworICAgICAgICAgICAgcmlnaHRQb3NpdGlvbiA9IGtNYXgoeCAr
IHRleHQtPndpZHRoKCkgKyBzaGFkb3dSaWdodCwgcmlnaHRQb3NpdGlvbik7CiAgICAgICAgICAg
ICB4ICs9IHRleHQtPndpZHRoKCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC02Njcs
NiArNjczLDE0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc1ZlcnRpY2FsbHkKICAg
ICAgICAgICAgIG5ld0Jhc2VsaW5lID0gZm9udC5hc2NlbnQoKTsKICAgICAgICAgICAgIG5ld1kg
Kz0gY3Vyci0+YmFzZWxpbmUoKSAtIG5ld0Jhc2VsaW5lOwogICAgICAgICAgICAgbmV3SGVpZ2h0
ID0gbmV3QmFzZWxpbmUgKyBmb250LmRlc2NlbnQoKTsKKyAgICAgICAgICAgIGludCBzaGFkb3dU
b3AgPSAwOworICAgICAgICAgICAgaW50IHNoYWRvd0JvdHRvbSA9IDA7CisgICAgICAgICAgICBm
b3IgKFNoYWRvd0RhdGEqIHNoYWRvdyA9IGN1cnItPm9iamVjdCgpLT5zdHlsZSgpLT50ZXh0U2hh
ZG93KCk7IHNoYWRvdzsgc2hhZG93ID0gc2hhZG93LT5uZXh0KSB7CisgICAgICAgICAgICAgICAg
c2hhZG93VG9wID0ga01pbihzaGFkb3dUb3AsIHNoYWRvdy0+eSAtIHNoYWRvdy0+Ymx1cik7Cisg
ICAgICAgICAgICAgICAgc2hhZG93Qm90dG9tID0ga01heChzaGFkb3dCb3R0b20sIHNoYWRvdy0+
eSArIHNoYWRvdy0+Ymx1cik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXdZICs9IHNo
YWRvd1RvcDsKKyAgICAgICAgICAgIG5ld0hlaWdodCArPSBzaGFkb3dCb3R0b20gLSBzaGFkb3dU
b3A7CiAgICAgICAgICAgICBpZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpIHsKICAgICAgICAg
ICAgICAgICBuZXdIZWlnaHQgKz0gY3Vyci0+b2JqZWN0KCktPmJvcmRlclRvcCgpICsgY3Vyci0+
b2JqZWN0KCktPnBhZGRpbmdUb3AoKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
ci0+b2JqZWN0KCktPmJvcmRlckJvdHRvbSgpICsgY3Vyci0+b2JqZWN0KCktPnBhZGRpbmdCb3R0
b20oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7215</attachid>
            <date>2006-03-21 09:57:24 -0800</date>
            <delta_ts>2006-03-22 08:22:34 -0800</delta_ts>
            <desc>Patch w/o test and change log</desc>
            <filename>7301_r1.patch</filename>
            <type>text/plain</type>
            <size>3180</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMTM0MTkpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjgsNyArNzY4LDcg
QEAgdm9pZCBSZW5kZXJCb3g6OnNldElubGluZUJveFdyYXBwZXIoSW5saQogCiBJbnRSZWN0IFJl
bmRlckJveDo6Z2V0QWJzb2x1dGVSZXBhaW50UmVjdCgpCiB7Ci0gICAgSW50UmVjdCByKDAsIDAs
IG92ZXJmbG93V2lkdGgoZmFsc2UpLCBvdmVyZmxvd0hlaWdodChmYWxzZSkpOworICAgIEludFJl
Y3QgciA9IG92ZXJmbG93UmVjdChmYWxzZSk7CiAgICAgaWYgKHN0eWxlKCkpIHsKICAgICAgICAg
aWYgKHN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgICAgIC8vIFRoZSB0aGVtZSBt
YXkgd2lzaCB0byBpbmZsYXRlIHRoZSByZWN0IHVzZWQgd2hlbiByZXBhaW50aW5nLgpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvYmlkaS5jcHAJKHJldmlzaW9uIDEzNDE5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MTMsNyArMTcxMyw4IEBAIEludFJlY3QgUmVuZGVyQmxv
Y2s6OmxheW91dElubGluZUNoaWxkcmUKICAgICBjaGVja0xpbmVzRm9yT3ZlcmZsb3coKTsKIAog
ICAgIGlmICh1c2VSZXBhaW50UmVjdCkgewotICAgICAgICByZXBhaW50UmVjdC5zZXRXaWR0aChr
TWF4KChpbnQpbV93aWR0aCwgbV9vdmVyZmxvd1dpZHRoKSk7CisgICAgICAgIHJlcGFpbnRSZWN0
LnNldFgobV9vdmVyZmxvd0xlZnQpOworICAgICAgICByZXBhaW50UmVjdC5zZXRXaWR0aChrTWF4
KChpbnQpbV93aWR0aCwgbV9vdmVyZmxvd1dpZHRoKSAtIG1fb3ZlcmZsb3dMZWZ0KTsKICAgICAg
ICAgaWYgKHJlcGFpbnRSZWN0LmhlaWdodCgpID09IDApCiAgICAgICAgICAgICByZXBhaW50UmVj
dC5zZXRIZWlnaHQoa01heChvbGRMaW5lQm90dG9tLCBtX292ZXJmbG93SGVpZ2h0KSAtIHJlcGFp
bnRSZWN0LnkoKSk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2xpbmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9saW5lLmNwcAkocmV2
aXNpb24gMTM0MTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfbGluZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3Niw4ICs0NzYsMTQgQEAgaW50IElubGluZUZsb3dCb3g6OnBsYWNlQm94
ZXNIb3Jpem9udGFsbAogICAgICAgICAgICAgICAgIG5lZWRzV29yZFNwYWNpbmcgPSAhcnQtPnRl
eHQoKVt0ZXh0LT5lbmQoKV0uaXNTcGFjZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
dGV4dC0+c2V0WFBvcyh4KTsKLSAgICAgICAgICAgIGxlZnRQb3NpdGlvbiA9IGtNaW4oeCwgbGVm
dFBvc2l0aW9uKTsKLSAgICAgICAgICAgIHJpZ2h0UG9zaXRpb24gPSBrTWF4KHggKyB0ZXh0LT53
aWR0aCgpLCByaWdodFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGludCBzaGFkb3dMZWZ0ID0gMDsK
KyAgICAgICAgICAgIGludCBzaGFkb3dSaWdodCA9IDA7CisgICAgICAgICAgICBmb3IgKFNoYWRv
d0RhdGEqIHNoYWRvdyA9IHJ0LT5zdHlsZSgpLT50ZXh0U2hhZG93KCk7IHNoYWRvdzsgc2hhZG93
ID0gc2hhZG93LT5uZXh0KSB7CisgICAgICAgICAgICAgICAgc2hhZG93TGVmdCA9IGtNaW4oc2hh
ZG93TGVmdCwgc2hhZG93LT54IC0gc2hhZG93LT5ibHVyKTsKKyAgICAgICAgICAgICAgICBzaGFk
b3dSaWdodCA9IGtNYXgoc2hhZG93UmlnaHQsIHNoYWRvdy0+eCArIHNoYWRvdy0+Ymx1cik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBsZWZ0UG9zaXRpb24gPSBrTWluKHggKyBzaGFkb3dM
ZWZ0LCBsZWZ0UG9zaXRpb24pOworICAgICAgICAgICAgcmlnaHRQb3NpdGlvbiA9IGtNYXgoeCAr
IHRleHQtPndpZHRoKCkgKyBzaGFkb3dSaWdodCwgcmlnaHRQb3NpdGlvbik7CiAgICAgICAgICAg
ICB4ICs9IHRleHQtPndpZHRoKCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC02Njcs
NiArNjczLDE1IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc1ZlcnRpY2FsbHkKICAg
ICAgICAgICAgIG5ld0Jhc2VsaW5lID0gZm9udC5hc2NlbnQoKTsKICAgICAgICAgICAgIG5ld1kg
Kz0gY3Vyci0+YmFzZWxpbmUoKSAtIG5ld0Jhc2VsaW5lOwogICAgICAgICAgICAgbmV3SGVpZ2h0
ID0gbmV3QmFzZWxpbmUgKyBmb250LmRlc2NlbnQoKTsKKyAgICAgICAgICAgIGludCBzaGFkb3dU
b3AgPSAwOworICAgICAgICAgICAgaW50IHNoYWRvd0JvdHRvbSA9IDA7CisgICAgICAgICAgICBm
b3IgKFNoYWRvd0RhdGEqIHNoYWRvdyA9IGN1cnItPm9iamVjdCgpLT5zdHlsZSgpLT50ZXh0U2hh
ZG93KCk7IHNoYWRvdzsgc2hhZG93ID0gc2hhZG93LT5uZXh0KSB7CisgICAgICAgICAgICAgICAg
c2hhZG93VG9wID0ga01pbihzaGFkb3dUb3AsIHNoYWRvdy0+eSAtIHNoYWRvdy0+Ymx1cik7Cisg
ICAgICAgICAgICAgICAgc2hhZG93Qm90dG9tID0ga01heChzaGFkb3dCb3R0b20sIHNoYWRvdy0+
eSArIHNoYWRvdy0+Ymx1cik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXdZICs9IHNo
YWRvd1RvcDsKKyAgICAgICAgICAgIG5ld0Jhc2VsaW5lIC09IHNoYWRvd1RvcDsKKyAgICAgICAg
ICAgIG5ld0hlaWdodCArPSBzaGFkb3dCb3R0b20gLSBzaGFkb3dUb3A7CiAgICAgICAgICAgICBp
ZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpIHsKICAgICAgICAgICAgICAgICBuZXdIZWlnaHQg
Kz0gY3Vyci0+b2JqZWN0KCktPmJvcmRlclRvcCgpICsgY3Vyci0+b2JqZWN0KCktPnBhZGRpbmdU
b3AoKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyci0+b2JqZWN0KCktPmJvcmRl
ckJvdHRvbSgpICsgY3Vyci0+b2JqZWN0KCktPnBhZGRpbmdCb3R0b20oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7231</attachid>
            <date>2006-03-22 08:22:34 -0800</date>
            <delta_ts>2006-03-25 11:38:17 -0800</delta_ts>
            <desc>Incomplete patch</desc>
            <filename>7301_r2.patch</filename>
            <type>text/plain</type>
            <size>3872</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMTM0MzEpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjgsNyArNzY4LDcg
QEAgdm9pZCBSZW5kZXJCb3g6OnNldElubGluZUJveFdyYXBwZXIoSW5saQogCiBJbnRSZWN0IFJl
bmRlckJveDo6Z2V0QWJzb2x1dGVSZXBhaW50UmVjdCgpCiB7Ci0gICAgSW50UmVjdCByKDAsIDAs
IG92ZXJmbG93V2lkdGgoZmFsc2UpLCBvdmVyZmxvd0hlaWdodChmYWxzZSkpOworICAgIEludFJl
Y3QgciA9IG92ZXJmbG93UmVjdChmYWxzZSk7CiAgICAgaWYgKHN0eWxlKCkpIHsKICAgICAgICAg
aWYgKHN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgICAgIC8vIFRoZSB0aGVtZSBt
YXkgd2lzaCB0byBpbmZsYXRlIHRoZSByZWN0IHVzZWQgd2hlbiByZXBhaW50aW5nLgpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvYmlkaS5jcHAJKHJldmlzaW9uIDEzNDMxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MTMsNyArMTcxMyw4IEBAIEludFJlY3QgUmVuZGVyQmxv
Y2s6OmxheW91dElubGluZUNoaWxkcmUKICAgICBjaGVja0xpbmVzRm9yT3ZlcmZsb3coKTsKIAog
ICAgIGlmICh1c2VSZXBhaW50UmVjdCkgewotICAgICAgICByZXBhaW50UmVjdC5zZXRXaWR0aChr
TWF4KChpbnQpbV93aWR0aCwgbV9vdmVyZmxvd1dpZHRoKSk7CisgICAgICAgIHJlcGFpbnRSZWN0
LnNldFgobV9vdmVyZmxvd0xlZnQpOworICAgICAgICByZXBhaW50UmVjdC5zZXRXaWR0aChrTWF4
KChpbnQpbV93aWR0aCwgbV9vdmVyZmxvd1dpZHRoKSAtIG1fb3ZlcmZsb3dMZWZ0KTsKICAgICAg
ICAgaWYgKHJlcGFpbnRSZWN0LmhlaWdodCgpID09IDApCiAgICAgICAgICAgICByZXBhaW50UmVj
dC5zZXRIZWlnaHQoa01heChvbGRMaW5lQm90dG9tLCBtX292ZXJmbG93SGVpZ2h0KSAtIHJlcGFp
bnRSZWN0LnkoKSk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2xpbmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9saW5lLmNwcAkocmV2
aXNpb24gMTM0MzEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfbGluZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3Niw4ICs0NzYsMTQgQEAgaW50IElubGluZUZsb3dCb3g6OnBsYWNlQm94
ZXNIb3Jpem9udGFsbAogICAgICAgICAgICAgICAgIG5lZWRzV29yZFNwYWNpbmcgPSAhcnQtPnRl
eHQoKVt0ZXh0LT5lbmQoKV0uaXNTcGFjZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
dGV4dC0+c2V0WFBvcyh4KTsKLSAgICAgICAgICAgIGxlZnRQb3NpdGlvbiA9IGtNaW4oeCwgbGVm
dFBvc2l0aW9uKTsKLSAgICAgICAgICAgIHJpZ2h0UG9zaXRpb24gPSBrTWF4KHggKyB0ZXh0LT53
aWR0aCgpLCByaWdodFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGludCBzaGFkb3dMZWZ0ID0gMDsK
KyAgICAgICAgICAgIGludCBzaGFkb3dSaWdodCA9IDA7CisgICAgICAgICAgICBmb3IgKFNoYWRv
d0RhdGEqIHNoYWRvdyA9IHJ0LT5zdHlsZSgpLT50ZXh0U2hhZG93KCk7IHNoYWRvdzsgc2hhZG93
ID0gc2hhZG93LT5uZXh0KSB7CisgICAgICAgICAgICAgICAgc2hhZG93TGVmdCA9IGtNaW4oc2hh
ZG93TGVmdCwgc2hhZG93LT54IC0gc2hhZG93LT5ibHVyKTsKKyAgICAgICAgICAgICAgICBzaGFk
b3dSaWdodCA9IGtNYXgoc2hhZG93UmlnaHQsIHNoYWRvdy0+eCArIHNoYWRvdy0+Ymx1cik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBsZWZ0UG9zaXRpb24gPSBrTWluKHggKyBzaGFkb3dM
ZWZ0LCBsZWZ0UG9zaXRpb24pOworICAgICAgICAgICAgcmlnaHRQb3NpdGlvbiA9IGtNYXgoeCAr
IHRleHQtPndpZHRoKCkgKyBzaGFkb3dSaWdodCwgcmlnaHRQb3NpdGlvbik7CiAgICAgICAgICAg
ICB4ICs9IHRleHQtPndpZHRoKCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC02NjIs
MTEgKzY2OCwxNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNWZXJ0aWNhbGx5CiAg
ICAgICAgIGludCBuZXdZID0gY3Vyci0+eVBvcygpOwogICAgICAgICBpbnQgbmV3SGVpZ2h0ID0g
Y3Vyci0+aGVpZ2h0KCk7CiAgICAgICAgIGludCBuZXdCYXNlbGluZSA9IGN1cnItPmJhc2VsaW5l
KCk7CisgICAgICAgIGludCBzaGFkb3dUb3AgPSAwOworICAgICAgICBpbnQgc2hhZG93Qm90dG9t
ID0gMDsKICAgICAgICAgaWYgKGN1cnItPmlzVGV4dCgpIHx8IGN1cnItPmlzSW5saW5lRmxvd0Jv
eCgpKSB7CiAgICAgICAgICAgICBjb25zdCBGb250JiBmb250ID0gY3Vyci0+b2JqZWN0KCktPmZv
bnQobV9maXJzdExpbmUpOwogICAgICAgICAgICAgbmV3QmFzZWxpbmUgPSBmb250LmFzY2VudCgp
OwogICAgICAgICAgICAgbmV3WSArPSBjdXJyLT5iYXNlbGluZSgpIC0gbmV3QmFzZWxpbmU7CiAg
ICAgICAgICAgICBuZXdIZWlnaHQgPSBuZXdCYXNlbGluZSArIGZvbnQuZGVzY2VudCgpOworICAg
ICAgICAgICAgZm9yIChTaGFkb3dEYXRhKiBzaGFkb3cgPSBjdXJyLT5vYmplY3QoKS0+c3R5bGUo
KS0+dGV4dFNoYWRvdygpOyBzaGFkb3c7IHNoYWRvdyA9IHNoYWRvdy0+bmV4dCkgeworICAgICAg
ICAgICAgICAgIHNoYWRvd1RvcCA9IGtNaW4oc2hhZG93VG9wLCBzaGFkb3ctPnkgLSBzaGFkb3ct
PmJsdXIpOworICAgICAgICAgICAgICAgIHNoYWRvd0JvdHRvbSA9IGtNYXgoc2hhZG93Qm90dG9t
LCBzaGFkb3ctPnkgKyBzaGFkb3ctPmJsdXIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKGN1cnItPmlzSW5saW5lRmxvd0JveCgpKSB7CiAgICAgICAgICAgICAgICAgbmV3SGVpZ2h0
ICs9IGN1cnItPm9iamVjdCgpLT5ib3JkZXJUb3AoKSArIGN1cnItPm9iamVjdCgpLT5wYWRkaW5n
VG9wKCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnItPm9iamVjdCgpLT5ib3Jk
ZXJCb3R0b20oKSArIGN1cnItPm9iamVjdCgpLT5wYWRkaW5nQm90dG9tKCk7CkBAIC02ODQsMTAg
KzY5NiwxMCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNWZXJ0aWNhbGx5CiAgICAg
ICAgIGN1cnItPnNldEJhc2VsaW5lKG5ld0Jhc2VsaW5lKTsKIAogICAgICAgICBpZiAoY2hpbGRB
ZmZlY3RzVG9wQm90dG9tUG9zKSB7Ci0gICAgICAgICAgICBpZiAobmV3WSA8IHRvcFBvc2l0aW9u
KQotICAgICAgICAgICAgICAgIHRvcFBvc2l0aW9uID0gbmV3WTsKLSAgICAgICAgICAgIGlmIChu
ZXdZICsgbmV3SGVpZ2h0ID4gYm90dG9tUG9zaXRpb24pCi0gICAgICAgICAgICAgICAgYm90dG9t
UG9zaXRpb24gPSBuZXdZICsgbmV3SGVpZ2h0OworICAgICAgICAgICAgaWYgKG5ld1kgKyBzaGFk
b3dUb3AgPCB0b3BQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0b3BQb3NpdGlvbiA9IG5ld1kg
KyBzaGFkb3dUb3A7CisgICAgICAgICAgICBpZiAobmV3WSArIG5ld0hlaWdodCArIHNoYWRvd0Jv
dHRvbSA+IGJvdHRvbVBvc2l0aW9uKQorICAgICAgICAgICAgICAgIGJvdHRvbVBvc2l0aW9uID0g
bmV3WSArIG5ld0hlaWdodCArIHNoYWRvd0JvdHRvbTsKICAgICAgICAgfQogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7295</attachid>
            <date>2006-03-25 11:38:17 -0800</date>
            <delta_ts>2006-03-27 08:50:24 -0800</delta_ts>
            <desc>Separate vertical overflow from vertical selection bounds and handle horizontal shadow overflow</desc>
            <filename>7301_r4.patch</filename>
            <type>text/plain</type>
            <size>14545</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgJKHJldmlzaW9uIDEzNDc2KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTMg
KzExOSw2IEBAIHB1YmxpYzoKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oaW50IF94LCBib29s
IGluY2x1ZGVQYXJ0aWFsR2x5cGhzID0gdHJ1ZSkgY29uc3Q7CiAgICAgaW50IHBvc2l0aW9uRm9y
T2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0OwogICAgIAotICAgIC8qKgotICAgICAqIGlmIHRoaXMg
dGV4dCBydW4gd2FzIHJlbmRlcmVkIEByZWYgX3R5IHBpeGVscyBiZWxvdyB0aGUgdXBwZXIgZWRn
ZQotICAgICAqIG9mIGEgdmlldywgd291bGQgdGhlIEByZWYgX3kgLWNvb3JkaW5hdGUgYmUgaW5z
aWRlIHRoZSB2ZXJ0aWNhbCByYW5nZQotICAgICAqIG9mIHRoaXMgb2JqZWN0J3MgcmVwcmVzZW50
YXRpb24/Ci0gICAgICovCi0gICAgYm9vbCBjaGVja1ZlcnRpY2FsUG9pbnQoaW50IF95LCBpbnQg
X3R5LCBpbnQgX2gpOwotCiAgICAgaW50IG1fc3RhcnQ7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9s
ZW47CiAgICAgCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfbGluZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2xpbmUuY3BwCShyZXZpc2lvbiAxMzQ3
NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9saW5lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDc2LDggKzQ3NiwxNSBAQCBpbnQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0hvcml6b250
YWxsCiAgICAgICAgICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9ICFydC0+dGV4dCgpW3RleHQt
PmVuZCgpXS5pc1NwYWNlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0ZXh0LT5zZXRY
UG9zKHgpOwotICAgICAgICAgICAgbGVmdFBvc2l0aW9uID0ga01pbih4LCBsZWZ0UG9zaXRpb24p
OwotICAgICAgICAgICAgcmlnaHRQb3NpdGlvbiA9IGtNYXgoeCArIHRleHQtPndpZHRoKCksIHJp
Z2h0UG9zaXRpb24pOworICAgICAgICAgICAgaW50IHNoYWRvd0xlZnQgPSAwOworICAgICAgICAg
ICAgaW50IHNoYWRvd1JpZ2h0ID0gMDsKKyAgICAgICAgICAgIGZvciAoU2hhZG93RGF0YSogc2hh
ZG93ID0gcnQtPnN0eWxlKCktPnRleHRTaGFkb3coKTsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ct
Pm5leHQpIHsKKyAgICAgICAgICAgICAgICBzaGFkb3dMZWZ0ID0ga01pbihzaGFkb3dMZWZ0LCBz
aGFkb3ctPnggLSBzaGFkb3ctPmJsdXIpOworICAgICAgICAgICAgICAgIHNoYWRvd1JpZ2h0ID0g
a01heChzaGFkb3dSaWdodCwgc2hhZG93LT54ICsgc2hhZG93LT5ibHVyKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGxlZnRQb3NpdGlvbiA9IGtNaW4oeCArIHNoYWRvd0xlZnQsIGxlZnRQ
b3NpdGlvbik7CisgICAgICAgICAgICByaWdodFBvc2l0aW9uID0ga01heCh4ICsgdGV4dC0+d2lk
dGgoKSArIHNoYWRvd1JpZ2h0LCByaWdodFBvc2l0aW9uKTsKKyAgICAgICAgICAgIG1fbWF4SG9y
aXpvbnRhbFNoYWRvdyA9IGtNYXgoa01heChzaGFkb3dSaWdodCwgLXNoYWRvd0xlZnQpLCBtX21h
eEhvcml6b250YWxTaGFkb3cpOwogICAgICAgICAgICAgeCArPSB0ZXh0LT53aWR0aCgpOwogICAg
ICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtNTQyLDkgKzU0OSwxMiBAQCB2b2lkIElubGluZUZs
b3dCb3g6OnZlcnRpY2FsbHlBbGlnbkJveGVzCiAgICAgaW50IG1heEhlaWdodCA9IG1heEFzY2Vu
dCArIG1heERlc2NlbnQ7CiAgICAgaW50IHRvcFBvc2l0aW9uID0gaGVpZ2h0T2ZCbG9jazsKICAg
ICBpbnQgYm90dG9tUG9zaXRpb24gPSBoZWlnaHRPZkJsb2NrOwotICAgIHBsYWNlQm94ZXNWZXJ0
aWNhbGx5KGhlaWdodE9mQmxvY2ssIG1heEhlaWdodCwgbWF4QXNjZW50LCBzdHJpY3RNb2RlLCB0
b3BQb3NpdGlvbiwgYm90dG9tUG9zaXRpb24pOworICAgIGludCBzZWxlY3Rpb25Ub3AgPSBoZWln
aHRPZkJsb2NrOworICAgIGludCBzZWxlY3Rpb25Cb3R0b20gPSBoZWlnaHRPZkJsb2NrOworICAg
IHBsYWNlQm94ZXNWZXJ0aWNhbGx5KGhlaWdodE9mQmxvY2ssIG1heEhlaWdodCwgbWF4QXNjZW50
LCBzdHJpY3RNb2RlLCB0b3BQb3NpdGlvbiwgYm90dG9tUG9zaXRpb24sIHNlbGVjdGlvblRvcCwg
c2VsZWN0aW9uQm90dG9tKTsKIAogICAgIHNldFZlcnRpY2FsT3ZlcmZsb3dQb3NpdGlvbnModG9w
UG9zaXRpb24sIGJvdHRvbVBvc2l0aW9uKTsKKyAgICBzZXRWZXJ0aWNhbFNlbGVjdGlvblBvc2l0
aW9ucyhzZWxlY3Rpb25Ub3AsIHNlbGVjdGlvbkJvdHRvbSk7CiAKICAgICAvLyBTaHJpbmsgYm94
ZXMgd2l0aCBubyB0ZXh0IGNoaWxkcmVuIGluIHF1aXJrcyBhbmQgYWxtb3N0IHN0cmljdCBtb2Rl
LgogICAgIGlmICghc3RyaWN0TW9kZSkKQEAgLTYzMyw3ICs2NDMsNyBAQCB2b2lkIElubGluZUZs
b3dCb3g6OmNvbXB1dGVMb2dpY2FsQm94SGVpCiB9CiAKIHZvaWQgSW5saW5lRmxvd0JveDo6cGxh
Y2VCb3hlc1ZlcnRpY2FsbHkoaW50IHksIGludCBtYXhIZWlnaHQsIGludCBtYXhBc2NlbnQsIGJv
b2wgc3RyaWN0TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50JiB0b3BQb3NpdGlvbiwgaW50JiBib3R0b21Qb3NpdGlvbikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50JiB0b3BQb3NpdGlvbiwgaW50JiBib3R0b21Qb3Np
dGlvbiwgaW50JiBzZWxlY3Rpb25Ub3AsIGludCYgc2VsZWN0aW9uQm90dG9tKQogewogICAgIGlm
IChpc1Jvb3RJbmxpbmVCb3goKSkKICAgICAgICAgc2V0WVBvcyh5ICsgbWF4QXNjZW50IC0gYmFz
ZWxpbmUoKSk7Ly8gUGxhY2Ugb3VyIHJvb3QgYm94LgpAQCAtNjQ1LDggKzY1NSw3IEBAIHZvaWQg
SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc1ZlcnRpY2FsbHkKICAgICAgICAgLy8gQWRqdXN0IGJv
eGVzIHRvIHVzZSB0aGVpciByZWFsIGJveCB5L2hlaWdodCBhbmQgbm90IHRoZSBsb2dpY2FsIGhl
aWdodCAoYXMgZGljdGF0ZWQgYnkKICAgICAgICAgLy8gbGluZS1oZWlnaHQpLgogICAgICAgICBp
ZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxJbmxp
bmVGbG93Qm94Kj4oY3VyciktPnBsYWNlQm94ZXNWZXJ0aWNhbGx5KHksIG1heEhlaWdodCwgbWF4
QXNjZW50LCBzdHJpY3RNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BQb3NpdGlvbiwgYm90dG9tUG9zaXRp
b24pOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SW5saW5lRmxvd0JveCo+KGN1cnIpLT5wbGFj
ZUJveGVzVmVydGljYWxseSh5LCBtYXhIZWlnaHQsIG1heEFzY2VudCwgc3RyaWN0TW9kZSwgdG9w
UG9zaXRpb24sIGJvdHRvbVBvc2l0aW9uLCBzZWxlY3Rpb25Ub3AsIHNlbGVjdGlvbkJvdHRvbSk7
CiAKICAgICAgICAgYm9vbCBjaGlsZEFmZmVjdHNUb3BCb3R0b21Qb3MgPSB0cnVlOwogICAgICAg
ICBpZiAoY3Vyci0+eVBvcygpID09IFBvc2l0aW9uVG9wKQpAQCAtNjYyLDExICs2NzEsMTcgQEAg
dm9pZCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzVmVydGljYWxseQogICAgICAgICBpbnQgbmV3
WSA9IGN1cnItPnlQb3MoKTsKICAgICAgICAgaW50IG5ld0hlaWdodCA9IGN1cnItPmhlaWdodCgp
OwogICAgICAgICBpbnQgbmV3QmFzZWxpbmUgPSBjdXJyLT5iYXNlbGluZSgpOworICAgICAgICBp
bnQgb3ZlcmZsb3dUb3AgPSAwOworICAgICAgICBpbnQgb3ZlcmZsb3dCb3R0b20gPSAwOwogICAg
ICAgICBpZiAoY3Vyci0+aXNUZXh0KCkgfHwgY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpIHsKICAg
ICAgICAgICAgIGNvbnN0IEZvbnQmIGZvbnQgPSBjdXJyLT5vYmplY3QoKS0+Zm9udChtX2ZpcnN0
TGluZSk7CiAgICAgICAgICAgICBuZXdCYXNlbGluZSA9IGZvbnQuYXNjZW50KCk7CiAgICAgICAg
ICAgICBuZXdZICs9IGN1cnItPmJhc2VsaW5lKCkgLSBuZXdCYXNlbGluZTsKICAgICAgICAgICAg
IG5ld0hlaWdodCA9IG5ld0Jhc2VsaW5lICsgZm9udC5kZXNjZW50KCk7CisgICAgICAgICAgICBm
b3IgKFNoYWRvd0RhdGEqIHNoYWRvdyA9IGN1cnItPm9iamVjdCgpLT5zdHlsZSgpLT50ZXh0U2hh
ZG93KCk7IHNoYWRvdzsgc2hhZG93ID0gc2hhZG93LT5uZXh0KSB7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3dUb3AgPSBrTWluKG92ZXJmbG93VG9wLCBzaGFkb3ctPnkgLSBzaGFkb3ctPmJsdXIp
OworICAgICAgICAgICAgICAgIG92ZXJmbG93Qm90dG9tID0ga01heChvdmVyZmxvd0JvdHRvbSwg
c2hhZG93LT55ICsgc2hhZG93LT5ibHVyKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChjdXJyLT5pc0lubGluZUZsb3dCb3goKSkgewogICAgICAgICAgICAgICAgIG5ld0hlaWdodCAr
PSBjdXJyLT5vYmplY3QoKS0+Ym9yZGVyVG9wKCkgKyBjdXJyLT5vYmplY3QoKS0+cGFkZGluZ1Rv
cCgpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyLT5vYmplY3QoKS0+Ym9yZGVy
Qm90dG9tKCkgKyBjdXJyLT5vYmplY3QoKS0+cGFkZGluZ0JvdHRvbSgpOwpAQCAtNjc3LDYgKzY5
Miw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc1ZlcnRpY2FsbHkKICAgICAgICAg
ZWxzZSBpZiAoIWN1cnItPm9iamVjdCgpLT5pc0JSKCkpIHsKICAgICAgICAgICAgIG5ld1kgKz0g
Y3Vyci0+b2JqZWN0KCktPm1hcmdpblRvcCgpOwogICAgICAgICAgICAgbmV3SGVpZ2h0ID0gY3Vy
ci0+aGVpZ2h0KCkgLSAoY3Vyci0+b2JqZWN0KCktPm1hcmdpblRvcCgpICsgY3Vyci0+b2JqZWN0
KCktPm1hcmdpbkJvdHRvbSgpKTsKKyAgICAgICAgICAgIG92ZXJmbG93VG9wID0gY3Vyci0+b2Jq
ZWN0KCktPm92ZXJmbG93VG9wKCk7CisgICAgICAgICAgICBvdmVyZmxvd0JvdHRvbSA9IGN1cnIt
Pm9iamVjdCgpLT5vdmVyZmxvd0hlaWdodCgpIC0gbmV3SGVpZ2h0OwogICAgICAgICB9CiAKICAg
ICAgICAgY3Vyci0+c2V0WVBvcyhuZXdZKTsKQEAgLTY4NCwxMSArNzAxLDExIEBAIHZvaWQgSW5s
aW5lRmxvd0JveDo6cGxhY2VCb3hlc1ZlcnRpY2FsbHkKICAgICAgICAgY3Vyci0+c2V0QmFzZWxp
bmUobmV3QmFzZWxpbmUpOwogCiAgICAgICAgIGlmIChjaGlsZEFmZmVjdHNUb3BCb3R0b21Qb3Mp
IHsKLSAgICAgICAgICAgIGlmIChuZXdZIDwgdG9wUG9zaXRpb24pCi0gICAgICAgICAgICAgICAg
dG9wUG9zaXRpb24gPSBuZXdZOwotICAgICAgICAgICAgaWYgKG5ld1kgKyBuZXdIZWlnaHQgPiBi
b3R0b21Qb3NpdGlvbikKLSAgICAgICAgICAgICAgICBib3R0b21Qb3NpdGlvbiA9IG5ld1kgKyBu
ZXdIZWlnaHQ7CisgICAgICAgICAgICBzZWxlY3Rpb25Ub3AgPSBrTWluKHNlbGVjdGlvblRvcCwg
bmV3WSk7CisgICAgICAgICAgICBzZWxlY3Rpb25Cb3R0b20gPSBrTWF4KHNlbGVjdGlvbkJvdHRv
bSwgbmV3WSArIG5ld0hlaWdodCk7CiAgICAgICAgIH0KKyAgICAgICAgdG9wUG9zaXRpb24gPSBr
TWluKHRvcFBvc2l0aW9uLCBuZXdZICsgb3ZlcmZsb3dUb3ApOworICAgICAgICBib3R0b21Qb3Np
dGlvbiA9IGtNYXgoYm90dG9tUG9zaXRpb24sIG5ld1kgKyBuZXdIZWlnaHQgKyBvdmVyZmxvd0Jv
dHRvbSk7CiAgICAgfQogCiAgICAgaWYgKGlzUm9vdElubGluZUJveCgpKSB7CkBAIC02OTcsMTAg
KzcxNCw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc1ZlcnRpY2FsbHkKICAgICAg
ICAgc2V0WVBvcyh5UG9zKCkgKyBiYXNlbGluZSgpIC0gZm9udC5hc2NlbnQoKSk7CiAgICAgICAg
IHNldEJhc2VsaW5lKGZvbnQuYXNjZW50KCkpOwogICAgICAgICBpZiAoaGFzVGV4dENoaWxkcmVu
KCkgfHwgc3RyaWN0TW9kZSkgewotICAgICAgICAgICAgaWYgKHlQb3MoKSA8IHRvcFBvc2l0aW9u
KQotICAgICAgICAgICAgICAgIHRvcFBvc2l0aW9uID0geVBvcygpOwotICAgICAgICAgICAgaWYg
KHlQb3MoKSArIGhlaWdodCgpID4gYm90dG9tUG9zaXRpb24pCi0gICAgICAgICAgICAgICAgYm90
dG9tUG9zaXRpb24gPSB5UG9zKCkgKyBoZWlnaHQoKTsKKyAgICAgICAgICAgIHNlbGVjdGlvblRv
cCA9IGtNaW4oc2VsZWN0aW9uVG9wLCB5UG9zKCkpOworICAgICAgICAgICAgc2VsZWN0aW9uQm90
dG9tID0ga01heChzZWxlY3Rpb25Cb3R0b20sIHlQb3MoKSArIGhlaWdodCgpKTsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTEyOTEsMTkgKzEzMDYsMTkgQEAgSW5saW5lQm94KiBSb290SW5saW5l
Qm94OjpsYXN0U2VsZWN0ZWRCbwogaW50IFJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblRvcCgpCiB7
CiAgICAgaWYgKCFwcmV2Um9vdEJveCgpKQotICAgICAgICByZXR1cm4gdG9wT3ZlcmZsb3coKTsK
KyAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uVG9wOwogICAgIAotICAgIGludCBwcmV2Qm90dG9t
ID0gcHJldlJvb3RCb3goKS0+Ym90dG9tT3ZlcmZsb3coKTsKLSAgICBpZiAocHJldkJvdHRvbSA8
IG1fdG9wT3ZlcmZsb3cgJiYgYmxvY2soKS0+Y29udGFpbnNGbG9hdHMoKSkgeworICAgIGludCBw
cmV2Qm90dG9tID0gcHJldlJvb3RCb3goKS0+c2VsZWN0aW9uQm90dG9tKCk7CisgICAgaWYgKHBy
ZXZCb3R0b20gPCBtX3NlbGVjdGlvblRvcCAmJiBibG9jaygpLT5jb250YWluc0Zsb2F0cygpKSB7
CiAgICAgICAgIC8vIFRoaXMgbGluZSBoYXMgYWN0dWFsbHkgYmVlbiBtb3ZlZCBmdXJ0aGVyIGRv
d24sIHByb2JhYmx5IGZyb20gYSBsYXJnZSBsaW5lLWhlaWdodCwgYnV0IHBvc3NpYmx5IGJlY2F1
c2UgdGhlCiAgICAgICAgIC8vIGxpbmUgd2FzIGZvcmNlZCB0byBjbGVhciBmbG9hdHMuICBJZiBz
bywgbGV0J3MgY2hlY2sgdGhlIG9mZnNldHMsIGFuZCBvbmx5IGJlIHdpbGxpbmcgdG8gdXNlIHRo
ZSBwcmV2aW91cwogICAgICAgICAvLyBsaW5lJ3MgYm90dG9tIG92ZXJmbG93IGlmIHRoZSBvZmZz
ZXRzIGFyZSBncmVhdGVyIG9uIGJvdGggc2lkZXMuCiAgICAgICAgIGludCBwcmV2TGVmdCA9IGJs
b2NrKCktPmxlZnRPZmZzZXQocHJldkJvdHRvbSk7CiAgICAgICAgIGludCBwcmV2UmlnaHQgPSBi
bG9jaygpLT5yaWdodE9mZnNldChwcmV2Qm90dG9tKTsKLSAgICAgICAgaW50IG5ld0xlZnQgPSBi
bG9jaygpLT5sZWZ0T2Zmc2V0KG1fdG9wT3ZlcmZsb3cpOwotICAgICAgICBpbnQgbmV3UmlnaHQg
PSBibG9jaygpLT5yaWdodE9mZnNldChtX3RvcE92ZXJmbG93KTsKKyAgICAgICAgaW50IG5ld0xl
ZnQgPSBibG9jaygpLT5sZWZ0T2Zmc2V0KG1fc2VsZWN0aW9uVG9wKTsKKyAgICAgICAgaW50IG5l
d1JpZ2h0ID0gYmxvY2soKS0+cmlnaHRPZmZzZXQobV9zZWxlY3Rpb25Ub3ApOwogICAgICAgICBp
ZiAocHJldkxlZnQgPiBuZXdMZWZ0IHx8IHByZXZSaWdodCA8IG5ld1JpZ2h0KQotICAgICAgICAg
ICAgcmV0dXJuIG1fdG9wT3ZlcmZsb3c7CisgICAgICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb25U
b3A7CiAgICAgfQogICAgIAogICAgIHJldHVybiBwcmV2Qm90dG9tOwpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxvdy5jcHAJKHJldmlzaW9uIDEzNDc2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MywxMSArMzYzLDEwIEBAIHZvaWQgUmVu
ZGVyRmxvdzo6cGFpbnRMaW5lcyhQYWludEluZm8mIGkKIAogICAgIC8vIFdlIGNhbiBjaGVjayB0
aGUgZmlyc3QgYm94IGFuZCBsYXN0IGJveCBhbmQgYXZvaWQgcGFpbnRpbmcgaWYgd2UgZG9uJ3QK
ICAgICAvLyBpbnRlcnNlY3QuICBUaGlzIGlzIGEgcXVpY2sgc2hvcnQtY2lyY3VpdCB0aGF0IHdl
IGNhbiB0YWtlIHRvIGF2b2lkIHdhbGtpbmcgYW55IGxpbmVzLgotICAgIC8vIEZJWE1FOiBUaGlz
IGNoZWNrIGlzIGZsYXdlZCBpbiB0d28gZXh0cmVtZWx5IG9ic2N1cmUgd2F5cy4KLSAgICAvLyAo
MSkgSWYgc29tZSBsaW5lIGluIHRoZSBtaWRkbGUgaGFzIGEgaHVnZSBvdmVyZmxvdywgaXQgbWln
aHQgYWN0dWFsbHkgZXh0ZW5kIGJlbG93IHRoZSBsYXN0IGxpbmUuCi0gICAgLy8gKDIpIFRoZSBv
dmVyZmxvdyBmcm9tIGFuIGlubGluZSBibG9jayBvbiBhIGxpbmUgaXMgbm90IHJlcG9ydGVkIHRv
IHRoZSBsaW5lLgotICAgIGludCB5UG9zID0gZmlyc3RMaW5lQm94KCktPnJvb3QoKS0+c2VsZWN0
aW9uVG9wKCkgLSBtYXhpbWFsT3V0bGluZVNpemUoaS5waGFzZSk7Ci0gICAgaW50IGggPSBtYXhp
bWFsT3V0bGluZVNpemUoaS5waGFzZSkgKyBsYXN0TGluZUJveCgpLT5yb290KCktPnNlbGVjdGlv
blRvcCgpICsgbGFzdExpbmVCb3goKS0+cm9vdCgpLT5zZWxlY3Rpb25IZWlnaHQoKSAtIHlQb3M7
CisgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgZmxhd2VkIGluIHRoZSBmb2xsb3dpbmcgZXh0
cmVtZWx5IG9ic2N1cmUgd2F5OgorICAgIC8vIGlmIHNvbWUgbGluZSBpbiB0aGUgbWlkZGxlIGhh
cyBhIGh1Z2Ugb3ZlcmZsb3csIGl0IG1pZ2h0IGFjdHVhbGx5IGV4dGVuZCBiZWxvdyB0aGUgbGFz
dCBsaW5lLgorICAgIGludCB5UG9zID0gZmlyc3RMaW5lQm94KCktPnJvb3QoKS0+dG9wT3ZlcmZs
b3coKSAtIG1heGltYWxPdXRsaW5lU2l6ZShpLnBoYXNlKTsKKyAgICBpbnQgaCA9IG1heGltYWxP
dXRsaW5lU2l6ZShpLnBoYXNlKSArIGxhc3RMaW5lQm94KCktPnJvb3QoKS0+Ym90dG9tT3ZlcmZs
b3coKSAtIHlQb3M7CiAgICAgeVBvcyArPSBfdHk7CiAgICAgaWYgKHlQb3MgPj0gaS5yLmJvdHRv
bSgpIHx8IHlQb3MgKyBoIDw9IGkuci55KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM5NCw5ICsz
OTMsOSBAQCB2b2lkIFJlbmRlckZsb3c6OnBhaW50TGluZXMoUGFpbnRJbmZvJiBpCiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KKyAgICAgICAgCiAgICAgICAg
IGludCB0b3AgPSBrTWluKGN1cnItPnJvb3QoKS0+dG9wT3ZlcmZsb3coKSwgY3Vyci0+cm9vdCgp
LT5zZWxlY3Rpb25Ub3AoKSkgLSBtYXhpbWFsT3V0bGluZVNpemUoaS5waGFzZSk7Ci0gICAgICAg
IGludCBib3R0b20gPSBrTWF4KGN1cnItPnJvb3QoKS0+c2VsZWN0aW9uVG9wKCkgKyBjdXJyLT5y
b290KCktPnNlbGVjdGlvbkhlaWdodCgpLCBjdXJyLT5yb290KCktPmJvdHRvbU92ZXJmbG93KCkp
ICsgbWF4aW1hbE91dGxpbmVTaXplKGkucGhhc2UpOworICAgICAgICBpbnQgYm90dG9tID0gY3Vy
ci0+cm9vdCgpLT5ib3R0b21PdmVyZmxvdygpICsgbWF4aW1hbE91dGxpbmVTaXplKGkucGhhc2Up
OwogICAgICAgICBoID0gYm90dG9tIC0gdG9wOwogICAgICAgICB5UG9zID0gX3R5ICsgdG9wOwog
ICAgICAgICBpZiAoeVBvcyA8IGkuci5ib3R0b20oKSAmJiB5UG9zICsgaCA+IGkuci55KCkpCkBA
IC00MzEsOSArNDMwLDggQEAgYm9vbCBSZW5kZXJGbG93OjpoaXRUZXN0TGluZXMoTm9kZUluZm8m
IAogCiAgICAgLy8gV2UgY2FuIGNoZWNrIHRoZSBmaXJzdCBib3ggYW5kIGxhc3QgYm94IGFuZCBh
dm9pZCBoaXQgdGVzdGluZyBpZiB3ZSBkb24ndAogICAgIC8vIGNvbnRhaW4gdGhlIHBvaW50LiAg
VGhpcyBpcyBhIHF1aWNrIHNob3J0LWNpcmN1aXQgdGhhdCB3ZSBjYW4gdGFrZSB0byBhdm9pZCB3
YWxraW5nIGFueSBsaW5lcy4KLSAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBmbGF3ZWQgaW4g
dHdvIGV4dHJlbWVseSBvYnNjdXJlIHdheXMuCi0gICAgLy8gKDEpIElmIHNvbWUgbGluZSBpbiB0
aGUgbWlkZGxlIGhhcyBhIGh1Z2Ugb3ZlcmZsb3csIGl0IG1pZ2h0IGFjdHVhbGx5IGV4dGVuZCBi
ZWxvdyB0aGUgbGFzdCBsaW5lLgotICAgIC8vICgyKSBUaGUgb3ZlcmZsb3cgZnJvbSBhbiBpbmxp
bmUgYmxvY2sgb24gYSBsaW5lIGlzIG5vdCByZXBvcnRlZCB0byB0aGUgbGluZS4KKyAgICAvLyBG
SVhNRTogVGhpcyBjaGVjayBpcyBmbGF3ZWQgaW4gdGhlIGZvbGxvd2luZyBleHRyZW1lbHkgb2Jz
Y3VyZSB3YXk6CisgICAgLy8gaWYgc29tZSBsaW5lIGluIHRoZSBtaWRkbGUgaGFzIGEgaHVnZSBv
dmVyZmxvdywgaXQgbWlnaHQgYWN0dWFsbHkgZXh0ZW5kIGJlbG93IHRoZSBsYXN0IGxpbmUuCiAg
ICAgaWYgKCh5ID49IHR5ICsgbGFzdExpbmVCb3goKS0+cm9vdCgpLT5ib3R0b21PdmVyZmxvdygp
KSB8fCAoeSA8IHR5ICsgZmlyc3RMaW5lQm94KCktPnJvb3QoKS0+dG9wT3ZlcmZsb3coKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2xp
bmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfbGluZS5oCShyZXZp
c2lvbiAxMzQ3NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9saW5lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMCw2ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGFzdENoaWxkID0g
MDsKICAgICAgICAgbV9pbmNsdWRlTGVmdEVkZ2UgPSBtX2luY2x1ZGVSaWdodEVkZ2UgPSBmYWxz
ZTsKICAgICAgICAgbV9oYXNUZXh0Q2hpbGRyZW4gPSBmYWxzZTsKKyAgICAgICAgbV9tYXhIb3Jp
em9udGFsU2hhZG93ID0gMDsKICAgICB9CiAKICAgICBSZW5kZXJGbG93KiBmbG93T2JqZWN0KCk7
CkBAIC0yNzgsMTAgKzI3OSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGp1c3RNYXhBc2NlbnRB
bmREZXNjZW50KGludCYgbWF4QXNjZW50LCBpbnQmIG1heERlc2NlbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhQb3NpdGlvblRvcCwgaW50IG1heFBvc2l0aW9u
Qm90dG9tKTsKICAgICB2b2lkIHBsYWNlQm94ZXNWZXJ0aWNhbGx5KGludCB5LCBpbnQgbWF4SGVp
Z2h0LCBpbnQgbWF4QXNjZW50LCBib29sIHN0cmljdE1vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQmIHRvcFBvc2l0aW9uLCBpbnQmIGJvdHRvbVBvc2l0aW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgdG9wUG9zaXRpb24sIGludCYgYm90dG9tUG9z
aXRpb24sIGludCYgc2VsZWN0aW9uVG9wLCBpbnQmIHNlbGVjdGlvbkJvdHRvbSk7CiAgICAgdm9p
ZCBzaHJpbmtCb3hlc1dpdGhOb1RleHRDaGlsZHJlbihpbnQgdG9wUG9zaXRpb24sIGludCBib3R0
b21Qb3NpdGlvbik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnRpY2FsT3ZlcmZsb3dQ
b3NpdGlvbnMoaW50IHRvcCwgaW50IGJvdHRvbSkge30KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmVy
dGljYWxTZWxlY3Rpb25Qb3NpdGlvbnMoaW50IHRvcCwgaW50IGJvdHRvbSkge30KKyAgICBpbnQg
bWF4SG9yaXpvbnRhbFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4SG9yaXpvbnRhbFNoYWRv
dzsgfQogCiAgICAgdm9pZCByZW1vdmVDaGlsZChJbmxpbmVCb3gqIGNoaWxkKTsKICAgICAKQEAg
LTI5Myw2ICsyOTYsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW5saW5lQm94KiBtX2Zp
cnN0Q2hpbGQ7CiAgICAgSW5saW5lQm94KiBtX2xhc3RDaGlsZDsKKyAgICBpbnQgbV9tYXhIb3Jp
em9udGFsU2hhZG93OwogICAgIGJvb2wgbV9pbmNsdWRlTGVmdEVkZ2UgOiAxOwogICAgIGJvb2wg
bV9pbmNsdWRlUmlnaHRFZGdlIDogMTsKICAgICBib29sIG1faGFzVGV4dENoaWxkcmVuIDogMTsK
QEAgLTMyMSw2ICszMjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgbGVmdE92ZXJmbG93
KCkgeyByZXR1cm4gbV9sZWZ0T3ZlcmZsb3c7IH0KICAgICB2aXJ0dWFsIGludCByaWdodE92ZXJm
bG93KCkgeyByZXR1cm4gbV9yaWdodE92ZXJmbG93OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZl
cnRpY2FsT3ZlcmZsb3dQb3NpdGlvbnMoaW50IHRvcCwgaW50IGJvdHRvbSkgeyBtX3RvcE92ZXJm
bG93ID0gdG9wOyBtX2JvdHRvbU92ZXJmbG93ID0gYm90dG9tOyB9CisgICAgdmlydHVhbCB2b2lk
IHNldFZlcnRpY2FsU2VsZWN0aW9uUG9zaXRpb25zKGludCB0b3AsIGludCBib3R0b20pIHsgbV9z
ZWxlY3Rpb25Ub3AgPSB0b3A7IG1fc2VsZWN0aW9uQm90dG9tID0gYm90dG9tOyB9CiAgICAgdm9p
ZCBzZXRIb3Jpem9udGFsT3ZlcmZsb3dQb3NpdGlvbnMoaW50IGxlZnQsIGludCByaWdodCkgeyBt
X2xlZnRPdmVyZmxvdyA9IGxlZnQ7IG1fcmlnaHRPdmVyZmxvdyA9IHJpZ2h0OyB9CiAgICAgdm9p
ZCBzZXRMaW5lQnJlYWtJbmZvKFJlbmRlck9iamVjdCogb2JqLCB1bnNpZ25lZCBicmVha1Bvcywg
QmlkaVN0YXR1cyogc3RhdHVzLCBCaWRpQ29udGV4dCogY29udGV4dCk7CiAgICAgdm9pZCBzZXRM
aW5lQnJlYWtQb3MoaW50IHApIHsgbV9saW5lQnJlYWtQb3MgPSBwOyB9CkBAIC0zNjQsNyArMzY5
LDggQEAgcHVibGljOgogICAgIFJlbmRlckJsb2NrKiBibG9jaygpIGNvbnN0OwogCiAgICAgaW50
IHNlbGVjdGlvblRvcCgpOwotICAgIGludCBzZWxlY3Rpb25IZWlnaHQoKSB7IHJldHVybiBrTWF4
KDAsIG1fYm90dG9tT3ZlcmZsb3cgLSBzZWxlY3Rpb25Ub3AoKSk7IH0KKyAgICBpbnQgc2VsZWN0
aW9uQm90dG9tKCkgeyByZXR1cm4gbV9zZWxlY3Rpb25Cb3R0b207IH0KKyAgICBpbnQgc2VsZWN0
aW9uSGVpZ2h0KCkgeyByZXR1cm4ga01heCgwLCBzZWxlY3Rpb25Cb3R0b20oKSAtIHNlbGVjdGlv
blRvcCgpKTsgfQogIAogICAgIElubGluZUJveCogY2xvc2VzdExlYWZDaGlsZEZvclhQb3MoaW50
IF94LCBpbnQgX3R4KTsKIApAQCAtMzc3LDYgKzM4Myw5IEBAIHByb3RlY3RlZDoKICAgICBpbnQg
bV9sZWZ0T3ZlcmZsb3c7CiAgICAgaW50IG1fcmlnaHRPdmVyZmxvdzsKIAorICAgIGludCBtX3Nl
bGVjdGlvblRvcDsKKyAgICBpbnQgbV9zZWxlY3Rpb25Cb3R0b207CisKICAgICAvLyBXaGVyZSB0
aGlzIGxpbmUgZW5kZWQuICBUaGUgZXhhY3Qgb2JqZWN0IGFuZCB0aGUgcG9zaXRpb24gd2l0aGlu
IHRoYXQgb2JqZWN0IGFyZSBzdG9yZWQgc28gdGhhdAogICAgIC8vIHdlIGNhbiBjcmVhdGUgYSBC
aWRpSXRlcmF0b3IgYmVnaW5uaW5nIGp1c3QgYWZ0ZXIgdGhlIGVuZCBvZiB0aGlzIGxpbmUuCiAg
ICAgUmVuZGVyT2JqZWN0KiBtX2xpbmVCcmVha09iajsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCShyZXZpc2lvbiAxMzQ3NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxOSArNjcsNiBAQCB2b2lkIElubGlu
ZVRleHRCb3g6Om9wZXJhdG9yIGRlbGV0ZSh2b2lkCiAgICAgKnN0YXRpY19jYXN0PHNpemVfdCo+
KHB0cikgPSBzejsKIH0KIAotYm9vbCBJbmxpbmVUZXh0Qm94OjpjaGVja1ZlcnRpY2FsUG9pbnQo
aW50IF95LCBpbnQgX3R5LCBpbnQgX2gpCi17Ci0gICAgaW50IHRvcFkgPSBtX3k7Ci0gICAgaW50
IGJvdHRvbVkgPSBtX3kgKyBtX2hlaWdodDsKLSAgICBpZiAocm9vdCgpLT5oYXNTZWxlY3RlZENo
aWxkcmVuKCkpIHsKLSAgICAgICAgdG9wWSA9IGtNaW4ocm9vdCgpLT5zZWxlY3Rpb25Ub3AoKSwg
dG9wWSk7Ci0gICAgICAgIGJvdHRvbVkgPSBrTWF4KGJvdHRvbVksIHJvb3QoKS0+Ym90dG9tT3Zl
cmZsb3coKSk7Ci0gICAgfQotICAgIGlmICgoX3R5ICsgdG9wWSA+PSBfeSArIF9oKSB8fCAoX3R5
ICsgYm90dG9tWSA8PSBfeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQogYm9vbCBJbmxpbmVUZXh0Qm94Ojppc1NlbGVjdGVkKGludCBzdGFydFBvcywgaW50
IGVuZFBvcykgY29uc3QKIHsKICAgICBpbnQgc1BvcyA9IGtNYXgoc3RhcnRQb3MgLSBtX3N0YXJ0
LCAwKTsKQEAgLTI0OCw4ICsyMzUsOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFJlbmRl
ck9iamVjdDo6CiAgICAgICAgIG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24gfHwgaS5w
aGFzZSA9PSBQYWludEFjdGlvbk91dGxpbmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCB4
UG9zID0gdHggKyBtX3g7Ci0gICAgaW50IHcgPSB3aWR0aCgpOworICAgIGludCB4UG9zID0gdHgg
KyBtX3ggLSBwYXJlbnQoKS0+bWF4SG9yaXpvbnRhbFNoYWRvdygpOworICAgIGludCB3ID0gd2lk
dGgoKSArIDIgKiBwYXJlbnQoKS0+bWF4SG9yaXpvbnRhbFNoYWRvdygpOwogICAgIGlmICh4UG9z
ID49IGkuci5yaWdodCgpIHx8IHhQb3MgKyB3IDw9IGkuci54KCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7334</attachid>
            <date>2006-03-27 08:50:24 -0800</date>
            <delta_ts>2006-03-30 08:42:41 -0800</delta_ts>
            <desc>Patch including tests and change log</desc>
            <filename>7301_r5.patch</filename>
            <type>text/plain</type>
            <size>29582</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzNDkwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDYtIyMtIyMgIE1pdHogUGV0dGVsICA8b3Bl
bmRhcndpbi5vcmdAbWl0enBldHRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgLSBUZXN0cyBmb3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3
aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAxCisgICAgICAgICAgVGV4dCBzaGFkb3cgZG9lcyBu
b3QgcmVwYWludCBjb3JyZWN0bHkKKworICAgICAgICAqIGZhc3QvcmVwYWludDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9yZXBhaW50L2lubGluZS1ibG9jay1vdmVyZmxvdy1leHBlY3RlZC5jaGVj
a3N1bTogQWRkZWQuCisgICAgICAgICogZmFzdC9yZXBhaW50L2lubGluZS1ibG9jay1vdmVyZmxv
dy1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwYWludC9pbmxpbmUtYmxv
Y2stb3ZlcmZsb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlcGFpbnQv
aW5saW5lLWJsb2NrLW92ZXJmbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwYWlu
dC90ZXh0LXNoYWRvdy1leHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogZmFzdC9y
ZXBhaW50L3RleHQtc2hhZG93LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogZmFzdC9y
ZXBhaW50L3RleHQtc2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9y
ZXBhaW50L3RleHQtc2hhZG93LWhvcml6b250YWwtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVwYWludC90ZXh0LXNoYWRvdy1ob3Jpem9udGFsLWV4cGVjdGVkLnBu
ZzogQWRkZWQuCisgICAgICAgICogZmFzdC9yZXBhaW50L3RleHQtc2hhZG93LWhvcml6b250YWwt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvdGV4dC1zaGFkb3ct
aG9yaXpvbnRhbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvdGV4dC1zaGFk
b3cuaHRtbDogQWRkZWQuCisKIDIwMDYtMDMtMjcgIEdyYWhhbSBEZW5uaXMgIDxHcmFoYW0uRGVu
bmlzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBkYXJpbgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9yZXBhaW50L3RleHQtc2hhZG93LWhvcml6b250YWwtZXhwZWN0ZWQucG5nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2
bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMg
b246IHRleHQtc2hhZG93LWhvcml6b250YWwtZXhwZWN0ZWQucG5nCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvcmVwYWludC90ZXh0LXNoYWRvdy1ob3Jpem9udGFsLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3RleHQtc2hhZG93LWhvcml6b250YWwuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC90ZXh0LXNoYWRvdy1o
b3Jpem9udGFsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIudGVzdFJlcGFpbnQoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5yZXBhaW50U3dlZXBIb3Jpem9udGFsbHkoKTsKK30K
Kzwvc2NyaXB0PgorPHN0eWxlPgorICAgIGRpdiB7IG1hcmdpbjogMzBweDsgfQorICAgIGRpdiA+
IHNwYW4geyBiYWNrZ3JvdW5kOiBzaWx2ZXI7IGZvbnQtc2l6ZTogMThweDsgfQorICAgIC50bCB7
IHRleHQtc2hhZG93OiByZWQgLTEwcHggLTEwcHggMDsgfQorICAgIC5iciB7IHRleHQtc2hhZG93
OiByZWQgMTBweCAxMHB4IDA7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPgorICAg
IFRoaXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIDxpPjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxs
YS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMSI+aHR0cDovL2J1Z3ppbGxhLm9w
ZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAxPC9hPgorICAgIFRleHQgc2hhZG93IGRv
ZXMgbm90IHJlcGFpbnQgY29ycmVjdGx5PC9pPi4KKzwvcD4KKzxocj4KKzxkaXY+CisgICAgPHNw
YW4gY2xhc3M9InRsIj5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldDwvc3Bhbj4KKzwvZGl2Pgor
PGRpdj4KKyAgICA8c3BhbiBjbGFzcz0iYnIiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0PC9z
cGFuPgorPC9kaXY+Cis8ZGl2PgorICAgIExvcmVtIGlwc3VtIDxzcGFuIGNsYXNzPSJ0bCI+ZG9s
b3Igc2l0IGFtZXQ8L3NwYW4+Cis8L2Rpdj4KKzxkaXY+CisgICAgPHNwYW4gY2xhc3M9ImJyIj5M
b3JlbSBpcHN1bTwvc3Bhbj4gZG9sb3Igc2l0IGFtZXQKKzwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2lubGluZS1ibG9jay1vdmVyZmxvdy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2lubGlu
ZS1ibG9jay1vdmVyZmxvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3JlcGFpbnQvaW5saW5lLWJsb2NrLW92ZXJmbG93LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyMCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVu
ZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJCbG9jayB7
UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
MCkgc2l6ZSAzMjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMjM6ICJU
aGlzIGlzIGEgcmVwYWludCB0ZXN0IG9mIGlubGluZSBibG9ja3Mgd2l0aCBvdmVyZmxvdy4iCisg
ICAgICBSZW5kZXJCbG9jayB7SFJ9IGF0ICgwLDM0KSBzaXplIDc4NHgyIFtib3JkZXI6ICgxcHgg
aW5zZXQgIzAwMDAwMCldCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw0NCkg
c2l6ZSA3ODR4MjAKKyAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDE5
OHgxOAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgOTh4MTgKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDk4OiAiSGVyZSBjb21lcyBhbiAiCisg
ICAgICAgICAgUmVuZGVyQmxvY2sge1NQQU59IGF0ICg5OCwwKSBzaXplIDEwMHgyMCBbYmdjb2xv
cj0jQzBDMEMwXQorICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA5
M3gzNgorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NDogImlubGluZSBi
bG9jayIKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDkzOiAid2l0aCBv
dmVyZmxvdy4iCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Jl
cGFpbnQvdGV4dC1zaGFkb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcmVwYWludC90ZXh0LXNoYWRvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvdGV4dC1zaGFkb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQxIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NjIKKyAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDE3MngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE3MjogIlRo
aXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yICIKKyAgICAgICAgUmVuZGVySW5saW5lIHtJfSBh
dCAoMCwwKSBzaXplIDU5OHgxOAorICAgICAgICAgIFJlbmRlcklubGluZSB7QX0gYXQgKDAsMCkg
c2l6ZSAzNDh4MTggW2NvbG9yPSMwMDAwRUVdCisgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhU
fSBhdCAoMTcyLDApIHNpemUgMzQ4eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxNzIs
MCkgd2lkdGggMzQ4OiAiaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNn
aT9pZD03MzAxIgorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICg1MjAsMCkgc2l6ZSAy
NTB4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg1MjAsMCkgd2lkdGggNDogIiAiCisgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoNTI0LDApIHdpZHRoIDI0NjogIlRleHQgc2hhZG93IGRvZXMg
bm90IHJlcGFpbnQgY29ycmVjdGx5IgorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoNzcw
LDApIHNpemUgNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICg3NzAsMCkgd2lkdGggNDogIi4i
CisgICAgICBSZW5kZXJCbG9jayB7SFJ9IGF0ICgwLDM0KSBzaXplIDc4NHgyIFtib3JkZXI6ICgx
cHggaW5zZXQgIzAwMDAwMCldCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMzAsNjYpIHNp
emUgNzI0eDIyCisgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyMDJ4
MjIgW2JnY29sb3I9I0MwQzBDMF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDIwMngyMgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjAyOiAi
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQiCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMzAsMTE4KSBzaXpl
IDcyNHgyMgorICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMjAyeDIy
IFtiZ2NvbG9yPSNDMEMwQzBdCisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkg
c2l6ZSAyMDJ4MjIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIwMjogIkxv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0IgorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMwLDE3MCkgc2l6ZSA3
MjR4MjIKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMykgc2l6ZSA4OHgxOAorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDMpIHdpZHRoIDg4OiAiTG9yZW0gaXBzdW0gIgorICAgICAg
ICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMTAweDIyIFtiZ2NvbG9yPSNDMEMw
QzBdCisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDg4LDApIHNpemUgMTAweDIyCisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoODgsMCkgd2lkdGggMTAwOiAiZG9sb3Igc2l0IGFtZXQi
CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMzAsMjIyKSBzaXplIDcyNHgyMgorICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgOTd4MjIgW2JnY29sb3I9I0MwQzBDMF0KKyAgICAgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDk3eDIyCisgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA5NzogIkxvcmVtIGlwc3VtIgorICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoOTcsMykgc2l6ZSA4OXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICg5Nywz
KSB3aWR0aCA4OTogIiBkb2xvciBzaXQgYW1ldCIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVw
YWludC9pbmxpbmUtYmxvY2stb3ZlcmZsb3ctZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2lubGluZS1ibG9jay1vdmVyZmxvdy1leHBlY3Rl
ZC5jaGVja3N1bQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9pbmxp
bmUtYmxvY2stb3ZlcmZsb3ctZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEgQEAKK2MyNmM0NDIyZGI5ZmUwOGI1MWEyYjc0YWY2ZDQyYjc4ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3RleHQtc2hhZG93LWV4
cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC90
ZXh0LXNoYWRvdy1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvcmVwYWludC90ZXh0LXNoYWRvdy1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSBAQAorNmJjNDM1YmY3OGZlZmZhNWJmNzY0NjcwMWE0MGFjMjQKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvaW5saW5l
LWJsb2NrLW92ZXJmbG93LWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBm
aWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBpbmxpbmUtYmxvY2stb3ZlcmZsb3ct
ZXhwZWN0ZWQucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbQoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwYWludC90ZXh0LXNo
YWRvdy1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQg
YXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVh
bQoKUHJvcGVydHkgY2hhbmdlcyBvbjogdGV4dC1zaGFkb3ctZXhwZWN0ZWQucG5nCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9pbmxpbmUtYmxvY2stb3ZlcmZsb3cuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvaW5saW5lLWJsb2NrLW92ZXJm
bG93Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvaW5saW5l
LWJsb2NrLW92ZXJmbG93Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIudGVzdFJlcGFp
bnQoKTsKK30KKzwvc2NyaXB0PgorPHN0eWxlPgorICAgIGRpdiA+IHNwYW4geyBiYWNrZ3JvdW5k
OiBzaWx2ZXI7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPgorICAgIFRoaXMgaXMg
YSByZXBhaW50IHRlc3Qgb2YgaW5saW5lIGJsb2NrcyB3aXRoIG92ZXJmbG93LgorPC9wPgorPGhy
PgorICAgIDxzcGFuPkhlcmUgY29tZXMgYW4gPHNwYW4gc3R5bGU9ImJhY2tncm91bmQ6IHNpbHZl
cjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMTAwcHg7IHZlcnRpY2FsLWFsaWduOiB0
b3A7IGhlaWdodDogMjBweDsiPmlubGluZSBibG9jayB3aXRoIG92ZXJmbG93Ljwvc3Bhbj48L3Nw
YW4+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvdGV4
dC1zaGFkb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvdGV4
dC1zaGFkb3cuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC90
ZXh0LXNoYWRvdy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoraWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnRlc3RSZXBhaW50KCk7
Cit9Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBkaXYgeyBtYXJnaW46IDMwcHg7IH0KKyAgICBk
aXYgPiBzcGFuIHsgYmFja2dyb3VuZDogc2lsdmVyOyBmb250LXNpemU6IDE4cHg7IH0KKyAgICAu
dGwgeyB0ZXh0LXNoYWRvdzogcmVkIC0xMHB4IC0xMHB4IDA7IH0KKyAgICAuYnIgeyB0ZXh0LXNo
YWRvdzogcmVkIDEwcHggMTBweCAwOyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4K
KyAgICBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciA8aT48YSBocmVmPSJodHRwOi8vYnVn
emlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTczMDEiPmh0dHA6Ly9idWd6aWxs
YS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTwvYT4KKyAgICBUZXh0IHNoYWRv
dyBkb2VzIG5vdCByZXBhaW50IGNvcnJlY3RseTwvaT4uCis8L3A+Cis8aHI+Cis8ZGl2PgorICAg
IDxzcGFuIGNsYXNzPSJ0bCI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ8L3NwYW4+Cis8L2Rp
dj4KKzxkaXY+CisgICAgPHNwYW4gY2xhc3M9ImJyIj5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1l
dDwvc3Bhbj4KKzwvZGl2PgorPGRpdj4KKyAgICBMb3JlbSBpcHN1bSA8c3BhbiBjbGFzcz0idGwi
PmRvbG9yIHNpdCBhbWV0PC9zcGFuPgorPC9kaXY+Cis8ZGl2PgorICAgIDxzcGFuIGNsYXNzPSJi
ciI+TG9yZW0gaXBzdW08L3NwYW4+IGRvbG9yIHNpdCBhbWV0Cis8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwYWludC90ZXh0LXNoYWRvdy1ob3Jpem9u
dGFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQv
dGV4dC1zaGFkb3ctaG9yaXpvbnRhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3JlcGFpbnQvdGV4dC1zaGFkb3ctaG9yaXpvbnRhbC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAor
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU2MgorICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMTcyeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTcyOiAiVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgIgorICAgICAgICBSZW5kZXJJbmxp
bmUge0l9IGF0ICgwLDApIHNpemUgNTk4eDE4CisgICAgICAgICAgUmVuZGVySW5saW5lIHtBfSBh
dCAoMCwwKSBzaXplIDM0OHgxOCBbY29sb3I9IzAwMDBFRV0KKyAgICAgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgxNzIsMCkgc2l6ZSAzNDh4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDE3MiwwKSB3aWR0aCAzNDg6ICJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hv
d19idWcuY2dpP2lkPTczMDEiCisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDUyMCww
KSBzaXplIDI1MHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDUyMCwwKSB3aWR0aCA0OiAi
ICIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg1MjQsMCkgd2lkdGggMjQ2OiAiVGV4dCBzaGFk
b3cgZG9lcyBub3QgcmVwYWludCBjb3JyZWN0bHkiCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICg3NzAsMCkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDc3MCwwKSB3aWR0
aCA0OiAiLiIKKyAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsMzQpIHNpemUgNzg0eDIgW2Jv
cmRlcjogKDFweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgz
MCw2Nikgc2l6ZSA3MjR4MjIKKyAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBz
aXplIDIwMngyMiBbYmdjb2xvcj0jQzBDMEMwXQorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMjAyeDIyCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAyMDI6ICJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCIKKyAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzMCwx
MTgpIHNpemUgNzI0eDIyCisgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6
ZSAyMDJ4MjIgW2JnY29sb3I9I0MwQzBDMF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDIwMngyMgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MjAyOiAiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQiCisgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMzAsMTcw
KSBzaXplIDcyNHgyMgorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwzKSBzaXplIDg4
eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMykgd2lkdGggODg6ICJMb3JlbSBpcHN1bSAi
CisgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxMDB4MjIgW2JnY29s
b3I9I0MwQzBDMF0KKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoODgsMCkgc2l6ZSAx
MDB4MjIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg4OCwwKSB3aWR0aCAxMDA6ICJkb2xvciBz
aXQgYW1ldCIKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzMCwyMjIpIHNpemUgNzI0eDIyCisgICAgICAgIFJl
bmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSA5N3gyMiBbYmdjb2xvcj0jQzBDMEMwXQor
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgOTd4MjIKKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDk3OiAiTG9yZW0gaXBzdW0iCisgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICg5NywzKSBzaXplIDg5eDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDk3LDMpIHdpZHRoIDg5OiAiIGRvbG9yIHNpdCBhbWV0IgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9yZXBhaW50L3RleHQtc2hhZG93LWhvcml6b250YWwtZXhwZWN0ZWQuY2hlY2tzdW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3RleHQtc2hhZG93LWhvcml6b250
YWwtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Jl
cGFpbnQvdGV4dC1zaGFkb3ctaG9yaXpvbnRhbC1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSBAQAorMTY5NzE5MGVjYWNkZjk1MDRhNzY5MGI2MGRkZmU2ZDQKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM0OTApCisrKyBXZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDA2LSMjLSMjICBNaXR6IFBl
dHRlbCAgPG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgorCisgICAgICAgIFRlc3RzOiBm
YXN0L3JlcGFpbnQvdGV4dC1zaGFkb3cuaHRtbCBmYXN0L3JlcGFpbnQvdGV4dC1zaGFkb3ctaG9y
aXpvbnRhbC5odG1sCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgLSBmaXggaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MzAxCisgICAgICAgICAgVGV4dCBzaGFkb3cgZG9lcyBub3QgcmVwYWludCBjb3JyZWN0bHkK
KworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZVRleHRCb3g6OnBhaW50KTogUGFpbnQgdGhlIHRleHQgYm94IGlmIGl0IGlzIHdp
dGhpbiB0aGUgbWF4aW11bQorICAgICAgICBwb3NzaWJsZSBob3Jpem9udGFsIHNoYWRvdyBvdmVy
ZmxvdyBvZiB0aGUgZGFtYWdlIHJlY3QuCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaDogUmVtb3ZlZCB1bnVzZWQgZnVuY3Rpb24gY2hlY2tWZXJ0aWNhbFBvaW50KCkuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Rmxvdzo6cGFpbnRMaW5lcyk6IFVzZSB0aGUgdmVydGljYWwgb3ZlcmZsb3dzIGluc3RlYWQgb2Yg
dGhlCisgICAgICAgIHNlbGVjdGlvbiB2ZXJ0aWNhbCBib3VuZHMuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbG93OjpoaXRUZXN0TGluZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJf
bGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSG9y
aXpvbnRhbGx5KTogSW5jbHVkZSBvdmVyZmxvdyBkdWUgdG8gdGV4dCBzaGFkb3cKKyAgICAgICAg
aW4gbGVmdFBvc2l0aW9uIGFuZCByaWdodFBvc2l0aW9uIGFuZCBrZWVwIHRyYWNrIG9mIHRoZSBt
YXhpbXVtIGhvcml6b250YWwgc2hhZG93CisgICAgICAgIG9uIHRoZSBpbmxpbmUuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojp2ZXJ0aWNhbGx5QWxpZ25Cb3hlcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzVmVydGljYWxseSk6IEluY2x1ZGUg
b3ZlcmZsb3cgZHVlIHRvIHNoYWRvdyBhbmQKKyAgICAgICAgaW5saW5lLWJsb2Nrcycgb3ZlcmZs
b3cgaW4gdG9wUG9zaXRpb24gYW5kIGJvdHRvbVBvc2l0aW9uIGJ1dCBub3QgaW4gdGhlIHNlbGVj
dGlvbgorICAgICAgICB2ZXJ0aWNhbCBib3VuZHMuCisgICAgICAgIChXZWJDb3JlOjpSb290SW5s
aW5lQm94OjpzZWxlY3Rpb25Ub3ApOgorICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJfbGluZS5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6OklubGluZVJ1bkJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpzZXRWZXJ0aWNhbFNlbGVjdGlvblBvc2l0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjptYXhIb3Jpem9udGFsU2hhZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnNldFZlcnRpY2FsU2VsZWN0aW9u
UG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvbkJv
dHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpzZWxlY3Rpb25IZWlnaHQp
OgorCiAyMDA2LTAzLTI3ICBEYXZpZCBIYXJyaXNvbiAgPGhhcnJpc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgJKHJldmlzaW9uIDEzNDg5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTMgKzExOSw2IEBAIHB1YmxpYzoKICAgICBp
bnQgb2Zmc2V0Rm9yUG9zaXRpb24oaW50IF94LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzID0g
dHJ1ZSkgY29uc3Q7CiAgICAgaW50IHBvc2l0aW9uRm9yT2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0
OwogICAgIAotICAgIC8qKgotICAgICAqIGlmIHRoaXMgdGV4dCBydW4gd2FzIHJlbmRlcmVkIEBy
ZWYgX3R5IHBpeGVscyBiZWxvdyB0aGUgdXBwZXIgZWRnZQotICAgICAqIG9mIGEgdmlldywgd291
bGQgdGhlIEByZWYgX3kgLWNvb3JkaW5hdGUgYmUgaW5zaWRlIHRoZSB2ZXJ0aWNhbCByYW5nZQot
ICAgICAqIG9mIHRoaXMgb2JqZWN0J3MgcmVwcmVzZW50YXRpb24/Ci0gICAgICovCi0gICAgYm9v
bCBjaGVja1ZlcnRpY2FsUG9pbnQoaW50IF95LCBpbnQgX3R5LCBpbnQgX2gpOwotCiAgICAgaW50
IG1fc3RhcnQ7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9sZW47CiAgICAgCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9yZW5kZXJfbGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvcmVuZGVyX2xpbmUuY3BwCShyZXZpc2lvbiAxMzQ4OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L3JlbmRlcl9saW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDggKzQ3NiwxNSBAQCBpbnQg
SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0hvcml6b250YWxsCiAgICAgICAgICAgICAgICAgbmVl
ZHNXb3JkU3BhY2luZyA9ICFydC0+dGV4dCgpW3RleHQtPmVuZCgpXS5pc1NwYWNlKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB0ZXh0LT5zZXRYUG9zKHgpOwotICAgICAgICAgICAgbGVm
dFBvc2l0aW9uID0ga01pbih4LCBsZWZ0UG9zaXRpb24pOwotICAgICAgICAgICAgcmlnaHRQb3Np
dGlvbiA9IGtNYXgoeCArIHRleHQtPndpZHRoKCksIHJpZ2h0UG9zaXRpb24pOworICAgICAgICAg
ICAgaW50IHNoYWRvd0xlZnQgPSAwOworICAgICAgICAgICAgaW50IHNoYWRvd1JpZ2h0ID0gMDsK
KyAgICAgICAgICAgIGZvciAoU2hhZG93RGF0YSogc2hhZG93ID0gcnQtPnN0eWxlKCktPnRleHRT
aGFkb3coKTsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ctPm5leHQpIHsKKyAgICAgICAgICAgICAg
ICBzaGFkb3dMZWZ0ID0ga01pbihzaGFkb3dMZWZ0LCBzaGFkb3ctPnggLSBzaGFkb3ctPmJsdXIp
OworICAgICAgICAgICAgICAgIHNoYWRvd1JpZ2h0ID0ga01heChzaGFkb3dSaWdodCwgc2hhZG93
LT54ICsgc2hhZG93LT5ibHVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlZnRQb3Np
dGlvbiA9IGtNaW4oeCArIHNoYWRvd0xlZnQsIGxlZnRQb3NpdGlvbik7CisgICAgICAgICAgICBy
aWdodFBvc2l0aW9uID0ga01heCh4ICsgdGV4dC0+d2lkdGgoKSArIHNoYWRvd1JpZ2h0LCByaWdo
dFBvc2l0aW9uKTsKKyAgICAgICAgICAgIG1fbWF4SG9yaXpvbnRhbFNoYWRvdyA9IGtNYXgoa01h
eChzaGFkb3dSaWdodCwgLXNoYWRvd0xlZnQpLCBtX21heEhvcml6b250YWxTaGFkb3cpOwogICAg
ICAgICAgICAgeCArPSB0ZXh0LT53aWR0aCgpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpA
QCAtNTQyLDkgKzU0OSwxMiBAQCB2b2lkIElubGluZUZsb3dCb3g6OnZlcnRpY2FsbHlBbGlnbkJv
eGVzCiAgICAgaW50IG1heEhlaWdodCA9IG1heEFzY2VudCArIG1heERlc2NlbnQ7CiAgICAgaW50
IHRvcFBvc2l0aW9uID0gaGVpZ2h0T2ZCbG9jazsKICAgICBpbnQgYm90dG9tUG9zaXRpb24gPSBo
ZWlnaHRPZkJsb2NrOwotICAgIHBsYWNlQm94ZXNWZXJ0aWNhbGx5KGhlaWdodE9mQmxvY2ssIG1h
eEhlaWdodCwgbWF4QXNjZW50LCBzdHJpY3RNb2RlLCB0b3BQb3NpdGlvbiwgYm90dG9tUG9zaXRp
b24pOworICAgIGludCBzZWxlY3Rpb25Ub3AgPSBoZWlnaHRPZkJsb2NrOworICAgIGludCBzZWxl
Y3Rpb25Cb3R0b20gPSBoZWlnaHRPZkJsb2NrOworICAgIHBsYWNlQm94ZXNWZXJ0aWNhbGx5KGhl
aWdodE9mQmxvY2ssIG1heEhlaWdodCwgbWF4QXNjZW50LCBzdHJpY3RNb2RlLCB0b3BQb3NpdGlv
biwgYm90dG9tUG9zaXRpb24sIHNlbGVjdGlvblRvcCwgc2VsZWN0aW9uQm90dG9tKTsKIAogICAg
IHNldFZlcnRpY2FsT3ZlcmZsb3dQb3NpdGlvbnModG9wUG9zaXRpb24sIGJvdHRvbVBvc2l0aW9u
KTsKKyAgICBzZXRWZXJ0aWNhbFNlbGVjdGlvblBvc2l0aW9ucyhzZWxlY3Rpb25Ub3AsIHNlbGVj
dGlvbkJvdHRvbSk7CiAKICAgICAvLyBTaHJpbmsgYm94ZXMgd2l0aCBubyB0ZXh0IGNoaWxkcmVu
IGluIHF1aXJrcyBhbmQgYWxtb3N0IHN0cmljdCBtb2RlLgogICAgIGlmICghc3RyaWN0TW9kZSkK
QEAgLTYzMyw3ICs2NDMsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNvbXB1dGVMb2dpY2FsQm94
SGVpCiB9CiAKIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc1ZlcnRpY2FsbHkoaW50IHks
IGludCBtYXhIZWlnaHQsIGludCBtYXhBc2NlbnQsIGJvb2wgc3RyaWN0TW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiB0b3BQb3NpdGlvbiwgaW50JiBi
b3R0b21Qb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50JiB0b3BQb3NpdGlvbiwgaW50JiBib3R0b21Qb3NpdGlvbiwgaW50JiBzZWxlY3Rpb25Ub3As
IGludCYgc2VsZWN0aW9uQm90dG9tKQogewogICAgIGlmIChpc1Jvb3RJbmxpbmVCb3goKSkKICAg
ICAgICAgc2V0WVBvcyh5ICsgbWF4QXNjZW50IC0gYmFzZWxpbmUoKSk7Ly8gUGxhY2Ugb3VyIHJv
b3QgYm94LgpAQCAtNjQ1LDggKzY1NSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hl
c1ZlcnRpY2FsbHkKICAgICAgICAgLy8gQWRqdXN0IGJveGVzIHRvIHVzZSB0aGVpciByZWFsIGJv
eCB5L2hlaWdodCBhbmQgbm90IHRoZSBsb2dpY2FsIGhlaWdodCAoYXMgZGljdGF0ZWQgYnkKICAg
ICAgICAgLy8gbGluZS1oZWlnaHQpLgogICAgICAgICBpZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94
KCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxJbmxpbmVGbG93Qm94Kj4oY3VyciktPnBsYWNl
Qm94ZXNWZXJ0aWNhbGx5KHksIG1heEhlaWdodCwgbWF4QXNjZW50LCBzdHJpY3RNb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0b3BQb3NpdGlvbiwgYm90dG9tUG9zaXRpb24pOworICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8SW5saW5lRmxvd0JveCo+KGN1cnIpLT5wbGFjZUJveGVzVmVydGljYWxseSh5LCBtYXhI
ZWlnaHQsIG1heEFzY2VudCwgc3RyaWN0TW9kZSwgdG9wUG9zaXRpb24sIGJvdHRvbVBvc2l0aW9u
LCBzZWxlY3Rpb25Ub3AsIHNlbGVjdGlvbkJvdHRvbSk7CiAKICAgICAgICAgYm9vbCBjaGlsZEFm
ZmVjdHNUb3BCb3R0b21Qb3MgPSB0cnVlOwogICAgICAgICBpZiAoY3Vyci0+eVBvcygpID09IFBv
c2l0aW9uVG9wKQpAQCAtNjYyLDExICs2NzEsMTcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwbGFj
ZUJveGVzVmVydGljYWxseQogICAgICAgICBpbnQgbmV3WSA9IGN1cnItPnlQb3MoKTsKICAgICAg
ICAgaW50IG5ld0hlaWdodCA9IGN1cnItPmhlaWdodCgpOwogICAgICAgICBpbnQgbmV3QmFzZWxp
bmUgPSBjdXJyLT5iYXNlbGluZSgpOworICAgICAgICBpbnQgb3ZlcmZsb3dUb3AgPSAwOworICAg
ICAgICBpbnQgb3ZlcmZsb3dCb3R0b20gPSAwOwogICAgICAgICBpZiAoY3Vyci0+aXNUZXh0KCkg
fHwgY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpIHsKICAgICAgICAgICAgIGNvbnN0IEZvbnQmIGZv
bnQgPSBjdXJyLT5vYmplY3QoKS0+Zm9udChtX2ZpcnN0TGluZSk7CiAgICAgICAgICAgICBuZXdC
YXNlbGluZSA9IGZvbnQuYXNjZW50KCk7CiAgICAgICAgICAgICBuZXdZICs9IGN1cnItPmJhc2Vs
aW5lKCkgLSBuZXdCYXNlbGluZTsKICAgICAgICAgICAgIG5ld0hlaWdodCA9IG5ld0Jhc2VsaW5l
ICsgZm9udC5kZXNjZW50KCk7CisgICAgICAgICAgICBmb3IgKFNoYWRvd0RhdGEqIHNoYWRvdyA9
IGN1cnItPm9iamVjdCgpLT5zdHlsZSgpLT50ZXh0U2hhZG93KCk7IHNoYWRvdzsgc2hhZG93ID0g
c2hhZG93LT5uZXh0KSB7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3dUb3AgPSBrTWluKG92ZXJm
bG93VG9wLCBzaGFkb3ctPnkgLSBzaGFkb3ctPmJsdXIpOworICAgICAgICAgICAgICAgIG92ZXJm
bG93Qm90dG9tID0ga01heChvdmVyZmxvd0JvdHRvbSwgc2hhZG93LT55ICsgc2hhZG93LT5ibHVy
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyLT5pc0lubGluZUZsb3dCb3go
KSkgewogICAgICAgICAgICAgICAgIG5ld0hlaWdodCArPSBjdXJyLT5vYmplY3QoKS0+Ym9yZGVy
VG9wKCkgKyBjdXJyLT5vYmplY3QoKS0+cGFkZGluZ1RvcCgpICsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjdXJyLT5vYmplY3QoKS0+Ym9yZGVyQm90dG9tKCkgKyBjdXJyLT5vYmplY3Qo
KS0+cGFkZGluZ0JvdHRvbSgpOwpAQCAtNjc3LDYgKzY5Miw4IEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc1ZlcnRpY2FsbHkKICAgICAgICAgZWxzZSBpZiAoIWN1cnItPm9iamVjdCgp
LT5pc0JSKCkpIHsKICAgICAgICAgICAgIG5ld1kgKz0gY3Vyci0+b2JqZWN0KCktPm1hcmdpblRv
cCgpOwogICAgICAgICAgICAgbmV3SGVpZ2h0ID0gY3Vyci0+aGVpZ2h0KCkgLSAoY3Vyci0+b2Jq
ZWN0KCktPm1hcmdpblRvcCgpICsgY3Vyci0+b2JqZWN0KCktPm1hcmdpbkJvdHRvbSgpKTsKKyAg
ICAgICAgICAgIG92ZXJmbG93VG9wID0gY3Vyci0+b2JqZWN0KCktPm92ZXJmbG93VG9wKCk7Cisg
ICAgICAgICAgICBvdmVyZmxvd0JvdHRvbSA9IGN1cnItPm9iamVjdCgpLT5vdmVyZmxvd0hlaWdo
dCgpIC0gbmV3SGVpZ2h0OwogICAgICAgICB9CiAKICAgICAgICAgY3Vyci0+c2V0WVBvcyhuZXdZ
KTsKQEAgLTY4NCwxMSArNzAxLDExIEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc1Zl
cnRpY2FsbHkKICAgICAgICAgY3Vyci0+c2V0QmFzZWxpbmUobmV3QmFzZWxpbmUpOwogCiAgICAg
ICAgIGlmIChjaGlsZEFmZmVjdHNUb3BCb3R0b21Qb3MpIHsKLSAgICAgICAgICAgIGlmIChuZXdZ
IDwgdG9wUG9zaXRpb24pCi0gICAgICAgICAgICAgICAgdG9wUG9zaXRpb24gPSBuZXdZOwotICAg
ICAgICAgICAgaWYgKG5ld1kgKyBuZXdIZWlnaHQgPiBib3R0b21Qb3NpdGlvbikKLSAgICAgICAg
ICAgICAgICBib3R0b21Qb3NpdGlvbiA9IG5ld1kgKyBuZXdIZWlnaHQ7CisgICAgICAgICAgICBz
ZWxlY3Rpb25Ub3AgPSBrTWluKHNlbGVjdGlvblRvcCwgbmV3WSk7CisgICAgICAgICAgICBzZWxl
Y3Rpb25Cb3R0b20gPSBrTWF4KHNlbGVjdGlvbkJvdHRvbSwgbmV3WSArIG5ld0hlaWdodCk7CiAg
ICAgICAgIH0KKyAgICAgICAgdG9wUG9zaXRpb24gPSBrTWluKHRvcFBvc2l0aW9uLCBuZXdZICsg
b3ZlcmZsb3dUb3ApOworICAgICAgICBib3R0b21Qb3NpdGlvbiA9IGtNYXgoYm90dG9tUG9zaXRp
b24sIG5ld1kgKyBuZXdIZWlnaHQgKyBvdmVyZmxvd0JvdHRvbSk7CiAgICAgfQogCiAgICAgaWYg
KGlzUm9vdElubGluZUJveCgpKSB7CkBAIC02OTcsMTAgKzcxNCw4IEBAIHZvaWQgSW5saW5lRmxv
d0JveDo6cGxhY2VCb3hlc1ZlcnRpY2FsbHkKICAgICAgICAgc2V0WVBvcyh5UG9zKCkgKyBiYXNl
bGluZSgpIC0gZm9udC5hc2NlbnQoKSk7CiAgICAgICAgIHNldEJhc2VsaW5lKGZvbnQuYXNjZW50
KCkpOwogICAgICAgICBpZiAoaGFzVGV4dENoaWxkcmVuKCkgfHwgc3RyaWN0TW9kZSkgewotICAg
ICAgICAgICAgaWYgKHlQb3MoKSA8IHRvcFBvc2l0aW9uKQotICAgICAgICAgICAgICAgIHRvcFBv
c2l0aW9uID0geVBvcygpOwotICAgICAgICAgICAgaWYgKHlQb3MoKSArIGhlaWdodCgpID4gYm90
dG9tUG9zaXRpb24pCi0gICAgICAgICAgICAgICAgYm90dG9tUG9zaXRpb24gPSB5UG9zKCkgKyBo
ZWlnaHQoKTsKKyAgICAgICAgICAgIHNlbGVjdGlvblRvcCA9IGtNaW4oc2VsZWN0aW9uVG9wLCB5
UG9zKCkpOworICAgICAgICAgICAgc2VsZWN0aW9uQm90dG9tID0ga01heChzZWxlY3Rpb25Cb3R0
b20sIHlQb3MoKSArIGhlaWdodCgpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEyOTEsMTkg
KzEzMDYsMTkgQEAgSW5saW5lQm94KiBSb290SW5saW5lQm94OjpsYXN0U2VsZWN0ZWRCbwogaW50
IFJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblRvcCgpCiB7CiAgICAgaWYgKCFwcmV2Um9vdEJveCgp
KQotICAgICAgICByZXR1cm4gdG9wT3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIG1fc2VsZWN0
aW9uVG9wOwogICAgIAotICAgIGludCBwcmV2Qm90dG9tID0gcHJldlJvb3RCb3goKS0+Ym90dG9t
T3ZlcmZsb3coKTsKLSAgICBpZiAocHJldkJvdHRvbSA8IG1fdG9wT3ZlcmZsb3cgJiYgYmxvY2so
KS0+Y29udGFpbnNGbG9hdHMoKSkgeworICAgIGludCBwcmV2Qm90dG9tID0gcHJldlJvb3RCb3go
KS0+c2VsZWN0aW9uQm90dG9tKCk7CisgICAgaWYgKHByZXZCb3R0b20gPCBtX3NlbGVjdGlvblRv
cCAmJiBibG9jaygpLT5jb250YWluc0Zsb2F0cygpKSB7CiAgICAgICAgIC8vIFRoaXMgbGluZSBo
YXMgYWN0dWFsbHkgYmVlbiBtb3ZlZCBmdXJ0aGVyIGRvd24sIHByb2JhYmx5IGZyb20gYSBsYXJn
ZSBsaW5lLWhlaWdodCwgYnV0IHBvc3NpYmx5IGJlY2F1c2UgdGhlCiAgICAgICAgIC8vIGxpbmUg
d2FzIGZvcmNlZCB0byBjbGVhciBmbG9hdHMuICBJZiBzbywgbGV0J3MgY2hlY2sgdGhlIG9mZnNl
dHMsIGFuZCBvbmx5IGJlIHdpbGxpbmcgdG8gdXNlIHRoZSBwcmV2aW91cwogICAgICAgICAvLyBs
aW5lJ3MgYm90dG9tIG92ZXJmbG93IGlmIHRoZSBvZmZzZXRzIGFyZSBncmVhdGVyIG9uIGJvdGgg
c2lkZXMuCiAgICAgICAgIGludCBwcmV2TGVmdCA9IGJsb2NrKCktPmxlZnRPZmZzZXQocHJldkJv
dHRvbSk7CiAgICAgICAgIGludCBwcmV2UmlnaHQgPSBibG9jaygpLT5yaWdodE9mZnNldChwcmV2
Qm90dG9tKTsKLSAgICAgICAgaW50IG5ld0xlZnQgPSBibG9jaygpLT5sZWZ0T2Zmc2V0KG1fdG9w
T3ZlcmZsb3cpOwotICAgICAgICBpbnQgbmV3UmlnaHQgPSBibG9jaygpLT5yaWdodE9mZnNldCht
X3RvcE92ZXJmbG93KTsKKyAgICAgICAgaW50IG5ld0xlZnQgPSBibG9jaygpLT5sZWZ0T2Zmc2V0
KG1fc2VsZWN0aW9uVG9wKTsKKyAgICAgICAgaW50IG5ld1JpZ2h0ID0gYmxvY2soKS0+cmlnaHRP
ZmZzZXQobV9zZWxlY3Rpb25Ub3ApOwogICAgICAgICBpZiAocHJldkxlZnQgPiBuZXdMZWZ0IHx8
IHByZXZSaWdodCA8IG5ld1JpZ2h0KQotICAgICAgICAgICAgcmV0dXJuIG1fdG9wT3ZlcmZsb3c7
CisgICAgICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb25Ub3A7CiAgICAgfQogICAgIAogICAgIHJl
dHVybiBwcmV2Qm90dG9tOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvdy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvdy5jcHAJKHJldmlzaW9u
IDEzNDg5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvdy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2MywxMSArMzYzLDEwIEBAIHZvaWQgUmVuZGVyRmxvdzo6cGFpbnRMaW5lcyhQYWlu
dEluZm8mIGkKIAogICAgIC8vIFdlIGNhbiBjaGVjayB0aGUgZmlyc3QgYm94IGFuZCBsYXN0IGJv
eCBhbmQgYXZvaWQgcGFpbnRpbmcgaWYgd2UgZG9uJ3QKICAgICAvLyBpbnRlcnNlY3QuICBUaGlz
IGlzIGEgcXVpY2sgc2hvcnQtY2lyY3VpdCB0aGF0IHdlIGNhbiB0YWtlIHRvIGF2b2lkIHdhbGtp
bmcgYW55IGxpbmVzLgotICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIGZsYXdlZCBpbiB0d28g
ZXh0cmVtZWx5IG9ic2N1cmUgd2F5cy4KLSAgICAvLyAoMSkgSWYgc29tZSBsaW5lIGluIHRoZSBt
aWRkbGUgaGFzIGEgaHVnZSBvdmVyZmxvdywgaXQgbWlnaHQgYWN0dWFsbHkgZXh0ZW5kIGJlbG93
IHRoZSBsYXN0IGxpbmUuCi0gICAgLy8gKDIpIFRoZSBvdmVyZmxvdyBmcm9tIGFuIGlubGluZSBi
bG9jayBvbiBhIGxpbmUgaXMgbm90IHJlcG9ydGVkIHRvIHRoZSBsaW5lLgotICAgIGludCB5UG9z
ID0gZmlyc3RMaW5lQm94KCktPnJvb3QoKS0+c2VsZWN0aW9uVG9wKCkgLSBtYXhpbWFsT3V0bGlu
ZVNpemUoaS5waGFzZSk7Ci0gICAgaW50IGggPSBtYXhpbWFsT3V0bGluZVNpemUoaS5waGFzZSkg
KyBsYXN0TGluZUJveCgpLT5yb290KCktPnNlbGVjdGlvblRvcCgpICsgbGFzdExpbmVCb3goKS0+
cm9vdCgpLT5zZWxlY3Rpb25IZWlnaHQoKSAtIHlQb3M7CisgICAgLy8gRklYTUU6IFRoaXMgY2hl
Y2sgaXMgZmxhd2VkIGluIHRoZSBmb2xsb3dpbmcgZXh0cmVtZWx5IG9ic2N1cmUgd2F5OgorICAg
IC8vIGlmIHNvbWUgbGluZSBpbiB0aGUgbWlkZGxlIGhhcyBhIGh1Z2Ugb3ZlcmZsb3csIGl0IG1p
Z2h0IGFjdHVhbGx5IGV4dGVuZCBiZWxvdyB0aGUgbGFzdCBsaW5lLgorICAgIGludCB5UG9zID0g
Zmlyc3RMaW5lQm94KCktPnJvb3QoKS0+dG9wT3ZlcmZsb3coKSAtIG1heGltYWxPdXRsaW5lU2l6
ZShpLnBoYXNlKTsKKyAgICBpbnQgaCA9IG1heGltYWxPdXRsaW5lU2l6ZShpLnBoYXNlKSArIGxh
c3RMaW5lQm94KCktPnJvb3QoKS0+Ym90dG9tT3ZlcmZsb3coKSAtIHlQb3M7CiAgICAgeVBvcyAr
PSBfdHk7CiAgICAgaWYgKHlQb3MgPj0gaS5yLmJvdHRvbSgpIHx8IHlQb3MgKyBoIDw9IGkuci55
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM5Niw3ICszOTUsNyBAQCB2b2lkIFJlbmRlckZsb3c6
OnBhaW50TGluZXMoUGFpbnRJbmZvJiBpCiAgICAgICAgIH0KIAogICAgICAgICBpbnQgdG9wID0g
a01pbihjdXJyLT5yb290KCktPnRvcE92ZXJmbG93KCksIGN1cnItPnJvb3QoKS0+c2VsZWN0aW9u
VG9wKCkpIC0gbWF4aW1hbE91dGxpbmVTaXplKGkucGhhc2UpOwotICAgICAgICBpbnQgYm90dG9t
ID0ga01heChjdXJyLT5yb290KCktPnNlbGVjdGlvblRvcCgpICsgY3Vyci0+cm9vdCgpLT5zZWxl
Y3Rpb25IZWlnaHQoKSwgY3Vyci0+cm9vdCgpLT5ib3R0b21PdmVyZmxvdygpKSArIG1heGltYWxP
dXRsaW5lU2l6ZShpLnBoYXNlKTsKKyAgICAgICAgaW50IGJvdHRvbSA9IGN1cnItPnJvb3QoKS0+
Ym90dG9tT3ZlcmZsb3coKSArIG1heGltYWxPdXRsaW5lU2l6ZShpLnBoYXNlKTsKICAgICAgICAg
aCA9IGJvdHRvbSAtIHRvcDsKICAgICAgICAgeVBvcyA9IF90eSArIHRvcDsKICAgICAgICAgaWYg
KHlQb3MgPCBpLnIuYm90dG9tKCkgJiYgeVBvcyArIGggPiBpLnIueSgpKQpAQCAtNDMxLDkgKzQz
MCw4IEBAIGJvb2wgUmVuZGVyRmxvdzo6aGl0VGVzdExpbmVzKE5vZGVJbmZvJiAKIAogICAgIC8v
IFdlIGNhbiBjaGVjayB0aGUgZmlyc3QgYm94IGFuZCBsYXN0IGJveCBhbmQgYXZvaWQgaGl0IHRl
c3RpbmcgaWYgd2UgZG9uJ3QKICAgICAvLyBjb250YWluIHRoZSBwb2ludC4gIFRoaXMgaXMgYSBx
dWljayBzaG9ydC1jaXJjdWl0IHRoYXQgd2UgY2FuIHRha2UgdG8gYXZvaWQgd2Fsa2luZyBhbnkg
bGluZXMuCi0gICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgZmxhd2VkIGluIHR3byBleHRyZW1l
bHkgb2JzY3VyZSB3YXlzLgotICAgIC8vICgxKSBJZiBzb21lIGxpbmUgaW4gdGhlIG1pZGRsZSBo
YXMgYSBodWdlIG92ZXJmbG93LCBpdCBtaWdodCBhY3R1YWxseSBleHRlbmQgYmVsb3cgdGhlIGxh
c3QgbGluZS4KLSAgICAvLyAoMikgVGhlIG92ZXJmbG93IGZyb20gYW4gaW5saW5lIGJsb2NrIG9u
IGEgbGluZSBpcyBub3QgcmVwb3J0ZWQgdG8gdGhlIGxpbmUuCisgICAgLy8gRklYTUU6IFRoaXMg
Y2hlY2sgaXMgZmxhd2VkIGluIHRoZSBmb2xsb3dpbmcgZXh0cmVtZWx5IG9ic2N1cmUgd2F5Ogor
ICAgIC8vIGlmIHNvbWUgbGluZSBpbiB0aGUgbWlkZGxlIGhhcyBhIGh1Z2Ugb3ZlcmZsb3csIGl0
IG1pZ2h0IGFjdHVhbGx5IGV4dGVuZCBiZWxvdyB0aGUgbGFzdCBsaW5lLgogICAgIGlmICgoeSA+
PSB0eSArIGxhc3RMaW5lQm94KCktPnJvb3QoKS0+Ym90dG9tT3ZlcmZsb3coKSkgfHwgKHkgPCB0
eSArIGZpcnN0TGluZUJveCgpLT5yb290KCktPnRvcE92ZXJmbG93KCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9saW5lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2xpbmUuaAkocmV2aXNpb24gMTM0ODkp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfbGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTAsNiArMjEwLDcgQEAgcHVibGljOgogICAgICAgICBtX2xhc3RDaGlsZCA9IDA7CiAgICAgICAg
IG1faW5jbHVkZUxlZnRFZGdlID0gbV9pbmNsdWRlUmlnaHRFZGdlID0gZmFsc2U7CiAgICAgICAg
IG1faGFzVGV4dENoaWxkcmVuID0gZmFsc2U7CisgICAgICAgIG1fbWF4SG9yaXpvbnRhbFNoYWRv
dyA9IDA7CiAgICAgfQogCiAgICAgUmVuZGVyRmxvdyogZmxvd09iamVjdCgpOwpAQCAtMjc4LDEw
ICsyNzksMTIgQEAgcHVibGljOgogICAgIHZvaWQgYWRqdXN0TWF4QXNjZW50QW5kRGVzY2VudChp
bnQmIG1heEFzY2VudCwgaW50JiBtYXhEZXNjZW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbWF4UG9zaXRpb25Ub3AsIGludCBtYXhQb3NpdGlvbkJvdHRvbSk7CiAg
ICAgdm9pZCBwbGFjZUJveGVzVmVydGljYWxseShpbnQgeSwgaW50IG1heEhlaWdodCwgaW50IG1h
eEFzY2VudCwgYm9vbCBzdHJpY3RNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50JiB0b3BQb3NpdGlvbiwgaW50JiBib3R0b21Qb3NpdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQmIHRvcFBvc2l0aW9uLCBpbnQmIGJvdHRvbVBvc2l0aW9uLCBpbnQm
IHNlbGVjdGlvblRvcCwgaW50JiBzZWxlY3Rpb25Cb3R0b20pOwogICAgIHZvaWQgc2hyaW5rQm94
ZXNXaXRoTm9UZXh0Q2hpbGRyZW4oaW50IHRvcFBvc2l0aW9uLCBpbnQgYm90dG9tUG9zaXRpb24p
OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJ0aWNhbE92ZXJmbG93UG9zaXRpb25zKGlu
dCB0b3AsIGludCBib3R0b20pIHt9CisgICAgdmlydHVhbCB2b2lkIHNldFZlcnRpY2FsU2VsZWN0
aW9uUG9zaXRpb25zKGludCB0b3AsIGludCBib3R0b20pIHt9CisgICAgaW50IG1heEhvcml6b250
YWxTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX21heEhvcml6b250YWxTaGFkb3c7IH0KIAogICAg
IHZvaWQgcmVtb3ZlQ2hpbGQoSW5saW5lQm94KiBjaGlsZCk7CiAgICAgCkBAIC0yOTMsNiArMjk2
LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIElubGluZUJveCogbV9maXJzdENoaWxkOwog
ICAgIElubGluZUJveCogbV9sYXN0Q2hpbGQ7CisgICAgaW50IG1fbWF4SG9yaXpvbnRhbFNoYWRv
dzsKICAgICBib29sIG1faW5jbHVkZUxlZnRFZGdlIDogMTsKICAgICBib29sIG1faW5jbHVkZVJp
Z2h0RWRnZSA6IDE7CiAgICAgYm9vbCBtX2hhc1RleHRDaGlsZHJlbiA6IDE7CkBAIC0zMjEsNiAr
MzI1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGxlZnRPdmVyZmxvdygpIHsgcmV0dXJu
IG1fbGVmdE92ZXJmbG93OyB9CiAgICAgdmlydHVhbCBpbnQgcmlnaHRPdmVyZmxvdygpIHsgcmV0
dXJuIG1fcmlnaHRPdmVyZmxvdzsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJ0aWNhbE92ZXJm
bG93UG9zaXRpb25zKGludCB0b3AsIGludCBib3R0b20pIHsgbV90b3BPdmVyZmxvdyA9IHRvcDsg
bV9ib3R0b21PdmVyZmxvdyA9IGJvdHRvbTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJ0aWNh
bFNlbGVjdGlvblBvc2l0aW9ucyhpbnQgdG9wLCBpbnQgYm90dG9tKSB7IG1fc2VsZWN0aW9uVG9w
ID0gdG9wOyBtX3NlbGVjdGlvbkJvdHRvbSA9IGJvdHRvbTsgfQogICAgIHZvaWQgc2V0SG9yaXpv
bnRhbE92ZXJmbG93UG9zaXRpb25zKGludCBsZWZ0LCBpbnQgcmlnaHQpIHsgbV9sZWZ0T3ZlcmZs
b3cgPSBsZWZ0OyBtX3JpZ2h0T3ZlcmZsb3cgPSByaWdodDsgfQogICAgIHZvaWQgc2V0TGluZUJy
ZWFrSW5mbyhSZW5kZXJPYmplY3QqIG9iaiwgdW5zaWduZWQgYnJlYWtQb3MsIEJpZGlTdGF0dXMq
IHN0YXR1cywgQmlkaUNvbnRleHQqIGNvbnRleHQpOwogICAgIHZvaWQgc2V0TGluZUJyZWFrUG9z
KGludCBwKSB7IG1fbGluZUJyZWFrUG9zID0gcDsgfQpAQCAtMzY0LDcgKzM2OSw4IEBAIHB1Ymxp
YzoKICAgICBSZW5kZXJCbG9jayogYmxvY2soKSBjb25zdDsKIAogICAgIGludCBzZWxlY3Rpb25U
b3AoKTsKLSAgICBpbnQgc2VsZWN0aW9uSGVpZ2h0KCkgeyByZXR1cm4ga01heCgwLCBtX2JvdHRv
bU92ZXJmbG93IC0gc2VsZWN0aW9uVG9wKCkpOyB9CisgICAgaW50IHNlbGVjdGlvbkJvdHRvbSgp
IHsgcmV0dXJuIG1fc2VsZWN0aW9uQm90dG9tOyB9CisgICAgaW50IHNlbGVjdGlvbkhlaWdodCgp
IHsgcmV0dXJuIGtNYXgoMCwgc2VsZWN0aW9uQm90dG9tKCkgLSBzZWxlY3Rpb25Ub3AoKSk7IH0K
ICAKICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RMZWFmQ2hpbGRGb3JYUG9zKGludCBfeCwgaW50IF90
eCk7CiAKQEAgLTM3Nyw2ICszODMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fbGVmdE92ZXJm
bG93OwogICAgIGludCBtX3JpZ2h0T3ZlcmZsb3c7CiAKKyAgICBpbnQgbV9zZWxlY3Rpb25Ub3A7
CisgICAgaW50IG1fc2VsZWN0aW9uQm90dG9tOworCiAgICAgLy8gV2hlcmUgdGhpcyBsaW5lIGVu
ZGVkLiAgVGhlIGV4YWN0IG9iamVjdCBhbmQgdGhlIHBvc2l0aW9uIHdpdGhpbiB0aGF0IG9iamVj
dCBhcmUgc3RvcmVkIHNvIHRoYXQKICAgICAvLyB3ZSBjYW4gY3JlYXRlIGEgQmlkaUl0ZXJhdG9y
IGJlZ2lubmluZyBqdXN0IGFmdGVyIHRoZSBlbmQgb2YgdGhpcyBsaW5lLgogICAgIFJlbmRlck9i
amVjdCogbV9saW5lQnJlYWtPYmo7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAkocmV2aXNpb24gMTM0ODkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTkgKzY3LDYgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpv
cGVyYXRvciBkZWxldGUodm9pZAogICAgICpzdGF0aWNfY2FzdDxzaXplX3QqPihwdHIpID0gc3o7
CiB9CiAKLWJvb2wgSW5saW5lVGV4dEJveDo6Y2hlY2tWZXJ0aWNhbFBvaW50KGludCBfeSwgaW50
IF90eSwgaW50IF9oKQotewotICAgIGludCB0b3BZID0gbV95OwotICAgIGludCBib3R0b21ZID0g
bV95ICsgbV9oZWlnaHQ7Ci0gICAgaWYgKHJvb3QoKS0+aGFzU2VsZWN0ZWRDaGlsZHJlbigpKSB7
Ci0gICAgICAgIHRvcFkgPSBrTWluKHJvb3QoKS0+c2VsZWN0aW9uVG9wKCksIHRvcFkpOwotICAg
ICAgICBib3R0b21ZID0ga01heChib3R0b21ZLCByb290KCktPmJvdHRvbU92ZXJmbG93KCkpOwot
ICAgIH0KLSAgICBpZiAoKF90eSArIHRvcFkgPj0gX3kgKyBfaCkgfHwgKF90eSArIGJvdHRvbVkg
PD0gX3kpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJv
b2wgSW5saW5lVGV4dEJveDo6aXNTZWxlY3RlZChpbnQgc3RhcnRQb3MsIGludCBlbmRQb3MpIGNv
bnN0CiB7CiAgICAgaW50IHNQb3MgPSBrTWF4KHN0YXJ0UG9zIC0gbV9zdGFydCwgMCk7CkBAIC0y
NDgsOCArMjM1LDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChSZW5kZXJPYmplY3Q6Ogog
ICAgICAgICBtX3RydW5jYXRpb24gPT0gY0Z1bGxUcnVuY2F0aW9uIHx8IGkucGhhc2UgPT0gUGFp
bnRBY3Rpb25PdXRsaW5lKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgeFBvcyA9IHR4ICsg
bV94OwotICAgIGludCB3ID0gd2lkdGgoKTsKKyAgICBpbnQgeFBvcyA9IHR4ICsgbV94IC0gcGFy
ZW50KCktPm1heEhvcml6b250YWxTaGFkb3coKTsKKyAgICBpbnQgdyA9IHdpZHRoKCkgKyAyICog
cGFyZW50KCktPm1heEhvcml6b250YWxTaGFkb3coKTsKICAgICBpZiAoeFBvcyA+PSBpLnIucmln
aHQoKSB8fCB4UG9zICsgdyA8PSBpLnIueCgpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAo=
</data>
<flag name="review"
          id="1959"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>