<?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>110039</bug_id>
          
          <creation_ts>2013-02-16 16:21:59 -0800</creation_ts>
          <short_desc>Code cache should be explicit about what it caches</short_desc>
          <delta_ts>2013-02-17 19:36:27 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</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>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>buildbot</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>roger_fong</cc>
    
    <cc>yongjun_zhang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>834882</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-16 16:21:59 -0800</bug_when>
    <thetext>Code cache should be explicit about what it caches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834888</commentid>
    <comment_count>1</comment_count>
      <attachid>188741</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-16 16:38:22 -0800</bug_when>
    <thetext>Created attachment 188741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834889</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-16 16:39:16 -0800</bug_when>
    <thetext>No regression on PLT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834914</commentid>
    <comment_count>3</comment_count>
      <attachid>188741</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-02-16 19:55:14 -0800</bug_when>
    <thetext>Comment on attachment 188741
Patch

What does this do to memory usage?  It looks fine, but i recall membuster disliking the strong linkage between entries in the code cache and individual function bodies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834941</commentid>
    <comment_count>4</comment_count>
      <attachid>188741</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-16 22:30:40 -0800</bug_when>
    <thetext>Comment on attachment 188741
Patch

Attachment 188741 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16593803

New failing tests:
media/video-controls-captions-trackmenu.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834998</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-17 09:33:37 -0800</bug_when>
    <thetext>&gt; What does this do to memory usage?  It looks fine, but i recall membuster disliking the strong linkage between entries in the code cache and individual function bodies.

Because a low memory warning evicts the cache, I don&apos;t think Membuster will be affected / can be used to measure. Instead, I tuned using the PLT: this character count is what you need to get an equal PLT score to the old entry count. Based on that, and since we know that a larger cache makes the PLT faster, I think memory use should be equal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835008</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-17 11:17:02 -0800</bug_when>
    <thetext>Committed r143133: &lt;http://trac.webkit.org/changeset/143133&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835082</commentid>
    <comment_count>7</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-02-17 18:56:44 -0800</bug_when>
    <thetext>This broke the windows build: http://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/44385/steps/compile-webkit/logs/stdio

The problem line is &quot;typedef type name MapType::iterator iterator&quot;.
VS dislikes the use of &quot;typename&quot; anywhere outside a template class declaration. Is using &quot;typename&quot; required here if all that&apos;s happening is a typedef of MapType::iterator?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835086</commentid>
    <comment_count>8</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-02-17 19:36:27 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; This broke the windows build: http://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/44385/steps/compile-webkit/logs/stdio
&gt; 
&gt; The problem line is &quot;typedef type name MapType::iterator iterator&quot;.
&gt; VS dislikes the use of &quot;typename&quot; anywhere outside a template class declaration. Is using &quot;typename&quot; required here if all that&apos;s happening is a typedef of MapType::iterator?

I landed a build fix here: http://trac.webkit.org/changeset/143141 to get bots happy.
Let me know if I&apos;m wrong and just blew up all of JSC (or just a little part of it).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188741</attachid>
            <date>2013-02-16 16:38:22 -0800</date>
            <delta_ts>2013-02-16 22:30:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110039-20130216163447.patch</filename>
            <type>text/plain</type>
            <size>17151</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQzMTE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDEzLTAyLTE2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ29kZSBjYWNoZSBzaG91bGQgYmUgZXhwbGljaXQgYWJvdXQgd2hhdCBpdCBjYWNoZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDAzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
bWFrZXMgdGhlIGNvZGUgY2FjaGUgbW9yZSBleHBsaWNpdCBpbiB0d28gd2F5czoKKworICAgICAg
ICAoMSkgVGhlIGNhY2hlIGNhY2hlcyB0b3AtbGV2ZWwgc2NyaXB0cy4gQW55IHN1Yi1mdW5jdGlv
bnMgZXhlY3V0ZWQgYXMgYQorICAgICAgICBwYXJ0IG9mIGEgc2NyaXB0IGFyZSBjYWNoZWQgd2l0
aCBpdCBhbmQgZXZpY3RlZCB3aXRoIGl0LgorCisgICAgICAgIFRoaXMgc2ltcGxpZmllcyB0aGlu
Z3MgYnkgZWxpbWluYXRpbmcgb3V0LW9mLWJhbmQgc3ViLWZ1bmN0aW9uIHRyYWNraW5nLAorICAg
ICAgICBhbmQgZml4ZXMgcGF0aG9sb2dpY2FsIGNhc2VzIHdoZXJlIGZ1bmN0aW9ucyBmb3IgbGl2
ZSBzY3JpcHRzIHdvdWxkIGJlCisgICAgICAgIGV2aWN0ZWQgaW4gZmF2b3Igb2YgZnVuY3Rpb25z
IGZvciBkZWFkIHNjcmlwdHMsIGFuZC9vciBoaWdoIHByb2JhYmlsaXR5CisgICAgICAgIGZ1bmN0
aW9ucyBleGVjdXRlZCBlYXJseSBpbiBzY3JpcHQgbGlmZXRpbWUgd291bGQgYmUgZXZpY3RlZCBp
biBmYXZvciBvZgorICAgICAgICBsb3cgcHJvYmFiaWxpdHkgZnVuY3Rpb25zIGV4ZWN1dGVkIGxh
dGUgaW4gc2NyaXB0IGxpZmV0aW1lLCBkdWUgdG8gTFJVLgorCisgICAgICAgIFN0YXRpc3RpY2Fs
IGRhdGEgZnJvbSBnZW5lcmFsIGJyb3dzaW5nIGFuZCBQTFQgY29uZmlybXMgdGhhdCBjYWNoaW5n
CisgICAgICAgIGZ1bmN0aW9ucyBpbmRlcGVuZGVudGx5IG9mIHNjcmlwdHMgaXMgbm90IHByb2Zp
dGFibGUuCisKKyAgICAgICAgKDIpIFRoZSBjYWNoZSB0cmFja3Mgc2NyaXB0IHNpemUsIG5vdCBz
Y3JpcHQgY291bnQuCisKKyAgICAgICAgVGhpcyByZWR1Y2VzIHRoZSB3b3JzdC1jYXNlIGNhY2hl
IHNpemUgYnkgYSBmYWN0b3Igb2YgaW5maW5pdHkuCisKKyAgICAgICAgU2NyaXB0IHNpemUgaXMg
YSByZWFzb25hYmxlIGZpcnN0LW9yZGVyIGVzdGltYXRlIG9mIGluLW1lbW9yeSBmb290cHJpbnQg
CisgICAgICAgIGZvciBhIGNhY2hlZCBzY3JpcHQgYmVjYXVzZSB0aGVyZSBhcmUgbm8gc3ludGFj
dGljIGNvbnN0cnVjdHMgdGhhdCBoYXZlCisgICAgICAgIHN1cGVyLWxpbmVhciBtZW1vcnkgZm9v
dHByaW50LgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKTogTW92ZWQgdGhpcyBmdW5jdGlv
biBvdXQgb2YgdGhlIGNhY2hlCisgICAgICAgIGJlY2F1c2UgaXQgZG9lcyBub3QgY29uc3VsdCB0
aGUgY2FjaGUsIGFuZCBpcyBub3QgbWFuYWdlZCBieSBpdC4KKworICAgICAgICAoSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6IFZpc2l0IG91ciBjb2RlIGJs
b2NrcworICAgICAgICBiZWNhdXNlIHRoZXkgYXJlIHN0cm9uZyByZWZlcmVuY2VzIG5vdywgcmF0
aGVyIHRoYW4gd2VhaywgYSBsYSAoMSkuCisKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNvZGVCbG9ja0Zvcik6IFVwZGF0ZWQgZm9yIGludGVyZmFjZSBjaGFuZ2Vz
LgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2spOiBTdHJvbmcgbm93LCBub3Qgd2VhaywgYSBsYSAoMSkuCisKKyAgICAgICAgKiBydW50
aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Q29kZUNhY2hlKToK
KyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2Rl
S2V5OjpsZW5ndGgpOgorICAgICAgICAoU291cmNlQ29kZUtleSk6CisgICAgICAgIChDb2RlQ2Fj
aGVNYXApOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGVNYXA6OkNvZGVDYWNoZU1hcCk6CisgICAg
ICAgIChKU0M6OkNvZGVDYWNoZU1hcDo6ZmluZCk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZU1h
cDo6c2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlTWFwOjpjbGVhcik6CisgICAgICAgIChD
b2RlQ2FjaGUpOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmNsZWFyKTogUmVtb3ZlZCBpbmRp
dmlkdWFsIGZ1bmN0aW9uIHRyYWNraW5nLCBkdWUgdG8gKDEpLgorICAgICAgICBBZGRlZCBleHBs
aWNpdCBjaGFyYWN0ZXIgY291bnRpbmcsIGZvciAoMikuCisKKyAgICAgICAgWW91IG1pZ2h0IHRo
aW5rIDE2MDAwMDAwIGNoYXJhY3RlcnMgaXMgYSBsb3QuIEl0IGlzLiBCdXQgdGhpcyBwYXRjaAor
ICAgICAgICBkaWRuJ3QgZXN0YWJsaXNoIHRoYXQgbGltaXQgLS0gaXQganVzdCB0b29rIHRoZSBl
eGlzdGluZyBsaW1pdCBhbmQKKyAgICAgICAgbWFkZSBpdCBtb3JlIHZpc2libGUuIEkgaW50ZW5k
IHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgY2FjaGUgaW4gYQorICAgICAgICBmdXR1cmUgcGF0
Y2guCisKIDIwMTMtMDItMTYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggaW5kZW50YXRpb24gb2YgU3RydWN0dXJlLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkocmV2aXNp
b24gMTQzMDE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMjkgQEAgY29uc3QgQ2xhc3NJ
bmZvIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jawogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZh
bENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07
CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAi
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykgfTsKIAorc3RhdGljIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERl
YnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNl
ckVycm9yJiBlcnJvcikKK3sKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBh
cnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZnbG9iYWxEYXRhLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBh
cmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29u
dGV4dCgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNv
ZGUsIGVycm9yKTsKKworICAgIGlmICghYm9keSkgeworICAgICAgICBBU1NFUlQoZXJyb3IubV90
eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBpZiAoZXhlY3V0YWJsZS0+Zm9yY2VVc2VzQXJndW1lbnRzKCkpCisgICAgICAgIGJv
ZHktPnNldFVzZXNBcmd1bWVudHMoKTsKKyAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFi
bGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlv
bk5hbWVJc0luU2NvcGVUb2dnbGUoKSk7CisgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9k
eS0+ZmVhdHVyZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgYm9keS0+bGluZU5v
KCksIGJvZHktPmxhc3RMaW5lKCkpOworICAgIAorICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmZ2xvYmFsRGF0
YSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwg
Ym9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCkpOworICAgIE93blB0cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0
UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcihnbG9iYWxEYXRhLCBib2R5LmdldCgpLCByZXN1bHQs
IGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOworICAgIGVycm9yID0gZ2VuZXJhdG9yLT5n
ZW5lcmF0ZSgpOworICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CisgICAgaWYgKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiB1bnNpZ25lZCBVbmxpbmtlZENvZGVCbG9jazo6YWRkT3JGaW5kQ29u
c3RhbnQoSlNWYWx1ZSB2KQogewogICAgIHVuc2lnbmVkIG51bWJlck9mQ29uc3RhbnRzID0gbnVt
YmVyT2ZDb25zdGFudFJlZ2lzdGVycygpOwpAQCAtODIsNiArMTA1LDggQEAgdm9pZCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaAogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVy
ZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldp
dGhvdXRTZXR0aW5nRmxhZyk7CiAgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9jb2RlQmxvY2tGb3JDYWxsKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX25hbWVWYWx1ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9s
VGFibGVGb3JDYWxsKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xU
YWJsZUZvckNvbnN0cnVjdCk7CkBAIC0xMTIsMzEgKzEzNywyNyBAQCBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0CiB7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktp
bmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICBpZiAoVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpKSB7Ci0gICAg
ICAgICAgICBnbG9iYWxEYXRhLmNvZGVDYWNoZSgpLT51c2VkRnVuY3Rpb25Db2RlKGdsb2JhbERh
dGEsIGNvZGVCbG9jayk7CisgICAgICAgIGlmIChVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBtX2NvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm4g
Y29kZUJsb2NrOwotICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZUZvckNv
bnN0cnVjdDoKLSAgICAgICAgaWYgKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9j
ayA9IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmdldCgpKSB7Ci0gICAgICAgICAgICBnbG9iYWxE
YXRhLmNvZGVDYWNoZSgpLT51c2VkRnVuY3Rpb25Db2RlKGdsb2JhbERhdGEsIGNvZGVCbG9jayk7
CisgICAgICAgIGlmIChVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2Nv
ZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSkKICAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2s7
Ci0gICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogcmVzdWx0ID0gZ2xvYmFsRGF0YS5jb2RlQ2FjaGUoKS0+Z2V0RnVuY3Rpb25D
b2RlQmxvY2soZ2xvYmFsRGF0YSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRl
YnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhnbG9iYWxEYXRhLCB0
aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1v
ZGUsIGVycm9yKTsKICAgICAKICAgICBpZiAoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpF
cnJvck5vbmUpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlv
bktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICBtX2NvZGVCbG9ja0ZvckNh
bGwgPSBQYXNzV2VhazxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPihyZXN1bHQpOworICAgICAg
ICBtX2NvZGVCbG9ja0ZvckNhbGwuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHJlc3VsdCk7CiAgICAg
ICAgIG1fc3ltYm9sVGFibGVGb3JDYWxsLnNldChnbG9iYWxEYXRhLCB0aGlzLCByZXN1bHQtPnN5
bWJvbFRhYmxlKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6
Ci0gICAgICAgIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0ID0gUGFzc1dlYWs8VW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaz4ocmVzdWx0KTsKKyAgICAgICAgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Qu
c2V0KGdsb2JhbERhdGEsIHRoaXMsIHJlc3VsdCk7CiAgICAgICAgIG1fc3ltYm9sVGFibGVGb3JD
b25zdHJ1Y3Quc2V0KGdsb2JhbERhdGEsIHRoaXMsIHJlc3VsdC0+c3ltYm9sVGFibGUoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxNDMwMTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMTM5LDggKzEzOSw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEqLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSopOwotICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDYWxsOwotICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CisgICAgV3JpdGVCYXJyaWVyPFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKKyAgICBXcml0ZUJhcnJp
ZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAK
ICAgICB1bnNpZ25lZCBtX251bUNhcHR1cmVkVmFyaWFibGVzIDogMjk7CiAgICAgYm9vbCBtX2Zv
cmNlVXNlc0FyZ3VtZW50cyA6IDE7CkBAIC02NzUsOSArNjc1LDcgQEAgcHVibGljOgogfTsKIAog
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayA6IHB1YmxpYyBVbmxpbmtlZENvZGVCbG9j
ayB7Ci1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBDb2RlQ2FjaGU7Ci0KK3B1YmxpYzoKICAg
ICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgQ29kZVR5cGUgY29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZv
KQogICAgIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPihnbG9i
YWxEYXRhLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayhnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLT51bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBjb2RlVHlw
ZSwgaW5mbyk7CkBAIC02ODUsNyArNjgzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlu
c3RhbmNlOwogICAgIH0KIAotcHVibGljOgogICAgIHR5cGVkZWYgVW5saW5rZWRDb2RlQmxvY2sg
QmFzZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHJldmlzaW9uIDE0MzAxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBDb2RlQ2FjaGU6OkNv
ZGVDYWNoZSgpCisgICAgOiBtX3NvdXJjZUNvZGUoQ2FjaGVTaXplKQogewogfQogCkBAIC0xMDIs
MzUgKzEwMyw2IEBAIFVubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRFdmEKICAg
ICByZXR1cm4gZ2V0Q29kZUJsb2NrPFVubGlua2VkRXZhbENvZGVCbG9jaz4oZ2xvYmFsRGF0YSwg
ZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RuZXNzLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgZXJyb3IpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBDb2RlQ2FjaGU6Omdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUs
IFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKLXsKLSAgICBS
ZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZn
bG9iYWxEYXRhLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+
bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0cmljdCA6
IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKLQotICAgIGlmICgh
Ym9keSkgewotICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJv
ck5vbmUpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoZXhlY3V0YWJsZS0+
Zm9yY2VVc2VzQXJndW1lbnRzKCkpCi0gICAgICAgIGJvZHktPnNldFVzZXNBcmd1bWVudHMoKTsK
LSAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0
YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSk7
Ci0gICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVyZXMoKSwgYm9keS0+aGFz
Q2FwdHVyZWRWYXJpYWJsZXMoKSwgYm9keS0+bGluZU5vKCksIGJvZHktPmxhc3RMaW5lKCkpOwot
ICAgIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmZ2xvYmFsRGF0YSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRh
YmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+
aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkpOwotICAgIE93blB0cjxC
eXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRv
cihnbG9iYWxEYXRhLCBib2R5LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJN
b2RlKSkpOwotICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwotICAgIGJvZHktPmRl
c3Ryb3lEYXRhKCk7Ci0gICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JO
b25lKQotICAgICAgICByZXR1cm4gMDsKLSAgICBtX3JlY2VudGx5VXNlZEZ1bmN0aW9ucy5zZXQo
cmVzdWx0LCBTdHJvbmc8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4oZ2xvYmFsRGF0YSwgcmVz
dWx0KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkNvZGVCbG9jayhKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9y
KQotewotICAgIHJldHVybiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKGdsb2JhbERhdGEsIGV4
ZWN1dGFibGUsIHNvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9y
KTsKLX0KLQogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rp
b25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9y
JiBlcnJvcikKIHsKICAgICBTb3VyY2VDb2RlS2V5IGtleSA9IFNvdXJjZUNvZGVLZXkoc291cmNl
LCBuYW1lLnN0cmluZygpLCBTb3VyY2VDb2RlS2V5OjpGdW5jdGlvbkNhbGxUeXBlLCBKU1BhcnNl
Tm9ybWFsKTsKQEAgLTE2Miw5ICsxMzQsNCBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Q29kZUNhY2hlOjpnCiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KIAotdm9pZCBD
b2RlQ2FjaGU6OnVzZWRGdW5jdGlvbkNvZGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2spCi17Ci0gICAgbV9yZWNlbnRseVVzZWRG
dW5jdGlvbnMuc2V0KGNvZGVCbG9jaywgU3Ryb25nPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+
KGdsb2JhbERhdGEsIGNvZGVCbG9jaykpOwotfQotCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAkocmV2aXNpb24gMTQzMDI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDM0ICs1
Myw2IEBAIHN0cnVjdCBQYXJzZXJFcnJvcjsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBTb3Vy
Y2VQcm92aWRlcjsKIAotdGVtcGxhdGUgPGludCBDYWNoZVNpemUsIHR5cGVuYW1lIEtleVR5cGUs
IHR5cGVuYW1lIEVudHJ5VHlwZSwgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1bHRI
YXNoPEtleVR5cGU+OjpIYXNoLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPEtl
eVR5cGU+ID4KLWNsYXNzIENhY2hlTWFwIHsKLSAgICB0eXBlZGVmIEhhc2hNYXA8S2V5VHlwZSwg
RW50cnlUeXBlLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+IE1hcFR5cGU7Ci0gICAgdHlwZWRlZiB0
eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciBpdGVyYXRvcjsKLQotcHVibGljOgotICAgIGNvbnN0
IEVudHJ5VHlwZSogZmluZChjb25zdCBLZXlUeXBlJiBrZXkpCi0gICAgewotICAgICAgICBpdGVy
YXRvciByZXN1bHQgPSBtX21hcC5maW5kKGtleSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gbV9t
YXAuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuICZyZXN1bHQt
PnZhbHVlOwotICAgIH0KLQotICAgIHZvaWQgc2V0KGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3Qg
RW50cnlUeXBlJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChtX21hcC5zaXplKCkgPj0gQ2Fj
aGVTaXplKQotICAgICAgICAgICAgbV9tYXAucmVtb3ZlKG1fbWFwLmJlZ2luKCkpOwotCi0gICAg
ICAgIG1fbWFwLnNldChrZXksIHZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCkgeyBt
X21hcC5jbGVhcigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgTWFwVHlwZSBtX21hcDsKLX07Ci0KIGNs
YXNzIFNvdXJjZUNvZGVLZXkgewogcHVibGljOgogICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlw
ZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uQ2FsbFR5cGUsIEZ1bmN0aW9uQ29uc3RydWN0VHlwZSB9
OwpAQCAtMTA2LDYgKzc4LDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlU3RyaW5nLmltcGwoKS0+aGFzaCgpOyB9CiAKKyAgICBzaXplX3Qg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdHJpbmcubGVuZ3RoKCk7IH0KKwogICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdHJpbmcuaXNOdWxsKCk7IH0K
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QK
QEAgLTEzMiwzNyArMTA2LDczIEBAIHN0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6IFNp
bXBsZUMKICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgU291cmNlQ29kZUtleSYg
c291cmNlQ29kZUtleSkgeyByZXR1cm4gc291cmNlQ29kZUtleS5pc051bGwoKTsgfQogfTsKIAor
Y2xhc3MgQ29kZUNhY2hlTWFwIHsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U291cmNlQ29kZUtleSwg
U3Ryb25nPEpTQ2VsbD4sIFNvdXJjZUNvZGVLZXlIYXNoLCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0
cz4gTWFwVHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9yIGl0ZXJh
dG9yOworCitwdWJsaWM6CisgICAgQ29kZUNhY2hlTWFwKHNpemVfdCBjYXBhY2l0eSkKKyAgICAg
ICAgOiBtX3NpemUoMCkKKyAgICAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQorICAgIHsKKyAg
ICB9CisKKyAgICBjb25zdCBTdHJvbmc8SlNDZWxsPiogZmluZChjb25zdCBTb3VyY2VDb2RlS2V5
JiBrZXkpCisgICAgeworICAgICAgICBpdGVyYXRvciByZXN1bHQgPSBtX21hcC5maW5kKGtleSk7
CisgICAgICAgIGlmIChyZXN1bHQgPT0gbV9tYXAuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuICZyZXN1bHQtPnZhbHVlOworICAgIH0KKworICAgIHZvaWQgc2V0
KGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSwgY29uc3QgU3Ryb25nPEpTQ2VsbD4mIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgd2hpbGUgKG1fc2l6ZSA+PSBtX2NhcGFjaXR5KSB7CisgICAgICAgICAg
ICBNYXBUeXBlOjppdGVyYXRvciBpdCA9IG1fbWFwLmJlZ2luKCk7CisgICAgICAgICAgICBtX3Np
emUgLT0gaXQtPmtleS5sZW5ndGgoKTsKKyAgICAgICAgICAgIG1fbWFwLnJlbW92ZShpdCk7Cisg
ICAgICAgIH0KKworICAgICAgICBtX3NpemUgKz0ga2V5Lmxlbmd0aCgpOworICAgICAgICBtX21h
cC5zZXQoa2V5LCB2YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAg
ICAgICBtX3NpemUgPSAwOworICAgICAgICBtX21hcC5jbGVhcigpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBNYXBUeXBlIG1fbWFwOworICAgIHNpemVfdCBtX3NpemU7CisgICAgc2l6ZV90IG1f
Y2FwYWNpdHk7Cit9OworCisvLyBDYWNoZXMgdG9wLWxldmVsIGNvZGUgc3VjaCBhcyA8c2NyaXB0
PiwgZXZhbCgpLCBuZXcgRnVuY3Rpb24sIGFuZCBKU0V2YWx1YXRlU2NyaXB0KCkuCiBjbGFzcyBD
b2RlQ2FjaGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENvZGVDYWNoZT4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENvZGVDYWNoZSk7IH0KIAogICAgIFVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jayogZ2V0UHJvZ3JhbUNvZGVCbG9jayhKU0dsb2JhbERhdGEmLCBQcm9n
cmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0cmljdG5lc3MsIERl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRXZh
bENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9jayhKU0dsb2JhbERhdGEmLCBFdmFsRXhlY3V0YWJs
ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdldEZ1bmN0aW9uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYsIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVy
cm9yJik7Ci0gICAgdm9pZCB1c2VkRnVuY3Rpb25Db2RlKEpTR2xvYmFsRGF0YSYsIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqKTsKICAgICB+Q29kZUNhY2hlKCk7CiAKICAgICB2b2lkIGNsZWFy
KCkKICAgICB7CiAgICAgICAgIG1fc291cmNlQ29kZS5jbGVhcigpOwotICAgICAgICBtX3JlY2Vu
dGx5VXNlZEZ1bmN0aW9ucy5jbGVhcigpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBDb2RlQ2Fj
aGUoKTsKIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25D
b2RlQmxvY2soSlNHbG9iYWxEYXRhJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUsIFBhcnNlckVycm9yJik7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRD
b2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4gaW5saW5lIFVubGlua2VkQ29kZUJs
b2NrVHlwZSogZ2V0Q29kZUJsb2NrKEpTR2xvYmFsRGF0YSYsIEV4ZWN1dGFibGVUeXBlKiwgY29u
c3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0bmVzcywgRGVidWdnZXJNb2RlLCBQcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrVHlwZSwgY2xhc3MgRXhlY3V0YWJsZVR5cGU+IAorICAgIFVubGlua2VkQ29kZUJsb2NrVHlw
ZSogZ2V0Q29kZUJsb2NrKEpTR2xvYmFsRGF0YSYsIEV4ZWN1dGFibGVUeXBlKiwgY29uc3QgU291
cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0bmVzcywgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUs
IFBhcnNlckVycm9yJik7CiAKLSAgICBlbnVtIHsKLSAgICAgICAgTWF4Um9vdEVudHJpZXMgPSAx
MjgwLCAvLyBUb3AtbGV2ZWwgY29kZSBzdWNoIGFzIDxzY3JpcHQ+LCBldmFsKCksIEpTRXZhbHVh
dGVTY3JpcHQoKSwgZXRjLgotICAgICAgICBNYXhDaGlsZEZ1bmN0aW9uRW50cmllcyA9IE1heFJv
b3RFbnRyaWVzICogOCAvLyBTYW1wbGluZyBzaG93cyB0aGF0IGVhY2ggcm9vdCBob2xkcyBhYm91
dCA2IGZ1bmN0aW9ucy4gOCBpcyBlbm91Z2ggdG8gdXN1YWxseSBjYWNoZSBhbGwgdGhlIGNoaWxk
IGZ1bmN0aW9ucyBmb3IgZWFjaCB0b3AtbGV2ZWwgZW50cnkuCi0gICAgfTsKKyAgICBlbnVtIHsg
Q2FjaGVTaXplID0gMTYwMDAwMDAgfTsgLy8gU2l6ZSBpbiBjaGFyYWN0ZXJzCiAKLSAgICBDYWNo
ZU1hcDxNYXhSb290RW50cmllcywgU291cmNlQ29kZUtleSwgU3Ryb25nPEpTQ2VsbD4sIFNvdXJj
ZUNvZGVLZXlIYXNoLCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cz4gbV9zb3VyY2VDb2RlOwotICAg
IENhY2hlTWFwPE1heENoaWxkRnVuY3Rpb25FbnRyaWVzLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiwgU3Ryb25nPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+ID4gbV9yZWNlbnRseVVzZWRG
dW5jdGlvbnM7CisgICAgQ29kZUNhY2hlTWFwIG1fc291cmNlQ29kZTsKIH07CiAKIH0K
</data>
<flag name="review"
          id="208944"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="208964"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>