<?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>118778</bug_id>
          
          <creation_ts>2013-07-16 22:18:36 -0700</creation_ts>
          <short_desc>fourthTier: Add a phase to create loop pre-headers</short_desc>
          <delta_ts>2013-07-17 22:15:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>118749</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>909151</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-16 22:18:36 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909154</commentid>
    <comment_count>1</comment_count>
      <attachid>206854</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-16 22:24:48 -0700</bug_when>
    <thetext>Created attachment 206854
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909430</commentid>
    <comment_count>2</comment_count>
      <attachid>206854</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-07-17 13:23:52 -0700</bug_when>
    <thetext>Comment on attachment 206854
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=206854&amp;action=review

&gt; Source/JavaScriptCore/dfg/DFGNaturalLoops.h:63
&gt; +    // a natural loop. It&apos;s faster to call 

The suspense is killing me. Faster to call what?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909443</commentid>
    <comment_count>3</comment_count>
      <attachid>206854</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-17 14:02:13 -0700</bug_when>
    <thetext>Comment on attachment 206854
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=206854&amp;action=review

&gt;&gt; Source/JavaScriptCore/dfg/DFGNaturalLoops.h:63
&gt;&gt; +    // a natural loop. It&apos;s faster to call 
&gt; 
&gt; The suspense is killing me. Faster to call what?

Lol.  It&apos;s faster to call NaturalLoops::belongsTo().  I&apos;ll fix that comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909584</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-17 22:15:09 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/152829</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206854</attachid>
            <date>2013-07-16 22:24:48 -0700</date>
            <delta_ts>2013-07-17 14:02:13 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20772</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNzU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDEzLTA3LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogQWRkIGEgcGhhc2UgdG8gY3JlYXRlIGxvb3AgcHJlLWhlYWRlcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODc3OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEg
bG9vcCBwcmUtaGVhZGVyIGNyZWF0aW9uIHBoYXNlLiBBbnkgbG9vcCB0aGF0IGRvZXNuJ3QgYWxy
ZWFkeSBoYXZlCisgICAgICAgIGp1c3Qgb25lIHByZWRlY2Vzc29yIHRoYXQgaXNuJ3QgcGFydCBv
ZiB0aGUgbG9vcCBoYXMgYSBwcmUtaGVhZGVyCisgICAgICAgIHByZXBlbmRlZC4gQWxsIG5vbi1s
b29wIHByZWRlY2Vzc29ycyB0aGVuIGp1bXAgdG8gdGhhdCBwcmUtaGVhZGVyLgorICAgICAgICAK
KyAgICAgICAgQWxzbyBmaXggYSBoYW5kZnVsIG9mIGJ1Z3M6CisgICAgICAgIAorICAgICAgICAt
IERGRzo6QW5hbHlzaXMgc2hvdWxkIHNldCBtX3ZhbGlkIGJlZm9yZSBydW5uaW5nIHRoZSBhbmFs
eXNpcywgc2luY2UgdGhhdAorICAgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byB1c2UgQVNTRVJU
KG1fdmFsaWQpIGluIHRoZSBhbmFseXNpcycgbWV0aG9kcywgd2hpY2gKKyAgICAgICAgICBtYXkg
YmUgY2FsbGVkIGJ5IHRoZSBhbmFseXNpcyBiZWZvcmUgdGhlIGFuYWx5c2lzIGNvbXBsZXRlcy4g
TmF0dXJhbExvb3BzCisgICAgICAgICAgZG9lcyB0aGlzIHdpdGggbG9vcHNPZigpLgorICAgICAg
ICAKKyAgICAgICAgLSBOYXR1cmFsTG9vcHM6OmhlYWRlck9mKCkgd2FzIG1pc3NpbmcgYSBjaGVj
ayBmb3IgaW5uZXJNb3N0TG9vcE9mKCkKKyAgICAgICAgICByZXR1cm5pbmcgMCwgc2luY2UgdGhh
dCdsbCBoYXBwZW4gaWYgdGhlIGJsb2NrIGlzbid0IGluIGFueSBsb29wLgorICAgICAgICAKKyAg
ICAgICAgLSBDaGFuZ2UgQmxvY2tJbnNlcnRpb25TZXQgdG8gZGV0aHJlYWQgdGhlIGdyYXBoLCBz
aW5jZSBhbnlvbmUgdXNpbmcgaXQKKyAgICAgICAgICB3aWxsIHdhbnQgdG8gZG8gc28uCisgICAg
ICAgIAorICAgICAgICAtIENoYW5nZSBkZXRocmVhZGluZyB0byBpZ25vcmUgU1NBIGZvcm0gZ3Jh
cGhzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhbHNvIGFkZHMgTmF0dXJhbExvb3BzOjpiZWxv
bmdzVG8oKSwgd2hpY2ggSSBhbHdheXMgdXNlZCBpbiB0aGUKKyAgICAgICAgcHJlLWhlYWRlciBj
cmVhdGlvbiBwaGFzZS4gSSBkaWRuJ3QgZW5kIHVwIHVzaW5nIGl0IGJ1dCBJJ2xsIHByb2JhYmx5
IHVzZQorICAgICAgICBpdCBpbiB0aGUgbmVhciBmdXR1cmUuCisgICAgICAgIAorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZn
L0RGR0FuYWx5c2lzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QW5hbHlzaXM6OmNvbXB1dGVJZk5l
Y2Vzc2FyeSk6CisgICAgICAgICogZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCbG9ja0luc2VydGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZn
L0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNy
aXRpY2FsRWRnZUJyZWFraW5nUGhhc2U6OmJyZWFrQ3JpdGljYWxFZGdlKToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkZXRocmVhZCk6Cisg
ICAgICAgICogZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcDogQWRkZWQuCisg
ICAgICAgIChERkcpOgorICAgICAgICAoTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UpOgorICAg
ICAgICAoSlNDOjpERkc6Okxvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlOjpMb29wUHJlSGVhZGVy
Q3JlYXRpb25QaGFzZSk6CisgICAgICAgIChKU0M6OkRGRzo6TG9vcFByZUhlYWRlckNyZWF0aW9u
UGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybUxvb3BQcmVIZWFkZXJDcmVh
dGlvbik6CisgICAgICAgICogZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmg6IEFk
ZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHTmF0dXJhbExvb3BzLmg6Cisg
ICAgICAgIChOYXR1cmFsTG9vcCk6CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjpo
ZWFkZXJPZik6CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjppbm5lck1vc3RMb29w
T2YpOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29wczo6aW5uZXJNb3N0T3V0ZXJMb29w
KToKKyAgICAgICAgKEpTQzo6REZHOjpOYXR1cmFsTG9vcHM6OmJlbG9uZ3NUbyk6CisgICAgICAg
IChOYXR1cmFsTG9vcHMpOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKwogMjAxMy0wNy0xNiAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIGZvdXJ0aFRpZXI6IE5hdHVyYWxM
b29wcyBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IGFuc3dlciBxdWVzdGlvbnMgbGlrZSAid2hh
dCBsb29wcyBvd24gdGhpcyBiYXNpYyBibG9jayIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNTI3NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzY4
LDYgKzM2OCw4IEBACiAJCTBGRTUwNTdCMTc4RjVCNTMwMEIzNUY4QyAvKiBERkdPU1JBdmFpbGFi
aWxpdHlBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkU1MDU2RTE3OEY1QjUzMDBCMzVGOEMgLyogREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGRTUwNTdDMTc4RjVCNTMwMEIzNUY4QyAvKiBERkdTU0FDb252ZXJzaW9uUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
NTA1NkYxNzhGNUI1MzAwQjM1RjhDIC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgKi87IH07
CiAJCTBGRTUwNTdEMTc4RjVCNTMwMEIzNUY4QyAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTUwNTcwMTc4
RjVCNTMwMEIzNUY4QyAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkU1MDU4MjE3OTY1QzNEMDBCMzVG
OEMgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNTA1ODAxNzk2NUMzRDAwQjM1RjhDIC8q
IERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcCAqLzsgfTsKKwkJMEZFNTA1ODMxNzk2
NUMzRDAwQjM1RjhDIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1MDU4MTE3OTY1QzNEMDBC
MzVGOEMgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkU4NTM0QjE3MjNDREE1MDBCNjE4
RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTg1MzQ5MTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNp
cmVkV2F0Y2hwb2ludHMuY3BwICovOyB9OwogCQkwRkU4NTM0QzE3MjNDREE1MDBCNjE4RjUgLyog
REZHRGVzaXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkU4NTM0QTE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNo
cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZFQTBBMDgxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEFiYnJldmlhdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwOUZEMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExBYmJyZXZpYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MTQsNiArMTQxNiw4IEBACiAJCTBGRTUwNTZFMTc4
RjVCNTMwMEIzNUY4QyAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhh
c2UuaDsgcGF0aCA9IGRmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTUwNTZGMTc4RjVCNTMwMEIzNUY4QyAvKiBERkdT
U0FDb252ZXJzaW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU1MDU3MDE3OEY1QjUz
MDBCMzVGOEMgLyogREZHU1NBQ29udmVyc2lvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR1NTQUNvbnZlcnNpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1NTQUNv
bnZlcnNpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkU1MDU4MDE3
OTY1QzNEMDBCMzVGOEMgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTG9vcFByZUhlYWRlckNyZWF0aW9u
UGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFNTA1ODExNzk2NUMzRDAwQjM1RjhDIC8q
IERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZH
TG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZFODUzNDkxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEZXNpcmVkV2F0Y2hwb2lu
dHMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRTg1MzRBMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVk
V2F0Y2hwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGVzaXJl
ZFdhdGNocG9pbnRzLmg7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUEwOUZEMTcwNTEzREIwMEJCNzIyQyAvKiBGVExB
YmJyZXZpYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEFiYnJl
dmlhdGlvbnMuaDsgcGF0aCA9IGZ0bC9GVExBYmJyZXZpYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMDY4LDYgKzMwNzIsOCBAQAogCQkJCTBGRTUwNTZDMTc4RjVCNTMw
MEIzNUY4QyAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCAqLywKIAkJCQkwRkI0QjUxQzE2
QjYyNzcyMDAzRjY5NkIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwICovLAogCQkJCTBGQjRCNTFE
MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5oICovLAorCQkJCTBGRTUwNTgw
MTc5NjVDM0QwMEIzNUY4QyAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgKi8s
CisJCQkJMEZFNTA1ODExNzk2NUMzRDAwQjM1RjhDIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlv
blBoYXNlLmggKi8sCiAJCQkJMEYyQkRDM0QxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVk
R3JhcGguaCAqLywKIAkJCQkwRkI0QjUxMDE2QjNBOTY0MDAzRjY5NkIgLyogREZHTWluaWZpZWRJ
RC5oICovLAogCQkJCTBGMkJEQzRDMTUyMjgxODMwMENEODkxMCAvKiBERkdNaW5pZmllZE5vZGUu
Y3BwICovLApAQCAtMzg2Niw2ICszODcyLDcgQEAKIAkJCQkwRjJFODkyRDE2RDAyQkFGMDA5RTRG
RDIgLyogREZHTWluaWZpZWRJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVC
MjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUEx
NkQwMkVDNTAwNTVBNURCIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkU1MDU4MzE3OTY1QzNEMDBCMzVGOEMgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9u
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBE
RkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1
NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC00NDUxLDYgKzQ0NTgsNyBAQAogCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4
NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjRFMUExMzE3M0FG
MDdFMDA3RUUyRDMgLyogREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDQ2OURERTEwN0VDN0U3MDA2NTA0NDYgLyogTG9va3VwLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGRTUwNTgyMTc5NjVDM0QwMEIzNUY4QyAvKiBERkdMb29wUHJlSGVhZGVyQ3Jl
YXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUy
NzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRCMkNF
NDE3NDZDRTlGMDA3QjNDMUIgLyogQ29tcGlsYXRpb25SZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQW5hbHlz
aXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FuYWx5c2lz
LmgJKHJldmlzaW9uIDE1Mjc1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQW5h
bHlzaXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUsMTAgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgaWYgKG1fdmFsaWQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN0YXRp
Y19jYXN0PFQqPih0aGlzKS0+Y29tcHV0ZShncmFwaCk7CisgICAgICAgIC8vIFNldCB0byB0cnVl
IGVhcmx5LCBzaW5jZSB0aGUgYW5hbHlzaXMgbWF5IGNob29zZSB0byBjYWxsIGl0cyBvd24gbWV0
aG9kcyBpbgorICAgICAgICAvLyBjb21wdXRlKCkgYW5kIGl0IG1heSB3YW50IHRvIEFTU0VSVCgp
IHZhbGlkaXR5IGluIHRob3NlIG1ldGhvZHMuCiAgICAgICAgIG1fdmFsaWQgPSB0cnVlOworICAg
ICAgICBzdGF0aWNfY2FzdDxUKj4odGhpcyktPmNvbXB1dGUoZ3JhcGgpOwogICAgIH0KICAgICAK
ICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3ZhbGlkOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAko
cmV2aXNpb24gMTUyNzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja0lu
c2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAgYm9vbCBCbG9j
a0luc2VydGlvblNldDo6ZXhlY3V0ZSgpCiAgICAgCiAgICAgLy8gQW5kIGZpbmFsbHksIGludmFs
aWRhdGUgYWxsIGFuYWx5c2VzIHRoYXQgcmVseSBvbiB0aGUgQ0ZHLgogICAgIG1fZ3JhcGguaW52
YWxpZGF0ZUNGRygpOworICAgIG1fZ3JhcGguZGV0aHJlYWQoKTsKICAgICAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdl
QnJlYWtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMTUyNzU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNzMsOCArNzMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZv
aWQgYnJlYWtDcml0aWNhbEVkZ2UoQmFzaWNCbG9jayogcHJlZGVjZXNzb3IsIEJhc2ljQmxvY2sq
KiBzdWNjZXNzb3IpCiAgICAgewotICAgICAgICBtX2dyYXBoLmRldGhyZWFkKCk7Ci0gICAgICAg
IAogICAgICAgICBCYXNpY0Jsb2NrKiBwYWQgPSBtX2luc2VydGlvblNldC5pbnNlcnRCZWZvcmUo
KnN1Y2Nlc3Nvcik7CiAgICAgICAgIHBhZC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgIG1fZ3Jh
cGgsIFNwZWNOb25lLCBKdW1wLCAoKnN1Y2Nlc3NvciktPmF0KDApLT5jb2RlT3JpZ2luLCBPcElu
Zm8oKnN1Y2Nlc3NvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHJldmlzaW9uIDE1Mjc1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBHcmFwaDo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KQogCiB2b2lkIEdyYXBoOjpkZXRocmVhZCgpCiB7Ci0gICAgaWYg
KG1fZm9ybSA9PSBMb2FkU3RvcmUpCisgICAgaWYgKG1fZm9ybSA9PSBMb2FkU3RvcmUgfHwgbV9m
b3JtID09IFNTQSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChsb2dDb21waWxhdGlv
bkNoYW5nZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhl
YWRlckNyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkK
KworI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiREZHQmxvY2tJ
bnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgIkRGR1BoYXNl
LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgTG9vcFByZUhlYWRlckNy
ZWF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgeworcHVibGljOgorICAgIExvb3BQcmVIZWFkZXJD
cmVhdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBQaGFzZShncmFwaCwgImxvb3Ag
cHJlLWhlYWRlciBjcmVhdGlvbiIpCisgICAgICAgICwgbV9pbnNlcnRpb25TZXQoZ3JhcGgpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICBib29sIHJ1bigpCisgICAgeworICAgICAgICBtX2dyYXBo
Lm1fZG9taW5hdG9ycy5jb21wdXRlSWZOZWNlc3NhcnkobV9ncmFwaCk7CisgICAgICAgIG1fZ3Jh
cGgubV9uYXR1cmFsTG9vcHMuY29tcHV0ZUlmTmVjZXNzYXJ5KG1fZ3JhcGgpOworICAgICAgICAK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3Bz
Lm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExv
b3AmIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLmxvb3AobG9vcEluZGV4KTsKKyAgICAg
ICAgICAgIEJhc2ljQmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0gMDsKKyAgICAgICAgICAgIGJv
b2wgbmVlZHNOZXdQcmVIZWFkZXIgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
cHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHBy
ZWRlY2Vzc29ySW5kZXgtLTspIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNl
c3NvciA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKKyAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMuZG9taW5hdGVzKGxvb3AuaGVh
ZGVyKCksIHByZWRlY2Vzc29yKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgaWYgKCFleGlzdGluZ1ByZUhlYWRlcikgeworICAgICAgICAgICAgICAgICAg
ICBleGlzdGluZ1ByZUhlYWRlciA9IHByZWRlY2Vzc29yOworICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5n
UHJlSGVhZGVyID09IHByZWRlY2Vzc29yKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICBuZWVkc05ld1ByZUhlYWRlciA9IHRydWU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVh
ZGVyKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBwcmVIZWFkZXIgPSBtX2luc2VydGlvblNldC5pbnNlcnRCZWZvcmUobG9v
cC5oZWFkZXIoKSk7CisgICAgICAgICAgICBwcmVIZWFkZXItPmFwcGVuZE5vZGUoCisgICAgICAg
ICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIEp1bXAsIGxvb3AuaGVhZGVyKCktPmF0KDApLT5j
b2RlT3JpZ2luLCBPcEluZm8obG9vcC5oZWFkZXIoKSkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSAwOyBwcmVkZWNlc3NvckluZGV4
IDwgbG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleCsr
KSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29wLmhlYWRl
cigpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07CisgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGgubV9kb21pbmF0b3JzLmRvbWluYXRlcyhsb29wLmhlYWRlcigpLCBwcmVkZWNlc3Nv
cikpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGxvb3Au
aGVhZGVyKCktPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4LS1dID0gbG9vcC5oZWFkZXIo
KS0+cHJlZGVjZXNzb3JzLmxhc3QoKTsKKyAgICAgICAgICAgICAgICBsb29wLmhlYWRlcigpLT5w
cmVkZWNlc3NvcnMudGFrZUxhc3QoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHN1
Y2Nlc3NvckluZGV4ID0gcHJlZGVjZXNzb3ItPm51bVN1Y2Nlc3NvcnMoKTsgc3VjY2Vzc29ySW5k
ZXgtLTspIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayomIHN1Y2Nlc3NvciA9IHBy
ZWRlY2Vzc29yLT5zdWNjZXNzb3Ioc3VjY2Vzc29ySW5kZXgpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoc3VjY2Vzc29yICE9IGxvb3AuaGVhZGVyKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc29yID0gcHJlSGVhZGVyOwor
ICAgICAgICAgICAgICAgICAgICBwcmVIZWFkZXItPnByZWRlY2Vzc29ycy5hcHBlbmQocHJlZGVj
ZXNzb3IpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgbG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzLmFwcGVuZChwcmVIZWFkZXIp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuZXhl
Y3V0ZSgpOworICAgIH0KKworICAgIEJsb2NrSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0Owor
fTsKKworYm9vbCBwZXJmb3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKEdyYXBoJiBncmFwaCkKK3sK
KyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIExvb3AgUHJlLUhlYWRlciBD
cmVhdGlvbiBQaGFzZSIpOworICAgIHJldHVybiBydW5QaGFzZTxMb29wUHJlSGVhZGVyQ3JlYXRp
b25QaGFzZT4oZ3JhcGgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRp
b25QaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdMb29wUHJlSGVhZGVy
Q3JlYXRpb25QaGFzZV9oCisjZGVmaW5lIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlX2gK
KworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgR3JhcGg7CisKKy8vIEluc2Vy
dHMgZHVtbXkgYmFzaWMgYmxvY2tzIGJlZm9yZSBhbnkgbG9vcCBoZWFkZXJzIHRoYXQgZG9uJ3Qg
YWxyZWFkeSBoYXZlCisvLyBhIHNpbmdsZSBub24tbG9vcCBwcmVkZWNlc3Nvci4KKworYm9vbCBw
ZXJmb3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKEdyYXBoJik7CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2VfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05hdHVyYWxMb29wcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHJldmlzaW9uIDE1Mjc1NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcg
KzU4LDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Jv
ZHkuc2l6ZSgpOyB9CiAgICAgQmFzaWNCbG9jayogYXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1
cm4gbV9ib2R5W2ldOyB9CiAgICAgQmFzaWNCbG9jayogb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBj
b25zdCB7IHJldHVybiBhdChpKTsgfQotICAgIAorCisgICAgLy8gVGhpcyBpcyB0aGUgc2xvd2Vy
LCBidXQgc2ltcGxlciwgd2F5IG9mIGFza2luZyBpZiBhIGJsb2NrIGJlbG9uZ3MgdG8KKyAgICAv
LyBhIG5hdHVyYWwgbG9vcC4gSXQncyBmYXN0ZXIgdG8gY2FsbCAKICAgICBib29sIGNvbnRhaW5z
KEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9ib2R5LnNpemUoKTsgaS0tOykgewpAQCAtMTA4LDcgKzExMCwxMCBAQCBwdWJsaWM6CiAg
ICAgLy8gbG9vcCBpdCBiZWxvbmdzIHRvLgogICAgIGNvbnN0IE5hdHVyYWxMb29wKiBoZWFkZXJP
ZihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlk
KCkpOwogICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IGlubmVyTW9zdExvb3BPZihi
bG9jayk7CisgICAgICAgIGlmICghbG9vcCkKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICBpZiAobG9vcC0+aGVhZGVyKCkgPT0gYmxvY2spCiAgICAgICAgICAgICByZXR1cm4gbG9vcDsK
ICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKQEAgLTEyMCw2ICsxMjUsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgY29uc3QgTmF0dXJhbExvb3AqIGlubmVyTW9zdExvb3BPZihCYXNpY0Js
b2NrKiBibG9jaykgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogICAg
ICAgICB1bnNpZ25lZCBpbmRleCA9IGJsb2NrLT5pbm5lck1vc3RMb29wSW5kaWNlc1swXTsKICAg
ICAgICAgaWYgKGluZGV4ID09IFVJTlRfTUFYKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0x
MjgsMTEgKzEzNCwyNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgY29uc3QgTmF0dXJhbExvb3AqIGlu
bmVyTW9zdE91dGVyTG9vcChjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCkgY29uc3QKICAgICB7Cisg
ICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogICAgICAgICBpZiAobG9vcC5tX291dGVyTG9vcElu
ZGV4ID09IFVJTlRfTUFYKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiAm
bV9sb29wc1tsb29wLm1fb3V0ZXJMb29wSW5kZXhdOwogICAgIH0KICAgICAKKyAgICBib29sIGJl
bG9uZ3NUbyhCYXNpY0Jsb2NrKiBibG9jaywgY29uc3QgTmF0dXJhbExvb3AmIGNhbmRpZGF0ZUxv
b3ApIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgLy8g
SXQncyBmYXN0ZXIgdG8gZG8gdGhpcyB0ZXN0IHVzaW5nIHRoZSBsb29wIGl0c2VsZiwgaWYgaXQn
cyBzbWFsbC4KKyAgICAgICAgaWYgKGNhbmRpZGF0ZUxvb3Auc2l6ZSgpIDwgNCkKKyAgICAgICAg
ICAgIHJldHVybiBjYW5kaWRhdGVMb29wLmNvbnRhaW5zKGJsb2NrKTsKKyAgICAgICAgCisgICAg
ICAgIGZvciAoY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBpbm5lck1vc3RMb29wT2YoYmxvY2sp
OyBsb29wOyBsb29wID0gaW5uZXJNb3N0T3V0ZXJMb29wKCpsb29wKSkgeworICAgICAgICAgICAg
aWYgKGxvb3AgPT0gJmNhbmRpZGF0ZUxvb3ApCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKICAgICAvLyBS
ZXR1cm4gdGhlIGluZGljZXMgb2YgYWxsIGxvb3BzIHRoaXMgYmVsb25ncyB0by4KICAgICBWZWN0
b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBsb29wc09mKEJhc2ljQmxvY2sqKSBjb25zdDsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAxNTI3NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiREZHRml4dXBQaGFzZS5oIgogI2luY2x1ZGUgIkRG
R0pJVENvbXBpbGVyLmgiCiAjaW5jbHVkZSAiREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmgiCisj
aW5jbHVkZSAiREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHUHJlZGljdGlvbklu
amVjdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
aCIKQEAgLTIwMSw2ICsyMDIsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGls
ZUluVGhyCiAgICAgICAgICYmIEZUTDo6Y2FuQ29tcGlsZShkZmcpKSB7CiAgICAgICAgIAogICAg
ICAgICBwZXJmb3JtQ3JpdGljYWxFZGdlQnJlYWtpbmcoZGZnKTsKKyAgICAgICAgcGVyZm9ybUxv
b3BQcmVIZWFkZXJDcmVhdGlvbihkZmcpOwogICAgICAgICBwZXJmb3JtQ1BTUmV0aHJlYWRpbmco
ZGZnKTsKICAgICAgICAgcGVyZm9ybVNTQUNvbnZlcnNpb24oZGZnKTsKICAgICAgICAgcGVyZm9y
bUxpdmVuZXNzQW5hbHlzaXMoZGZnKTsK
</data>
<flag name="review"
          id="228585"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>