<?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>160832</bug_id>
          
          <creation_ts>2016-08-12 16:57:34 -0700</creation_ts>
          <short_desc>Make JSValue::strictEqual() handle failures to resolve JSRopeStrings.</short_desc>
          <delta_ts>2016-08-15 14:55:01 -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>WebKit Local 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1219795</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-12 16:57:34 -0700</bug_when>
    <thetext>Currently, JSValue::strictEqualSlowCaseInline() (and peers) will blindly try to access the StringImpl of a JSRopeString that fails to resolve its rope.  As a result, we&apos;ll crash with null pointer dereferences.  We should fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219798</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-12 17:01:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/27577556&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219803</commentid>
    <comment_count>2</comment_count>
      <attachid>285984</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-12 17:20:47 -0700</bug_when>
    <thetext>Created attachment 285984
proposed patch.

Let&apos;s get some EWS testing and feedback.

I don&apos;t have a test because the only test case I have so far relies on allocating just the right amount of memory to run out of memory right at the moment of resolving a rope for a strict equality check.  The test is brittle and flaky.  So far, it only manifests the issue on ARM64, but not on x86_64 yet.  So, I think its of questionable value and will leave it out for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219845</commentid>
    <comment_count>3</comment_count>
      <attachid>285984</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-12 19:31:32 -0700</bug_when>
    <thetext>Comment on attachment 285984
proposed patch.

Will fix the build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220068</commentid>
    <comment_count>4</comment_count>
      <attachid>286065</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-15 10:33:36 -0700</bug_when>
    <thetext>Created attachment 286065
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220155</commentid>
    <comment_count>5</comment_count>
      <attachid>286065</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-15 14:30:20 -0700</bug_when>
    <thetext>Comment on attachment 286065
proposed patch.

Let&apos;s call this &quot;equal&quot; since the WTF function is &quot;equal&quot;.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220169</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-15 14:55:01 -0700</bug_when>
    <thetext>Thanks for the review.  I&apos;ve replaced &quot;equals&quot; with &quot;equal&quot; (and ditto for the matching slow case function).

Landed in r204485: &lt;http://trac.webkit.org/r204485&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285984</attachid>
            <date>2016-08-12 17:20:47 -0700</date>
            <delta_ts>2016-08-15 10:33:36 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-160832.patch</filename>
            <type>text/plain</type>
            <size>17939</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA0NDM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE2LTA4LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
YWtlIEpTVmFsdWU6OnN0cmljdEVxdWFsKCkgaGFuZGxlIGZhaWx1cmVzIHRvIHJlc29sdmUgSlNS
b3BlU3RyaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDgzMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc1Nzc1NTY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBKU1ZhbHVl
OjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKCkgKGFuZCBwZWVycykgd2lsbCBibGluZGx5IHRy
eSB0bworICAgICAgICBhY2Nlc3MgdGhlIFN0cmluZ0ltcGwgb2YgYSBKU1JvcGVTdHJpbmcgdGhh
dCBmYWlscyB0byByZXNvbHZlIGl0cyByb3BlLiAgQXMgYQorICAgICAgICByZXN1bHQsIHdlJ2xs
IGNyYXNoIHdpdGggbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcy4KKworICAgICAgICBXZSBjYW4g
Zml4IHRoaXMgYnkgaW50cm9kdWNpbmcgYSBKU1N0cmluZzo6ZXF1YWxzKCkgbWV0aG9kIHRoYXQg
d2lsbCBkbyB0aGUKKyAgICAgICAgZXF1YWxpdHkgY29tcGFyaXNvbiwgYnV0IGlzIGF3YXJlIG9m
IHRoZSBwb3RlbnRpYWwgZmFpbHVyZXMgdG8gcmVzb2x2ZSByb3Blcy4KKyAgICAgICAgSlNWYWx1
ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZSgpIChhbmQgcGVlcnMpIHdpbGwgbm93IGNhbGwg
SlNTdHJpbmc6OmVxdWFscygpCisgICAgICAgIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZSB1bmRl
cmx5aW5nIFN0cmluZ0ltcGwgZGlyZWN0bHkuCisKKyAgICAgICAgQWxzbyBhZGRlZCBzb21lIGV4
Y2VwdGlvbiBjaGVja3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1
bmNJbmRleE9mKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZik6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0
RXF1YWxTbG93Q2FzZUlubGluZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU3RyaW5nOjplcXVhbHNTbG93Q2FzZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6ZXF1YWxzKToKKwogMjAxNi0wOC0xMiAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQg
aW5jbHVkZXMgb2YgUmVmQ291bnRlZExlYWtDb3VudGVyLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDQ0MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtOTYyLDYgKzk2Miw3IEBACiAJCTBGRkZDOTVFMTRFRjkwQjcwMEM3MjUzMiAvKiBERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmggKi87IH07CiAJCTBGRkZDOTVGMTRFRjkwQkIwMEM3MjUzMiAvKiBE
RkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NTMxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAgKi87IH07CiAJCTBGRkZDOTYwMTRF
RjkwQkQwMEM3MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTU0MTRFRjkw
OTUwMEM3MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuaCAqLzsgfTsK
KwkJMTNGRUNFMDZEM0I0NDVGQ0I2QzkzNDYxIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4Nzk1MTA2MTRDNTQwRkZC
NTYxQzEyNCAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi87IH07CiAJCTE0MDU2NkM0MTA3RUMyNTUw
MDVEQkM4RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA4OTRENTBGQUZCQTJEMDAwMDE4NjUgLyogSlNBUElW
YWx1ZVdyYXBwZXIuY3BwICovOyB9OwogCQkxNDA1NjZENjEwN0VDMjcxMDA1REJDOEQgLyogSlNG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNjkyQTg1RTAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5jcHAgKi87IH07CiAJCTE0
MEI3RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERBODE4RjBEOTlGRDIw
MDBCMEE0RkIgLyogSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwICovOyB9OwpAQCAtMTk4OCw2ICsx
OTg5LDcgQEAKIAkJQzRGNEI2RjQxQTA1Qzk0NDAwNUNBQjc2IC8qIGNwcF9nZW5lcmF0b3IucHkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEY0QjZEMDFB
MDVDNzZGMDA1Q0FCNzYgLyogY3BwX2dlbmVyYXRvci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNEY0QjZGNTFBMDVDOTg0MDA1Q0FCNzYgLyog
Z2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0RjRCNkQ3MUEwNUM3NkYwMDVD
QUI3NiAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5ICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0RjRCNkY2
MUEwNUM5ODQwMDVDQUI3NiAvKiBvYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEY0QjZEODFBMDVDNzZGMDA1
Q0FCNzYgLyogb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUQ5NzIyNzUyREM1NDQ1OUI5MTI1QjUzOSAv
KiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi87
IH07CiAJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxDbG9iYmVy
aXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzAw
MDM5MDE5RDhCRTZGMDAwMjNFQjAgLyogREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oICovOyB9
OwogCQlEQzAxODQxOTFEMTBDMTg5MDA1N0IwNTMgLyogSklUV29ya2xpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMDE4NDE4MUQxMEMxODcwMDU3
QjA1MyAvKiBKSVRXb3JrbGlzdC5oICovOyB9OwogCQlEQzAxODQxQTFEMTBDMThDMDA1N0IwNTMg
LyogSklUV29ya2xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gREMwMTg0MTcxRDEwQzE4NzAwNTdCMDUzIC8qIEpJVFdvcmtsaXN0LmNwcCAqLzsg
fTsKQEAgLTIxMzAsOCArMjEzMiw3IEBACiAJCUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBX
YXRjaGRvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwICovOyB9OwogCQlGRUQ5
NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRj
aGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQwNTAxQUFFNjYy
RDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07Ci0JCUQ5NzIyNzUyREM1
NDQ1OUI5MTI1QjUzOSAvKiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9k
dWxlTG9hZGVyLmggKi87IH07Ci0JCTEzRkVDRTA2RDNCNDQ1RkNCNkM5MzQ2MSAvKiBKU01vZHVs
ZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxODc5NTEwNjE0QzU0MEZGQjU2MUMxMjQgLyogSlNNb2R1bGVMb2FkZXIuY3BwICovOyB9Owor
CQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4
RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtMzI3NSw2ICszMjc2LDcg
QEAKIAkJMTRGNzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrSGFuZGxlT3duZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEY3MjU2NDE0RUUyNjVFMDBCMTY1MkIgLyog
V2Vha0hhbmRsZU93bmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtI
YW5kbGVPd25lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEY5NzQ0NjEzOEM4
NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhlYXBSb290VmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxODc5NTEwNjE0QzU0MEZGQjU2MUMxMjQgLyogSlNNb2R1bGVMb2FkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI4RDRBNzE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJp
bmdSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5n
UmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUNGNzM3NjE3MUNB
NkZCMDBDOUJCMUUgLyogV2Vhay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWFrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDUxNDIwQkE5
RThBNzAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTM1MDAsNiArMzUwMiw3IEBACiAJCTcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRl
UmVnaXN0cnlLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBE
MzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVF
NjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxl
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5MDVCQjY2MUQxMjA1MEUwMDE5RkU1
NyAvKiBJbmxpbmVBY2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5saW5lQWNjZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzkwNUJC
NjcxRDEyMDUwRTAwMTlGRTU3IC8qIElubGluZUFjY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmxpbmVBY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzkxNjBEQkIxQzhFM0VDODAwOEMwODVBIC8qIFByb3h5UmV2b2tlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3h5UmV2b2tlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0MjQsOCArNDQyNyw3IEBACiAJCUZFREE1MEQ1MUI5N0Y0RDkw
MDlBM0I0RiAvKiBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFBpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuaDsgcGF0aCA9IEFQSS90
ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0
LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRUYwNDA1MjFBQUVDNEVEMDBCRDI4QjAgLyogQ29tcGFyZUFu
ZFN3YXBUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbXBhcmVBbmRT
d2FwVGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNNb2R1
bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNNb2R1bGVMb2Fk
ZXIuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTE4Nzk1MTA2MTRDNTQwRkZCNTYxQzEyNCAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU01vZHVsZUxvYWRlci5jcHA7IHBhdGgg
PSBKU01vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRkQ2
RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTU4OTgsNiArNTkwMCw3IEBACiAJ
CQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjky
QTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5
OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi8sCisJCQkJRkVGRDZGQzUxRDVFNzk3
MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovLAogCQkJCTcwRUMwRUJDMUFBMEQ3REEw
MEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmNwcCAqLywKIAkJCQk3MEVDMEVCRDFBQTBEN0RB
MDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5oICovLAogCQkJCTI2MDBCNUE0MTUyQkFBQTcw
MDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8sCkBAIC04MDA0LDYgKzgwMDcsNyBAQAog
CQkJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQUREQjFGNjMxOEQ3N0RCRTAwOUI1OEE4IC8qIE9wYXF1ZVJvb3RTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTk2OUEwNzlCMEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJEQzJDMTUxRkRFOTEwMENEODkxMCAvKiBP
cGVyYW5kcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNDQ3RUExN0EwQkQ0NjAwRjU4OThFIC8q
IE9wZXJhbmRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDgwRTE2RjVDRDAw
QjM0NDYwIC8qIE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDQ0MjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlU3RyCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICBib29sIHJlc3VsdCA9IFdURjo6ZXF1YWwoKmFz
U3RyaW5nKGxlZnQpLT52YWx1ZShleGVjKS5pbXBsKCksICphc1N0cmluZyhyaWdodCktPnZhbHVl
KGV4ZWMpLmltcGwoKSk7CisgICAgYm9vbCByZXN1bHQgPSBhc1N0cmluZyhsZWZ0KS0+ZXF1YWxz
KGV4ZWMsIGFzU3RyaW5nKHJpZ2h0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKICNlbHNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDQ0MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzMsMjAgKzEwMzMsMjMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhl
Yy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwog
ICAgIGlmICghdGhpc09iaikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZ2V0
TGVuZ3RoKGV4ZWMsIHRoaXNPYmopOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENs
YW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMsIDEsIGxlbmd0aCk7CiAgICAgSlNWYWx1ZSBz
ZWFyY2hFbGVtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgZm9yICg7IGluZGV4IDwgbGVu
Z3RoOyArK2luZGV4KSB7CiAgICAgICAgIEpTVmFsdWUgZSA9IGdldFByb3BlcnR5KGV4ZWMsIHRo
aXNPYmosIGluZGV4KTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGlmIChKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBzZWFyY2hF
bGVtZW50LCBlKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
aW5kZXgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwpAQCAtMTA3NSwxNiArMTA3OCwx
OSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAg
ICBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmcm9tRG91YmxlKTsKICAgICB9CiAKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIGRvIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPCBs
ZW5ndGgpOwogICAgICAgICBKU1ZhbHVlIGUgPSBnZXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqLCBp
bmRleCk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgaWYgKFVO
TElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIGlmICghZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBpZiAoSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgc2VhcmNoRWxlbWVudCwg
ZSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluZGV4KSk7
CisgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0gd2hpbGUgKGluZGV4LS0p
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShy
ZXZpc2lvbiAyMDQ0MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hdGhDb21t
b24uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKQEAgLTkwMCw3ICs5MDEs
NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzCiAgICAgICAgIGJv
b2wgczEgPSB2MS5pc1N0cmluZygpOwogICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsK
ICAgICAgICAgaWYgKHMxICYmIHMyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoKmFz
U3RyaW5nKHYxKS0+dmFsdWUoZXhlYykuaW1wbCgpLCAqYXNTdHJpbmcodjIpLT52YWx1ZShleGVj
KS5pbXBsKCkpOworICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+ZXF1YWxzKGV4ZWMs
IGFzU3RyaW5nKHYyKSk7CiAKICAgICAgICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsK
ICAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQpAQCAtOTcwLDcgKzk3MSw3
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFMKICAgICBBU1NFUlQo
djEuaXNDZWxsKCkgJiYgdjIuaXNDZWxsKCkpOwogCiAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0
cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gV1RGOjpl
cXVhbCgqYXNTdHJpbmcodjEpLT52YWx1ZShleGVjKS5pbXBsKCksICphc1N0cmluZyh2MiktPnZh
bHVlKGV4ZWMpLmltcGwoKSk7CisgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFscyhl
eGVjLCBhc1N0cmluZyh2MikpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMjA0NDI0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Miw2ICs3MiwxNSBAQCB2b2lkIEpTU3RyaW5nOjpkdW1wVG9TdHJlYW0oY29u
c3QgSlNDZWxsCiAgICAgb3V0LnByaW50ZigiPiIpOwogfQogCitib29sIEpTU3RyaW5nOjplcXVh
bHNTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBvdGhlcikgY29uc3QKK3sKKyAg
ICBTdHJpbmcgc3RyMSA9IHZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHIyID0gb3RoZXItPnZh
bHVlKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBXVEY6OmVxdWFsKCpzdHIxLmltcGwoKSwgKnN0cjIuaW1wbCgp
KTsKK30KKwogc2l6ZV90IEpTU3RyaW5nOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKIHsK
ICAgICBKU1N0cmluZyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAyMDQ0
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgcHVibGljOgogICAgIFNhZmVWaWV3IHZpZXcoRXhl
Y1N0YXRlKikgY29uc3Q7CiAgICAgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIHZpZXdX
aXRoVW5kZXJseWluZ1N0cmluZyhFeGVjU3RhdGUmKSBjb25zdDsKIAorICAgIGlubGluZSBib29s
IGVxdWFscyhFeGVjU3RhdGUqLCBKU1N0cmluZyogb3RoZXIpIGNvbnN0OwogICAgIGNvbnN0IFN0
cmluZyYgdmFsdWUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB0cnlHZXRW
YWx1ZSgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZ0ltcGwqIHRyeUdldFZhbHVlSW1wbCgpIGNv
bnN0OwpAQCAtMTkyLDYgKzE5Myw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBmcmllbmQg
Y2xhc3MgSlNWYWx1ZTsKIAorICAgIGJvb2wgZXF1YWxzU2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNT
dHJpbmcqIG90aGVyKSBjb25zdDsKICAgICBib29sIGlzUm9wZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWUuaXNOdWxsKCk7IH0KICAgICBib29sIGlzU3Vic3RyaW5nKCkgY29uc3Q7CiAgICAgYm9v
bCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgSXM4Qml0OyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU1N0cmlu
Zy5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2Jvb2wgSlNTdHJpbmc6OmVxdWFscyhFeGVj
U3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoaXNSb3BlKCkg
fHwgb3RoZXItPmlzUm9wZSgpKQorICAgICAgICByZXR1cm4gZXF1YWxzU2xvd0Nhc2UoZXhlYywg
b3RoZXIpOworICAgIHJldHVybiBXVEY6OmVxdWFsKCptX3ZhbHVlLmltcGwoKSwgKm90aGVyLT5t
X3ZhbHVlLmltcGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="review"
          id="309554"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286065</attachid>
            <date>2016-08-15 10:33:36 -0700</date>
            <delta_ts>2016-08-15 14:30:20 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-160832.patch</filename>
            <type>text/plain</type>
            <size>17957</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA0NDM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE2LTA4LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
YWtlIEpTVmFsdWU6OnN0cmljdEVxdWFsKCkgaGFuZGxlIGZhaWx1cmVzIHRvIHJlc29sdmUgSlNS
b3BlU3RyaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDgzMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc1Nzc1NTY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBKU1ZhbHVl
OjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKCkgKGFuZCBwZWVycykgd2lsbCBibGluZGx5IHRy
eSB0bworICAgICAgICBhY2Nlc3MgdGhlIFN0cmluZ0ltcGwgb2YgYSBKU1JvcGVTdHJpbmcgdGhh
dCBmYWlscyB0byByZXNvbHZlIGl0cyByb3BlLiAgQXMgYQorICAgICAgICByZXN1bHQsIHdlJ2xs
IGNyYXNoIHdpdGggbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcy4KKworICAgICAgICBXZSBjYW4g
Zml4IHRoaXMgYnkgaW50cm9kdWNpbmcgYSBKU1N0cmluZzo6ZXF1YWxzKCkgbWV0aG9kIHRoYXQg
d2lsbCBkbyB0aGUKKyAgICAgICAgZXF1YWxpdHkgY29tcGFyaXNvbiwgYnV0IGlzIGF3YXJlIG9m
IHRoZSBwb3RlbnRpYWwgZmFpbHVyZXMgdG8gcmVzb2x2ZSByb3Blcy4KKyAgICAgICAgSlNWYWx1
ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZSgpIChhbmQgcGVlcnMpIHdpbGwgbm93IGNhbGwg
SlNTdHJpbmc6OmVxdWFscygpCisgICAgICAgIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZSB1bmRl
cmx5aW5nIFN0cmluZ0ltcGwgZGlyZWN0bHkuCisKKyAgICAgICAgQWxzbyBhZGRlZCBzb21lIGV4
Y2VwdGlvbiBjaGVja3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1
bmNJbmRleE9mKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZik6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0
RXF1YWxTbG93Q2FzZUlubGluZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU3RyaW5nOjplcXVhbHNTbG93Q2FzZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6ZXF1YWxzKToKKwogMjAxNi0wOC0xMiAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQg
aW5jbHVkZXMgb2YgUmVmQ291bnRlZExlYWtDb3VudGVyLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDQ0MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtOTYyLDYgKzk2Miw3IEBACiAJCTBGRkZDOTVFMTRFRjkwQjcwMEM3MjUzMiAvKiBERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmggKi87IH07CiAJCTBGRkZDOTVGMTRFRjkwQkIwMEM3MjUzMiAvKiBE
RkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NTMxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAgKi87IH07CiAJCTBGRkZDOTYwMTRF
RjkwQkQwMEM3MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTU0MTRFRjkw
OTUwMEM3MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuaCAqLzsgfTsK
KwkJMTNGRUNFMDZEM0I0NDVGQ0I2QzkzNDYxIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4Nzk1MTA2MTRDNTQwRkZC
NTYxQzEyNCAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi87IH07CiAJCTE0MDU2NkM0MTA3RUMyNTUw
MDVEQkM4RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA4OTRENTBGQUZCQTJEMDAwMDE4NjUgLyogSlNBUElW
YWx1ZVdyYXBwZXIuY3BwICovOyB9OwogCQkxNDA1NjZENjEwN0VDMjcxMDA1REJDOEQgLyogSlNG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNjkyQTg1RTAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5jcHAgKi87IH07CiAJCTE0
MEI3RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERBODE4RjBEOTlGRDIw
MDBCMEE0RkIgLyogSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwICovOyB9OwpAQCAtMTk4OCw2ICsx
OTg5LDcgQEAKIAkJQzRGNEI2RjQxQTA1Qzk0NDAwNUNBQjc2IC8qIGNwcF9nZW5lcmF0b3IucHkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEY0QjZEMDFB
MDVDNzZGMDA1Q0FCNzYgLyogY3BwX2dlbmVyYXRvci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNEY0QjZGNTFBMDVDOTg0MDA1Q0FCNzYgLyog
Z2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0RjRCNkQ3MUEwNUM3NkYwMDVD
QUI3NiAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5ICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0RjRCNkY2
MUEwNUM5ODQwMDVDQUI3NiAvKiBvYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEY0QjZEODFBMDVDNzZGMDA1
Q0FCNzYgLyogb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUQ5NzIyNzUyREM1NDQ1OUI5MTI1QjUzOSAv
KiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi87
IH07CiAJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxDbG9iYmVy
aXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzAw
MDM5MDE5RDhCRTZGMDAwMjNFQjAgLyogREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oICovOyB9
OwogCQlEQzAxODQxOTFEMTBDMTg5MDA1N0IwNTMgLyogSklUV29ya2xpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMDE4NDE4MUQxMEMxODcwMDU3
QjA1MyAvKiBKSVRXb3JrbGlzdC5oICovOyB9OwogCQlEQzAxODQxQTFEMTBDMThDMDA1N0IwNTMg
LyogSklUV29ya2xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gREMwMTg0MTcxRDEwQzE4NzAwNTdCMDUzIC8qIEpJVFdvcmtsaXN0LmNwcCAqLzsg
fTsKQEAgLTIxMzAsOCArMjEzMiw3IEBACiAJCUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBX
YXRjaGRvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwICovOyB9OwogCQlGRUQ5
NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRj
aGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQwNTAxQUFFNjYy
RDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07Ci0JCUQ5NzIyNzUyREM1
NDQ1OUI5MTI1QjUzOSAvKiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9k
dWxlTG9hZGVyLmggKi87IH07Ci0JCTEzRkVDRTA2RDNCNDQ1RkNCNkM5MzQ2MSAvKiBKU01vZHVs
ZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxODc5NTEwNjE0QzU0MEZGQjU2MUMxMjQgLyogSlNNb2R1bGVMb2FkZXIuY3BwICovOyB9Owor
CQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4
RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtMzI3NSw2ICszMjc2LDcg
QEAKIAkJMTRGNzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrSGFuZGxlT3duZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEY3MjU2NDE0RUUyNjVFMDBCMTY1MkIgLyog
V2Vha0hhbmRsZU93bmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtI
YW5kbGVPd25lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEY5NzQ0NjEzOEM4
NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhlYXBSb290VmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxODc5NTEwNjE0QzU0MEZGQjU2MUMxMjQgLyogSlNNb2R1bGVMb2FkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI4RDRBNzE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJp
bmdSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5n
UmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUNGNzM3NjE3MUNB
NkZCMDBDOUJCMUUgLyogV2Vhay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWFrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDUxNDIwQkE5
RThBNzAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTM1MDAsNiArMzUwMiw3IEBACiAJCTcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRl
UmVnaXN0cnlLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBE
MzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVF
NjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxl
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5MDVCQjY2MUQxMjA1MEUwMDE5RkU1
NyAvKiBJbmxpbmVBY2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5saW5lQWNjZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzkwNUJC
NjcxRDEyMDUwRTAwMTlGRTU3IC8qIElubGluZUFjY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmxpbmVBY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzkxNjBEQkIxQzhFM0VDODAwOEMwODVBIC8qIFByb3h5UmV2b2tlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3h5UmV2b2tlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0MjQsOCArNDQyNyw3IEBACiAJCUZFREE1MEQ1MUI5N0Y0RDkw
MDlBM0I0RiAvKiBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFBpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuaDsgcGF0aCA9IEFQSS90
ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0
LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRUYwNDA1MjFBQUVDNEVEMDBCRDI4QjAgLyogQ29tcGFyZUFu
ZFN3YXBUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbXBhcmVBbmRT
d2FwVGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNNb2R1
bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNNb2R1bGVMb2Fk
ZXIuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTE4Nzk1MTA2MTRDNTQwRkZCNTYxQzEyNCAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU01vZHVsZUxvYWRlci5jcHA7IHBhdGgg
PSBKU01vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRkQ2
RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTU4OTgsNiArNTkwMCw3IEBACiAJ
CQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjky
QTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5
OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi8sCisJCQkJRkVGRDZGQzUxRDVFNzk3
MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovLAogCQkJCTcwRUMwRUJDMUFBMEQ3REEw
MEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmNwcCAqLywKIAkJCQk3MEVDMEVCRDFBQTBEN0RB
MDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5oICovLAogCQkJCTI2MDBCNUE0MTUyQkFBQTcw
MDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8sCkBAIC04MDA0LDYgKzgwMDcsNyBAQAog
CQkJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQUREQjFGNjMxOEQ3N0RCRTAwOUI1OEE4IC8qIE9wYXF1ZVJvb3RTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTk2OUEwNzlCMEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJEQzJDMTUxRkRFOTEwMENEODkxMCAvKiBP
cGVyYW5kcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNDQ3RUExN0EwQkQ0NjAwRjU4OThFIC8q
IE9wZXJhbmRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDgwRTE2RjVDRDAw
QjM0NDYwIC8qIE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDQ0MjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlU3RyCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICBib29sIHJlc3VsdCA9IFdURjo6ZXF1YWwoKmFz
U3RyaW5nKGxlZnQpLT52YWx1ZShleGVjKS5pbXBsKCksICphc1N0cmluZyhyaWdodCktPnZhbHVl
KGV4ZWMpLmltcGwoKSk7CisgICAgYm9vbCByZXN1bHQgPSBhc1N0cmluZyhsZWZ0KS0+ZXF1YWxz
KGV4ZWMsIGFzU3RyaW5nKHJpZ2h0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKICNlbHNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDQ0MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzMsMjAgKzEwMzMsMjMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhl
Yy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwog
ICAgIGlmICghdGhpc09iaikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZ2V0
TGVuZ3RoKGV4ZWMsIHRoaXNPYmopOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENs
YW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMsIDEsIGxlbmd0aCk7CiAgICAgSlNWYWx1ZSBz
ZWFyY2hFbGVtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgZm9yICg7IGluZGV4IDwgbGVu
Z3RoOyArK2luZGV4KSB7CiAgICAgICAgIEpTVmFsdWUgZSA9IGdldFByb3BlcnR5KGV4ZWMsIHRo
aXNPYmosIGluZGV4KTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGlmIChKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBzZWFyY2hF
bGVtZW50LCBlKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
aW5kZXgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwpAQCAtMTA3NSwxNiArMTA3OCwx
OSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAg
ICBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmcm9tRG91YmxlKTsKICAgICB9CiAKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIGRvIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPCBs
ZW5ndGgpOwogICAgICAgICBKU1ZhbHVlIGUgPSBnZXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqLCBp
bmRleCk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgaWYgKFVO
TElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIGlmICghZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBpZiAoSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgc2VhcmNoRWxlbWVudCwg
ZSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluZGV4KSk7
CisgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0gd2hpbGUgKGluZGV4LS0p
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShy
ZXZpc2lvbiAyMDQ0MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hdGhDb21t
b24uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKQEAgLTkwMCw3ICs5MDEs
NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzCiAgICAgICAgIGJv
b2wgczEgPSB2MS5pc1N0cmluZygpOwogICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsK
ICAgICAgICAgaWYgKHMxICYmIHMyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoKmFz
U3RyaW5nKHYxKS0+dmFsdWUoZXhlYykuaW1wbCgpLCAqYXNTdHJpbmcodjIpLT52YWx1ZShleGVj
KS5pbXBsKCkpOworICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+ZXF1YWxzKGV4ZWMs
IGFzU3RyaW5nKHYyKSk7CiAKICAgICAgICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsK
ICAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQpAQCAtOTcwLDcgKzk3MSw3
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFMKICAgICBBU1NFUlQo
djEuaXNDZWxsKCkgJiYgdjIuaXNDZWxsKCkpOwogCiAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0
cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gV1RGOjpl
cXVhbCgqYXNTdHJpbmcodjEpLT52YWx1ZShleGVjKS5pbXBsKCksICphc1N0cmluZyh2MiktPnZh
bHVlKGV4ZWMpLmltcGwoKSk7CisgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFscyhl
eGVjLCBhc1N0cmluZyh2MikpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMjA0NDI0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Miw2ICs3MiwxNSBAQCB2b2lkIEpTU3RyaW5nOjpkdW1wVG9TdHJlYW0oY29u
c3QgSlNDZWxsCiAgICAgb3V0LnByaW50ZigiPiIpOwogfQogCitib29sIEpTU3RyaW5nOjplcXVh
bHNTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBvdGhlcikgY29uc3QKK3sKKyAg
ICBTdHJpbmcgc3RyMSA9IHZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHIyID0gb3RoZXItPnZh
bHVlKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBXVEY6OmVxdWFsKCpzdHIxLmltcGwoKSwgKnN0cjIuaW1wbCgp
KTsKK30KKwogc2l6ZV90IEpTU3RyaW5nOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKIHsK
ICAgICBKU1N0cmluZyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAyMDQ0
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgcHVibGljOgogICAgIFNhZmVWaWV3IHZpZXcoRXhl
Y1N0YXRlKikgY29uc3Q7CiAgICAgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIHZpZXdX
aXRoVW5kZXJseWluZ1N0cmluZyhFeGVjU3RhdGUmKSBjb25zdDsKIAorICAgIGlubGluZSBib29s
IGVxdWFscyhFeGVjU3RhdGUqLCBKU1N0cmluZyogb3RoZXIpIGNvbnN0OwogICAgIGNvbnN0IFN0
cmluZyYgdmFsdWUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB0cnlHZXRW
YWx1ZSgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZ0ltcGwqIHRyeUdldFZhbHVlSW1wbCgpIGNv
bnN0OwpAQCAtMTkyLDYgKzE5Myw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBmcmllbmQg
Y2xhc3MgSlNWYWx1ZTsKIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxzU2xvd0Nh
c2UoRXhlY1N0YXRlKiwgSlNTdHJpbmcqIG90aGVyKSBjb25zdDsKICAgICBib29sIGlzUm9wZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNOdWxsKCk7IH0KICAgICBib29sIGlzU3Vic3RyaW5n
KCkgY29uc3Q7CiAgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgSXM4
Qml0OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZ0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJKU1N0cmluZy5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2Jvb2wgSlNT
dHJpbmc6OmVxdWFscyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBvdGhlcikgY29uc3QKK3sK
KyAgICBpZiAoaXNSb3BlKCkgfHwgb3RoZXItPmlzUm9wZSgpKQorICAgICAgICByZXR1cm4gZXF1
YWxzU2xvd0Nhc2UoZXhlYywgb3RoZXIpOworICAgIHJldHVybiBXVEY6OmVxdWFsKCptX3ZhbHVl
LmltcGwoKSwgKm90aGVyLT5tX3ZhbHVlLmltcGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
Qwo=
</data>
<flag name="review"
          id="309634"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>