<?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>129066</bug_id>
          
          <creation_ts>2014-02-19 14:54:34 -0800</creation_ts>
          <short_desc>FTL should allow LLVM to allocate data sections with alignment &gt; 8</short_desc>
          <delta_ts>2014-02-19 15:06:03 -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>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>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>982559</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 14:54:34 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982560</commentid>
    <comment_count>1</comment_count>
      <attachid>224682</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 14:57:09 -0800</bug_when>
    <thetext>Created attachment 224682
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982562</commentid>
    <comment_count>2</comment_count>
      <attachid>224682</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-19 15:00:11 -0800</bug_when>
    <thetext>Comment on attachment 224682
the patch

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

r=me

&gt; Source/JavaScriptCore/ftl/FTLDataSection.cpp:51
&gt; +    m_base = bitwise_cast&lt;void*&gt;(
&gt; +        (bitwise_cast&lt;uintptr_t&gt;(m_allocationBase) + alignment - 1) &amp; ~static_cast&lt;uintptr_t&gt;(alignment - 1));
&gt; +    

Can we use roundUpToMultipleOf&lt;&gt; here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982563</commentid>
    <comment_count>3</comment_count>
      <attachid>224683</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 15:00:15 -0800</bug_when>
    <thetext>Created attachment 224683
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982564</commentid>
    <comment_count>4</comment_count>
      <attachid>224683</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 15:00:50 -0800</bug_when>
    <thetext>Comment on attachment 224683
the patch

ggaren already r+&apos;d, and this is just a rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982565</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-19 15:02:22 -0800</bug_when>
    <thetext>Attachment 224683 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLDataSection.h:37:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982568</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 15:04:12 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 224682 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224682&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLDataSection.cpp:51
&gt; &gt; +    m_base = bitwise_cast&lt;void*&gt;(
&gt; &gt; +        (bitwise_cast&lt;uintptr_t&gt;(m_allocationBase) + alignment - 1) &amp; ~static_cast&lt;uintptr_t&gt;(alignment - 1));
&gt; &gt; +    
&gt; 
&gt; Can we use roundUpToMultipleOf&lt;&gt; here?

I suppose we could.  I get annoyed whenever I see size_t used as a &quot;pointer-sized integer&quot;, and roundUpToMultipleOf uses size_t.  It probably doesn&apos;t matter, though.

I think I&apos;ll leave it.  The math is simple enough that the helper doesn&apos;t add *that* much value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982569</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 15:06:03 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/164393</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224682</attachid>
            <date>2014-02-19 14:57:09 -0800</date>
            <delta_ts>2014-02-19 15:00:15 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18294</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MzkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE0LTAyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBhbGxvdyBMTFZNIHRvIGFsbG9jYXRlIGRhdGEgc2VjdGlvbnMgd2l0aCBhbGln
bm1lbnQgPiA4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjkwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIFdlIHdlcmUgcHJldmlvdXNseSB1c2luZyB0aGUgbmF0aXZlIGFsbG9jYXRvcidz
IGFsaWdubWVudCBndWFyYW50ZWVzICh3aGljaCB3ZSBwcmVzdW1lZAorICAgICAgICB0byBiZSA4
IGJ5dGVzKSwgYW5kIGZ1cnRoZXIgaGludGluZyBvdXIgZGVzaXJlcyBieSB1c2luZyB0aGUgTFNl
Y3Rpb25Xb3JkIHR5cGUgKHdoaWNoCisgICAgICAgIHdhcyA4IGJ5dGVzKS4gVGhpcyBicmVha3Mg
bm93IHRoYXQgTExWTSB3aWxsIHNvbWV0aW1lcyBhc2sgZm9yIDE2IGJ5dGUgYWxpZ25tZW50IG9u
CisgICAgICAgIHNvbWUgc2VjdGlvbnMuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZXMg
b3VyIGRhdGEgc2VjdGlvbiBhbGxvY2F0aW9uIHN0cmF0ZWd5IHRvIHVzZSB0aGUgbmV3IEZUTDo6
RGF0YVNlY3Rpb24sCisgICAgICAgIHdoaWNoIGNhbiBoYW5kbGUgYXJiaXRyYXJ5IDJeayBhbGln
bm1lbnQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpt
bUFsbG9jYXRlRGF0YVNlY3Rpb24pOgorICAgICAgICAoSlNDOjpGVEw6OmR1bXBEYXRhU2VjdGlv
bik6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTERhdGFT
ZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZUTDo6RGF0YVNlY3Rpb246OkRhdGFT
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpEYXRhU2VjdGlvbjo6fkRhdGFTZWN0aW9uKToK
KyAgICAgICAgKiBmdGwvRlRMRGF0YVNlY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkZU
TDo6RGF0YVNlY3Rpb246OmJhc2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRhdGFTZWN0aW9uOjpz
aXplKToKKyAgICAgICAgKiBmdGwvRlRMSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
SklUQ29kZTo6YWRkRGF0YVNlY3Rpb24pOgorICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6ZGF0YVNlY3Rpb25zKToKKyAgICAgICAgKiBmdGwv
RlRMU3RhdGUuaDoKKwogMjAxNC0wMi0xOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMTY0Mzc0CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY0Mzg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5OCw2ICs0OTgsOCBAQAogCQkwRkUyMjhFRTE0MzZBQjJDMDAx
OTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi87IH07
CiAJCTBGRTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFODUzNDkx
NzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgKi87IH07CiAJCTBG
RTg1MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTg1MzRBMTcyM0NEQTUw
MEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkU5NUY3OTE4QjU2OTQ3MDBCNTMxRkIgLyog
RlRMRGF0YVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFOTVGNzcxOEI1Njk0NzAwQjUzMUZCIC8qIEZUTERhdGFTZWN0aW9uLmNwcCAq
LzsgfTsKKwkJMEZFOTVGN0ExOEI1Njk0NzAwQjUzMUZCIC8qIEZUTERhdGFTZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU5NUY3ODE4QjU2
OTQ3MDBCNTMxRkIgLyogRlRMRGF0YVNlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRM
QWJicmV2aWF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZFQTA5RkQxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEFiYnJldmlhdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkVBMEEwOTE3
MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwOUZFMTcwNTEzREIwMEJCNzIyQyAvKiBG
VExDYXBhYmlsaXRpZXMuY3BwICovOyB9OwogCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMgLyog
RlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkVBMDlGRjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5ODAsNiAr
MTk4Miw4IEBACiAJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZFODUzNDkxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBv
aW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEZXNpcmVk
V2F0Y2hwb2ludHMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTg1MzRBMTcyM0NEQTUwMEI2MThGNSAvKiBE
RkdEZXNpcmVkV2F0Y2hwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHRGVzaXJlZFdhdGNocG9pbnRzLmg7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdhdGNocG9pbnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTk1Rjc3MThCNTY5NDcwMEI1MzFG
QiAvKiBGVExEYXRhU2VjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBGVExEYXRhU2VjdGlvbi5jcHA7IHBhdGggPSBmdGwvRlRMRGF0YVNlY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkU5NUY3ODE4QjU2OTQ3MDBCNTMxRkIgLyog
RlRMRGF0YVNlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMRGF0
YVNlY3Rpb24uaDsgcGF0aCA9IGZ0bC9GVExEYXRhU2VjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkVBMDlGRDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExBYmJyZXZpYXRpb25zLmg7
IHBhdGggPSBmdGwvRlRMQWJicmV2aWF0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkVBMDlGRTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTENhcGFiaWxpdGllcy5jcHA7IHBh
dGggPSBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZFQTA5RkYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExDYXBhYmlsaXRpZXMuaDsgcGF0aCA9IGZ0bC9G
VExDYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNTUsOCAr
MzE1OSw2IEBACiAJCTBGRUEwOUZDMTcwNTEzN0YwMEJCNzIyQyAvKiBmdGwgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTJBQzkyMkI5MThBMTYxODIwMDND
RTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8uY3BwICovLAotCQkJCTJBQzkyMkJBMThBMTYx
ODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8uaCAqLywKIAkJCQkwRkRCMkNDNzE3
M0RBNTFFMDA3QjNDMUIgLyogRlRMQWJicmV2aWF0ZWRUeXBlcy5oICovLAogCQkJCTBGRUEwOUZE
MTcwNTEzREIwMEJCNzIyQyAvKiBGVExBYmJyZXZpYXRpb25zLmggKi8sCiAJCQkJMEZFQTBBMTcx
NzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5jcHAgKi8sCkBAIC0zMTcxLDYgKzMx
NzMsMTAgQEAKIAkJCQkwRkVBMEEyMTE3MDk2MDY5MDBCQjcyMkMgLyogRlRMQ29tbW9uVmFsdWVz
LmggKi8sCiAJCQkJMEZFQTBBMDAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuY3BwICov
LAogCQkJCTBGRUEwQTAxMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggKi8sCisJCQkJ
MEZFOTVGNzcxOEI1Njk0NzAwQjUzMUZCIC8qIEZUTERhdGFTZWN0aW9uLmNwcCAqLywKKwkJCQkw
RkU5NUY3ODE4QjU2OTQ3MDBCNTMxRkIgLyogRlRMRGF0YVNlY3Rpb24uaCAqLywKKwkJCQkyQUM5
MjJCOTE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmNwcCAqLywKKwkJ
CQkyQUM5MjJCQTE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggKi8s
CiAJCQkJMEYyMzVCQkQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5jcHAgKi8s
CiAJCQkJMEYyMzVCQkUxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5oICovLAog
CQkJCTBGMjM1QkJGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5k
LmNwcCAqLywKQEAgLTQ4OTMsNiArNDg5OSw3IEBACiAJCQkJQzJDOEQwMzAxNEEzQ0VGQzAwNTc4
RTY1IC8qIENvcGllZEJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZDOUJEMzE2NjQ0REZC
MDA4MTBEMzMgLyogQ29waWVkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkVB
QTNGQTE0OUE4MzVFMDBGQ0UxMTIgLyogQ29waWVkU3BhY2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGRTk1RjdBMThCNTY5NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJDOEQwMkQxNEEzQzZFMDAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QTUyRDAxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tl
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjFDQzYxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVu
d2luZEluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtNjEzMSw2ICs2MTM4LDcgQEAKIAkJCQkwRkQ4
MkU1NjE0MURBRjA4MDAxNzlDOTQgLyogREZHT1NSRW50cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZEOEEzMjUxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBo
YXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzA5NzkxMTQ2QTZGNzEwMENGMjQ0MiAvKiBE
RkdPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRTk1Rjc5MThCNTY5NDcwMEI1MzFG
QiAvKiBGVExEYXRhU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFQjE3MTc4
RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZD
MDk3OTIxNDZBNkY3MzAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkMwOTc3NjE0Njk0M0IwMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVy
MzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbXBpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tcGlsZS5jcHAJKHJldmlzaW9uIDE2NDM4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDEwICs4MSw3IEBAIHN0
YXRpYyB1aW50OF90KiBtbUFsbG9jYXRlRGF0YVNlY3Rpb24oCiAKICAgICBTdGF0ZSYgc3RhdGUg
PSAqc3RhdGljX2Nhc3Q8U3RhdGUqPihvcGFxdWVTdGF0ZSk7CiAgICAgCi0gICAgUkVMRUFTRV9B
U1NFUlQoYWxpZ25tZW50IDw9IHNpemVvZihMU2VjdGlvbldvcmQpKTsKLSAgICAKLSAgICBSZWZD
b3VudGVkQXJyYXk8TFNlY3Rpb25Xb3JkPiBzZWN0aW9uKAotICAgICAgICAoc2l6ZSArIHNpemVv
ZihMU2VjdGlvbldvcmQpIC0gMSkgLyBzaXplb2YoTFNlY3Rpb25Xb3JkKSk7CisgICAgUmVmUHRy
PERhdGFTZWN0aW9uPiBzZWN0aW9uID0gYWRvcHRSZWYobmV3IERhdGFTZWN0aW9uKHNpemUsIGFs
aWdubWVudCkpOwogICAgIAogICAgIGlmICghc3RyY21wKHNlY3Rpb25OYW1lLCAiX19sbHZtX3N0
YWNrbWFwcyIpKQogICAgICAgICBzdGF0ZS5zdGFja21hcHNTZWN0aW9uID0gc2VjdGlvbjsKQEAg
LTkyLDEyICs4OSwxMiBAQCBzdGF0aWMgdWludDhfdCogbW1BbGxvY2F0ZURhdGFTZWN0aW9uKAog
ICAgICAgICBzdGF0ZS5qaXRDb2RlLT5hZGREYXRhU2VjdGlvbihzZWN0aW9uKTsKICAgICAgICAg
c3RhdGUuZGF0YVNlY3Rpb25OYW1lcy5hcHBlbmQoc2VjdGlvbk5hbWUpOwogICAgICAgICBpZiAo
IXN0cmNtcChzZWN0aW9uTmFtZSwgIl9fY29tcGFjdF91bndpbmQiKSkgewotICAgICAgICAgICAg
c3RhdGUuY29tcGFjdFVud2luZCA9IHNlY3Rpb24uZGF0YSgpOworICAgICAgICAgICAgc3RhdGUu
Y29tcGFjdFVud2luZCA9IHNlY3Rpb24tPmJhc2UoKTsKICAgICAgICAgICAgIHN0YXRlLmNvbXBh
Y3RVbndpbmRTaXplID0gc2l6ZTsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PHVpbnQ4X3QqPihzZWN0aW9uLmRhdGEoKSk7CisgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDx1aW50OF90Kj4oc2VjdGlvbi0+YmFzZSgpKTsKIH0KIAogc3RhdGljIExMVk1Cb29s
IG1tQXBwbHlQZXJtaXNzaW9ucyh2b2lkKiwgY2hhcioqKQpAQCAtMTA5LDEyICsxMDYsMTMgQEAg
c3RhdGljIHZvaWQgbW1EZXN0cm95KHZvaWQqKQogewogfQogCi1zdGF0aWMgdm9pZCBkdW1wRGF0
YVNlY3Rpb24oUmVmQ291bnRlZEFycmF5PExTZWN0aW9uV29yZD4gc2VjdGlvbiwgY29uc3QgY2hh
ciogcHJlZml4KQorc3RhdGljIHZvaWQgZHVtcERhdGFTZWN0aW9uKERhdGFTZWN0aW9uKiBzZWN0
aW9uLCBjb25zdCBjaGFyKiBwcmVmaXgpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IHNlY3Rpb24uc2l6ZSgpOyArK2opIHsKKyAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc2Vj
dGlvbi0+c2l6ZSgpIC8gc2l6ZW9mKGludDY0X3QpOyArK2opIHsKICAgICAgICAgY2hhciBidWZb
MzJdOwotICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiMHglbHgiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihzZWN0aW9uLmRhdGEo
KSArIGopKSk7Ci0gICAgICAgIGRhdGFMb2dGKCIlcyUxNnM6IDB4JTAxNmxseFxuIiwgcHJlZml4
LCBidWYsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oc2VjdGlvbltqXSkpOworICAgICAgICBpbnQ2
NF90KiB3b3JkUG9pbnRlciA9IHN0YXRpY19jYXN0PGludDY0X3QqPihzZWN0aW9uLT5iYXNlKCkp
ICsgajsKKyAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIjB4JWx4Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZz4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4od29yZFBvaW50ZXIp
KSk7CisgICAgICAgIGRhdGFMb2dGKCIlcyUxNnM6IDB4JTAxNmxseFxuIiwgcHJlZml4LCBidWYs
IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oKndvcmRQb2ludGVyKSk7CiAgICAgfQogfQogCkBAIC01
NjYsNyArNTY0LDcgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YXRlLmppdENvZGUtPmRh
dGFTZWN0aW9ucygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBSZWZDb3VudGVk
QXJyYXk8TFNlY3Rpb25Xb3JkPiYgc2VjdGlvbiA9IHN0YXRlLmppdENvZGUtPmRhdGFTZWN0aW9u
cygpW2ldOworICAgICAgICAgICAgRGF0YVNlY3Rpb24qIHNlY3Rpb24gPSBzdGF0ZS5qaXRDb2Rl
LT5kYXRhU2VjdGlvbnMoKVtpXS5nZXQoKTsKICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAg
ICAgICAgICAgIkdlbmVyYXRlZCBMTFZNIGRhdGEgc2VjdGlvbiBmb3IgIiwKICAgICAgICAgICAg
ICAgICBDb2RlQmxvY2tXaXRoSklUVHlwZShzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jaywgSklUQ29k
ZTo6RlRMSklUKSwKQEAgLTU4MCwxNyArNTc4LDE3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3Rh
dGUpCiAgICAgaWYgKHNob3VsZFNob3dEaXNhc3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJV
bndpbmQgaW5mbyBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoc3RhdGUuZ3JhcGgubV9jb2Rl
QmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICI6XG4gICAgIiwgc3RhdGUuaml0Q29kZS0+dW53aW5k
SW5mbywgIlxuIik7CiAgICAgCi0gICAgaWYgKHN0YXRlLnN0YWNrbWFwc1NlY3Rpb24uc2l6ZSgp
KSB7CisgICAgaWYgKHN0YXRlLnN0YWNrbWFwc1NlY3Rpb24gJiYgc3RhdGUuc3RhY2ttYXBzU2Vj
dGlvbi0+c2l6ZSgpKSB7CiAgICAgICAgIGlmIChzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkgewog
ICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAiR2VuZXJhdGVkIExMVk0gc3Rh
Y2ttYXBzIHNlY3Rpb24gZm9yICIsCiAgICAgICAgICAgICAgICAgQ29kZUJsb2NrV2l0aEpJVFR5
cGUoc3RhdGUuZ3JhcGgubV9jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICI6XG4iKTsKICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBSYXcgZGF0YTpcbiIpOwotICAgICAgICAgICAgZHVtcERh
dGFTZWN0aW9uKHN0YXRlLnN0YWNrbWFwc1NlY3Rpb24sICIgICAgIik7CisgICAgICAgICAgICBk
dW1wRGF0YVNlY3Rpb24oc3RhdGUuc3RhY2ttYXBzU2VjdGlvbi5nZXQoKSwgIiAgICAiKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgUmVmUHRyPERhdGFWaWV3PiBzdGFja21hcHNEYXRh
ID0gRGF0YVZpZXc6OmNyZWF0ZSgKLSAgICAgICAgICAgIEFycmF5QnVmZmVyOjpjcmVhdGUoc3Rh
dGUuc3RhY2ttYXBzU2VjdGlvbi5kYXRhKCksIHN0YXRlLnN0YWNrbWFwc1NlY3Rpb24uYnl0ZVNp
emUoKSkpOworICAgICAgICAgICAgQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0ZS5zdGFja21hcHNT
ZWN0aW9uLT5iYXNlKCksIHN0YXRlLnN0YWNrbWFwc1NlY3Rpb24tPnNpemUoKSkpOwogICAgICAg
ICBzdGF0ZS5qaXRDb2RlLT5zdGFja21hcHMucGFyc2Uoc3RhY2ttYXBzRGF0YS5nZXQoKSk7CiAg
ICAgCiAgICAgICAgIGlmIChzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExEYXRhU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExEYXRhU2VjdGlvbi5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERhdGFTZWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGVExEYXRhU2VjdGlv
bi5oIgorCisjaWYgRU5BQkxFKEZUTF9KSVQpCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworCitEYXRhU2VjdGlvbjo6RGF0YVNl
Y3Rpb24oc2l6ZV90IHNpemUsIHVuc2lnbmVkIGFsaWdubWVudCkKKyAgICA6IG1fc2l6ZShzaXpl
KQoreworICAgIFJFTEVBU0VfQVNTRVJUKFdURjo6Yml0Q291bnQoYWxpZ25tZW50KSA9PSAxKTsK
KyAgICAKKyAgICBjb25zdCB1bnNpZ25lZCBuYXRpdmVBbGlnbm1lbnQgPSA4OworICAgIAorICAg
IGFsaWdubWVudCA9IHN0ZDo6bWF4KG5hdGl2ZUFsaWdubWVudCwgYWxpZ25tZW50KTsKKyAgICAK
KyAgICBzaXplX3QgYWxsb2NhdGVkU2l6ZSA9IHNpemUgKyBhbGlnbm1lbnQgLSBuYXRpdmVBbGln
bm1lbnQ7CisgICAgbV9hbGxvY2F0aW9uQmFzZSA9IGZhc3RNYWxsb2MoYWxsb2NhdGVkU2l6ZSk7
CisgICAgCisgICAgbV9iYXNlID0gYml0d2lzZV9jYXN0PHZvaWQqPigKKyAgICAgICAgKGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KG1fYWxsb2NhdGlvbkJhc2UpICsgYWxpZ25tZW50IC0gMSkgJiB+
c3RhdGljX2Nhc3Q8dWludHB0cl90PihhbGlnbm1lbnQgLSAxKSk7CisgICAgCisgICAgUkVMRUFT
RV9BU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihtX2Jhc2UpICYgKGFsaWdubWVudCAt
IDEpKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obV9iYXNl
KSArIHNpemUgPD0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obV9hbGxvY2F0aW9uQmFzZSkgKyBh
bGxvY2F0ZWRTaXplKTsKK30KKworRGF0YVNlY3Rpb246On5EYXRhU2VjdGlvbigpCit7CisgICAg
ZmFzdEZyZWUobV9hbGxvY2F0aW9uQmFzZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpG
VEwKKworI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTERhdGFTZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExEYXRhU2VjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExEYXRhU2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBGVExEYXRhU2VjdGlvbl9oCisjZGVmaW5lIEZUTERhdGFTZWN0aW9uX2gKKworI2lmIEVO
QUJMRShGVExfSklUKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBGVEwgeworCitjbGFzcyBEYXRhU2VjdGlvbiA6IHB1YmxpYyBSZWZD
b3VudGVkPERhdGFTZWN0aW9uPiB7CitwdWJsaWM6CisgICAgRGF0YVNlY3Rpb24oc2l6ZV90IHNp
emUsIHVuc2lnbmVkIGFsaWdubWVudCk7CisgICAgfkRhdGFTZWN0aW9uKCk7CisgICAgCisgICAg
dm9pZCogYmFzZSgpIHsgcmV0dXJuIG1fYmFzZTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9CisgICAgCitwcml2YXRlOgorICAgIHZvaWQqIG1fYWxsb2NhdGlv
bkJhc2U7CisgICAgdm9pZCogbV9iYXNlOworICAgIHNpemVfdCBtX3NpemU7Cit9OworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6RlRMCisKKyNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKKworI2Vu
ZGlmIC8vIEZUTERhdGFTZWN0aW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuY3BwCShyZXZpc2lvbiAxNjQzODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHZv
aWQgSklUQ29kZTo6YWRkSGFuZGxlKFBhc3NSZWZQdHI8RXhlY3UKICAgICBtX2hhbmRsZXMuYXBw
ZW5kKGhhbmRsZSk7CiB9CiAKLXZvaWQgSklUQ29kZTo6YWRkRGF0YVNlY3Rpb24oUmVmQ291bnRl
ZEFycmF5PExTZWN0aW9uV29yZD4gZGF0YVNlY3Rpb24pCit2b2lkIEpJVENvZGU6OmFkZERhdGFT
ZWN0aW9uKFBhc3NSZWZQdHI8RGF0YVNlY3Rpb24+IGRhdGFTZWN0aW9uKQogewogICAgIG1fZGF0
YVNlY3Rpb25zLmFwcGVuZChkYXRhU2VjdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVENvZGUuaAkocmV2aXNpb24gMTY0Mzg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpZiBFTkFCTEUoRlRMX0pJVCkKIAogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKKyNpbmNs
dWRlICJGVExEYXRhU2VjdGlvbi5oIgogI2luY2x1ZGUgIkZUTE9TUkV4aXQuaCIKICNpbmNsdWRl
ICJGVExTdGFja01hcHMuaCIKICNpbmNsdWRlICJGVExVbndpbmRJbmZvLmgiCkBAIC00MCw4ICs0
MSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotdHlwZWRlZiBpbnQ2
NF90IExTZWN0aW9uV29yZDsgLy8gV2UgcmVmZXIgdG8gTExWTSBkYXRhIHNlY3Rpb25zIHVzaW5n
IExTZWN0aW9uV29yZCosIGp1c3QgdG8gYmUgY2xlYXIgYWJvdXQgb3VyIGludGVuZGVkIGFsaWdu
bWVudCByZXN0cmljdGlvbnMuCi0KIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgSlNDOjpKSVRDb2Rl
IHsKIHB1YmxpYzoKICAgICBKSVRDb2RlKCk7CkBAIC01NiwxMiArNTUsMTIgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZUV4aXRUaHVua3MoQ29kZVJlZik7CiAgICAgdm9pZCBh
ZGRIYW5kbGUoUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPik7Ci0gICAgdm9pZCBh
ZGREYXRhU2VjdGlvbihSZWZDb3VudGVkQXJyYXk8TFNlY3Rpb25Xb3JkPik7CisgICAgdm9pZCBh
ZGREYXRhU2VjdGlvbihQYXNzUmVmUHRyPERhdGFTZWN0aW9uPik7CiAgICAgdm9pZCBpbml0aWFs
aXplQXJpdHlDaGVja0VudHJ5cG9pbnQoQ29kZVJlZik7CiAgICAgdm9pZCBpbml0aWFsaXplQWRk
cmVzc0ZvckNhbGwoQ29kZVB0cik7CiAgICAgCiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxFeGVj
dXRhYmxlTWVtb3J5SGFuZGxlPj4mIGhhbmRsZXMoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZXM7
IH0KLSAgICBjb25zdCBWZWN0b3I8UmVmQ291bnRlZEFycmF5PExTZWN0aW9uV29yZD4+JiBkYXRh
U2VjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTZWN0aW9uczsgfQorICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8RGF0YVNlY3Rpb24+PiYgZGF0YVNlY3Rpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhU2VjdGlvbnM7IH0KICAgICAKICAgICBDb2RlUHRyIGV4aXRUaHVua3MoKTsKICAgICAK
QEAgLTc0LDcgKzczLDcgQEAgcHVibGljOgogICAgIFVud2luZEluZm8gdW53aW5kSW5mbzsKICAg
ICAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFJlZkNvdW50ZWRBcnJheTxMU2VjdGlvbldvcmQ+PiBt
X2RhdGFTZWN0aW9uczsKKyAgICBWZWN0b3I8UmVmUHRyPERhdGFTZWN0aW9uPj4gbV9kYXRhU2Vj
dGlvbnM7CiAgICAgVmVjdG9yPFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPj4gbV9oYW5k
bGVzOwogICAgIENvZGVQdHIgbV9hZGRyZXNzRm9yQ2FsbDsKICAgICBDb2RlUmVmIG1fYXJpdHlD
aGVja0VudHJ5cG9pbnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCShy
ZXZpc2lvbiAxNjQzODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxDU3Ry
aW5nPiBkYXRhU2VjdGlvbk5hbWVzOwogICAgIHZvaWQqIGNvbXBhY3RVbndpbmQ7CiAgICAgc2l6
ZV90IGNvbXBhY3RVbndpbmRTaXplOwotICAgIFJlZkNvdW50ZWRBcnJheTxMU2VjdGlvbldvcmQ+
IHN0YWNrbWFwc1NlY3Rpb247CisgICAgUmVmUHRyPERhdGFTZWN0aW9uPiBzdGFja21hcHNTZWN0
aW9uOwogICAgIAogICAgIHZvaWQgZHVtcFN0YXRlKGNvbnN0IGNoYXIqIHdoZW4pOwogfTsK
</data>
<flag name="review"
          id="248789"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224683</attachid>
            <date>2014-02-19 15:00:15 -0800</date>
            <delta_ts>2014-02-19 15:00:50 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>17760</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE0LTAyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBhbGxvdyBMTFZNIHRvIGFsbG9jYXRlIGRhdGEgc2VjdGlvbnMgd2l0aCBhbGln
bm1lbnQgPiA4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjkwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIFdlIHdlcmUgcHJldmlvdXNseSB1c2luZyB0aGUgbmF0aXZlIGFsbG9jYXRvcidz
IGFsaWdubWVudCBndWFyYW50ZWVzICh3aGljaCB3ZSBwcmVzdW1lZAorICAgICAgICB0byBiZSA4
IGJ5dGVzKSwgYW5kIGZ1cnRoZXIgaGludGluZyBvdXIgZGVzaXJlcyBieSB1c2luZyB0aGUgTFNl
Y3Rpb25Xb3JkIHR5cGUgKHdoaWNoCisgICAgICAgIHdhcyA4IGJ5dGVzKS4gVGhpcyBicmVha3Mg
bm93IHRoYXQgTExWTSB3aWxsIHNvbWV0aW1lcyBhc2sgZm9yIDE2IGJ5dGUgYWxpZ25tZW50IG9u
CisgICAgICAgIHNvbWUgc2VjdGlvbnMuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZXMg
b3VyIGRhdGEgc2VjdGlvbiBhbGxvY2F0aW9uIHN0cmF0ZWd5IHRvIHVzZSB0aGUgbmV3IEZUTDo6
RGF0YVNlY3Rpb24sCisgICAgICAgIHdoaWNoIGNhbiBoYW5kbGUgYXJiaXRyYXJ5IDJeayBhbGln
bm1lbnQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpt
bUFsbG9jYXRlRGF0YVNlY3Rpb24pOgorICAgICAgICAoSlNDOjpGVEw6OmR1bXBEYXRhU2VjdGlv
bik6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTERhdGFT
ZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZUTDo6RGF0YVNlY3Rpb246OkRhdGFT
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpEYXRhU2VjdGlvbjo6fkRhdGFTZWN0aW9uKToK
KyAgICAgICAgKiBmdGwvRlRMRGF0YVNlY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkZU
TDo6RGF0YVNlY3Rpb246OmJhc2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRhdGFTZWN0aW9uOjpz
aXplKToKKyAgICAgICAgKiBmdGwvRlRMSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
SklUQ29kZTo6YWRkRGF0YVNlY3Rpb24pOgorICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6ZGF0YVNlY3Rpb25zKToKKyAgICAgICAgKiBmdGwv
RlRMU3RhdGUuaDoKKwogMjAxNC0wMi0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBjb21tZW50LgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NDM5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC01MDAsNiArNTAwLDggQEAKIAkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
MjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9OwogCQkwRkU4NTM0QjE3
MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTg1MzQ5MTcyM0NEQTUwMEI2MThG
NSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwICovOyB9OwogCQkwRkU4NTM0QzE3MjNDREE1
MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU4NTM0QTE3MjNDREE1MDBCNjE4RjUgLyogREZH
RGVzaXJlZFdhdGNocG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEZFOTVGNzkxOEI1Njk0NzAwQjUzMUZCIC8qIEZUTERhdGFTZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTk1
Rjc3MThCNTY5NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5jcHAgKi87IH07CisJCTBGRTk1
RjdBMThCNTY5NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFOTVGNzgxOEI1Njk0NzAwQjUzMUZCIC8q
IEZUTERhdGFTZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZFQTBBMDgxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEFiYnJldmlhdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwOUZE
MTcwNTEzREIwMEJCNzIyQyAvKiBGVExBYmJyZXZpYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFQTBBMDkxNzA1MTNEQjAwQkI3MjJD
IC8qIEZUTENhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkVBMDlGRTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVz
LmNwcCAqLzsgfTsKIAkJMEZFQTBBMEExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTA5
RkYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xOTg0LDYgKzE5ODYsOCBAQAogCQkw
RkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
RTg1MzQ5MTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdhdGNocG9pbnRzLmNw
cDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkU4NTM0QTE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNo
cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRXYXRj
aHBvaW50cy5oOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkU5NUY3NzE4QjU2OTQ3MDBCNTMxRkIgLyogRlRMRGF0YVNl
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMRGF0YVNl
Y3Rpb24uY3BwOyBwYXRoID0gZnRsL0ZUTERhdGFTZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZFOTVGNzgxOEI1Njk0NzAwQjUzMUZCIC8qIEZUTERhdGFTZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTERhdGFTZWN0aW9uLmg7IHBh
dGggPSBmdGwvRlRMRGF0YVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZFQTA5RkQxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEFiYnJldmlhdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMQWJicmV2aWF0aW9ucy5oOyBwYXRoID0gZnRsL0ZU
TEFiYnJldmlhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQTA5RkUx
NzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBGVExDYXBhYmlsaXRpZXMuY3BwOyBwYXRoID0gZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUEwOUZGMTcw
NTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRlRMQ2FwYWJpbGl0aWVzLmg7IHBhdGggPSBmdGwvRlRMQ2FwYWJpbGl0aWVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTczLDYgKzMxNzcsOCBAQAogCQkJ
CTBGRUEwQTIxMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCAqLywKIAkJCQkw
RkVBMEEwMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5jcHAgKi8sCiAJCQkJMEZFQTBB
MDExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuaCAqLywKKwkJCQkwRkU5NUY3NzE4QjU2
OTQ3MDBCNTMxRkIgLyogRlRMRGF0YVNlY3Rpb24uY3BwICovLAorCQkJCTBGRTk1Rjc4MThCNTY5
NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5oICovLAogCQkJCTJBQzkyMkI5MThBMTYxODIw
MDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8uY3BwICovLAogCQkJCTJBQzkyMkJBMThB
MTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8uaCAqLywKIAkJCQkwRjIzNUJC
RDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmNwcCAqLywKQEAgLTQ4OTksNiAr
NDkwNSw3IEBACiAJCQkJQzJDOEQwMzAxNEEzQ0VGQzAwNTc4RTY1IC8qIENvcGllZEJsb2NrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkZDOUJEMzE2NjQ0REZCMDA4MTBEMzMgLyogQ29waWVkQmxv
Y2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkVBQTNGQTE0OUE4MzVFMDBGQ0UxMTIg
LyogQ29waWVkU3BhY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRTk1RjdBMThCNTY5NDcwMEI1
MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDOEQwMkQxNEEz
QzZFMDAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY1QTUyRDAxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2QjFDQzYxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uaCBpbiBIZWFkZXJz
ICovLApAQCAtNjEzOSw2ICs2MTQ2LDcgQEAKIAkJCQkwRkQ4MkU1NjE0MURBRjA4MDAxNzlDOTQg
LyogREZHT1NSRW50cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEzMjUxN0Q1MUY1NzAw
Q0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQzA5NzkxMTQ2QTZGNzEwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGRTk1Rjc5MThCNTY5NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFQjE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NS
RXhpdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3OTIxNDZBNkY3MzAwQ0YyNDQy
IC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMwOTc3NjE0
Njk0M0IwMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHJldmlz
aW9uIDE2NDM5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgxLDEwICs4MSw3IEBAIHN0YXRpYyB1aW50OF90KiBtbUFsbG9j
YXRlRGF0YVNlY3Rpb24oCiAKICAgICBTdGF0ZSYgc3RhdGUgPSAqc3RhdGljX2Nhc3Q8U3RhdGUq
PihvcGFxdWVTdGF0ZSk7CiAgICAgCi0gICAgUkVMRUFTRV9BU1NFUlQoYWxpZ25tZW50IDw9IHNp
emVvZihMU2VjdGlvbldvcmQpKTsKLSAgICAKLSAgICBSZWZDb3VudGVkQXJyYXk8TFNlY3Rpb25X
b3JkPiBzZWN0aW9uKAotICAgICAgICAoc2l6ZSArIHNpemVvZihMU2VjdGlvbldvcmQpIC0gMSkg
LyBzaXplb2YoTFNlY3Rpb25Xb3JkKSk7CisgICAgUmVmUHRyPERhdGFTZWN0aW9uPiBzZWN0aW9u
ID0gYWRvcHRSZWYobmV3IERhdGFTZWN0aW9uKHNpemUsIGFsaWdubWVudCkpOwogICAgIAogICAg
IGlmICghc3RyY21wKHNlY3Rpb25OYW1lLCAiX19sbHZtX3N0YWNrbWFwcyIpKQogICAgICAgICBz
dGF0ZS5zdGFja21hcHNTZWN0aW9uID0gc2VjdGlvbjsKQEAgLTkyLDEyICs4OSwxMiBAQCBzdGF0
aWMgdWludDhfdCogbW1BbGxvY2F0ZURhdGFTZWN0aW9uKAogICAgICAgICBzdGF0ZS5qaXRDb2Rl
LT5hZGREYXRhU2VjdGlvbihzZWN0aW9uKTsKICAgICAgICAgc3RhdGUuZGF0YVNlY3Rpb25OYW1l
cy5hcHBlbmQoc2VjdGlvbk5hbWUpOwogICAgICAgICBpZiAoIXN0cmNtcChzZWN0aW9uTmFtZSwg
Il9fY29tcGFjdF91bndpbmQiKSkgewotICAgICAgICAgICAgc3RhdGUuY29tcGFjdFVud2luZCA9
IHNlY3Rpb24uZGF0YSgpOworICAgICAgICAgICAgc3RhdGUuY29tcGFjdFVud2luZCA9IHNlY3Rp
b24tPmJhc2UoKTsKICAgICAgICAgICAgIHN0YXRlLmNvbXBhY3RVbndpbmRTaXplID0gc2l6ZTsK
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PHVpbnQ4X3Qq
PihzZWN0aW9uLmRhdGEoKSk7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oc2Vj
dGlvbi0+YmFzZSgpKTsKIH0KIAogc3RhdGljIExMVk1Cb29sIG1tQXBwbHlQZXJtaXNzaW9ucyh2
b2lkKiwgY2hhcioqKQpAQCAtMTA5LDEyICsxMDYsMTMgQEAgc3RhdGljIHZvaWQgbW1EZXN0cm95
KHZvaWQqKQogewogfQogCi1zdGF0aWMgdm9pZCBkdW1wRGF0YVNlY3Rpb24oUmVmQ291bnRlZEFy
cmF5PExTZWN0aW9uV29yZD4gc2VjdGlvbiwgY29uc3QgY2hhciogcHJlZml4KQorc3RhdGljIHZv
aWQgZHVtcERhdGFTZWN0aW9uKERhdGFTZWN0aW9uKiBzZWN0aW9uLCBjb25zdCBjaGFyKiBwcmVm
aXgpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNlY3Rpb24uc2l6ZSgpOyArK2op
IHsKKyAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc2VjdGlvbi0+c2l6ZSgpIC8gc2l6ZW9m
KGludDY0X3QpOyArK2opIHsKICAgICAgICAgY2hhciBidWZbMzJdOwotICAgICAgICBzbnByaW50
ZihidWYsIHNpemVvZihidWYpLCAiMHglbHgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihzZWN0aW9uLmRhdGEoKSArIGopKSk7Ci0gICAgICAgIGRh
dGFMb2dGKCIlcyUxNnM6IDB4JTAxNmxseFxuIiwgcHJlZml4LCBidWYsIHN0YXRpY19jYXN0PGxv
bmcgbG9uZz4oc2VjdGlvbltqXSkpOworICAgICAgICBpbnQ2NF90KiB3b3JkUG9pbnRlciA9IHN0
YXRpY19jYXN0PGludDY0X3QqPihzZWN0aW9uLT5iYXNlKCkpICsgajsKKyAgICAgICAgc25wcmlu
dGYoYnVmLCBzaXplb2YoYnVmKSwgIjB4JWx4Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4od29yZFBvaW50ZXIpKSk7CisgICAgICAgIGRhdGFMb2dG
KCIlcyUxNnM6IDB4JTAxNmxseFxuIiwgcHJlZml4LCBidWYsIHN0YXRpY19jYXN0PGxvbmcgbG9u
Zz4oKndvcmRQb2ludGVyKSk7CiAgICAgfQogfQogCkBAIC01NjYsNyArNTY0LDcgQEAgdm9pZCBj
b21waWxlKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHN0YXRlLmppdENvZGUtPmRhdGFTZWN0aW9ucygpLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgICAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8TFNlY3Rpb25Xb3JkPiYg
c2VjdGlvbiA9IHN0YXRlLmppdENvZGUtPmRhdGFTZWN0aW9ucygpW2ldOworICAgICAgICAgICAg
RGF0YVNlY3Rpb24qIHNlY3Rpb24gPSBzdGF0ZS5qaXRDb2RlLT5kYXRhU2VjdGlvbnMoKVtpXS5n
ZXQoKTsKICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgIkdlbmVyYXRlZCBM
TFZNIGRhdGEgc2VjdGlvbiBmb3IgIiwKICAgICAgICAgICAgICAgICBDb2RlQmxvY2tXaXRoSklU
VHlwZShzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSwKQEAgLTU4MCwx
NyArNTc4LDE3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHNob3VsZFNo
b3dEaXNhc3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbndpbmQgaW5mbyBmb3IgIiwgQ29k
ZUJsb2NrV2l0aEpJVFR5cGUoc3RhdGUuZ3JhcGgubV9jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJ
VCksICI6XG4gICAgIiwgc3RhdGUuaml0Q29kZS0+dW53aW5kSW5mbywgIlxuIik7CiAgICAgCi0g
ICAgaWYgKHN0YXRlLnN0YWNrbWFwc1NlY3Rpb24uc2l6ZSgpKSB7CisgICAgaWYgKHN0YXRlLnN0
YWNrbWFwc1NlY3Rpb24gJiYgc3RhdGUuc3RhY2ttYXBzU2VjdGlvbi0+c2l6ZSgpKSB7CiAgICAg
ICAgIGlmIChzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkgewogICAgICAgICAgICAgZGF0YUxvZygK
ICAgICAgICAgICAgICAgICAiR2VuZXJhdGVkIExMVk0gc3RhY2ttYXBzIHNlY3Rpb24gZm9yICIs
CiAgICAgICAgICAgICAgICAgQ29kZUJsb2NrV2l0aEpJVFR5cGUoc3RhdGUuZ3JhcGgubV9jb2Rl
QmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICI6XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBSYXcgZGF0YTpcbiIpOwotICAgICAgICAgICAgZHVtcERhdGFTZWN0aW9uKHN0YXRlLnN0YWNr
bWFwc1NlY3Rpb24sICIgICAgIik7CisgICAgICAgICAgICBkdW1wRGF0YVNlY3Rpb24oc3RhdGUu
c3RhY2ttYXBzU2VjdGlvbi5nZXQoKSwgIiAgICAiKTsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgUmVmUHRyPERhdGFWaWV3PiBzdGFja21hcHNEYXRhID0gRGF0YVZpZXc6OmNyZWF0ZSgK
LSAgICAgICAgICAgIEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGUuc3RhY2ttYXBzU2VjdGlvbi5k
YXRhKCksIHN0YXRlLnN0YWNrbWFwc1NlY3Rpb24uYnl0ZVNpemUoKSkpOworICAgICAgICAgICAg
QXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0ZS5zdGFja21hcHNTZWN0aW9uLT5iYXNlKCksIHN0YXRl
LnN0YWNrbWFwc1NlY3Rpb24tPnNpemUoKSkpOwogICAgICAgICBzdGF0ZS5qaXRDb2RlLT5zdGFj
a21hcHMucGFyc2Uoc3RhY2ttYXBzRGF0YS5nZXQoKSk7CiAgICAgCiAgICAgICAgIGlmIChzaG91
bGRTaG93RGlzYXNzZW1ibHkoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExEYXRhU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExEYXRhU2VjdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTERhdGFTZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJGVExEYXRhU2VjdGlvbi5oIgorCisjaWYgRU5BQkxFKEZU
TF9KSVQpCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9EYXRh
TG9nLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBGVEwgeworCitEYXRhU2VjdGlvbjo6RGF0YVNlY3Rpb24oc2l6ZV90IHNpemUsIHVu
c2lnbmVkIGFsaWdubWVudCkKKyAgICA6IG1fc2l6ZShzaXplKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKFdURjo6Yml0Q291bnQoYWxpZ25tZW50KSA9PSAxKTsKKyAgICAKKyAgICBjb25zdCB1bnNp
Z25lZCBuYXRpdmVBbGlnbm1lbnQgPSA4OworICAgIAorICAgIGFsaWdubWVudCA9IHN0ZDo6bWF4
KG5hdGl2ZUFsaWdubWVudCwgYWxpZ25tZW50KTsKKyAgICAKKyAgICBzaXplX3QgYWxsb2NhdGVk
U2l6ZSA9IHNpemUgKyBhbGlnbm1lbnQgLSBuYXRpdmVBbGlnbm1lbnQ7CisgICAgbV9hbGxvY2F0
aW9uQmFzZSA9IGZhc3RNYWxsb2MoYWxsb2NhdGVkU2l6ZSk7CisgICAgCisgICAgbV9iYXNlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigKKyAgICAgICAgKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG1f
YWxsb2NhdGlvbkJhc2UpICsgYWxpZ25tZW50IC0gMSkgJiB+c3RhdGljX2Nhc3Q8dWludHB0cl90
PihhbGlnbm1lbnQgLSAxKSk7CisgICAgCisgICAgUkVMRUFTRV9BU1NFUlQoIShiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihtX2Jhc2UpICYgKGFsaWdubWVudCAtIDEpKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obV9iYXNlKSArIHNpemUgPD0gYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4obV9hbGxvY2F0aW9uQmFzZSkgKyBhbGxvY2F0ZWRTaXplKTsKK30KKwor
RGF0YVNlY3Rpb246On5EYXRhU2VjdGlvbigpCit7CisgICAgZmFzdEZyZWUobV9hbGxvY2F0aW9u
QmFzZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKKworI2VuZGlmIC8vIEVOQUJM
RShGVExfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERhdGFTZWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExEYXRhU2Vj
dGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExEYXRh
U2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGVExEYXRhU2VjdGlvbl9o
CisjZGVmaW5lIEZUTERhdGFTZWN0aW9uX2gKKworI2lmIEVOQUJMRShGVExfSklUKQorCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwg
eworCitjbGFzcyBEYXRhU2VjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFTZWN0aW9uPiB7
CitwdWJsaWM6CisgICAgRGF0YVNlY3Rpb24oc2l6ZV90IHNpemUsIHVuc2lnbmVkIGFsaWdubWVu
dCk7CisgICAgfkRhdGFTZWN0aW9uKCk7CisgICAgCisgICAgdm9pZCogYmFzZSgpIHsgcmV0dXJu
IG1fYmFzZTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Cisg
ICAgCitwcml2YXRlOgorICAgIHZvaWQqIG1fYWxsb2NhdGlvbkJhc2U7CisgICAgdm9pZCogbV9i
YXNlOworICAgIHNpemVfdCBtX3NpemU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRM
CisKKyNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKKworI2VuZGlmIC8vIEZUTERhdGFTZWN0aW9u
X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCShyZXZp
c2lvbiAxNjQzOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgSklUQ29kZTo6YWRkSGFuZGxl
KFBhc3NSZWZQdHI8RXhlY3UKICAgICBtX2hhbmRsZXMuYXBwZW5kKGhhbmRsZSk7CiB9CiAKLXZv
aWQgSklUQ29kZTo6YWRkRGF0YVNlY3Rpb24oUmVmQ291bnRlZEFycmF5PExTZWN0aW9uV29yZD4g
ZGF0YVNlY3Rpb24pCit2b2lkIEpJVENvZGU6OmFkZERhdGFTZWN0aW9uKFBhc3NSZWZQdHI8RGF0
YVNlY3Rpb24+IGRhdGFTZWN0aW9uKQogewogICAgIG1fZGF0YVNlY3Rpb25zLmFwcGVuZChkYXRh
U2VjdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAko
cmV2aXNpb24gMTY0MzkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUoRlRMX0pJVCkK
IAogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKKyNpbmNsdWRlICJGVExEYXRhU2VjdGlvbi5o
IgogI2luY2x1ZGUgIkZUTE9TUkV4aXQuaCIKICNpbmNsdWRlICJGVExTdGFja01hcHMuaCIKICNp
bmNsdWRlICJGVExVbndpbmRJbmZvLmgiCkBAIC00MCw4ICs0MSw2IEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotdHlwZWRlZiBpbnQ2NF90IExTZWN0aW9uV29yZDsgLy8g
V2UgcmVmZXIgdG8gTExWTSBkYXRhIHNlY3Rpb25zIHVzaW5nIExTZWN0aW9uV29yZCosIGp1c3Qg
dG8gYmUgY2xlYXIgYWJvdXQgb3VyIGludGVuZGVkIGFsaWdubWVudCByZXN0cmljdGlvbnMuCi0K
IGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgSlNDOjpKSVRDb2RlIHsKIHB1YmxpYzoKICAgICBKSVRD
b2RlKCk7CkBAIC01NiwxMiArNTUsMTIgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgaW5pdGlh
bGl6ZUV4aXRUaHVua3MoQ29kZVJlZik7CiAgICAgdm9pZCBhZGRIYW5kbGUoUGFzc1JlZlB0cjxF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlPik7Ci0gICAgdm9pZCBhZGREYXRhU2VjdGlvbihSZWZDb3Vu
dGVkQXJyYXk8TFNlY3Rpb25Xb3JkPik7CisgICAgdm9pZCBhZGREYXRhU2VjdGlvbihQYXNzUmVm
UHRyPERhdGFTZWN0aW9uPik7CiAgICAgdm9pZCBpbml0aWFsaXplQXJpdHlDaGVja0VudHJ5cG9p
bnQoQ29kZVJlZik7CiAgICAgdm9pZCBpbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoQ29kZVB0cik7
CiAgICAgCiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPj4m
IGhhbmRsZXMoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZXM7IH0KLSAgICBjb25zdCBWZWN0b3I8
UmVmQ291bnRlZEFycmF5PExTZWN0aW9uV29yZD4+JiBkYXRhU2VjdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFTZWN0aW9uczsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RGF0YVNlY3Rp
b24+PiYgZGF0YVNlY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhU2VjdGlvbnM7IH0KICAg
ICAKICAgICBDb2RlUHRyIGV4aXRUaHVua3MoKTsKICAgICAKQEAgLTc0LDcgKzczLDcgQEAgcHVi
bGljOgogICAgIFVud2luZEluZm8gdW53aW5kSW5mbzsKICAgICAKIHByaXZhdGU6Ci0gICAgVmVj
dG9yPFJlZkNvdW50ZWRBcnJheTxMU2VjdGlvbldvcmQ+PiBtX2RhdGFTZWN0aW9uczsKKyAgICBW
ZWN0b3I8UmVmUHRyPERhdGFTZWN0aW9uPj4gbV9kYXRhU2VjdGlvbnM7CiAgICAgVmVjdG9yPFJl
ZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPj4gbV9oYW5kbGVzOwogICAgIENvZGVQdHIgbV9h
ZGRyZXNzRm9yQ2FsbDsKICAgICBDb2RlUmVmIG1fYXJpdHlDaGVja0VudHJ5cG9pbnQ7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCShyZXZpc2lvbiAxNjQzOTIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5
LDcgKzc5LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxDU3RyaW5nPiBkYXRhU2VjdGlvbk5hbWVz
OwogICAgIHZvaWQqIGNvbXBhY3RVbndpbmQ7CiAgICAgc2l6ZV90IGNvbXBhY3RVbndpbmRTaXpl
OwotICAgIFJlZkNvdW50ZWRBcnJheTxMU2VjdGlvbldvcmQ+IHN0YWNrbWFwc1NlY3Rpb247Cisg
ICAgUmVmUHRyPERhdGFTZWN0aW9uPiBzdGFja21hcHNTZWN0aW9uOwogICAgIAogICAgIHZvaWQg
ZHVtcFN0YXRlKGNvbnN0IGNoYXIqIHdoZW4pOwogfTsK
</data>
<flag name="review"
          id="248790"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>