<?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>154799</bug_id>
          
          <creation_ts>2016-02-28 13:16:35 -0800</creation_ts>
          <short_desc>[[IsExtensible]] should be a virtual method in the method table</short_desc>
          <delta_ts>2016-03-01 13:45:28 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1169027</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-28 13:16:35 -0800</bug_when>
    <thetext>This will make us more consistent with the specification and is necessary for proxies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169395</commentid>
    <comment_count>1</comment_count>
      <attachid>272554</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-01 01:08:16 -0800</bug_when>
    <thetext>Created attachment 272554
WIP

This is almost done. I just need to audit some call sites of the previous isExtensible().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169531</commentid>
    <comment_count>2</comment_count>
      <attachid>272584</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-01 12:24:09 -0800</bug_when>
    <thetext>Created attachment 272584
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169533</commentid>
    <comment_count>3</comment_count>
      <attachid>272585</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-01 12:29:31 -0800</bug_when>
    <thetext>Created attachment 272585
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169537</commentid>
    <comment_count>4</comment_count>
      <attachid>272585</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-01 12:43:49 -0800</bug_when>
    <thetext>Comment on attachment 272585
patch

r=me

Do we already tests that exercises the [[IsExtensible]] check?  If not, can we add some?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169550</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-01 13:33:51 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 272585 [details]
&gt; patch
&gt; 
&gt; r=me
&gt; 
&gt; Do we already tests that exercises the [[IsExtensible]] check?  If not, can
&gt; we add some?

Thanks for the review.
We already have tests. I&apos;ll also be adding more as I work on Proxy.[[IsExtensible]]/Proxy.[[PreventExtensions]]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169560</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-01 13:45:28 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/197412</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272554</attachid>
            <date>2016-03-01 01:08:16 -0800</date>
            <delta_ts>2016-03-01 12:24:09 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>18908</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCShyZXZpc2lv
biAxOTczOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw5IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAg
ICAgdHlwZWRlZiBib29sICgqUHJldmVudEV4dGVuc2lvbnNGdW5jdGlvblB0cikoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqKTsKICAgICBQcmV2ZW50RXh0ZW5zaW9uc0Z1bmN0aW9uUHRyIHByZXZlbnRF
eHRlbnNpb25zOwogCisgICAgdHlwZWRlZiBib29sICgqSXNFeHRlbnNpYmxlRnVuY3Rpb25QdHIp
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CisgICAgSXNFeHRlbnNpYmxlRnVuY3Rpb25QdHIgaXNF
eHRlbnNpYmxlOworCiAgICAgdHlwZWRlZiB2b2lkICgqRHVtcFRvU3RyZWFtRnVuY3Rpb25QdHIp
KGNvbnN0IEpTQ2VsbCosIFByaW50U3RyZWFtJik7CiAgICAgRHVtcFRvU3RyZWFtRnVuY3Rpb25Q
dHIgZHVtcFRvU3RyZWFtOwogCkBAIC0xNTgsNiArMTYxLDcgQEAgc3RydWN0IE1ldGhvZFRhYmxl
IHsKICAgICAgICAgJkNsYXNzTmFtZTo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSwgXAogICAgICAg
ICAmQ2xhc3NOYW1lOjpnZXRUeXBlZEFycmF5SW1wbCwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpw
cmV2ZW50RXh0ZW5zaW9ucywgXAorICAgICAgICAmQ2xhc3NOYW1lOjppc0V4dGVuc2libGUsIFwK
ICAgICAgICAgJkNsYXNzTmFtZTo6ZHVtcFRvU3RyZWFtLCBcCiAgICAgICAgICZDbGFzc05hbWU6
OmVzdGltYXRlZFNpemUgXAogICAgIH0sIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTk3MzkxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDQgKzI3NSw5IEBA
IGJvb2wgSlNDZWxsOjpwcmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCoKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitib29sIEpTQ2VsbDo6aXNFeHRlbnNpYmxlKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCShyZXZpc2lvbiAxOTczOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3IEBAIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldFN0cnVjdHVyZVBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBn
ZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCBib29sIHByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CisgICAg
c3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBpc0V4dGVuc2libGUoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqKTsKIAogICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2Jq
ZWN0Kik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFu
Y2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAJKHJldmlzaW9uIDE5NzM5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODg1LDcgKzg4NSwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQCiAgICAgaWYgKHRo
aXNPYmplY3QtPnByb3RvdHlwZSgpID09IHZhbHVlKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5pc0V4dGVuc2li
bGUoKSkKKyAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRoaXNPYmplY3QtPmlzRXh0ZW5zaWJsZUlu
bGluZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaWYgKCFpc0V4dGVuc2libGUp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogCiAgICAgaWYgKCF0aGlz
T2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLCB2YWx1ZSkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxOTcz
OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIHZvaWQgSlNPYmplY3Q6OmZyZWV6ZShWTSYg
dm0pCiAKIGJvb2wgSlNPYmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBpZiAoIW9iamVjdC0+aXNFeHRlbnNpYmxlKCkpCisg
ICAgaWYgKCFvYmplY3QtPmlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNjg2LDYgKzE2ODYsMTEgQEAg
Ym9vbCBKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMoSlNPYmplYwogICAgIHJldHVybiB0cnVl
OwogfQogCitib29sIEpTT2JqZWN0Ojppc0V4dGVuc2libGUoSlNPYmplY3QqIG9iaiwgRXhlY1N0
YXRlKikKK3sKKyAgICByZXR1cm4gb2JqLT5pc0V4dGVuc2libGVJbXBsKCk7Cit9CisKIHZvaWQg
SlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgQVNTRVJUKCFzdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpOwpAQCAtMTgyMSw3ICsxODI2LDcg
QEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KAogICAgIC8vIDMuIElm
IGN1cnJlbnQgaXMgdW5kZWZpbmVkIGFuZCBleHRlbnNpYmxlIGlzIGZhbHNlLCB0aGVuIFJlamVj
dC4KICAgICAvLyA0LiBJZiBjdXJyZW50IGlzIHVuZGVmaW5lZCBhbmQgZXh0ZW5zaWJsZSBpcyB0
cnVlLCB0aGVuCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGlmICghaXNF
eHRlbnNpYmxlKCkpIHsKKyAgICAgICAgaWYgKCFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkgewog
ICAgICAgICAgICAgbWFwLT5yZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAgICAgIHJl
dHVybiByZWplY3QoZXhlYywgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRvIGRlZmluZSBw
cm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKTsKICAgICAgICAgfQpA
QCAtMjAzNyw3ICsyMDQyLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbgogICAgIC8vIEZpcnN0LCBoYW5kbGUgY2FzZXMgd2hlcmUgd2UgZG9uJ3QgY3VycmVudGx5
IGhhdmUgYSBzcGFyc2UgbWFwLgogICAgIGlmIChMSUtFTFkoIW1hcCkpIHsKICAgICAgICAgLy8g
SWYgdGhlIGFycmF5IGlzIG5vdCBleHRlbnNpYmxlLCB3ZSBzaG91bGQgaGF2ZSBlbnRlcmVkIGRp
Y3Rpb25hcnkgbW9kZSwgYW5kIGNyZWF0ZWQgdGhlIHNwYXJzZSBtYXAuCi0gICAgICAgIEFTU0VS
VChpc0V4dGVuc2libGUoKSk7CisgICAgICAgIEFTU0VSVChpc1N0cnVjdHVyZUV4dGVuc2libGUo
KSk7CiAgICAgCiAgICAgICAgIC8vIFVwZGF0ZSBtX2xlbmd0aCBpZiBuZWNlc3NhcnkuCiAgICAg
ICAgIGlmIChpID49IHN0b3JhZ2UtPmxlbmd0aCgpKQpAQCAtMjA2Myw3ICsyMDY4LDcgQEAgdm9p
ZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHN0b3JhZ2UtPmxlbmd0aCgpOwogICAgIGlmIChpID49IGxlbmd0aCkgewogICAgICAgICAv
LyBQcm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBpZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgot
ICAgICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRPbmx5KCkgfHwgIWlzRXh0ZW5zaWJsZSgpKSB7
CisgICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVhZE9ubHkoKSB8fCAhaXNTdHJ1Y3R1cmVFeHRl
bnNpYmxlKCkpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE4Myw3ICsyMTg4LDcgQEAgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIC8vIEZpcnN0LCBoYW5kbGUgY2Fz
ZXMgd2hlcmUgd2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBzcGFyc2UgbWFwLgogICAgIGlmIChM
SUtFTFkoIW1hcCkpIHsKICAgICAgICAgLy8gSWYgdGhlIGFycmF5IGlzIG5vdCBleHRlbnNpYmxl
LCB3ZSBzaG91bGQgaGF2ZSBlbnRlcmVkIGRpY3Rpb25hcnkgbW9kZSwgYW5kIGNyZWF0ZWQgdGhl
IHNwYXJlIG1hcC4KLSAgICAgICAgQVNTRVJUKGlzRXh0ZW5zaWJsZSgpKTsKKyAgICAgICAgQVNT
RVJUKGlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKTsKICAgICAKICAgICAgICAgLy8gVXBkYXRlIG1f
bGVuZ3RoIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkp
CkBAIC0yMjEzLDcgKzIyMTgsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9u
ZFZlY3RvCiAgICAgICAgICAgICAvLyBQcm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBpZiBsZW5n
dGggaXMgbm90IHdyaXRhYmxlLgogICAgICAgICAgICAgaWYgKG1hcC0+bGVuZ3RoSXNSZWFkT25s
eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgbW9kZSA9PSBQdXREaXJl
Y3RJbmRleFNob3VsZFRocm93LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
OwotICAgICAgICAgICAgaWYgKCFpc0V4dGVuc2libGUoKSkKKyAgICAgICAgICAgIGlmICghaXNT
dHJ1Y3R1cmVFeHRlbnNpYmxlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVj
LCBtb2RlID09IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3csICJBdHRlbXB0aW5nIHRvIGRlZmlu
ZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKTsKICAgICAgICAg
fQogICAgICAgICBsZW5ndGggPSBpICsgMTsKQEAgLTI4NDgsNyArMjg1MywxMCBAQCBib29sIEpT
T2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5CiAgICAgRGVmaW5lT3duUHJvcGVydHlT
Y29wZSBzY29wZShleGVjKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgY3VycmVudDsKICAgICBi
b29sIGlzQ3VycmVudERlZmluZWQgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJv
cGVydHlOYW1lLCBjdXJyZW50KTsKLSAgICByZXR1cm4gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5
RGVzY3JpcHRvcihleGVjLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGlzRXh0ZW5zaWJsZSgpLCBkZXNj
cmlwdG9yLCBpc0N1cnJlbnREZWZpbmVkLCBjdXJyZW50LCB0aHJvd0V4Y2VwdGlvbik7CisgICAg
Ym9vbCBpc0V4dGVuc2libGUgPSBpc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHRoaXMsIHBy
b3BlcnR5TmFtZSwgaXNFeHRlbnNpYmxlLCBkZXNjcmlwdG9yLCBpc0N1cnJlbnREZWZpbmVkLCBj
dXJyZW50LCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAKIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRo
cm93RXhjZXB0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCShyZXZpc2lvbiAxOTczOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTUsMTIgKzYxNSwyNSBAQCBwdWJsaWM6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZWFsKFZNJik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBmcmVlemUoVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBw
cmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGlzRXh0ZW5zaWJsZShKU09iamVjdCosIEV4ZWNTdGF0ZSopOwog
ICAgIGJvb2wgaXNTZWFsZWQoVk0mIHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5pc1NlYWxl
ZCh2bSk7IH0KICAgICBib29sIGlzRnJvemVuKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZt
KS0+aXNGcm96ZW4odm0pOyB9Ci0gICAgYm9vbCBpc0V4dGVuc2libGUoKSB7IHJldHVybiBzdHJ1
Y3R1cmUoKS0+aXNFeHRlbnNpYmxlKCk7IH0KK3ByaXZhdGU6CisgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzRXh0ZW5zaWJsZUltcGwoKSB7IHJldHVybiBpc1N0cnVjdHVyZUV4dGVuc2libGUoKTsg
fQorcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1N0cnVjdHVyZUV4dGVuc2libGUo
KSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCk7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNFeHRlbnNpYmxlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykKKyAg
ICB7IAorICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIGlzRXh0ZW5z
aWJsZU1ldGhvZCA9IG1ldGhvZFRhYmxlKHZtKS0+aXNFeHRlbnNpYmxlOworICAgICAgICBpZiAo
TElLRUxZKGlzRXh0ZW5zaWJsZU1ldGhvZCA9PSBKU09iamVjdDo6aXNFeHRlbnNpYmxlKSkKKyAg
ICAgICAgICAgIHJldHVybiBpc0V4dGVuc2libGVJbXBsKCk7CisKKyAgICAgICAgcmV0dXJuIGlz
RXh0ZW5zaWJsZU1ldGhvZCh0aGlzLCBleGVjKTsKKyAgICB9CiAgICAgYm9vbCBpbmRleGluZ1No
b3VsZEJlU3BhcnNlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAhaXNFeHRlbnNpYmxlKCkKKyAg
ICAgICAgcmV0dXJuICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKQogICAgICAgICAgICAgfHwgc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybygpOwogICAgIH0KIApAQCAtMTI3Miw3ICsxMjg1LDcgQEAg
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkg
JiYgIWlzRXh0ZW5zaWJsZSgpKQorICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYg
IWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKQEAgLTEzMzcsNyArMTM1MCw3IEBAIEFM
V0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW4KICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc0V4dGVuc2li
bGUoKSkKKyAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzU3RydWN0dXJlRXh0ZW5z
aWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBXZSB3YW50IHRoZSBzdHJ1
Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50IHRvIGZpcmUgYWZ0ZXIgdGhpcyBvYmplY3QgaGFz
IHN3aXRjaGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTczOTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxMiw3ICsyMTIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dAogICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpID09IHByb3RvVmFsdWUpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFsdWUpOwogCi0gICAgaWYgKCFvYmplY3QtPmlz
RXh0ZW5zaWJsZSgpKQorICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gb2JqZWN0LT5pc0V4dGVuc2li
bGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgaWYgKCFpc0V4dGVuc2libGUp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogCiAgICAgaWYgKCFvYmpl
Y3QtPnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMsIHByb3RvVmFsdWUpKSB7CkBAIC02
MTYsNyArNjE5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QK
IAogICAgIC8vIDMuIElmIHRoZSBbW0V4dGVuc2libGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiBP
IGlzIGZhbHNlLCB0aGVuIHJldHVybiB0cnVlLgogICAgIC8vIDQuIE90aGVyd2lzZSwgcmV0dXJu
IGZhbHNlLgotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKCFvYmplY3QtPmlz
RXh0ZW5zaWJsZSgpKSk7CisgICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5z
aWJsZUlubGluZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbighaXNFeHRlbnNpYmxlKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCkBA
IC02NTAsNyArNjU2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3QKIAogICAgIC8vIDMuIElmIHRoZSBbW0V4dGVuc2libGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBv
ZiBPIGlzIGZhbHNlLCB0aGVuIHJldHVybiB0cnVlLgogICAgIC8vIDQuIE90aGVyd2lzZSwgcmV0
dXJuIGZhbHNlLgotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKCFvYmplY3Qt
PmlzRXh0ZW5zaWJsZSgpKSk7CisgICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0
ZW5zaWJsZUlubGluZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbighaXNFeHRlbnNpYmxlKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoRXhlY1N0YXRlKiBl
eGVjKQpAQCAtNjU4LDcgKzY2NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0CiAgICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAo
IW9iai5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihmYWxzZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0
KG9iaiktPmlzRXh0ZW5zaWJsZSgpKSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KG9iaik7CisgICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZUlubGlu
ZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihpc0V4dGVuc2libGUpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdHJ1Y3RvcklzKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDE5NzM5MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk2LDcgKzE5NiwxMCBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50
ZXJuYWxNZXRob2RHCiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lc24ndCB3
b3JrIGlmICd0YXJnZXQnIGlzIGFub3RoZXIgUHJveHkuIFdlIGRvbid0IGhhdmUgaXNFeHRlbnNp
YmxlIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQgZml0cyB3LyBQcm94eXMuCiAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzNzUKLSAgICAgICAg
aWYgKCF0YXJnZXQtPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxl
ID0gdGFyZ2V0LT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFp
c0V4dGVuc2libGUpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBDb21lIHVwIHdpdGggYSB0ZXN0
IGZvciB0aGlzIGVycm9yLiBJJ20gbm90IHN1cmUgaG93IHRvIGJlY2F1c2UKICAgICAgICAgICAg
IC8vIE9iamVjdC5zZWFsKG8pIHdpbGwgbWFrZSBhbGwgZmllbGRzIFtbQ29uZmlndXJhYmxlXV0g
ZmFsc2UuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU0Mzc2CkBAIC0yMDcsMTIgKzIxMCwxNSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtSW50ZXJuYWxNZXRob2RHCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBi
b29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFBy
b3BlcnR5RGVzY3JpcHRvciB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yOwogICAgIHRvUHJvcGVydHlE
ZXNjcmlwdG9yKGV4ZWMsIHRyYXBSZXN1bHQsIHRyYXBSZXN1bHRBc0Rlc2NyaXB0b3IpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJv
b2wgdGhyb3dFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBib29sIHZhbGlkID0gdmFsaWRhdGVBbmRB
cHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBudWxscHRyLCBwcm9wZXJ0eU5hbWUsIHRhcmdl
dC0+aXNFeHRlbnNpYmxlKCksCisgICAgYm9vbCB2YWxpZCA9IHZhbGlkYXRlQW5kQXBwbHlQcm9w
ZXJ0eURlc2NyaXB0b3IoZXhlYywgbnVsbHB0ciwgcHJvcGVydHlOYW1lLCBpc0V4dGVuc2libGUs
CiAgICAgICAgIHRyYXBSZXN1bHRBc0Rlc2NyaXB0b3IsIGlzVGFyZ2V0UHJvcGVydHlEZXNjcmlw
dG9yRGVmaW5lZCwgdGFyZ2V0UHJvcGVydHlEZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiAg
ICAgaWYgKCF2YWxpZCkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgZmFpbHMgdGhlIElz
Q29tcGF0aWJsZVByb3BlcnR5RGVzY3JpcHRvciB0ZXN0LiIpKTsKQEAgLTI4OCw3ICsyOTQsMTAg
QEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogICAgICAgICAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0
IHJldHVybiAndHJ1ZScgZm9yIG5vbi1jb25maWd1cmFibGUgcHJvcGVydGllcy4iKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KCF0YXJnZXQtPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAgICAgICAgICBib29sIGlzRXh0ZW5zaWJs
ZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGlmICghaXNFeHRlbnNpYmxlKSB7CiAgICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVlJyBm
b3IgYSBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBvYmplY3Qgd2l0aCBhIGNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVj
dC5jcHAJKHJldmlzaW9uIDE5NzM5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZmxlY3RPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDExIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKICAgICBKU1ZhbHVlIHRhcmdl
dCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUg
YW4gb2JqZWN0IikpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09i
amVjdCh0YXJnZXQpLT5pc0V4dGVuc2libGUoKSkpOworCisgICAgYm9vbCBpc0V4dGVuc2libGUg
PSBhc09iamVjdCh0YXJnZXQpLT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNFeHRlbnNpYmxl
KSk7CiB9CiAKIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1yZWZsZWN0Lm93bmtleXMKQEAgLTIxMSw3ICsyMTUsMTAgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgp
ID09IHByb3RvKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVl
KSk7CiAKLSAgICBpZiAoIW9iamVjdC0+aXNFeHRlbnNpYmxlKCkpCisgICAgYm9vbCBpc0V4dGVu
c2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZUlubGluZShleGVjKTsKKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKKyAgICBpZiAoIWlzRXh0ZW5zaWJsZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKG9iamVjdC0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgcHJvdG8pKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJh
eVZhbHVlTWFwLmNwcAkocmV2aXNpb24gMTk3MzkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRFbnRyeShFeGVjUwogICAgIC8v
IFRvIHNhdmUgYSBzZXBhcmF0ZSBmaW5kICYgYWRkLCB3ZSBmaXJzdCBhbHdheXMgYWRkIHRvIHRo
ZSBzcGFyc2UgbWFwLgogICAgIC8vIEluIHRoZSB1bmNvbW1vbiBjYXNlIHRoYXQgdGhpcyBpcyBh
IG5ldyBwcm9wZXJ0eSwgYW5kIHRoZSBhcnJheSBpcyBub3QKICAgICAvLyBleHRlbnNpYmxlLCB0
aGlzIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gaGF2ZSBkb25lIC0gc28gcmVtb3ZlIGFnYWlu
LgotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7
CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5ICYmICFhcnJheS0+aXNTdHJ1Y3R1cmVFeHRlbnNp
YmxlKCkpIHsgLy8gRklYTUU6IHdoYXQgZG8gY2FsbCBoZXJlLgogICAgICAgICByZW1vdmUocmVz
dWx0Lml0ZXJhdG9yKTsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
QEAgLTExOCw3ICsxMTgsNyBAQCBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dERpcmVjdChF
eGVjCiAgICAgLy8gVG8gc2F2ZSBhIHNlcGFyYXRlIGZpbmQgJiBhZGQsIHdlIGZpcnN0IGFsd2F5
cyBhZGQgdG8gdGhlIHNwYXJzZSBtYXAuCiAgICAgLy8gSW4gdGhlIHVuY29tbW9uIGNhc2UgdGhh
dCB0aGlzIGlzIGEgbmV3IHByb3BlcnR5LCBhbmQgdGhlIGFycmF5IGlzIG5vdAogICAgIC8vIGV4
dGVuc2libGUsIHRoaXMgaXMgbm90IHRoZSByaWdodCB0aGluZyB0byBoYXZlIGRvbmUgLSBzbyBy
ZW1vdmUgYWdhaW4uCi0gICAgaWYgKG1vZGUgIT0gUHV0RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0
ICYmIHJlc3VsdC5pc05ld0VudHJ5ICYmICFhcnJheS0+aXNFeHRlbnNpYmxlKCkpIHsKKyAgICBp
ZiAobW9kZSAhPSBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QgJiYgcmVzdWx0LmlzTmV3RW50
cnkgJiYgIWFycmF5LT5pc1N0cnVjdHVyZUV4dGVuc2libGUoKSkgeyAvLyBGSVhNRToKICAgICAg
ICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywg
bW9kZSA9PSBQdXREaXJlY3RJbmRleFNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBkZWZpbmUg
cHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIik7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCShy
ZXZpc2lvbiAxOTczOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4NiwxMCBAQCBib29sIFN0cmluZ09i
amVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KG9iamVjdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgICAgaWYgKCFvYmplY3Qt
PmlzRXh0ZW5zaWJsZSgpKSB7CisgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gb2JqZWN0LT5p
c0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFpc0V4dGVuc2libGUp
IHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKICAgICAgICAgICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5v
dCBleHRlbnNpYmxlLiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE5NzM5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY5MSw3ICs2OTEsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6bm9uUHJv
cGVydHlUcmFuc2l0CiAvLyBJbiBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyBwcm9w
ZXJ0eS4KIGJvb2wgU3RydWN0dXJlOjppc1NlYWxlZChWTSYgdm0pCiB7Ci0gICAgaWYgKGlzRXh0
ZW5zaWJsZSgpKQorICAgIGlmIChpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwpAQCAtNzEwLDcgKzcx
MCw3IEBAIGJvb2wgU3RydWN0dXJlOjppc1NlYWxlZChWTSYgdm0pCiAvLyBJbiBmdXR1cmUgd2Ug
bWF5IHdhbnQgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eS4KIGJvb2wgU3RydWN0dXJlOjppc0Zyb3pl
bihWTSYgdm0pCiB7Ci0gICAgaWYgKGlzRXh0ZW5zaWJsZSgpKQorICAgIGlmIChpc1N0cnVjdHVy
ZUV4dGVuc2libGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRGVmZXJHQyBkZWZl
ckdDKHZtLmhlYXApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHJldmlzaW9uIDE5NzM5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAgcHVibGljOgog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1NlYWxlZChWTSYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNGcm96ZW4oVk0mKTsKLSAgICBib29sIGlzRXh0ZW5zaWJsZSgpIGNv
bnN0IHsgcmV0dXJuICFkaWRQcmV2ZW50RXh0ZW5zaW9ucygpOyB9CisgICAgYm9vbCBpc1N0cnVj
dHVyZUV4dGVuc2libGUoKSBjb25zdCB7IHJldHVybiAhZGlkUHJldmVudEV4dGVuc2lvbnMoKTsg
fQogICAgIGJvb2wgcHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCk7CiAgICAgc2l6ZV90IHN1
Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpOyAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272584</attachid>
            <date>2016-03-01 12:24:09 -0800</date>
            <delta_ts>2016-03-01 12:29:31 -0800</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>21974</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NDA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDE2LTAzLTAxICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFtbSXNFeHRlbnNpYmxlXV0gc2hvdWxkIGJlIGEgdmlydHVhbCBtZXRob2QgaW4gdGhlIG1ldGhv
ZCB0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU0Nzk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBtYWtlcyB1cyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBob3cgdGhlIEVTNiBzcGVj
aWZpY2F0aW9uIG1vZGVscyB0aGUKKyAgICAgICAgW1tJc0V4dGVuc2libGVdXSB0cmFwLiBNb3Zp
bmcgdGhpcyBtZXRob2QgaW50byBDbGFzc0luZm86Om1ldGhvZFRhYmxlIAorICAgICAgICBpcyBh
IHByZXJlcXVpc2l0ZSBmb3IgaW1wbGVtZW50aW5nIFByb3h5LltbSXNFeHRlbnNpYmxlXV0uCisK
KyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNFeHRlbnNpYmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAg
ICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6aXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpk
ZWZpbmVPd25JbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJ
bmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzU2VhbGVkKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRnJvemVuKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmlzRXh0ZW5zaWJsZUltcGwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNTdHJ1Y3R1cmVF
eHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRXh0ZW5zaWJsZUlubGluZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmRleGluZ1Nob3VsZEJlU3BhcnNlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmlzRXh0ZW5zaWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90
eXBlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbik6CisgICAgICAgIChKU0M6Om9iamVj
dENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JJcyk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RJc0V4
dGVuc2libGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAgIChKU0M6
OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJy
YXlWYWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpp
c1NlYWxlZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNGcm96ZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmg6CisKIDIwMTYtMDMtMDEgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
OTcwNTYuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAko
cmV2aXNpb24gMTk3MzkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsOSBAQCBzdHJ1Y3QgTWV0aG9kVGFi
bGUgewogICAgIHR5cGVkZWYgYm9vbCAoKlByZXZlbnRFeHRlbnNpb25zRnVuY3Rpb25QdHIpKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKik7CiAgICAgUHJldmVudEV4dGVuc2lvbnNGdW5jdGlvblB0ciBw
cmV2ZW50RXh0ZW5zaW9uczsKIAorICAgIHR5cGVkZWYgYm9vbCAoKklzRXh0ZW5zaWJsZUZ1bmN0
aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSopOworICAgIElzRXh0ZW5zaWJsZUZ1bmN0aW9u
UHRyIGlzRXh0ZW5zaWJsZTsKKwogICAgIHR5cGVkZWYgdm9pZCAoKkR1bXBUb1N0cmVhbUZ1bmN0
aW9uUHRyKShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVhbSYpOwogICAgIER1bXBUb1N0cmVhbUZ1
bmN0aW9uUHRyIGR1bXBUb1N0cmVhbTsKIApAQCAtMTU4LDYgKzE2MSw3IEBAIHN0cnVjdCBNZXRo
b2RUYWJsZSB7CiAgICAgICAgICZDbGFzc05hbWU6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnksIFwK
ICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0VHlwZWRBcnJheUltcGwsIFwKICAgICAgICAgJkNsYXNz
TmFtZTo6cHJldmVudEV4dGVuc2lvbnMsIFwKKyAgICAgICAgJkNsYXNzTmFtZTo6aXNFeHRlbnNp
YmxlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmR1bXBUb1N0cmVhbSwgXAogICAgICAgICAmQ2xh
c3NOYW1lOjplc3RpbWF0ZWRTaXplIFwKICAgICB9LCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE5NzM5MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw0ICsy
NzUsOSBAQCBib29sIEpTQ2VsbDo6cHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3QqCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorYm9vbCBKU0NlbGw6OmlzRXh0ZW5zaWJs
ZShKU09iamVjdCosIEV4ZWNTdGF0ZSopCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTk3MzkxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBnZXRTdHJ1
Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIE5PX1JFVFVSTl9E
VUVfVE9fQ1JBU0ggYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEV4ZWNTdGF0ZSop
OworICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgaXNFeHRlbnNpYmxlKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKik7CiAKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25z
dCBKU09iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1c3RvbUhh
c0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCShyZXZpc2lvbiAxOTczOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4NSw3
ICs4ODUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUAogICAg
IGlmICh0aGlzT2JqZWN0LT5wcm90b3R5cGUoKSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGlmICghdGhpc09iamVjdC0+aXNF
eHRlbnNpYmxlKCkpCisgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0aGlzT2JqZWN0LT5pc0V4dGVu
c2libGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmICghaXNFeHRl
bnNpYmxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKIAogICAgIGlm
ICghdGhpc09iamVjdC0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgdmFsdWUpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNp
b24gMTk3MzkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjc3LDggKzE2NzcsMTIgQEAgdm9pZCBKU09iamVjdDo6ZnJl
ZXplKFZNJiB2bSkKIAogYm9vbCBKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmICghb2JqZWN0LT5pc0V4dGVuc2li
bGUoKSkKKyAgICBpZiAoIW9iamVjdC0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKKyAgICAg
ICAgLy8gV2UndmUgYWxyZWFkeSBzZXQgdGhlIGludGVybmFsIFtbUHJldmVudEV4dGVuc2lvbnNd
XSBmaWVsZCB0byBmYWxzZS4KKyAgICAgICAgLy8gV2UgZG9uJ3QgY2FsbCB0aGUgbWV0aG9kVGFi
bGUgaXNFeHRlbnNpYmxlIGhlcmUgYmVjYXVzZSBpdCdzIG5vdCBkZWZpbmVkCisgICAgICAgIC8v
IHRoYXQgd2F5IGluIHRoZSBzcGVjaWZpY2F0aW9uLiBXZSBhcmUganVzdCBkb2luZyBhbiBvcHRp
bWl6YXRpb24gaGVyZS4KICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBvYmplY3QtPmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSh2
bSk7CkBAIC0xNjg2LDYgKzE2OTAsMTEgQEAgYm9vbCBKU09iamVjdDo6cHJldmVudEV4dGVuc2lv
bnMoSlNPYmplYwogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEpTT2JqZWN0Ojppc0V4dGVu
c2libGUoSlNPYmplY3QqIG9iaiwgRXhlY1N0YXRlKikKK3sKKyAgICByZXR1cm4gb2JqLT5pc0V4
dGVuc2libGVJbXBsKCk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVy
dGllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQVNTRVJUKCFzdGF0aWNGdW5jdGlvbnNSZWlm
aWVkKCkpOwpAQCAtMTgyMSw3ICsxODMwLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duSW5k
ZXhlZFByb3BlcnR5KAogICAgIC8vIDMuIElmIGN1cnJlbnQgaXMgdW5kZWZpbmVkIGFuZCBleHRl
bnNpYmxlIGlzIGZhbHNlLCB0aGVuIFJlamVjdC4KICAgICAvLyA0LiBJZiBjdXJyZW50IGlzIHVu
ZGVmaW5lZCBhbmQgZXh0ZW5zaWJsZSBpcyB0cnVlLCB0aGVuCiAgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KSB7Ci0gICAgICAgIGlmICghaXNFeHRlbnNpYmxlKCkpIHsKKyAgICAgICAgaWYgKCFp
c1N0cnVjdHVyZUV4dGVuc2libGUoKSkgewogICAgICAgICAgICAgbWFwLT5yZW1vdmUocmVzdWx0
Lml0ZXJhdG9yKTsKICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgdGhyb3dFeGNlcHRp
b24sICJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3Qg
ZXh0ZW5zaWJsZS4iKTsKICAgICAgICAgfQpAQCAtMjAzNyw3ICsyMDQ2LDcgQEAgdm9pZCBKU09i
amVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8vIEZpcnN0LCBoYW5kbGUgY2Fz
ZXMgd2hlcmUgd2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBzcGFyc2UgbWFwLgogICAgIGlmIChM
SUtFTFkoIW1hcCkpIHsKICAgICAgICAgLy8gSWYgdGhlIGFycmF5IGlzIG5vdCBleHRlbnNpYmxl
LCB3ZSBzaG91bGQgaGF2ZSBlbnRlcmVkIGRpY3Rpb25hcnkgbW9kZSwgYW5kIGNyZWF0ZWQgdGhl
IHNwYXJzZSBtYXAuCi0gICAgICAgIEFTU0VSVChpc0V4dGVuc2libGUoKSk7CisgICAgICAgIEFT
U0VSVChpc1N0cnVjdHVyZUV4dGVuc2libGUoKSk7CiAgICAgCiAgICAgICAgIC8vIFVwZGF0ZSBt
X2xlbmd0aCBpZiBuZWNlc3NhcnkuCiAgICAgICAgIGlmIChpID49IHN0b3JhZ2UtPmxlbmd0aCgp
KQpAQCAtMjA2Myw3ICsyMDcyLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3RvckxlbgogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3JhZ2UtPmxlbmd0aCgpOwogICAgIGlm
IChpID49IGxlbmd0aCkgewogICAgICAgICAvLyBQcm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBp
ZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgotICAgICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRP
bmx5KCkgfHwgIWlzRXh0ZW5zaWJsZSgpKSB7CisgICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVh
ZE9ubHkoKSB8fCAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKICAgICAgICAgICAgIGlmIChz
aG91bGRUaHJvdykKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjE4Myw3ICsyMTkyLDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0
bwogICAgIC8vIEZpcnN0LCBoYW5kbGUgY2FzZXMgd2hlcmUgd2UgZG9uJ3QgY3VycmVudGx5IGhh
dmUgYSBzcGFyc2UgbWFwLgogICAgIGlmIChMSUtFTFkoIW1hcCkpIHsKICAgICAgICAgLy8gSWYg
dGhlIGFycmF5IGlzIG5vdCBleHRlbnNpYmxlLCB3ZSBzaG91bGQgaGF2ZSBlbnRlcmVkIGRpY3Rp
b25hcnkgbW9kZSwgYW5kIGNyZWF0ZWQgdGhlIHNwYXJlIG1hcC4KLSAgICAgICAgQVNTRVJUKGlz
RXh0ZW5zaWJsZSgpKTsKKyAgICAgICAgQVNTRVJUKGlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKTsK
ICAgICAKICAgICAgICAgLy8gVXBkYXRlIG1fbGVuZ3RoIGlmIG5lY2Vzc2FyeS4KICAgICAgICAg
aWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCkBAIC0yMjEzLDcgKzIyMjIsNyBAQCBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3RvCiAgICAgICAgICAgICAvLyBQcm9oaWJp
dCBncm93aW5nIHRoZSBhcnJheSBpZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgogICAgICAgICAg
ICAgaWYgKG1hcC0+bGVuZ3RoSXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBy
ZWplY3QoZXhlYywgbW9kZSA9PSBQdXREaXJlY3RJbmRleFNob3VsZFRocm93LCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICAgICAgaWYgKCFpc0V4dGVuc2li
bGUoKSkKKyAgICAgICAgICAgIGlmICghaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBtb2RlID09IFB1dERpcmVjdEluZGV4U2hvdWxk
VGhyb3csICJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBu
b3QgZXh0ZW5zaWJsZS4iKTsKICAgICAgICAgfQogICAgICAgICBsZW5ndGggPSBpICsgMTsKQEAg
LTI4NDgsNyArMjg1NywxMCBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3Bl
cnR5CiAgICAgRGVmaW5lT3duUHJvcGVydHlTY29wZSBzY29wZShleGVjKTsKICAgICBQcm9wZXJ0
eURlc2NyaXB0b3IgY3VycmVudDsKICAgICBib29sIGlzQ3VycmVudERlZmluZWQgPSBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBjdXJyZW50KTsKLSAgICByZXR1
cm4gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCB0aGlzLCBwcm9wZXJ0
eU5hbWUsIGlzRXh0ZW5zaWJsZSgpLCBkZXNjcmlwdG9yLCBpc0N1cnJlbnREZWZpbmVkLCBjdXJy
ZW50LCB0aHJvd0V4Y2VwdGlvbik7CisgICAgYm9vbCBpc0V4dGVuc2libGUgPSBpc0V4dGVuc2li
bGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVy
dHlEZXNjcmlwdG9yKGV4ZWMsIHRoaXMsIHByb3BlcnR5TmFtZSwgaXNFeHRlbnNpYmxlLCBkZXNj
cmlwdG9yLCBpc0N1cnJlbnREZWZpbmVkLCBjdXJyZW50LCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAK
IGJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxOTczOTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MTUsMTIgKzYxNSwyNSBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZWFs
KFZNJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmcmVlemUoVk0mKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEV4
ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzRXh0ZW5zaWJs
ZShKU09iamVjdCosIEV4ZWNTdGF0ZSopOwogICAgIGJvb2wgaXNTZWFsZWQoVk0mIHZtKSB7IHJl
dHVybiBzdHJ1Y3R1cmUodm0pLT5pc1NlYWxlZCh2bSk7IH0KICAgICBib29sIGlzRnJvemVuKFZN
JiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+aXNGcm96ZW4odm0pOyB9Ci0gICAgYm9vbCBp
c0V4dGVuc2libGUoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNFeHRlbnNpYmxlKCk7IH0KK3By
aXZhdGU6CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzRXh0ZW5zaWJsZUltcGwoKSB7IHJldHVy
biBpc1N0cnVjdHVyZUV4dGVuc2libGUoKTsgfQorcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1N0cnVjdHVyZUV4dGVuc2libGUoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNTdHJ1
Y3R1cmVFeHRlbnNpYmxlKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFeHRlbnNpYmxl
SW5saW5lKEV4ZWNTdGF0ZSogZXhlYykKKyAgICB7IAorICAgICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgICAgICBhdXRvIGlzRXh0ZW5zaWJsZU1ldGhvZCA9IG1ldGhvZFRhYmxlKHZtKS0+
aXNFeHRlbnNpYmxlOworICAgICAgICBpZiAoTElLRUxZKGlzRXh0ZW5zaWJsZU1ldGhvZCA9PSBK
U09iamVjdDo6aXNFeHRlbnNpYmxlKSkKKyAgICAgICAgICAgIHJldHVybiBpc0V4dGVuc2libGVJ
bXBsKCk7CisKKyAgICAgICAgcmV0dXJuIGlzRXh0ZW5zaWJsZU1ldGhvZCh0aGlzLCBleGVjKTsK
KyAgICB9CiAgICAgYm9vbCBpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiAhaXNFeHRlbnNpYmxlKCkKKyAgICAgICAgcmV0dXJuICFpc1N0cnVjdHVyZUV4dGVu
c2libGUoKQogICAgICAgICAgICAgfHwgc3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpOwogICAg
IH0KIApAQCAtMTI3Miw3ICsxMjg1LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3RJbgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgpKQorICAgICAgICBp
ZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFw
KTsKQEAgLTEzMzcsNyArMTM1MCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKChtb2RlID09
IFB1dE1vZGVQdXQpICYmICFpc0V4dGVuc2libGUoKSkKKyAgICBpZiAoKG1vZGUgPT0gUHV0TW9k
ZVB1dCkgJiYgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBXZSB3YW50IHRoZSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50IHRv
IGZpcmUgYWZ0ZXIgdGhpcyBvYmplY3QgaGFzIHN3aXRjaGVkCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAxOTczOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw3ICsyMTIsMTAgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgp
ID09IHByb3RvVmFsdWUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFs
dWUpOwogCi0gICAgaWYgKCFvYmplY3QtPmlzRXh0ZW5zaWJsZSgpKQorICAgIGJvb2wgaXNFeHRl
bnNpYmxlID0gb2JqZWN0LT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
KSk7CisgICAgaWYgKCFpc0V4dGVuc2libGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcikpOwogCiAgICAgaWYgKCFvYmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNr
KGV4ZWMsIHByb3RvVmFsdWUpKSB7CkBAIC02MTYsNyArNjE5LDEwIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogICAgIC8vIDMuIElmIHRoZSBbW0V4dGVuc2li
bGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiBPIGlzIGZhbHNlLCB0aGVuIHJldHVybiB0cnVlLgog
ICAgIC8vIDQuIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLgotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKCFvYmplY3QtPmlzRXh0ZW5zaWJsZSgpKSk7CisgICAgYm9vbCBpc0V4
dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZUlubGluZShleGVjKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbighaXNFeHRlbnNpYmxl
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJ
c0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCkBAIC02NTAsNyArNjU2LDEwIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogICAgIC8vIDMuIElmIHRoZSBbW0V4dGVu
c2libGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiBPIGlzIGZhbHNlLCB0aGVuIHJldHVybiB0cnVl
LgogICAgIC8vIDQuIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLgotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKCFvYmplY3QtPmlzRXh0ZW5zaWJsZSgpKSk7CisgICAgYm9vbCBp
c0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZUlubGluZShleGVjKTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbighaXNFeHRlbnNp
YmxlKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0
b3JJc0V4dGVuc2libGUoRXhlY1N0YXRlKiBleGVjKQpAQCAtNjU4LDcgKzY2NywxMSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgSlNWYWx1ZSBvYmogPSBl
eGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KG9iaiktPmlzRXh0ZW5zaWJsZSgpKSk7CisgICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KG9iaik7CisgICAgYm9vbCBpc0V4dGVuc2libGUg
PSBvYmplY3QtPmlzRXh0ZW5zaWJsZUlubGluZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0V4dGVuc2libGUpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzKEV4ZWNTdGF0
ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAJKHJldmlzaW9uIDE5NzM5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDcgKzE5NiwxMCBAQCBi
b29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAgICAgICAgIH0KICAgICAg
ICAgLy8gRklYTUU6IHRoaXMgZG9lc24ndCB3b3JrIGlmICd0YXJnZXQnIGlzIGFub3RoZXIgUHJv
eHkuIFdlIGRvbid0IGhhdmUgaXNFeHRlbnNpYmxlIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQg
Zml0cyB3LyBQcm94eXMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTQzNzUKLSAgICAgICAgaWYgKCF0YXJnZXQtPmlzRXh0ZW5zaWJsZSgpKSB7
CisgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gdGFyZ2V0LT5pc0V4dGVuc2libGVJbmxpbmUo
ZXhlYyk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFpc0V4dGVuc2libGUpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBDb21lIHVwIHdpdGggYSB0ZXN0IGZvciB0aGlzIGVycm9yLiBJJ20gbm90IHN1cmUg
aG93IHRvIGJlY2F1c2UKICAgICAgICAgICAgIC8vIE9iamVjdC5zZWFsKG8pIHdpbGwgbWFrZSBh
bGwgZmllbGRzIFtbQ29uZmlndXJhYmxlXV0gZmFsc2UuCiAgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mzc2CkBAIC0yMDcsMTIgKzIxMCwx
NSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNF
eHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFByb3BlcnR5RGVzY3JpcHRvciB0cmFwUmVzdWx0QXNE
ZXNjcmlwdG9yOwogICAgIHRvUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHRyYXBSZXN1bHQsIHRy
YXBSZXN1bHRBc0Rlc2NyaXB0b3IpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgdGhyb3dFeGNlcHRpb24gPSBmYWxzZTsKLSAg
ICBib29sIHZhbGlkID0gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBu
dWxscHRyLCBwcm9wZXJ0eU5hbWUsIHRhcmdldC0+aXNFeHRlbnNpYmxlKCksCisgICAgYm9vbCB2
YWxpZCA9IHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgbnVsbHB0ciwg
cHJvcGVydHlOYW1lLCBpc0V4dGVuc2libGUsCiAgICAgICAgIHRyYXBSZXN1bHRBc0Rlc2NyaXB0
b3IsIGlzVGFyZ2V0UHJvcGVydHlEZXNjcmlwdG9yRGVmaW5lZCwgdGFyZ2V0UHJvcGVydHlEZXNj
cmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiAgICAgaWYgKCF2YWxpZCkgewogICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVzdWx0IGZyb20gJ2dldE93blByb3Bl
cnR5RGVzY3JpcHRvcicgZmFpbHMgdGhlIElzQ29tcGF0aWJsZVByb3BlcnR5RGVzY3JpcHRvciB0
ZXN0LiIpKTsKQEAgLTI4OCw3ICsyOTQsMTAgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUhh
c1Byb3BlcnR5KEV4ZQogICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIG5vbi1jb25maWd1
cmFibGUgcHJvcGVydGllcy4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCF0YXJnZXQtPmlzRXh0ZW5zaWJsZSgpKSB7Cisg
ICAgICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlSW5saW5l
KGV4ZWMpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghaXNFeHRlbnNpYmxlKSB7CiAg
ICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5
ICdoYXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3IgYSBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBv
YmplY3Qgd2l0aCBhIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAJKHJldmlzaW9uIDE5NzM5MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjgsNyArMTY4LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamUKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghdGFyZ2V0LmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdCh0YXJnZXQpLT5pc0V4dGVuc2libGUoKSkp
OworCisgICAgYm9vbCBpc0V4dGVuc2libGUgPSBhc09iamVjdCh0YXJnZXQpLT5pc0V4dGVuc2li
bGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oaXNFeHRlbnNpYmxlKSk7CiB9CiAKIC8vIGh0dHA6Ly93d3cuZWNtYS1p
bnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1yZWZsZWN0Lm93bmtleXMKQEAgLTIx
MSw3ICsyMTUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQog
ICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpID09IHByb3RvKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7CiAKLSAgICBpZiAoIW9iamVjdC0+aXNFeHRl
bnNpYmxlKCkpCisgICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZUlu
bGluZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICBpZiAoIWlzRXh0ZW5zaWJsZSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdC0+c2V0UHJvdG90eXBlV2l0aEN5
Y2xlQ2hlY2soZXhlYywgcHJvdG8pKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAkocmV2aXNpb24gMTk3Mzkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBTcGFyc2VBcnJheVZhbHVl
TWFwOjpwdXRFbnRyeShFeGVjUwogICAgIC8vIFRvIHNhdmUgYSBzZXBhcmF0ZSBmaW5kICYgYWRk
LCB3ZSBmaXJzdCBhbHdheXMgYWRkIHRvIHRoZSBzcGFyc2UgbWFwLgogICAgIC8vIEluIHRoZSB1
bmNvbW1vbiBjYXNlIHRoYXQgdGhpcyBpcyBhIG5ldyBwcm9wZXJ0eSwgYW5kIHRoZSBhcnJheSBp
cyBub3QKICAgICAvLyBleHRlbnNpYmxlLCB0aGlzIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8g
aGF2ZSBkb25lIC0gc28gcmVtb3ZlIGFnYWluLgotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSAm
JiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5ICYm
ICFhcnJheS0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKICAgICAgICAgcmVtb3ZlKHJlc3Vs
dC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CkBA
IC0xMTgsNyArMTE4LDcgQEAgYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJlY3QoRXhl
YwogICAgIC8vIFRvIHNhdmUgYSBzZXBhcmF0ZSBmaW5kICYgYWRkLCB3ZSBmaXJzdCBhbHdheXMg
YWRkIHRvIHRoZSBzcGFyc2UgbWFwLgogICAgIC8vIEluIHRoZSB1bmNvbW1vbiBjYXNlIHRoYXQg
dGhpcyBpcyBhIG5ldyBwcm9wZXJ0eSwgYW5kIHRoZSBhcnJheSBpcyBub3QKICAgICAvLyBleHRl
bnNpYmxlLCB0aGlzIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gaGF2ZSBkb25lIC0gc28gcmVt
b3ZlIGFnYWluLgotICAgIGlmIChtb2RlICE9IFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCAm
JiByZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAgaWYg
KG1vZGUgIT0gUHV0RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0ICYmIHJlc3VsdC5pc05ld0VudHJ5
ICYmICFhcnJheS0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKICAgICAgICAgcmVtb3ZlKHJl
c3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgbW9kZSA9PSBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24g
b2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIik7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAxOTcz
OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4NiwxMCBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0
cmluZ09iamVjdCo+KG9iamVjdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgICAgaWYgKCFvYmplY3QtPmlzRXh0ZW5zaWJs
ZSgpKSB7CisgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gb2JqZWN0LT5pc0V4dGVuc2libGVJ
bmxpbmUoZXhlYyk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFpc0V4dGVuc2libGUpIHsKICAgICAgICAg
ICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxl
LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE5NzM5MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY5MSw3ICs2OTEsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0
CiAvLyBJbiBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eS4KIGJvb2wg
U3RydWN0dXJlOjppc1NlYWxlZChWTSYgdm0pCiB7Ci0gICAgaWYgKGlzRXh0ZW5zaWJsZSgpKQor
ICAgIGlmIChpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwpAQCAtNzEwLDcgKzcxMCw3IEBAIGJvb2wg
U3RydWN0dXJlOjppc1NlYWxlZChWTSYgdm0pCiAvLyBJbiBmdXR1cmUgd2UgbWF5IHdhbnQgdG8g
Y2FjaGUgdGhpcyBwcm9wZXJ0eS4KIGJvb2wgU3RydWN0dXJlOjppc0Zyb3plbihWTSYgdm0pCiB7
Ci0gICAgaWYgKGlzRXh0ZW5zaWJsZSgpKQorICAgIGlmIChpc1N0cnVjdHVyZUV4dGVuc2libGUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXAp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlz
aW9uIDE5NzM5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAgcHVibGljOgogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc1NlYWxlZChWTSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgaXNGcm96ZW4oVk0mKTsKLSAgICBib29sIGlzRXh0ZW5zaWJsZSgpIGNvbnN0IHsgcmV0dXJu
ICFkaWRQcmV2ZW50RXh0ZW5zaW9ucygpOyB9CisgICAgYm9vbCBpc1N0cnVjdHVyZUV4dGVuc2li
bGUoKSBjb25zdCB7IHJldHVybiAhZGlkUHJldmVudEV4dGVuc2lvbnMoKTsgfQogICAgIGJvb2wg
cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCk7CiAgICAgc2l6ZV90IHN1Z2dlc3RlZE5ld091
dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpOyAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272585</attachid>
            <date>2016-03-01 12:29:31 -0800</date>
            <delta_ts>2016-03-01 12:43:49 -0800</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>22464</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NDA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDE2LTAzLTAxICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFtbSXNFeHRlbnNpYmxlXV0gc2hvdWxkIGJlIGEgdmlydHVhbCBtZXRob2QgaW4gdGhlIG1ldGhv
ZCB0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU0Nzk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBtYWtlcyB1cyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBob3cgdGhlIEVTNiBzcGVj
aWZpY2F0aW9uIG1vZGVscyB0aGUKKyAgICAgICAgW1tJc0V4dGVuc2libGVdXSB0cmFwLiBNb3Zp
bmcgdGhpcyBtZXRob2QgaW50byBDbGFzc0luZm86Om1ldGhvZFRhYmxlIAorICAgICAgICBpcyBh
IHByZXJlcXVpc2l0ZSBmb3IgaW1wbGVtZW50aW5nIFByb3h5LltbSXNFeHRlbnNpYmxlXV0uCisK
KyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNFeHRlbnNpYmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAg
ICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6aXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpk
ZWZpbmVPd25JbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJ
bmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzU2VhbGVkKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRnJvemVuKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmlzRXh0ZW5zaWJsZUltcGwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNTdHJ1Y3R1cmVF
eHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRXh0ZW5zaWJsZUlubGluZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmRleGluZ1Nob3VsZEJlU3BhcnNlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmlzRXh0ZW5zaWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90
eXBlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbik6CisgICAgICAgIChKU0M6Om9iamVj
dENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JJcyk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RJc0V4
dGVuc2libGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0U2V0UHJvdG90eXBlT2YpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAgIChKU0M6
OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJy
YXlWYWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpp
c1NlYWxlZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNGcm96ZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmg6CisKIDIwMTYtMDMtMDEgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
OTcwNTYuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAko
cmV2aXNpb24gMTk3MzkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsOSBAQCBzdHJ1Y3QgTWV0aG9kVGFi
bGUgewogICAgIHR5cGVkZWYgYm9vbCAoKlByZXZlbnRFeHRlbnNpb25zRnVuY3Rpb25QdHIpKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKik7CiAgICAgUHJldmVudEV4dGVuc2lvbnNGdW5jdGlvblB0ciBw
cmV2ZW50RXh0ZW5zaW9uczsKIAorICAgIHR5cGVkZWYgYm9vbCAoKklzRXh0ZW5zaWJsZUZ1bmN0
aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSopOworICAgIElzRXh0ZW5zaWJsZUZ1bmN0aW9u
UHRyIGlzRXh0ZW5zaWJsZTsKKwogICAgIHR5cGVkZWYgdm9pZCAoKkR1bXBUb1N0cmVhbUZ1bmN0
aW9uUHRyKShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVhbSYpOwogICAgIER1bXBUb1N0cmVhbUZ1
bmN0aW9uUHRyIGR1bXBUb1N0cmVhbTsKIApAQCAtMTU4LDYgKzE2MSw3IEBAIHN0cnVjdCBNZXRo
b2RUYWJsZSB7CiAgICAgICAgICZDbGFzc05hbWU6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnksIFwK
ICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0VHlwZWRBcnJheUltcGwsIFwKICAgICAgICAgJkNsYXNz
TmFtZTo6cHJldmVudEV4dGVuc2lvbnMsIFwKKyAgICAgICAgJkNsYXNzTmFtZTo6aXNFeHRlbnNp
YmxlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmR1bXBUb1N0cmVhbSwgXAogICAgICAgICAmQ2xh
c3NOYW1lOjplc3RpbWF0ZWRTaXplIFwKICAgICB9LCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE5NzM5MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw0ICsy
NzUsOSBAQCBib29sIEpTQ2VsbDo6cHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3QqCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorYm9vbCBKU0NlbGw6OmlzRXh0ZW5zaWJs
ZShKU09iamVjdCosIEV4ZWNTdGF0ZSopCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTk3MzkxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBnZXRTdHJ1
Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIE5PX1JFVFVSTl9E
VUVfVE9fQ1JBU0ggYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEV4ZWNTdGF0ZSop
OworICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgaXNFeHRlbnNpYmxlKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKik7CiAKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25z
dCBKU09iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1c3RvbUhh
c0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCShyZXZpc2lvbiAxOTczOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4NSw3
ICs4ODUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUAogICAg
IGlmICh0aGlzT2JqZWN0LT5wcm90b3R5cGUoKSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGlmICghdGhpc09iamVjdC0+aXNF
eHRlbnNpYmxlKCkpCisgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0aGlzT2JqZWN0LT5pc0V4dGVu
c2libGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmICghaXNFeHRl
bnNpYmxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKIAogICAgIGlm
ICghdGhpc09iamVjdC0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgdmFsdWUpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNp
b24gMTk3MzkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjc3LDggKzE2NzcsMTIgQEAgdm9pZCBKU09iamVjdDo6ZnJl
ZXplKFZNJiB2bSkKIAogYm9vbCBKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmICghb2JqZWN0LT5pc0V4dGVuc2li
bGUoKSkKKyAgICBpZiAoIW9iamVjdC0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKKyAgICAg
ICAgLy8gV2UndmUgYWxyZWFkeSBzZXQgdGhlIGludGVybmFsIFtbUHJldmVudEV4dGVuc2lvbnNd
XSBmaWVsZCB0byBmYWxzZS4KKyAgICAgICAgLy8gV2UgZG9uJ3QgY2FsbCB0aGUgbWV0aG9kVGFi
bGUgaXNFeHRlbnNpYmxlIGhlcmUgYmVjYXVzZSBpdCdzIG5vdCBkZWZpbmVkCisgICAgICAgIC8v
IHRoYXQgd2F5IGluIHRoZSBzcGVjaWZpY2F0aW9uLiBXZSBhcmUganVzdCBkb2luZyBhbiBvcHRp
bWl6YXRpb24gaGVyZS4KICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBvYmplY3QtPmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSh2
bSk7CkBAIC0xNjg2LDYgKzE2OTAsMTEgQEAgYm9vbCBKU09iamVjdDo6cHJldmVudEV4dGVuc2lv
bnMoSlNPYmplYwogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEpTT2JqZWN0Ojppc0V4dGVu
c2libGUoSlNPYmplY3QqIG9iaiwgRXhlY1N0YXRlKikKK3sKKyAgICByZXR1cm4gb2JqLT5pc0V4
dGVuc2libGVJbXBsKCk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnJlaWZ5QWxsU3RhdGljUHJvcGVy
dGllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQVNTRVJUKCFzdGF0aWNGdW5jdGlvbnNSZWlm
aWVkKCkpOwpAQCAtMTgyMSw3ICsxODMwLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duSW5k
ZXhlZFByb3BlcnR5KAogICAgIC8vIDMuIElmIGN1cnJlbnQgaXMgdW5kZWZpbmVkIGFuZCBleHRl
bnNpYmxlIGlzIGZhbHNlLCB0aGVuIFJlamVjdC4KICAgICAvLyA0LiBJZiBjdXJyZW50IGlzIHVu
ZGVmaW5lZCBhbmQgZXh0ZW5zaWJsZSBpcyB0cnVlLCB0aGVuCiAgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KSB7Ci0gICAgICAgIGlmICghaXNFeHRlbnNpYmxlKCkpIHsKKyAgICAgICAgaWYgKCFp
c1N0cnVjdHVyZUV4dGVuc2libGUoKSkgewogICAgICAgICAgICAgbWFwLT5yZW1vdmUocmVzdWx0
Lml0ZXJhdG9yKTsKICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgdGhyb3dFeGNlcHRp
b24sICJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3Qg
ZXh0ZW5zaWJsZS4iKTsKICAgICAgICAgfQpAQCAtMjAzNyw3ICsyMDQ2LDcgQEAgdm9pZCBKU09i
amVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8vIEZpcnN0LCBoYW5kbGUgY2Fz
ZXMgd2hlcmUgd2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBzcGFyc2UgbWFwLgogICAgIGlmIChM
SUtFTFkoIW1hcCkpIHsKICAgICAgICAgLy8gSWYgdGhlIGFycmF5IGlzIG5vdCBleHRlbnNpYmxl
LCB3ZSBzaG91bGQgaGF2ZSBlbnRlcmVkIGRpY3Rpb25hcnkgbW9kZSwgYW5kIGNyZWF0ZWQgdGhl
IHNwYXJzZSBtYXAuCi0gICAgICAgIEFTU0VSVChpc0V4dGVuc2libGUoKSk7CisgICAgICAgIEFT
U0VSVChpc1N0cnVjdHVyZUV4dGVuc2libGUoKSk7CiAgICAgCiAgICAgICAgIC8vIFVwZGF0ZSBt
X2xlbmd0aCBpZiBuZWNlc3NhcnkuCiAgICAgICAgIGlmIChpID49IHN0b3JhZ2UtPmxlbmd0aCgp
KQpAQCAtMjA2Myw3ICsyMDcyLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZl
Y3RvckxlbgogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3JhZ2UtPmxlbmd0aCgpOwogICAgIGlm
IChpID49IGxlbmd0aCkgewogICAgICAgICAvLyBQcm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBp
ZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgotICAgICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRP
bmx5KCkgfHwgIWlzRXh0ZW5zaWJsZSgpKSB7CisgICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVh
ZE9ubHkoKSB8fCAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKICAgICAgICAgICAgIGlmIChz
aG91bGRUaHJvdykKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjE4Myw3ICsyMTkyLDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0
bwogICAgIC8vIEZpcnN0LCBoYW5kbGUgY2FzZXMgd2hlcmUgd2UgZG9uJ3QgY3VycmVudGx5IGhh
dmUgYSBzcGFyc2UgbWFwLgogICAgIGlmIChMSUtFTFkoIW1hcCkpIHsKICAgICAgICAgLy8gSWYg
dGhlIGFycmF5IGlzIG5vdCBleHRlbnNpYmxlLCB3ZSBzaG91bGQgaGF2ZSBlbnRlcmVkIGRpY3Rp
b25hcnkgbW9kZSwgYW5kIGNyZWF0ZWQgdGhlIHNwYXJlIG1hcC4KLSAgICAgICAgQVNTRVJUKGlz
RXh0ZW5zaWJsZSgpKTsKKyAgICAgICAgQVNTRVJUKGlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKTsK
ICAgICAKICAgICAgICAgLy8gVXBkYXRlIG1fbGVuZ3RoIGlmIG5lY2Vzc2FyeS4KICAgICAgICAg
aWYgKGkgPj0gc3RvcmFnZS0+bGVuZ3RoKCkpCkBAIC0yMjEzLDcgKzIyMjIsNyBAQCBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3RvCiAgICAgICAgICAgICAvLyBQcm9oaWJp
dCBncm93aW5nIHRoZSBhcnJheSBpZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgogICAgICAgICAg
ICAgaWYgKG1hcC0+bGVuZ3RoSXNSZWFkT25seSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBy
ZWplY3QoZXhlYywgbW9kZSA9PSBQdXREaXJlY3RJbmRleFNob3VsZFRocm93LCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICAgICAgaWYgKCFpc0V4dGVuc2li
bGUoKSkKKyAgICAgICAgICAgIGlmICghaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBtb2RlID09IFB1dERpcmVjdEluZGV4U2hvdWxk
VGhyb3csICJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBu
b3QgZXh0ZW5zaWJsZS4iKTsKICAgICAgICAgfQogICAgICAgICBsZW5ndGggPSBpICsgMTsKQEAg
LTI4NDgsNyArMjg1NywxMCBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3Bl
cnR5CiAgICAgRGVmaW5lT3duUHJvcGVydHlTY29wZSBzY29wZShleGVjKTsKICAgICBQcm9wZXJ0
eURlc2NyaXB0b3IgY3VycmVudDsKICAgICBib29sIGlzQ3VycmVudERlZmluZWQgPSBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBjdXJyZW50KTsKLSAgICByZXR1
cm4gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCB0aGlzLCBwcm9wZXJ0
eU5hbWUsIGlzRXh0ZW5zaWJsZSgpLCBkZXNjcmlwdG9yLCBpc0N1cnJlbnREZWZpbmVkLCBjdXJy
ZW50LCB0aHJvd0V4Y2VwdGlvbik7CisgICAgYm9vbCBpc0V4dGVuc2libGUgPSBpc0V4dGVuc2li
bGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVy
dHlEZXNjcmlwdG9yKGV4ZWMsIHRoaXMsIHByb3BlcnR5TmFtZSwgaXNFeHRlbnNpYmxlLCBkZXNj
cmlwdG9yLCBpc0N1cnJlbnREZWZpbmVkLCBjdXJyZW50LCB0aHJvd0V4Y2VwdGlvbik7CiB9CiAK
IGJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxOTczOTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MTUsMTIgKzYxNSwzMyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZWFs
KFZNJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmcmVlemUoVk0mKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEV4
ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzRXh0ZW5zaWJs
ZShKU09iamVjdCosIEV4ZWNTdGF0ZSopOwogICAgIGJvb2wgaXNTZWFsZWQoVk0mIHZtKSB7IHJl
dHVybiBzdHJ1Y3R1cmUodm0pLT5pc1NlYWxlZCh2bSk7IH0KICAgICBib29sIGlzRnJvemVuKFZN
JiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+aXNGcm96ZW4odm0pOyB9Ci0gICAgYm9vbCBp
c0V4dGVuc2libGUoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNFeHRlbnNpYmxlKCk7IH0KK3By
aXZhdGU6CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzRXh0ZW5zaWJsZUltcGwoKSB7IHJldHVy
biBpc1N0cnVjdHVyZUV4dGVuc2libGUoKTsgfQorcHVibGljOgorICAgIC8vIFlvdSBzaG91bGQg
b25seSBjYWxsIGlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpIHdoZW46CisgICAgLy8gLSBQZXJmb3Jt
aW5nIHRoaXMgY2hlY2sgaW4gYSB3YXkgdGhhdCBpc24ndCBkZXNjcmliZWQgaW4gdGhlIHNwZWNp
ZmljYXRpb24gCisgICAgLy8gICBhcyBjYWxsaW5nIHRoZSB2aXJ0dWFsIFtbSXNFeHRlbnNpYmxl
XV0gdHJhcC4KKyAgICAvLyAtIFdoZW4geW91J3JlIGd1YXJhbnRlZWQgdGhhdCBvYmplY3QtPm1l
dGhvZFRhYmxlKCktPmlzRXh0ZW5zaWJsZSBpc24ndAorICAgIC8vICAgb3ZlcnJpZGRlbi4KKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkgeyByZXR1cm4gc3Ry
dWN0dXJlKCktPmlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpOyB9CisgICAgLy8gWW91IHNob3VsZCBj
YWxsIHRoaXMgd2hlbiBwZXJmb3JtaW5nIFtbSXNFeHRlbnNpYmxlXV0gdHJhcCBpbiBhIHBsYWNl
CisgICAgLy8gdGhhdCBpcyBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uIFRoaXMgcGVy
Zm9ybXMgdGhlIGZ1bGx5IHZpcnR1YWwKKyAgICAvLyBbW0lzRXh0ZW5zaWJsZV1dIHRyYXAuCisg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzRXh0ZW5zaWJsZUlubGluZShFeGVjU3RhdGUqIGV4ZWMp
CisgICAgeyAKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBpc0V4
dGVuc2libGVNZXRob2QgPSBtZXRob2RUYWJsZSh2bSktPmlzRXh0ZW5zaWJsZTsKKyAgICAgICAg
aWYgKExJS0VMWShpc0V4dGVuc2libGVNZXRob2QgPT0gSlNPYmplY3Q6OmlzRXh0ZW5zaWJsZSkp
CisgICAgICAgICAgICByZXR1cm4gaXNFeHRlbnNpYmxlSW1wbCgpOworCisgICAgICAgIHJldHVy
biBpc0V4dGVuc2libGVNZXRob2QodGhpcywgZXhlYyk7CisgICAgfQogICAgIGJvb2wgaW5kZXhp
bmdTaG91bGRCZVNwYXJzZSgpCiAgICAgewotICAgICAgICByZXR1cm4gIWlzRXh0ZW5zaWJsZSgp
CisgICAgICAgIHJldHVybiAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkKICAgICAgICAgICAgIHx8
IHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKTsKICAgICB9CiAKQEAgLTEyNzIsNyArMTI5Myw3
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW4KICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQ
dXQpICYmICFpc0V4dGVuc2libGUoKSkKKyAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQp
ICYmICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CkBAIC0xMzM3LDcgKzEzNTgsNyBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEluCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiAhaXNFeHRl
bnNpYmxlKCkpCisgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc1N0cnVjdHVyZUV4
dGVuc2libGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gV2Ugd2FudCB0aGUg
c3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludCB0byBmaXJlIGFmdGVyIHRoaXMgb2JqZWN0
IGhhcyBzd2l0Y2hlZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTk3MzkxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTIsNyArMjEyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3QKICAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKSA9PSBwcm90b1ZhbHVlKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdFZhbHVlKTsKIAotICAgIGlmICghb2JqZWN0
LT5pc0V4dGVuc2libGUoKSkKKyAgICBib29sIGlzRXh0ZW5zaWJsZSA9IG9iamVjdC0+aXNFeHRl
bnNpYmxlSW5saW5lKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAgIGlmICghaXNFeHRlbnNp
YmxlKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKIAogICAgIGlmICgh
b2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLCBwcm90b1ZhbHVlKSkgewpA
QCAtNjE2LDcgKzYxOSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0CiAKICAgICAvLyAzLiBJZiB0aGUgW1tFeHRlbnNpYmxlXV0gaW50ZXJuYWwgcHJvcGVydHkg
b2YgTyBpcyBmYWxzZSwgdGhlbiByZXR1cm4gdHJ1ZS4KICAgICAvLyA0LiBPdGhlcndpc2UsIHJl
dHVybiBmYWxzZS4KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbighb2JqZWN0
LT5pc0V4dGVuc2libGUoKSkpOworICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gb2JqZWN0LT5pc0V4
dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oIWlzRXh0ZW5zaWJsZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKiBleGVj
KQpAQCAtNjUwLDcgKzY1NiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0CiAKICAgICAvLyAzLiBJZiB0aGUgW1tFeHRlbnNpYmxlXV0gaW50ZXJuYWwgcHJvcGVy
dHkgb2YgTyBpcyBmYWxzZSwgdGhlbiByZXR1cm4gdHJ1ZS4KICAgICAvLyA0LiBPdGhlcndpc2Us
IHJldHVybiBmYWxzZS4KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbighb2Jq
ZWN0LT5pc0V4dGVuc2libGUoKSkpOworICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gb2JqZWN0LT5p
c0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oIWlzRXh0ZW5zaWJsZSkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlKEV4ZWNTdGF0
ZSogZXhlYykKQEAgLTY1OCw3ICs2NjcsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RDb25zdAogICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAg
aWYgKCFvYmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZmFsc2UpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09i
amVjdChvYmopLT5pc0V4dGVuc2libGUoKSkpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09i
amVjdChvYmopOworICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gb2JqZWN0LT5pc0V4dGVuc2libGVJ
bmxpbmUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oaXNFeHRlbnNpYmxlKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJcyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShyZXZpc2lvbiAxOTcz
OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsMTAgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bUludGVybmFsTWV0aG9kRwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXNu
J3Qgd29yayBpZiAndGFyZ2V0JyBpcyBhbm90aGVyIFByb3h5LiBXZSBkb24ndCBoYXZlIGlzRXh0
ZW5zaWJsZSBpbXBsZW1lbnRlZCBpbiBhIHdheSB0aGF0IGZpdHMgdy8gUHJveHlzLgogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mzc1Ci0gICAg
ICAgIGlmICghdGFyZ2V0LT5pc0V4dGVuc2libGUoKSkgeworICAgICAgICBib29sIGlzRXh0ZW5z
aWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlm
ICghaXNFeHRlbnNpYmxlKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQ29tZSB1cCB3aXRoIGEg
dGVzdCBmb3IgdGhpcyBlcnJvci4gSSdtIG5vdCBzdXJlIGhvdyB0byBiZWNhdXNlCiAgICAgICAg
ICAgICAvLyBPYmplY3Quc2VhbChvKSB3aWxsIG1ha2UgYWxsIGZpZWxkcyBbW0NvbmZpZ3VyYWJs
ZV1dIGZhbHNlLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NDM3NgpAQCAtMjA3LDEyICsyMTAsMTUgQEAgYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybUludGVybmFsTWV0aG9kRwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisg
ICAgYm9vbCBpc0V4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZUlubGluZShleGVjKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBQcm9wZXJ0eURlc2NyaXB0b3IgdHJhcFJlc3VsdEFzRGVzY3JpcHRvcjsKICAgICB0b1Byb3Bl
cnR5RGVzY3JpcHRvcihleGVjLCB0cmFwUmVzdWx0LCB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBib29sIHRocm93RXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgYm9vbCB2YWxpZCA9IHZhbGlkYXRl
QW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgbnVsbHB0ciwgcHJvcGVydHlOYW1lLCB0
YXJnZXQtPmlzRXh0ZW5zaWJsZSgpLAorICAgIGJvb2wgdmFsaWQgPSB2YWxpZGF0ZUFuZEFwcGx5
UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIG51bGxwdHIsIHByb3BlcnR5TmFtZSwgaXNFeHRlbnNp
YmxlLAogICAgICAgICB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLCBpc1RhcmdldFByb3BlcnR5RGVz
Y3JpcHRvckRlZmluZWQsIHRhcmdldFByb3BlcnR5RGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24p
OwogICAgIGlmICghdmFsaWQpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGZhaWxzIHRo
ZSBJc0NvbXBhdGlibGVQcm9wZXJ0eURlc2NyaXB0b3IgdGVzdC4iKSk7CkBAIC0yODgsNyArMjk0
LDEwIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGUKICAgICAgICAg
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycg
bXVzdCByZXR1cm4gJ3RydWUnIGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMuIikpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICghdGFyZ2V0LT5pc0V4dGVuc2libGUoKSkgeworICAgICAgICAgICAgYm9vbCBpc0V4dGVu
c2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZUlubGluZShleGVjKTsKKyAgICAgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBpZiAoIWlzRXh0ZW5zaWJsZSkgewogICAgICAgICAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1
ZScgZm9yIGEgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1cmFi
bGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RP
YmplY3QuY3BwCShyZXZpc2lvbiAxOTczOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWZsZWN0T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAgICAgSlNWYWx1ZSB0
YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiUmVmbGVjdC5pc0V4dGVuc2libGUgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50
IGJlIGFuIG9iamVjdCIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
YXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxlKCkpKTsKKworICAgIGJvb2wgaXNFeHRlbnNp
YmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzRXh0ZW5z
aWJsZSkpOwogfQogCiAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtcmVmbGVjdC5vd25rZXlzCkBAIC0yMTEsNyArMjE1LDEwIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKICAgICBpZiAob2JqZWN0LT5wcm90b3R5
cGUoKSA9PSBwcm90bykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
dHJ1ZSkpOwogCi0gICAgaWYgKCFvYmplY3QtPmlzRXh0ZW5zaWJsZSgpKQorICAgIGJvb2wgaXNF
eHRlbnNpYmxlID0gb2JqZWN0LT5pc0V4dGVuc2libGVJbmxpbmUoZXhlYyk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoKSk7CisgICAgaWYgKCFpc0V4dGVuc2libGUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihvYmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMsIHByb3RvKSkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNl
QXJyYXlWYWx1ZU1hcC5jcHAJKHJldmlzaW9uIDE5NzM5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1MKICAg
ICAvLyBUbyBzYXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3YXlzIGFkZCB0
byB0aGUgc3BhcnNlIG1hcC4KICAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0aGF0IHRoaXMg
aXMgYSBuZXcgcHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMgbm90CiAgICAgLy8gZXh0ZW5zaWJs
ZSwgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAtIHNvIHJlbW92ZSBh
Z2Fpbi4KLSAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYgIWFycmF5LT5pc0V4dGVuc2libGUo
KSkgeworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzU3RydWN0dXJlRXh0
ZW5zaWJsZSgpKSB7CiAgICAgICAgIHJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICBp
ZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wg
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KEV4ZWMKICAgICAvLyBUbyBzYXZlIGEgc2Vw
YXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3YXlzIGFkZCB0byB0aGUgc3BhcnNlIG1hcC4K
ICAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0aGF0IHRoaXMgaXMgYSBuZXcgcHJvcGVydHks
IGFuZCB0aGUgYXJyYXkgaXMgbm90CiAgICAgLy8gZXh0ZW5zaWJsZSwgdGhpcyBpcyBub3QgdGhl
IHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAtIHNvIHJlbW92ZSBhZ2Fpbi4KLSAgICBpZiAobW9k
ZSAhPSBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QgJiYgcmVzdWx0LmlzTmV3RW50cnkgJiYg
IWFycmF5LT5pc0V4dGVuc2libGUoKSkgeworICAgIGlmIChtb2RlICE9IFB1dERpcmVjdEluZGV4
TGlrZVB1dERpcmVjdCAmJiByZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzU3RydWN0dXJl
RXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgIHJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAg
ICByZXR1cm4gcmVqZWN0KGV4ZWMsIG1vZGUgPT0gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdywg
IkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRl
bnNpYmxlLiIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3MzkxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyAr
ODYsMTAgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTTwogICAgIFN0
cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihvYmplY3QpOwog
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7
Ci0gICAgICAgIGlmICghb2JqZWN0LT5pc0V4dGVuc2libGUoKSkgeworICAgICAgICBib29sIGlz
RXh0ZW5zaWJsZSA9IG9iamVjdC0+aXNFeHRlbnNpYmxlSW5saW5lKGV4ZWMpOworICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICghaXNFeHRlbnNpYmxlKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24p
CiAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0
eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSkpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCShyZXZpc2lvbiAxOTczOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTEsNyArNjkxLDcgQEAgU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdAogLy8gSW4gZnV0dXJlIHdlIG1heSB3
YW50IHRvIGNhY2hlIHRoaXMgcHJvcGVydHkuCiBib29sIFN0cnVjdHVyZTo6aXNTZWFsZWQoVk0m
IHZtKQogewotICAgIGlmIChpc0V4dGVuc2libGUoKSkKKyAgICBpZiAoaXNTdHJ1Y3R1cmVFeHRl
bnNpYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIERlZmVyR0MgZGVmZXJHQyh2
bS5oZWFwKTsKQEAgLTcxMCw3ICs3MTAsNyBAQCBib29sIFN0cnVjdHVyZTo6aXNTZWFsZWQoVk0m
IHZtKQogLy8gSW4gZnV0dXJlIHdlIG1heSB3YW50IHRvIGNhY2hlIHRoaXMgcHJvcGVydHkuCiBi
b29sIFN0cnVjdHVyZTo6aXNGcm96ZW4oVk0mIHZtKQogewotICAgIGlmIChpc0V4dGVuc2libGUo
KSkKKyAgICBpZiAoaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxOTczOTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgz
LDcgKzE4Myw3IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNTZWFs
ZWQoVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzRnJvemVuKFZNJik7Ci0gICAg
Ym9vbCBpc0V4dGVuc2libGUoKSBjb25zdCB7IHJldHVybiAhZGlkUHJldmVudEV4dGVuc2lvbnMo
KTsgfQorICAgIGJvb2wgaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkgY29uc3QgeyByZXR1cm4gIWRp
ZFByZXZlbnRFeHRlbnNpb25zKCk7IH0KICAgICBib29sIHB1dFdpbGxHcm93T3V0T2ZMaW5lU3Rv
cmFnZSgpOwogICAgIHNpemVfdCBzdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHko
KTsgCiAK
</data>
<flag name="review"
          id="297351"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>