<?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>21116</bug_id>
          
          <creation_ts>2008-09-25 12:15:47 -0700</creation_ts>
          <short_desc>Audio from &lt;audio&gt; or &lt;video&gt; element continues after tab is closed</short_desc>
          <delta_ts>2009-02-19 11:06:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>hyatt</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>92775</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2008-09-25 12:15:47 -0700</bug_when>
    <thetext>If a page with an &lt;audio&gt; or &lt;video&gt; element has been in the page cache, audio continues to play for several seconds after the tab with the element is closed.

To reproduce:
1. Open Safari
2. Open two blank tabs
3. In one tab, open a page with a media element that has audio.
4. Go to http://webkit.org/ in the tab with the media element
5. After the page loads, click the Back button
6. Start the media element playing and close the tab

Audio continues to play for a few seconds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92780</commentid>
    <comment_count>1</comment_count>
      <attachid>23816</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2008-09-25 12:54:32 -0700</bug_when>
    <thetext>Created attachment 23816
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92782</commentid>
    <comment_count>2</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2008-09-25 13:01:01 -0700</bug_when>
    <thetext>the basic concept seems ok to me.  I&apos;d like to get comments from Hyatt or Brady.  CC&apos;ing them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92785</commentid>
    <comment_count>3</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2008-09-25 13:05:01 -0700</bug_when>
    <thetext>Another option is to add the notification to Frame::pageDestroyed-- if we didn&apos;t want to change the willSaveToCache/didRestoreFromCache concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92787</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2008-09-25 13:13:17 -0700</bug_when>
    <thetext>FWIW, Antti suggested this approach. CC&apos;ing him as well.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92859</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2008-09-25 22:21:50 -0700</bug_when>
    <thetext>I noticed that there are still some references to page cache left in connection with these callbacks. I see these in the patch:

Document::m_pageCacheCallbackElements
HTMLInputElement ::needsCacheCallback()
HTMLMediaElement::m_inPageCache

For consistency it would be good to rename them as well and check that semantics still make sense (that is they really care about whether document is active or not rather than specifically about being in page cache or not). At least something like HTMLMediaElement::m_inActiveDocument makes total sense. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92936</commentid>
    <comment_count>6</comment_count>
      <attachid>23851</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2008-09-26 09:18:20 -0700</bug_when>
    <thetext>Created attachment 23851
revised patch

Revised patch per Antti&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92938</commentid>
    <comment_count>7</comment_count>
      <attachid>23851</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2008-09-26 09:31:44 -0700</bug_when>
    <thetext>Comment on attachment 23851
revised patch

This should still be renamed to match variable name for consistency:

bool inPageCache() const { return !m_inActiveDocument; }

It should return the value without negation and call sites and should be reversed instead. (or alternatively find a good variable name that is true when inactive, m_inInactiveDocument sounds bad).

This is minor, r=me with or without the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92950</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2008-09-26 10:30:36 -0700</bug_when>
    <thetext>Revised per last comment and committed as r36957.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110236</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-19 11:06:05 -0800</bug_when>
    <thetext>See also bug 24031.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23816</attachid>
            <date>2008-09-25 12:54:32 -0700</date>
            <delta_ts>2008-09-26 09:18:20 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>16331</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjkwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMDgtMDktMjQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkKKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU3MjYzMjU+IEF1ZGlvIGZyb20gPHZpZGVvPiBjYW4gc3RpbGwgYmUgaGVhcmQgYWZ0
ZXIgbmF2aWdhdGluZyAKKyAgICAgICAgYmFjayB0byBwYWdlIHdpdGggPHZpZGVvPiwgdGhlbiBj
bG9zaW5nIHRhYgorCisgICAgICAgIFJlbmFtZSB3aWxsU2F2ZVRvQ2FjaGUvZGlkUmVzdG9yZUZy
b21DYWNoZSBjYWxsYmFja3MgdG8gZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUvCisgICAgICAg
IGRvY3VtZW50RGlkQmVjb21lQWN0aXZlLCBhbmQgcG9zdCBkb2N1bWVudFdpbGxCZWNvbWVJbmFj
dGl2ZSB3aGVuIGEgcGFnZSBpcyBtYXJrZWQgZm9yCisgICAgICAgIGRlbGV0aW9uLgorCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb2N1
bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZG9j
dW1lbnREaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlZ2lz
dGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp1bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAqIGhp
c3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpDYWNo
ZWRQYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50Ojp+SFRNTElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpyZWdpc3RlckZvckNhY2hlQ2FsbGJhY2tJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojp1bnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja0lmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRvY3VtZW50RGlkQmVjb21lQWN0
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdP
d25lckRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvcGVuZWQpOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp+UGFnZSk6CisgICAgICAgICog
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6
U1ZHU1ZHRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojp+U1ZHU1ZH
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpkb2N1bWVudFdpbGxC
ZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpkb2N1bWVu
dERpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKwogMjAw
OC0wOS0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUnVi
YmVyc3RhbXBlZCBieSBNYXJrIFJvd2UKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDM2OTAxKQor
KysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQ0LDI2ICsz
MTQ0LDI2IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEluUGFnZUNhY2hlKGJvb2wgZmxhZykKICAgICB9
CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OndpbGxTYXZlVG9DYWNoZSgpIAordm9pZCBEb2N1bWVudDo6
ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKSAKIHsKICAgICBIYXNoU2V0PEVsZW1lbnQqPjo6
aXRlcmF0b3IgZW5kID0gbV9wYWdlQ2FjaGVDYWxsYmFja0VsZW1lbnRzLmVuZCgpOwogICAgIGZv
ciAoSGFzaFNldDxFbGVtZW50Kj46Oml0ZXJhdG9yIGkgPSBtX3BhZ2VDYWNoZUNhbGxiYWNrRWxl
bWVudHMuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKLSAgICAgICAgKCppKS0+d2lsbFNhdmVUb0Nh
Y2hlKCk7CisgICAgICAgICgqaSktPmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCk7CiB9CiAK
LXZvaWQgRG9jdW1lbnQ6OmRpZFJlc3RvcmVGcm9tQ2FjaGUoKSAKK3ZvaWQgRG9jdW1lbnQ6OmRv
Y3VtZW50RGlkQmVjb21lQWN0aXZlKCkgCiB7CiAgICAgSGFzaFNldDxFbGVtZW50Kj46Oml0ZXJh
dG9yIGVuZCA9IG1fcGFnZUNhY2hlQ2FsbGJhY2tFbGVtZW50cy5lbmQoKTsKICAgICBmb3IgKEhh
c2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBpID0gbV9wYWdlQ2FjaGVDYWxsYmFja0VsZW1lbnRz
LmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpCi0gICAgICAgICgqaSktPmRpZFJlc3RvcmVGcm9tQ2Fj
aGUoKTsKKyAgICAgICAgKCppKS0+ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsKIH0KIAotdm9p
ZCBEb2N1bWVudDo6cmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrcyhFbGVtZW50KiBlKQordm9pZCBE
b2N1bWVudDo6cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MoRWxlbWVudCog
ZSkKIHsKICAgICBtX3BhZ2VDYWNoZUNhbGxiYWNrRWxlbWVudHMuYWRkKGUpOwogfQogCi12b2lk
IERvY3VtZW50Ojp1bnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja3MoRWxlbWVudCogZSkKK3ZvaWQg
RG9jdW1lbnQ6OnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MoRWxlbWVu
dCogZSkKIHsKICAgICBtX3BhZ2VDYWNoZUNhbGxiYWNrRWxlbWVudHMucmVtb3ZlKGUpOwogfQpJ
bmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9E
b2N1bWVudC5oCShyZXZpc2lvbiAzNjkwMSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTkzMywxMiArOTMzLDEyIEBAIHB1YmxpYzoKICAgICBib29sIGluUGFn
ZUNhY2hlKCk7CiAgICAgdm9pZCBzZXRJblBhZ2VDYWNoZShib29sIGZsYWcpOwogICAgIAotICAg
IC8vIEVsZW1lbnRzIGNhbiByZWdpc3RlciB0aGVtc2VsdmVzIGZvciB0aGUgIndpbGxTYXZlVG9D
YWNoZSgpIiBhbmQgIAotICAgIC8vICJkaWRSZXN0b3JlRnJvbUNhY2hlKCkiIGNhbGxiYWNrcwot
ICAgIHZvaWQgcmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrcyhFbGVtZW50Kik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja3MoRWxlbWVudCopOwotICAgIHZvaWQgd2lsbFNhdmVU
b0NhY2hlKCk7Ci0gICAgdm9pZCBkaWRSZXN0b3JlRnJvbUNhY2hlKCk7CisgICAgLy8gRWxlbWVu
dHMgY2FuIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgZm9yIHRoZSAiZG9jdW1lbnRXaWxsQmVjb21lSW5h
Y3RpdmUoKSIgYW5kICAKKyAgICAvLyAiZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKSIgY2FsbGJh
Y2tzCisgICAgdm9pZCByZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyhFbGVt
ZW50Kik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tz
KEVsZW1lbnQqKTsKKyAgICB2b2lkIGRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCk7CisgICAg
dm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwogCiAgICAgdm9pZCBzZXRTaG91bGRDcmVh
dGVSZW5kZXJlcnMoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRDcmVhdGVSZW5kZXJlcnMoKTsKSW5k
ZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVt
ZW50LmgJKHJldmlzaW9uIDM2OTAxKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xODEsOSArMTgxLDkgQEAgcHVibGljOgogICAgIEludFNpemUgbWluaW11bVNp
emVGb3JSZXNpemluZygpIGNvbnN0OwogICAgIHZvaWQgc2V0TWluaW11bVNpemVGb3JSZXNpemlu
Zyhjb25zdCBJbnRTaXplJik7CiAKLSAgICAvLyBVc2UgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9yUGFn
ZUNhY2hlQ2FsbGJhY2tzKCkgdG8gc3Vic2NyaWJlIHRoZXNlCi0gICAgdmlydHVhbCB2b2lkIHdp
bGxTYXZlVG9DYWNoZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0b3JlRnJvbUNhY2hl
KCkgeyB9CisgICAgLy8gVXNlIERvY3VtZW50OjpyZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlv
bkNhbGxiYWNrcygpIHRvIHN1YnNjcmliZSB0aGVzZQorICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVu
dFdpbGxCZWNvbWVJbmFjdGl2ZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJl
Y29tZUFjdGl2ZSgpIHsgfQogICAgIAogICAgIGJvb2wgaXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJl
bigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2luZ0NoaWxkcmVuRmluaXNoZWQ7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CkluZGV4OiBXZWJDb3JlL2hpc3Rvcnkv
Q2FjaGVkUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2Uu
Y3BwCShyZXZpc2lvbiAzNjkwMSkKKysrIFdlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBDYWNoZWRQYWdlOjpDYWNoZWRQYWdlKFBh
Z2UqIHBhZ2UpCiAgICAgY2FjaGVkUGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CiAjZW5kaWYKICAg
ICAKLSAgICBtX2RvY3VtZW50LT53aWxsU2F2ZVRvQ2FjaGUoKTsgCisgICAgbV9kb2N1bWVudC0+
ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKTsgCiAgICAgCiAgICAgRnJhbWUqIG1haW5GcmFt
ZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwogICAgIG1haW5GcmFtZS0+Y2xlYXJUaW1lcnMoKTsKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNjkwMSkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBA
IEhUTUxGb3JtRWxlbWVudDo6SFRNTEZvcm1FbGVtZW50KERvY3VtZW4KIEhUTUxGb3JtRWxlbWVu
dDo6fkhUTUxGb3JtRWxlbWVudCgpCiB7CiAgICAgaWYgKCFtX2F1dG9jb21wbGV0ZSkKLSAgICAg
ICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckNhY2hlQ2FsbGJhY2tzKHRoaXMpOworICAgICAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRo
aXMpOwogCiAgICAgZGVsZXRlIG1fZWxlbWVudEFsaWFzZXM7CiAgICAgZGVsZXRlIGNvbGxlY3Rp
b25JbmZvOwpAQCAtNTQ3LDkgKzU0Nyw5IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnUKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhdXRvY29tcGxldGVB
dHRyKSB7CiAgICAgICAgIG1fYXV0b2NvbXBsZXRlID0gIWVxdWFsSWdub3JpbmdDYXNlKGF0dHIt
PnZhbHVlKCksICJvZmYiKTsKICAgICAgICAgaWYgKCFtX2F1dG9jb21wbGV0ZSkKLSAgICAgICAg
ICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja3ModGhpcyk7ICAgIAorICAg
ICAgICAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFj
a3ModGhpcyk7ICAgIAogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudCgpLT51bnJl
Z2lzdGVyRm9yQ2FjaGVDYWxsYmFja3ModGhpcyk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT51
bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uc3VibWl0QXR0cikKICAgICAgICAgc2V0RXZlbnRMaXN0
ZW5lckZvclR5cGVBbmRBdHRyaWJ1dGUoc3VibWl0RXZlbnQsIGF0dHIpOwogICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBvbnJlc2V0QXR0cikKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIEhU
TUxGb3JtRWxlbWVudDo6Z2V0TmFtZWRFbGVtZW50cyhjCiAgICAgICAgIGFkZEVsZW1lbnRBbGlh
cyhzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4obmFtZWRJdGVtcy5maXJzdCgp
LmdldCgpKSwgbmFtZSk7ICAgICAgICAKIH0KIAotdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRpZFJl
c3RvcmVGcm9tQ2FjaGUoKQordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRvY3VtZW50RGlkQmVjb21l
QWN0aXZlKCkKIHsKICAgICBBU1NFUlQoIW1fYXV0b2NvbXBsZXRlKTsKICAgICAKQEAgLTczNCwx
MyArNzM0LDEzIEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpkaWRSZXN0b3JlRnJvbUNhY2gKIHZv
aWQgSFRNTEZvcm1FbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCiB7CiAgICAg
aWYgKCFtX2F1dG9jb21wbGV0ZSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckNh
Y2hlQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9j
dW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogfQogCiB2b2lkIEhUTUxGb3JtRWxlbWVu
dDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCiB7CiAgICAgaWYobV9hdXRvY29tcGxldGUp
Ci0gICAgICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja3ModGhpcyk7Cisg
ICAgICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tz
KHRoaXMpOwogfQogCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6Q2hlY2tlZFJhZGlvQnV0dG9uczo6
YWRkQnV0dG9uKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQpCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5oCShyZXZpc2lvbiAzNjkwMSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICBDaGVja2VkUmFkaW9CdXR0b25zJiBjaGVja2VkUmFkaW9CdXR0b25zKCkgeyByZXR1cm4g
bV9jaGVja2VkUmFkaW9CdXR0b25zOyB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3Rv
cmVGcm9tQ2FjaGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUo
KTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMzY5MDEp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCw3ICsxNDAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmluaXQoKQogSFRNTElucHV0
RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQoKQogewogICAgIGlmIChuZWVkc0NhY2hlQ2FsbGJh
Y2soKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckNhY2hlQ2FsbGJhY2tzKHRo
aXMpOworICAgICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9u
Q2FsbGJhY2tzKHRoaXMpOwogCiAgICAgZG9jdW1lbnQoKS0+Y2hlY2tlZFJhZGlvQnV0dG9ucygp
LnJlbW92ZUJ1dHRvbih0aGlzKTsKIApAQCAtMTU0MSwxMyArMTU0MSwxMyBAQCBib29sIEhUTUxJ
bnB1dEVsZW1lbnQ6Om5lZWRzQ2FjaGVDYWxsYmFjCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJl
Z2lzdGVyRm9yQ2FjaGVDYWxsYmFja0lmTmVlZGVkKCkKIHsKICAgICBpZiAobmVlZHNDYWNoZUNh
bGxiYWNrKCkpCi0gICAgICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja3Mo
dGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9u
Q2FsbGJhY2tzKHRoaXMpOwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVucmVnaXN0ZXJG
b3JDYWNoZUNhbGxiYWNrSWZOZWVkZWQoKQogewogICAgIGlmICghbmVlZHNDYWNoZUNhbGxiYWNr
KCkpCi0gICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrcyh0aGlz
KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNh
bGxiYWNrcyh0aGlzKTsKIH0KIAogU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OmNvbnN0cmFpblZh
bHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSwgaW50IG1heExlbikgY29uc3QKQEAgLTE1
OTAsNyArMTU5MCw3IEBAIFNlbGVjdGlvbiBIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb24oKSAK
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Q29udHJvbCo+KHJlbmRlcmVyKCkpLT5z
ZWxlY3Rpb24oY2FjaGVkU2VsU3RhcnQsIGNhY2hlZFNlbEVuZCk7CiB9CiAKLXZvaWQgSFRNTElu
cHV0RWxlbWVudDo6ZGlkUmVzdG9yZUZyb21DYWNoZSgpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCkKIHsKICAgICBBU1NFUlQobmVlZHNDYWNoZUNhbGxi
YWNrKCkpOwogICAgIHJlc2V0KCk7CkBAIC0xNjAwLDcgKzE2MDAsNyBAQCB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lCiB7CiAgICAgLy8gQWx3YXlzIHVucmVnaXN0ZXIg
Zm9yIGNhY2hlIGNhbGxiYWNrcyB3aGVuIGxlYXZpbmcgYSBkb2N1bWVudCwgZXZlbiBpZiB3ZSB3
b3VsZCBvdGhlcndpc2UgbGlrZSB0byBiZSByZWdpc3RlcmVkCiAgICAgaWYgKG5lZWRzQ2FjaGVD
YWxsYmFjaygpKQotICAgICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFj
a3ModGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2
YXRpb25DYWxsYmFja3ModGhpcyk7CiAgICAgICAgIAogICAgIGRvY3VtZW50KCktPmNoZWNrZWRS
YWRpb0J1dHRvbnMoKS5yZW1vdmVCdXR0b24odGhpcyk7CiAgICAgCkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgJKHJldmlzaW9uIDM2OTAxKQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBjb25zdHJhaW5WYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0
OwogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3RvcmVGcm9tQ2FjaGUoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVN0cmluZ3MoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKICAgICAK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDM2OTAxKQorKysgV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMiAr
ODMsMTIgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdAogICAgICwg
bV9pblBhZ2VDYWNoZShmYWxzZSkKICAgICAsIG1fcGxheWVyKDApCiB7Ci0gICAgZG9jdW1lbnQo
KS0+cmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrcyh0aGlzKTsKKyAgICBkb2N1bWVudCgpLT5yZWdp
c3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKIH0KIAogSFRNTE1lZGlh
RWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogewotICAgIGRvY3VtZW50KCktPnVucmVnaXN0
ZXJGb3JDYWNoZUNhbGxiYWNrcyh0aGlzKTsKKyAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9y
RG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogfQogCiBib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OmNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0NoaWxkKQpAQCAtOTk4LDggKzk5OCw4IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGF1c2VkSW50ZXJuYWwKICAgICBtX3BhdXNlZElu
dGVybmFsID0gYjsKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKIH0KLSAgICAKLXZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6d2lsbFNhdmVUb0NhY2hlKCkKKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
b2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpCiB7CiAgICAgLy8gMy4xNC45LjQuIExvYWRpbmcg
dGhlIG1lZGlhIHJlc291cmNlCiAgICAgLy8gMTQKQEAgLTEwMjUsNyArMTAyNSw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6d2lsbFNhdmVUb0NhY2hlKCkKICAgICAgICAgcmVuZGVyZXIoKS0+
dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZXN0
b3JlRnJvbUNhY2hlKCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWVB
Y3RpdmUoKQogewogICAgIG1faW5QYWdlQ2FjaGUgPSBmYWxzZTsKICAgICBzZXRQYXVzZWRJbnRl
cm5hbChmYWxzZSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDM2OTAx
KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTMyLDggKzEzMiw4IEBAIHByb3RlY3RlZDoKICAgICBmbG9hdCBnZXRUaW1lT2Zmc2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBmbG9hdCB2YWx1ZU9uRXJyb3IpIGNvbnN0OwogICAg
IHZvaWQgc2V0VGltZU9mZnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgZmxvYXQg
dmFsdWUpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2F2ZVRvQ2FjaGUoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21DYWNoZSgpOworICAgIHZpcnR1YWwgdm9pZCBkb2N1
bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpOworICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJl
Y29tZUFjdGl2ZSgpOwogICAgIAogICAgIHZvaWQgaW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50
QXN5bmMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gMzY5MDEpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NjIsNyArMzY2Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
Om9wZW5lZCgpCiAgICAgICAgIHVwZGF0ZUhpc3RvcnlGb3JDbGllbnRSZWRpcmVjdCgpOwogCiAg
ICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPmlzTG9hZGluZ0Zyb21DYWNoZWRQYWdlKCkpIHsKLSAg
ICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGlkUmVzdG9yZUZyb21DYWNoZSgpOworICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwogICAgICAg
ICAKICAgICAgICAgLy8gRm9yY2UgYSBsYXlvdXQgdG8gdXBkYXRlIHZpZXcgc2l6ZSBhbmQgdGhl
cmVieSB1cGRhdGUgc2Nyb2xsYmFycy4KICAgICAgICAgbV9jbGllbnQtPmZvcmNlTGF5b3V0KCk7
CkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCShyZXZpc2lvbiAzNjkwMSkKKysrIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDggKzE0OCwxMSBAQCBQYWdlOjp+UGFnZSgpCiAgICAgc2V0R3Jv
dXBOYW1lKFN0cmluZygpKTsKICAgICBhbGxQYWdlcy0+cmVtb3ZlKHRoaXMpOwogICAgIAotICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAg
ICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgp
LT5kb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpOwogICAgICAgICBmcmFtZS0+cGFnZURlc3Ry
b3llZCgpOworICAgIH0KICAgICBtX2VkaXRvckNsaWVudC0+cGFnZURlc3Ryb3llZCgpOwogICAg
IGlmIChtX3BhcmVudEluc3BlY3RvckNvbnRyb2xsZXIpCiAgICAgICAgIG1fcGFyZW50SW5zcGVj
dG9yQ29udHJvbGxlci0+cGFnZURlc3Ryb3llZCgpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDM2OTAxKQorKysgV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDEyICs3MSwxMiBAQCBTVkdTVkdFbGVtZW50OjpTVkdTVkdFbGVtZW50
KGNvbnN0IFF1YWxpCiAgICAgLCBtX2NvbnRhaW5lclNpemUoMzAwLCAxNTApCiAgICAgLCBtX2hh
c1NldENvbnRhaW5lclNpemUoZmFsc2UpCiB7Ci0gICAgZG9jLT5yZWdpc3RlckZvckNhY2hlQ2Fs
bGJhY2tzKHRoaXMpOworICAgIGRvYy0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxs
YmFja3ModGhpcyk7CiB9CiAKIFNWR1NWR0VsZW1lbnQ6On5TVkdTVkdFbGVtZW50KCkKIHsKLSAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja3ModGhpcyk7CisgICAgZG9j
dW1lbnQoKS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsK
ICAgICAvLyBUaGVyZSBhcmUgY2FzZXMgd2hlcmUgcmVtb3ZlZEZyb21Eb2N1bWVudCgpIGlzIG5v
dCBjYWxsZWQuCiAgICAgLy8gc2VlIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuLCBj
YWxsZWQgYnkgaXQncyBkZXN0cnVjdG9yLgogICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS0+cmVtb3ZlVGltZUNvbnRhaW5lcih0aGlzKTsKQEAgLTUxOSwxMiArNTE5LDEyIEBA
IHZvaWQgU1ZHU1ZHRWxlbWVudDo6aW5oZXJpdFZpZXdBdHRyaWJ1dGUKICAgICByZW5kZXJlcigp
LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KICAgICAKLXZvaWQgU1ZHU1ZHRWxlbWVudDo6d2ls
bFNhdmVUb0NhY2hlKCkKK3ZvaWQgU1ZHU1ZHRWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5h
Y3RpdmUoKQogewogICAgIHBhdXNlQW5pbWF0aW9ucygpOwogfQogCi12b2lkIFNWR1NWR0VsZW1l
bnQ6OndpbGxSZXN0b3JlRnJvbUNhY2hlKCkKK3ZvaWQgU1ZHU1ZHRWxlbWVudDo6ZG9jdW1lbnRE
aWRCZWNvbWVBY3RpdmUoKQogewogICAgIHVucGF1c2VBbmltYXRpb25zKCk7CiB9CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5oCShyZXZpc2lvbiAzNjkwMSkKKysrIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDggKzE1MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBT
VkdOYW1lczo6c3ZnVGFnU3RyaW5nLCBTVkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nLCBTVkdMZW5n
dGgsIFdpZHRoLCB3aWR0aCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpzdmdUYWdTdHJpbmcsIFNWR05hbWVzOjpoZWlnaHRB
dHRyU3RyaW5nLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCB3aWxsU2F2ZVRvQ2FjaGUoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxSZXN0b3Jl
RnJvbUNhY2hlKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudFdpbGxCZWNvbWVJbmFj
dGl2ZSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsK
IAogICAgICAgICBib29sIG1fdXNlQ3VycmVudFZpZXc7CiAgICAgICAgIFJlZlB0cjxTTUlMVGlt
ZUNvbnRhaW5lcj4gbV90aW1lQ29udGFpbmVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23851</attachid>
            <date>2008-09-26 09:18:20 -0700</date>
            <delta_ts>2008-09-26 09:31:44 -0700</delta_ts>
            <desc>revised patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20853</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjk1NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjIgQEAKKzIwMDgtMDktMjYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkKKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU3MjYzMjU+IEF1ZGlvIGZyb20gPHZpZGVvPiBjYW4gc3RpbGwgYmUgaGVhcmQgYWZ0
ZXIgbmF2aWdhdGluZyAKKyAgICAgICAgYmFjayB0byBwYWdlIHdpdGggPHZpZGVvPiwgdGhlbiBj
bG9zaW5nIHRhYgorCisgICAgICAgIFJlbmFtZSB3aWxsU2F2ZVRvQ2FjaGUvZGlkUmVzdG9yZUZy
b21DYWNoZSBjYWxsYmFja3MgdG8gZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUvCisgICAgICAg
IGRvY3VtZW50RGlkQmVjb21lQWN0aXZlLCBhbmQgcG9zdCBkb2N1bWVudFdpbGxCZWNvbWVJbmFj
dGl2ZSB3aGVuIGEgcGFnZSBpcyBtYXJrZWQgZm9yCisgICAgICAgIGRlbGV0aW9uLgorCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb2N1
bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZG9j
dW1lbnREaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlZ2lz
dGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp1bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAqIGhp
c3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpDYWNo
ZWRQYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50Ojp+SFRNTElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpzZXRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6bmVlZHNBY3RpdmF0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6cmVnaXN0ZXJGb3JBY3RpdmF0aW9uQ2FsbGJhY2tJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1bnJlZ2lzdGVyRm9yQWN0aXZhdGlvbkNhbGxi
YWNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZG9jdW1l
bnREaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3Rp
dmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnREaWRCZWNv
bWVBY3RpdmUpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aW5QYWdlQ2FjaGUpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6b3BlbmVk
KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6flBh
Z2UpOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NWR0VsZW1lbnQ6OlNWR1NWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZH
RWxlbWVudDo6flNWR1NWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVu
dDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZH
RWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAqIHN2Zy9TVkdTVkdF
bGVtZW50Lmg6CisKIDIwMDgtMDktMjYgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBGaXggY29tcGlsYXRpb24gb24gUXQvV2luZG93cwpJbmRleDogV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkocmV2aXNpb24gMzY5NTUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxNDQsMjggKzMxNDQsMjggQEAgdm9pZCBEb2N1bWVudDo6c2V0SW5QYWdl
Q2FjaGUoYm9vbCBmbGFnKQogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudDo6d2lsbFNhdmVUb0Nh
Y2hlKCkgCit2b2lkIERvY3VtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpIAogewot
ICAgIEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX3BhZ2VDYWNoZUNhbGxiYWNr
RWxlbWVudHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PEVsZW1lbnQqPjo6aXRlcmF0b3IgaSA9
IG1fcGFnZUNhY2hlQ2FsbGJhY2tFbGVtZW50cy5iZWdpbigpOyBpICE9IGVuZDsgKytpKQotICAg
ICAgICAoKmkpLT53aWxsU2F2ZVRvQ2FjaGUoKTsKKyAgICBIYXNoU2V0PEVsZW1lbnQqPjo6aXRl
cmF0b3IgZW5kID0gbV9kb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja0VsZW1lbnRzLmVuZCgpOwor
ICAgIGZvciAoSGFzaFNldDxFbGVtZW50Kj46Oml0ZXJhdG9yIGkgPSBtX2RvY3VtZW50QWN0aXZh
dGlvbkNhbGxiYWNrRWxlbWVudHMuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKKyAgICAgICAgKCpp
KS0+ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGlk
UmVzdG9yZUZyb21DYWNoZSgpIAordm9pZCBEb2N1bWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3Rp
dmUoKSAKIHsKLSAgICBIYXNoU2V0PEVsZW1lbnQqPjo6aXRlcmF0b3IgZW5kID0gbV9wYWdlQ2Fj
aGVDYWxsYmFja0VsZW1lbnRzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxFbGVtZW50Kj46Oml0
ZXJhdG9yIGkgPSBtX3BhZ2VDYWNoZUNhbGxiYWNrRWxlbWVudHMuYmVnaW4oKTsgaSAhPSBlbmQ7
ICsraSkKLSAgICAgICAgKCppKS0+ZGlkUmVzdG9yZUZyb21DYWNoZSgpOworICAgIEhhc2hTZXQ8
RWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX2RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrRWxl
bWVudHMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PEVsZW1lbnQqPjo6aXRlcmF0b3IgaSA9IG1f
ZG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tFbGVtZW50cy5iZWdpbigpOyBpICE9IGVuZDsgKytp
KQorICAgICAgICAoKmkpLT5kb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwogfQogCi12b2lkIERv
Y3VtZW50OjpyZWdpc3RlckZvckNhY2hlQ2FsbGJhY2tzKEVsZW1lbnQqIGUpCit2b2lkIERvY3Vt
ZW50OjpyZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyhFbGVtZW50KiBlKQog
ewotICAgIG1fcGFnZUNhY2hlQ2FsbGJhY2tFbGVtZW50cy5hZGQoZSk7CisgICAgbV9kb2N1bWVu
dEFjdGl2YXRpb25DYWxsYmFja0VsZW1lbnRzLmFkZChlKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6
dW5yZWdpc3RlckZvckNhY2hlQ2FsbGJhY2tzKEVsZW1lbnQqIGUpCit2b2lkIERvY3VtZW50Ojp1
bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKEVsZW1lbnQqIGUpCiB7Ci0g
ICAgbV9wYWdlQ2FjaGVDYWxsYmFja0VsZW1lbnRzLnJlbW92ZShlKTsKKyAgICBtX2RvY3VtZW50
QWN0aXZhdGlvbkNhbGxiYWNrRWxlbWVudHMucmVtb3ZlKGUpOwogfQogCiB2b2lkIERvY3VtZW50
OjpzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoYm9vbCBmKQpJbmRleDogV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAz
Njk1NSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkzMywx
MiArOTMzLDEyIEBAIHB1YmxpYzoKICAgICBib29sIGluUGFnZUNhY2hlKCk7CiAgICAgdm9pZCBz
ZXRJblBhZ2VDYWNoZShib29sIGZsYWcpOwogICAgIAotICAgIC8vIEVsZW1lbnRzIGNhbiByZWdp
c3RlciB0aGVtc2VsdmVzIGZvciB0aGUgIndpbGxTYXZlVG9DYWNoZSgpIiBhbmQgIAotICAgIC8v
ICJkaWRSZXN0b3JlRnJvbUNhY2hlKCkiIGNhbGxiYWNrcwotICAgIHZvaWQgcmVnaXN0ZXJGb3JD
YWNoZUNhbGxiYWNrcyhFbGVtZW50Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRm9yQ2FjaGVDYWxs
YmFja3MoRWxlbWVudCopOwotICAgIHZvaWQgd2lsbFNhdmVUb0NhY2hlKCk7Ci0gICAgdm9pZCBk
aWRSZXN0b3JlRnJvbUNhY2hlKCk7CisgICAgLy8gRWxlbWVudHMgY2FuIHJlZ2lzdGVyIHRoZW1z
ZWx2ZXMgZm9yIHRoZSAiZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKSIgYW5kICAKKyAgICAv
LyAiZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKSIgY2FsbGJhY2tzCisgICAgdm9pZCByZWdpc3Rl
ckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyhFbGVtZW50Kik7CisgICAgdm9pZCB1bnJl
Z2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKEVsZW1lbnQqKTsKKyAgICB2b2lk
IGRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCk7CisgICAgdm9pZCBkb2N1bWVudERpZEJlY29t
ZUFjdGl2ZSgpOwogCiAgICAgdm9pZCBzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoYm9vbCk7CiAg
ICAgYm9vbCBzaG91bGRDcmVhdGVSZW5kZXJlcnMoKTsKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2luUGFnZUNhY2hlOwogICAgIFN0cmluZyBtX2ljb25VUkw7CiAg
ICAgCi0gICAgSGFzaFNldDxFbGVtZW50Kj4gbV9wYWdlQ2FjaGVDYWxsYmFja0VsZW1lbnRzOwor
ICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fZG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tFbGVtZW50
czsKIAogICAgIGJvb2wgbV91c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZTsKIApJbmRl
eDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1l
bnQuaAkocmV2aXNpb24gMzY5NTUpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MSw5ICsxODEsOSBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBtaW5pbXVtU2l6
ZUZvclJlc2l6aW5nKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNaW5pbXVtU2l6ZUZvclJlc2l6aW5n
KGNvbnN0IEludFNpemUmKTsKIAotICAgIC8vIFVzZSBEb2N1bWVudDo6cmVnaXN0ZXJGb3JQYWdl
Q2FjaGVDYWxsYmFja3MoKSB0byBzdWJzY3JpYmUgdGhlc2UKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNhdmVUb0NhY2hlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3RvcmVGcm9tQ2FjaGUo
KSB7IH0KKyAgICAvLyBVc2UgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9u
Q2FsbGJhY2tzKCkgdG8gc3Vic2NyaWJlIHRoZXNlCisgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50
V2lsbEJlY29tZUluYWN0aXZlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RGlkQmVj
b21lQWN0aXZlKCkgeyB9CiAgICAgCiAgICAgYm9vbCBpc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVu
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZDsgfQogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9D
YWNoZWRQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5j
cHAJKHJldmlzaW9uIDM2OTU1KQorKysgV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIENhY2hlZFBhZ2U6OkNhY2hlZFBhZ2UoUGFn
ZSogcGFnZSkKICAgICBjYWNoZWRQYWdlQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgogICAg
IAotICAgIG1fZG9jdW1lbnQtPndpbGxTYXZlVG9DYWNoZSgpOyAKKyAgICBtX2RvY3VtZW50LT5k
b2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpOyAKICAgICAKICAgICBGcmFtZSogbWFpbkZyYW1l
ID0gcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgbWFpbkZyYW1lLT5jbGVhclRpbWVycygpOwpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDM2OTU1KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAg
SFRNTEZvcm1FbGVtZW50OjpIVE1MRm9ybUVsZW1lbnQoRG9jdW1lbgogSFRNTEZvcm1FbGVtZW50
Ojp+SFRNTEZvcm1FbGVtZW50KCkKIHsKICAgICBpZiAoIW1fYXV0b2NvbXBsZXRlKQotICAgICAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja3ModGhpcyk7CisgICAgICAg
IGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhp
cyk7CiAKICAgICBkZWxldGUgbV9lbGVtZW50QWxpYXNlczsKICAgICBkZWxldGUgY29sbGVjdGlv
bkluZm87CkBAIC01NTcsOSArNTU3LDkgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGF1dG9jb21wbGV0ZUF0
dHIpIHsKICAgICAgICAgbV9hdXRvY29tcGxldGUgPSAhZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+
dmFsdWUoKSwgIm9mZiIpOwogICAgICAgICBpZiAoIW1fYXV0b2NvbXBsZXRlKQotICAgICAgICAg
ICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrcyh0aGlzKTsgICAgCisgICAg
ICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNr
cyh0aGlzKTsgICAgCiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRvY3VtZW50KCktPnVucmVn
aXN0ZXJGb3JDYWNoZUNhbGxiYWNrcyh0aGlzKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCktPnVu
cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7CiAgICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gb25zdWJtaXRBdHRyKQogICAgICAgICBzZXRFdmVudExpc3Rl
bmVyRm9yVHlwZUFuZEF0dHJpYnV0ZShzdWJtaXRFdmVudCwgYXR0cik7CiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IG9ucmVzZXRBdHRyKQpAQCAtNzMzLDcgKzczMyw3IEBAIHZvaWQgSFRN
TEZvcm1FbGVtZW50OjpnZXROYW1lZEVsZW1lbnRzKGMKICAgICAgICAgYWRkRWxlbWVudEFsaWFz
KHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihuYW1lZEl0ZW1zLmZpcnN0KCku
Z2V0KCkpLCBuYW1lKTsgICAgICAgIAogfQogCi12b2lkIEhUTUxGb3JtRWxlbWVudDo6ZGlkUmVz
dG9yZUZyb21DYWNoZSgpCit2b2lkIEhUTUxGb3JtRWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWVB
Y3RpdmUoKQogewogICAgIEFTU0VSVCghbV9hdXRvY29tcGxldGUpOwogICAgIApAQCAtNzQ0LDEz
ICs3NDQsMTMgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRpZFJlc3RvcmVGcm9tQ2FjaAogdm9p
ZCBIVE1MRm9ybUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKIHsKICAgICBp
ZiAoIW1fYXV0b2NvbXBsZXRlKQotICAgICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yQ2Fj
aGVDYWxsYmFja3ModGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1
bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50
OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKIHsKICAgICBpZihtX2F1dG9jb21wbGV0ZSkK
LSAgICAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrcyh0aGlzKTsKKyAg
ICAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3Mo
dGhpcyk7CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpDaGVja2VkUmFkaW9CdXR0b25zOjph
ZGRCdXR0b24oSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudCkKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmgJKHJldmlzaW9uIDM2OTU1KQorKysgV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIAog
ICAgIENoZWNrZWRSYWRpb0J1dHRvbnMmIGNoZWNrZWRSYWRpb0J1dHRvbnMoKSB7IHJldHVybiBt
X2NoZWNrZWRSYWRpb0J1dHRvbnM7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9y
ZUZyb21DYWNoZSgpOworICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNjk1NSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM5LDggKzEzOSw4IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6aW5pdCgpCiAKIEhUTUxJbnB1
dEVsZW1lbnQ6On5IVE1MSW5wdXRFbGVtZW50KCkKIHsKLSAgICBpZiAobmVlZHNDYWNoZUNhbGxi
YWNrKCkpCi0gICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrcyh0
aGlzKTsKKyAgICBpZiAobmVlZHNBY3RpdmF0aW9uQ2FsbGJhY2soKSkKKyAgICAgICAgZG9jdW1l
bnQoKS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKIAog
ICAgIGRvY3VtZW50KCktPmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5yZW1vdmVCdXR0b24odGhpcyk7
CiAKQEAgLTMzNyw5ICszMzcsOSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldElucHV0VHlw
ZShjb25zCiAgICAgICAgICAgICAgICAgcmVjaGVja1ZhbHVlKCk7CiAKICAgICAgICAgICAgIGlm
ICh3YXNQYXNzd29yZEZpZWxkICYmICFpc1Bhc3N3b3JkRmllbGQpCi0gICAgICAgICAgICAgICAg
dW5yZWdpc3RlckZvckNhY2hlQ2FsbGJhY2tJZk5lZWRlZCgpOworICAgICAgICAgICAgICAgIHVu
cmVnaXN0ZXJGb3JBY3RpdmF0aW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogICAgICAgICAgICAgZWxz
ZSBpZiAoIXdhc1Bhc3N3b3JkRmllbGQgJiYgaXNQYXNzd29yZEZpZWxkKQotICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja0lmTmVlZGVkKCk7CisgICAgICAgICAgICAgICAg
cmVnaXN0ZXJGb3JBY3RpdmF0aW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogCiAgICAgICAgICAgICBp
ZiAoZGlkUmVzcGVjdEhlaWdodEFuZFdpZHRoICE9IHdpbGxSZXNwZWN0SGVpZ2h0QW5kV2lkdGgp
IHsKICAgICAgICAgICAgICAgICBOYW1lZE1hcHBlZEF0dHJNYXAqIG1hcCA9IG1hcHBlZEF0dHJp
YnV0ZXMoKTsKQEAgLTYwNSwxMCArNjA1LDEwIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWIKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhdXRvY29tcGxl
dGVBdHRyKSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAi
b2ZmIikpIHsKICAgICAgICAgICAgIG1fYXV0b2NvbXBsZXRlID0gT2ZmOwotICAgICAgICAgICAg
cmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrSWZOZWVkZWQoKTsKKyAgICAgICAgICAgIHJlZ2lzdGVy
Rm9yQWN0aXZhdGlvbkNhbGxiYWNrSWZOZWVkZWQoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGlmIChtX2F1dG9jb21wbGV0ZSA9PSBPZmYpCi0gICAgICAgICAgICAgICAgdW5yZWdp
c3RlckZvckNhY2hlQ2FsbGJhY2tJZk5lZWRlZCgpOworICAgICAgICAgICAgICAgIHVucmVnaXN0
ZXJGb3JBY3RpdmF0aW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogICAgICAgICAgICAgaWYgKGF0dHIt
PmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBtX2F1dG9jb21wbGV0ZSA9IFVuaW5pdGlhbGl6
ZWQ7CiAgICAgICAgICAgICBlbHNlCkBAIC0xNTMzLDIxICsxNTMzLDIxIEBAIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6cmVjaGVja1ZhbHVlKCkKICAgICAgICAgc2V0VmFsdWUobmV3VmFsdWUpOwog
fQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6Om5lZWRzQ2FjaGVDYWxsYmFjaygpCitib29sIEhU
TUxJbnB1dEVsZW1lbnQ6Om5lZWRzQWN0aXZhdGlvbkNhbGxiYWNrKCkKIHsKICAgICByZXR1cm4g
aW5wdXRUeXBlKCkgPT0gUEFTU1dPUkQgfHwgbV9hdXRvY29tcGxldGUgPT0gT2ZmOwogfQogCi12
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja0lmTmVlZGVkKCkK
K3ZvaWQgSFRNTElucHV0RWxlbWVudDo6cmVnaXN0ZXJGb3JBY3RpdmF0aW9uQ2FsbGJhY2tJZk5l
ZWRlZCgpCiB7Ci0gICAgaWYgKG5lZWRzQ2FjaGVDYWxsYmFjaygpKQotICAgICAgICBkb2N1bWVu
dCgpLT5yZWdpc3RlckZvckNhY2hlQ2FsbGJhY2tzKHRoaXMpOworICAgIGlmIChuZWVkc0FjdGl2
YXRpb25DYWxsYmFjaygpKQorICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvckRvY3VtZW50
QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1
bnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja0lmTmVlZGVkKCkKK3ZvaWQgSFRNTElucHV0RWxlbWVu
dDo6dW5yZWdpc3RlckZvckFjdGl2YXRpb25DYWxsYmFja0lmTmVlZGVkKCkKIHsKLSAgICBpZiAo
IW5lZWRzQ2FjaGVDYWxsYmFjaygpKQotICAgICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9y
Q2FjaGVDYWxsYmFja3ModGhpcyk7CisgICAgaWYgKCFuZWVkc0FjdGl2YXRpb25DYWxsYmFjaygp
KQorICAgICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2Fs
bGJhY2tzKHRoaXMpOwogfQogCiBTdHJpbmcgSFRNTElucHV0RWxlbWVudDo6Y29uc3RyYWluVmFs
dWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlLCBpbnQgbWF4TGVuKSBjb25zdApAQCAtMTU5
MCwxNyArMTU5MCwxNyBAQCBTZWxlY3Rpb24gSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uKCkg
CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dENvbnRyb2wqPihyZW5kZXJlcigpKS0+
c2VsZWN0aW9uKGNhY2hlZFNlbFN0YXJ0LCBjYWNoZWRTZWxFbmQpOwogfQogCi12b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmRpZFJlc3RvcmVGcm9tQ2FjaGUoKQordm9pZCBIVE1MSW5wdXRFbGVtZW50
Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpCiB7Ci0gICAgQVNTRVJUKG5lZWRzQ2FjaGVDYWxs
YmFjaygpKTsKKyAgICBBU1NFUlQobmVlZHNBY3RpdmF0aW9uQ2FsbGJhY2soKSk7CiAgICAgcmVz
ZXQoKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpCiB7CiAgICAgLy8gQWx3YXlzIHVucmVnaXN0ZXIgZm9yIGNhY2hlIGNhbGxiYWNrcyB3
aGVuIGxlYXZpbmcgYSBkb2N1bWVudCwgZXZlbiBpZiB3ZSB3b3VsZCBvdGhlcndpc2UgbGlrZSB0
byBiZSByZWdpc3RlcmVkCi0gICAgaWYgKG5lZWRzQ2FjaGVDYWxsYmFjaygpKQotICAgICAgICBk
b2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja3ModGhpcyk7CisgICAgaWYgKG5l
ZWRzQWN0aXZhdGlvbkNhbGxiYWNrKCkpCisgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJG
b3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7CiAgICAgICAgIAogICAgIGRvY3Vt
ZW50KCktPmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5yZW1vdmVCdXR0b24odGhpcyk7CiAgICAgCkBA
IC0xNjA5LDcgKzE2MDksNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdP
d25lCiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
CiB7Ci0gICAgcmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrSWZOZWVkZWQoKTsKKyAgICByZWdpc3Rl
ckZvckFjdGl2YXRpb25DYWxsYmFja0lmTmVlZGVkKCk7CiAgICAgICAgIAogICAgIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIH0K
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkocmV2aXNpb24gMzY5NTUpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDcg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIGNvbnN0cmFpblZhbHVlKGNvbnN0IFN0cmluZyYgcHJv
cG9zZWRWYWx1ZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21DYWNo
ZSgpOworICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwogCiAgICAg
dmlydHVhbCB2b2lkIGdldFN1YnJlc291cmNlQXR0cmlidXRlU3RyaW5ncyhWZWN0b3I8U3RyaW5n
PiYpIGNvbnN0OwogICAgIApAQCAtMjE2LDkgKzIxNiw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IGNvbnN0cmFpblZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSwgaW50IG1heExlbikg
Y29uc3Q7CiAgICAgdm9pZCByZWNoZWNrVmFsdWUoKTsKICAgICAKLSAgICBib29sIG5lZWRzQ2Fj
aGVDYWxsYmFjaygpOwotICAgIHZvaWQgcmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrSWZOZWVkZWQo
KTsKLSAgICB2b2lkIHVucmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrSWZOZWVkZWQoKTsKKyAgICBi
b29sIG5lZWRzQWN0aXZhdGlvbkNhbGxiYWNrKCk7CisgICAgdm9pZCByZWdpc3RlckZvckFjdGl2
YXRpb25DYWxsYmFja0lmTmVlZGVkKCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyRm9yQWN0aXZhdGlv
bkNhbGxiYWNrSWZOZWVkZWQoKTsKIAogICAgIFN0cmluZyBtX3ZhbHVlOwogICAgIFN0cmluZyBt
X29yaWdpbmFsVmFsdWU7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lv
biAzNjk1NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsMTUgKzgwLDE1IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1l
bnQoY29uc3QKICAgICAsIG1fbG9hZE5lc3RpbmdMZXZlbCgwKQogICAgICwgbV90ZXJtaW5hdGVM
b2FkQmVsb3dOZXN0aW5nTGV2ZWwoMCkKICAgICAsIG1fcGF1c2VkSW50ZXJuYWwoZmFsc2UpCi0g
ICAgLCBtX2luUGFnZUNhY2hlKGZhbHNlKQorICAgICwgbV9pbkFjdGl2ZURvY3VtZW50KHRydWUp
CiAgICAgLCBtX3BsYXllcigwKQogewotICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yQ2FjaGVD
YWxsYmFja3ModGhpcyk7CisgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2
YXRpb25DYWxsYmFja3ModGhpcyk7CiB9CiAKIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KCkKIHsKLSAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yQ2FjaGVDYWxsYmFja3Mo
dGhpcyk7CisgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNh
bGxiYWNrcyh0aGlzKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjaGVja0RURChjb25z
dCBOb2RlKiBuZXdDaGlsZCkKQEAgLTk5OCw4ICs5OTgsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldFBhdXNlZEludGVybmFsCiAgICAgbV9wYXVzZWRJbnRlcm5hbCA9IGI7CiAgICAgdXBk
YXRlUGxheVN0YXRlKCk7CiB9Ci0gICAgCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxTYXZl
VG9DYWNoZSgpCisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5h
Y3RpdmUoKQogewogICAgIC8vIDMuMTQuOS40LiBMb2FkaW5nIHRoZSBtZWRpYSByZXNvdXJjZQog
ICAgIC8vIDE0CkBAIC0xMDE3LDcgKzEwMTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Ondp
bGxTYXZlVG9DYWNoZSgpCiAgICAgICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShlbXB0aWVk
RXZlbnQsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgfQogICAgIH0KLSAgICBtX2luUGFnZUNhY2hl
ID0gdHJ1ZTsKKyAgICBtX2luQWN0aXZlRG9jdW1lbnQgPSBmYWxzZTsKICAgICAvLyBTdG9wIHRo
ZSBwbGF5YmFjayB3aXRob3V0IGdlbmVyYXRpbmcgZXZlbnRzCiAgICAgc2V0UGF1c2VkSW50ZXJu
YWwodHJ1ZSk7CiAKQEAgLTEwMjUsOSArMTAyNSw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2lsbFNhdmVUb0NhY2hlKCkKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQo
KTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZXN0b3JlRnJvbUNhY2hlKCkKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKQogewotICAgIG1f
aW5QYWdlQ2FjaGUgPSBmYWxzZTsKKyAgICBtX2luQWN0aXZlRG9jdW1lbnQgPSB0cnVlOwogICAg
IHNldFBhdXNlZEludGVybmFsKGZhbHNlKTsKIAogICAgIGlmIChtX2Vycm9yICYmIG1fZXJyb3It
PmNvZGUoKSA9PSBNZWRpYUVycm9yOjpNRURJQV9FUlJfQUJPUlRFRCkgewpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAzNjk1NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IC8vIFBhdXNlcyBwbGF5YmFjayB3aXRob3V0IGNoYW5naW5nIGFueSBzdGF0ZXMgb3IgZ2VuZXJh
dGluZyBldmVudHMKICAgICB2b2lkIHNldFBhdXNlZEludGVybmFsKGJvb2wpOwogICAgIAotICAg
IGJvb2wgaW5QYWdlQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2luUGFnZUNhY2hlOyB9CisgICAg
Ym9vbCBpblBhZ2VDYWNoZSgpIGNvbnN0IHsgcmV0dXJuICFtX2luQWN0aXZlRG9jdW1lbnQ7IH0K
ICAgICAKIC8vIERPTSBBUEkKIC8vIGVycm9yIHN0YXRlCkBAIC0xMzIsOCArMTMyLDggQEAgcHJv
dGVjdGVkOgogICAgIGZsb2F0IGdldFRpbWVPZmZzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGZsb2F0IHZhbHVlT25FcnJvcikgY29uc3Q7CiAgICAgdm9pZCBzZXRUaW1lT2Zmc2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBmbG9hdCB2YWx1ZSk7CiAgICAgCi0gICAg
dmlydHVhbCB2b2lkIHdpbGxTYXZlVG9DYWNoZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0
b3JlRnJvbUNhY2hlKCk7CisgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50V2lsbEJlY29tZUluYWN0
aXZlKCk7CisgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCk7CiAgICAg
CiAgICAgdm9pZCBpbml0QW5kRGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnROYW1lKTsKICAgICB2b2lkIGRpc3BhdGNoRXZlbnRBc3luYyhjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50TmFtZSk7CkBAIC0xOTksNyArMTk5LDcgQEAgcHJvdGVjdGVkOgogICAgIHVu
c2lnbmVkIG1fdGVybWluYXRlTG9hZEJlbG93TmVzdGluZ0xldmVsOwogICAgIAogICAgIGJvb2wg
bV9wYXVzZWRJbnRlcm5hbDsKLSAgICBib29sIG1faW5QYWdlQ2FjaGU7CisgICAgYm9vbCBtX2lu
QWN0aXZlRG9jdW1lbnQ7CiAKICAgICBPd25QdHI8TWVkaWFQbGF5ZXI+IG1fcGxheWVyOwogfTsK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDM2OTU1KQorKysgV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYyLDcgKzM2NjIsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuZWQoKQogICAgICAgICB1cGRhdGVIaXN0b3J5Rm9yQ2xp
ZW50UmVkaXJlY3QoKTsKIAogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyLT5pc0xvYWRpbmdGcm9t
Q2FjaGVkUGFnZSgpKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRpZFJlc3RvcmVG
cm9tQ2FjaGUoKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnREaWRCZWNv
bWVBY3RpdmUoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZvcmNlIGEgbGF5b3V0IHRvIHVwZGF0
ZSB2aWV3IHNpemUgYW5kIHRoZXJlYnkgdXBkYXRlIHNjcm9sbGJhcnMuCiAgICAgICAgIG1fY2xp
ZW50LT5mb3JjZUxheW91dCgpOwpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMzY5NTUpCisrKyBXZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw4ICsxNDgsMTEgQEAgUGFnZTo6
flBhZ2UoKQogICAgIHNldEdyb3VwTmFtZShTdHJpbmcoKSk7CiAgICAgYWxsUGFnZXMtPnJlbW92
ZSh0aGlzKTsKICAgICAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2
ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKTsKICAgICAg
ICAgZnJhbWUtPnBhZ2VEZXN0cm95ZWQoKTsKKyAgICB9CiAgICAgbV9lZGl0b3JDbGllbnQtPnBh
Z2VEZXN0cm95ZWQoKTsKICAgICBpZiAobV9wYXJlbnRJbnNwZWN0b3JDb250cm9sbGVyKQogICAg
ICAgICBtX3BhcmVudEluc3BlY3RvckNvbnRyb2xsZXItPnBhZ2VEZXN0cm95ZWQoKTsKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAzNjk1NSkKKysrIFdlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxMiArNzEsMTIgQEAgU1ZHU1ZHRWxl
bWVudDo6U1ZHU1ZHRWxlbWVudChjb25zdCBRdWFsaQogICAgICwgbV9jb250YWluZXJTaXplKDMw
MCwgMTUwKQogICAgICwgbV9oYXNTZXRDb250YWluZXJTaXplKGZhbHNlKQogewotICAgIGRvYy0+
cmVnaXN0ZXJGb3JDYWNoZUNhbGxiYWNrcyh0aGlzKTsKKyAgICBkb2MtPnJlZ2lzdGVyRm9yRG9j
dW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogfQogCiBTVkdTVkdFbGVtZW50Ojp+U1ZH
U1ZHRWxlbWVudCgpCiB7Ci0gICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckNhY2hlQ2FsbGJh
Y2tzKHRoaXMpOworICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRp
b25DYWxsYmFja3ModGhpcyk7CiAgICAgLy8gVGhlcmUgYXJlIGNhc2VzIHdoZXJlIHJlbW92ZWRG
cm9tRG9jdW1lbnQoKSBpcyBub3QgY2FsbGVkLgogICAgIC8vIHNlZSBDb250YWluZXJOb2RlOjpy
ZW1vdmVBbGxDaGlsZHJlbiwgY2FsbGVkIGJ5IGl0J3MgZGVzdHJ1Y3Rvci4KICAgICBkb2N1bWVu
dCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZVRpbWVDb250YWluZXIodGhpcyk7CkBA
IC01MTksMTIgKzUxOSwxMiBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OmluaGVyaXRWaWV3QXR0cmli
dXRlCiAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAgICAgCi12b2lk
IFNWR1NWR0VsZW1lbnQ6OndpbGxTYXZlVG9DYWNoZSgpCit2b2lkIFNWR1NWR0VsZW1lbnQ6OmRv
Y3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCkKIHsKICAgICBwYXVzZUFuaW1hdGlvbnMoKTsKIH0K
IAotdm9pZCBTVkdTVkdFbGVtZW50Ojp3aWxsUmVzdG9yZUZyb21DYWNoZSgpCit2b2lkIFNWR1NW
R0VsZW1lbnQ6OmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCkKIHsKICAgICB1bnBhdXNlQW5pbWF0
aW9ucygpOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMzY5NTUpCisrKyBXZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw4ICsxNTAsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnN2Z1RhZ1N0cmluZywgU1ZHTmFtZXM6OndpZHRo
QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCiAgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6c3ZnVGFnU3RyaW5n
LCBTVkdOYW1lczo6aGVpZ2h0QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkK
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNhdmVUb0NhY2hlKCk7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCB3aWxsUmVzdG9yZUZyb21DYWNoZSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZG9j
dW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50
RGlkQmVjb21lQWN0aXZlKCk7CiAKICAgICAgICAgYm9vbCBtX3VzZUN1cnJlbnRWaWV3OwogICAg
ICAgICBSZWZQdHI8U01JTFRpbWVDb250YWluZXI+IG1fdGltZUNvbnRhaW5lcjsK
</data>
<flag name="review"
          id="10743"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>