<?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>159835</bug_id>
          
          <creation_ts>2016-07-15 14:20:05 -0700</creation_ts>
          <short_desc>Added a makeRef&lt;T&gt; helper</short_desc>
          <delta_ts>2016-07-15 14:51:57 -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>New Bugs</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>andersca</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1211568</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-15 14:20:05 -0700</bug_when>
    <thetext>Added a makeRef&lt;T&gt; helper</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211569</commentid>
    <comment_count>1</comment_count>
      <attachid>283791</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-15 14:23:32 -0700</bug_when>
    <thetext>Created attachment 283791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211581</commentid>
    <comment_count>2</comment_count>
      <attachid>283791</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-07-15 14:44:44 -0700</bug_when>
    <thetext>Comment on attachment 283791
Patch

Quite nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211586</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-15 14:51:57 -0700</bug_when>
    <thetext>Committed r203303: &lt;http://trac.webkit.org/changeset/203303&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283791</attachid>
            <date>2016-07-15 14:23:32 -0700</date>
            <delta_ts>2016-07-15 14:44:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159835-20160715142243.patch</filename>
            <type>text/plain</type>
            <size>79937</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzMzAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDE2LTA3LTE1ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkZWQgYSBtYWtlUmVmPFQ+IGhlbHBlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5ODM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQW5kZXJzIHRvbGQgbWUgdG8hCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0
ZWRTY3JpcHRIb3N0Ojp3cmFwcGVyKToKKwogMjAxNi0wNy0xNSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgRnVuY3Rpb25PdmVycmlkZSdzIHBhcnNlQ2xhdXNlKCkg
bmVlZHMgdG8ga2VlcCB0aGUgQ1N0cmluZyBpbnN0YW5jZSBpbiBzY29wZSB3aGlsZSBpdHMgZGF0
YSBpcyBiZWluZyB1c2VkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjAzMjM4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIEpTVmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0
Ojp3cmFwcGVyKEV4ZWMKIAogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBKU0luamVjdGVkU2Ny
aXB0SG9zdDo6Y3JlYXRlUHJvdG90eXBlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0luamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKTsKLSAgICBKU0luamVjdGVk
U2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0ID0gSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmNy
ZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIFJlZjxJbmplY3RlZFNjcmlwdEhvc3Q+KCp0aGlz
KSk7CisgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCA9IEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBtYWtlUmVmKCp0
aGlzKSk7CiAgICAgbV93cmFwcGVycy5hZGRXcmFwcGVyKGdsb2JhbE9iamVjdCwgaW5qZWN0ZWRT
Y3JpcHRIb3N0KTsKIAogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdEhvc3Q7CkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjAzMjM4KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxNi0wNy0xNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZGVkIGEgbWFrZVJlZjxUPiBoZWxwZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTgzNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFuZGVycyB0b2xkIG1lIHRvIQorCisg
ICAgICAgICogd3RmL1JlZi5oOgorICAgICAgICAoV1RGOjptYWtlUmVmKTogSGVscGVyIGZ1bmN0
aW9uIHRvIGRvIHR5cGUgaW5mZXJlbmNlIGZvciB5b3UuCisKIDIwMTYtMDctMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBhbiBleHRyYSBoZWFwIGFs
bG9jYXRpb24gd2hlbiBkaXNwYXRjaGluZyBGdW5jdGlvbnMgdG8gV29ya1F1ZXVlCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWYuaAko
cmV2aXNpb24gMjAzMjM4KQorKysgU291cmNlL1dURi93dGYvUmVmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIxNyw2ICsyMTcsMTIgQEAgaW5saW5lIFJlZjxUPiBhZG9wdFJlZihUJiByZWZlcmVuY2Up
CiAgICAgcmV0dXJuIFJlZjxUPihyZWZlcmVuY2UsIFJlZjxUPjo6QWRvcHQpOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIFJlZjxUPiBtYWtlUmVmKFQmIHJlZmVyZW5jZSkKK3sK
KyAgICByZXR1cm4gUmVmPFQ+KHJlZmVyZW5jZSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIEV4
cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlwZT4gaW5saW5lIGJvb2wgaXMoUmVmPEFyZ1R5cGU+
JiBzb3VyY2UpCiB7CiAgICAgcmV0dXJuIGlzPEV4cGVjdGVkVHlwZT4oc291cmNlLmdldCgpKTsK
QEAgLTIzMSw2ICsyMzcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVu
YW1lCiAKIHVzaW5nIFdURjo6UmVmOwogdXNpbmcgV1RGOjphZG9wdFJlZjsKK3VzaW5nIFdURjo6
bWFrZVJlZjsKIHVzaW5nIFdURjo6c3RhdGljX3JlZmVyZW5jZV9jYXN0OwogCiAjZW5kaWYgLy8g
V1RGX1JlZl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDMyMzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDYgQEAKKzIwMTYtMDct
MTUgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBh
IG1ha2VSZWY8VD4gaGVscGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTk4MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBbmRlcnMgdG9sZCBtZSB0byEKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpwdXRPckFkZE9uU2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWREZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJT
ZXJ2ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2
ZXI6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2
ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURC
U2VydmVyOjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZENyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6
OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9j
ZXNzSURCU2VydmVyOjpkaWREZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9j
ZXNzSURCU2VydmVyOjpkaWRPcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkSXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nl
c3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9j
ZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJblBy
b2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNz
SURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lE
QlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9j
ZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsb3NlRnJvbVNlcnZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9u
Q2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVu
QW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNz
SURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
UHJvY2Vzc0lEQlNlcnZlcjo6Y29uZmlybURpZENsb3NlRnJvbVNlcnZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVUcmFja1Nv
dXJjZUluZm9SZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6Y29uc3Ry
YWludHNWYWxpZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dXNl
ck1lZGlhQWNjZXNzR3JhbnRlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVE
ZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlv
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c3VzcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
c3VzcGVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF5UmVz
dW1lUGxheWJhY2spOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZl
cmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJvY2Vzc1BlbmRpbmdUYXNrcyk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXQ6OmNvbm5lY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpqc0Z1bmN0aW9uKToK
KyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUZXh0
Q29udGVudCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bW1hbmRMaW5lQVBJSG9zdDo6d3JhcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmludmFs
aWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRFeHRlcm5hbFBsYXliYWNrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNv
dXJjZUhhbmRsZTo6bm90aWZ5RmluaXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Nv
Y2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlQmFzZTo6ZGlzY29ubmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmRpZFJl
Y2VpdmVIZWFkZXIpOgorCiAyMDE2LTA3LTE0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRml4IHRoZSAhRU5BQkxFKFdFQl9TT0NLRVRTKSBidWlsZCBh
ZnRlciByMjAyOTMwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAyMDMyMzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk2Nyw3ICs5NjcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVy
KElECiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB2YWx1ZS0+d3JpdGVCbG9ic1RvRGlz
a0ZvckluZGV4ZWREQihbcHJvdGVjdGVkVGhpcyA9IFJlZjxJREJUcmFuc2FjdGlvbj4oKnRoaXMp
LCB0aGlzLCBwcm90ZWN0ZWRPcGVyYXRpb24gPSBSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbj4ob3BlcmF0aW9uKSwga2V5RGF0YSA9IElEQktleURhdGEoa2V5LmdldCgpKS5pc29s
YXRlZENvcHkoKSwgb3ZlcndyaXRlTW9kZV0oY29uc3QgSURCVmFsdWUmIGlkYlZhbHVlKSBtdXRh
YmxlIHsKKyAgICB2YWx1ZS0+d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBwcm90ZWN0ZWRPcGVyYXRpb24gPSBSZWY8SURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4ob3BlcmF0aW9uKSwga2V5RGF0YSA9IElEQktl
eURhdGEoa2V5LmdldCgpKS5pc29sYXRlZENvcHkoKSwgb3ZlcndyaXRlTW9kZV0oY29uc3QgSURC
VmFsdWUmIGlkYlZhbHVlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgaWYgKGlkYlZhbHVlLmRhdGEoKS5kYXRhKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMDMyMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTEsMzAxICs5MSwzMDEgQEAgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQm
IEluUHJvYwogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0
aGlzKSwgcmVxdWVzdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKICAgICAg
ICAgbV9zZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKTsKICAgICB9KTsKIH0KIAog
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1
bHREYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZURhdGFiYXNlKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQog
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlcXVl
c3REYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhXSB7CiAgICAgICAgIG1fc2VydmVy
LT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCiB7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRp
ZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKLSAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Q
cm9jZXNzSURCU2VydmVyPigqdGhpcyksIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewogICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCiB7Ci0gICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNl
cnZlcj4oKnRoaXMpLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CisgICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKICAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJy
b3IpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNz
SURCU2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0
YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ3JlYXRlT2JqZWN0U3RvcmUo
cmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRE
ZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJ
blByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVPYmpl
Y3RTdG9yZShyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
IHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ2xl
YXJPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZENyZWF0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
CiB7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENy
ZWF0ZUluZGV4KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkRGVsZXRl
SW5kZXgocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblBy
b2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1
bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRQdXRPckFkZChyZXN1
bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldFJl
Y29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJT
ZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7
CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRSZWNvcmQocmVzdWx0RGF0YSk7
CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudChjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0
aGlzKSwgcmVzdWx0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CiAgICAgICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRDb3VudChyZXN1bHREYXRhKTsKICAgICB9KTsK
IH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZChjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwg
cmVzdWx0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVSZWNvcmQocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9
CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRPcGVuQ3Vyc29yKGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1
bHREYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXItPmRpZE9wZW5DdXJzb3IocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1bHRE
YXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZEl0ZXJhdGVDdXJzb3IocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+
KCp0aGlzKSwgcmVzb3VyY2VJZGVudGlmaWVyXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc291cmNlSWRl
bnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+YWJvcnRUcmFuc2FjdGlvbihyZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29tbWl0
VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXNvdXJjZUlkZW50aWZp
ZXIpCiB7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXJd
IHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVzb3VyY2VJZGVudGlmaWVyXSB7CiAgICAgICAgIG1fc2VydmVy
LT5jb21taXRUcmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vz
c0lEQlNlcnZlcj4oKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2Fj
dGlvbklkZW50aWZpZXJdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7CiAgICAgICAgIG1fc2VydmVyLT5kaWRGaW5p
c2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
c3VsdERhdGEsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNz
SURCU2VydmVyPigqdGhpcyksIHJlc3VsdERhdGEsIGluZm9dIHsKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVz
dWx0RGF0YSwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+Y3JlYXRlT2JqZWN0U3RvcmUocmVz
dWx0RGF0YSwgaW5mbyk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlz
KSwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0
RGF0YSwgb2JqZWN0U3RvcmVOYW1lXSB7CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVPYmplY3RT
dG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKICAgICB9KTsKIH0KIAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJv
Y2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
XSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXJdIHsK
ICAgICAgICAgbV9zZXJ2ZXItPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpj
cmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbykKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlcXVlc3RE
YXRhLCBpbmZvXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBpbmZvXSB7CiAgICAgICAg
IG1fc2VydmVyLT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbyk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUpCiB7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0
RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWVdIHsKKyAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lXSB7CiAgICAgICAg
IG1fc2VydmVyLT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBpbmRleE5hbWUpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0
T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRh
JiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7Ci0gICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZl
cj4oKnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdIHsK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVNb2Rl
XSB7CiAgICAgICAgIG1fc2VydmVyLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFs
dWUsIG92ZXJ3cml0ZU1vZGUpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCiB7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRo
aXMpLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RE
YXRhLCBrZXlSYW5nZURhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0
RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCiB7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRo
aXMpLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RE
YXRhLCBrZXlSYW5nZURhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPmdldENvdW50KHJlcXVlc3RE
YXRhLCBrZXlSYW5nZURhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCiB7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4o
KnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3REYXRhLCBrZXlSYW5nZURhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChy
ZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlz
KSwgcmVxdWVzdERhdGEsIGluZm9dIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGluZm9d
IHsKICAgICAgICAgbV9zZXJ2ZXItPm9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8pOwogICAg
IH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSwgdW5zaWdu
ZWQgbG9uZyBjb3VudCkKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlcXVlc3RE
YXRhLCBrZXksIGNvdW50XSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBrZXksIGNvdW50
XSB7CiAgICAgICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBrZXksIGNv
dW50KTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmVzdGFibGlzaFRy
YW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElE
QlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyks
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm9dIHsKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+ZXN0
YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CiAg
ICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBy
ZXF1ZXN0ZWRWZXJzaW9uKQogewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCByZXF1ZXN0
SWRlbnRpZmllciwgcmVxdWVzdGVkVmVyc2lvbl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVu
dGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVy
LT5maXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJl
cXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB9KTsKIH0KIAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikK
IHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
ZXJyb3JdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewog
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkU3RhcnRUcmFuc2FjdGlvbih0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRpZENsb3NlRnJvbVNlcnZlcihJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSURCRXJyb3ImIGVycm9yKQogewotICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nl
c3NJREJTZXJ2ZXI+KCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5l
Y3Rpb24uaWRlbnRpZmllcigpLCBlcnJvcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIGVycm9yXSB7CiAgICAg
ICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDbG9zZUZyb21TZXJ2ZXIoZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3Qg
bmV3VmVyc2lvbikKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlcXVlc3RJZGVu
dGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RJ
ZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uXSB7CiAgICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5ub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChyZXF1ZXN0SWRlbnRpZmllciwg
b2xkVmVyc2lvbiwgbmV3VmVyc2lvbik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcikKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXJdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2Vk
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0geworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsK
IH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcikKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigq
dGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyXSB7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVu
dGlmaWVyXSB7CiAgICAgICAgIG1fc2VydmVyLT5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICB9KTsK
IH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+
KCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKICAg
ICAgICAgbV9zZXJ2ZXItPm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogICAg
IH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29uZmlybURpZENsb3NlRnJvbVNl
cnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nl
c3NJREJTZXJ2ZXI+KCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0geworICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyXSB7CiAgICAgICAgIG1fc2Vy
dmVyLT5jb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJh
c2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG1haW5GcmFtZU9yaWdpbiwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50NjRfdCBjYWxsYmFja0lEKQog
ewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgbWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5n
T3JpZ2luLCBjYWxsYmFja0lEXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1haW5GcmFtZU9yaWdpbiwgb3Bl
bmluZ09yaWdpbiwgY2FsbGJhY2tJRF0gewogICAgICAgICBtX3NlcnZlci0+Z2V0QWxsRGF0YWJh
c2VOYW1lcyhtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+aWRlbnRpZmllcigpLCBtYWluRnJhbWVPcmln
aW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrSUQpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBjYWxsYmFja0lE
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1lcykKIHsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURC
U2VydmVyPigqdGhpcyksIGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXNdIHsKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lc10gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1Nl
cnZlci0+ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyhjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVzKTsK
ICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcAkocmV2aXNpb24gMjAzMjM4KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgTWVkaWFEZXZpY2Vz
UmVxdWVzdDo6ZGlkQ29tcGxldGVUcmEKICAgICAgICAgZGV2aWNlcy5hcHBlbmQoTWVkaWFEZXZp
Y2VJbmZvOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBsYWJlbCwgaWQsIGdyb3Vw
SWQsIGRldmljZVR5cGUpKTsKICAgICB9CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzID0gUmVmPE1lZGlhRGV2aWNlc1JlcXVlc3Q+KCp0aGlzKSwgZGV2aWNlcyA9IFdURk1v
dmUoZGV2aWNlcyldKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkZXZpY2VzID0gV1RGTW92ZShkZXZpY2VzKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wcm9taXNlLnJlc29sdmUoZGV2aWNlcyk7
CiAgICAgfSk7CiAgICAgbV9wcm90ZWN0b3IgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3Bw
CShyZXZpc2lvbiAyMDMyMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpjb25zdHJhaW50c1ZhbGlkYQogICAgIGZvciAoYXV0byYg
dmlkZW9UcmFjayA6IHZpZGVvVHJhY2tzKQogICAgICAgICBtX3ZpZGVvRGV2aWNlVUlEcy5hcHBl
bmQodmlkZW9UcmFjay0+cGVyc2lzdGVudElEKCkpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdGVjdGVkVGhpcyA9IFJlZjxVc2VyTWVkaWFSZXF1ZXN0PigqdGhpcyldKCkgbXV0YWJsZSB7
CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgp
IG11dGFibGUgewogICAgICAgICAvLyAyIC0gVGhlIGNvbnN0cmFpbnRzIGFyZSB2YWxpZCwgYXNr
IHRoZSB1c2VyIGZvciBhY2Nlc3MgdG8gbWVkaWEuCiAgICAgICAgIGlmIChVc2VyTWVkaWFDb250
cm9sbGVyKiBjb250cm9sbGVyID0gcHJvdGVjdGVkVGhpcy0+bV9jb250cm9sbGVyKQogICAgICAg
ICAgICAgY29udHJvbGxlci0+cmVxdWVzdFVzZXJNZWRpYUFjY2Vzcyhwcm90ZWN0ZWRUaGlzLmdl
dCgpKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnVzZXJNZWRp
YUFjY2Vzc0dyCiAgICAgbV9hbGxvd2VkVmlkZW9EZXZpY2VVSUQgPSB2aWRlb0RldmljZVVJRDsK
ICAgICBtX2F1ZGlvRGV2aWNlVUlEQWxsb3dlZCA9IGF1ZGlvRGV2aWNlVUlEOwogCi0gICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZjxVc2VyTWVkaWFSZXF1ZXN0PigqdGhp
cyksIGF1ZGlvRGV2aWNlVUlELCB2aWRlb0RldmljZVVJRF0oKSBtdXRhYmxlIHsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGF1ZGlvRGV2aWNl
VUlELCB2aWRlb0RldmljZVVJRF0oKSBtdXRhYmxlIHsKICAgICAgICAgLy8gMyAtIHRoZSB1c2Vy
IGdyYW50ZWQgYWNjZXNzLCBhc2sgcGxhdGZvcm0gdG8gY3JlYXRlIHRoZSBtZWRpYSBzdHJlYW0g
ZGVzY3JpcHRvcnMuCiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRv
bigpLmNyZWF0ZU1lZGlhU3RyZWFtKHByb3RlY3RlZFRoaXMucHRyKCksIGF1ZGlvRGV2aWNlVUlE
LCB2aWRlb0RldmljZVVJRCk7CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMDMyMzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc5Nyw3ICs3OTcsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVOb2Rl
RGVsZXRpb24oCiAKICAgICAgICAgbV9pc0RlbGV0aW9uU2NoZWR1bGVkID0gdHJ1ZTsKIAotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEF1ZGlvQ29udGV4dD4o
KnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kZWxldGVNYXJrZWROb2RlcygpOwogICAgICAgICB9KTsKICAgICB9CkBAIC0xMDAxLDcg
KzEwMDEsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuCiB7CiAg
ICAgLy8gTWFrZSBzdXJlIHRvIGNhbGwgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKCkg
b24gdGhlIG1haW4gdGhyZWFkLCBzaW5jZQogICAgIC8vIHdlIGNvdWxkIGJlIG9uIHRoZSBhdWRp
byBJL08gdGhyZWFkIGhlcmUgYW5kIHRoZSBjYWxsIGludG8gV2ViQ29yZSBjb3VsZCBibG9jay4K
LSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEF1ZGlvQ29udGV4dD4o
KnRoaXMpXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQogICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+ZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsK
ICAgICB9KTsKQEAgLTEwNjEsNyArMTA2MSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5k
KFByb21pc2UmJiBwcm8KIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBtX2Rlc3RpbmF0
aW9uTm9kZS0+c3VzcGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxBdWRpb0NvbnRleHQ+
KCp0aGlzKV0geworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlN1c3Bl
bmRlZCk7CiAgICAgfSk7CiB9CkBAIC0xMDkwLDcgKzEwOTAsNyBAQCB2b2lkIEF1ZGlvQ29udGV4
dDo6cmVzdW1lKFByb21pc2UmJiBwcm9tCiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAg
bV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxBdWRp
b0NvbnRleHQ+KCp0aGlzKV0geworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBzZXRTdGF0ZShTdGF0
ZTo6UnVubmluZyk7CiAgICAgfSk7CiB9CkBAIC0xMTExLDcgKzExMTEsNyBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6Y2xvc2UoUHJvbWlzZSYmIHByb21pCiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwog
Ci0gICAgbV9kZXN0aW5hdGlvbk5vZGUtPmNsb3NlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
PEF1ZGlvQ29udGV4dD4oKnRoaXMpXSB7CisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPmNsb3NlKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgc2V0U3RhdGUo
U3RhdGU6OkNsb3NlZCk7CiAgICAgICAgIHVuaW5pdGlhbGl6ZSgpOwogICAgIH0pOwpAQCAtMTEz
MSw3ICsxMTMxLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjaygpCiAKICAg
ICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8QXVkaW9Db250ZXh0PigqdGhpcyldIHsKKyAgICBtX2Rl
c3RpbmF0aW9uTm9kZS0+c3VzcGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSB7CiAgICAgICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBtX21lZGlhU2Vzc2lvbi0+c3RhdGUo
KSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CiAgICAgICAgIHNldFN0YXRl
KGludGVycnVwdGVkID8gU3RhdGU6OkludGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CiAg
ICAgfSk7CkBAIC0xMTUyLDcgKzExNTIsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6bWF5UmVzdW1l
UGxheWJhY2soYm9vCiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgbV9kZXN0aW5hdGlv
bk5vZGUtPnJlc3VtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxBdWRpb0NvbnRleHQ+KCp0
aGlzKV0geworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7
CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyLmNwcAkocmV2aXNpb24gMjAzMjM4KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0KCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI+KCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFz
a3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4o
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRDb25uZWN0KCk7CiAgICAgfSkpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmEKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlzKSwgbWVzc2FnZSA9IG1lc3Nh
Z2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVu
ZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBt
ZXNzYWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdl
KG1lc3NhZ2UpOwogICAgIH0pKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4mJiBi
aW5hcnlEYXRhKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4oKnRoaXMpLCBiaW5hcnlE
YXRhID0gV1RGTW92ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRh
YmxlIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBiaW5hcnlEYXRhID0gV1RGTW92ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9j
bGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIH0p
KTsKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpk
aWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBidWZmZXJlZEFtb3VudCkKIHsKLSAgICBt
X3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFVwZGF0
ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1vdW50KTsKICAgICB9KSk7CkBAIC0xOTgsNyArMTk4
LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYQogCiB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlzKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlm
IChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hh
a2UoKTsKICAgICB9KSk7CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdl
YlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNs
b3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlzKSwgdW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFz
b24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgewor
ICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVu
aGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwg
cmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0
aW9uLCBjb2RlLCByZWFzb24pOwogICAgICAgICB9KSk7CkBAIC0yMjAsNyArMjIwLDcgQEAgdm9p
ZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYQogCiB2b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCiB7
Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQp
CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwogICAgIH0p
KTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhCiAgICAgaWYgKCFtX3N5bmNNZXRob2REb25lKSB7CiAgICAgICAgIC8vIFdoZW4gYSBz
eW5jaHJvbm91cyBvcGVyYXRpb24gaXMgaW4gcHJvZ3Jlc3MgKGkuZS4gdGhlIGV4ZWN1dGlvbiBz
dGFjayBjb250YWlucwogICAgICAgICAvLyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6d2FpdEZvck1ldGhvZENvbXBsZXRpb24oKSksIHdlIGNhbm5vdCBpbnZva2UgY2FsbGJhY2tz
IGluIHRoaXMgcnVuIGxvb3AuCi0gICAgICAgIG1fY29udGV4dC5wb3N0VGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
KCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgbV9j
b250ZXh0LnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgICAg
IHByb2Nlc3NQZW5kaW5nVGFza3MoKTsKICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkocmV2aXNpb24gMjAzMjM4
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChj
b25zdCBTdHJpbmcmIHVyCiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICNl
bHNlCi0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWY8V2ViU29ja2V0PigqdGhpcyldKCkgeworICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkg
ewogICAgICAgICAgICAgICAgIGRpc3BhdGNoT3JRdWV1ZUVycm9yRXZlbnQoKTsKICAgICAgICAg
ICAgICAgICBzdG9wKCk7CiAgICAgICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCShyZXZpc2lvbiAyMDMyMzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTExLDcgKzExMSw3IEBAIGlubGluZSBKU0M6OkpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6
OmoKIHsKICAgICAvLyBpbml0aWFsaXplSlNGdW5jdGlvbiBjYW4gdHJpZ2dlciBjb2RlIHRoYXQg
ZGVsZXRlcyB0aGlzIGV2ZW50IGxpc3RlbmVyCiAgICAgLy8gYmVmb3JlIHdlJ3JlIGRvbmUuIEl0
IHNob3VsZCBhbHdheXMgcmV0dXJuIDAgaW4gdGhpcyBjYXNlLgotICAgIFJlZjxKU0V2ZW50TGlz
dGVuZXI+IHByb3RlY3QoY29uc3RfY2FzdDxKU0V2ZW50TGlzdGVuZXImPigqdGhpcykpOworICAg
IGF1dG8gcHJvdGVjdCA9IG1ha2VSZWYoY29uc3RfY2FzdDxKU0V2ZW50TGlzdGVuZXImPigqdGhp
cykpOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHdyYXBwZXIobV9pc29sYXRlZFdv
cmxkLT52bSgpLCBtX3dyYXBwZXIuZ2V0KCkpOwogCiAgICAgaWYgKCFtX2pzRnVuY3Rpb24pIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDIwMzIzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4MCw3ICsxNDgwLDcgQEAgdm9pZCBO
b2RlOjpzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcmIAogICAgICAgICBjYXNlIEVMRU1FTlRf
Tk9ERToKICAgICAgICAgY2FzZSBBVFRSSUJVVEVfTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVO
VF9GUkFHTUVOVF9OT0RFOiB7Ci0gICAgICAgICAgICBSZWY8Q29udGFpbmVyTm9kZT4gY29udGFp
bmVyKGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCp0aGlzKSk7CisgICAgICAgICAgICBhdXRvIGNv
bnRhaW5lciA9IG1ha2VSZWYoZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKnRoaXMpKTsKICAgICAg
ICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24oY29udGFpbmVyKTsKICAgICAg
ICAgICAgIGNvbnRhaW5lci0+cmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgICAgIGlmICghdGV4
dC5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwMzIzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMTYsNyArNDAxNiw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlQ2FwdGlvbkNvbnQKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bGF5
b3V0U2l6ZUNoYW5nZWQoKQogewogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCi0g
ICAgYXV0byB0YXNrID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8RWxlbWVudD4oKnRoaXMp
XSB7CisgICAgYXV0byB0YXNrID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gewogICAgICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3Qo
KSkKICAgICAgICAgICAgIHJvb3QtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZSgicmVzaXpl
IiwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCShyZXZpc2lvbiAyMDMyMzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIEpTVmFsdWUgQ29tbWFuZExpbmVBUElIb3N0Ojp3cmFwcGVy
KEV4ZWMKIAogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6
Y3JlYXRlUHJvdG90eXBlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
PnZtKCksIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKTsKLSAgICBKU0NvbW1hbmRMaW5lQVBJSG9z
dCogY29tbWFuZExpbmVBUElIb3N0ID0gSlNDb21tYW5kTGluZUFQSUhvc3Q6OmNyZWF0ZShzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCwgUmVmPENvbW1hbmRMaW5lQVBJSG9zdD4oKnRoaXMpKTsKKyAg
ICBKU0NvbW1hbmRMaW5lQVBJSG9zdCogY29tbWFuZExpbmVBUElIb3N0ID0gSlNDb21tYW5kTGlu
ZUFQSUhvc3Q6OmNyZWF0ZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgbWFrZVJlZigqdGhpcykp
OwogICAgIG1fd3JhcHBlcnMuYWRkV3JhcHBlcihnbG9iYWxPYmplY3QsIGNvbW1hbmRMaW5lQVBJ
SG9zdCk7CiAKICAgICByZXR1cm4gY29tbWFuZExpbmVBUElIb3N0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQkocmV2aXNpb24gMjAz
MjM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNyArMzIz
LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZQogICAgIG1lbXNl
dChtX2xpc3QuZ2V0KCksIDAsIGJ1ZmZlckxpc3RTaXplKTsKICAgICBtX2xpc3QtPm1OdW1iZXJC
dWZmZXJzID0gbnVtYmVyT2ZDaGFubmVsczsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBSZWY8QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+KCp0aGlzKSwgbnVtYmVy
T2ZDaGFubmVscywgc2FtcGxlUmF0ZV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZV0gewog
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2NsaWVudC0+c2V0Rm9ybWF0KG51bWJlck9mQ2hhbm5l
bHMsIHNhbXBsZVJhdGUpOwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjAzMjM4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcg
QEAgdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjppbnZhbGlkYQogCiAgICAgbV9wYXJl
bnQgPSBudWxscHRyOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJl
ZjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPigqdGhpcyldICgpIG11dGFibGUgeworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPnN0b3BMb2FkaW5nKCk7CiAgICAgfSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCShyZXZpc2lvbiAyMDMyMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjo6aW52YWxpZGF0CiAKICAgICBtX3BhcmVudCA9IG51bGxwdHI7CiAKLSAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4oKnRo
aXMpXSAoKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zdG9w
TG9hZGluZygpOwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0
Lm1tCShyZXZpc2lvbiAyMDMyMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MzUs
NyArNDM1LDcgQEAgICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldExlZ2libGVNZWRpYQogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFj
ayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHR5cGUsIFN0cmluZyBs
b2NhbGl6ZWREZXZpY2VOYW1lKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZjxXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dD4oKnRoaXMpLCB0aGlzLCBlbmFibGVkLCB0eXBlLCBsb2Nh
bGl6ZWREZXZpY2VOYW1lID0gbG9jYWxpemVkRGV2aWNlTmFtZS5pc29sYXRlZENvcHkoKV0gewor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhp
cywgZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSA9IGxvY2FsaXplZERldmljZU5h
bWUuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQogICAgICAgICAg
ICAgbV9pbnRlcmZhY2UtPnNldEV4dGVybmFsUGxheWJhY2soZW5hYmxlZCwgdHlwZSwgbG9jYWxp
emVkRGV2aWNlTmFtZSk7CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lvbiAyMDMy
MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIEJsb2JSZXNvdXJj
ZUhhbmRsZTo6c3RhcnQoKQogICAgIH0KIAogICAgIC8vIEZpbmlzaCB0aGlzIGFzeW5jIGNhbGwg
cXVpY2tseSBhbmQgcmV0dXJuLgotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMg
PSBSZWY8QmxvYlJlc291cmNlSGFuZGxlPigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewog
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kb1N0YXJ0KCk7CiAgICAgfSk7CiB9CkBAIC02NTIsNyAr
NjUyLDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeUZpbmlzaCgpCiAKICAgICAv
LyBTY2hlZHVsZSB0byBub3RpZnkgdGhlIGNsaWVudCBmcm9tIGEgc3RhbmRhbG9uZSBmdW5jdGlv
biBiZWNhdXNlIHRoZSBjbGllbnQgbWlnaHQgZGlzcG9zZSB0aGUgaGFuZGxlIGltbWVkaWF0ZWx5
IGZyb20gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uCiAgICAgLy8gd2hpbGUgd2Ugc3RpbGwgaGF2ZSBC
bG9iUmVzb3VyY2VIYW5kbGUgY2FsbHMgaW4gdGhlIHN0YWNrLgotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXMgPSBSZWY8QmxvYlJlc291cmNlSGFuZGxlPigqdGhpcyldKCkgbXV0
YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSgpIG11dGFibGUgewogICAgICAgICBkb05vdGlmeUZpbmlzaChwcm90ZWN0ZWRUaGlzKTsK
ICAgICB9KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRT
dHJlYW1IYW5kbGVCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCShyZXZpc2lvbiAyMDMyMzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZTo6Y2xvc2UoKQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OmRpc2Nvbm5l
Y3QoKQogewotICAgIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IHByb3RlY3Qoc3RhdGljX2Nhc3Q8
U29ja2V0U3RyZWFtSGFuZGxlJj4oKnRoaXMpKTsgLy8gcGxhdGZvcm1DbG9zZSBjYWxscyB0aGUg
Y2xpZW50LCB3aGljaCBtYXkgbWFrZSB0aGUgaGFuZGxlIGdldCBkZWFsbG9jYXRlZCBpbW1lZGlh
dGVseS4KKyAgICBhdXRvIHByb3RlY3QgPSBtYWtlUmVmKHN0YXRpY19jYXN0PFNvY2tldFN0cmVh
bUhhbmRsZSY+KCp0aGlzKSk7IC8vIHBsYXRmb3JtQ2xvc2UgY2FsbHMgdGhlIGNsaWVudCwgd2hp
Y2ggbWF5IG1ha2UgdGhlIGhhbmRsZSBnZXQgZGVhbGxvY2F0ZWQgaW1tZWRpYXRlbHkuCiAKICAg
ICBwbGF0Zm9ybUNsb3NlKCk7CiAgICAgbV9zdGF0ZSA9IENsb3NlZDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3Bw
CShyZXZpc2lvbiAyMDMyMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHZv
aWQgQ3VybERvd25sb2FkOjpkaWRSZWNlaXZlSGVhZGVyKGNvbnMKIAogICAgICAgICBpZiAoaHR0
cENvZGUgPj0gMjAwICYmIGh0dHBDb2RlIDwgMzAwKSB7CiAgICAgICAgICAgICBVUkwgdXJsID0g
Z2V0Q3VybEVmZmVjdGl2ZVVSTChtX2N1cmxIYW5kbGUpOwotICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwcm90ZWN0ZWRUaGlzID0g
UmVmPEN1cmxEb3dubG9hZD4oKnRoaXMpXSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gewogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VVJMKHVybCk7CiAgICAg
ICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVk
aWFUeXBlKG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50
VHlwZSkpKTsKICAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUo
ZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIEN1
cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zCiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGhlYWRl
ciA9IGhlYWRlci5pc29sYXRlZENvcHkoKSwgcHJvdGVjdGVkVGhpcyA9IFJlZjxDdXJsRG93bmxv
YWQ+KCp0aGlzKV0geworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBoZWFkZXIgPSBo
ZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewog
ICAgICAgICAgICAgaW50IHNwbGl0UG9zID0gaGVhZGVyLmZpbmQoIjoiKTsKICAgICAgICAgICAg
IGlmIChzcGxpdFBvcyAhPSAtMSkKICAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBI
ZWFkZXJGaWVsZChoZWFkZXIubGVmdChzcGxpdFBvcyksIGhlYWRlci5zdWJzdHJpbmcoc3BsaXRQ
b3MgKyAxKS5zdHJpcFdoaXRlU3BhY2UoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDMy
MzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw3MSBAQAorMjAxNi0wNy0xNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZGVkIGEgbWFrZVJlZjxUPiBoZWxwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTgzNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFuZGVycyB0b2xkIG1lIHRvIQorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5
U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBvc3RD
b25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjplbnF1ZXVlSW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvbWFjL0Nv
bm5lY3Rpb25NYWMubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpU
aHJlYWRlZENvbXBvc2l0b3I6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyk6
CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6c2V0RGV2aWNlU2NhbGVGYWN0
b3IpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OmRpZENoYW5nZVZpZXdw
b3J0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6ZGlkQ2hhbmdl
Vmlld3BvcnRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6
OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9z
aXRvcjo6c2Nyb2xsVG8pOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OnNj
cm9sbEJ5KToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpkaWRDaGFuZ2VW
aXNpYmxlUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZTo6
bG9va3VwQ29udGVudEV4dGVuc2lvbik6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50RXh0ZW5z
aW9uU3RvcmU6OmNvbXBpbGVDb250ZW50RXh0ZW5zaW9uKToKKyAgICAgICAgKEFQSTo6VXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZTo6cmVtb3ZlQ29udGVudEV4dGVuc2lvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc0xhdW5jaGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cik6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnNldEFsbG93
ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdp
bnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3Jh
Z2VFbnRyaWVzRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpn
ZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6
OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRT
aW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3Jh
Z2VFbnRyaWVzRm9yT3JpZ2lucyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnBsdWdpblRocmVhZEFzeW5jQ2FsbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0
Y2hlcjo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6Z2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6RXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlKToKKwogMjAxNi0wNy0xNCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEZpeCB0aGUgIUVOQUJMRShXRUJfU09DS0VUUykgYnVpbGQgYWZ0
ZXIgcjIwMjkzMApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MjAzMjM4KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdAogICAgIGZvciAoYXV0byYgZmls
ZSA6IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICBmaWxlLT5wcmVwYXJlRm9yRmlsZUFjY2Vzcygp
OwogCi0gICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkud3JpdGVCbG9ic1RvVGVt
cG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPigqdGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBmaWxlUmVm
ZXJlbmNlcyA9IFdURk1vdmUoZmlsZVJlZmVyZW5jZXMpXShhdXRvJiBmaWxlTmFtZXMpIG11dGFi
bGUgeworICAgIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigpLndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXF1ZXN0SWRlbnRpZmllciwgZmlsZVJlZmVyZW5jZXMgPSBXVEZNb3ZlKGZpbGVSZWZl
cmVuY2VzKV0oYXV0byYgZmlsZU5hbWVzKSBtdXRhYmxlIHsKICAgICAgICAgZm9yIChhdXRvJiBm
aWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICBmaWxlLT5yZXZva2VGaWxlQWNjZXNz
KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjAzMjM4KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlT
dG9yZUFzQ2EKICAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+
Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSwgW2xvYWRlciA9IFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+KCp0aGlzKV0oYXV0byYg
bWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5zdG9y
ZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gbWFrZVJlZigqdGhpcyldKGF1dG8mIG1h
cHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAg
ICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcAkocmV2aXNpb24gMjAzMjM4KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9p
ZCBDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBSZWY8Q29ubmVjdGlvbj4oKnRoaXMpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lID0g
V1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgd29ya1F1ZXVlLCB3b3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXJdKCkgbXV0YWJsZSB7CisgICAgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2VSZWNlaXZlck5hbWUgPSBXVEZN
b3ZlKG1lc3NhZ2VSZWNlaXZlck5hbWUpLCB3b3JrUXVldWUsIHdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlcl0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFwcm90ZWN0ZWRUaGlzLT5tX3dvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOwogCiAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPm1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5hZGQobWVz
c2FnZVJlY2VpdmVyTmFtZSwgc3RkOjptYWtlX3BhaXIod29ya1F1ZXVlLCB3b3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIpKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlbW92
ZVdvcmtRdWV1ZU1lc3NhZ2VSCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZjxDb25u
ZWN0aW9uPigqdGhpcyksIG1lc3NhZ2VSZWNlaXZlck5hbWUgPSBXVEZNb3ZlKG1lc3NhZ2VSZWNl
aXZlck5hbWUpXSgpIG11dGFibGUgeworICAgIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lID0gV1RG
TW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKHBy
b3RlY3RlZFRoaXMtPm1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdl
UmVjZWl2ZXJOYW1lKSk7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fd29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVycy5yZW1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSk7CiAgICAgfSk7CkBAIC0zMTcs
NyArMzE3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjppbnZhbGlkYXRlKCkKICAgICAKICAgICBtX2Ns
aWVudCA9IG51bGxwdHI7CiAKLSAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBSZWY8Q29ubmVjdGlvbj4oKnRoaXMpXSgpIG11dGFibGUgeworICAgIG1fY29u
bmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgp
IG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wbGF0Zm9ybUludmFsaWRhdGUoKTsK
ICAgICB9KTsKIH0KQEAgLTM3NCw3ICszNzQsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRNZXNz
YWdlKHN0ZDo6dW5pcXVlCiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWRk
IGEgYm9vbGVhbiBmbGFnIHNvIHdlIGRvbid0IGNhbGwgdGhpcyB3aGVuIHdvcmsgaGFzIGFscmVh
ZHkgYmVlbiBzY2hlZHVsZWQuCi0gICAgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gUmVmPENvbm5lY3Rpb24+KCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICBtX2Nv
bm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2VuZE91dGdvaW5nTWVzc2FnZXMo
KTsKICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY0Nyw3ICs2NDcsNyBAQCB2b2lkIENv
bm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoCiAgICAgICAgIFN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlTmFtZVJlZmVyZW5jZSA9IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCk7CiAgICAgICAg
IFN0cmluZyBtZXNzYWdlTmFtZShtZXNzYWdlTmFtZVJlZmVyZW5jZS5pc0VtcHR5KCkgPyAiPHVu
a25vd24gbWVzc2FnZT4iIDogU3RyaW5nKG1lc3NhZ2VOYW1lUmVmZXJlbmNlLmRhdGEoKSwgbWVz
c2FnZU5hbWVSZWZlcmVuY2Uuc2l6ZSgpKSk7CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPENvbm5lY3Rpb24+KCp0aGlzKSwgbWVzc2FnZVJl
Y2VpdmVyTmFtZSA9IFdURk1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSksIG1lc3NhZ2VOYW1lID0g
V1RGTW92ZShtZXNzYWdlTmFtZSldKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlUmVjZWl2
ZXJOYW1lID0gV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgbWVzc2FnZU5hbWUgPSBXVEZN
b3ZlKG1lc3NhZ2VOYW1lKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUudXRm
OCgpLCBtZXNzYWdlTmFtZS51dGY4KCkpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNjU1LDcgKzY1NSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2Fn
ZSgKIAogICAgIGF1dG8gaXQgPSBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuZmluZChtZXNz
YWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogICAgIGlmIChpdCAhPSBtX3dvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcnMuZW5kKCkpIHsKLSAgICAgICAgaXQtPnZhbHVlLmZpcnN0LT5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IFJlZjxDb25uZWN0aW9uPigqdGhpcyksIHdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlciA9IGl0LT52YWx1ZS5zZWNvbmQsIGRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2Up
XSgpIG11dGFibGUgeworICAgICAgICBpdC0+dmFsdWUuZmlyc3QtPmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciA9IGl0LT52
YWx1ZS5zZWNvbmQsIGRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJN
ZXNzYWdlKCp3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIsICpkZWNvZGVyKTsKICAgICAgICAgfSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTczOSw3ICs3MzksNyBAQCBib29sIENvbm5lY3Rpb246Omhh
c0luY29taW5nU3luY01lc3NhZ2UoCiAKIHZvaWQgQ29ubmVjdGlvbjo6cG9zdENvbm5lY3Rpb25E
aWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSgpCiB7Ci0gICAgbV9jb25uZWN0aW9uUXVldWUt
PmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPENvbm5lY3Rpb24+KCp0aGlzKV0oKSBtdXRh
YmxlIHsKKyAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y29ubmVj
dGlvbkRpZENsb3NlKCk7CiAgICAgfSk7CiB9CkBAIC03NzIsNyArNzcyLDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UoKQogICAgIGlmIChtX2RpZENsb3NlT25Db25uZWN0
aW9uV29ya1F1ZXVlQ2FsbGJhY2spCiAgICAgICAgIG1fZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3Jr
UXVldWVDYWxsYmFjayh0aGlzKTsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IFJlZjxDb25uZWN0aW9uPigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkg
bXV0YWJsZSB7CiAgICAgICAgIC8vIElmIHRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIGV4cGxpY2l0
bHkgaW52YWxpZGF0ZWQgYmVmb3JlIGRpc3BhdGNoQ29ubmVjdGlvbkRpZENsb3NlIHdhcyBjYWxs
ZWQsCiAgICAgICAgIC8vIHRoZW4gdGhlIGNsaWVudCB3aWxsIGJlIG51bGwgaGVyZS4KICAgICAg
ICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX2NsaWVudCkKQEAgLTg3Nyw3ICs4NzcsNyBAQCB2b2lk
IENvbm5lY3Rpb246OmVucXVldWVJbmNvbWluZ01lc3NhZ2UoCiAgICAgICAgIG1faW5jb21pbmdN
ZXNzYWdlcy5hcHBlbmQoV1RGTW92ZShpbmNvbWluZ01lc3NhZ2UpKTsKICAgICB9CiAKLSAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8Q29ubmVjdGlvbj4o
KnRoaXMpXSgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaXNwYXRjaE9uZU1lc3NhZ2UoKTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW0JKHJldmlzaW9uIDIw
MzIzOCkKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVj
ZWl2ZVNvdXJjZUV2ZW50SGFuZGwKICAgICAgICAgICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZVJlZmVyZW5jZSA9IGRlY29kZXItPm1lc3NhZ2VOYW1lKCk7CiAgICAgICAgICAgICBTdHJp
bmcgbWVzc2FnZU5hbWUoU3RyaW5nKG1lc3NhZ2VOYW1lUmVmZXJlbmNlLmRhdGEoKSwgbWVzc2Fn
ZU5hbWVSZWZlcmVuY2Uuc2l6ZSgpKSk7CiAKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZjxDb25uZWN0aW9uPigqdGhpcyksIG1lc3NhZ2VS
ZWNlaXZlck5hbWUgPSBXVEZNb3ZlKG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBtZXNzYWdlTmFtZSA9
IFdURk1vdmUobWVzc2FnZU5hbWUpXSgpIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2VS
ZWNlaXZlck5hbWUgPSBXVEZNb3ZlKG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBtZXNzYWdlTmFtZSA9
IFdURk1vdmUobWVzc2FnZU5hbWUpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZl
ck5hbWUudXRmOCgpLCBtZXNzYWdlTmFtZS51dGY4KCkpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjAzMjM4KQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcg
QEAgVGhyZWFkZWRDb21wb3NpdG9yOjp+VGhyZWFkZWRDb21wb3NpdG9yKAogdm9pZCBUaHJlYWRl
ZENvbXBvc2l0b3I6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRf
dCBoYW5kbGUpCiB7CiAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0b3BVcGRhdGVUaW1lcigp
OwotICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWY8VGhyZWFkZWRDb21wb3NpdG9yPigqdGhpcyksIGhhbmRsZV0geworICAg
IG1fY29tcG9zaXRpbmdSdW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgaGFuZGxlXSB7CiAgICAgICAgIG1fc2NlbmUtPnNldEFjdGl2
ZSghIWhhbmRsZSk7CiAKICAgICAgICAgLy8gQSBuZXcgbmF0aXZlIGhhbmRsZSBjYW4ndCBiZSBz
ZXQgd2l0aG91dCBkZXN0cm95aW5nIHRoZSBwcmV2aW91cyBvbmUgZmlyc3QgaWYgYW55LgpAQCAt
NzUsNyArNzUsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0TmF0aXZlU3VyZmFjCiAK
IHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2Fs
ZSkKIHsKLSAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWY8VGhyZWFkZWRDb21wb3NpdG9yPigqdGhpcyksIHNjYWxlXSB7CisgICAg
bV9jb21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHNjYWxlXSB7CiAgICAgICAgIG1fZGV2aWNlU2NhbGVGYWN0b3IgPSBz
Y2FsZTsKICAgICAgICAgc2NoZWR1bGVEaXNwbGF5SW1tZWRpYXRlbHkoKTsKICAgICB9KTsKQEAg
LTgzLDM1ICs4MywzNSBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0RGV2aWNlU2NhbGVG
CiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpkaWRDaGFuZ2VWaWV3cG9ydFNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tT
eW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGVkQ29tcG9zaXRvcj4oKnRoaXMp
LCBzaXplXSB7CisgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNrU3luYyhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaXplXSB7CiAgICAgICAgIG1fdmll
d3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUoc2l6ZSk7CiAgICAgfSk7CiB9
CiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZShj
b25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCiB7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxv
b3AtPnBlcmZvcm1UYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGVkQ29tcG9z
aXRvcj4oKnRoaXMpLCBhdHRyXSB7CisgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1U
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGF0dHJdIHsKICAgICAg
ICAgbV92aWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlKGF0dHIp
OwogICAgIH0pOwogfQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6ZGlkQ2hhbmdlQ29udGVu
dHNTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxvb3At
PnBlcmZvcm1UYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGVkQ29tcG9zaXRv
cj4oKnRoaXMpLCBzaXplXSB7CisgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNr
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNpemVdIHsKICAgICAgICAg
bV92aWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKICAgICB9
KTsKIH0KIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNjcm9sbFRvKGNvbnN0IEludFBvaW50
JiBwb3NpdGlvbikKIHsKLSAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8VGhyZWFkZWRDb21wb3NpdG9yPigqdGhpcyksIHBvc2l0
aW9uXSB7CisgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBvc2l0aW9uXSB7CiAgICAgICAgIG1fdmlld3Bv
cnRDb250cm9sbGVyLT5zY3JvbGxUbyhwb3NpdGlvbik7CiAgICAgfSk7CiB9CiAKIHZvaWQgVGhy
ZWFkZWRDb21wb3NpdG9yOjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBkZWx0YSkKIHsKLSAgICBt
X2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWY8VGhyZWFkZWRDb21wb3NpdG9yPigqdGhpcyksIGRlbHRhXSB7CisgICAgbV9jb21wb3NpdGlu
Z1J1bkxvb3AtPnBlcmZvcm1UYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGRlbHRhXSB7CiAgICAgICAgIG1fdmlld3BvcnRDb250cm9sbGVyLT5zY3JvbGxCeShkZWx0
YSk7CiAgICAgfSk7CiB9CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0
b3I6OnNjaGVkdWxlRGlzcGxheQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6ZGlkQ2hhbmdl
VmlzaWJsZVJlY3QoKQogewotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRlZENvbXBvc2l0b3I+KCp0aGlzKSwgdmlzaWJsZVJlY3Qg
PSBtX3ZpZXdwb3J0Q29udHJvbGxlci0+dmlzaWJsZUNvbnRlbnRzUmVjdCgpLCBzY2FsZSA9IG1f
dmlld3BvcnRDb250cm9sbGVyLT5wYWdlU2NhbGVGYWN0b3IoKV0geworICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB2aXNp
YmxlUmVjdCA9IG1fdmlld3BvcnRDb250cm9sbGVyLT52aXNpYmxlQ29udGVudHNSZWN0KCksIHNj
YWxlID0gbV92aWV3cG9ydENvbnRyb2xsZXItPnBhZ2VTY2FsZUZhY3RvcigpXSB7CiAgICAgICAg
IG1fY2xpZW50LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVSZWN0LCBGbG9hdFBvaW50
Ojp6ZXJvKCksIHNjYWxlKTsKICAgICB9KTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJ
KHJldmlzaW9uIDIwMzIzOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYQogICAgIGlmICghbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9z
dGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4oKnRoaXMpXSB7CisgICAgbV9zdGF0aXN0aWNzUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAg
ICAgICAgY29yZVN0b3JlKCkuY2xlYXIoKTsKIAogICAgICAgICBhdXRvIGRlY29kZXIgPSBjcmVh
dGVEZWNvZGVyRnJvbURpc2soImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbiIpOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmUuY3BwCShyZXZpc2lvbiAyMDMyMzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDYsNyArMzA2LDcgQEAgc3RhdGljIFJlZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0
ZW5zaW9uPgogCiB2b2lkIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6Omxvb2t1cENvbnRlbnRF
eHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChSZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IFJlZjxPYmplY3Q+KCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0
ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
IG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBp
ZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9y
ZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVk
UGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIpOwogICAgICAgICAKICAgICAgICAgQ29udGVudEV4
dGVuc2lvbk1ldGFEYXRhIG1ldGFEYXRhOwpAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZTo6bG9va3VwQ28KIAogdm9pZCBVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlOjpjb21waWxlQ29udGVudEV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
ZmllciwgV1RGOjpTdHJpbmcmJiBqc29uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6
VXNlckNvbnRlbnRFeHRlbnNpb24+LCBzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8
T2JqZWN0PigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBq
c29uID0ganNvbi5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0
ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgeworICAgIG1fY29tcGlsZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHko
KSwganNvbiA9IGpzb24uaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlz
b2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0
b3JlUGF0aCwgaWRlbnRpZmllcik7CiAKICAgICAgICAgQ29udGVudEV4dGVuc2lvbk1ldGFEYXRh
IG1ldGFEYXRhOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZTo6Y29tcGlsZUMKIAogdm9pZCBVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpyZW1vdmVD
b250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9y
ZW1vdmVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8T2JqZWN0PigqdGhpcyks
IGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0
b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX3JlbW92ZVF1ZXVlLT5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5p
c29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZp
ZXIpOwogCiAgICAgICAgIGlmICghV2ViQ29yZTo6ZGVsZXRlRmlsZShwYXRoKSkgewpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVu
Y2hlci5jcHAJKHJldmlzaW9uIDIwMzIzOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3
IEBAIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc0xhdW5jaGVyKENsaWVudCoKIHsKICAgICBtX2lz
TGF1bmNoaW5nID0gdHJ1ZTsKIAotICAgIHByb2Nlc3NMYXVuY2hlcldvcmtRdWV1ZSgpLmRpc3Bh
dGNoKFtwcm9jZXNzTGF1bmNoZXIgPSBSZWY8UHJvY2Vzc0xhdW5jaGVyPigqdGhpcyldKCkgbXV0
YWJsZSB7CisgICAgcHJvY2Vzc0xhdW5jaGVyV29ya1F1ZXVlKCkuZGlzcGF0Y2goW3Byb2Nlc3NM
YXVuY2hlciA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICBwcm9jZXNzTGF1
bmNoZXItPmxhdW5jaFByb2Nlc3MoKTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gMjAzMjM4KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNyArNTIsNyBAQCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OkxvY2Fs
U3RvcmFnCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBlbmNvZGluZyBpcyBpbml0aWFsaXplZCBiZWZv
cmUgd2Ugc3RhcnQgZGlzcGF0Y2hpbmcgdGhpbmdzIHRvIHRoZSBxdWV1ZS4KICAgICBVVEY4RW5j
b2RpbmcoKTsKIAotICAgIG1fcXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcj4oKnRoaXMpXSgpIG11dGFibGUgeworICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7
CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmltcG9ydE9yaWdpbklkZW50aWZpZXJzKCk7CiAgICAg
fSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMDMyMzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3
Myw3ICs0NzMsNyBAQCBTdG9yYWdlTWFuYWdlcjo6flN0b3JhZ2VNYW5hZ2VyKCkKIAogdm9pZCBT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3Rv
cmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8U3RvcmFnZU1hbmFnZXI+KCp0aGlz
KSwgc3RvcmFnZU5hbWVzcGFjZUlELCBxdW90YUluQnl0ZXNdKCkgbXV0YWJsZSB7CisgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3Rv
cmFnZU5hbWVzcGFjZUlELCBxdW90YUluQnl0ZXNdKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VCghbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlE
KSk7CiAKICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuc2V0KHN0b3JhZ2VOYW1l
c3BhY2VJRCwgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmNyZWF0ZShxdW90YUluQnl0ZXMpKTsK
QEAgLTQ4Miw3ICs0ODIsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3Rv
cmFnCiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8U3RvcmFnZU1hbmFnZXI+KCp0aGlzKSwgc3RvcmFn
ZU5hbWVzcGFjZUlEXSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RvcmFnZU5hbWVzcGFjZUlEXSB7CiAgICAgICAgIEFTU0VS
VChtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5jb250YWlucyhzdG9yYWdlTmFtZXNwYWNlSUQp
KTsKICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMucmVtb3ZlKHN0b3JhZ2VOYW1l
c3BhY2VJRCk7CiAgICAgfSk7CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdl
cjo6ZGVzdHJveVNlc3Npb25TdG9yYQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpzZXRBbGxvd2Vk
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgSVBDOjpDb25uZWN0aW9uKiBhbGxvd2VkQ29ubmVjdGlvbikKIHsKLSAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxTdG9yYWdlTWFuYWdlcj4oKnRo
aXMpLCBjb25uZWN0aW9uID0gUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4oYWxsb3dlZENvbm5lY3Rp
b24pLCBzdG9yYWdlTmFtZXNwYWNlSURdKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29ubmVjdGlvbiA9IFJl
ZlB0cjxJUEM6OkNvbm5lY3Rpb24+KGFsbG93ZWRDb25uZWN0aW9uKSwgc3RvcmFnZU5hbWVzcGFj
ZUlEXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7CiAKICAgICAgICAgbV9zZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCktPnNldEFsbG93ZWRDb25uZWN0
aW9uKGNvbm5lY3Rpb24uZ2V0KCkpOwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgU3RvcmFnZU1h
bmFnZXI6OnNldEFsbG93ZWRTZXNzaW9uU3QKIAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y2xvbmVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVpbnQ2
NF90IG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZjxTdG9yYWdlTWFuYWdlcj4oKnRoaXMpLCBzdG9yYWdlTmFt
ZXNwYWNlSUQsIG5ld1N0b3JhZ2VOYW1lc3BhY2VJRF0geworICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgbmV3U3RvcmFnZU5hbWVzcGFjZUlEXSB7CiAgICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Vz
LmdldChzdG9yYWdlTmFtZXNwYWNlSUQpOwogICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGdldCBpbnRvIHRoaXMgc2l0
dWF0aW9uIGlmIHNvbWVvbmUgY2xvc2VzIHRoZSBvcmlnaW5hdGluZyBwYWdlIGZyb20gd2l0aGlu
IGEKQEAgLTUyNCw3ICs1MjQsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xv
c2VDb25uCiB7CiAgICAgY29ubmVjdGlvbi5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogCi0gICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8U3RvcmFnZU1hbmFn
ZXI+KCp0aGlzKSwgY29ubmVjdGlvbiA9IFJlZjxJUEM6OkNvbm5lY3Rpb24+KGNvbm5lY3Rpb24p
XSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbm5lY3Rpb24gPSBSZWY8SVBDOjpDb25uZWN0aW9uPihjb25u
ZWN0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8SVBD
OjpDb25uZWN0aW9uPiwgdWludDY0X3Q+PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNU
b1JlbW92ZTsKICAgICAgICAgZm9yIChhdXRvJiBzdG9yYWdlQXJlYSA6IG1fc3RvcmFnZUFyZWFz
QnlDb25uZWN0aW9uKSB7CiAgICAgICAgICAgICBpZiAoc3RvcmFnZUFyZWEua2V5LmZpcnN0ICE9
IGNvbm5lY3Rpb24ucHRyKCkpCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdl
cjo6Z2V0U2Vzc2lvblN0b3JhZ2VPcgogewogICAgIFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gc3Rv
cmFnZU1hbmFnZXIodGhpcyk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZjxTdG9yYWdlTWFuYWdlcj4oKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKIAogICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZXMudmFsdWVzKCkpIHsKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpnZXRTZXNzaW9uU3RvcmFnZU9yCiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNl
c3Npb25TdG9yYWdlT3JpZ2lucyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWY8U3RvcmFnZU1hbmFnZXI+KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBmb3IgKGF1dG8m
IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFs
dWVzKCkpCiAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9y
YWdlQXJlYXMoKTsKIApAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZVNlc3Npb25TdG9yYWcKICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCiAgICAg
ICAgIGNvcGllZE9yaWdpbnMudW5jaGVja2VkQXBwZW5kKG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkp
OwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8U3Rv
cmFnZU1hbmFnZXI+KCp0aGlzKSwgY29waWVkT3JpZ2lucyA9IFdURk1vdmUoY29waWVkT3JpZ2lu
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29waWVkT3JpZ2lucyA9IFdURk1vdmUoY29waWVkT3JpZ2lucyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogY29waWVkT3JpZ2lucykgewogICAgICAgICAgICAg
Zm9yIChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2VzLnZhbHVlcygpKQogICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
LT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKCpvcmlnaW4pOwpAQCAtNTg3LDcgKzU4
Nyw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNlc3Npb25TdG9yYWcKIAogdm9pZCBT
dG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhzdGQ6OmZ1bmN0aW9uPHZvaWQg
KEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWY8U3RvcmFnZU1hbmFnZXI+KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBIYXNoU2V0
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CiAKICAgICAgICAgZm9yIChhdXRvJiBv
cmlnaW4gOiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpKQpAQCAtNjA2
LDcgKzYwNiw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWcKIAog
dm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhzdGQ6OmZ1
bmN0aW9uPHZvaWQgKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRl
dGFpbHM+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxTdG9yYWdlTWFuYWdlcj4oKnRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGF1dG8gb3JpZ2luRGV0YWlscyA9IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLT5vcmlnaW5EZXRhaWxzKCk7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtvcmlnaW5EZXRhaWxzID0gV1RGTW92ZShvcmlnaW5EZXRhaWxzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTYxNyw3
ICs2MTcsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnCiAKIHZv
aWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewotICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFN0b3JhZ2VNYW5hZ2VyPigqdGhpcyksIGNv
cGllZE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewor
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNvcGllZE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11dGFi
bGUgewogICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxT
dG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVz
cGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb3BpZWRPcmlnaW4pOwogCkBA
IC02MzAsNyArNjMwLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdl
RQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZp
ZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxTdG9yYWdlTWFuYWdlcj4oKnRoaXMp
LCB0aW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZGVsZXRlZE9yaWdpbnMgPSBt
X2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+ZGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5j
ZSh0aW1lKTsKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRlbGV0ZWRPcmln
aW5zKSB7CkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9j
YWxTdG9yYWdlRQogICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKICAgICAgICAgY29w
aWVkT3JpZ2lucy51bmNoZWNrZWRBcHBlbmQob3JpZ2luLT5pc29sYXRlZENvcHkoKSk7CiAKLSAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxTdG9yYWdlTWFu
YWdlcj4oKnRoaXMpLCBjb3BpZWRPcmlnaW5zID0gV1RGTW92ZShjb3BpZWRPcmlnaW5zKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb3BpZWRPcmlnaW5zID0gV1RGTW92ZShjb3BpZWRPcmlnaW5zKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
Zm9yIChhdXRvJiBvcmlnaW4gOiBjb3BpZWRPcmlnaW5zKSB7CiAgICAgICAgICAgICBmb3IgKGF1
dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1
ZXMoKSkKICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFn
ZUFyZWFzTWF0Y2hpbmdPcmlnaW4oKm9yaWdpbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShy
ZXZpc2lvbiAyMDMyMzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEsNyBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShPcHRpb25TCiAgICAgICAgICAgICBpZiAo
cGVuZGluZ0NhbGxiYWNrcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yID0gUmVmPENhbGxi
YWNrQWdncmVnYXRvcj4oKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBtYWtlUmVmKCp0aGlzKV0oKSBt
dXRhYmxlIHsKIAogICAgICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdlYnNpdGVEYXRhUmVjb3Jk
PiByZWNvcmRzOwogICAgICAgICAgICAgICAgIHJlY29yZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGFSZWNvcmRzLnNpemUoKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJKHJldmlzaW9uIDIwMzIzOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwb3BQ
b3B1cHNFbmFibGVkU3RhCiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsdWdpblRocmVhZEFzeW5j
Q2FsbCh2b2lkICgqZnVuY3Rpb24pKHZvaWQqKSwgdm9pZCogdXNlckRhdGEpCiB7Ci0gICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPE5ldHNjYXBlUGx1Z2lu
PigqdGhpcyksIGZ1bmN0aW9uLCB1c2VyRGF0YV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlvbiwgdXNlckRhdGFd
IHsKICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX2lzU3RhcnRlZCkKICAgICAgICAgICAg
IHJldHVybjsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50
RGlzcGF0Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAJKHJldmlzaW9uIDIwMzIzOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQo
dWludDY0XwogICAgIFVOVVNFRF9QQVJBTShjYW5SdWJiZXJCYW5kQXRCb3R0b20pOwogI2VuZGlm
CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8RXZl
bnREaXNwYXRjaGVyPigqdGhpcyksIHBhZ2VJRCwgd2hlZWxFdmVudF0oKSBtdXRhYmxlIHsKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcGFnZUlELCB3aGVlbEV2ZW50XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5kaXNwYXRjaFdoZWVsRXZlbnQocGFnZUlELCB3aGVlbEV2ZW50KTsKICAgICB9KTsgCiB9CkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0
XwogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
Z2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZl
bnQmIGdlc3R1cmVFdmVudCkKIHsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBSZWY8RXZlbnREaXNwYXRjaGVyPigqdGhpcyksIHBhZ2VJRCwgZ2VzdHVyZUV2
ZW50XSgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYWdlSUQsIGdlc3R1cmVFdmVudF0oKSBtdXRhYmxlIHsK
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hHZXN0dXJlRXZlbnQocGFnZUlELCBnZXN0
dXJlRXZlbnQpOwogICAgIH0pOwogfQpAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjp0b3VjaEV2ZW50KHVpbnQ2NF8KICAgICB9CiAKICAgICBpZiAodXBkYXRlTGlzdFdh
c0VtcHR5KSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFJlZjxFdmVudERpc3BhdGNoZXI+KCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaFRvdWNoRXZlbnRz
KCk7CiAgICAgICAgIH0pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAkocmV2aXNp
b24gMjAzMjM4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRh
dGVEaXNwYXRjaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFZp
ZXdVcGRhdGVEaXNwYXRjaGVyOjp2aXNpYmxlQ29udGVuCiAgICAgICAgICAgICBpdGVyYXRvci0+
dmFsdWUudmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyA9IHZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZUluZm87CiAgICAgfQogICAgIGlmICh1cGRhdGVMaXN0V2FzRW1wdHkpIHsKLSAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPFZpZXdVcGRhdGVE
aXNwYXRjaGVyPigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUo
KTsKICAgICAgICAgfSk7CiAgICAgfQo=
</data>
<flag name="review"
          id="307457"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>