<?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>5812</bug_id>
          
          <creation_ts>2005-11-23 11:30:49 -0800</creation_ts>
          <short_desc>Generate load events for &lt;script&gt; elements</short_desc>
          <delta_ts>2006-01-17 22:02:13 -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>DOM</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>4403</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>jesse</cc>
    
    <cc>kip</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>24468</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2005-11-23 11:30:49 -0800</bug_when>
    <thetext>(This was split off from bug 4403). Script elements should generate a load event when they&apos;re finished 
loading.

Question: should this apply only to dynamically-loaded scripts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24870</commentid>
    <comment_count>1</comment_count>
    <who name="">webkit</who>
    <bug_when>2005-11-29 08:15:02 -0800</bug_when>
    <thetext>I&apos;m not sure about other elements, but I thing the onload event should be fired 
for every kind of resource that is loaded from outside the page (scripts, css, 
images, embedded, etc...)

For scripts, on bug 4403, it was proposed to add a simple &quot;dispatchHTMLEvent
(loadEvent, false, false);&quot; as the last call 
at &quot;HTMLScriptElementImpl::notifyFinished&quot; to fix this problem. Would it be the 
right way?

Also, an important thing to note... the &quot;onload&quot; event (for scripts) must be 
fired when the script file has been loaded (even from the cache) AND evaluated, 
so it is really available to be used. And if the file is not found, 
the &quot;onerror&quot; should be fired instead. Is that right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24880</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2005-11-29 12:13:59 -0800</bug_when>
    <thetext>(In reply to comment #1)

&gt; For scripts, on bug 4403, it was proposed to add a simple &quot;dispatchHTMLEvent
&gt; (loadEvent, false, false);&quot; as the last call 
&gt; at &quot;HTMLScriptElementImpl::notifyFinished&quot; to fix this problem. Would it be the 
&gt; right way?

That change was incomplete (not pertaining to script elements created by the parser) and incorrect (the 
load event was emitted even when an prevented loading or parsing, instead of the error event, which 
may explain the behavior you reported in the comment on the other bug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26079</commentid>
    <comment_count>3</comment_count>
      <attachid>5123</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-17 13:16:19 -0800</bug_when>
    <thetext>Created attachment 5123
minimalistic patch

I haven&apos;t tested this thoroughly yet, but I&apos;m posting it in case FredCK or
others would like to give it a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26410</commentid>
    <comment_count>4</comment_count>
      <attachid>5237</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-23 01:35:23 -0800</bug_when>
    <thetext>Created attachment 5237
Dispatch load and error events for script elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26411</commentid>
    <comment_count>5</comment_count>
      <attachid>5238</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-23 01:36:14 -0800</bug_when>
    <thetext>Created attachment 5238
Dispatch load and error events for script elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26437</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2005-12-23 10:47:28 -0800</bug_when>
    <thetext>This patch looks good to me, but I&apos;d like someone with more experience in this code to take a look.

FYI, Safari doesn&apos;t seem to know what to do with the linked patch, so you have to hit &quot;view source&quot; to see 
it.

What happens with a script source of &quot;&quot;? Does that just generate a load error?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26438</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2005-12-23 11:22:17 -0800</bug_when>
    <thetext>(In reply to comment #6)

&gt; FYI, Safari doesn&apos;t seem to know what to do with the linked patch, so you have to hit &quot;view source&quot; to 
see 
&gt; it.

Hmm... I can&apos;t reproduce this in TOT.

&gt; What happens with a script source of &quot;&quot;? Does that just generate a load error?

Not sure what you mean by a &quot;load error&quot;. It generates a load event. Firefox behaves the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26442</commentid>
    <comment_count>8</comment_count>
      <attachid>5252</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-23 13:16:50 -0800</bug_when>
    <thetext>Created attachment 5252
Dispatch load and error events for script elements

Oops, shouldn&apos;t have let the node get deleted during script execution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26617</commentid>
    <comment_count>9</comment_count>
      <attachid>5252</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-25 08:00:18 -0800</bug_when>
    <thetext>Comment on attachment 5252
Dispatch load and error events for script elements

This looks great. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28789</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2006-01-17 22:02:13 -0800</bug_when>
    <thetext>*** Bug 6640 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5123</attachid>
            <date>2005-12-17 13:16:19 -0800</date>
            <delta_ts>2005-12-23 01:35:23 -0800</delta_ts>
            <desc>minimalistic patch</desc>
            <filename>5812_r1.patch</filename>
            <type>text/plain</type>
            <size>11797</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX2hlYWRpbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfaGVhZGltcGwuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjYzCmRpZmYgLXAgLXUgLXIxLjYzIFdlYkNvcmUva2h0bWwv
aHRtbC9odG1sX2hlYWRpbXBsLmNwcAotLS0gV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfaGVhZGlt
cGwuY3BwCTE2IERlYyAyMDA1IDA4OjA4OjE3IC0wMDAwCTEuNjMKKysrIFdlYkNvcmUva2h0bWwv
aHRtbC9odG1sX2hlYWRpbXBsLmNwcAkxNyBEZWMgMjAwNSAyMDoyMDoxMiAtMDAwMApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiaHRtbC9odG1sX2RvY3VtZW50aW1wbC5oIgogI2luY2x1
ZGUgInhtbC9kb21fdGV4dGltcGwuaCIKKyNpbmNsdWRlICJ4bWwvRXZlbnROYW1lcy5oIgogCiAj
aW5jbHVkZSAia2h0bWx2aWV3LmgiCiAjaW5jbHVkZSAia2h0bWxfcGFydC5oIgpAQCAtNDUsNiAr
NDYsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgRE9NOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKK3VzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIGtodG1sOwog
CiBIVE1MQmFzZUVsZW1lbnRJbXBsOjpIVE1MQmFzZUVsZW1lbnRJbXBsKERvY3VtZW50SW1wbCAq
ZG9jKQpAQCAtNTA3LDcgKzUwOSw4IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnRJbXBsOjpjaGls
ZHJlbkNoYW4KIAogdm9pZCBIVE1MU2NyaXB0RWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZUltcGwgKmF0dHIpCiB7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9
PSBzcmNBdHRyKSB7CisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBhdHRyLT5u
YW1lKCk7CisgICAgaWYgKGF0dHJOYW1lID09IHNyY0F0dHIpIHsKICAgICAgICAgaWYgKG1fZXZh
bHVhdGVkIHx8IG1fY2FjaGVkU2NyaXB0IHx8IG1fY3JlYXRlZEJ5UGFyc2VyIHx8ICFpbkRvY3Vt
ZW50KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTUyMiw2ICs1MjUsMTAgQEAgdm9pZCBI
VE1MU2NyaXB0RWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQQogICAgICAgICAgICAgbV9jYWNoZWRT
Y3JpcHQgPSBnZXREb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdCh1cmwsIGNo
YXJzZXQpOwogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHQtPnJlZih0aGlzKTsKICAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25lcnJvckF0dHIpIHsKKyAgICAgICAgc2V0
SFRNTEV2ZW50TGlzdGVuZXIoZXJyb3JFdmVudCwgYXR0cik7CisgICAgfSBlbHNlIGlmIChhdHRy
TmFtZSA9PSBvbmxvYWRBdHRyKSB7CisgICAgICAgIHNldEhUTUxFdmVudExpc3RlbmVyKGxvYWRF
dmVudCwgYXR0cik7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50SW1wbDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkBAIC01MzIsNiArNTM5LDcgQEAgdm9pZCBIVE1MU2Ny
aXB0RWxlbWVudEltcGw6OmNsb3NlUmVuZGVyZQogICAgIC8vIGFsbG93IGR5bmFtaWMgbG9hZGlu
ZyBsYXRlci4KICAgICBpZiAoZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSAmJiB0ZXh0
KCkuaXNFbXB0eSgpKQogICAgICAgICBzZXRDcmVhdGVkQnlQYXJzZXIoZmFsc2UpOworICAgIEhU
TUxFbGVtZW50SW1wbDo6Y2xvc2VSZW5kZXJlcigpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVt
ZW50SW1wbDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQpAQCAtNTgxLDcgKzU4OSwxMiBAQCB2b2lk
IEhUTUxTY3JpcHRFbGVtZW50SW1wbDo6bm90aWZ5RmluaXNoCiAKICAgICBhc3NlcnQoY3MgPT0g
bV9jYWNoZWRTY3JpcHQpOwogCi0gICAgZXZhbHVhdGVTY3JpcHQoY3MtPnVybCgpLCBjcy0+c2Ny
aXB0KCkpOworICAgIGlmIChjcy0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICBkaXNwYXRjaEhU
TUxFdmVudChlcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgIGVsc2UgeworICAgICAgICBl
dmFsdWF0ZVNjcmlwdChjcy0+dXJsKCksIGNzLT5zY3JpcHQoKSk7CisgICAgICAgIGRpc3BhdGNo
SFRNTEV2ZW50KGxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICB9CiAKICAgICBjcy0+ZGVy
ZWYodGhpcyk7CiAgICAgbV9jYWNoZWRTY3JpcHQgPSAwOwpJbmRleDogV2ViQ29yZS9raHRtbC9o
dG1sL2h0bWxwYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3Jl
L2todG1sL2h0bWwvaHRtbHBhcnNlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTI0CmRp
ZmYgLXAgLXUgLXIxLjEyNCBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHBhcnNlci5jcHAKLS0tIFdl
YkNvcmUva2h0bWwvaHRtbC9odG1scGFyc2VyLmNwcAkxMCBEZWMgMjAwNSAxODo1NjowMCAtMDAw
MAkxLjEyNAorKysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxwYXJzZXIuY3BwCTE3IERlYyAyMDA1
IDIwOjIwOjE5IC0wMDAwCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpzZXRD
dXJyZW50KERPTTo6Tm9kZUltcAogICAgIGN1cnJlbnRJc1JlZmVyZW5jZWQgPSBuZXdDdXJyZW50
SXNSZWZlcmVuY2VkOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OnBhcnNlVG9rZW4oVG9rZW4gKnQp
CitOb2RlSW1wbCAqSFRNTFBhcnNlcjo6cGFyc2VUb2tlbihUb2tlbiAqdCkKIHsKICAgICBpZiAo
IWRpc2NhcmRfdW50aWwuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKHQtPnRhZ05hbWUgPT0gZGlz
Y2FyZF91bnRpbCAmJiAhdC0+YmVnaW5UYWcpCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBIVE1M
UGFyc2VyOjpwYXJzZVRva2VuKFRva2VuICp0KQogCiAgICAgICAgIC8vIGRvIG5vdCBza2lwIDwv
aWZyYW1lPgogICAgICAgICBpZiAoIWRpc2NhcmRfdW50aWwuaXNOdWxsKCkgfHwgKGN1cnJlbnQt
PmxvY2FsTmFtZSgpICE9IHQtPnRhZ05hbWUpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gQXBwYXJlbnRseSBzb21lIHNpdGVzIHVz
ZSA8L2JyPiBpbnN0ZWFkIG9mIDxicj4uICBCZSBjb21wYXRpYmxlIHdpdGggSUUgYW5kIEZpcmVm
b3ggYW5kIHRyZWF0IHRoaXMgbGlrZSA8YnI+LgpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSFRN
TFBhcnNlcjo6cGFyc2VUb2tlbihUb2tlbiAqdCkKIAogICAgIGlmICghdC0+YmVnaW5UYWcpIHsK
ICAgICAgICAgcHJvY2Vzc0Nsb3NlVGFnKHQpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAogICAgIC8vIGlnbm9yZSBzcGFjZXMsIGlmIHdlJ3JlIG5vdCBpbnNp
ZGUgYSBwYXJhZ3JhcGggb3Igb3RoZXIgaW5saW5lIGNvZGUKQEAgLTIxMyw3ICsyMTMsNyBAQCB2
b2lkIEhUTUxQYXJzZXI6OnBhcnNlVG9rZW4oVG9rZW4gKnQpCiAgICAgTm9kZUltcGwgKm4gPSBn
ZXROb2RlKHQpOwogICAgIC8vIGp1c3QgdG8gYmUgc3VyZSwgYW5kIHRvIGNhdGNoIGN1cnJlbnRs
eSB1bmltcGxlbWVudGVkIHN0dWZmCiAgICAgaWYgKCFuKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiAwOwogCiAgICAgUmVmUHRyPE5vZGVJbXBsPiBwcm90ZWN0Tm9kZShuKTsKIApA
QCAtMjQzLDcgKzI0MywxMCBAQCB2b2lkIEhUTUxQYXJzZXI6OnBhcnNlVG9rZW4oVG9rZW4gKnQp
CiAKICAgICAgICAgaWYgKGZvcm0gPT0gbikKICAgICAgICAgICAgIGZvcm0gPSAwOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIHJldHVybiBuOwogfQogCiBzdGF0aWMg
Ym9vbCBpc1RhYmxlU2VjdGlvbihOb2RlSW1wbCogbikKSW5kZXg6IFdlYkNvcmUva2h0bWwvaHRt
bC9odG1scGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0
bWwvaHRtbC9odG1scGFyc2VyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzAKZGlmZiAtcCAt
dSAtcjEuMzAgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxwYXJzZXIuaAotLS0gV2ViQ29yZS9raHRt
bC9odG1sL2h0bWxwYXJzZXIuaAk4IE5vdiAyMDA1IDA4OjExOjAyIC0wMDAwCTEuMzAKKysrIFdl
YkNvcmUva2h0bWwvaHRtbC9odG1scGFyc2VyLmgJMTcgRGVjIDIwMDUgMjA6MjA6MjMgLTAwMDAK
QEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIC8qKgogICAgICAqIHBhcnNlcyBvbmUgdG9r
ZW4gZGVsaXZlcmVkIGJ5IHRoZSB0b2tlbml6ZXIKICAgICAgKi8KLSAgICB2b2lkIHBhcnNlVG9r
ZW4oa2h0bWw6OlRva2VuICpfdCk7CisgICAgRE9NOjpOb2RlSW1wbCAqcGFyc2VUb2tlbihraHRt
bDo6VG9rZW4gKl90KTsKICAgICAKICAgICAvKioKICAgICAgKiB0b2tlbml6ZXIgc2F5cyBpdCdz
IG5vdCBnb2luZyB0byBiZSBzZW5kaW5nIHVzIGFueSBtb3JlIHRva2VucwpJbmRleDogV2ViQ29y
ZS9raHRtbC9odG1sL2h0bWx0b2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbHRva2VuaXplci5jcHAsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMTI3CmRpZmYgLXAgLXUgLXIxLjEyNyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHRv
a2VuaXplci5jcHAKLS0tIFdlYkNvcmUva2h0bWwvaHRtbC9odG1sdG9rZW5pemVyLmNwcAkxNCBE
ZWMgMjAwNSAyMzozMTo1MiAtMDAwMAkxLjEyNworKysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWx0
b2tlbml6ZXIuY3BwCTE3IERlYyAyMDA1IDIwOjIwOjM2IC0wMDAwCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW5jbHVkZSAia2h0bWx2aWV3LmgiCiAjaW5jbHVkZSAia2h0bWxfcGFydC5oIgogI2luY2x1
ZGUgInhtbC9kb21fZG9jaW1wbC5oIgorI2luY2x1ZGUgInhtbC9FdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiY3NzL2Nzc2hlbHBlci5oIgogI2luY2x1ZGUgImVjbWEva2pzX3Byb3h5LmgiCiAjaW5j
bHVkZSA8a2NoYXJzZXRzLmg+CkBAIC01Myw2ICs1NCw3IEBACiAjaW5jbHVkZSA8c3RkbGliLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBET006OkhUTUxOYW1lczsKK3VzaW5nIG5hbWVzcGFjZSBET006
OkV2ZW50TmFtZXM7CiAKIHVzaW5nIERPTTo6QXRvbWljU3RyaW5nOwogdXNpbmcgRE9NOjpBdHRy
aWJ1dGVJbXBsOwpAQCAtNjYsNiArNjgsNyBAQCB1c2luZyBET006OnRleHRBdG9tOwogdXNpbmcg
RE9NOjpRdWFsaWZpZWROYW1lOwogdXNpbmcgRE9NOjpNYXBwZWRBdHRyaWJ1dGVJbXBsOwogdXNp
bmcgRE9NOjpOYW1lZE1hcHBlZEF0dHJNYXBJbXBsOwordXNpbmcgRE9NOjpOb2RlSW1wbDsKIAog
Ly8gdHVybiBvZmYgaW5saW5pbmcgdG8gdm9pZCB3YXJuaW5nIHdpdGggbmV3ZXIgZ2NjCiAjdW5k
ZWYgX19pbmxpbmUKQEAgLTM5MSw2ICszOTQsOCBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1M
VG9rZW5pemVyOjpzY3JpCiAjZW5kaWYKICAgICAgICAgICAgIGlmICggKGNzID0gcGFyc2VyLT5k
b2MoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQoc2NyaXB0U3JjLCBzY3JpcHRTcmNDaGFy
c2V0KSApKQogICAgICAgICAgICAgICAgIHBlbmRpbmdTY3JpcHRzLmVucXVldWUoY3MpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNjcmlwdE5vZGUgPSAwOwogICAgICAgICB9
CiAgICAgICAgIHNjcmlwdFNyYz1RU3RyaW5nOjpudWxsOwogICAgIH0KQEAgLTQwMCw2ICs0MDUs
NyBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9rZW5pemVyOjpzY3JpCiAgICAgICAgIGtk
RGVidWcoIDYwMzYgKSA8PCBRU3RyaW5nKHNjcmlwdENvZGUsIHNjcmlwdENvZGVTaXplKSA8PCBl
bmRsOwogICAgICAgICBrZERlYnVnKCA2MDM2ICkgPDwgIi0tLUVORCBTQ1JJUFQtLS0iIDw8IGVu
ZGw7CiAjZW5kaWYKKyAgICAgICAgc2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgIC8vIFBhcnNlIHNj
cmlwdENvZGUgY29udGFpbmluZyA8c2NyaXB0PiBpbmZvCiAgICAgICAgIGRvU2NyaXB0RXhlYyA9
IHRydWU7CiAgICAgfQpAQCAtMTI4MiwxMSArMTI4OCwxMyBAQCBIVE1MVG9rZW5pemVyOjpTdGF0
ZSBIVE1MVG9rZW5pemVyOjpwYXJzCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBwcm9jZXNzVG9rZW4oKTsKKyAgICAgICAgICAgIE5vZGVJbXBsICpuID0g
cHJvY2Vzc1Rva2VuKCk7CiAKICAgICAgICAgICAgIGlmICh0YWdOYW1lID09IHByZVRhZykgewog
ICAgICAgICAgICAgICAgIHN0YXRlLnNldERpc2NhcmRMRih0cnVlKTsgLy8gRGlzY2FyZCB0aGUg
Zmlyc3QgTEYgYWZ0ZXIgd2Ugb3BlbiBhIHByZS4KICAgICAgICAgICAgIH0gZWxzZSBpZiAodGFn
TmFtZSA9PSBzY3JpcHRUYWcpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIXNjcmlwdE5vZGUp
OworICAgICAgICAgICAgICAgIHNjcmlwdE5vZGUgPSBuOwogICAgICAgICAgICAgICAgIGlmIChi
ZWdpblRhZykgewogICAgICAgICAgICAgICAgICAgICBzZWFyY2hTdG9wcGVyID0gc2NyaXB0RW5k
OwogICAgICAgICAgICAgICAgICAgICBzZWFyY2hTdG9wcGVyTGVuID0gODsKQEAgLTE2NzAsNyAr
MTY3OCw3IEBAIHZvaWQgSFRNTFRva2VuaXplcjo6ZmluaXNoKCkKICAgICAgICAgZW5kKCk7IC8v
IHRoaXMgYWN0dWFsbHkgY2F1c2VzIHVzIHRvIGJlIGRlbGV0ZWQKIH0KIAotdm9pZCBIVE1MVG9r
ZW5pemVyOjpwcm9jZXNzVG9rZW4oKQorTm9kZUltcGwgKkhUTUxUb2tlbml6ZXI6OnByb2Nlc3NU
b2tlbigpCiB7CiAgICAgS0pTUHJveHlJbXBsICpqc1Byb3h5ID0gKHZpZXcgJiYgdmlldy0+cGFy
dCgpKSA/IHZpZXctPnBhcnQoKS0+alNjcmlwdCgpIDogMEw7ICAgIAogICAgIGlmIChqc1Byb3h5
KQpAQCAtMTY5Myw3ICsxNzAxLDcgQEAgdm9pZCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzVG9rZW4o
KQogICAgICAgICBjdXJyVG9rZW4ucmVzZXQoKTsKICAgICAgICAgaWYgKGpzUHJveHkpCiAgICAg
ICAgICAgICBqc1Byb3h5LT5zZXRFdmVudEhhbmRsZXJMaW5lbm8obGluZW5vK3NyYy5saW5lQ291
bnQoKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAg
ZGVzdCA9IGJ1ZmZlcjsKQEAgLTE3MjAsMTUgKzE3MjgsMTcgQEAgdm9pZCBIVE1MVG9rZW5pemVy
Ojpwcm9jZXNzVG9rZW4oKQogICAgIH0KICAgICBrZERlYnVnKCA2MDM2ICkgPDwgZW5kbDsKICNl
bmRpZgorICAgIE5vZGVJbXBsICpuID0gMDsKICAgICAKICAgICBpZiAoIW1fcGFyc2VyU3RvcHBl
ZCkgewogICAgICAgICAvLyBwYXNzIHRoZSB0b2tlbiBvdmVyIHRvIHRoZSBwYXJzZXIsIHRoZSBw
YXJzZXIgRE9FUyBOT1QgZGVsZXRlIHRoZSB0b2tlbgotICAgICAgICBwYXJzZXItPnBhcnNlVG9r
ZW4oJmN1cnJUb2tlbik7CisgICAgICAgIG4gPSBwYXJzZXItPnBhcnNlVG9rZW4oJmN1cnJUb2tl
bik7CiAgICAgfQogICAgIAogICAgIGN1cnJUb2tlbi5yZXNldCgpOwogICAgIGlmIChqc1Byb3h5
KQogICAgICAgICBqc1Byb3h5LT5zZXRFdmVudEhhbmRsZXJMaW5lbm8oMCk7CisgICAgcmV0dXJu
IG47CiB9CiAKIEhUTUxUb2tlbml6ZXI6On5IVE1MVG9rZW5pemVyKCkKQEAgLTE3ODEsMTQgKzE3
OTEsMjIgQEAgdm9pZCBIVE1MVG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZQogICAgICAg
ICAvLyBtYWtlIHN1cmUgd2UgZm9yZ2V0IGFib3V0IHRoZSBzY3JpcHQgYmVmb3JlIHdlIGV4ZWN1
dGUgdGhlIG5ldyBvbmUKICAgICAgICAgLy8gaW5maW5pdGUgcmVjdXJzaW9uIG1pZ2h0IGhhcHBl
biBvdGhlcndpc2UKICAgICAgICAgUVN0cmluZyBjYWNoZWRTY3JpcHRVcmwoIGNzLT51cmwoKS5x
c3RyaW5nKCkgKTsKKyAgICAgICAgYm9vbCBlcnJvck9jY3VycmVkID0gY3MtPmVycm9yT2NjdXJy
ZWQoKTsKICAgICAgICAgY3MtPmRlcmVmKHRoaXMpOworICAgICAgICBOb2RlSW1wbCAqbiA9IHNj
cmlwdE5vZGUuZ2V0KCk7CisgICAgICAgIHNjcmlwdE5vZGUgPSAwOwogCiAjaWZkZWYgSU5TVFJV
TUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgICAgICBpZiAoIXBhcnNlci0+ZG9jKCktPm93bmVy
RWxlbWVudCgpKQogICAgICAgICAgICAgcHJpbnRmKCJleHRlcm5hbCBzY3JpcHQgYmVnaW5uaW5n
IGV4ZWN1dGlvbiBhdCAlZFxuIiwgcGFyc2VyLT5kb2MoKS0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5k
aWYKIAotCW1fc3RhdGUgPSBzY3JpcHRFeGVjdXRpb24oc2NyaXB0U291cmNlLnFzdHJpbmcoKSwg
bV9zdGF0ZSwgY2FjaGVkU2NyaXB0VXJsKTsKKwlpZiAoZXJyb3JPY2N1cnJlZCkKKyAgICAgICAg
ICAgIG4tPmRpc3BhdGNoSFRNTEV2ZW50KGVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbV9zdGF0ZSA9IHNjcmlwdEV4ZWN1dGlvbihzY3JpcHRT
b3VyY2UucXN0cmluZygpLCBtX3N0YXRlLCBjYWNoZWRTY3JpcHRVcmwpOworICAgICAgICAgICAg
bi0+ZGlzcGF0Y2hIVE1MRXZlbnQobG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICB9
CiAKICAgICAgICAgLy8gVGhlIHN0YXRlIG9mIHBlbmRpbmdTY3JpcHRzLmlzRW1wdHkoKSBjYW4g
Y2hhbmdlIGluc2lkZSB0aGUgc2NyaXB0RXhlY3V0aW9uKCkKICAgICAgICAgLy8gY2FsbCBhYm92
ZSwgc28gdGVzdCBhZnRlcndhcmRzLgpJbmRleDogV2ViQ29yZS9raHRtbC9odG1sL2h0bWx0b2tl
bml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9odG1s
L2h0bWx0b2tlbml6ZXIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NwpkaWZmIC1wIC11IC1y
MS40NyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHRva2VuaXplci5oCi0tLSBXZWJDb3JlL2todG1s
L2h0bWwvaHRtbHRva2VuaXplci5oCTIxIE5vdiAyMDA1IDAxOjIwOjE1IC0wMDAwCTEuNDcKKysr
IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sdG9rZW5pemVyLmgJMTcgRGVjIDIwMDUgMjA6MjA6NDYg
LTAwMDAKQEAgLTEzMiw3ICsxMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbmQoKTsKIAog
ICAgIHZvaWQgcmVzZXQoKTsKLSAgICB2b2lkIHByb2Nlc3NUb2tlbigpOworICAgIERPTTo6Tm9k
ZUltcGwgKnByb2Nlc3NUb2tlbigpOwogCiAgICAgU3RhdGUgcHJvY2Vzc0xpc3RpbmcoVG9rZW5p
emVyU3RyaW5nLCBTdGF0ZSk7CiAgICAgU3RhdGUgcGFyc2VDb21tZW50KFRva2VuaXplclN0cmlu
ZyYsIFN0YXRlKTsKQEAgLTM0NCw2ICszNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gdGhlIG91
dHB1dCBvZiB0aGUgc2NyaXB0IHRvIGJlIHBvc3Rwb25lZCB1bnRpbCBhZnRlciB0aGUgc2NyaXB0
IGhhcyBmaW5pc2hlZCBleGVjdXRpbmcKICAgICBpbnQgbV9leGVjdXRpbmdTY3JpcHQ7CiAgICAg
UVB0clF1ZXVlPENhY2hlZFNjcmlwdD4gcGVuZGluZ1NjcmlwdHM7CisgICAgUmVmUHRyPERPTTo6
Tm9kZUltcGw+IHNjcmlwdE5vZGU7CiAgICAgLy8geW91IGNhbiBwYXVzZSB0aGUgdG9rZW5pemVy
IGlmIHlvdSBuZWVkIHRvIGRpc3BsYXkgYSBkaWFsb2cgb3Igc29tZXRoaW5nCiAgICAgYm9vbCBv
bkhvbGQ7CiAKSW5kZXg6IFdlYkNvcmUva2h0bWwvbWlzYy9sb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL21pc2MvbG9hZGVyLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS44MwpkaWZmIC1wIC11IC1yMS44MyBXZWJDb3JlL2todG1sL21pc2Mv
bG9hZGVyLmNwcAotLS0gV2ViQ29yZS9raHRtbC9taXNjL2xvYWRlci5jcHAJMTUgRGVjIDIwMDUg
MjI6MzE6NDMgLTAwMDAJMS44MworKysgV2ViQ29yZS9raHRtbC9taXNjL2xvYWRlci5jcHAJMTcg
RGVjIDIwMDUgMjA6MjE6MDEgLTAwMDAKQEAgLTI2Myw2ICsyNjMsNyBAQCBDYWNoZWRTY3JpcHQ6
OkNhY2hlZFNjcmlwdChEb2NMb2FkZXIqIGRsCiAgICAgLy8gQnV0IHNvbWUgd2Vic2l0ZXMgdGhp
bmsgdGhlaXIgc2NyaXB0cyBhcmUgPHNvbWUgd3JvbmcgbWltZXR5cGUgaGVyZT4KICAgICAvLyBh
bmQgcmVmdXNlIHRvIHNlcnZlIHRoZW0gaWYgd2Ugb25seSBhY2NlcHQgYXBwbGljYXRpb24veC1q
YXZhc2NyaXB0LgogICAgIHNldEFjY2VwdCggUVN0cmluZzo6ZnJvbUxhdGluMSgiKi8qIikgKTsK
KyAgICBtX2Vycm9yT2NjdXJyZWQgPSBmYWxzZTsKICAgICAvLyBsb2FkIHRoZSBmaWxlCiAgICAg
Q2FjaGU6OmxvYWRlcigpLT5sb2FkKGRsLCB0aGlzLCBmYWxzZSk7CiAgICAgbV9sb2FkaW5nID0g
dHJ1ZTsKQEAgLTI3NSw2ICsyNzYsNyBAQCBDYWNoZWRTY3JpcHQ6OkNhY2hlZFNjcmlwdChEb2NM
b2FkZXIqIGRsCiBDYWNoZWRTY3JpcHQ6OkNhY2hlZFNjcmlwdChjb25zdCBET01TdHJpbmcgJnVy
bCwgY29uc3QgUVN0cmluZyAmc2NyaXB0X2RhdGEpCiAgICAgOiBDYWNoZWRPYmplY3QodXJsLCBT
Y3JpcHQsIEtJTzo6Q0NfVmVyaWZ5LCAwLCBzY3JpcHRfZGF0YS5sZW5ndGgoKSkKIHsKKyAgICBt
X2Vycm9yT2NjdXJyZWQgPSBmYWxzZTsKICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKICAgICBtX3N0
YXR1cyA9IFBlcnNpc3RlbnQ7CiAgICAgbV9jb2RlYyA9IDA7CkBAIC0zMzMsNiArMzM1LDcgQEAg
dm9pZCBDYWNoZWRTY3JpcHQ6OmNoZWNrTm90aWZ5KCkKIHZvaWQgQ2FjaGVkU2NyaXB0OjplcnJv
ciggaW50IC8qZXJyKi8sIGNvbnN0IGNoYXIgKi8qdGV4dCovICkKIHsKICAgICBtX2xvYWRpbmcg
PSBmYWxzZTsKKyAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgIGNoZWNrTm90aWZ5KCk7
CiB9CiAKSW5kZXg6IFdlYkNvcmUva2h0bWwvbWlzYy9sb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9taXNjL2xvYWRlci5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjQ4CmRpZmYgLXAgLXUgLXIxLjQ4IFdlYkNvcmUva2h0bWwvbWlzYy9sb2FkZXIu
aAotLS0gV2ViQ29yZS9raHRtbC9taXNjL2xvYWRlci5oCTE1IERlYyAyMDA1IDIyOjMxOjQ0IC0w
MDAwCTEuNDgKKysrIFdlYkNvcmUva2h0bWwvbWlzYy9sb2FkZXIuaAkxNyBEZWMgMjAwNSAyMDoy
MTo0NCAtMDAwMApAQCAtMjkzLDEyICsyOTMsMTUgQEAgbmFtZXNwYWNlIGtodG1sCiAJdmlydHVh
bCB2b2lkIGVycm9yKCBpbnQgZXJyLCBjb25zdCBjaGFyICp0ZXh0ICk7CiAKICAgICAgICAgdmly
dHVhbCBib29sIHNjaGVkdWxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgCisg
ICAgICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJl
ZDsgfQogCiAJdm9pZCBjaGVja05vdGlmeSgpOwogCiAgICAgcHJvdGVjdGVkOgogCURPTTo6RE9N
U3RyaW5nIG1fc2NyaXB0OwogICAgICAgICBRVGV4dENvZGVjKiBtX2NvZGVjOworICAgICAgICBi
b29sIG1fZXJyb3JPY2N1cnJlZDsKICAgICB9OwogCiAgICAgY2xhc3MgSW1hZ2VTb3VyY2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5237</attachid>
            <date>2005-12-23 01:35:23 -0800</date>
            <delta_ts>2005-12-23 01:36:40 -0800</delta_ts>
            <desc>Dispatch load and error events for script elements</desc>
            <filename>5812_r1.patch</filename>
            <type>text/plain</type>
            <size>11797</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX2hlYWRpbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfaGVhZGltcGwuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjYzCmRpZmYgLXAgLXUgLXIxLjYzIFdlYkNvcmUva2h0bWwv
aHRtbC9odG1sX2hlYWRpbXBsLmNwcAotLS0gV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfaGVhZGlt
cGwuY3BwCTE2IERlYyAyMDA1IDA4OjA4OjE3IC0wMDAwCTEuNjMKKysrIFdlYkNvcmUva2h0bWwv
aHRtbC9odG1sX2hlYWRpbXBsLmNwcAkxNyBEZWMgMjAwNSAyMDoyMDoxMiAtMDAwMApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiaHRtbC9odG1sX2RvY3VtZW50aW1wbC5oIgogI2luY2x1
ZGUgInhtbC9kb21fdGV4dGltcGwuaCIKKyNpbmNsdWRlICJ4bWwvRXZlbnROYW1lcy5oIgogCiAj
aW5jbHVkZSAia2h0bWx2aWV3LmgiCiAjaW5jbHVkZSAia2h0bWxfcGFydC5oIgpAQCAtNDUsNiAr
NDYsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgRE9NOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKK3VzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIGtodG1sOwog
CiBIVE1MQmFzZUVsZW1lbnRJbXBsOjpIVE1MQmFzZUVsZW1lbnRJbXBsKERvY3VtZW50SW1wbCAq
ZG9jKQpAQCAtNTA3LDcgKzUwOSw4IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnRJbXBsOjpjaGls
ZHJlbkNoYW4KIAogdm9pZCBIVE1MU2NyaXB0RWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZUltcGwgKmF0dHIpCiB7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9
PSBzcmNBdHRyKSB7CisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBhdHRyLT5u
YW1lKCk7CisgICAgaWYgKGF0dHJOYW1lID09IHNyY0F0dHIpIHsKICAgICAgICAgaWYgKG1fZXZh
bHVhdGVkIHx8IG1fY2FjaGVkU2NyaXB0IHx8IG1fY3JlYXRlZEJ5UGFyc2VyIHx8ICFpbkRvY3Vt
ZW50KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTUyMiw2ICs1MjUsMTAgQEAgdm9pZCBI
VE1MU2NyaXB0RWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQQogICAgICAgICAgICAgbV9jYWNoZWRT
Y3JpcHQgPSBnZXREb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdCh1cmwsIGNo
YXJzZXQpOwogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHQtPnJlZih0aGlzKTsKICAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25lcnJvckF0dHIpIHsKKyAgICAgICAgc2V0
SFRNTEV2ZW50TGlzdGVuZXIoZXJyb3JFdmVudCwgYXR0cik7CisgICAgfSBlbHNlIGlmIChhdHRy
TmFtZSA9PSBvbmxvYWRBdHRyKSB7CisgICAgICAgIHNldEhUTUxFdmVudExpc3RlbmVyKGxvYWRF
dmVudCwgYXR0cik7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50SW1wbDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkBAIC01MzIsNiArNTM5LDcgQEAgdm9pZCBIVE1MU2Ny
aXB0RWxlbWVudEltcGw6OmNsb3NlUmVuZGVyZQogICAgIC8vIGFsbG93IGR5bmFtaWMgbG9hZGlu
ZyBsYXRlci4KICAgICBpZiAoZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSAmJiB0ZXh0
KCkuaXNFbXB0eSgpKQogICAgICAgICBzZXRDcmVhdGVkQnlQYXJzZXIoZmFsc2UpOworICAgIEhU
TUxFbGVtZW50SW1wbDo6Y2xvc2VSZW5kZXJlcigpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVt
ZW50SW1wbDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQpAQCAtNTgxLDcgKzU4OSwxMiBAQCB2b2lk
IEhUTUxTY3JpcHRFbGVtZW50SW1wbDo6bm90aWZ5RmluaXNoCiAKICAgICBhc3NlcnQoY3MgPT0g
bV9jYWNoZWRTY3JpcHQpOwogCi0gICAgZXZhbHVhdGVTY3JpcHQoY3MtPnVybCgpLCBjcy0+c2Ny
aXB0KCkpOworICAgIGlmIChjcy0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICBkaXNwYXRjaEhU
TUxFdmVudChlcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgIGVsc2UgeworICAgICAgICBl
dmFsdWF0ZVNjcmlwdChjcy0+dXJsKCksIGNzLT5zY3JpcHQoKSk7CisgICAgICAgIGRpc3BhdGNo
SFRNTEV2ZW50KGxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICB9CiAKICAgICBjcy0+ZGVy
ZWYodGhpcyk7CiAgICAgbV9jYWNoZWRTY3JpcHQgPSAwOwpJbmRleDogV2ViQ29yZS9raHRtbC9o
dG1sL2h0bWxwYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3Jl
L2todG1sL2h0bWwvaHRtbHBhcnNlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTI0CmRp
ZmYgLXAgLXUgLXIxLjEyNCBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHBhcnNlci5jcHAKLS0tIFdl
YkNvcmUva2h0bWwvaHRtbC9odG1scGFyc2VyLmNwcAkxMCBEZWMgMjAwNSAxODo1NjowMCAtMDAw
MAkxLjEyNAorKysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxwYXJzZXIuY3BwCTE3IERlYyAyMDA1
IDIwOjIwOjE5IC0wMDAwCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpzZXRD
dXJyZW50KERPTTo6Tm9kZUltcAogICAgIGN1cnJlbnRJc1JlZmVyZW5jZWQgPSBuZXdDdXJyZW50
SXNSZWZlcmVuY2VkOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OnBhcnNlVG9rZW4oVG9rZW4gKnQp
CitOb2RlSW1wbCAqSFRNTFBhcnNlcjo6cGFyc2VUb2tlbihUb2tlbiAqdCkKIHsKICAgICBpZiAo
IWRpc2NhcmRfdW50aWwuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKHQtPnRhZ05hbWUgPT0gZGlz
Y2FyZF91bnRpbCAmJiAhdC0+YmVnaW5UYWcpCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBIVE1M
UGFyc2VyOjpwYXJzZVRva2VuKFRva2VuICp0KQogCiAgICAgICAgIC8vIGRvIG5vdCBza2lwIDwv
aWZyYW1lPgogICAgICAgICBpZiAoIWRpc2NhcmRfdW50aWwuaXNOdWxsKCkgfHwgKGN1cnJlbnQt
PmxvY2FsTmFtZSgpICE9IHQtPnRhZ05hbWUpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gQXBwYXJlbnRseSBzb21lIHNpdGVzIHVz
ZSA8L2JyPiBpbnN0ZWFkIG9mIDxicj4uICBCZSBjb21wYXRpYmxlIHdpdGggSUUgYW5kIEZpcmVm
b3ggYW5kIHRyZWF0IHRoaXMgbGlrZSA8YnI+LgpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSFRN
TFBhcnNlcjo6cGFyc2VUb2tlbihUb2tlbiAqdCkKIAogICAgIGlmICghdC0+YmVnaW5UYWcpIHsK
ICAgICAgICAgcHJvY2Vzc0Nsb3NlVGFnKHQpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAogICAgIC8vIGlnbm9yZSBzcGFjZXMsIGlmIHdlJ3JlIG5vdCBpbnNp
ZGUgYSBwYXJhZ3JhcGggb3Igb3RoZXIgaW5saW5lIGNvZGUKQEAgLTIxMyw3ICsyMTMsNyBAQCB2
b2lkIEhUTUxQYXJzZXI6OnBhcnNlVG9rZW4oVG9rZW4gKnQpCiAgICAgTm9kZUltcGwgKm4gPSBn
ZXROb2RlKHQpOwogICAgIC8vIGp1c3QgdG8gYmUgc3VyZSwgYW5kIHRvIGNhdGNoIGN1cnJlbnRs
eSB1bmltcGxlbWVudGVkIHN0dWZmCiAgICAgaWYgKCFuKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiAwOwogCiAgICAgUmVmUHRyPE5vZGVJbXBsPiBwcm90ZWN0Tm9kZShuKTsKIApA
QCAtMjQzLDcgKzI0MywxMCBAQCB2b2lkIEhUTUxQYXJzZXI6OnBhcnNlVG9rZW4oVG9rZW4gKnQp
CiAKICAgICAgICAgaWYgKGZvcm0gPT0gbikKICAgICAgICAgICAgIGZvcm0gPSAwOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIHJldHVybiBuOwogfQogCiBzdGF0aWMg
Ym9vbCBpc1RhYmxlU2VjdGlvbihOb2RlSW1wbCogbikKSW5kZXg6IFdlYkNvcmUva2h0bWwvaHRt
bC9odG1scGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0
bWwvaHRtbC9odG1scGFyc2VyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzAKZGlmZiAtcCAt
dSAtcjEuMzAgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxwYXJzZXIuaAotLS0gV2ViQ29yZS9raHRt
bC9odG1sL2h0bWxwYXJzZXIuaAk4IE5vdiAyMDA1IDA4OjExOjAyIC0wMDAwCTEuMzAKKysrIFdl
YkNvcmUva2h0bWwvaHRtbC9odG1scGFyc2VyLmgJMTcgRGVjIDIwMDUgMjA6MjA6MjMgLTAwMDAK
QEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIC8qKgogICAgICAqIHBhcnNlcyBvbmUgdG9r
ZW4gZGVsaXZlcmVkIGJ5IHRoZSB0b2tlbml6ZXIKICAgICAgKi8KLSAgICB2b2lkIHBhcnNlVG9r
ZW4oa2h0bWw6OlRva2VuICpfdCk7CisgICAgRE9NOjpOb2RlSW1wbCAqcGFyc2VUb2tlbihraHRt
bDo6VG9rZW4gKl90KTsKICAgICAKICAgICAvKioKICAgICAgKiB0b2tlbml6ZXIgc2F5cyBpdCdz
IG5vdCBnb2luZyB0byBiZSBzZW5kaW5nIHVzIGFueSBtb3JlIHRva2VucwpJbmRleDogV2ViQ29y
ZS9raHRtbC9odG1sL2h0bWx0b2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbHRva2VuaXplci5jcHAsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMTI3CmRpZmYgLXAgLXUgLXIxLjEyNyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHRv
a2VuaXplci5jcHAKLS0tIFdlYkNvcmUva2h0bWwvaHRtbC9odG1sdG9rZW5pemVyLmNwcAkxNCBE
ZWMgMjAwNSAyMzozMTo1MiAtMDAwMAkxLjEyNworKysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWx0
b2tlbml6ZXIuY3BwCTE3IERlYyAyMDA1IDIwOjIwOjM2IC0wMDAwCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW5jbHVkZSAia2h0bWx2aWV3LmgiCiAjaW5jbHVkZSAia2h0bWxfcGFydC5oIgogI2luY2x1
ZGUgInhtbC9kb21fZG9jaW1wbC5oIgorI2luY2x1ZGUgInhtbC9FdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiY3NzL2Nzc2hlbHBlci5oIgogI2luY2x1ZGUgImVjbWEva2pzX3Byb3h5LmgiCiAjaW5j
bHVkZSA8a2NoYXJzZXRzLmg+CkBAIC01Myw2ICs1NCw3IEBACiAjaW5jbHVkZSA8c3RkbGliLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBET006OkhUTUxOYW1lczsKK3VzaW5nIG5hbWVzcGFjZSBET006
OkV2ZW50TmFtZXM7CiAKIHVzaW5nIERPTTo6QXRvbWljU3RyaW5nOwogdXNpbmcgRE9NOjpBdHRy
aWJ1dGVJbXBsOwpAQCAtNjYsNiArNjgsNyBAQCB1c2luZyBET006OnRleHRBdG9tOwogdXNpbmcg
RE9NOjpRdWFsaWZpZWROYW1lOwogdXNpbmcgRE9NOjpNYXBwZWRBdHRyaWJ1dGVJbXBsOwogdXNp
bmcgRE9NOjpOYW1lZE1hcHBlZEF0dHJNYXBJbXBsOwordXNpbmcgRE9NOjpOb2RlSW1wbDsKIAog
Ly8gdHVybiBvZmYgaW5saW5pbmcgdG8gdm9pZCB3YXJuaW5nIHdpdGggbmV3ZXIgZ2NjCiAjdW5k
ZWYgX19pbmxpbmUKQEAgLTM5MSw2ICszOTQsOCBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1M
VG9rZW5pemVyOjpzY3JpCiAjZW5kaWYKICAgICAgICAgICAgIGlmICggKGNzID0gcGFyc2VyLT5k
b2MoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQoc2NyaXB0U3JjLCBzY3JpcHRTcmNDaGFy
c2V0KSApKQogICAgICAgICAgICAgICAgIHBlbmRpbmdTY3JpcHRzLmVucXVldWUoY3MpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNjcmlwdE5vZGUgPSAwOwogICAgICAgICB9
CiAgICAgICAgIHNjcmlwdFNyYz1RU3RyaW5nOjpudWxsOwogICAgIH0KQEAgLTQwMCw2ICs0MDUs
NyBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9rZW5pemVyOjpzY3JpCiAgICAgICAgIGtk
RGVidWcoIDYwMzYgKSA8PCBRU3RyaW5nKHNjcmlwdENvZGUsIHNjcmlwdENvZGVTaXplKSA8PCBl
bmRsOwogICAgICAgICBrZERlYnVnKCA2MDM2ICkgPDwgIi0tLUVORCBTQ1JJUFQtLS0iIDw8IGVu
ZGw7CiAjZW5kaWYKKyAgICAgICAgc2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgIC8vIFBhcnNlIHNj
cmlwdENvZGUgY29udGFpbmluZyA8c2NyaXB0PiBpbmZvCiAgICAgICAgIGRvU2NyaXB0RXhlYyA9
IHRydWU7CiAgICAgfQpAQCAtMTI4MiwxMSArMTI4OCwxMyBAQCBIVE1MVG9rZW5pemVyOjpTdGF0
ZSBIVE1MVG9rZW5pemVyOjpwYXJzCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBwcm9jZXNzVG9rZW4oKTsKKyAgICAgICAgICAgIE5vZGVJbXBsICpuID0g
cHJvY2Vzc1Rva2VuKCk7CiAKICAgICAgICAgICAgIGlmICh0YWdOYW1lID09IHByZVRhZykgewog
ICAgICAgICAgICAgICAgIHN0YXRlLnNldERpc2NhcmRMRih0cnVlKTsgLy8gRGlzY2FyZCB0aGUg
Zmlyc3QgTEYgYWZ0ZXIgd2Ugb3BlbiBhIHByZS4KICAgICAgICAgICAgIH0gZWxzZSBpZiAodGFn
TmFtZSA9PSBzY3JpcHRUYWcpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIXNjcmlwdE5vZGUp
OworICAgICAgICAgICAgICAgIHNjcmlwdE5vZGUgPSBuOwogICAgICAgICAgICAgICAgIGlmIChi
ZWdpblRhZykgewogICAgICAgICAgICAgICAgICAgICBzZWFyY2hTdG9wcGVyID0gc2NyaXB0RW5k
OwogICAgICAgICAgICAgICAgICAgICBzZWFyY2hTdG9wcGVyTGVuID0gODsKQEAgLTE2NzAsNyAr
MTY3OCw3IEBAIHZvaWQgSFRNTFRva2VuaXplcjo6ZmluaXNoKCkKICAgICAgICAgZW5kKCk7IC8v
IHRoaXMgYWN0dWFsbHkgY2F1c2VzIHVzIHRvIGJlIGRlbGV0ZWQKIH0KIAotdm9pZCBIVE1MVG9r
ZW5pemVyOjpwcm9jZXNzVG9rZW4oKQorTm9kZUltcGwgKkhUTUxUb2tlbml6ZXI6OnByb2Nlc3NU
b2tlbigpCiB7CiAgICAgS0pTUHJveHlJbXBsICpqc1Byb3h5ID0gKHZpZXcgJiYgdmlldy0+cGFy
dCgpKSA/IHZpZXctPnBhcnQoKS0+alNjcmlwdCgpIDogMEw7ICAgIAogICAgIGlmIChqc1Byb3h5
KQpAQCAtMTY5Myw3ICsxNzAxLDcgQEAgdm9pZCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzVG9rZW4o
KQogICAgICAgICBjdXJyVG9rZW4ucmVzZXQoKTsKICAgICAgICAgaWYgKGpzUHJveHkpCiAgICAg
ICAgICAgICBqc1Byb3h5LT5zZXRFdmVudEhhbmRsZXJMaW5lbm8obGluZW5vK3NyYy5saW5lQ291
bnQoKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAg
ZGVzdCA9IGJ1ZmZlcjsKQEAgLTE3MjAsMTUgKzE3MjgsMTcgQEAgdm9pZCBIVE1MVG9rZW5pemVy
Ojpwcm9jZXNzVG9rZW4oKQogICAgIH0KICAgICBrZERlYnVnKCA2MDM2ICkgPDwgZW5kbDsKICNl
bmRpZgorICAgIE5vZGVJbXBsICpuID0gMDsKICAgICAKICAgICBpZiAoIW1fcGFyc2VyU3RvcHBl
ZCkgewogICAgICAgICAvLyBwYXNzIHRoZSB0b2tlbiBvdmVyIHRvIHRoZSBwYXJzZXIsIHRoZSBw
YXJzZXIgRE9FUyBOT1QgZGVsZXRlIHRoZSB0b2tlbgotICAgICAgICBwYXJzZXItPnBhcnNlVG9r
ZW4oJmN1cnJUb2tlbik7CisgICAgICAgIG4gPSBwYXJzZXItPnBhcnNlVG9rZW4oJmN1cnJUb2tl
bik7CiAgICAgfQogICAgIAogICAgIGN1cnJUb2tlbi5yZXNldCgpOwogICAgIGlmIChqc1Byb3h5
KQogICAgICAgICBqc1Byb3h5LT5zZXRFdmVudEhhbmRsZXJMaW5lbm8oMCk7CisgICAgcmV0dXJu
IG47CiB9CiAKIEhUTUxUb2tlbml6ZXI6On5IVE1MVG9rZW5pemVyKCkKQEAgLTE3ODEsMTQgKzE3
OTEsMjIgQEAgdm9pZCBIVE1MVG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZQogICAgICAg
ICAvLyBtYWtlIHN1cmUgd2UgZm9yZ2V0IGFib3V0IHRoZSBzY3JpcHQgYmVmb3JlIHdlIGV4ZWN1
dGUgdGhlIG5ldyBvbmUKICAgICAgICAgLy8gaW5maW5pdGUgcmVjdXJzaW9uIG1pZ2h0IGhhcHBl
biBvdGhlcndpc2UKICAgICAgICAgUVN0cmluZyBjYWNoZWRTY3JpcHRVcmwoIGNzLT51cmwoKS5x
c3RyaW5nKCkgKTsKKyAgICAgICAgYm9vbCBlcnJvck9jY3VycmVkID0gY3MtPmVycm9yT2NjdXJy
ZWQoKTsKICAgICAgICAgY3MtPmRlcmVmKHRoaXMpOworICAgICAgICBOb2RlSW1wbCAqbiA9IHNj
cmlwdE5vZGUuZ2V0KCk7CisgICAgICAgIHNjcmlwdE5vZGUgPSAwOwogCiAjaWZkZWYgSU5TVFJV
TUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgICAgICBpZiAoIXBhcnNlci0+ZG9jKCktPm93bmVy
RWxlbWVudCgpKQogICAgICAgICAgICAgcHJpbnRmKCJleHRlcm5hbCBzY3JpcHQgYmVnaW5uaW5n
IGV4ZWN1dGlvbiBhdCAlZFxuIiwgcGFyc2VyLT5kb2MoKS0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5k
aWYKIAotCW1fc3RhdGUgPSBzY3JpcHRFeGVjdXRpb24oc2NyaXB0U291cmNlLnFzdHJpbmcoKSwg
bV9zdGF0ZSwgY2FjaGVkU2NyaXB0VXJsKTsKKwlpZiAoZXJyb3JPY2N1cnJlZCkKKyAgICAgICAg
ICAgIG4tPmRpc3BhdGNoSFRNTEV2ZW50KGVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbV9zdGF0ZSA9IHNjcmlwdEV4ZWN1dGlvbihzY3JpcHRT
b3VyY2UucXN0cmluZygpLCBtX3N0YXRlLCBjYWNoZWRTY3JpcHRVcmwpOworICAgICAgICAgICAg
bi0+ZGlzcGF0Y2hIVE1MRXZlbnQobG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICB9
CiAKICAgICAgICAgLy8gVGhlIHN0YXRlIG9mIHBlbmRpbmdTY3JpcHRzLmlzRW1wdHkoKSBjYW4g
Y2hhbmdlIGluc2lkZSB0aGUgc2NyaXB0RXhlY3V0aW9uKCkKICAgICAgICAgLy8gY2FsbCBhYm92
ZSwgc28gdGVzdCBhZnRlcndhcmRzLgpJbmRleDogV2ViQ29yZS9raHRtbC9odG1sL2h0bWx0b2tl
bml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9odG1s
L2h0bWx0b2tlbml6ZXIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NwpkaWZmIC1wIC11IC1y
MS40NyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHRva2VuaXplci5oCi0tLSBXZWJDb3JlL2todG1s
L2h0bWwvaHRtbHRva2VuaXplci5oCTIxIE5vdiAyMDA1IDAxOjIwOjE1IC0wMDAwCTEuNDcKKysr
IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sdG9rZW5pemVyLmgJMTcgRGVjIDIwMDUgMjA6MjA6NDYg
LTAwMDAKQEAgLTEzMiw3ICsxMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbmQoKTsKIAog
ICAgIHZvaWQgcmVzZXQoKTsKLSAgICB2b2lkIHByb2Nlc3NUb2tlbigpOworICAgIERPTTo6Tm9k
ZUltcGwgKnByb2Nlc3NUb2tlbigpOwogCiAgICAgU3RhdGUgcHJvY2Vzc0xpc3RpbmcoVG9rZW5p
emVyU3RyaW5nLCBTdGF0ZSk7CiAgICAgU3RhdGUgcGFyc2VDb21tZW50KFRva2VuaXplclN0cmlu
ZyYsIFN0YXRlKTsKQEAgLTM0NCw2ICszNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gdGhlIG91
dHB1dCBvZiB0aGUgc2NyaXB0IHRvIGJlIHBvc3Rwb25lZCB1bnRpbCBhZnRlciB0aGUgc2NyaXB0
IGhhcyBmaW5pc2hlZCBleGVjdXRpbmcKICAgICBpbnQgbV9leGVjdXRpbmdTY3JpcHQ7CiAgICAg
UVB0clF1ZXVlPENhY2hlZFNjcmlwdD4gcGVuZGluZ1NjcmlwdHM7CisgICAgUmVmUHRyPERPTTo6
Tm9kZUltcGw+IHNjcmlwdE5vZGU7CiAgICAgLy8geW91IGNhbiBwYXVzZSB0aGUgdG9rZW5pemVy
IGlmIHlvdSBuZWVkIHRvIGRpc3BsYXkgYSBkaWFsb2cgb3Igc29tZXRoaW5nCiAgICAgYm9vbCBv
bkhvbGQ7CiAKSW5kZXg6IFdlYkNvcmUva2h0bWwvbWlzYy9sb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL21pc2MvbG9hZGVyLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS44MwpkaWZmIC1wIC11IC1yMS44MyBXZWJDb3JlL2todG1sL21pc2Mv
bG9hZGVyLmNwcAotLS0gV2ViQ29yZS9raHRtbC9taXNjL2xvYWRlci5jcHAJMTUgRGVjIDIwMDUg
MjI6MzE6NDMgLTAwMDAJMS44MworKysgV2ViQ29yZS9raHRtbC9taXNjL2xvYWRlci5jcHAJMTcg
RGVjIDIwMDUgMjA6MjE6MDEgLTAwMDAKQEAgLTI2Myw2ICsyNjMsNyBAQCBDYWNoZWRTY3JpcHQ6
OkNhY2hlZFNjcmlwdChEb2NMb2FkZXIqIGRsCiAgICAgLy8gQnV0IHNvbWUgd2Vic2l0ZXMgdGhp
bmsgdGhlaXIgc2NyaXB0cyBhcmUgPHNvbWUgd3JvbmcgbWltZXR5cGUgaGVyZT4KICAgICAvLyBh
bmQgcmVmdXNlIHRvIHNlcnZlIHRoZW0gaWYgd2Ugb25seSBhY2NlcHQgYXBwbGljYXRpb24veC1q
YXZhc2NyaXB0LgogICAgIHNldEFjY2VwdCggUVN0cmluZzo6ZnJvbUxhdGluMSgiKi8qIikgKTsK
KyAgICBtX2Vycm9yT2NjdXJyZWQgPSBmYWxzZTsKICAgICAvLyBsb2FkIHRoZSBmaWxlCiAgICAg
Q2FjaGU6OmxvYWRlcigpLT5sb2FkKGRsLCB0aGlzLCBmYWxzZSk7CiAgICAgbV9sb2FkaW5nID0g
dHJ1ZTsKQEAgLTI3NSw2ICsyNzYsNyBAQCBDYWNoZWRTY3JpcHQ6OkNhY2hlZFNjcmlwdChEb2NM
b2FkZXIqIGRsCiBDYWNoZWRTY3JpcHQ6OkNhY2hlZFNjcmlwdChjb25zdCBET01TdHJpbmcgJnVy
bCwgY29uc3QgUVN0cmluZyAmc2NyaXB0X2RhdGEpCiAgICAgOiBDYWNoZWRPYmplY3QodXJsLCBT
Y3JpcHQsIEtJTzo6Q0NfVmVyaWZ5LCAwLCBzY3JpcHRfZGF0YS5sZW5ndGgoKSkKIHsKKyAgICBt
X2Vycm9yT2NjdXJyZWQgPSBmYWxzZTsKICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKICAgICBtX3N0
YXR1cyA9IFBlcnNpc3RlbnQ7CiAgICAgbV9jb2RlYyA9IDA7CkBAIC0zMzMsNiArMzM1LDcgQEAg
dm9pZCBDYWNoZWRTY3JpcHQ6OmNoZWNrTm90aWZ5KCkKIHZvaWQgQ2FjaGVkU2NyaXB0OjplcnJv
ciggaW50IC8qZXJyKi8sIGNvbnN0IGNoYXIgKi8qdGV4dCovICkKIHsKICAgICBtX2xvYWRpbmcg
PSBmYWxzZTsKKyAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgIGNoZWNrTm90aWZ5KCk7
CiB9CiAKSW5kZXg6IFdlYkNvcmUva2h0bWwvbWlzYy9sb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9taXNjL2xvYWRlci5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjQ4CmRpZmYgLXAgLXUgLXIxLjQ4IFdlYkNvcmUva2h0bWwvbWlzYy9sb2FkZXIu
aAotLS0gV2ViQ29yZS9raHRtbC9taXNjL2xvYWRlci5oCTE1IERlYyAyMDA1IDIyOjMxOjQ0IC0w
MDAwCTEuNDgKKysrIFdlYkNvcmUva2h0bWwvbWlzYy9sb2FkZXIuaAkxNyBEZWMgMjAwNSAyMDoy
MTo0NCAtMDAwMApAQCAtMjkzLDEyICsyOTMsMTUgQEAgbmFtZXNwYWNlIGtodG1sCiAJdmlydHVh
bCB2b2lkIGVycm9yKCBpbnQgZXJyLCBjb25zdCBjaGFyICp0ZXh0ICk7CiAKICAgICAgICAgdmly
dHVhbCBib29sIHNjaGVkdWxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgCisg
ICAgICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJl
ZDsgfQogCiAJdm9pZCBjaGVja05vdGlmeSgpOwogCiAgICAgcHJvdGVjdGVkOgogCURPTTo6RE9N
U3RyaW5nIG1fc2NyaXB0OwogICAgICAgICBRVGV4dENvZGVjKiBtX2NvZGVjOworICAgICAgICBi
b29sIG1fZXJyb3JPY2N1cnJlZDsKICAgICB9OwogCiAgICAgY2xhc3MgSW1hZ2VTb3VyY2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5238</attachid>
            <date>2005-12-23 01:36:14 -0800</date>
            <delta_ts>2005-12-23 13:16:50 -0800</delta_ts>
            <desc>Dispatch load and error events for script elements</desc>
            <filename>5812_r2.patch</filename>
            <type>text/plain</type>
            <size>18388</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE4NApkaWZm
IC1wIC11IC1yMS4xODQgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCi0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJMjMgRGVjIDIwMDUgMDg6MzU6MzggLTAwMDAJMS4xODQKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkyMyBEZWMgMjAwNSAwOTozNzo1MiAtMDAwMApAQCAtMSwzICsxLDE0IEBACisyMDA1
LTEyLSMjICBNaXR6IFBldHRlbCAgPG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gdGVzdCBmb3Ig
aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01ODEyCisgICAg
ICAgICAgR2VuZXJhdGUgbG9hZCBldmVudHMgZm9yIDxzY3JpcHQ+IGVsZW1lbnRzCisKKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LWxvYWQuanM6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2Fk
LWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxTY3Jp
cHRFbGVtZW50L3NjcmlwdC1sb2FkLWV2ZW50cy5odG1sOiBBZGRlZC4KKwogMjAwNS0xMi0yMiAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQG55cG9wLmNvbT4NDSAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuDQ0gICAgICAgIC0gZml4IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjExOA0gICAgICAgIEludmVzdGlnYXRlIG5vdCB1c2luZyB0aGUg
ZnJhbWVzZXQgY2hhcnNldCBhcyBhIGRlZmF1bHQgZm9yIGZyYW1lcw0NICAgICAgICAqIGZhc3Qv
ZW5jb2RpbmcvZnJhbWUtZGVmYXVsdC1lbmMtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLg0gICAg
ICAgICogZmFzdC9lbmNvZGluZy9mcmFtZS1kZWZhdWx0LWVuYy1leHBlY3RlZC5wbmc6IEFkZGVk
Lg0gICAgICAgICogZmFzdC9lbmNvZGluZy9mcmFtZS1kZWZhdWx0LWVuYy1leHBlY3RlZC50eHQ6
IEFkZGVkLg0gICAgICAgICogZmFzdC9lbmNvZGluZy9mcmFtZS1kZWZhdWx0LWVuYy5odG1sOiBB
ZGRlZC4NICAgICAgICAqIGZhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ZyYW1lLWRlZmF1bHQtZW5j
LWZyYW1lLmh0bWw6IEFkZGVkLg0KIAogMjAwNS0xMi0yMiAgSnVzdGluIEdhcmNpYSAgPGp1c3Rp
bi5nYXJjaWFAYXBwbGUuY29tPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlw
dEVsZW1lbnQvc2NyaXB0LWxvYWQtZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYg
LU5wdSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9hZC1l
dmVudHMtZXhwZWN0ZWQudHh0Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxl
bWVudC9zY3JpcHQtbG9hZC1ldmVudHMtZXhwZWN0ZWQudHh0CTEgSmFuIDE5NzAgMDA6MDA6MDAg
LTAwMDAKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1s
b2FkLWV2ZW50cy1leHBlY3RlZC50eHQJMjMgRGVjIDIwMDUgMDA6MjI6NTYgLTAwMDAKQEAgLTAs
MCArMSw0IEBACitUaGlzIHRlc3RzIGZvciByZWdyZXNzaW9ucyBhZ2FpbnN0IGh0dHA6Ly9idWd6
aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgxMiBHZW5lcmF0ZSBsb2FkIGV2
ZW50cyBmb3IgPHNjcmlwdD4gZWxlbWVudHMuCitUZXN0IHJlc3VsdDogUEFTUworCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWV2ZW50
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KZGlmZiAtTnB1IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3Jp
cHRFbGVtZW50L3NjcmlwdC1sb2FkLWV2ZW50cy5odG1sCi0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9hZC1ldmVudHMuaHRtbAkxIEphbiAxOTcwIDAw
OjAwOjAwIC0wMDAwCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9z
Y3JpcHQtbG9hZC1ldmVudHMuaHRtbAkyMyBEZWMgMjAwNSAwMDoyOTo1NyAtMDAwMApAQCAtMCww
ICsxLDY1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiZsdDtTQ1JJUFQmZ3Q7IGxvYWQgYW5k
IGVycm9yIGV2ZW50czwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cit2
YXIgc3RhdHVzID0gbmV3IEFycmF5KCk7CisKK2Z1bmN0aW9uIGxvYWRlZChpKQoreworICAgIHN0
YXR1c1tpLTFdID0gIkwiOworfQorCitmdW5jdGlvbiBlcnJlZChpKQoreworICAgIHN0YXR1c1tp
LTFdID0gIkUiOworfQorCitmdW5jdGlvbiBlbmRUZXN0KCkKK3sKKyAgICB2YXIgcmVzdWx0cyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIik7CisgICAgCisgICAgaWYgKHN0YXR1
c1swXT09IkUiICYmCisgICAgICAgIHN0YXR1c1sxXT09IkUiICYmCisgICAgICAgIHN0YXR1c1sy
XT09IkwiICYmCisgICAgICAgIHN0YXR1c1szXT09IkwiICYmCisgICAgICAgIHN0YXR1c1s0XT09
IkwiICYmCisgICAgICAgIHN0YXR1c1s1XT09IkwiKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4
dCA9ICJQQVNTIjsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdHMuaW5uZXJUZXh0ID0gIkZBSUw6
ICIgKyBzdGF0dXM7Cit9CisKK2Z1bmN0aW9uIGxvYWRlZDYoKQoreworICAgIGxvYWRlZCg2KTsK
KyAgICBlbmRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKwl2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJzY3JpcHQiICkgOw0K
KwllLnR5cGUJPSAidGV4dC9qYXZhc2NyaXB0IiA7DQorCWRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoIGUgKSA7IA0KKwkNCisJZS5vbmxvYWQgPSBs
b2FkZWQ2OworCWVuZFRlc3QoKTsgLy8gY2FsbGVkIGhlcmUgaW4gY2FzZSB0aGUgbG9hZCBldmVu
IGRvZXNuJ3QgZmlyZQorCWUuc3JjID0gJ3Jlc291cmNlcy9zY3JpcHQtbG9hZC5qcycgOw0KK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIG9ubG9hZD0ibG9hZGVkKDEpIiBvbmVycm9yPSJlcnJlZCgxKSIg
c3JjPSJyZXNvdXJjZXMvY2VydGFpbmx5ZG9lc25vdGV4aXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBvbmxvYWQ9ImxvYWRlZCgyKSIgb25lcnJvcj0iZXJy
ZWQoMikiIHNyYz0icmVzb3VyY2VzL2NlcnRhaW5seWRvZXNub3RleGlzdC5qcyIvPgorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG9ubG9hZD0ibG9hZGVkKDMpIiBvbmVycm9yPSJlcnJl
ZCgzKSIgc3JjPSJyZXNvdXJjZXMvc2NyaXB0LWxvYWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG9ubG9hZD0ibG9hZGVkKDQpIiBvbmVycm9yPSJlcnJlZCg0
KSIgc3JjPSJyZXNvdXJjZXMvc2NyaXB0LWxvYWQuanMiLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICBkb2N1bWVudC53cml0ZSgnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIG9ubG9hZD0ibG9hZGVkKDUpIiBvbmVycm9yPSJlcnJlZCg1KSIgc3JjPSJyZXNvdXJj
ZXMvc2NyaXB0LWxvYWQuanMiPjwvc2NyaXB0JysnPicpOworPC9zY3JpcHQ+CitUaGlzIHRlc3Rz
IGZvciByZWdyZXNzaW9ucyBhZ2FpbnN0IDxpPjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVu
ZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgxMiI+aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3
aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01ODEyPC9hPgorR2VuZXJhdGUgbG9hZCBldmVudHMgZm9y
ICZsdDtzY3JpcHQmZ3Q7IGVsZW1lbnRzPC9pPi4KKzxocj4KKzxwPlRlc3QgcmVzdWx0OiA8c3Bh
biBpZD0icmVzdWx0cyI+PC9zcGFuPjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtbG9hZC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CmRpZmYgLU5wdSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxl
bWVudC9yZXNvdXJjZXMvc2NyaXB0LWxvYWQuanMKLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtbG9hZC5qcwkxIEphbiAxOTcwIDAwOjAw
OjAwIC0wMDAwCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9yZXNv
dXJjZXMvc2NyaXB0LWxvYWQuanMJMjIgRGVjIDIwMDUgMjM6NTI6MzAgLTAwMDAKSW5kZXg6IFdl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL0No
YW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMgpkaWZmIC1wIC11IC1yMS4zMiBXZWJD
b3JlL0NoYW5nZUxvZwotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJMjMgRGVjIDIwMDUgMDc6NTU6MjUg
LTAwMDAJMS4zMgorKysgV2ViQ29yZS9DaGFuZ2VMb2cJMjMgRGVjIDIwMDUgMDk6Mzg6MDIgLTAw
MDAKQEAgLTEsMyArMSwzMyBAQAorMjAwNS0xMi0jIyAgTWl0eiBQZXR0ZWwgIDxvcGVuZGFyd2lu
Lm9yZ0BtaXR6cGV0dGVsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9h
ZC1ldmVudHMuaHRtbAorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2lu
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgxMgorICAgICAgICAgIEdlbmVyYXRlIGxvYWQgZXZlbnRz
IGZvciA8c2NyaXB0PiBlbGVtZW50cworCisgICAgICAgICoga2h0bWwvaHRtbC9odG1sX2hlYWRp
bXBsLmNwcDoKKyAgICAgICAgKEhUTUxTY3JpcHRFbGVtZW50SW1wbDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOiBQYXJzZSB0aGUgb25sb2FkIGFuZCBvbmVycm9yIGF0dHJpYnV0ZXMuCisgICAgICAg
IChIVE1MU2NyaXB0RWxlbWVudEltcGw6OmNsb3NlUmVuZGVyZXIpOiBDYWxsIGJhc2UgY2xhc3Mn
cyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKEhUTUxTY3JpcHRFbGVtZW50SW1wbDo6bm90aWZ5
RmluaXNoZWQpOiBEaXNwYXRjaCBsb2FkIGFuZCBlcnJvciBldmVudHMuCisgICAgICAgICoga2h0
bWwvaHRtbC9odG1scGFyc2VyLmg6CisgICAgICAgICoga2h0bWwvaHRtbC9odG1scGFyc2VyLmNw
cDoKKyAgICAgICAgKEhUTUxQYXJzZXI6OnBhcnNlVG9rZW4pOiBSZXR1cm4gdGhlIG5vZGUgdGhh
dCB3YXMgaW5zZXJ0ZWQuCisgICAgICAgICoga2h0bWwvaHRtbC9odG1sdG9rZW5pemVyLmg6IEFk
ZGVkIHNjcmlwdE5vZGUsIGEgUmVmUHRyIHRvIHRoZSBub2RlIGNvcnJlc3BvbmRpbmcKKyAgICAg
ICAgdG8gdGhlIGN1cnJlbnQgbG9hZCByZXF1ZXN0LgorICAgICAgICAqIGtodG1sL2h0bWwvaHRt
bHRva2VuaXplci5jcHA6CisgICAgICAgIChIVE1MVG9rZW5pemVyOjpzY3JpcHRIYW5kbGVyKTog
UmVzZXQgc2NyaXB0Tm9kZSBpZiBhIGxvYWQgcmVxdWVzdCB3YXMgbm90IG1hZGUuCisgICAgICAg
IChIVE1MVG9rZW5pemVyOjpwYXJzZVRhZyk6IFNldCBzY3JpcHROb2RlIHRvIHRoZSBub2RlIGNy
ZWF0ZWQgZnJvbSB0aGUgc2NyaXB0IHRhZy4KKyAgICAgICAgKEhUTUxUb2tlbml6ZXI6OnByb2Nl
c3NUb2tlbik6IFJldHVybiB0aGUgbm9kZSB0aGF0IHdhcyBpbnNlcnRlZC4KKyAgICAgICAgKEhU
TUxUb2tlbml6ZXI6Om5vdGlmeUZpbmlzaGVkKTogUmVzZXQgc2NyaXB0Tm9kZSBhbmQgZGlzcGF0
Y2ggbG9hZCBhbmQgZXJyb3IgZXZlbnRzLgorICAgICAgICAqIGtodG1sL21pc2MvbG9hZGVyLmg6
CisgICAgICAgIChDYWNoZWRTY3JpcHQ6OmVycm9yT2NjdXJyZWQpOiBBZGRlZC4KKyAgICAgICAg
KiBraHRtbC9taXNjL2xvYWRlci5jcHA6CisgICAgICAgIChDYWNoZWRTY3JpcHQ6OkNhY2hlZFNj
cmlwdCk6CisgICAgICAgIChDYWNoZWRTY3JpcHQ6OmVycm9yKToKKyAgICAgICAgCisKIDIwMDUt
MTItMjIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBueXBvcC5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9oZWFk
aW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvaHRt
bC9odG1sX2hlYWRpbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42MwpkaWZmIC1wIC11
IC1yMS42MyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5jcHAKLS0tIFdlYkNvcmUv
a2h0bWwvaHRtbC9odG1sX2hlYWRpbXBsLmNwcAkxNiBEZWMgMjAwNSAwODowODoxNyAtMDAwMAkx
LjYzCisrKyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5jcHAJMjMgRGVjIDIwMDUg
MDk6Mzg6MDYgLTAwMDAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgImh0bWwvaHRtbF9k
b2N1bWVudGltcGwuaCIKICNpbmNsdWRlICJ4bWwvZG9tX3RleHRpbXBsLmgiCisjaW5jbHVkZSAi
eG1sL0V2ZW50TmFtZXMuaCIKIAogI2luY2x1ZGUgImtodG1sdmlldy5oIgogI2luY2x1ZGUgImto
dG1sX3BhcnQuaCIKQEAgLTQ1LDYgKzQ2LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIERPTTsKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Cit1c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKIHVz
aW5nIG5hbWVzcGFjZSBraHRtbDsKIAogSFRNTEJhc2VFbGVtZW50SW1wbDo6SFRNTEJhc2VFbGVt
ZW50SW1wbChEb2N1bWVudEltcGwgKmRvYykKQEAgLTUwNyw3ICs1MDksOCBAQCB2b2lkIEhUTUxT
Y3JpcHRFbGVtZW50SW1wbDo6Y2hpbGRyZW5DaGFuCiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnRJ
bXBsOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGVJbXBsICphdHRyKQogewot
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gc3JjQXR0cikgeworICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lID0gYXR0ci0+bmFtZSgpOworICAgIGlmIChhdHRyTmFtZSA9PSBzcmNBdHRy
KSB7CiAgICAgICAgIGlmIChtX2V2YWx1YXRlZCB8fCBtX2NhY2hlZFNjcmlwdCB8fCBtX2NyZWF0
ZWRCeVBhcnNlciB8fCAhaW5Eb2N1bWVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01
MjIsNiArNTI1LDEwIEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnRJbXBsOjpwYXJzZU1hcHBlZEEK
ICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0ID0gZ2V0RG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkt
PnJlcXVlc3RTY3JpcHQodXJsLCBjaGFyc2V0KTsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0
LT5yZWYodGhpcyk7CiAgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IG9uZXJy
b3JBdHRyKSB7CisgICAgICAgIHNldEhUTUxFdmVudExpc3RlbmVyKGVycm9yRXZlbnQsIGF0dHIp
OworICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25sb2FkQXR0cikgeworICAgICAgICBzZXRI
VE1MRXZlbnRMaXN0ZW5lcihsb2FkRXZlbnQsIGF0dHIpOwogICAgIH0gZWxzZQogICAgICAgICBI
VE1MRWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAtNTMyLDYg
KzUzOSw3IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnRJbXBsOjpjbG9zZVJlbmRlcmUKICAgICAv
LyBhbGxvdyBkeW5hbWljIGxvYWRpbmcgbGF0ZXIuCiAgICAgaWYgKGdldEF0dHJpYnV0ZShzcmNB
dHRyKS5pc0VtcHR5KCkgJiYgdGV4dCgpLmlzRW1wdHkoKSkKICAgICAgICAgc2V0Q3JlYXRlZEJ5
UGFyc2VyKGZhbHNlKTsKKyAgICBIVE1MRWxlbWVudEltcGw6OmNsb3NlUmVuZGVyZXIoKTsKIH0K
IAogdm9pZCBIVE1MU2NyaXB0RWxlbWVudEltcGw6Omluc2VydGVkSW50b0RvY3VtZW50KCkKQEAg
LTU4MSw3ICs1ODksMTIgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudEltcGw6Om5vdGlmeUZpbmlz
aAogCiAgICAgYXNzZXJ0KGNzID09IG1fY2FjaGVkU2NyaXB0KTsKIAotICAgIGV2YWx1YXRlU2Ny
aXB0KGNzLT51cmwoKSwgY3MtPnNjcmlwdCgpKTsKKyAgICBpZiAoY3MtPmVycm9yT2NjdXJyZWQo
KSkKKyAgICAgICAgZGlzcGF0Y2hIVE1MRXZlbnQoZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgZXZhbHVhdGVTY3JpcHQoY3MtPnVybCgpLCBjcy0+c2NyaXB0
KCkpOworICAgICAgICBkaXNwYXRjaEhUTUxFdmVudChsb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7
CisgICAgfQogCiAgICAgY3MtPmRlcmVmKHRoaXMpOwogICAgIG1fY2FjaGVkU2NyaXB0ID0gMDsK
SW5kZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1scGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9odG1sL2h0bWxwYXJzZXIuY3BwLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjEyNgpkaWZmIC1wIC11IC1yMS4xMjYgV2ViQ29yZS9raHRtbC9odG1s
L2h0bWxwYXJzZXIuY3BwCi0tLSBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHBhcnNlci5jcHAJMjAg
RGVjIDIwMDUgMDk6MTY6NDUgLTAwMDAJMS4xMjYKKysrIFdlYkNvcmUva2h0bWwvaHRtbC9odG1s
cGFyc2VyLmNwcAkyMyBEZWMgMjAwNSAwOTozODoxMCAtMDAwMApAQCAtMTgwLDcgKzE4MCw3IEBA
IHZvaWQgSFRNTFBhcnNlcjo6c2V0Q3VycmVudChET006Ok5vZGVJbXAKICAgICBjdXJyZW50SXNS
ZWZlcmVuY2VkID0gbmV3Q3VycmVudElzUmVmZXJlbmNlZDsKIH0KIAotdm9pZCBIVE1MUGFyc2Vy
OjpwYXJzZVRva2VuKFRva2VuICp0KQorTm9kZUltcGwgKkhUTUxQYXJzZXI6OnBhcnNlVG9rZW4o
VG9rZW4gKnQpCiB7CiAgICAgaWYgKCFkaXNjYXJkX3VudGlsLmlzTnVsbCgpKSB7CiAgICAgICAg
IGlmICh0LT50YWdOYW1lID09IGRpc2NhcmRfdW50aWwgJiYgIXQtPmJlZ2luVGFnKQpAQCAtMTg4
LDcgKzE4OCw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6cGFyc2VUb2tlbihUb2tlbiAqdCkKIAogICAg
ICAgICAvLyBkbyBub3Qgc2tpcCA8L2lmcmFtZT4KICAgICAgICAgaWYgKCFkaXNjYXJkX3VudGls
LmlzTnVsbCgpIHx8IChjdXJyZW50LT5sb2NhbE5hbWUoKSAhPSB0LT50YWdOYW1lKSkKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIC8vIEFw
cGFyZW50bHkgc29tZSBzaXRlcyB1c2UgPC9icj4gaW5zdGVhZCBvZiA8YnI+LiAgQmUgY29tcGF0
aWJsZSB3aXRoIElFIGFuZCBGaXJlZm94IGFuZCB0cmVhdCB0aGlzIGxpa2UgPGJyPi4KQEAgLTE5
Nyw3ICsxOTcsNyBAQCB2b2lkIEhUTUxQYXJzZXI6OnBhcnNlVG9rZW4oVG9rZW4gKnQpCiAKICAg
ICBpZiAoIXQtPmJlZ2luVGFnKSB7CiAgICAgICAgIHByb2Nlc3NDbG9zZVRhZyh0KTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICAvLyBpZ25vcmUgc3Bh
Y2VzLCBpZiB3ZSdyZSBub3QgaW5zaWRlIGEgcGFyYWdyYXBoIG9yIG90aGVyIGlubGluZSBjb2Rl
CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpwYXJzZVRva2VuKFRva2VuICp0
KQogICAgIE5vZGVJbXBsICpuID0gZ2V0Tm9kZSh0KTsKICAgICAvLyBqdXN0IHRvIGJlIHN1cmUs
IGFuZCB0byBjYXRjaCBjdXJyZW50bHkgdW5pbXBsZW1lbnRlZCBzdHVmZgogICAgIGlmICghbikK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxOb2RlSW1w
bD4gcHJvdGVjdE5vZGUobik7CiAKQEAgLTI0MCw3ICsyNDAsMTAgQEAgdm9pZCBIVE1MUGFyc2Vy
OjpwYXJzZVRva2VuKFRva2VuICp0KQogCiAgICAgICAgIGlmIChmb3JtID09IG4pCiAgICAgICAg
ICAgICBmb3JtID0gMDsKKyAgICAgICAgCisgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBy
ZXR1cm4gbjsKIH0KIAogc3RhdGljIGJvb2wgaXNUYWJsZVNlY3Rpb24oTm9kZUltcGwqIG4pCklu
ZGV4OiBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbHBhcnNlci5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjMxCmRpZmYgLXAgLXUgLXIxLjMxIFdlYkNvcmUva2h0bWwvaHRtbC9odG1scGFy
c2VyLmgKLS0tIFdlYkNvcmUva2h0bWwvaHRtbC9odG1scGFyc2VyLmgJMTkgRGVjIDIwMDUgMjA6
NDE6NDYgLTAwMDAJMS4zMQorKysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxwYXJzZXIuaAkyMyBE
ZWMgMjAwNSAwOTozODoxMSAtMDAwMApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgLyoq
CiAgICAgICogcGFyc2VzIG9uZSB0b2tlbiBkZWxpdmVyZWQgYnkgdGhlIHRva2VuaXplcgogICAg
ICAqLwotICAgIHZvaWQgcGFyc2VUb2tlbihraHRtbDo6VG9rZW4gKl90KTsKKyAgICBET006Ok5v
ZGVJbXBsICpwYXJzZVRva2VuKGtodG1sOjpUb2tlbiAqX3QpOwogICAgIAogICAgIC8qKgogICAg
ICAqIHRva2VuaXplciBzYXlzIGl0J3Mgbm90IGdvaW5nIHRvIGJlIHNlbmRpbmcgdXMgYW55IG1v
cmUgdG9rZW5zCkluZGV4OiBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHRva2VuaXplci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvaHRtbC9odG1sdG9rZW5p
emVyLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMjgKZGlmZiAtcCAtdSAtcjEuMTI4IFdl
YkNvcmUva2h0bWwvaHRtbC9odG1sdG9rZW5pemVyLmNwcAotLS0gV2ViQ29yZS9raHRtbC9odG1s
L2h0bWx0b2tlbml6ZXIuY3BwCTIyIERlYyAyMDA1IDE2OjUwOjA3IC0wMDAwCTEuMTI4CisrKyBX
ZWJDb3JlL2todG1sL2h0bWwvaHRtbHRva2VuaXplci5jcHAJMjMgRGVjIDIwMDUgMDk6Mzg6MTYg
LTAwMDAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJraHRtbHZpZXcuaCIKICNpbmNsdWRl
ICJraHRtbF9wYXJ0LmgiCiAjaW5jbHVkZSAieG1sL2RvbV9kb2NpbXBsLmgiCisjaW5jbHVkZSAi
eG1sL0V2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJjc3MvY3NzaGVscGVyLmgiCiAjaW5jbHVkZSAi
ZWNtYS9ranNfcHJveHkuaCIKICNpbmNsdWRlIDxrY2hhcnNldHMuaD4KQEAgLTUzLDYgKzU0LDcg
QEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIERPTTo6SFRNTE5hbWVz
OwordXNpbmcgbmFtZXNwYWNlIERPTTo6RXZlbnROYW1lczsKIAogdXNpbmcgRE9NOjpBdG9taWNT
dHJpbmc7CiB1c2luZyBET006OkF0dHJpYnV0ZUltcGw7CkBAIC02Niw2ICs2OCw3IEBAIHVzaW5n
IERPTTo6dGV4dEF0b207CiB1c2luZyBET006OlF1YWxpZmllZE5hbWU7CiB1c2luZyBET006Ok1h
cHBlZEF0dHJpYnV0ZUltcGw7CiB1c2luZyBET006Ok5hbWVkTWFwcGVkQXR0ck1hcEltcGw7Cit1
c2luZyBET006Ok5vZGVJbXBsOwogCiAjaW5jbHVkZSAia2VudGl0aWVzLmMiCiAKQEAgLTM4Nyw2
ICszOTAsOCBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9rZW5pemVyOjpzY3JpCiAjZW5k
aWYKICAgICAgICAgICAgIGlmICggKGNzID0gcGFyc2VyLT5kb2MoKS0+ZG9jTG9hZGVyKCktPnJl
cXVlc3RTY3JpcHQoc2NyaXB0U3JjLCBzY3JpcHRTcmNDaGFyc2V0KSApKQogICAgICAgICAgICAg
ICAgIHBlbmRpbmdTY3JpcHRzLmVucXVldWUoY3MpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHNjcmlwdE5vZGUgPSAwOwogICAgICAgICB9CiAgICAgICAgIHNjcmlwdFNyYz1R
U3RyaW5nOjpudWxsOwogICAgIH0KQEAgLTM5Niw2ICs0MDEsNyBAQCBIVE1MVG9rZW5pemVyOjpT
dGF0ZSBIVE1MVG9rZW5pemVyOjpzY3JpCiAgICAgICAgIGtkRGVidWcoIDYwMzYgKSA8PCBRU3Ry
aW5nKHNjcmlwdENvZGUsIHNjcmlwdENvZGVTaXplKSA8PCBlbmRsOwogICAgICAgICBrZERlYnVn
KCA2MDM2ICkgPDwgIi0tLUVORCBTQ1JJUFQtLS0iIDw8IGVuZGw7CiAjZW5kaWYKKyAgICAgICAg
c2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgIC8vIFBhcnNlIHNjcmlwdENvZGUgY29udGFpbmluZyA8
c2NyaXB0PiBpbmZvCiAgICAgICAgIGRvU2NyaXB0RXhlYyA9IHRydWU7CiAgICAgfQpAQCAtMTI3
OCwxMSArMTI4NCwxMyBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9rZW5pemVyOjpwYXJz
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwcm9jZXNz
VG9rZW4oKTsKKyAgICAgICAgICAgIE5vZGVJbXBsICpuID0gcHJvY2Vzc1Rva2VuKCk7CiAKICAg
ICAgICAgICAgIGlmICh0YWdOYW1lID09IHByZVRhZykgewogICAgICAgICAgICAgICAgIHN0YXRl
LnNldERpc2NhcmRMRih0cnVlKTsgLy8gRGlzY2FyZCB0aGUgZmlyc3QgTEYgYWZ0ZXIgd2Ugb3Bl
biBhIHByZS4KICAgICAgICAgICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PSBzY3JpcHRUYWcpIHsK
KyAgICAgICAgICAgICAgICBhc3NlcnQoIXNjcmlwdE5vZGUpOworICAgICAgICAgICAgICAgIHNj
cmlwdE5vZGUgPSBuOwogICAgICAgICAgICAgICAgIGlmIChiZWdpblRhZykgewogICAgICAgICAg
ICAgICAgICAgICBzZWFyY2hTdG9wcGVyID0gc2NyaXB0RW5kOwogICAgICAgICAgICAgICAgICAg
ICBzZWFyY2hTdG9wcGVyTGVuID0gODsKQEAgLTE2NjYsNyArMTY3NCw3IEBAIHZvaWQgSFRNTFRv
a2VuaXplcjo6ZmluaXNoKCkKICAgICAgICAgZW5kKCk7IC8vIHRoaXMgYWN0dWFsbHkgY2F1c2Vz
IHVzIHRvIGJlIGRlbGV0ZWQKIH0KIAotdm9pZCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzVG9rZW4o
KQorTm9kZUltcGwgKkhUTUxUb2tlbml6ZXI6OnByb2Nlc3NUb2tlbigpCiB7CiAgICAgS0pTUHJv
eHlJbXBsICpqc1Byb3h5ID0gKHZpZXcgJiYgdmlldy0+cGFydCgpKSA/IHZpZXctPnBhcnQoKS0+
alNjcmlwdCgpIDogMEw7ICAgIAogICAgIGlmIChqc1Byb3h5KQpAQCAtMTY4OSw3ICsxNjk3LDcg
QEAgdm9pZCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzVG9rZW4oKQogICAgICAgICBjdXJyVG9rZW4u
cmVzZXQoKTsKICAgICAgICAgaWYgKGpzUHJveHkpCiAgICAgICAgICAgICBqc1Byb3h5LT5zZXRF
dmVudEhhbmRsZXJMaW5lbm8obGluZW5vK3NyYy5saW5lQ291bnQoKSk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgZGVzdCA9IGJ1ZmZlcjsKQEAgLTE3
MTYsMTUgKzE3MjQsMTcgQEAgdm9pZCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzVG9rZW4oKQogICAg
IH0KICAgICBrZERlYnVnKCA2MDM2ICkgPDwgZW5kbDsKICNlbmRpZgorICAgIE5vZGVJbXBsICpu
ID0gMDsKICAgICAKICAgICBpZiAoIW1fcGFyc2VyU3RvcHBlZCkgewogICAgICAgICAvLyBwYXNz
IHRoZSB0b2tlbiBvdmVyIHRvIHRoZSBwYXJzZXIsIHRoZSBwYXJzZXIgRE9FUyBOT1QgZGVsZXRl
IHRoZSB0b2tlbgotICAgICAgICBwYXJzZXItPnBhcnNlVG9rZW4oJmN1cnJUb2tlbik7CisgICAg
ICAgIG4gPSBwYXJzZXItPnBhcnNlVG9rZW4oJmN1cnJUb2tlbik7CiAgICAgfQogICAgIAogICAg
IGN1cnJUb2tlbi5yZXNldCgpOwogICAgIGlmIChqc1Byb3h5KQogICAgICAgICBqc1Byb3h5LT5z
ZXRFdmVudEhhbmRsZXJMaW5lbm8oMCk7CisgICAgcmV0dXJuIG47CiB9CiAKIEhUTUxUb2tlbml6
ZXI6On5IVE1MVG9rZW5pemVyKCkKQEAgLTE3NzcsMTQgKzE3ODcsMjIgQEAgdm9pZCBIVE1MVG9r
ZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZQogICAgICAgICAvLyBtYWtlIHN1cmUgd2UgZm9y
Z2V0IGFib3V0IHRoZSBzY3JpcHQgYmVmb3JlIHdlIGV4ZWN1dGUgdGhlIG5ldyBvbmUKICAgICAg
ICAgLy8gaW5maW5pdGUgcmVjdXJzaW9uIG1pZ2h0IGhhcHBlbiBvdGhlcndpc2UKICAgICAgICAg
UVN0cmluZyBjYWNoZWRTY3JpcHRVcmwoIGNzLT51cmwoKS5xc3RyaW5nKCkgKTsKKyAgICAgICAg
Ym9vbCBlcnJvck9jY3VycmVkID0gY3MtPmVycm9yT2NjdXJyZWQoKTsKICAgICAgICAgY3MtPmRl
cmVmKHRoaXMpOworICAgICAgICBOb2RlSW1wbCAqbiA9IHNjcmlwdE5vZGUuZ2V0KCk7CisgICAg
ICAgIHNjcmlwdE5vZGUgPSAwOwogCiAjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElO
RwogICAgICAgICBpZiAoIXBhcnNlci0+ZG9jKCktPm93bmVyRWxlbWVudCgpKQogICAgICAgICAg
ICAgcHJpbnRmKCJleHRlcm5hbCBzY3JpcHQgYmVnaW5uaW5nIGV4ZWN1dGlvbiBhdCAlZFxuIiwg
cGFyc2VyLT5kb2MoKS0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKIAotCW1fc3RhdGUgPSBzY3Jp
cHRFeGVjdXRpb24oc2NyaXB0U291cmNlLnFzdHJpbmcoKSwgbV9zdGF0ZSwgY2FjaGVkU2NyaXB0
VXJsKTsKKwlpZiAoZXJyb3JPY2N1cnJlZCkKKyAgICAgICAgICAgIG4tPmRpc3BhdGNoSFRNTEV2
ZW50KGVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgbV9zdGF0ZSA9IHNjcmlwdEV4ZWN1dGlvbihzY3JpcHRTb3VyY2UucXN0cmluZygpLCBtX3N0
YXRlLCBjYWNoZWRTY3JpcHRVcmwpOworICAgICAgICAgICAgbi0+ZGlzcGF0Y2hIVE1MRXZlbnQo
bG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIHN0
YXRlIG9mIHBlbmRpbmdTY3JpcHRzLmlzRW1wdHkoKSBjYW4gY2hhbmdlIGluc2lkZSB0aGUgc2Ny
aXB0RXhlY3V0aW9uKCkKICAgICAgICAgLy8gY2FsbCBhYm92ZSwgc28gdGVzdCBhZnRlcndhcmRz
LgpJbmRleDogV2ViQ29yZS9raHRtbC9odG1sL2h0bWx0b2tlbml6ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9odG1sL2h0bWx0b2tlbml6ZXIuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS40NwpkaWZmIC1wIC11IC1yMS40NyBXZWJDb3JlL2todG1sL2h0
bWwvaHRtbHRva2VuaXplci5oCi0tLSBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHRva2VuaXplci5o
CTIxIE5vdiAyMDA1IDAxOjIwOjE1IC0wMDAwCTEuNDcKKysrIFdlYkNvcmUva2h0bWwvaHRtbC9o
dG1sdG9rZW5pemVyLmgJMjMgRGVjIDIwMDUgMDk6Mzg6MTcgLTAwMDAKQEAgLTEzMiw3ICsxMzIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbmQoKTsKIAogICAgIHZvaWQgcmVzZXQoKTsKLSAg
ICB2b2lkIHByb2Nlc3NUb2tlbigpOworICAgIERPTTo6Tm9kZUltcGwgKnByb2Nlc3NUb2tlbigp
OwogCiAgICAgU3RhdGUgcHJvY2Vzc0xpc3RpbmcoVG9rZW5pemVyU3RyaW5nLCBTdGF0ZSk7CiAg
ICAgU3RhdGUgcGFyc2VDb21tZW50KFRva2VuaXplclN0cmluZyYsIFN0YXRlKTsKQEAgLTM0NCw2
ICszNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gdGhlIG91dHB1dCBvZiB0aGUgc2NyaXB0IHRv
IGJlIHBvc3Rwb25lZCB1bnRpbCBhZnRlciB0aGUgc2NyaXB0IGhhcyBmaW5pc2hlZCBleGVjdXRp
bmcKICAgICBpbnQgbV9leGVjdXRpbmdTY3JpcHQ7CiAgICAgUVB0clF1ZXVlPENhY2hlZFNjcmlw
dD4gcGVuZGluZ1NjcmlwdHM7CisgICAgUmVmUHRyPERPTTo6Tm9kZUltcGw+IHNjcmlwdE5vZGU7
CiAgICAgLy8geW91IGNhbiBwYXVzZSB0aGUgdG9rZW5pemVyIGlmIHlvdSBuZWVkIHRvIGRpc3Bs
YXkgYSBkaWFsb2cgb3Igc29tZXRoaW5nCiAgICAgYm9vbCBvbkhvbGQ7CiAKSW5kZXg6IFdlYkNv
cmUva2h0bWwvbWlzYy9sb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9X
ZWJDb3JlL2todG1sL21pc2MvbG9hZGVyLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44Mwpk
aWZmIC1wIC11IC1yMS44MyBXZWJDb3JlL2todG1sL21pc2MvbG9hZGVyLmNwcAotLS0gV2ViQ29y
ZS9raHRtbC9taXNjL2xvYWRlci5jcHAJMTUgRGVjIDIwMDUgMjI6MzE6NDMgLTAwMDAJMS44Mwor
KysgV2ViQ29yZS9raHRtbC9taXNjL2xvYWRlci5jcHAJMjMgRGVjIDIwMDUgMDk6Mzg6MzAgLTAw
MDAKQEAgLTI2Myw2ICsyNjMsNyBAQCBDYWNoZWRTY3JpcHQ6OkNhY2hlZFNjcmlwdChEb2NMb2Fk
ZXIqIGRsCiAgICAgLy8gQnV0IHNvbWUgd2Vic2l0ZXMgdGhpbmsgdGhlaXIgc2NyaXB0cyBhcmUg
PHNvbWUgd3JvbmcgbWltZXR5cGUgaGVyZT4KICAgICAvLyBhbmQgcmVmdXNlIHRvIHNlcnZlIHRo
ZW0gaWYgd2Ugb25seSBhY2NlcHQgYXBwbGljYXRpb24veC1qYXZhc2NyaXB0LgogICAgIHNldEFj
Y2VwdCggUVN0cmluZzo6ZnJvbUxhdGluMSgiKi8qIikgKTsKKyAgICBtX2Vycm9yT2NjdXJyZWQg
PSBmYWxzZTsKICAgICAvLyBsb2FkIHRoZSBmaWxlCiAgICAgQ2FjaGU6OmxvYWRlcigpLT5sb2Fk
KGRsLCB0aGlzLCBmYWxzZSk7CiAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKQEAgLTI3NSw2ICsyNzYs
NyBAQCBDYWNoZWRTY3JpcHQ6OkNhY2hlZFNjcmlwdChEb2NMb2FkZXIqIGRsCiBDYWNoZWRTY3Jp
cHQ6OkNhY2hlZFNjcmlwdChjb25zdCBET01TdHJpbmcgJnVybCwgY29uc3QgUVN0cmluZyAmc2Ny
aXB0X2RhdGEpCiAgICAgOiBDYWNoZWRPYmplY3QodXJsLCBTY3JpcHQsIEtJTzo6Q0NfVmVyaWZ5
LCAwLCBzY3JpcHRfZGF0YS5sZW5ndGgoKSkKIHsKKyAgICBtX2Vycm9yT2NjdXJyZWQgPSBmYWxz
ZTsKICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKICAgICBtX3N0YXR1cyA9IFBlcnNpc3RlbnQ7CiAg
ICAgbV9jb2RlYyA9IDA7CkBAIC0zMzMsNiArMzM1LDcgQEAgdm9pZCBDYWNoZWRTY3JpcHQ6OmNo
ZWNrTm90aWZ5KCkKIHZvaWQgQ2FjaGVkU2NyaXB0OjplcnJvciggaW50IC8qZXJyKi8sIGNvbnN0
IGNoYXIgKi8qdGV4dCovICkKIHsKICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKKyAgICBtX2Vycm9y
T2NjdXJyZWQgPSB0cnVlOwogICAgIGNoZWNrTm90aWZ5KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
a2h0bWwvbWlzYy9sb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29y
ZS9raHRtbC9taXNjL2xvYWRlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQ5CmRpZmYgLXAg
LXUgLXIxLjQ5IFdlYkNvcmUva2h0bWwvbWlzYy9sb2FkZXIuaAotLS0gV2ViQ29yZS9raHRtbC9t
aXNjL2xvYWRlci5oCTIwIERlYyAyMDA1IDA4OjQ5OjQ4IC0wMDAwCTEuNDkKKysrIFdlYkNvcmUv
a2h0bWwvbWlzYy9sb2FkZXIuaAkyMyBEZWMgMjAwNSAwOTozODozMSAtMDAwMApAQCAtMjkzLDEy
ICsyOTMsMTUgQEAgbmFtZXNwYWNlIGtodG1sCiAJdmlydHVhbCB2b2lkIGVycm9yKCBpbnQgZXJy
LCBjb25zdCBjaGFyICp0ZXh0ICk7CiAKICAgICAgICAgdmlydHVhbCBib29sIHNjaGVkdWxlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZXJyb3JPY2N1
cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCiAJdm9pZCBjaGVja05v
dGlmeSgpOwogCiAgICAgcHJvdGVjdGVkOgogCURPTTo6RE9NU3RyaW5nIG1fc2NyaXB0OwogICAg
ICAgICBRVGV4dENvZGVjKiBtX2NvZGVjOworICAgICAgICBib29sIG1fZXJyb3JPY2N1cnJlZDsK
ICAgICB9OwogCiAgICAgY2xhc3MgSW1hZ2VTb3VyY2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5252</attachid>
            <date>2005-12-23 13:16:50 -0800</date>
            <delta_ts>2005-12-25 08:00:18 -0800</delta_ts>
            <desc>Dispatch load and error events for script elements</desc>
            <filename>5812_r3.patch</filename>
            <type>text/plain</type>
            <size>18389</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE4NApkaWZm
IC1wIC11IC1yMS4xODQgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCi0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJMjMgRGVjIDIwMDUgMDg6MzU6MzggLTAwMDAJMS4xODQKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkyMyBEZWMgMjAwNSAwOTozNzo1MiAtMDAwMApAQCAtMSwzICsxLDE0IEBACisyMDA1
LTEyLSMjICBNaXR6IFBldHRlbCAgPG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gdGVzdCBmb3Ig
aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01ODEyCisgICAg
ICAgICAgR2VuZXJhdGUgbG9hZCBldmVudHMgZm9yIDxzY3JpcHQ+IGVsZW1lbnRzCisKKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LWxvYWQuanM6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2Fk
LWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxTY3Jp
cHRFbGVtZW50L3NjcmlwdC1sb2FkLWV2ZW50cy5odG1sOiBBZGRlZC4KKwogMjAwNS0xMi0yMiAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQG55cG9wLmNvbT4NDSAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuDQ0gICAgICAgIC0gZml4IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjExOA0gICAgICAgIEludmVzdGlnYXRlIG5vdCB1c2luZyB0aGUg
ZnJhbWVzZXQgY2hhcnNldCBhcyBhIGRlZmF1bHQgZm9yIGZyYW1lcw0NICAgICAgICAqIGZhc3Qv
ZW5jb2RpbmcvZnJhbWUtZGVmYXVsdC1lbmMtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLg0gICAg
ICAgICogZmFzdC9lbmNvZGluZy9mcmFtZS1kZWZhdWx0LWVuYy1leHBlY3RlZC5wbmc6IEFkZGVk
Lg0gICAgICAgICogZmFzdC9lbmNvZGluZy9mcmFtZS1kZWZhdWx0LWVuYy1leHBlY3RlZC50eHQ6
IEFkZGVkLg0gICAgICAgICogZmFzdC9lbmNvZGluZy9mcmFtZS1kZWZhdWx0LWVuYy5odG1sOiBB
ZGRlZC4NICAgICAgICAqIGZhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ZyYW1lLWRlZmF1bHQtZW5j
LWZyYW1lLmh0bWw6IEFkZGVkLg0KIAogMjAwNS0xMi0yMiAgSnVzdGluIEdhcmNpYSAgPGp1c3Rp
bi5nYXJjaWFAYXBwbGUuY29tPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlw
dEVsZW1lbnQvc2NyaXB0LWxvYWQtZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYg
LU5wdSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9hZC1l
dmVudHMtZXhwZWN0ZWQudHh0Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxl
bWVudC9zY3JpcHQtbG9hZC1ldmVudHMtZXhwZWN0ZWQudHh0CTEgSmFuIDE5NzAgMDA6MDA6MDAg
LTAwMDAKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1s
b2FkLWV2ZW50cy1leHBlY3RlZC50eHQJMjMgRGVjIDIwMDUgMDA6MjI6NTYgLTAwMDAKQEAgLTAs
MCArMSw0IEBACitUaGlzIHRlc3RzIGZvciByZWdyZXNzaW9ucyBhZ2FpbnN0IGh0dHA6Ly9idWd6
aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgxMiBHZW5lcmF0ZSBsb2FkIGV2
ZW50cyBmb3IgPHNjcmlwdD4gZWxlbWVudHMuCitUZXN0IHJlc3VsdDogUEFTUworCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWV2ZW50
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KZGlmZiAtTnB1IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3Jp
cHRFbGVtZW50L3NjcmlwdC1sb2FkLWV2ZW50cy5odG1sCi0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9hZC1ldmVudHMuaHRtbAkxIEphbiAxOTcwIDAw
OjAwOjAwIC0wMDAwCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9z
Y3JpcHQtbG9hZC1ldmVudHMuaHRtbAkyMyBEZWMgMjAwNSAwMDoyOTo1NyAtMDAwMApAQCAtMCww
ICsxLDY1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiZsdDtTQ1JJUFQmZ3Q7IGxvYWQgYW5k
IGVycm9yIGV2ZW50czwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cit2
YXIgc3RhdHVzID0gbmV3IEFycmF5KCk7CisKK2Z1bmN0aW9uIGxvYWRlZChpKQoreworICAgIHN0
YXR1c1tpLTFdID0gIkwiOworfQorCitmdW5jdGlvbiBlcnJlZChpKQoreworICAgIHN0YXR1c1tp
LTFdID0gIkUiOworfQorCitmdW5jdGlvbiBlbmRUZXN0KCkKK3sKKyAgICB2YXIgcmVzdWx0cyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIik7CisgICAgCisgICAgaWYgKHN0YXR1
c1swXT09IkUiICYmCisgICAgICAgIHN0YXR1c1sxXT09IkUiICYmCisgICAgICAgIHN0YXR1c1sy
XT09IkwiICYmCisgICAgICAgIHN0YXR1c1szXT09IkwiICYmCisgICAgICAgIHN0YXR1c1s0XT09
IkwiICYmCisgICAgICAgIHN0YXR1c1s1XT09IkwiKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4
dCA9ICJQQVNTIjsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdHMuaW5uZXJUZXh0ID0gIkZBSUw6
ICIgKyBzdGF0dXM7Cit9CisKK2Z1bmN0aW9uIGxvYWRlZDYoKQoreworICAgIGxvYWRlZCg2KTsK
KyAgICBlbmRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKwl2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJzY3JpcHQiICkgOw0K
KwllLnR5cGUJPSAidGV4dC9qYXZhc2NyaXB0IiA7DQorCWRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoIGUgKSA7IA0KKwkNCisJZS5vbmxvYWQgPSBs
b2FkZWQ2OworCWVuZFRlc3QoKTsgLy8gY2FsbGVkIGhlcmUgaW4gY2FzZSB0aGUgbG9hZCBldmVu
IGRvZXNuJ3QgZmlyZQorCWUuc3JjID0gJ3Jlc291cmNlcy9zY3JpcHQtbG9hZC5qcycgOw0KK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIG9ubG9hZD0ibG9hZGVkKDEpIiBvbmVycm9yPSJlcnJlZCgxKSIg
c3JjPSJyZXNvdXJjZXMvY2VydGFpbmx5ZG9lc25vdGV4aXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBvbmxvYWQ9ImxvYWRlZCgyKSIgb25lcnJvcj0iZXJy
ZWQoMikiIHNyYz0icmVzb3VyY2VzL2NlcnRhaW5seWRvZXNub3RleGlzdC5qcyIvPgorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG9ubG9hZD0ibG9hZGVkKDMpIiBvbmVycm9yPSJlcnJl
ZCgzKSIgc3JjPSJyZXNvdXJjZXMvc2NyaXB0LWxvYWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG9ubG9hZD0ibG9hZGVkKDQpIiBvbmVycm9yPSJlcnJlZCg0
KSIgc3JjPSJyZXNvdXJjZXMvc2NyaXB0LWxvYWQuanMiLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICBkb2N1bWVudC53cml0ZSgnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIG9ubG9hZD0ibG9hZGVkKDUpIiBvbmVycm9yPSJlcnJlZCg1KSIgc3JjPSJyZXNvdXJj
ZXMvc2NyaXB0LWxvYWQuanMiPjwvc2NyaXB0JysnPicpOworPC9zY3JpcHQ+CitUaGlzIHRlc3Rz
IGZvciByZWdyZXNzaW9ucyBhZ2FpbnN0IDxpPjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVu
ZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgxMiI+aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3
aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01ODEyPC9hPgorR2VuZXJhdGUgbG9hZCBldmVudHMgZm9y
ICZsdDtzY3JpcHQmZ3Q7IGVsZW1lbnRzPC9pPi4KKzxocj4KKzxwPlRlc3QgcmVzdWx0OiA8c3Bh
biBpZD0icmVzdWx0cyI+PC9zcGFuPjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtbG9hZC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CmRpZmYgLU5wdSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxl
bWVudC9yZXNvdXJjZXMvc2NyaXB0LWxvYWQuanMKLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtbG9hZC5qcwkxIEphbiAxOTcwIDAwOjAw
OjAwIC0wMDAwCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9yZXNv
dXJjZXMvc2NyaXB0LWxvYWQuanMJMjIgRGVjIDIwMDUgMjM6NTI6MzAgLTAwMDAKSW5kZXg6IFdl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL0No
YW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMgpkaWZmIC1wIC11IC1yMS4zMiBXZWJD
b3JlL0NoYW5nZUxvZwotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJMjMgRGVjIDIwMDUgMDc6NTU6MjUg
LTAwMDAJMS4zMgorKysgV2ViQ29yZS9DaGFuZ2VMb2cJMjMgRGVjIDIwMDUgMDk6Mzg6MDIgLTAw
MDAKQEAgLTEsMyArMSwzMyBAQAorMjAwNS0xMi0jIyAgTWl0eiBQZXR0ZWwgIDxvcGVuZGFyd2lu
Lm9yZ0BtaXR6cGV0dGVsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9h
ZC1ldmVudHMuaHRtbAorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2lu
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgxMgorICAgICAgICAgIEdlbmVyYXRlIGxvYWQgZXZlbnRz
IGZvciA8c2NyaXB0PiBlbGVtZW50cworCisgICAgICAgICoga2h0bWwvaHRtbC9odG1sX2hlYWRp
bXBsLmNwcDoKKyAgICAgICAgKEhUTUxTY3JpcHRFbGVtZW50SW1wbDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOiBQYXJzZSB0aGUgb25sb2FkIGFuZCBvbmVycm9yIGF0dHJpYnV0ZXMuCisgICAgICAg
IChIVE1MU2NyaXB0RWxlbWVudEltcGw6OmNsb3NlUmVuZGVyZXIpOiBDYWxsIGJhc2UgY2xhc3Mn
cyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKEhUTUxTY3JpcHRFbGVtZW50SW1wbDo6bm90aWZ5
RmluaXNoZWQpOiBEaXNwYXRjaCBsb2FkIGFuZCBlcnJvciBldmVudHMuCisgICAgICAgICoga2h0
bWwvaHRtbC9odG1scGFyc2VyLmg6CisgICAgICAgICoga2h0bWwvaHRtbC9odG1scGFyc2VyLmNw
cDoKKyAgICAgICAgKEhUTUxQYXJzZXI6OnBhcnNlVG9rZW4pOiBSZXR1cm4gdGhlIG5vZGUgdGhh
dCB3YXMgaW5zZXJ0ZWQuCisgICAgICAgICoga2h0bWwvaHRtbC9odG1sdG9rZW5pemVyLmg6IEFk
ZGVkIHNjcmlwdE5vZGUsIGEgUmVmUHRyIHRvIHRoZSBub2RlIGNvcnJlc3BvbmRpbmcKKyAgICAg
ICAgdG8gdGhlIGN1cnJlbnQgbG9hZCByZXF1ZXN0LgorICAgICAgICAqIGtodG1sL2h0bWwvaHRt
bHRva2VuaXplci5jcHA6CisgICAgICAgIChIVE1MVG9rZW5pemVyOjpzY3JpcHRIYW5kbGVyKTog
UmVzZXQgc2NyaXB0Tm9kZSBpZiBhIGxvYWQgcmVxdWVzdCB3YXMgbm90IG1hZGUuCisgICAgICAg
IChIVE1MVG9rZW5pemVyOjpwYXJzZVRhZyk6IFNldCBzY3JpcHROb2RlIHRvIHRoZSBub2RlIGNy
ZWF0ZWQgZnJvbSB0aGUgc2NyaXB0IHRhZy4KKyAgICAgICAgKEhUTUxUb2tlbml6ZXI6OnByb2Nl
c3NUb2tlbik6IFJldHVybiB0aGUgbm9kZSB0aGF0IHdhcyBpbnNlcnRlZC4KKyAgICAgICAgKEhU
TUxUb2tlbml6ZXI6Om5vdGlmeUZpbmlzaGVkKTogUmVzZXQgc2NyaXB0Tm9kZSBhbmQgZGlzcGF0
Y2ggbG9hZCBhbmQgZXJyb3IgZXZlbnRzLgorICAgICAgICAqIGtodG1sL21pc2MvbG9hZGVyLmg6
CisgICAgICAgIChDYWNoZWRTY3JpcHQ6OmVycm9yT2NjdXJyZWQpOiBBZGRlZC4KKyAgICAgICAg
KiBraHRtbC9taXNjL2xvYWRlci5jcHA6CisgICAgICAgIChDYWNoZWRTY3JpcHQ6OkNhY2hlZFNj
cmlwdCk6CisgICAgICAgIChDYWNoZWRTY3JpcHQ6OmVycm9yKToKKyAgICAgICAgCisKIDIwMDUt
MTItMjIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBueXBvcC5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9oZWFk
aW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvaHRt
bC9odG1sX2hlYWRpbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42MwpkaWZmIC1wIC11
IC1yMS42MyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5jcHAKLS0tIFdlYkNvcmUv
a2h0bWwvaHRtbC9odG1sX2hlYWRpbXBsLmNwcAkxNiBEZWMgMjAwNSAwODowODoxNyAtMDAwMAkx
LjYzCisrKyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5jcHAJMjMgRGVjIDIwMDUg
MDk6Mzg6MDYgLTAwMDAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgImh0bWwvaHRtbF9k
b2N1bWVudGltcGwuaCIKICNpbmNsdWRlICJ4bWwvZG9tX3RleHRpbXBsLmgiCisjaW5jbHVkZSAi
eG1sL0V2ZW50TmFtZXMuaCIKIAogI2luY2x1ZGUgImtodG1sdmlldy5oIgogI2luY2x1ZGUgImto
dG1sX3BhcnQuaCIKQEAgLTQ1LDYgKzQ2LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIERPTTsKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Cit1c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKIHVz
aW5nIG5hbWVzcGFjZSBraHRtbDsKIAogSFRNTEJhc2VFbGVtZW50SW1wbDo6SFRNTEJhc2VFbGVt
ZW50SW1wbChEb2N1bWVudEltcGwgKmRvYykKQEAgLTUwNyw3ICs1MDksOCBAQCB2b2lkIEhUTUxT
Y3JpcHRFbGVtZW50SW1wbDo6Y2hpbGRyZW5DaGFuCiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnRJ
bXBsOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGVJbXBsICphdHRyKQogewot
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gc3JjQXR0cikgeworICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lID0gYXR0ci0+bmFtZSgpOworICAgIGlmIChhdHRyTmFtZSA9PSBzcmNBdHRy
KSB7CiAgICAgICAgIGlmIChtX2V2YWx1YXRlZCB8fCBtX2NhY2hlZFNjcmlwdCB8fCBtX2NyZWF0
ZWRCeVBhcnNlciB8fCAhaW5Eb2N1bWVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01
MjIsNiArNTI1LDEwIEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnRJbXBsOjpwYXJzZU1hcHBlZEEK
ICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0ID0gZ2V0RG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkt
PnJlcXVlc3RTY3JpcHQodXJsLCBjaGFyc2V0KTsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0
LT5yZWYodGhpcyk7CiAgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IG9uZXJy
b3JBdHRyKSB7CisgICAgICAgIHNldEhUTUxFdmVudExpc3RlbmVyKGVycm9yRXZlbnQsIGF0dHIp
OworICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25sb2FkQXR0cikgeworICAgICAgICBzZXRI
VE1MRXZlbnRMaXN0ZW5lcihsb2FkRXZlbnQsIGF0dHIpOwogICAgIH0gZWxzZQogICAgICAgICBI
VE1MRWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAtNTMyLDYg
KzUzOSw3IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnRJbXBsOjpjbG9zZVJlbmRlcmUKICAgICAv
LyBhbGxvdyBkeW5hbWljIGxvYWRpbmcgbGF0ZXIuCiAgICAgaWYgKGdldEF0dHJpYnV0ZShzcmNB
dHRyKS5pc0VtcHR5KCkgJiYgdGV4dCgpLmlzRW1wdHkoKSkKICAgICAgICAgc2V0Q3JlYXRlZEJ5
UGFyc2VyKGZhbHNlKTsKKyAgICBIVE1MRWxlbWVudEltcGw6OmNsb3NlUmVuZGVyZXIoKTsKIH0K
IAogdm9pZCBIVE1MU2NyaXB0RWxlbWVudEltcGw6Omluc2VydGVkSW50b0RvY3VtZW50KCkKQEAg
LTU4MSw3ICs1ODksMTIgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudEltcGw6Om5vdGlmeUZpbmlz
aAogCiAgICAgYXNzZXJ0KGNzID09IG1fY2FjaGVkU2NyaXB0KTsKIAotICAgIGV2YWx1YXRlU2Ny
aXB0KGNzLT51cmwoKSwgY3MtPnNjcmlwdCgpKTsKKyAgICBpZiAoY3MtPmVycm9yT2NjdXJyZWQo
KSkKKyAgICAgICAgZGlzcGF0Y2hIVE1MRXZlbnQoZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgZXZhbHVhdGVTY3JpcHQoY3MtPnVybCgpLCBjcy0+c2NyaXB0
KCkpOworICAgICAgICBkaXNwYXRjaEhUTUxFdmVudChsb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7
CisgICAgfQogCiAgICAgY3MtPmRlcmVmKHRoaXMpOwogICAgIG1fY2FjaGVkU2NyaXB0ID0gMDsK
SW5kZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1scGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9odG1sL2h0bWxwYXJzZXIuY3BwLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjEyNgpkaWZmIC1wIC11IC1yMS4xMjYgV2ViQ29yZS9raHRtbC9odG1s
L2h0bWxwYXJzZXIuY3BwCi0tLSBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHBhcnNlci5jcHAJMjAg
RGVjIDIwMDUgMDk6MTY6NDUgLTAwMDAJMS4xMjYKKysrIFdlYkNvcmUva2h0bWwvaHRtbC9odG1s
cGFyc2VyLmNwcAkyMyBEZWMgMjAwNSAwOTozODoxMCAtMDAwMApAQCAtMTgwLDcgKzE4MCw3IEBA
IHZvaWQgSFRNTFBhcnNlcjo6c2V0Q3VycmVudChET006Ok5vZGVJbXAKICAgICBjdXJyZW50SXNS
ZWZlcmVuY2VkID0gbmV3Q3VycmVudElzUmVmZXJlbmNlZDsKIH0KIAotdm9pZCBIVE1MUGFyc2Vy
OjpwYXJzZVRva2VuKFRva2VuICp0KQorTm9kZUltcGwgKkhUTUxQYXJzZXI6OnBhcnNlVG9rZW4o
VG9rZW4gKnQpCiB7CiAgICAgaWYgKCFkaXNjYXJkX3VudGlsLmlzTnVsbCgpKSB7CiAgICAgICAg
IGlmICh0LT50YWdOYW1lID09IGRpc2NhcmRfdW50aWwgJiYgIXQtPmJlZ2luVGFnKQpAQCAtMTg4
LDcgKzE4OCw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6cGFyc2VUb2tlbihUb2tlbiAqdCkKIAogICAg
ICAgICAvLyBkbyBub3Qgc2tpcCA8L2lmcmFtZT4KICAgICAgICAgaWYgKCFkaXNjYXJkX3VudGls
LmlzTnVsbCgpIHx8IChjdXJyZW50LT5sb2NhbE5hbWUoKSAhPSB0LT50YWdOYW1lKSkKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIC8vIEFw
cGFyZW50bHkgc29tZSBzaXRlcyB1c2UgPC9icj4gaW5zdGVhZCBvZiA8YnI+LiAgQmUgY29tcGF0
aWJsZSB3aXRoIElFIGFuZCBGaXJlZm94IGFuZCB0cmVhdCB0aGlzIGxpa2UgPGJyPi4KQEAgLTE5
Nyw3ICsxOTcsNyBAQCB2b2lkIEhUTUxQYXJzZXI6OnBhcnNlVG9rZW4oVG9rZW4gKnQpCiAKICAg
ICBpZiAoIXQtPmJlZ2luVGFnKSB7CiAgICAgICAgIHByb2Nlc3NDbG9zZVRhZyh0KTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICAvLyBpZ25vcmUgc3Bh
Y2VzLCBpZiB3ZSdyZSBub3QgaW5zaWRlIGEgcGFyYWdyYXBoIG9yIG90aGVyIGlubGluZSBjb2Rl
CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpwYXJzZVRva2VuKFRva2VuICp0
KQogICAgIE5vZGVJbXBsICpuID0gZ2V0Tm9kZSh0KTsKICAgICAvLyBqdXN0IHRvIGJlIHN1cmUs
IGFuZCB0byBjYXRjaCBjdXJyZW50bHkgdW5pbXBsZW1lbnRlZCBzdHVmZgogICAgIGlmICghbikK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxOb2RlSW1w
bD4gcHJvdGVjdE5vZGUobik7CiAKQEAgLTI0MCw3ICsyNDAsMTAgQEAgdm9pZCBIVE1MUGFyc2Vy
OjpwYXJzZVRva2VuKFRva2VuICp0KQogCiAgICAgICAgIGlmIChmb3JtID09IG4pCiAgICAgICAg
ICAgICBmb3JtID0gMDsKKyAgICAgICAgCisgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBy
ZXR1cm4gbjsKIH0KIAogc3RhdGljIGJvb2wgaXNUYWJsZVNlY3Rpb24oTm9kZUltcGwqIG4pCklu
ZGV4OiBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbHBhcnNlci5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjMxCmRpZmYgLXAgLXUgLXIxLjMxIFdlYkNvcmUva2h0bWwvaHRtbC9odG1scGFy
c2VyLmgKLS0tIFdlYkNvcmUva2h0bWwvaHRtbC9odG1scGFyc2VyLmgJMTkgRGVjIDIwMDUgMjA6
NDE6NDYgLTAwMDAJMS4zMQorKysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxwYXJzZXIuaAkyMyBE
ZWMgMjAwNSAwOTozODoxMSAtMDAwMApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgLyoq
CiAgICAgICogcGFyc2VzIG9uZSB0b2tlbiBkZWxpdmVyZWQgYnkgdGhlIHRva2VuaXplcgogICAg
ICAqLwotICAgIHZvaWQgcGFyc2VUb2tlbihraHRtbDo6VG9rZW4gKl90KTsKKyAgICBET006Ok5v
ZGVJbXBsICpwYXJzZVRva2VuKGtodG1sOjpUb2tlbiAqX3QpOwogICAgIAogICAgIC8qKgogICAg
ICAqIHRva2VuaXplciBzYXlzIGl0J3Mgbm90IGdvaW5nIHRvIGJlIHNlbmRpbmcgdXMgYW55IG1v
cmUgdG9rZW5zCkluZGV4OiBXZWJDb3JlL2todG1sL2h0bWwvaHRtbHRva2VuaXplci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvaHRtbC9odG1sdG9rZW5p
emVyLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMjgKZGlmZiAtcCAtdSAtcjEuMTI4IFdl
YkNvcmUva2h0bWwvaHRtbC9odG1sdG9rZW5pemVyLmNwcAotLS0gV2ViQ29yZS9raHRtbC9odG1s
L2h0bWx0b2tlbml6ZXIuY3BwCTIyIERlYyAyMDA1IDE2OjUwOjA3IC0wMDAwCTEuMTI4CisrKyBX
ZWJDb3JlL2todG1sL2h0bWwvaHRtbHRva2VuaXplci5jcHAJMjMgRGVjIDIwMDUgMjE6MTk6Mjcg
LTAwMDAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJraHRtbHZpZXcuaCIKICNpbmNsdWRl
ICJraHRtbF9wYXJ0LmgiCiAjaW5jbHVkZSAieG1sL2RvbV9kb2NpbXBsLmgiCisjaW5jbHVkZSAi
eG1sL0V2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJjc3MvY3NzaGVscGVyLmgiCiAjaW5jbHVkZSAi
ZWNtYS9ranNfcHJveHkuaCIKICNpbmNsdWRlIDxrY2hhcnNldHMuaD4KQEAgLTUzLDYgKzU0LDcg
QEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIERPTTo6SFRNTE5hbWVz
OwordXNpbmcgbmFtZXNwYWNlIERPTTo6RXZlbnROYW1lczsKIAogdXNpbmcgRE9NOjpBdG9taWNT
dHJpbmc7CiB1c2luZyBET006OkF0dHJpYnV0ZUltcGw7CkBAIC02Niw2ICs2OCw3IEBAIHVzaW5n
IERPTTo6dGV4dEF0b207CiB1c2luZyBET006OlF1YWxpZmllZE5hbWU7CiB1c2luZyBET006Ok1h
cHBlZEF0dHJpYnV0ZUltcGw7CiB1c2luZyBET006Ok5hbWVkTWFwcGVkQXR0ck1hcEltcGw7Cit1
c2luZyBET006Ok5vZGVJbXBsOwogCiAjaW5jbHVkZSAia2VudGl0aWVzLmMiCiAKQEAgLTM4Nyw2
ICszOTAsOCBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9rZW5pemVyOjpzY3JpCiAjZW5k
aWYKICAgICAgICAgICAgIGlmICggKGNzID0gcGFyc2VyLT5kb2MoKS0+ZG9jTG9hZGVyKCktPnJl
cXVlc3RTY3JpcHQoc2NyaXB0U3JjLCBzY3JpcHRTcmNDaGFyc2V0KSApKQogICAgICAgICAgICAg
ICAgIHBlbmRpbmdTY3JpcHRzLmVucXVldWUoY3MpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHNjcmlwdE5vZGUgPSAwOwogICAgICAgICB9CiAgICAgICAgIHNjcmlwdFNyYz1R
U3RyaW5nOjpudWxsOwogICAgIH0KQEAgLTM5Niw2ICs0MDEsNyBAQCBIVE1MVG9rZW5pemVyOjpT
dGF0ZSBIVE1MVG9rZW5pemVyOjpzY3JpCiAgICAgICAgIGtkRGVidWcoIDYwMzYgKSA8PCBRU3Ry
aW5nKHNjcmlwdENvZGUsIHNjcmlwdENvZGVTaXplKSA8PCBlbmRsOwogICAgICAgICBrZERlYnVn
KCA2MDM2ICkgPDwgIi0tLUVORCBTQ1JJUFQtLS0iIDw8IGVuZGw7CiAjZW5kaWYKKyAgICAgICAg
c2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgIC8vIFBhcnNlIHNjcmlwdENvZGUgY29udGFpbmluZyA8
c2NyaXB0PiBpbmZvCiAgICAgICAgIGRvU2NyaXB0RXhlYyA9IHRydWU7CiAgICAgfQpAQCAtMTI3
OCwxMSArMTI4NCwxMyBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9rZW5pemVyOjpwYXJz
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwcm9jZXNz
VG9rZW4oKTsKKyAgICAgICAgICAgIE5vZGVJbXBsICpuID0gcHJvY2Vzc1Rva2VuKCk7CiAKICAg
ICAgICAgICAgIGlmICh0YWdOYW1lID09IHByZVRhZykgewogICAgICAgICAgICAgICAgIHN0YXRl
LnNldERpc2NhcmRMRih0cnVlKTsgLy8gRGlzY2FyZCB0aGUgZmlyc3QgTEYgYWZ0ZXIgd2Ugb3Bl
biBhIHByZS4KICAgICAgICAgICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PSBzY3JpcHRUYWcpIHsK
KyAgICAgICAgICAgICAgICBhc3NlcnQoIXNjcmlwdE5vZGUpOworICAgICAgICAgICAgICAgIHNj
cmlwdE5vZGUgPSBuOwogICAgICAgICAgICAgICAgIGlmIChiZWdpblRhZykgewogICAgICAgICAg
ICAgICAgICAgICBzZWFyY2hTdG9wcGVyID0gc2NyaXB0RW5kOwogICAgICAgICAgICAgICAgICAg
ICBzZWFyY2hTdG9wcGVyTGVuID0gODsKQEAgLTE2NjYsNyArMTY3NCw3IEBAIHZvaWQgSFRNTFRv
a2VuaXplcjo6ZmluaXNoKCkKICAgICAgICAgZW5kKCk7IC8vIHRoaXMgYWN0dWFsbHkgY2F1c2Vz
IHVzIHRvIGJlIGRlbGV0ZWQKIH0KIAotdm9pZCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzVG9rZW4o
KQorTm9kZUltcGwgKkhUTUxUb2tlbml6ZXI6OnByb2Nlc3NUb2tlbigpCiB7CiAgICAgS0pTUHJv
eHlJbXBsICpqc1Byb3h5ID0gKHZpZXcgJiYgdmlldy0+cGFydCgpKSA/IHZpZXctPnBhcnQoKS0+
alNjcmlwdCgpIDogMEw7ICAgIAogICAgIGlmIChqc1Byb3h5KQpAQCAtMTY4OSw3ICsxNjk3LDcg
QEAgdm9pZCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzVG9rZW4oKQogICAgICAgICBjdXJyVG9rZW4u
cmVzZXQoKTsKICAgICAgICAgaWYgKGpzUHJveHkpCiAgICAgICAgICAgICBqc1Byb3h5LT5zZXRF
dmVudEhhbmRsZXJMaW5lbm8obGluZW5vK3NyYy5saW5lQ291bnQoKSk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgZGVzdCA9IGJ1ZmZlcjsKQEAgLTE3
MTYsMTUgKzE3MjQsMTcgQEAgdm9pZCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzVG9rZW4oKQogICAg
IH0KICAgICBrZERlYnVnKCA2MDM2ICkgPDwgZW5kbDsKICNlbmRpZgorICAgIE5vZGVJbXBsICpu
ID0gMDsKICAgICAKICAgICBpZiAoIW1fcGFyc2VyU3RvcHBlZCkgewogICAgICAgICAvLyBwYXNz
IHRoZSB0b2tlbiBvdmVyIHRvIHRoZSBwYXJzZXIsIHRoZSBwYXJzZXIgRE9FUyBOT1QgZGVsZXRl
IHRoZSB0b2tlbgotICAgICAgICBwYXJzZXItPnBhcnNlVG9rZW4oJmN1cnJUb2tlbik7CisgICAg
ICAgIG4gPSBwYXJzZXItPnBhcnNlVG9rZW4oJmN1cnJUb2tlbik7CiAgICAgfQogICAgIAogICAg
IGN1cnJUb2tlbi5yZXNldCgpOwogICAgIGlmIChqc1Byb3h5KQogICAgICAgICBqc1Byb3h5LT5z
ZXRFdmVudEhhbmRsZXJMaW5lbm8oMCk7CisgICAgcmV0dXJuIG47CiB9CiAKIEhUTUxUb2tlbml6
ZXI6On5IVE1MVG9rZW5pemVyKCkKQEAgLTE3NzcsMTQgKzE3ODcsMjIgQEAgdm9pZCBIVE1MVG9r
ZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZQogICAgICAgICAvLyBtYWtlIHN1cmUgd2UgZm9y
Z2V0IGFib3V0IHRoZSBzY3JpcHQgYmVmb3JlIHdlIGV4ZWN1dGUgdGhlIG5ldyBvbmUKICAgICAg
ICAgLy8gaW5maW5pdGUgcmVjdXJzaW9uIG1pZ2h0IGhhcHBlbiBvdGhlcndpc2UKICAgICAgICAg
UVN0cmluZyBjYWNoZWRTY3JpcHRVcmwoIGNzLT51cmwoKS5xc3RyaW5nKCkgKTsKKyAgICAgICAg
Ym9vbCBlcnJvck9jY3VycmVkID0gY3MtPmVycm9yT2NjdXJyZWQoKTsKICAgICAgICAgY3MtPmRl
cmVmKHRoaXMpOworICAgICAgICBSZWZQdHI8Tm9kZUltcGw+IG4gPSBzY3JpcHROb2RlOworICAg
ICAgICBzY3JpcHROb2RlID0gMDsKIAogI2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJ
TkcKICAgICAgICAgaWYgKCFwYXJzZXItPmRvYygpLT5vd25lckVsZW1lbnQoKSkKICAgICAgICAg
ICAgIHByaW50ZigiZXh0ZXJuYWwgc2NyaXB0IGJlZ2lubmluZyBleGVjdXRpb24gYXQgJWRcbiIs
IHBhcnNlci0+ZG9jKCktPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCiAKLQltX3N0YXRlID0gc2Ny
aXB0RXhlY3V0aW9uKHNjcmlwdFNvdXJjZS5xc3RyaW5nKCksIG1fc3RhdGUsIGNhY2hlZFNjcmlw
dFVybCk7CisJaWYgKGVycm9yT2NjdXJyZWQpCisgICAgICAgICAgICBuLT5kaXNwYXRjaEhUTUxF
dmVudChlcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIG1fc3RhdGUgPSBzY3JpcHRFeGVjdXRpb24oc2NyaXB0U291cmNlLnFzdHJpbmcoKSwgbV9z
dGF0ZSwgY2FjaGVkU2NyaXB0VXJsKTsKKyAgICAgICAgICAgIG4tPmRpc3BhdGNoSFRNTEV2ZW50
KGxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBz
dGF0ZSBvZiBwZW5kaW5nU2NyaXB0cy5pc0VtcHR5KCkgY2FuIGNoYW5nZSBpbnNpZGUgdGhlIHNj
cmlwdEV4ZWN1dGlvbigpCiAgICAgICAgIC8vIGNhbGwgYWJvdmUsIHNvIHRlc3QgYWZ0ZXJ3YXJk
cy4KSW5kZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sdG9rZW5pemVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvaHRtbC9odG1sdG9rZW5pemVyLmgsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNDcKZGlmZiAtcCAtdSAtcjEuNDcgV2ViQ29yZS9raHRtbC9o
dG1sL2h0bWx0b2tlbml6ZXIuaAotLS0gV2ViQ29yZS9raHRtbC9odG1sL2h0bWx0b2tlbml6ZXIu
aAkyMSBOb3YgMjAwNSAwMToyMDoxNSAtMDAwMAkxLjQ3CisrKyBXZWJDb3JlL2todG1sL2h0bWwv
aHRtbHRva2VuaXplci5oCTIzIERlYyAyMDA1IDA5OjM4OjE3IC0wMDAwCkBAIC0xMzIsNyArMTMy
LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5kKCk7CiAKICAgICB2b2lkIHJlc2V0KCk7Ci0g
ICAgdm9pZCBwcm9jZXNzVG9rZW4oKTsKKyAgICBET006Ok5vZGVJbXBsICpwcm9jZXNzVG9rZW4o
KTsKIAogICAgIFN0YXRlIHByb2Nlc3NMaXN0aW5nKFRva2VuaXplclN0cmluZywgU3RhdGUpOwog
ICAgIFN0YXRlIHBhcnNlQ29tbWVudChUb2tlbml6ZXJTdHJpbmcmLCBTdGF0ZSk7CkBAIC0zNDQs
NiArMzQ0LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIHRoZSBvdXRwdXQgb2YgdGhlIHNjcmlwdCB0
byBiZSBwb3N0cG9uZWQgdW50aWwgYWZ0ZXIgdGhlIHNjcmlwdCBoYXMgZmluaXNoZWQgZXhlY3V0
aW5nCiAgICAgaW50IG1fZXhlY3V0aW5nU2NyaXB0OwogICAgIFFQdHJRdWV1ZTxDYWNoZWRTY3Jp
cHQ+IHBlbmRpbmdTY3JpcHRzOworICAgIFJlZlB0cjxET006Ok5vZGVJbXBsPiBzY3JpcHROb2Rl
OwogICAgIC8vIHlvdSBjYW4gcGF1c2UgdGhlIHRva2VuaXplciBpZiB5b3UgbmVlZCB0byBkaXNw
bGF5IGEgZGlhbG9nIG9yIHNvbWV0aGluZwogICAgIGJvb2wgb25Ib2xkOwogCkluZGV4OiBXZWJD
b3JlL2todG1sL21pc2MvbG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
V2ViQ29yZS9raHRtbC9taXNjL2xvYWRlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuODMK
ZGlmZiAtcCAtdSAtcjEuODMgV2ViQ29yZS9raHRtbC9taXNjL2xvYWRlci5jcHAKLS0tIFdlYkNv
cmUva2h0bWwvbWlzYy9sb2FkZXIuY3BwCTE1IERlYyAyMDA1IDIyOjMxOjQzIC0wMDAwCTEuODMK
KysrIFdlYkNvcmUva2h0bWwvbWlzYy9sb2FkZXIuY3BwCTIzIERlYyAyMDA1IDA5OjM4OjMwIC0w
MDAwCkBAIC0yNjMsNiArMjYzLDcgQEAgQ2FjaGVkU2NyaXB0OjpDYWNoZWRTY3JpcHQoRG9jTG9h
ZGVyKiBkbAogICAgIC8vIEJ1dCBzb21lIHdlYnNpdGVzIHRoaW5rIHRoZWlyIHNjcmlwdHMgYXJl
IDxzb21lIHdyb25nIG1pbWV0eXBlIGhlcmU+CiAgICAgLy8gYW5kIHJlZnVzZSB0byBzZXJ2ZSB0
aGVtIGlmIHdlIG9ubHkgYWNjZXB0IGFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdC4KICAgICBzZXRB
Y2NlcHQoIFFTdHJpbmc6OmZyb21MYXRpbjEoIiovKiIpICk7CisgICAgbV9lcnJvck9jY3VycmVk
ID0gZmFsc2U7CiAgICAgLy8gbG9hZCB0aGUgZmlsZQogICAgIENhY2hlOjpsb2FkZXIoKS0+bG9h
ZChkbCwgdGhpcywgZmFsc2UpOwogICAgIG1fbG9hZGluZyA9IHRydWU7CkBAIC0yNzUsNiArMjc2
LDcgQEAgQ2FjaGVkU2NyaXB0OjpDYWNoZWRTY3JpcHQoRG9jTG9hZGVyKiBkbAogQ2FjaGVkU2Ny
aXB0OjpDYWNoZWRTY3JpcHQoY29uc3QgRE9NU3RyaW5nICZ1cmwsIGNvbnN0IFFTdHJpbmcgJnNj
cmlwdF9kYXRhKQogICAgIDogQ2FjaGVkT2JqZWN0KHVybCwgU2NyaXB0LCBLSU86OkNDX1Zlcmlm
eSwgMCwgc2NyaXB0X2RhdGEubGVuZ3RoKCkpCiB7CisgICAgbV9lcnJvck9jY3VycmVkID0gZmFs
c2U7CiAgICAgbV9sb2FkaW5nID0gZmFsc2U7CiAgICAgbV9zdGF0dXMgPSBQZXJzaXN0ZW50Owog
ICAgIG1fY29kZWMgPSAwOwpAQCAtMzMzLDYgKzMzNSw3IEBAIHZvaWQgQ2FjaGVkU2NyaXB0Ojpj
aGVja05vdGlmeSgpCiB2b2lkIENhY2hlZFNjcmlwdDo6ZXJyb3IoIGludCAvKmVyciovLCBjb25z
dCBjaGFyICovKnRleHQqLyApCiB7CiAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgbV9lcnJv
ck9jY3VycmVkID0gdHJ1ZTsKICAgICBjaGVja05vdGlmeSgpOwogfQogCkluZGV4OiBXZWJDb3Jl
L2todG1sL21pc2MvbG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNv
cmUva2h0bWwvbWlzYy9sb2FkZXIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40OQpkaWZmIC1w
IC11IC1yMS40OSBXZWJDb3JlL2todG1sL21pc2MvbG9hZGVyLmgKLS0tIFdlYkNvcmUva2h0bWwv
bWlzYy9sb2FkZXIuaAkyMCBEZWMgMjAwNSAwODo0OTo0OCAtMDAwMAkxLjQ5CisrKyBXZWJDb3Jl
L2todG1sL21pc2MvbG9hZGVyLmgJMjMgRGVjIDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTI5Mywx
MiArMjkzLDE1IEBAIG5hbWVzcGFjZSBraHRtbAogCXZpcnR1YWwgdm9pZCBlcnJvciggaW50IGVy
ciwgY29uc3QgY2hhciAqdGV4dCApOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIAorICAgICAgICBib29sIGVycm9yT2Nj
dXJyZWQoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yT2NjdXJyZWQ7IH0KIAogCXZvaWQgY2hlY2tO
b3RpZnkoKTsKIAogICAgIHByb3RlY3RlZDoKIAlET006OkRPTVN0cmluZyBtX3NjcmlwdDsKICAg
ICAgICAgUVRleHRDb2RlYyogbV9jb2RlYzsKKyAgICAgICAgYm9vbCBtX2Vycm9yT2NjdXJyZWQ7
CiAgICAgfTsKIAogICAgIGNsYXNzIEltYWdlU291cmNlOwo=
</data>
<flag name="review"
          id="1077"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>