<?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>76355</bug_id>
          
          <creation_ts>2012-01-15 19:19:42 -0800</creation_ts>
          <short_desc>The C calling convention logic in DFG::SpeculativeJIT should be available even when not generating code for the DFG speculative path</short_desc>
          <delta_ts>2012-01-15 20:05:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>536324</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-15 19:19:42 -0800</bug_when>
    <thetext>This will accomplish two things:

1) Reduce the size of the SpeculativeJIT header.

2) Make it easier to plant calls to C code in stubs generated by compilers other than the DFG::SpeculativeJIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536325</commentid>
    <comment_count>1</comment_count>
      <attachid>122581</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-15 19:23:09 -0800</bug_when>
    <thetext>Created attachment 122581
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536328</commentid>
    <comment_count>2</comment_count>
      <attachid>122582</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-15 19:27:28 -0800</bug_when>
    <thetext>Created attachment 122582
the patch

Figured I should write a change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536330</commentid>
    <comment_count>3</comment_count>
      <attachid>122582</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-15 19:47:42 -0800</bug_when>
    <thetext>Comment on attachment 122582
the patch

Attachment 122582 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11253051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536333</commentid>
    <comment_count>4</comment_count>
      <attachid>122584</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-15 19:57:41 -0800</bug_when>
    <thetext>Created attachment 122584
the patch

Pretty sure I fixed the Qt build.  Putting patch up to check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536335</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-15 20:04:20 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/105035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536336</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-15 20:05:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/10698059&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122581</attachid>
            <date>2012-01-15 19:23:09 -0800</date>
            <delta_ts>2012-01-15 19:27:28 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>ccall_patch_1.diff</filename>
            <type>text/plain</type>
            <size>65961</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDEyLTAxLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEMgY2FsbGluZyBjb252ZW50aW9uIGxvZ2ljIGluIERGRzo6U3BlY3VsYXRpdmVKSVQgc2hv
dWxkIGJlIGF2YWlsYWJsZSBldmVuCisgICAgICAgIHdoZW4gbm90IGdlbmVyYXRpbmcgY29kZSBm
b3IgdGhlIERGRyBzcGVjdWxhdGl2ZSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NjM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdD
Q2FsbEhlbHBlcnMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpD
Q2FsbEhlbHBlcnMpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6cmVzZXRDYWxs
QXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OmFkZENhbGxBcmd1
bWVudCk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6
CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBUd29TdHVi
QXJncyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFN0dWJBcmd1bWVu
dHMpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6
OkpJVENvbXBpbGVyOjpKSVRDb21waWxlcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24p
OgorCiAyMDEyLTAxLTE1ICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KIAog
ICAgICAgICBGaXggY29tcGlsYXRpb24gZXJyb3JzIG9uIGJ1aWxkLXdlYmtpdCAtLWRlYnVnIC0t
bm8tdmlkZW8gb24gbWFjLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDEwNTAzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNiArMTI5LDcgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZUNhY2hlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTA1MDM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDEwIEBA
CiAJCTBGNjIwMTc5MTQzRkNENDgwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTZEMTQzRkNE
MkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmNwcCAqLzsgfTsKIAkJMEY2MzZEQTAxNDJE
MjdENzAwQjJFNjZBIC8qIFBhY2tlZEludFZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MzZEOUYxNDJEMjdEMjAwQjJFNjZBIC8qIFBhY2tl
ZEludFZlY3Rvci5oICovOyB9OwogCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxp
bmdDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9
OworCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdCMjk0ODE0QzNDRDIz
MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0Nh
cGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZEODJFMUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGN0IyOTRDMTRDM0NE
NDMwMDdDM0RCMSAvKiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0
ZUNvZGVDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGN0IyOTREMTRDM0NENEMwMDdDM0RCMSAvKiBERkdDb21tb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzdFMTQ2OUVCQzQwMENG
MjQ0MiAvKiBERkdDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjk2M0IyNzEzRjc1M0JCMDAwMkQ5QjIgLyogUmVkQmxhY2tUcmVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IyNjEz
Rjc1Mzk5MDAwMkQ5QjIgLyogUmVkQmxhY2tUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5NjNCMkMxM0Y4NTNFQzAwMDJEOUIyIC8qIE1l
dGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5NjNCMkIxM0Y4NTNDNzAwMDJEOUIyIC8qIE1ldGFBbGxvY2F0b3IuY3BwICovOyBz
ZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItZm5vLXN0cmljdC1hbGlhc2luZyI7IH07IH07
CiAJCTBGOTYzQjJEMTNGODU0MDIwMDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IyQTEzRjg1M0JEMDAw
MkQ5QjIgLyogTWV0YUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC04NTAsNiArODU0LDcgQEAKIAkJMEY2MzZEOUYxNDJEMjdEMjAw
QjJFNjZBIC8qIFBhY2tlZEludFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQYWNrZWRJbnRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3
NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdCMjk0ODE0QzNDRDIzMDA3QzNE
QjEgLyogREZHQ0NhbGxIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0NDYWxsSGVscGVycy5oOyBwYXRoID0gZGZnL0RGR0NDYWxsSGVscGVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk2M0IyNjEzRjc1Mzk5MDAwMkQ5QjIgLyogUmVkQmxh
Y2tUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZEJsYWNrVHJlZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk2M0IyQTEzRjg1M0JEMDAwMkQ5QjIg
LyogTWV0YUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRh
QWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjJCMTNGODUz
QzcwMDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1ldGFBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjM3Miw2ICsyMzc3LDcgQEAKIAkJCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyog
REZHQnl0ZUNvZGVDYWNoZS5oICovLAogCQkJCTg2RUM5REI0MTMyOERGODIwMDJCMkFENyAvKiBE
RkdCeXRlQ29kZVBhcnNlci5jcHAgKi8sCiAJCQkJODZFQzlEQjUxMzI4REY4MjAwMkIyQUQ3IC8q
IERGR0J5dGVDb2RlUGFyc2VyLmggKi8sCisJCQkJMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8q
IERGR0NDYWxsSGVscGVycy5oICovLAogCQkJCTBGRDgyRTFFMTQxNzJDMkYwMDE3OUM5NCAvKiBE
RkdDYXBhYmlsaXRpZXMuY3BwICovLAogCQkJCTBGRDgyRTFGMTQxNzJDMkYwMDE3OUM5NCAvKiBE
RkdDYXBhYmlsaXRpZXMuaCAqLywKIAkJCQkwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZH
Q29tbW9uLmggKi8sCkBAIC0zMDI1LDYgKzMwMzEsMTAgQEAKIAkJCQkwRjBCODNCNzE0QkNGOEUx
MDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4
M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0ND
YWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIx
IC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QjI5NEMxNEMzQ0Q0
MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0Iy
OTREMTRDM0NENEMwMDdDM0RCMSAvKiBERkdDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1MDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdDQ2FsbEhlbHBlcnNfaAorI2RlZmluZSBERkdDQ2Fs
bEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoREZH
X0pJVCkKKworI2luY2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVycy5oIgorI2luY2x1ZGUgIkRGR0dQ
UkluZm8uaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBDQ2Fs
bEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKK3B1YmxpYzoKKyAgICBDQ2FsbEhl
bHBlcnMoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAg
ICAgICAgOiBBc3NlbWJseUhlbHBlcnMoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKQorICAgIHsKKyAg
ICB9CisKKyAgICAvLyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVudHMgaW50byB0
aGUgY29ycmVjdCByZWdpc3RlcnMuCisgICAgLy8gT24gWDg2IHdlIHVzZSBjZGVjbCBjYWxsaW5n
IGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCisgICAgLy8gc3Rh
Y2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2YWx1ZXMgaW50
byB0aGUKKyAgICAvLyBjb3JyZWN0IHJlZ2lzdGVycy4KKyNpZiAhTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUworICAgIHVuc2lnbmVkIG1fY2FsbEFyZ3VtZW50T2Zmc2V0OworICAgIHZvaWQg
cmVzZXRDYWxsQXJndW1lbnRzKCkgeyBtX2NhbGxBcmd1bWVudE9mZnNldCA9IDA7IH0KKworICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzaW5nIGludGVybmFsbHkgdG8gaW1wbGVtZW50IHRoZSBj
YWxsT3BlcmF0aW9uIG1ldGhvZHMuCisgICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoR1BSUmVnIHZh
bHVlKQorICAgIHsKKyAgICAgICAgcG9rZSh2YWx1ZSwgbV9jYWxsQXJndW1lbnRPZmZzZXQrKyk7
CisgICAgfQorICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KFRydXN0ZWRJbW0zMiBpbW0pCisgICAg
eworICAgICAgICBwb2tlKGltbSwgbV9jYWxsQXJndW1lbnRPZmZzZXQrKyk7CisgICAgfQorICAg
IHZvaWQgYWRkQ2FsbEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIgcG9pbnRlcikKKyAgICB7CisgICAg
ICAgIHBva2UocG9pbnRlciwgbV9jYWxsQXJndW1lbnRPZmZzZXQrKyk7CisgICAgfQorICAgIHZv
aWQgYWRkQ2FsbEFyZ3VtZW50KEZQUlJlZyB2YWx1ZSkKKyAgICB7CisgICAgICAgIHN0b3JlRG91
YmxlKHZhbHVlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhKSVRDb21waWxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0ICogc2l6ZW9mKHZvaWQqKSkpOworICAgICAg
ICBtX2NhbGxBcmd1bWVudE9mZnNldCArPSBzaXplb2YoZG91YmxlKSAvIHNpemVvZih2b2lkKik7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBh
cmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcxKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgcmVzZXRD
YWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Cisg
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSkKKyAg
ICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICByZXNl
dENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcy
KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJn
dW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIp
CisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJn
dW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7CisgICAgICAgIHJl
c2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisg
ICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMs
IEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmc0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJ
bW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
NCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVz
dGVkSW1tMzIgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBh
cmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJS
ZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMo
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzQpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7CisgICAgfQorI2Vu
ZGlmIC8vICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCisgICAgLy8gVGhlc2UgbWV0aG9k
cyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92aWRlcyBm
b3IKKyAgICAvLyBhdCBsZWFzdCA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBYODZfNjQsIEFS
TXY3LgorI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAorICAgIHRlbXBsYXRl
PEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCPgorICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhH
UFJSZWcgc3JjQSwgR1BSUmVnIHNyY0IpCisgICAgeworICAgICAgICAvLyBBc3N1bWluZyB0aGF0
IHNyY0EgIT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3Rl
cnMgbWF5IGJlIGluOgorICAgICAgICAvLyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVn
cywgdGhlIHJpZ2h0IHdheSBhcm91bmQuCisgICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5
IGluIGFyZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4KKyAgICAgICAgLy8gKDMpIG5laXRo
ZXIgYXJlIGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgorICAgICAgICAvLyAoNCkgc3JjQSBp
biBpbiBpdHMgY29ycmVjdCByZWcuCisgICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNv
cnJlY3QgcmVnLgorICAgICAgICAvLyAoNikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCisg
ICAgICAgIC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgorICAgICAgICAvLwor
ICAgICAgICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92
ZXMsIHRvIHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBpbgorICAgICAgICAvLyBwbGFjZSAo
dGhlIE1hY3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9y
YWNoIHdpbGwgYmUgc2FmZSBpbgorICAgICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQg
aW4gY2FzZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCisg
ICAgICAgIC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwg
dG8gYXZvaWQgdHJhbXBsaW5nLikKKworICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgeworICAg
ICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KKyAg
ICAgICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOworICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0
Qik7CisgICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0QikgeworICAgICAgICAgICAgLy8g
SGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBmaXJzdC4K
KyAgICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOworICAgICAgICAgICAgbW92ZShzcmNBLCBk
ZXN0QSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3dhcChkZXN0QSwgZGVzdEIpOwor
ICAgIH0KKyNpZiBDUFUoWDg2XzY0KQorICAgIHRlbXBsYXRlPEZQUlJlZyBkZXN0QSwgRlBSUmVn
IGRlc3RCPgorICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhGUFJSZWcgc3JjQSwgRlBSUmVnIHNy
Y0IpCisgICAgeworICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNyY0EgIT0gc3JjQiwgdGhlcmUg
YXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMgbWF5IGJlIGluOgorICAgICAg
ICAvLyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywgdGhlIHJpZ2h0IHdheSBhcm91
bmQuCisgICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUgd3Jv
bmcgd2F5IGFyb3VuZC4KKyAgICAgICAgLy8gKDMpIG5laXRoZXIgYXJlIGN1cnJlbnRseSBpbiBh
cmcgcmVnaXN0ZXJzLgorICAgICAgICAvLyAoNCkgc3JjQSBpbiBpbiBpdHMgY29ycmVjdCByZWcu
CisgICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgorICAgICAgICAv
LyAoNikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCisgICAgICAgIC8vICg3KSBzcmNCIGlu
IGluIHRoZSBpbmNvcnJlY3QgcmVnLgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgdHJpdmlh
bCBhcHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMsIHRvIHB1dCBzcmNBIGluIHBs
YWNlIHRoZW4gc3JjQiBpbgorICAgICAgICAvLyBwbGFjZSAodGhlIE1hY3JvQXNzZW1ibGVyIHdp
bGwgb21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNoIHdpbGwgYmUgc2FmZSBpbgor
ICAgICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4gY2FzZXMgd2hlcmUgc3JjQT09
c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCisgICAgICAgIC8vIChyZXF1aXJlcyBh
IHN3YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8gYXZvaWQgdHJhbXBsaW5nLikK
KworICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgeworICAgICAgICAgICAgLy8gSGFuZGxlIHRo
ZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KKyAgICAgICAgICAgIG1vdmVEb3VibGUo
c3JjQSwgZGVzdEEpOworICAgICAgICAgICAgbW92ZURvdWJsZShzcmNCLCBkZXN0Qik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzcmNBICE9
IGRlc3RCKSB7CisgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5vbi1zd2FwIGNhc2UgLSBqdXN0
IHB1dCBzcmNCIGluIHBsYWNlIGZpcnN0LgorICAgICAgICAgICAgbW92ZURvdWJsZShzcmNCLCBk
ZXN0Qik7CisgICAgICAgICAgICBtb3ZlRG91YmxlKHNyY0EsIGRlc3RBKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChzcmNCID09IGRlc3RBICYmIHNy
Y0EgPT0gZGVzdEIpOworICAgICAgICAvLyBOZWVkIHRvIHN3YXA7IHBpY2sgYSB0ZW1wb3Jhcnkg
cmVnaXN0ZXIuCisgICAgICAgIEZQUlJlZyB0ZW1wOworICAgICAgICBpZiAoZGVzdEEgIT0gRlBS
SW5mbzo6YXJndW1lbnRGUFIzICYmIGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMykKKyAg
ICAgICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjM7CisgICAgICAgIGVsc2UgaWYg
KGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMiAmJiBkZXN0QSAhPSBGUFJJbmZvOjphcmd1
bWVudEZQUjIpCisgICAgICAgICAgICB0ZW1wID0gRlBSSW5mbzo6YXJndW1lbnRGUFIyOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVu
dEZQUjEgJiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgICAgIHRl
bXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjE7CisgICAgICAgIH0KKyAgICAgICAgbW92ZURvdWJs
ZShkZXN0QSwgdGVtcCk7CisgICAgICAgIG1vdmVEb3VibGUoZGVzdEIsIGRlc3RBKTsKKyAgICAg
ICAgbW92ZURvdWJsZSh0ZW1wLCBkZXN0Qik7CisgICAgfQorI2VuZGlmCisgICAgdm9pZCBzZXR1
cFN0dWJBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAg
c2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50
R1BSMj4oYXJnMSwgYXJnMik7CisgICAgfQorICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRzKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICAvLyBJ
ZiBuZWl0aGVyIG9mIGFyZzIvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBh
cmcxIGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJB
cmdzIHRvIGZpeCBhcmcyL2FyZzMuCisgICAgICAgIGlmIChhcmcyICE9IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSkgeworICAgICAgICAgICAg
bW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICAgICAgc2V0dXBUd29T
dHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJn
MiwgYXJnMyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBJ
ZiBuZWl0aGVyIG9mIGFyZzEvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBh
cmcyIGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJB
cmdzIHRvIGZpeCBhcmcxL2FyZzMuCisgICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMiAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMikgeworICAgICAgICAgICAg
bW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICAgICAgc2V0dXBUd29T
dHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJn
MSwgYXJnMyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBJ
ZiBuZWl0aGVyIG9mIGFyZzEvYXJnMiBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBh
cmczIGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJB
cmdzIHRvIGZpeCBhcmcxL2FyZzIuCisgICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMyAmJiBhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMykgeworICAgICAgICAgICAg
bW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICAgICAgc2V0dXBUd29T
dHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMj4oYXJn
MSwgYXJnMik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBJ
ZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gbW92ZSBhbnkgb2YgYXJnMS9h
cmcyL2FyZzMuCisgICAgICAgIC8vIFNpbmNlIGFsbCB0aHJlZSBhcmUgYmxvY2tlZCwgdGhlbiBh
bGwgdGhyZWUgbXVzdCBhbHJlYWR5IGJlIGluIHRoZSBhcmd1bWVudCByZWdpc3Rlci4KKyAgICAg
ICAgLy8gQnV0IGFyZSB0aGV5IGluIHRoZSByaWdodCBvbmVzPworCisgICAgICAgIC8vIEZpcnN0
LCBlbnN1cmUgYXJnMSBpcyBpbiBwbGFjZS4KKyAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSB7CisgICAgICAgICAgICBzd2FwKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CisKKyAgICAgICAgICAgIC8vIElmIGFyZzEgd2Fzbid0IGluIGFyZ3VtZW50R1BSMSwg
b25lIG9mIGFyZzIvYXJnMyBtdXN0IGJlLgorICAgICAgICAgICAgQVNTRVJUKGFyZzIgPT0gR1BS
SW5mbzo6YXJndW1lbnRHUFIxIHx8IGFyZzMgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAg
ICAgICAgICAgIC8vIElmIGFyZzIgd2FzIGluIGFyZ3VtZW50R1BSMSBpdCBubyBsb25nZXIgaXMg
KGR1ZSB0byB0aGUgc3dhcCkuCisgICAgICAgICAgICAvLyBPdGhlcndpc2UgYXJnMyBtdXN0IGhh
dmUgYmVlbi4gTWFyayBoaW0gYXMgbW92ZWQuCisgICAgICAgICAgICBpZiAoYXJnMiA9PSBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpCisgICAgICAgICAgICAgICAgYXJnMiA9IGFyZzE7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXJnMyA9IGFyZzE7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBFaXRoZXIgYXJnMiAmIGFyZzMgbmVlZCBzd2FwcGluZywgb3Igd2UncmUgYWxsIGRv
bmUuCisgICAgICAgIEFTU0VSVCgoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgfHwgYXJn
MyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpCisgICAgICAgICAgICB8fCAoYXJnMiA9PSBHUFJJ
bmZvOjphcmd1bWVudEdQUjMgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKKwor
ICAgICAgICBpZiAoYXJnMiAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjIpCisgICAgICAgICAgICBz
d2FwKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICB9
CisKKyNpZiBDUFUoWDg2XzY0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
cyhGUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29T
dHViQXJnczxGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMT4oYXJn
MSwgYXJnMik7CisgICAgfQorI2Vsc2UKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHMoRlBSUmVnIGFyZzEpCisgICAgeworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQUlJl
ZyBhcmcyKQorICAgIHsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgYXJnMSk7CisgICAgICAgIGFzc2VtYmxlcigp
LnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzIp
OworICAgIH0KKyNlbmRpZgorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
RXhlY1N0YXRlKCkKKyAgICB7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKKyAgICB7CisgICAg
ICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7Cisg
ICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIpCisg
ICAgeworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7IC8vIE1vdmUg
dGhpcyBmaXJzdCwgc28gc2V0dGluZyBhcmcxIGRvZXMgbm90IHRyYW1wbGUhCisgICAgICAgIG1v
dmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0z
MiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tUHRyIGFy
ZzIpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Cisg
ICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBzZXR1
cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBT
dHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFy
Z3VtZW50R1BSMyk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIs
IFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
OworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7Cisg
ICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShhcmcz
LCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEs
IFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIG1vdmUoYXJn
MSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7
CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgfQorCisjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVS
UyA+PSA0CisgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5n
IGNvbnZlbnRpb24gdGhhdCBwcm92aWRlcyBmb3IKKyAgICAvLyBleGFjdGx5IDQgYXJndW1lbnQg
cmVnaXN0ZXJzLCBlLmcuIEFSTXY3LgorI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMg
PT0gNAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAg
eworICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0
ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJn
NCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMs
IEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAg
ICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJn
MywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCAx
KTsKKyAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKyNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1F
TlRfUkVHSVNURVJTID09IDQKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHQ0NhbGxIZWxwZXJzX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNp
b24gMTA1MDM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8YXNzZW1ibGVyL0xp
bmtCdWZmZXIuaD4KICNpbmNsdWRlIDxhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaD4KICNpbmNs
dWRlIDxieXRlY29kZS9Db2RlQmxvY2suaD4KLSNpbmNsdWRlIDxkZmcvREZHQXNzZW1ibHlIZWxw
ZXJzLmg+CisjaW5jbHVkZSA8ZGZnL0RGR0NDYWxsSGVscGVycy5oPgogI2luY2x1ZGUgPGRmZy9E
RkdGUFJJbmZvLmg+CiAjaW5jbHVkZSA8ZGZnL0RGR0dQUkluZm8uaD4KICNpbmNsdWRlIDxkZmcv
REZHR3JhcGguaD4KQEAgLTE0NywxMCArMTQ3LDEwIEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1Jl
Y29yZCB7CiAvLyByZWxhdGlvbnNoaXApLiBUaGUgSklUQ29tcGlsZXIgaG9sZHMgcmVmZXJlbmNl
cyB0byBpbmZvcm1hdGlvbiByZXF1aXJlZCBkdXJpbmcKIC8vIGNvbXBpbGF0aW9uLCBhbmQgYWxz
byByZWNvcmRzIGluZm9ybWF0aW9uIHVzZWQgaW4gbGlua2luZyAoZS5nLiBhIGxpc3Qgb2YgYWxs
CiAvLyBjYWxsIHRvIGJlIGxpbmtlZCkuCi1jbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgeworY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsK
IHB1YmxpYzoKICAgICBKSVRDb21waWxlcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEdyYXBo
JiBkZmcsIENvZGVCbG9jayogY29kZUJsb2NrKQotICAgICAgICA6IEFzc2VtYmx5SGVscGVycyhn
bG9iYWxEYXRhLCBjb2RlQmxvY2spCisgICAgICAgIDogQ0NhbGxIZWxwZXJzKGdsb2JhbERhdGEs
IGNvZGVCbG9jaykKICAgICAgICAgLCBtX2dyYXBoKGRmZykKICAgICB7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNp
b24gMTA1MDM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYwLDQ1NyArMTA2MCw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIG1fZ2VuZXJhdGlvbkluZm9bbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKV0uaW5pdENvbnN0YW50
KG5vZGVJbmRleCwgbm9kZS5yZWZDb3VudCgpKTsKICAgICB9CiAgICAgCi0gICAgLy8gVGhlc2Ug
bWV0aG9kcyB1c2VkIHRvIHNvcnQgYXJndW1lbnRzIGludG8gdGhlIGNvcnJlY3QgcmVnaXN0ZXJz
LgotICAgIC8vIE9uIFg4NiB3ZSB1c2UgY2RlY2wgY2FsbGluZyBjb252ZW50aW9ucywgd2hpY2gg
cGFzcyBhbGwgYXJndW1lbnRzIG9uIHRoZQotICAgIC8vIHN0YWNrLiBPbiBvdGhlciBhcmNoaXRl
Y3R1cmVzIHdlIG1heSBuZWVkIHRvIHNvcnQgdmFsdWVzIGludG8gdGhlCi0gICAgLy8gY29ycmVj
dCByZWdpc3RlcnMuCi0jaWYgIU5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKLSAgICB1bnNp
Z25lZCBtX2NhbGxBcmd1bWVudE9mZnNldDsKLSAgICB2b2lkIHJlc2V0Q2FsbEFyZ3VtZW50cygp
IHsgbV9jYWxsQXJndW1lbnRPZmZzZXQgPSAwOyB9Ci0KLSAgICAvLyBUaGVzZSBtZXRob2RzIGFy
ZSB1c2luZyBpbnRlcm5hbGx5IHRvIGltcGxlbWVudCB0aGUgY2FsbE9wZXJhdGlvbiBtZXRob2Rz
LgotICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEdQUlJlZyB2YWx1ZSkKLSAgICB7Ci0gICAgICAg
IG1faml0LnBva2UodmFsdWUsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAgIH0KLSAgICB2
b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tMzIgaW1tKQotICAgIHsKLSAgICAgICAgbV9q
aXQucG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAgIH0KLSAgICB2b2lkIGFk
ZENhbGxBcmd1bWVudChUcnVzdGVkSW1tUHRyIHBvaW50ZXIpCi0gICAgewotICAgICAgICBtX2pp
dC5wb2tlKHBvaW50ZXIsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAgIH0KLSAgICB2b2lk
IGFkZENhbGxBcmd1bWVudChGUFJSZWcgdmFsdWUpCi0gICAgewotICAgICAgICBtX2ppdC5zdG9y
ZURvdWJsZSh2YWx1ZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoSklUQ29tcGlsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBtX2NhbGxBcmd1bWVudE9mZnNldCAqIHNpemVvZih2b2lkKikpKTsKLSAg
ICAgICAgbV9jYWxsQXJndW1lbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSkgLyBzaXplb2Yodm9p
ZCopOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJS
ZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIHJl
c2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJn
dW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3Rlcik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEp
Ci0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzEpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAg
cmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIg
YXJnMikKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgVHJ1c3RlZEltbVB0ciBh
cmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgIH0K
LQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcz
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmcz
KQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxB
cmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczLCBHUFJSZWcgYXJnNCkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwot
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnNCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVz
dGVkSW1tUHRyIGFyZzQpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywg
VHJ1c3RlZEltbTMyIGFyZzQpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsK
LSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Mik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMo
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
LSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
R1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmc0KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOwotICAgIH0K
LSNlbmRpZiAvLyAhTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUwotICAgIC8vIFRoZXNlIG1l
dGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBjb252ZW50aW9uIHRoYXQgcHJvdmlk
ZXMgZm9yCi0gICAgLy8gYXQgbGVhc3QgNCBhcmd1bWVudCByZWdpc3RlcnMsIGUuZy4gWDg2XzY0
LCBBUk12Ny4KLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKLSAgICB0ZW1w
bGF0ZTxHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0Qj4KLSAgICB2b2lkIHNldHVwVHdvU3R1YkFy
Z3MoR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCKQotICAgIHsKLSAgICAgICAgLy8gQXNzdW1pbmcg
dGhhdCBzcmNBICE9IHNyY0IsIHRoZXJlIGFyZSA3IGludGVyZXN0aW5nIHN0YXRlcyB0aGUgcmVn
aXN0ZXJzIG1heSBiZSBpbjoKLSAgICAgICAgLy8gKDEpIGJvdGggYXJlIGFscmVhZHkgaW4gYXJn
IHJlZ3MsIHRoZSByaWdodCB3YXkgYXJvdW5kLgotICAgICAgICAvLyAoMikgYm90aCBhcmUgYWxy
ZWFkeSBpbiBhcmcgcmVncywgdGhlIHdyb25nIHdheSBhcm91bmQuCi0gICAgICAgIC8vICgzKSBu
ZWl0aGVyIGFyZSBjdXJyZW50bHkgaW4gYXJnIHJlZ2lzdGVycy4KLSAgICAgICAgLy8gKDQpIHNy
Y0EgaW4gaW4gaXRzIGNvcnJlY3QgcmVnLgotICAgICAgICAvLyAoNSkgc3JjQSBpbiBpbiB0aGUg
aW5jb3JyZWN0IHJlZy4KLSAgICAgICAgLy8gKDYpIHNyY0IgaW4gaW4gaXRzIGNvcnJlY3QgcmVn
LgotICAgICAgICAvLyAoNykgc3JjQiBpbiBpbiB0aGUgaW5jb3JyZWN0IHJlZy4KLSAgICAgICAg
Ly8KLSAgICAgICAgLy8gVGhlIHRyaXZpYWwgYXBwcm9hY2ggaXMgdG8gc2ltcGx5IGVtaXQgdHdv
IG1vdmVzLCB0byBwdXQgc3JjQSBpbiBwbGFjZSB0aGVuIHNyY0IgaW4KLSAgICAgICAgLy8gcGxh
Y2UgKHRoZSBNYWNyb0Fzc2VtYmxlciB3aWxsIG9taXQgcmVkdW5kYW50IG1vdmVzKS4gVGhpcyBh
cHBvcmFjaCB3aWxsIGJlIHNhZmUgaW4KLSAgICAgICAgLy8gY2FzZXMgMSwgMywgNCwgNSwgNiwg
YW5kIGluIGNhc2VzIHdoZXJlIHNyY0E9PXNyY0IuIFRoZSB0d28gcHJvYmxlbSBjYXNlcyBhcmUg
MgotICAgICAgICAvLyAocmVxdWlyZXMgYSBzd2FwKSBhbmQgNyAobXVzdCBtb3ZlIHNyY0IgZmly
c3QsIHRvIGF2b2lkIHRyYW1wbGluZy4pCi0KLSAgICAgICAgaWYgKHNyY0IgIT0gZGVzdEEpIHsK
LSAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgZWFzeSBjYXNlcyAtIHR3byBzaW1wbGUgbW92ZXMu
Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKHNyY0EsIGRlc3RBKTsKLSAgICAgICAgICAgIG1faml0
Lm1vdmUoc3JjQiwgZGVzdEIpOwotICAgICAgICB9IGVsc2UgaWYgKHNyY0EgIT0gZGVzdEIpIHsK
LSAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgbm9uLXN3YXAgY2FzZSAtIGp1c3QgcHV0IHNyY0Ig
aW4gcGxhY2UgZmlyc3QuCi0gICAgICAgICAgICBtX2ppdC5tb3ZlKHNyY0IsIGRlc3RCKTsKLSAg
ICAgICAgICAgIG1faml0Lm1vdmUoc3JjQSwgZGVzdEEpOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIG1faml0LnN3YXAoZGVzdEEsIGRlc3RCKTsKLSAgICB9Ci0jaWYgQ1BVKFg4Nl82NCkK
LSAgICB0ZW1wbGF0ZTxGUFJSZWcgZGVzdEEsIEZQUlJlZyBkZXN0Qj4KLSAgICB2b2lkIHNldHVw
VHdvU3R1YkFyZ3MoRlBSUmVnIHNyY0EsIEZQUlJlZyBzcmNCKQotICAgIHsKLSAgICAgICAgLy8g
QXNzdW1pbmcgdGhhdCBzcmNBICE9IHNyY0IsIHRoZXJlIGFyZSA3IGludGVyZXN0aW5nIHN0YXRl
cyB0aGUgcmVnaXN0ZXJzIG1heSBiZSBpbjoKLSAgICAgICAgLy8gKDEpIGJvdGggYXJlIGFscmVh
ZHkgaW4gYXJnIHJlZ3MsIHRoZSByaWdodCB3YXkgYXJvdW5kLgotICAgICAgICAvLyAoMikgYm90
aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywgdGhlIHdyb25nIHdheSBhcm91bmQuCi0gICAgICAg
IC8vICgzKSBuZWl0aGVyIGFyZSBjdXJyZW50bHkgaW4gYXJnIHJlZ2lzdGVycy4KLSAgICAgICAg
Ly8gKDQpIHNyY0EgaW4gaW4gaXRzIGNvcnJlY3QgcmVnLgotICAgICAgICAvLyAoNSkgc3JjQSBp
biBpbiB0aGUgaW5jb3JyZWN0IHJlZy4KLSAgICAgICAgLy8gKDYpIHNyY0IgaW4gaW4gaXRzIGNv
cnJlY3QgcmVnLgotICAgICAgICAvLyAoNykgc3JjQiBpbiBpbiB0aGUgaW5jb3JyZWN0IHJlZy4K
LSAgICAgICAgLy8KLSAgICAgICAgLy8gVGhlIHRyaXZpYWwgYXBwcm9hY2ggaXMgdG8gc2ltcGx5
IGVtaXQgdHdvIG1vdmVzLCB0byBwdXQgc3JjQSBpbiBwbGFjZSB0aGVuIHNyY0IgaW4KLSAgICAg
ICAgLy8gcGxhY2UgKHRoZSBNYWNyb0Fzc2VtYmxlciB3aWxsIG9taXQgcmVkdW5kYW50IG1vdmVz
KS4gVGhpcyBhcHBvcmFjaCB3aWxsIGJlIHNhZmUgaW4KLSAgICAgICAgLy8gY2FzZXMgMSwgMywg
NCwgNSwgNiwgYW5kIGluIGNhc2VzIHdoZXJlIHNyY0E9PXNyY0IuIFRoZSB0d28gcHJvYmxlbSBj
YXNlcyBhcmUgMgotICAgICAgICAvLyAocmVxdWlyZXMgYSBzd2FwKSBhbmQgNyAobXVzdCBtb3Zl
IHNyY0IgZmlyc3QsIHRvIGF2b2lkIHRyYW1wbGluZy4pCi0KLSAgICAgICAgaWYgKHNyY0IgIT0g
ZGVzdEEpIHsKLSAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgZWFzeSBjYXNlcyAtIHR3byBzaW1w
bGUgbW92ZXMuCi0gICAgICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKHNyY0EsIGRlc3RBKTsKLSAg
ICAgICAgICAgIG1faml0Lm1vdmVEb3VibGUoc3JjQiwgZGVzdEIpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoc3JjQSAhPSBkZXN0Qikgewot
ICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBp
biBwbGFjZSBmaXJzdC4KLSAgICAgICAgICAgIG1faml0Lm1vdmVEb3VibGUoc3JjQiwgZGVzdEIp
OwotICAgICAgICAgICAgbV9qaXQubW92ZURvdWJsZShzcmNBLCBkZXN0QSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQoc3JjQiA9PSBkZXN0QSAmJiBz
cmNBID09IGRlc3RCKTsKLSAgICAgICAgLy8gTmVlZCB0byBzd2FwOyBwaWNrIGEgdGVtcG9yYXJ5
IHJlZ2lzdGVyLgotICAgICAgICBGUFJSZWcgdGVtcDsKLSAgICAgICAgaWYgKGRlc3RBICE9IEZQ
UkluZm86OmFyZ3VtZW50RlBSMyAmJiBkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjMpCi0g
ICAgICAgICAgICB0ZW1wID0gRlBSSW5mbzo6YXJndW1lbnRGUFIzOwotICAgICAgICBlbHNlIGlm
IChkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjIgJiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJn
dW1lbnRGUFIyKQotICAgICAgICAgICAgdGVtcCA9IEZQUkluZm86OmFyZ3VtZW50RlBSMjsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1l
bnRGUFIxICYmIGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgICAgICAgICB0
ZW1wID0gRlBSSW5mbzo6YXJndW1lbnRGUFIxOwotICAgICAgICB9Ci0gICAgICAgIG1faml0Lm1v
dmVEb3VibGUoZGVzdEEsIHRlbXApOwotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKGRlc3RCLCBk
ZXN0QSk7Ci0gICAgICAgIG1faml0Lm1vdmVEb3VibGUodGVtcCwgZGVzdEIpOwotICAgIH0KLSNl
bmRpZgotICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRzKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MikKLSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIx
LCBHUFJJbmZvOjphcmd1bWVudEdQUjI+KGFyZzEsIGFyZzIpOwotICAgIH0KLSAgICB2b2lkIHNl
dHVwU3R1YkFyZ3VtZW50cyhHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQot
ICAgIHsKLSAgICAgICAgLy8gSWYgbmVpdGhlciBvZiBhcmcyL2FyZzMgYXJlIGluIG91ciB3YXks
IHRoZW4gd2UgY2FuIG1vdmUgYXJnMSBpbnRvIHBsYWNlLgotICAgICAgICAvLyBUaGVuIHdlIGNh
biB1c2Ugc2V0dXBUd29TdHViQXJncyB0byBmaXggYXJnMi9hcmczLgotICAgICAgICBpZiAoYXJn
MiAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgYXJnMyAhPSBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKLSAgICAgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzIsIGFyZzMpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgbmVpdGhlciBvZiBhcmcxL2FyZzMgYXJlIGluIG91
ciB3YXksIHRoZW4gd2UgY2FuIG1vdmUgYXJnMiBpbnRvIHBsYWNlLgotICAgICAgICAvLyBUaGVu
IHdlIGNhbiB1c2Ugc2V0dXBUd29TdHViQXJncyB0byBmaXggYXJnMS9hcmczLgotICAgICAgICBp
ZiAoYXJnMSAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjIgJiYgYXJnMyAhPSBHUFJJbmZvOjphcmd1
bWVudEdQUjIpIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKLSAgICAgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFyZzMpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgbmVpdGhlciBvZiBhcmcxL2FyZzIgYXJl
IGluIG91ciB3YXksIHRoZW4gd2UgY2FuIG1vdmUgYXJnMyBpbnRvIHBsYWNlLgotICAgICAgICAv
LyBUaGVuIHdlIGNhbiB1c2Ugc2V0dXBUd29TdHViQXJncyB0byBmaXggYXJnMS9hcmcyLgotICAg
ICAgICBpZiAoYXJnMSAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjMgJiYgYXJnMiAhPSBHUFJJbmZv
Ojphcmd1bWVudEdQUjMpIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoYXJnMywgR1BSSW5mbzo6
YXJndW1lbnRHUFIzKTsKLSAgICAgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjI+KGFyZzEsIGFyZzIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHdlIGhh
dmVuJ3QgYmVlbiBhYmxlIHRvIG1vdmUgYW55IG9mIGFyZzEvYXJnMi9hcmczLgotICAgICAgICAv
LyBTaW5jZSBhbGwgdGhyZWUgYXJlIGJsb2NrZWQsIHRoZW4gYWxsIHRocmVlIG11c3QgYWxyZWFk
eSBiZSBpbiB0aGUgYXJndW1lbnQgcmVnaXN0ZXIuCi0gICAgICAgIC8vIEJ1dCBhcmUgdGhleSBp
biB0aGUgcmlnaHQgb25lcz8KLQotICAgICAgICAvLyBGaXJzdCwgZW5zdXJlIGFyZzEgaXMgaW4g
cGxhY2UuCi0gICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSkgewotICAg
ICAgICAgICAgbV9qaXQuc3dhcChhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotCi0gICAg
ICAgICAgICAvLyBJZiBhcmcxIHdhc24ndCBpbiBhcmd1bWVudEdQUjEsIG9uZSBvZiBhcmcyL2Fy
ZzMgbXVzdCBiZS4KLSAgICAgICAgICAgIEFTU0VSVChhcmcyID09IEdQUkluZm86OmFyZ3VtZW50
R1BSMSB8fCBhcmczID09IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgICAgICAvLyBJ
ZiBhcmcyIHdhcyBpbiBhcmd1bWVudEdQUjEgaXQgbm8gbG9uZ2VyIGlzIChkdWUgdG8gdGhlIHN3
YXApLgotICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGFyZzMgbXVzdCBoYXZlIGJlZW4uIE1hcmsg
aGltIGFzIG1vdmVkLgotICAgICAgICAgICAgaWYgKGFyZzIgPT0gR1BSSW5mbzo6YXJndW1lbnRH
UFIxKQotICAgICAgICAgICAgICAgIGFyZzIgPSBhcmcxOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGFyZzMgPSBhcmcxOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRWl0aGVy
IGFyZzIgJiBhcmczIG5lZWQgc3dhcHBpbmcsIG9yIHdlJ3JlIGFsbCBkb25lLgotICAgICAgICBB
U1NFUlQoKGFyZzIgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIyIHx8IGFyZzMgPT0gR1BSSW5mbzo6
YXJndW1lbnRHUFIzKQotICAgICAgICAgICAgfHwgKGFyZzIgPT0gR1BSSW5mbzo6YXJndW1lbnRH
UFIzIHx8IGFyZzMgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIyKSk7Ci0KLSAgICAgICAgaWYgKGFy
ZzIgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIyKQotICAgICAgICAgICAgbV9qaXQuc3dhcChHUFJJ
bmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgfQotCi0jaWYg
Q1BVKFg4Nl82NCkKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVn
IGFyZzEpCi0gICAgewotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFy
Z3VtZW50RlBSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1
YkFyZ3M8RlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjE+KGFyZzEs
IGFyZzIpOwotICAgIH0KLSNlbHNlCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzKEZQUlJlZyBhcmcxKQotICAgIHsKLSAgICAgICAgbV9qaXQuYXNzZW1ibGVyKCkudm1vdihH
UFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgYXJnMSk7Ci0gICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBG
UFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1faml0LmFzc2VtYmxlcigpLnZtb3YoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEpOwotICAgICAgICBt
X2ppdC5hc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIzLCBhcmcyKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpCi0gICAgewotICAgICAgICBtX2ppdC5tb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0K
LQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEpCi0gICAgewotICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEpCi0gICAgewot
ICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCi0gICAgewotICAgICAgICBzZXR1
cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgVHJ1c3RlZEltbVB0ciBhcmcyKQotICAgIHsKLSAgICAgICAgbV9qaXQubW92ZShhcmcxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtX2ppdC5tb3ZlKGFyZzIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQ
UlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgbV9qaXQubW92ZShhcmcyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIpOyAvLyBNb3ZlIHRoaXMgZmlyc3QsIHNvIHNldHRpbmcgYXJnMSBkb2VzIG5vdCB0
cmFtcGxlIQotICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIp
Ci0gICAgewotICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgICAgIG1faml0Lm1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAg
ICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyKQotICAg
IHsKLSAgICAgICAgbV9qaXQubW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAg
ICAgICBtX2ppdC5tb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1f
aml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQotICAgIHsKLSAg
ICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICBtX2pp
dC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMykKLSAgICB7
Ci0gICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbV9qaXQu
bW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0K
LQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewot
ICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IG1faml0Lm1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbV9qaXQu
bW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0K
LQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAg
ICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJn
MywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0z
MiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICBt
X2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1faml0Lm1v
dmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbV9qaXQubW92ZShhcmcz
LCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotI2VuZGlm
IC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotICAgIC8vIFRoZXNlIG1ldGhv
ZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBjb252ZW50aW9uIHRoYXQgcHJvdmlkZXMg
Zm9yCi0gICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBBUk12Ny4KLSNp
ZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQotICAgIHsKLSAgICAgICAgbV9qaXQucG9rZShhcmc0
KTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1c3Rl
ZEltbTMyIGFyZzQpCi0gICAgewotICAgICAgICBtX2ppdC5wb2tlKGFyZzQpOwotICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkK
LSAgICB7Ci0gICAgICAgIG1faml0LnBva2UoYXJnNCk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKLSAgICB7Ci0gICAgICAgIG1f
aml0LnBva2UoYXJnNCk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMs
IEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKLSAgICB7Ci0gICAgICAgIG1faml0LnBva2UoYXJn
NSwgMSk7Ci0gICAgICAgIG1faml0LnBva2UoYXJnNCk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICB9Ci0jZW5kaWYgLy8gTlVNQkVS
X09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBj
YWxscyB0byBDKysgaGVscGVyIGZ1bmN0aW9ucy4KICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBi
cm9hZGx5IHZhbHVlIHJlcHJlc2VudGF0aW9uIHNwZWNpZmljIChpLmUuCiAgICAgLy8gZGVhbCB3
aXRoIHRoZSBmYWN0IHRoYXQgYSBKU1ZhbHVlIG1heSBiZSBwYXNzZWQgaW4gb25lIG9yIHR3bwpA
QCAtMTUxOSwzMTQgKzEwNjgsMzE0IEBAIHByaXZhdGU6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VQIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgdm9pZCogcG9pbnRlcikKICAgICB7Ci0gICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlcikp
OwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oWl9ERkdPcGVyYXRpb25fRCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBh
cmcxKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMSk7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzKGFyZzEpOwogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0g
bV9qaXQuYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJU
b1B0cihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIGNh
bGw7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVy
YXRpb25fRUdJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIElkZW50aWZp
ZXIqIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfREZHT3BlcmF0aW9uX0VJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSWRlbnRpZmll
ciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVy
YXRpb25fRUEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7Ci0g
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVBT
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgdm9pZCogcG9pbnRlciwgc2l6ZV90IHNpemUpCiAg
ICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihw
b2ludGVyKSwgVHJ1c3RlZEltbVB0cihzaXplKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNp
emUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VTUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIGlu
dCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIHsKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEltbTMyKHN0YXJ0Q29uc3RhbnQpLCBJbW0zMihudW1Db25z
dGFudHMpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEltbTMy
KHN0YXJ0Q29uc3RhbnQpLCBJbW0zMihudW1Db25zdGFudHMpKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9u
X0VQUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCB2b2lkKiBwb2ludGVy
KQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIocG9pbnRlcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9F
Q0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSWRlbnRpZmllciogaWRl
bnRpZmllcikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9E
RkdPcGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIElk
ZW50aWZpZXIqIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZp
ZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRUMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJ
bW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oU19ERkdPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oU19ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewotICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9u
X0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBNYWNyb0Fzc2VtYmxl
cjo6SW1tMzIgaW1tKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIE1hY3JvQXNzZW1ibGVyOjpJbW1QdHIoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihpbW0ubV92YWx1ZSkpKSkpOworICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihz
dGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGltbS5tX3Zh
bHVlKSkpKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIgaW1tLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyKHN0YXRp
Y19jYXN0PGNvbnN0IHZvaWQqPihKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW1tLm1fdmFsdWUp
KSkpLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKE1h
Y3JvQXNzZW1ibGVyOjpJbW1QdHIoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihpbW0ubV92YWx1ZSkpKSksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25f
RUNKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQog
ICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0RGR09wZXJhdGlvbl9FSlBQIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCB2b2lkKiBwb2ludGVyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOworICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cihwb2lu
dGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdP
cGVyYXRpb25fRUpDSSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSWRlbnRp
ZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIo
aWRlbnRpZmllcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfREZHT3BlcmF0aW9uX0VKSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FQVpKIG9wZXJhdGlvbiwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7Ci0gICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDSkogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKLSAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRF9ERkdPcGVyYXRp
b25fRUogb3BlcmF0aW9uLCBGUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7Ci0gICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRF9ERkdPcGVyYXRpb25fREQgb3Bl
cmF0aW9uLCBGUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCiAgICAgewot
ICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHMoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAjZWxzZQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oWl9ERkdPcGVyYXRpb25fRCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEZQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMSk7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzKGFyZzEpOwogICAgICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsID0gbV9qaXQuYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgICAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKICAgICAgICAg
cmV0dXJuIGNhbGw7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9ERkdPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgdm9pZCogcG9pbnRlcikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCB2b2lkKiBwb2ludGVyKQog
ICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJ
bW1QdHIocG9pbnRlcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0RGR09wZXJhdGlvbl9FR0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiAgICAgewot
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihp
ZGVudGlmaWVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
REZHT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3Vs
dFBheWxvYWQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSSBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBJZGVudGlmaWVyKiBp
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0RGR09wZXJhdGlvbl9FQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVBT
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIHZvaWQq
IHBvaW50ZXIsIHNpemVfdCBzaXplKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihw
b2ludGVyKSwgVHJ1c3RlZEltbVB0cihzaXplKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVz
dWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RG
R09wZXJhdGlvbl9FU1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZCwgaW50IHN0YXJ0Q29uc3RhbnQsIGludCBudW1Db25zdGFudHMpCiAgICAgewotICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKHN0YXJ0Q29uc3Rh
bnQpLCBUcnVzdGVkSW1tMzIobnVtQ29uc3RhbnRzKSk7CisgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoc3RhcnRDb25zdGFudCksIFRydXN0ZWRJ
bW0zMihudW1Db25zdGFudHMpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9u
X0VKUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBH
UFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCB2b2lkKiBwb2ludGVyKQogICAgIHsK
LSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFn
LCBJbW1QdHIocG9pbnRlcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIEltbVB0cihwb2ludGVyKSk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCwgR1BSUmVnIGFyZzIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBJZGVudGlmaWVyKiBpZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRy
dXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cihpZGVudGlm
aWVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5
bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQs
IElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIFRydXN0ZWRJbW0zMihhcmcxVGFnKSwgVHJ1c3RlZElt
bVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxUGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcpLCBUcnVzdGVkSW1tUHRyKGlk
ZW50aWZpZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKQSBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMik7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJn
MVRhZywgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0Ugb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAg
IHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwpCiAgICAgewotICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNl
bGwpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFNfREZHT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZyk7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZyk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihT
X0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRh
ZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2Fk
KQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2Fk
LCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMlBheWxvYWQsIGFy
ZzJUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxv
YWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiAgICAgewotICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXls
b2FkLCBhcmcyVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyIGltbSkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgaW1tLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6SW50MzJUYWcpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJ
bnQzMlRhZykpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIE1hY3JvQXNzZW1i
bGVyOjpJbW0zMiBpbW0sIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiAgICAg
ewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoaW1tLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6SW50MzJUYWcpLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJ
bnQzMlRhZyksIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
REZHT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1
bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9h
ZCkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
UGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihW
X0RGR09wZXJhdGlvbl9FSlBQIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcx
UGF5bG9hZCwgR1BSUmVnIGFyZzIsIHZvaWQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIsIFRydXN0
ZWRJbW1QdHIocG9pbnRlcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikp
OwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24p
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0
aW9uX0VKQ0kgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBH
UFJSZWcgYXJnMiwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMiwgVHJ1c3Rl
ZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMiwgVHJ1c3RlZEltbVB0cihpZGVudGlm
aWVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdP
cGVyYXRpb25fRUNKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BS
UmVnIGFyZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQogICAg
IHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2Fk
LCBhcmcyVGFnLCBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxv
YWQsIGFyZzNUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfREZHT3BlcmF0aW9uX0VQWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewotICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnM1BheWxvYWQsIGFyZzNUYWcp
OworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnM1BheWxvYWQsIGFyZzNUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VBWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewotICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnM1BheWxvYWQs
IGFyZzNUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oRF9ERkdPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBGUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkKQogICAgIHsKLSAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcx
VGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oRF9ERkdPcGVyYXRpb25fREQgb3BlcmF0aW9uLCBGUFJSZWcgcmVzdWx0LCBG
UFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50cyhh
cmcxLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJnMSwgYXJnMik7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122582</attachid>
            <date>2012-01-15 19:27:28 -0800</date>
            <delta_ts>2012-01-15 19:57:41 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>ccall_patch_1.diff</filename>
            <type>text/plain</type>
            <size>66767</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDEyLTAxLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEMgY2FsbGluZyBjb252ZW50aW9uIGxvZ2ljIGluIERGRzo6U3BlY3VsYXRpdmVKSVQgc2hv
dWxkIGJlIGF2YWlsYWJsZSBldmVuCisgICAgICAgIHdoZW4gbm90IGdlbmVyYXRpbmcgY29kZSBm
b3IgdGhlIERGRyBzcGVjdWxhdGl2ZSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NjM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgTW92ZWQgYWxsIG9mIHRoZSBsb2dpYyBmb3IgcGxh
Y2luZyBDIGNhbGwgYXJndW1lbnRzIGludG8gdGhlIHJpZ2h0IHBsYWNlIChzdGFjaworICAgICAg
ICBvciByZWdpc3RlcnMpIGludG8gYSBuZXcgY2xhc3MsIERGRzo6Q0NhbGxIZWxwZXJzLiAgVGhp
cyBjbGFzcyBpbmhlcml0cyBmcm9tCisgICAgICAgIEFzc2VtYmx5SGVscGVycywgYW5vdGhlciBE
RkcgZ3JhYi1iYWcgb2YgaGVscGVyIGZ1bmN0aW9ucy4gIEkgY291bGQgaGF2ZSBtb3ZlZAorICAg
ICAgICB0aGlzIGNvZGUgaW50byBBc3NlbWJseUhlbHBlcnMsIGJ1dCBkZWNpZGVkIGFnYWluc3Qg
aXQsIGJlY2F1c2UgSSB3YW50ZWQgdG8KKyAgICAgICAgbGltaXQgdGhlIG51bWJlciBvZiBtZXRo
b2RzIGVhY2ggY2xhc3MgaW4gdGhlIEpJVCBoYXMuICBIZW5jZSBub3cgd2UgaGF2ZSBhCisgICAg
ICAgIHNsaWdodGx5IG9kZCBvcmdhbml6YXRpb24gb2YgSklUIGNsYXNzZXMgaW4gREZHOiBNYWNy
b0Fzc2VtYmxlciAoYmFzaWMgaW5zdHJ1Y3Rpb24KKyAgICAgICAgZW1pc3Npb24pIDw9IEFzc2Vt
Ymx5SGVscGVycyAoc29tZSBhZGRpdGlvbmFsIEpTIHNtYXJ0cykgPD0gQ0NhbGxIZWxwZXJzCisg
ICAgICAgICh1bmRlcnN0YW5kcyBjYWxscyB0byBDIGZ1bmN0aW9ucykgPD0gSklUQ29tcGlsZXIg
KGNhbiBjb21waWxlIGEgZ3JhcGggdG8gbWFjaGluZQorICAgICAgICBjb2RlKS4gIEVhY2ggb2Yg
dGhlc2UgZXhjZXB0IGZvciBKSVRDb21waWxlciBjYW4gYmUgcmV1c2VkIGZvciBzdHViIGNvbXBp
bGF0aW9uLgorICAgICAgICAKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZGZnL0RGR0NDYWxsSGVscGVycy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhl
bHBlcnM6OkNDYWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpy
ZXNldENhbGxBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6YWRk
Q2FsbEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRz
RXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1
cFR3b1N0dWJBcmdzKToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwU3R1
YkFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChK
U0M6OkRGRzo6SklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisKIDIwMTItMDEtMTUgIFBhYmxvIEZsb3VyZXQgIDxwYWJsb2ZAbW90b3JvbGEu
Y29tPgogCiAgICAgICAgIEZpeCBjb21waWxhdGlvbiBlcnJvcnMgb24gYnVpbGQtd2Via2l0IC0t
ZGVidWcgLS1uby12aWRlbyBvbiBtYWMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTA1MDM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEyOSw2ICsxMjksNyBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlQ2FjaGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxMDUwMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODAsNiAr
ODAsMTAgQEAKIAkJMEY2MjAxNzkxNDNGQ0Q0ODAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAx
NkQxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICovOyB9OwogCQkwRjYz
NkRBMDE0MkQyN0Q3MDBCMkU2NkEgLyogUGFja2VkSW50VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYzNkQ5RjE0MkQyN0QyMDBCMkU2NkEg
LyogUGFja2VkSW50VmVjdG9yLmggKi87IH07CiAJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAv
KiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5j
cHAgKi87IH07CisJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0IyOTQ4
MTRDM0NEMjMwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEg
LyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkQ4MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3QjI5
NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAv
KiBERkdCeXRlQ29kZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY3QjI5NEQxNEMzQ0Q0QzAwN0MzREIxIC8qIERGR0NvbW1vbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3N0UxNDY5
RUJDNDAwQ0YyNDQyIC8qIERGR0NvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGOTYzQjI3MTNGNzUzQkIwMDAyRDlCMiAvKiBSZWRCbGFj
a1RyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
OTYzQjI2MTNGNzUzOTkwMDAyRDlCMiAvKiBSZWRCbGFja1RyZWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjk2M0IyQzEzRjg1M0VDMDAwMkQ5
QjIgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjk2M0IyQjEzRjg1M0M3MDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvci5j
cHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mbm8tc3RyaWN0LWFsaWFzaW5n
IjsgfTsgfTsKIAkJMEY5NjNCMkQxM0Y4NTQwMjAwMDJEOUIyIC8qIE1ldGFBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjJBMTNG
ODUzQkQwMDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg1MCw2ICs4NTQsNyBAQAogCQkwRjYzNkQ5RjE0
MkQyN0QyMDBCMkU2NkEgLyogUGFja2VkSW50VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhY2tlZEludFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdD
b3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5n
Q291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0IyOTQ4MTRDM0NE
MjMwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHQ0NhbGxIZWxwZXJzLmg7IHBhdGggPSBkZmcvREZHQ0NhbGxIZWxwZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjI2MTNGNzUzOTkwMDAyRDlCMiAv
KiBSZWRCbGFja1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVkQmxh
Y2tUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjJBMTNGODUzQkQw
MDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1ldGFBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NjNC
MkIxM0Y4NTNDNzAwMDJEOUIyIC8qIE1ldGFBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWV0YUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMzcyLDYgKzIzNzcsNyBAQAogCQkJCTBGNUYwOENDMTQ2QkU2MDIwMDA0
NzJBOSAvKiBERkdCeXRlQ29kZUNhY2hlLmggKi8sCiAJCQkJODZFQzlEQjQxMzI4REY4MjAwMkIy
QUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCAqLywKIAkJCQk4NkVDOURCNTEzMjhERjgyMDAy
QjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCAqLywKKwkJCQkwRjdCMjk0ODE0QzNDRDIzMDA3
QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggKi8sCiAJCQkJMEZEODJFMUUxNDE3MkMyRjAwMTc5
Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgKi8sCiAJCQkJMEZEODJFMUYxNDE3MkMyRjAwMTc5
Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovLAogCQkJCTBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0
MiAvKiBERkdDb21tb24uaCAqLywKQEAgLTMwMjUsNiArMzAzMSwxMCBAQAogCQkJCTBGMEI4M0I3
MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyog
SklURHJpdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEg
LyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdCMjk0QjE0QzNDRDJG
MDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdCMjk0
QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY3QjI5NEQxNEMzQ0Q0QzAwN0MzREIxIC8qIERGR0NvbW1vbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0NDYWxsSGVscGVyc19oCisjZGVmaW5l
IERGR0NDYWxsSGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVO
QUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVk
ZSAiREZHR1BSSW5mby5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2Ns
YXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgeworcHVibGljOgorICAg
IENDYWxsSGVscGVycyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJs
b2NrKQorICAgICAgICA6IEFzc2VtYmx5SGVscGVycyhnbG9iYWxEYXRhLCBjb2RlQmxvY2spCisg
ICAgeworICAgIH0KKworICAgIC8vIFRoZXNlIG1ldGhvZHMgdXNlZCB0byBzb3J0IGFyZ3VtZW50
cyBpbnRvIHRoZSBjb3JyZWN0IHJlZ2lzdGVycy4KKyAgICAvLyBPbiBYODYgd2UgdXNlIGNkZWNs
IGNhbGxpbmcgY29udmVudGlvbnMsIHdoaWNoIHBhc3MgYWxsIGFyZ3VtZW50cyBvbiB0aGUKKyAg
ICAvLyBzdGFjay4gT24gb3RoZXIgYXJjaGl0ZWN0dXJlcyB3ZSBtYXkgbmVlZCB0byBzb3J0IHZh
bHVlcyBpbnRvIHRoZQorICAgIC8vIGNvcnJlY3QgcmVnaXN0ZXJzLgorI2lmICFOVU1CRVJfT0Zf
QVJHVU1FTlRfUkVHSVNURVJTCisgICAgdW5zaWduZWQgbV9jYWxsQXJndW1lbnRPZmZzZXQ7Cisg
ICAgdm9pZCByZXNldENhbGxBcmd1bWVudHMoKSB7IG1fY2FsbEFyZ3VtZW50T2Zmc2V0ID0gMDsg
fQorCisgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNpbmcgaW50ZXJuYWxseSB0byBpbXBsZW1l
bnQgdGhlIGNhbGxPcGVyYXRpb24gbWV0aG9kcy4KKyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChH
UFJSZWcgdmFsdWUpCisgICAgeworICAgICAgICBwb2tlKHZhbHVlLCBtX2NhbGxBcmd1bWVudE9m
ZnNldCsrKTsKKyAgICB9CisgICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoVHJ1c3RlZEltbTMyIGlt
bSkKKyAgICB7CisgICAgICAgIHBva2UoaW1tLCBtX2NhbGxBcmd1bWVudE9mZnNldCsrKTsKKyAg
ICB9CisgICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoVHJ1c3RlZEltbVB0ciBwb2ludGVyKQorICAg
IHsKKyAgICAgICAgcG9rZShwb2ludGVyLCBtX2NhbGxBcmd1bWVudE9mZnNldCsrKTsKKyAgICB9
CisgICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoRlBSUmVnIHZhbHVlKQorICAgIHsKKyAgICAgICAg
c3RvcmVEb3VibGUodmFsdWUsIEpJVENvbXBpbGVyOjpBZGRyZXNzKEpJVENvbXBpbGVyOjpzdGFj
a1BvaW50ZXJSZWdpc3RlciwgbV9jYWxsQXJndW1lbnRPZmZzZXQgKiBzaXplb2Yodm9pZCopKSk7
CisgICAgICAgIG1fY2FsbEFyZ3VtZW50T2Zmc2V0ICs9IHNpemVvZihkb3VibGUpIC8gc2l6ZW9m
KHZvaWQqKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMo
RlBSUmVnIGFyZzEpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1
bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBh
cmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcxKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAg
ICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Cisg
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1t
UHRyIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAgICByZXNl
dENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1Q
dHIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICByZXNl
dENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIFRydXN0ZWRJbW1QdHIg
YXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMo
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
VHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Cisg
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmc0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFy
ZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRz
KCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmc0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmc0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFy
Z3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAg
ICB9CisjZW5kaWYgLy8gIU5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAvLyBUaGVz
ZSBtZXRob2RzIGFyZSBzdWl0YWJsZSBmb3IgYW55IGNhbGxpbmcgY29udmVudGlvbiB0aGF0IHBy
b3ZpZGVzIGZvcgorICAgIC8vIGF0IGxlYXN0IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIFg4
Nl82NCwgQVJNdjcuCisjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0CisgICAg
dGVtcGxhdGU8R1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEI+CisgICAgdm9pZCBzZXR1cFR3b1N0
dWJBcmdzKEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQikKKyAgICB7CisgICAgICAgIC8vIEFzc3Vt
aW5nIHRoYXQgc3JjQSAhPSBzcmNCLCB0aGVyZSBhcmUgNyBpbnRlcmVzdGluZyBzdGF0ZXMgdGhl
IHJlZ2lzdGVycyBtYXkgYmUgaW46CisgICAgICAgIC8vICgxKSBib3RoIGFyZSBhbHJlYWR5IGlu
IGFyZyByZWdzLCB0aGUgcmlnaHQgd2F5IGFyb3VuZC4KKyAgICAgICAgLy8gKDIpIGJvdGggYXJl
IGFscmVhZHkgaW4gYXJnIHJlZ3MsIHRoZSB3cm9uZyB3YXkgYXJvdW5kLgorICAgICAgICAvLyAo
MykgbmVpdGhlciBhcmUgY3VycmVudGx5IGluIGFyZyByZWdpc3RlcnMuCisgICAgICAgIC8vICg0
KSBzcmNBIGluIGluIGl0cyBjb3JyZWN0IHJlZy4KKyAgICAgICAgLy8gKDUpIHNyY0EgaW4gaW4g
dGhlIGluY29ycmVjdCByZWcuCisgICAgICAgIC8vICg2KSBzcmNCIGluIGluIGl0cyBjb3JyZWN0
IHJlZy4KKyAgICAgICAgLy8gKDcpIHNyY0IgaW4gaW4gdGhlIGluY29ycmVjdCByZWcuCisgICAg
ICAgIC8vCisgICAgICAgIC8vIFRoZSB0cml2aWFsIGFwcHJvYWNoIGlzIHRvIHNpbXBseSBlbWl0
IHR3byBtb3ZlcywgdG8gcHV0IHNyY0EgaW4gcGxhY2UgdGhlbiBzcmNCIGluCisgICAgICAgIC8v
IHBsYWNlICh0aGUgTWFjcm9Bc3NlbWJsZXIgd2lsbCBvbWl0IHJlZHVuZGFudCBtb3ZlcykuIFRo
aXMgYXBwb3JhY2ggd2lsbCBiZSBzYWZlIGluCisgICAgICAgIC8vIGNhc2VzIDEsIDMsIDQsIDUs
IDYsIGFuZCBpbiBjYXNlcyB3aGVyZSBzcmNBPT1zcmNCLiBUaGUgdHdvIHByb2JsZW0gY2FzZXMg
YXJlIDIKKyAgICAgICAgLy8gKHJlcXVpcmVzIGEgc3dhcCkgYW5kIDcgKG11c3QgbW92ZSBzcmNC
IGZpcnN0LCB0byBhdm9pZCB0cmFtcGxpbmcuKQorCisgICAgICAgIGlmIChzcmNCICE9IGRlc3RB
KSB7CisgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGVhc3kgY2FzZXMgLSB0d28gc2ltcGxlIG1v
dmVzLgorICAgICAgICAgICAgbW92ZShzcmNBLCBkZXN0QSk7CisgICAgICAgICAgICBtb3ZlKHNy
Y0IsIGRlc3RCKTsKKyAgICAgICAgfSBlbHNlIGlmIChzcmNBICE9IGRlc3RCKSB7CisgICAgICAg
ICAgICAvLyBIYW5kbGUgdGhlIG5vbi1zd2FwIGNhc2UgLSBqdXN0IHB1dCBzcmNCIGluIHBsYWNl
IGZpcnN0LgorICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0Qik7CisgICAgICAgICAgICBtb3Zl
KHNyY0EsIGRlc3RBKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzd2FwKGRlc3RBLCBk
ZXN0Qik7CisgICAgfQorI2lmIENQVShYODZfNjQpCisgICAgdGVtcGxhdGU8RlBSUmVnIGRlc3RB
LCBGUFJSZWcgZGVzdEI+CisgICAgdm9pZCBzZXR1cFR3b1N0dWJBcmdzKEZQUlJlZyBzcmNBLCBG
UFJSZWcgc3JjQikKKyAgICB7CisgICAgICAgIC8vIEFzc3VtaW5nIHRoYXQgc3JjQSAhPSBzcmNC
LCB0aGVyZSBhcmUgNyBpbnRlcmVzdGluZyBzdGF0ZXMgdGhlIHJlZ2lzdGVycyBtYXkgYmUgaW46
CisgICAgICAgIC8vICgxKSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUgcmlnaHQg
d2F5IGFyb3VuZC4KKyAgICAgICAgLy8gKDIpIGJvdGggYXJlIGFscmVhZHkgaW4gYXJnIHJlZ3Ms
IHRoZSB3cm9uZyB3YXkgYXJvdW5kLgorICAgICAgICAvLyAoMykgbmVpdGhlciBhcmUgY3VycmVu
dGx5IGluIGFyZyByZWdpc3RlcnMuCisgICAgICAgIC8vICg0KSBzcmNBIGluIGluIGl0cyBjb3Jy
ZWN0IHJlZy4KKyAgICAgICAgLy8gKDUpIHNyY0EgaW4gaW4gdGhlIGluY29ycmVjdCByZWcuCisg
ICAgICAgIC8vICg2KSBzcmNCIGluIGluIGl0cyBjb3JyZWN0IHJlZy4KKyAgICAgICAgLy8gKDcp
IHNyY0IgaW4gaW4gdGhlIGluY29ycmVjdCByZWcuCisgICAgICAgIC8vCisgICAgICAgIC8vIFRo
ZSB0cml2aWFsIGFwcHJvYWNoIGlzIHRvIHNpbXBseSBlbWl0IHR3byBtb3ZlcywgdG8gcHV0IHNy
Y0EgaW4gcGxhY2UgdGhlbiBzcmNCIGluCisgICAgICAgIC8vIHBsYWNlICh0aGUgTWFjcm9Bc3Nl
bWJsZXIgd2lsbCBvbWl0IHJlZHVuZGFudCBtb3ZlcykuIFRoaXMgYXBwb3JhY2ggd2lsbCBiZSBz
YWZlIGluCisgICAgICAgIC8vIGNhc2VzIDEsIDMsIDQsIDUsIDYsIGFuZCBpbiBjYXNlcyB3aGVy
ZSBzcmNBPT1zcmNCLiBUaGUgdHdvIHByb2JsZW0gY2FzZXMgYXJlIDIKKyAgICAgICAgLy8gKHJl
cXVpcmVzIGEgc3dhcCkgYW5kIDcgKG11c3QgbW92ZSBzcmNCIGZpcnN0LCB0byBhdm9pZCB0cmFt
cGxpbmcuKQorCisgICAgICAgIGlmIChzcmNCICE9IGRlc3RBKSB7CisgICAgICAgICAgICAvLyBI
YW5kbGUgdGhlIGVhc3kgY2FzZXMgLSB0d28gc2ltcGxlIG1vdmVzLgorICAgICAgICAgICAgbW92
ZURvdWJsZShzcmNBLCBkZXN0QSk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKHNyY0IsIGRlc3RC
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYg
KHNyY0EgIT0gZGVzdEIpIHsKKyAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgbm9uLXN3YXAgY2Fz
ZSAtIGp1c3QgcHV0IHNyY0IgaW4gcGxhY2UgZmlyc3QuCisgICAgICAgICAgICBtb3ZlRG91Ymxl
KHNyY0IsIGRlc3RCKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoc3JjQSwgZGVzdEEpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHNyY0IgPT0gZGVz
dEEgJiYgc3JjQSA9PSBkZXN0Qik7CisgICAgICAgIC8vIE5lZWQgdG8gc3dhcDsgcGljayBhIHRl
bXBvcmFyeSByZWdpc3Rlci4KKyAgICAgICAgRlBSUmVnIHRlbXA7CisgICAgICAgIGlmIChkZXN0
QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjMgJiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRG
UFIzKQorICAgICAgICAgICAgdGVtcCA9IEZQUkluZm86OmFyZ3VtZW50RlBSMzsKKyAgICAgICAg
ZWxzZSBpZiAoZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIyICYmIGRlc3RBICE9IEZQUklu
Zm86OmFyZ3VtZW50RlBSMikKKyAgICAgICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQ
UjI7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGRlc3RBICE9IEZQUkluZm86
OmFyZ3VtZW50RlBSMSAmJiBkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAg
ICAgICAgdGVtcCA9IEZQUkluZm86OmFyZ3VtZW50RlBSMTsKKyAgICAgICAgfQorICAgICAgICBt
b3ZlRG91YmxlKGRlc3RBLCB0ZW1wKTsKKyAgICAgICAgbW92ZURvdWJsZShkZXN0QiwgZGVzdEEp
OworICAgICAgICBtb3ZlRG91YmxlKHRlbXAsIGRlc3RCKTsKKyAgICB9CisjZW5kaWYKKyAgICB2
b2lkIHNldHVwU3R1YkFyZ3VtZW50cyhHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgewor
ICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyPihhcmcxLCBhcmcyKTsKKyAgICB9CisgICAgdm9pZCBzZXR1cFN0dWJBcmd1
bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAg
ICAgIC8vIElmIG5laXRoZXIgb2YgYXJnMi9hcmczIGFyZSBpbiBvdXIgd2F5LCB0aGVuIHdlIGNh
biBtb3ZlIGFyZzEgaW50byBwbGFjZS4KKyAgICAgICAgLy8gVGhlbiB3ZSBjYW4gdXNlIHNldHVw
VHdvU3R1YkFyZ3MgdG8gZml4IGFyZzIvYXJnMy4KKyAgICAgICAgaWYgKGFyZzIgIT0gR1BSSW5m
bzo6YXJndW1lbnRHUFIxICYmIGFyZzMgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKSB7CisgICAg
ICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgICAgICBz
ZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRH
UFIzPihhcmcyLCBhcmczKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIElmIG5laXRoZXIgb2YgYXJnMS9hcmczIGFyZSBpbiBvdXIgd2F5LCB0aGVuIHdlIGNh
biBtb3ZlIGFyZzIgaW50byBwbGFjZS4KKyAgICAgICAgLy8gVGhlbiB3ZSBjYW4gdXNlIHNldHVw
VHdvU3R1YkFyZ3MgdG8gZml4IGFyZzEvYXJnMy4KKyAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5m
bzo6YXJndW1lbnRHUFIyICYmIGFyZzMgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIyKSB7CisgICAg
ICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgICAgICBz
ZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIzPihhcmcxLCBhcmczKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIElmIG5laXRoZXIgb2YgYXJnMS9hcmcyIGFyZSBpbiBvdXIgd2F5LCB0aGVuIHdlIGNh
biBtb3ZlIGFyZzMgaW50byBwbGFjZS4KKyAgICAgICAgLy8gVGhlbiB3ZSBjYW4gdXNlIHNldHVw
VHdvU3R1YkFyZ3MgdG8gZml4IGFyZzEvYXJnMi4KKyAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5m
bzo6YXJndW1lbnRHUFIzICYmIGFyZzIgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7CisgICAg
ICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgICAgICBz
ZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyPihhcmcxLCBhcmcyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIElmIHdlIGdldCBoZXJlLCB3ZSBoYXZlbid0IGJlZW4gYWJsZSB0byBtb3ZlIGFueSBv
ZiBhcmcxL2FyZzIvYXJnMy4KKyAgICAgICAgLy8gU2luY2UgYWxsIHRocmVlIGFyZSBibG9ja2Vk
LCB0aGVuIGFsbCB0aHJlZSBtdXN0IGFscmVhZHkgYmUgaW4gdGhlIGFyZ3VtZW50IHJlZ2lzdGVy
LgorICAgICAgICAvLyBCdXQgYXJlIHRoZXkgaW4gdGhlIHJpZ2h0IG9uZXM/CisKKyAgICAgICAg
Ly8gRmlyc3QsIGVuc3VyZSBhcmcxIGlzIGluIHBsYWNlLgorICAgICAgICBpZiAoYXJnMSAhPSBH
UFJJbmZvOjphcmd1bWVudEdQUjEpIHsKKyAgICAgICAgICAgIHN3YXAoYXJnMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKworICAgICAgICAgICAgLy8gSWYgYXJnMSB3YXNuJ3QgaW4gYXJndW1l
bnRHUFIxLCBvbmUgb2YgYXJnMi9hcmczIG11c3QgYmUuCisgICAgICAgICAgICBBU1NFUlQoYXJn
MiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOworICAgICAgICAgICAgLy8gSWYgYXJnMiB3YXMgaW4gYXJndW1lbnRHUFIxIGl0IG5vIGxv
bmdlciBpcyAoZHVlIHRvIHRoZSBzd2FwKS4KKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSBhcmcz
IG11c3QgaGF2ZSBiZWVuLiBNYXJrIGhpbSBhcyBtb3ZlZC4KKyAgICAgICAgICAgIGlmIChhcmcy
ID09IEdQUkluZm86OmFyZ3VtZW50R1BSMSkKKyAgICAgICAgICAgICAgICBhcmcyID0gYXJnMTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhcmczID0gYXJnMTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEVpdGhlciBhcmcyICYgYXJnMyBuZWVkIHN3YXBwaW5nLCBvciB3ZSdy
ZSBhbGwgZG9uZS4KKyAgICAgICAgQVNTRVJUKChhcmcyID09IEdQUkluZm86OmFyZ3VtZW50R1BS
MiB8fCBhcmczID09IEdQUkluZm86OmFyZ3VtZW50R1BSMykKKyAgICAgICAgICAgIHx8IChhcmcy
ID09IEdQUkluZm86OmFyZ3VtZW50R1BSMyB8fCBhcmczID09IEdQUkluZm86OmFyZ3VtZW50R1BS
MikpOworCisgICAgICAgIGlmIChhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMikKKyAgICAg
ICAgICAgIHN3YXAoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMp
OworICAgIH0KKworI2lmIENQVShYODZfNjQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzKEZQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBz
ZXR1cFR3b1N0dWJBcmdzPEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRG
UFIxPihhcmcxLCBhcmcyKTsKKyAgICB9CisjZWxzZQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZt
b3YoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJn
MSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKKyAgICAgICAgYXNz
ZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MywgYXJnMik7CisgICAgfQorI2VuZGlmCisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNFeGVjU3RhdGUoKQorICAgIHsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxKQorICAg
IHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0ciBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQor
ICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUo
YXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcg
YXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsg
Ly8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKKyAg
ICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShh
cmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJ
bW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAg
ICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgbW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCisgICAgeworICAgICAg
ICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoYXJnMywgR1BS
SW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1t
MzIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMik7CisgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAg
ICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQor
ICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBt
b3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAg
bW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFyZzIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1l
bnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTID49IDQKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzdWl0YWJsZSBmb3IgYW55
IGNhbGxpbmcgY29udmVudGlvbiB0aGF0IHByb3ZpZGVzIGZvcgorICAgIC8vIGV4YWN0bHkgNCBh
cmd1bWVudCByZWdpc3RlcnMsIGUuZy4gQVJNdjcuCisjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JF
R0lTVEVSUyA9PSA0CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQorICAgIHsKKyAgICAgICAg
cG9rZShhcmc0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQpOworICAgICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisg
ICAgeworICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tl
KGFyZzUsIDEpOworICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorI2VuZGlmIC8vIE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAorfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdDQ2FsbEhlbHBl
cnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CShyZXZpc2lvbiAxMDUwMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDxhc3Nl
bWJsZXIvTGlua0J1ZmZlci5oPgogI2luY2x1ZGUgPGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
PgogI2luY2x1ZGUgPGJ5dGVjb2RlL0NvZGVCbG9jay5oPgotI2luY2x1ZGUgPGRmZy9ERkdBc3Nl
bWJseUhlbHBlcnMuaD4KKyNpbmNsdWRlIDxkZmcvREZHQ0NhbGxIZWxwZXJzLmg+CiAjaW5jbHVk
ZSA8ZGZnL0RGR0ZQUkluZm8uaD4KICNpbmNsdWRlIDxkZmcvREZHR1BSSW5mby5oPgogI2luY2x1
ZGUgPGRmZy9ERkdHcmFwaC5oPgpAQCAtMTQ3LDEwICsxNDcsMTAgQEAgc3RydWN0IFByb3BlcnR5
QWNjZXNzUmVjb3JkIHsKIC8vIHJlbGF0aW9uc2hpcCkuIFRoZSBKSVRDb21waWxlciBob2xkcyBy
ZWZlcmVuY2VzIHRvIGluZm9ybWF0aW9uIHJlcXVpcmVkIGR1cmluZwogLy8gY29tcGlsYXRpb24s
IGFuZCBhbHNvIHJlY29yZHMgaW5mb3JtYXRpb24gdXNlZCBpbiBsaW5raW5nIChlLmcuIGEgbGlz
dCBvZiBhbGwKIC8vIGNhbGwgdG8gYmUgbGlua2VkKS4KLWNsYXNzIEpJVENvbXBpbGVyIDogcHVi
bGljIEFzc2VtYmx5SGVscGVycyB7CitjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhl
bHBlcnMgewogcHVibGljOgogICAgIEpJVENvbXBpbGVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgR3JhcGgmIGRmZywgQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgICAgIDogQXNzZW1ibHlI
ZWxwZXJzKGdsb2JhbERhdGEsIGNvZGVCbG9jaykKKyAgICAgICAgOiBDQ2FsbEhlbHBlcnMoZ2xv
YmFsRGF0YSwgY29kZUJsb2NrKQogICAgICAgICAsIG1fZ3JhcGgoZGZnKQogICAgIHsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CShyZXZpc2lvbiAxMDUwMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNjAsNDU3ICsxMDYwLDYgQEAgcHJpdmF0
ZToKICAgICAgICAgbV9nZW5lcmF0aW9uSW5mb1tub2RlLnZpcnR1YWxSZWdpc3RlcigpXS5pbml0
Q29uc3RhbnQobm9kZUluZGV4LCBub2RlLnJlZkNvdW50KCkpOwogICAgIH0KICAgICAKLSAgICAv
LyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVudHMgaW50byB0aGUgY29ycmVjdCBy
ZWdpc3RlcnMuCi0gICAgLy8gT24gWDg2IHdlIHVzZSBjZGVjbCBjYWxsaW5nIGNvbnZlbnRpb25z
LCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCi0gICAgLy8gc3RhY2suIE9uIG90aGVy
IGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2YWx1ZXMgaW50byB0aGUKLSAgICAv
LyBjb3JyZWN0IHJlZ2lzdGVycy4KLSNpZiAhTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUwot
ICAgIHVuc2lnbmVkIG1fY2FsbEFyZ3VtZW50T2Zmc2V0OwotICAgIHZvaWQgcmVzZXRDYWxsQXJn
dW1lbnRzKCkgeyBtX2NhbGxBcmd1bWVudE9mZnNldCA9IDA7IH0KLQotICAgIC8vIFRoZXNlIG1l
dGhvZHMgYXJlIHVzaW5nIGludGVybmFsbHkgdG8gaW1wbGVtZW50IHRoZSBjYWxsT3BlcmF0aW9u
IG1ldGhvZHMuCi0gICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoR1BSUmVnIHZhbHVlKQotICAgIHsK
LSAgICAgICAgbV9qaXQucG9rZSh2YWx1ZSwgbV9jYWxsQXJndW1lbnRPZmZzZXQrKyk7Ci0gICAg
fQotICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KFRydXN0ZWRJbW0zMiBpbW0pCi0gICAgewotICAg
ICAgICBtX2ppdC5wb2tlKGltbSwgbV9jYWxsQXJndW1lbnRPZmZzZXQrKyk7Ci0gICAgfQotICAg
IHZvaWQgYWRkQ2FsbEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIgcG9pbnRlcikKLSAgICB7Ci0gICAg
ICAgIG1faml0LnBva2UocG9pbnRlciwgbV9jYWxsQXJndW1lbnRPZmZzZXQrKyk7Ci0gICAgfQot
ICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEZQUlJlZyB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIG1f
aml0LnN0b3JlRG91YmxlKHZhbHVlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhKSVRDb21waWxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0ICogc2l6ZW9mKHZvaWQq
KSkpOwotICAgICAgICBtX2NhbGxBcmd1bWVudE9mZnNldCArPSBzaXplb2YoZG91YmxlKSAvIHNp
emVvZih2b2lkKik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzKEZQUlJlZyBhcmcxKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0g
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQotICAgIHsKLSAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcx
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpCi0gICAgewotICAgICAgICByZXNl
dENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxs
QXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIgYXJnMSkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCi0gICAgewot
ICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEp
OwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3Rl
ZEltbVB0ciBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwot
ICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQotICAgIHsKLSAgICAgICAg
cmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVk
SW1tUHRyIGFyZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAg
cmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKLSAgICB7
Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
MSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1t
UHRyIGFyZzMpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmc0KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0z
MiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3Vt
ZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFy
ZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFy
Z3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCi0gICAgewotICAgICAgICByZXNldENh
bGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7
Ci0gICAgfQotI2VuZGlmIC8vICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCi0gICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhh
dCBwcm92aWRlcyBmb3IKLSAgICAvLyBhdCBsZWFzdCA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5n
LiBYODZfNjQsIEFSTXY3LgotI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAot
ICAgIHRlbXBsYXRlPEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCPgotICAgIHZvaWQgc2V0dXBU
d29TdHViQXJncyhHUFJSZWcgc3JjQSwgR1BSUmVnIHNyY0IpCi0gICAgewotICAgICAgICAvLyBB
c3N1bWluZyB0aGF0IHNyY0EgIT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVz
IHRoZSByZWdpc3RlcnMgbWF5IGJlIGluOgotICAgICAgICAvLyAoMSkgYm90aCBhcmUgYWxyZWFk
eSBpbiBhcmcgcmVncywgdGhlIHJpZ2h0IHdheSBhcm91bmQuCi0gICAgICAgIC8vICgyKSBib3Ro
IGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4KLSAgICAgICAg
Ly8gKDMpIG5laXRoZXIgYXJlIGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgotICAgICAgICAv
LyAoNCkgc3JjQSBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0gICAgICAgIC8vICg1KSBzcmNBIGlu
IGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAvLyAoNikgc3JjQiBpbiBpbiBpdHMgY29y
cmVjdCByZWcuCi0gICAgICAgIC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgot
ICAgICAgICAvLwotICAgICAgICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0byBzaW1wbHkg
ZW1pdCB0d28gbW92ZXMsIHRvIHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBpbgotICAgICAg
ICAvLyBwbGFjZSAodGhlIE1hY3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRhbnQgbW92ZXMp
LiBUaGlzIGFwcG9yYWNoIHdpbGwgYmUgc2FmZSBpbgotICAgICAgICAvLyBjYXNlcyAxLCAzLCA0
LCA1LCA2LCBhbmQgaW4gY2FzZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNh
c2VzIGFyZSAyCi0gICAgICAgIC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0IG1vdmUg
c3JjQiBmaXJzdCwgdG8gYXZvaWQgdHJhbXBsaW5nLikKLQotICAgICAgICBpZiAoc3JjQiAhPSBk
ZXN0QSkgewotICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBs
ZSBtb3Zlcy4KLSAgICAgICAgICAgIG1faml0Lm1vdmUoc3JjQSwgZGVzdEEpOwotICAgICAgICAg
ICAgbV9qaXQubW92ZShzcmNCLCBkZXN0Qik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBk
ZXN0QikgewotICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBw
dXQgc3JjQiBpbiBwbGFjZSBmaXJzdC4KLSAgICAgICAgICAgIG1faml0Lm1vdmUoc3JjQiwgZGVz
dEIpOwotICAgICAgICAgICAgbV9qaXQubW92ZShzcmNBLCBkZXN0QSk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgbV9qaXQuc3dhcChkZXN0QSwgZGVzdEIpOwotICAgIH0KLSNpZiBDUFUo
WDg2XzY0KQotICAgIHRlbXBsYXRlPEZQUlJlZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgotICAgIHZv
aWQgc2V0dXBUd29TdHViQXJncyhGUFJSZWcgc3JjQSwgRlBSUmVnIHNyY0IpCi0gICAgewotICAg
ICAgICAvLyBBc3N1bWluZyB0aGF0IHNyY0EgIT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rp
bmcgc3RhdGVzIHRoZSByZWdpc3RlcnMgbWF5IGJlIGluOgotICAgICAgICAvLyAoMSkgYm90aCBh
cmUgYWxyZWFkeSBpbiBhcmcgcmVncywgdGhlIHJpZ2h0IHdheSBhcm91bmQuCi0gICAgICAgIC8v
ICgyKSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4K
LSAgICAgICAgLy8gKDMpIG5laXRoZXIgYXJlIGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgot
ICAgICAgICAvLyAoNCkgc3JjQSBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0gICAgICAgIC8vICg1
KSBzcmNBIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAvLyAoNikgc3JjQiBpbiBp
biBpdHMgY29ycmVjdCByZWcuCi0gICAgICAgIC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJl
Y3QgcmVnLgotICAgICAgICAvLwotICAgICAgICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0
byBzaW1wbHkgZW1pdCB0d28gbW92ZXMsIHRvIHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBp
bgotICAgICAgICAvLyBwbGFjZSAodGhlIE1hY3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRh
bnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNoIHdpbGwgYmUgc2FmZSBpbgotICAgICAgICAvLyBjYXNl
cyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4gY2FzZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBw
cm9ibGVtIGNhc2VzIGFyZSAyCi0gICAgICAgIC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3ICht
dXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8gYXZvaWQgdHJhbXBsaW5nLikKLQotICAgICAgICBpZiAo
c3JjQiAhPSBkZXN0QSkgewotICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0g
dHdvIHNpbXBsZSBtb3Zlcy4KLSAgICAgICAgICAgIG1faml0Lm1vdmVEb3VibGUoc3JjQSwgZGVz
dEEpOwotICAgICAgICAgICAgbV9qaXQubW92ZURvdWJsZShzcmNCLCBkZXN0Qik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChzcmNBICE9IGRl
c3RCKSB7Ci0gICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5vbi1zd2FwIGNhc2UgLSBqdXN0IHB1
dCBzcmNCIGluIHBsYWNlIGZpcnN0LgotICAgICAgICAgICAgbV9qaXQubW92ZURvdWJsZShzcmNC
LCBkZXN0Qik7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKHNyY0EsIGRlc3RBKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChzcmNCID09IGRl
c3RBICYmIHNyY0EgPT0gZGVzdEIpOwotICAgICAgICAvLyBOZWVkIHRvIHN3YXA7IHBpY2sgYSB0
ZW1wb3JhcnkgcmVnaXN0ZXIuCi0gICAgICAgIEZQUlJlZyB0ZW1wOwotICAgICAgICBpZiAoZGVz
dEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIzICYmIGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50
RlBSMykKLSAgICAgICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjM7Ci0gICAgICAg
IGVsc2UgaWYgKGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMiAmJiBkZXN0QSAhPSBGUFJJ
bmZvOjphcmd1bWVudEZQUjIpCi0gICAgICAgICAgICB0ZW1wID0gRlBSSW5mbzo6YXJndW1lbnRG
UFIyOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChkZXN0QSAhPSBGUFJJbmZv
Ojphcmd1bWVudEZQUjEgJiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICAg
ICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjE7Ci0gICAgICAgIH0KLSAgICAgICAg
bV9qaXQubW92ZURvdWJsZShkZXN0QSwgdGVtcCk7Ci0gICAgICAgIG1faml0Lm1vdmVEb3VibGUo
ZGVzdEIsIGRlc3RBKTsKLSAgICAgICAgbV9qaXQubW92ZURvdWJsZSh0ZW1wLCBkZXN0Qik7Ci0g
ICAgfQotI2VuZGlmCi0gICAgdm9pZCBzZXR1cFN0dWJBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1
bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMj4oYXJnMSwgYXJnMik7Ci0gICAgfQotICAg
IHZvaWQgc2V0dXBTdHViQXJndW1lbnRzKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVn
IGFyZzMpCi0gICAgewotICAgICAgICAvLyBJZiBuZWl0aGVyIG9mIGFyZzIvYXJnMyBhcmUgaW4g
b3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmcxIGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRo
ZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdzIHRvIGZpeCBhcmcyL2FyZzMuCi0gICAgICAg
IGlmIChhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSAmJiBhcmczICE9IEdQUkluZm86OmFy
Z3VtZW50R1BSMSkgewotICAgICAgICAgICAgbV9qaXQubW92ZShhcmcxLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOwotICAgICAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVu
dEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMiwgYXJnMyk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBuZWl0aGVyIG9mIGFyZzEvYXJnMyBh
cmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmcyIGludG8gcGxhY2UuCi0gICAgICAg
IC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdzIHRvIGZpeCBhcmcxL2FyZzMuCi0g
ICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiBhcmczICE9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMikgewotICAgICAgICAgICAgbV9qaXQubW92ZShhcmcyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIpOwotICAgICAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjph
cmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJnMyk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBuZWl0aGVyIG9mIGFyZzEv
YXJnMiBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmczIGludG8gcGxhY2UuCi0g
ICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdzIHRvIGZpeCBhcmcxL2Fy
ZzIuCi0gICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMyAmJiBhcmcyICE9
IEdQUkluZm86OmFyZ3VtZW50R1BSMykgewotICAgICAgICAgICAgbV9qaXQubW92ZShhcmczLCBH
UFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMj4oYXJnMSwgYXJnMik7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB3ZSBnZXQgaGVy
ZSwgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gbW92ZSBhbnkgb2YgYXJnMS9hcmcyL2FyZzMuCi0g
ICAgICAgIC8vIFNpbmNlIGFsbCB0aHJlZSBhcmUgYmxvY2tlZCwgdGhlbiBhbGwgdGhyZWUgbXVz
dCBhbHJlYWR5IGJlIGluIHRoZSBhcmd1bWVudCByZWdpc3Rlci4KLSAgICAgICAgLy8gQnV0IGFy
ZSB0aGV5IGluIHRoZSByaWdodCBvbmVzPwotCi0gICAgICAgIC8vIEZpcnN0LCBlbnN1cmUgYXJn
MSBpcyBpbiBwbGFjZS4KLSAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSB7Ci0gICAgICAgICAgICBtX2ppdC5zd2FwKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0KLSAgICAgICAgICAgIC8vIElmIGFyZzEgd2Fzbid0IGluIGFyZ3VtZW50R1BSMSwgb25lIG9m
IGFyZzIvYXJnMyBtdXN0IGJlLgotICAgICAgICAgICAgQVNTRVJUKGFyZzIgPT0gR1BSSW5mbzo6
YXJndW1lbnRHUFIxIHx8IGFyZzMgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAg
ICAgIC8vIElmIGFyZzIgd2FzIGluIGFyZ3VtZW50R1BSMSBpdCBubyBsb25nZXIgaXMgKGR1ZSB0
byB0aGUgc3dhcCkuCi0gICAgICAgICAgICAvLyBPdGhlcndpc2UgYXJnMyBtdXN0IGhhdmUgYmVl
bi4gTWFyayBoaW0gYXMgbW92ZWQuCi0gICAgICAgICAgICBpZiAoYXJnMiA9PSBHUFJJbmZvOjph
cmd1bWVudEdQUjEpCi0gICAgICAgICAgICAgICAgYXJnMiA9IGFyZzE7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgYXJnMyA9IGFyZzE7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBFaXRoZXIgYXJnMiAmIGFyZzMgbmVlZCBzd2FwcGluZywgb3Igd2UncmUgYWxsIGRvbmUuCi0g
ICAgICAgIEFTU0VSVCgoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgfHwgYXJnMyA9PSBH
UFJJbmZvOjphcmd1bWVudEdQUjMpCi0gICAgICAgICAgICB8fCAoYXJnMiA9PSBHUFJJbmZvOjph
cmd1bWVudEdQUjMgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKLQotICAgICAg
ICBpZiAoYXJnMiAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjIpCi0gICAgICAgICAgICBtX2ppdC5z
d2FwKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAgICB9
Ci0KLSNpZiBDUFUoWDg2XzY0KQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
cyhGUFJSZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIG1faml0Lm1vdmVEb3VibGUoYXJnMSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgc2V0
dXBUd29TdHViQXJnczxGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBS
MT4oYXJnMSwgYXJnMik7Ci0gICAgfQotI2Vsc2UKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBtX2ppdC5hc3NlbWJsZXIo
KS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcx
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVn
IGFyZzEsIEZQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgbV9qaXQuYXNzZW1ibGVyKCkudm1v
dihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgYXJnMSk7Ci0g
ICAgICAgIG1faml0LmFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMsIGFyZzIpOwotICAgIH0KLSNlbmRpZgotCi0gICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkKLSAgICB7Ci0gICAgICAgIG1faml0
Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJnMSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSkK
LSAgICB7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
LSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAg
ICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbV9qaXQubW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCi0gICAgewotICAgICAgICBtX2ppdC5tb3Zl
KGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJnMiwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIg
YXJnMSwgR1BSUmVnIGFyZzIpCi0gICAgewotICAgICAgICBtX2ppdC5tb3ZlKGFyZzIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMik7IC8vIE1vdmUgdGhpcyBmaXJzdCwgc28gc2V0dGluZyBhcmcxIGRv
ZXMgbm90IHRyYW1wbGUhCi0gICAgICAgIG1faml0Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1t
MzIgYXJnMikKLSAgICB7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
OwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tUHRyIGFy
ZzIpCi0gICAgewotICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAg
ICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCi0g
ICAgewotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAg
ICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmcz
KQotICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOwotICAgICAg
ICBtX2ppdC5tb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIG1faml0
Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykK
LSAgICB7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
LSAgICAgICAgbV9qaXQubW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAg
ICBtX2ppdC5tb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIG1faml0
Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKLSAgICB7
Ci0gICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbV9qaXQu
bW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0K
LQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0g
ICAgICAgIG1faml0Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAg
bV9qaXQubW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtX2ppdC5t
b3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQot
Ci0jZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0Ci0gICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBw
cm92aWRlcyBmb3IKLSAgICAvLyBleGFjdGx5IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIEFS
TXY3LgotI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICBtX2ppdC5w
b2tlKGFyZzQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmcz
LCBUcnVzdGVkSW1tMzIgYXJnNCkKLSAgICB7Ci0gICAgICAgIG1faml0LnBva2UoYXJnNCk7Ci0g
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJl
ZyBhcmc0KQotICAgIHsKLSAgICAgICAgbV9qaXQucG9rZShhcmc0KTsKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQotICAgIHsKLSAg
ICAgICAgbV9qaXQucG9rZShhcmc0KTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQotICAgIHsKLSAgICAgICAgbV9qaXQu
cG9rZShhcmc1LCAxKTsKLSAgICAgICAgbV9qaXQucG9rZShhcmc0KTsKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLSNlbmRpZiAv
LyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKLQogICAgIC8vIFRoZXNlIG1ldGhv
ZHMgYWRkIGNhbGxzIHRvIEMrKyBoZWxwZXIgZnVuY3Rpb25zLgogICAgIC8vIFRoZXNlIG1ldGhv
ZHMgYXJlIGJyb2FkbHkgdmFsdWUgcmVwcmVzZW50YXRpb24gc3BlY2lmaWMgKGkuZS4KICAgICAv
LyBkZWFsIHdpdGggdGhlIGZhY3QgdGhhdCBhIEpTVmFsdWUgbWF5IGJlIHBhc3NlZCBpbiBvbmUg
b3IgdHdvCkBAIC0xNTE5LDMxNCArMTA2OCwzMTQgQEAgcHJpdmF0ZToKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25f
RVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCB2b2lkKiBwb2ludGVyKQogICAgIHsKLSAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihw
b2ludGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihaX0RGR09wZXJhdGlvbl9EIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
RlBSUmVnIGFyZzEpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJnMSk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgICAgIG1faml0Lnplcm9F
eHRlbmQzMlRvUHRyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICBy
ZXR1cm4gY2FsbDsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0RGR09wZXJhdGlvbl9FR0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwg
SWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRp
ZmllcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBJ
ZGVudGlmaWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0RGR09wZXJhdGlvbl9FQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQog
ICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJh
dGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCB2b2lkKiBwb2ludGVyLCBzaXplX3Qg
c2l6ZSkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJ
bW1QdHIoc2l6ZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVNTIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgaW50IHN0YXJ0Q29uc3RhbnQsIGludCBudW1Db25zdGFudHMpCiAgICAgewotICAgICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoSW1tMzIoc3RhcnRDb25zdGFudCksIEltbTMy
KG51bUNvbnN0YW50cykpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoSW1tMzIoc3RhcnRDb25zdGFudCksIEltbTMyKG51bUNvbnN0YW50cykpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdP
cGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIHZvaWQq
IHBvaW50ZXIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3Bl
cmF0aW9uX0VDSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBJZGVudGlm
aWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0RGR09wZXJhdGlvbl9FSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
YXJnMSwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIo
aWRlbnRpZmllcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpBIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUCBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlv
bl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FQ0Mgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsK
LSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
VHJ1c3RlZEltbVB0cihjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0RGR09wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihTX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VQUCBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0g
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdP
cGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIE1hY3Jv
QXNzZW1ibGVyOjpJbW0zMiBpbW0pCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihzdGF0aWNfY2FzdDxjb25zdCB2
b2lkKj4oSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGltbS5tX3ZhbHVlKSkpKSk7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6
SW1tUHRyKHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
aW1tLm1fdmFsdWUpKSkpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMiBpbW0sIEdQUlJlZyBhcmcyKQogICAgIHsK
LSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKE1hY3JvQXNzZW1ibGVyOjpJbW1Q
dHIoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0u
bV92YWx1ZSkpKSksIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGltbS5tX3ZhbHVlKSkpKSwgYXJnMik7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09w
ZXJhdGlvbl9FQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VKUFAgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIHZvaWQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1t
UHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0RGR09wZXJhdGlvbl9FSkNJIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBJZGVudGlmaWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3Rl
ZEltbVB0cihpZGVudGlmaWVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FUFpKIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7Ci0gICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VBWkogb3BlcmF0
aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKLSAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25f
RUNKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAg
ICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3Bl
cmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0RG
R09wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAg
IHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlv
bl9ERCBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikK
ICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICNlbHNlCiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0RGR09wZXJhdGlvbl9EIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgRlBSUmVnIGFyZzEpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcx
KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJnMSk7CiAgICAgICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgICAgIG1f
aml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwog
ICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCB2b2lkKiBwb2ludGVyKQogICAgIHsKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIHZvaWQqIHBv
aW50ZXIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
VHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfREZHT3BlcmF0aW9uX0VHSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgSWRlbnRpZmllciogaWRlbnRpZmllcikK
ICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9ERkdPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJS
ZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VJ
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIElkZW50
aWZpZXIqIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJh
dGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9h
ZCwgdm9pZCogcG9pbnRlciwgc2l6ZV90IHNpemUpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSwgVHJ1c3RlZEltbVB0cihz
aXplKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfREZHT3BlcmF0aW9uX0VTUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkLCBpbnQgc3RhcnRDb25zdGFudCwgaW50IG51bUNvbnN0YW50cykKICAg
ICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoc3Rh
cnRDb25zdGFudCksIFRydXN0ZWRJbW0zMihudW1Db25zdGFudHMpKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwg
VHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3Vs
dFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdP
cGVyYXRpb25fRUpQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIHZvaWQqIHBvaW50ZXIp
CiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQs
IGFyZzFUYWcsIEltbVB0cihwb2ludGVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgSW1tUHRyKHBvaW50ZXIpKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKUCBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFy
ZzFQYXlsb2FkLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMik7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMik7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FQ0kgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIElkZW50aWZpZXIq
IGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFy
ZzFQYXlsb2FkLCBJZGVudGlmaWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRy
KGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBpbnQzMl90IGFyZzFUYWcsIEdQUlJlZyBhcmcx
UGF5bG9hZCwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcpLCBU
cnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBUcnVzdGVkSW1tMzIoYXJnMVRhZyksIFRydXN0ZWRJ
bW1QdHIoaWRlbnRpZmllcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25f
RUpBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBh
cmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXls
b2FkLCBhcmcxVGFnLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9u
X0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCiAgICAgewotICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcpOworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRUMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJ
bW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oU19ERkdPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkKQogICAgIHsKLSAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFn
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFNfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJn
MlBheWxvYWQpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5
bG9hZCwgYXJnMlRhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBh
cmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7Ci0g
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywg
YXJnMlBheWxvYWQsIGFyZzJUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFy
ZzFQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIgaW1tKQogICAgIHsKLSAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBpbW0sIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGltbSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkludDMyVGFnKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9F
Skogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgTWFj
cm9Bc3NlbWJsZXI6OkltbTMyIGltbSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9h
ZCkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShpbW0sIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGltbSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkludDMyVGFnKSwgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9ERkdPcGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BS
UmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfREZHT3BlcmF0aW9uX0VKUFAgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMVRhZywgR1BS
UmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMiwgdm9pZCogcG9pbnRlcikKICAgICB7Ci0gICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJn
MiwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMiwgVHJ1c3RlZEltbVB0cihw
b2ludGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9E
RkdPcGVyYXRpb25fRUpDSSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBh
eWxvYWQsIEdQUlJlZyBhcmcyLCBJZGVudGlmaWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcy
LCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1tUHRy
KGlkZW50aWZpZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0RGR09wZXJhdGlvbl9FQ0pKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
VGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxv
YWQpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MlBheWxvYWQsIGFyZzJUYWcsIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBh
cmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7Ci0gICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczUGF5bG9hZCwg
YXJnM1RhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUFaSiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAg
ICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
UGF5bG9hZCwgYXJnM1RhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9FSiBvcGVyYXRpb24s
IEZQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCiAgICAg
ewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFU
YWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxv
YWQsIGFyZzFUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQUlJlZyBy
ZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIHNldHVwQXJn
dW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhhcmcxLCBh
cmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICNlbmRpZgo=
</data>
<flag name="review"
          id="123416"
          type_id="1"
          status="+"
          setter="mitz"
    />
    <flag name="commit-queue"
          id="123419"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122584</attachid>
            <date>2012-01-15 19:57:41 -0800</date>
            <delta_ts>2012-01-15 19:57:41 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>ccall_patch_2.diff</filename>
            <type>text/plain</type>
            <size>66740</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDEyLTAxLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEMgY2FsbGluZyBjb252ZW50aW9uIGxvZ2ljIGluIERGRzo6U3BlY3VsYXRpdmVKSVQgc2hv
dWxkIGJlIGF2YWlsYWJsZSBldmVuCisgICAgICAgIHdoZW4gbm90IGdlbmVyYXRpbmcgY29kZSBm
b3IgdGhlIERGRyBzcGVjdWxhdGl2ZSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NjM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJu
c3RlaW4uCisgICAgICAgIAorICAgICAgICBNb3ZlZCBhbGwgb2YgdGhlIGxvZ2ljIGZvciBwbGFj
aW5nIEMgY2FsbCBhcmd1bWVudHMgaW50byB0aGUgcmlnaHQgcGxhY2UgKHN0YWNrCisgICAgICAg
IG9yIHJlZ2lzdGVycykgaW50byBhIG5ldyBjbGFzcywgREZHOjpDQ2FsbEhlbHBlcnMuICBUaGlz
IGNsYXNzIGluaGVyaXRzIGZyb20KKyAgICAgICAgQXNzZW1ibHlIZWxwZXJzLCBhbm90aGVyIERG
RyBncmFiLWJhZyBvZiBoZWxwZXIgZnVuY3Rpb25zLiAgSSBjb3VsZCBoYXZlIG1vdmVkCisgICAg
ICAgIHRoaXMgY29kZSBpbnRvIEFzc2VtYmx5SGVscGVycywgYnV0IGRlY2lkZWQgYWdhaW5zdCBp
dCwgYmVjYXVzZSBJIHdhbnRlZCB0bworICAgICAgICBsaW1pdCB0aGUgbnVtYmVyIG9mIG1ldGhv
ZHMgZWFjaCBjbGFzcyBpbiB0aGUgSklUIGhhcy4gIEhlbmNlIG5vdyB3ZSBoYXZlIGEKKyAgICAg
ICAgc2xpZ2h0bHkgb2RkIG9yZ2FuaXphdGlvbiBvZiBKSVQgY2xhc3NlcyBpbiBERkc6IE1hY3Jv
QXNzZW1ibGVyIChiYXNpYyBpbnN0cnVjdGlvbgorICAgICAgICBlbWlzc2lvbikgPD0gQXNzZW1i
bHlIZWxwZXJzIChzb21lIGFkZGl0aW9uYWwgSlMgc21hcnRzKSA8PSBDQ2FsbEhlbHBlcnMKKyAg
ICAgICAgKHVuZGVyc3RhbmRzIGNhbGxzIHRvIEMgZnVuY3Rpb25zKSA8PSBKSVRDb21waWxlciAo
Y2FuIGNvbXBpbGUgYSBncmFwaCB0byBtYWNoaW5lCisgICAgICAgIGNvZGUpLiAgRWFjaCBvZiB0
aGVzZSBleGNlcHQgZm9yIEpJVENvbXBpbGVyIGNhbiBiZSByZXVzZWQgZm9yIHN0dWIgY29tcGls
YXRpb24uCisgICAgICAgIAorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBk
ZmcvREZHQ0NhbGxIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVs
cGVyczo6Q0NhbGxIZWxwZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnJl
c2V0Q2FsbEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjphZGRD
YWxsQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNF
eGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVw
VHdvU3R1YkFyZ3MpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBTdHVi
QXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3Bl
cmF0aW9uKToKKwogMjAxMi0wMS0xNSAgUGFibG8gRmxvdXJldCAgPHBhYmxvZkBtb3Rvcm9sYS5j
b20+CiAKICAgICAgICAgRml4IGNvbXBpbGF0aW9uIGVycm9ycyBvbiBidWlsZC13ZWJraXQgLS1k
ZWJ1ZyAtLW5vLXZpZGVvIG9uIG1hYy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDUwMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw3IEBA
IGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVDYWNoZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29tbW9uLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDEwNTAzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4
MCwxMCBAQAogCQkwRjYyMDE3OTE0M0ZDRDQ4MDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE2
RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi87IH07CiAJCTBGNjM2
REEwMTQyRDI3RDcwMEIyRTY2QSAvKiBQYWNrZWRJbnRWZWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjM2RDlGMTQyRDI3RDIwMEIyRTY2QSAv
KiBQYWNrZWRJbnRWZWN0b3IuaCAqLzsgfTsKIAkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8q
IFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNw
cCAqLzsgfTsKKwkJMEY3QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjI5NDgx
NEMzQ0QyMzAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAv
KiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRDgyRTFGMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjdCMjk0
QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8q
IERGR0J5dGVDb2RlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3RTE0NjlF
QkM0MDBDRjI0NDIgLyogREZHQ29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5NjNCMjcxM0Y3NTNCQjAwMDJEOUIyIC8qIFJlZEJsYWNr
VHJlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5
NjNCMjYxM0Y3NTM5OTAwMDJEOUIyIC8qIFJlZEJsYWNrVHJlZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTYzQjJDMTNGODUzRUMwMDAyRDlC
MiAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOTYzQjJCMTNGODUzQzcwMDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9yLmNw
cCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLWZuby1zdHJpY3QtYWxpYXNpbmci
OyB9OyB9OwogCQkwRjk2M0IyRDEzRjg1NDAyMDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NjNCMkExM0Y4
NTNCRDAwMDJEOUIyIC8qIE1ldGFBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODUwLDYgKzg1NCw3IEBACiAJCTBGNjM2RDlGMTQy
RDI3RDIwMEIyRTY2QSAvKiBQYWNrZWRJbnRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFja2VkSW50VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0Nv
dW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxpbmdD
b3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QjI5NDgxNEMzQ0Qy
MzAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdDQ2FsbEhlbHBlcnMuaDsgcGF0aCA9IGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NjNCMjYxM0Y3NTM5OTAwMDJEOUIyIC8q
IFJlZEJsYWNrVHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWRCbGFj
a1RyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NjNCMkExM0Y4NTNCRDAw
MDJEOUIyIC8qIE1ldGFBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWV0YUFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk2M0Iy
QjEzRjg1M0M3MDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZXRhQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIzNzIsNiArMjM3Nyw3IEBACiAJCQkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3
MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLywKIAkJCQk4NkVDOURCNDEzMjhERjgyMDAyQjJB
RDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwICovLAogCQkJCTg2RUM5REI1MTMyOERGODIwMDJC
MkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oICovLAorCQkJCTBGN0IyOTQ4MTRDM0NEMjMwMDdD
M0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCAqLywKIAkJCQkwRkQ4MkUxRTE0MTcyQzJGMDAxNzlD
OTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCAqLywKIAkJCQkwRkQ4MkUxRjE0MTcyQzJGMDAxNzlD
OTQgLyogREZHQ2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJMEZDMDk3N0UxNDY5RUJDNDAwQ0YyNDQy
IC8qIERGR0NvbW1vbi5oICovLApAQCAtMzAyNSw2ICszMDMxLDEwIEBACiAJCQkJMEYwQjgzQjcx
NEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBK
SVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAv
KiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0IyOTRCMTRDM0NEMkYw
MDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0IyOTRD
MTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQ0NhbGxIZWxwZXJzX2gKKyNkZWZpbmUg
REZHQ0NhbGxIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5B
QkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRl
ICJERkdHUFJJbmZvLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xh
c3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CitwdWJsaWM6CisgICAg
Q0NhbGxIZWxwZXJzKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCisgICAgICAgIDogQXNzZW1ibHlIZWxwZXJzKGdsb2JhbERhdGEsIGNvZGVCbG9jaykKKyAg
ICB7CisgICAgfQorCisgICAgLy8gVGhlc2UgbWV0aG9kcyB1c2VkIHRvIHNvcnQgYXJndW1lbnRz
IGludG8gdGhlIGNvcnJlY3QgcmVnaXN0ZXJzLgorICAgIC8vIE9uIFg4NiB3ZSB1c2UgY2RlY2wg
Y2FsbGluZyBjb252ZW50aW9ucywgd2hpY2ggcGFzcyBhbGwgYXJndW1lbnRzIG9uIHRoZQorICAg
IC8vIHN0YWNrLiBPbiBvdGhlciBhcmNoaXRlY3R1cmVzIHdlIG1heSBuZWVkIHRvIHNvcnQgdmFs
dWVzIGludG8gdGhlCisgICAgLy8gY29ycmVjdCByZWdpc3RlcnMuCisjaWYgIU5VTUJFUl9PRl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICB1bnNpZ25lZCBtX2NhbGxBcmd1bWVudE9mZnNldDsKKyAg
ICB2b2lkIHJlc2V0Q2FsbEFyZ3VtZW50cygpIHsgbV9jYWxsQXJndW1lbnRPZmZzZXQgPSAwOyB9
CisKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2luZyBpbnRlcm5hbGx5IHRvIGltcGxlbWVu
dCB0aGUgY2FsbE9wZXJhdGlvbiBtZXRob2RzLgorICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEdQ
UlJlZyB2YWx1ZSkKKyAgICB7CisgICAgICAgIHBva2UodmFsdWUsIG1fY2FsbEFyZ3VtZW50T2Zm
c2V0KyspOworICAgIH0KKyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tMzIgaW1t
KQorICAgIHsKKyAgICAgICAgcG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOworICAg
IH0KKyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tUHRyIHBvaW50ZXIpCisgICAg
eworICAgICAgICBwb2tlKHBvaW50ZXIsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOworICAgIH0K
KyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChGUFJSZWcgdmFsdWUpCisgICAgeworICAgICAgICBz
dG9yZURvdWJsZSh2YWx1ZSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgbV9jYWxsQXJn
dW1lbnRPZmZzZXQgKiBzaXplb2Yodm9pZCopKSk7CisgICAgICAgIG1fY2FsbEFyZ3VtZW50T2Zm
c2V0ICs9IHNpemVvZihkb3VibGUpIC8gc2l6ZW9mKHZvaWQqKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisgICAgeworICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJn
MSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Mik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0
YXRlKCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEp
CisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzEpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRD
YWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCisgICAgeworICAgICAgICBy
ZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZElt
bTMyIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIHJl
c2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
VHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7
CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Cisg
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1
c3RlZEltbTMyIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0
Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFk
ZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAg
eworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsK
KyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcx
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQorICAg
IHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQor
ICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJn
NSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAgICB9CisjZW5kaWYgLy8gIU5VTUJFUl9PRl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzdWl0YWJsZSBmb3Ig
YW55IGNhbGxpbmcgY29udmVudGlvbiB0aGF0IHByb3ZpZGVzIGZvcgorICAgIC8vIGF0IGxlYXN0
IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIFg4Nl82NCwgQVJNdjcuCisjaWYgTlVNQkVSX09G
X0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0CisgICAgdGVtcGxhdGU8R1BSUmVnIGRlc3RBLCBHUFJS
ZWcgZGVzdEI+CisgICAgdm9pZCBzZXR1cFR3b1N0dWJBcmdzKEdQUlJlZyBzcmNBLCBHUFJSZWcg
c3JjQikKKyAgICB7CisgICAgICAgIC8vIEFzc3VtaW5nIHRoYXQgc3JjQSAhPSBzcmNCLCB0aGVy
ZSBhcmUgNyBpbnRlcmVzdGluZyBzdGF0ZXMgdGhlIHJlZ2lzdGVycyBtYXkgYmUgaW46CisgICAg
ICAgIC8vICgxKSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUgcmlnaHQgd2F5IGFy
b3VuZC4KKyAgICAgICAgLy8gKDIpIGJvdGggYXJlIGFscmVhZHkgaW4gYXJnIHJlZ3MsIHRoZSB3
cm9uZyB3YXkgYXJvdW5kLgorICAgICAgICAvLyAoMykgbmVpdGhlciBhcmUgY3VycmVudGx5IGlu
IGFyZyByZWdpc3RlcnMuCisgICAgICAgIC8vICg0KSBzcmNBIGluIGluIGl0cyBjb3JyZWN0IHJl
Zy4KKyAgICAgICAgLy8gKDUpIHNyY0EgaW4gaW4gdGhlIGluY29ycmVjdCByZWcuCisgICAgICAg
IC8vICg2KSBzcmNCIGluIGluIGl0cyBjb3JyZWN0IHJlZy4KKyAgICAgICAgLy8gKDcpIHNyY0Ig
aW4gaW4gdGhlIGluY29ycmVjdCByZWcuCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoZSB0cml2
aWFsIGFwcHJvYWNoIGlzIHRvIHNpbXBseSBlbWl0IHR3byBtb3ZlcywgdG8gcHV0IHNyY0EgaW4g
cGxhY2UgdGhlbiBzcmNCIGluCisgICAgICAgIC8vIHBsYWNlICh0aGUgTWFjcm9Bc3NlbWJsZXIg
d2lsbCBvbWl0IHJlZHVuZGFudCBtb3ZlcykuIFRoaXMgYXBwb3JhY2ggd2lsbCBiZSBzYWZlIGlu
CisgICAgICAgIC8vIGNhc2VzIDEsIDMsIDQsIDUsIDYsIGFuZCBpbiBjYXNlcyB3aGVyZSBzcmNB
PT1zcmNCLiBUaGUgdHdvIHByb2JsZW0gY2FzZXMgYXJlIDIKKyAgICAgICAgLy8gKHJlcXVpcmVz
IGEgc3dhcCkgYW5kIDcgKG11c3QgbW92ZSBzcmNCIGZpcnN0LCB0byBhdm9pZCB0cmFtcGxpbmcu
KQorCisgICAgICAgIGlmIChzcmNCICE9IGRlc3RBKSB7CisgICAgICAgICAgICAvLyBIYW5kbGUg
dGhlIGVhc3kgY2FzZXMgLSB0d28gc2ltcGxlIG1vdmVzLgorICAgICAgICAgICAgbW92ZShzcmNB
LCBkZXN0QSk7CisgICAgICAgICAgICBtb3ZlKHNyY0IsIGRlc3RCKTsKKyAgICAgICAgfSBlbHNl
IGlmIChzcmNBICE9IGRlc3RCKSB7CisgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5vbi1zd2Fw
IGNhc2UgLSBqdXN0IHB1dCBzcmNCIGluIHBsYWNlIGZpcnN0LgorICAgICAgICAgICAgbW92ZShz
cmNCLCBkZXN0Qik7CisgICAgICAgICAgICBtb3ZlKHNyY0EsIGRlc3RBKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBzd2FwKGRlc3RBLCBkZXN0Qik7CisgICAgfQorI2lmIENQVShYODZf
NjQpCisgICAgdGVtcGxhdGU8RlBSUmVnIGRlc3RBLCBGUFJSZWcgZGVzdEI+CisgICAgdm9pZCBz
ZXR1cFR3b1N0dWJBcmdzKEZQUlJlZyBzcmNBLCBGUFJSZWcgc3JjQikKKyAgICB7CisgICAgICAg
IC8vIEFzc3VtaW5nIHRoYXQgc3JjQSAhPSBzcmNCLCB0aGVyZSBhcmUgNyBpbnRlcmVzdGluZyBz
dGF0ZXMgdGhlIHJlZ2lzdGVycyBtYXkgYmUgaW46CisgICAgICAgIC8vICgxKSBib3RoIGFyZSBh
bHJlYWR5IGluIGFyZyByZWdzLCB0aGUgcmlnaHQgd2F5IGFyb3VuZC4KKyAgICAgICAgLy8gKDIp
IGJvdGggYXJlIGFscmVhZHkgaW4gYXJnIHJlZ3MsIHRoZSB3cm9uZyB3YXkgYXJvdW5kLgorICAg
ICAgICAvLyAoMykgbmVpdGhlciBhcmUgY3VycmVudGx5IGluIGFyZyByZWdpc3RlcnMuCisgICAg
ICAgIC8vICg0KSBzcmNBIGluIGluIGl0cyBjb3JyZWN0IHJlZy4KKyAgICAgICAgLy8gKDUpIHNy
Y0EgaW4gaW4gdGhlIGluY29ycmVjdCByZWcuCisgICAgICAgIC8vICg2KSBzcmNCIGluIGluIGl0
cyBjb3JyZWN0IHJlZy4KKyAgICAgICAgLy8gKDcpIHNyY0IgaW4gaW4gdGhlIGluY29ycmVjdCBy
ZWcuCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoZSB0cml2aWFsIGFwcHJvYWNoIGlzIHRvIHNp
bXBseSBlbWl0IHR3byBtb3ZlcywgdG8gcHV0IHNyY0EgaW4gcGxhY2UgdGhlbiBzcmNCIGluCisg
ICAgICAgIC8vIHBsYWNlICh0aGUgTWFjcm9Bc3NlbWJsZXIgd2lsbCBvbWl0IHJlZHVuZGFudCBt
b3ZlcykuIFRoaXMgYXBwb3JhY2ggd2lsbCBiZSBzYWZlIGluCisgICAgICAgIC8vIGNhc2VzIDEs
IDMsIDQsIDUsIDYsIGFuZCBpbiBjYXNlcyB3aGVyZSBzcmNBPT1zcmNCLiBUaGUgdHdvIHByb2Js
ZW0gY2FzZXMgYXJlIDIKKyAgICAgICAgLy8gKHJlcXVpcmVzIGEgc3dhcCkgYW5kIDcgKG11c3Qg
bW92ZSBzcmNCIGZpcnN0LCB0byBhdm9pZCB0cmFtcGxpbmcuKQorCisgICAgICAgIGlmIChzcmNC
ICE9IGRlc3RBKSB7CisgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGVhc3kgY2FzZXMgLSB0d28g
c2ltcGxlIG1vdmVzLgorICAgICAgICAgICAgbW92ZURvdWJsZShzcmNBLCBkZXN0QSk7CisgICAg
ICAgICAgICBtb3ZlRG91YmxlKHNyY0IsIGRlc3RCKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHNyY0EgIT0gZGVzdEIpIHsKKyAgICAgICAg
ICAgIC8vIEhhbmRsZSB0aGUgbm9uLXN3YXAgY2FzZSAtIGp1c3QgcHV0IHNyY0IgaW4gcGxhY2Ug
Zmlyc3QuCisgICAgICAgICAgICBtb3ZlRG91YmxlKHNyY0IsIGRlc3RCKTsKKyAgICAgICAgICAg
IG1vdmVEb3VibGUoc3JjQSwgZGVzdEEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgQVNTRVJUKHNyY0IgPT0gZGVzdEEgJiYgc3JjQSA9PSBkZXN0Qik7CisgICAg
ICAgIC8vIE5lZWQgdG8gc3dhcDsgcGljayBhIHRlbXBvcmFyeSByZWdpc3Rlci4KKyAgICAgICAg
RlBSUmVnIHRlbXA7CisgICAgICAgIGlmIChkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjMg
JiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIzKQorICAgICAgICAgICAgdGVtcCA9IEZQ
UkluZm86OmFyZ3VtZW50RlBSMzsKKyAgICAgICAgZWxzZSBpZiAoZGVzdEEgIT0gRlBSSW5mbzo6
YXJndW1lbnRGUFIyICYmIGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMikKKyAgICAgICAg
ICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjI7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgQVNTRVJUKGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMSAmJiBkZXN0QSAhPSBG
UFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICAgICAgdGVtcCA9IEZQUkluZm86OmFyZ3Vt
ZW50RlBSMTsKKyAgICAgICAgfQorICAgICAgICBtb3ZlRG91YmxlKGRlc3RBLCB0ZW1wKTsKKyAg
ICAgICAgbW92ZURvdWJsZShkZXN0QiwgZGVzdEEpOworICAgICAgICBtb3ZlRG91YmxlKHRlbXAs
IGRlc3RCKTsKKyAgICB9CisjZW5kaWYKKyAgICB2b2lkIHNldHVwU3R1YkFyZ3VtZW50cyhHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQ
UkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyPihhcmcxLCBhcmcyKTsK
KyAgICB9CisgICAgdm9pZCBzZXR1cFN0dWJBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIC8vIElmIG5laXRoZXIgb2YgYXJnMi9h
cmczIGFyZSBpbiBvdXIgd2F5LCB0aGVuIHdlIGNhbiBtb3ZlIGFyZzEgaW50byBwbGFjZS4KKyAg
ICAgICAgLy8gVGhlbiB3ZSBjYW4gdXNlIHNldHVwVHdvU3R1YkFyZ3MgdG8gZml4IGFyZzIvYXJn
My4KKyAgICAgICAgaWYgKGFyZzIgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxICYmIGFyZzMgIT0g
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSB7CisgICAgICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7CisgICAgICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFy
Z3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcyLCBhcmczKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIG5laXRoZXIgb2YgYXJnMS9h
cmczIGFyZSBpbiBvdXIgd2F5LCB0aGVuIHdlIGNhbiBtb3ZlIGFyZzIgaW50byBwbGFjZS4KKyAg
ICAgICAgLy8gVGhlbiB3ZSBjYW4gdXNlIHNldHVwVHdvU3R1YkFyZ3MgdG8gZml4IGFyZzEvYXJn
My4KKyAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIyICYmIGFyZzMgIT0g
R1BSSW5mbzo6YXJndW1lbnRHUFIyKSB7CisgICAgICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7CisgICAgICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFy
Z3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIG5laXRoZXIgb2YgYXJnMS9h
cmcyIGFyZSBpbiBvdXIgd2F5LCB0aGVuIHdlIGNhbiBtb3ZlIGFyZzMgaW50byBwbGFjZS4KKyAg
ICAgICAgLy8gVGhlbiB3ZSBjYW4gdXNlIHNldHVwVHdvU3R1YkFyZ3MgdG8gZml4IGFyZzEvYXJn
Mi4KKyAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzICYmIGFyZzIgIT0g
R1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7CisgICAgICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86
OmFyZ3VtZW50R1BSMyk7CisgICAgICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFy
Z3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyPihhcmcxLCBhcmcyKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHdlIGdldCBoZXJlLCB3ZSBo
YXZlbid0IGJlZW4gYWJsZSB0byBtb3ZlIGFueSBvZiBhcmcxL2FyZzIvYXJnMy4KKyAgICAgICAg
Ly8gU2luY2UgYWxsIHRocmVlIGFyZSBibG9ja2VkLCB0aGVuIGFsbCB0aHJlZSBtdXN0IGFscmVh
ZHkgYmUgaW4gdGhlIGFyZ3VtZW50IHJlZ2lzdGVyLgorICAgICAgICAvLyBCdXQgYXJlIHRoZXkg
aW4gdGhlIHJpZ2h0IG9uZXM/CisKKyAgICAgICAgLy8gRmlyc3QsIGVuc3VyZSBhcmcxIGlzIGlu
IHBsYWNlLgorICAgICAgICBpZiAoYXJnMSAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjEpIHsKKyAg
ICAgICAgICAgIHN3YXAoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKworICAgICAgICAg
ICAgLy8gSWYgYXJnMSB3YXNuJ3QgaW4gYXJndW1lbnRHUFIxLCBvbmUgb2YgYXJnMi9hcmczIG11
c3QgYmUuCisgICAgICAgICAgICBBU1NFUlQoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEg
fHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICAgICAgLy8gSWYgYXJn
MiB3YXMgaW4gYXJndW1lbnRHUFIxIGl0IG5vIGxvbmdlciBpcyAoZHVlIHRvIHRoZSBzd2FwKS4K
KyAgICAgICAgICAgIC8vIE90aGVyd2lzZSBhcmczIG11c3QgaGF2ZSBiZWVuLiBNYXJrIGhpbSBh
cyBtb3ZlZC4KKyAgICAgICAgICAgIGlmIChhcmcyID09IEdQUkluZm86OmFyZ3VtZW50R1BSMSkK
KyAgICAgICAgICAgICAgICBhcmcyID0gYXJnMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBhcmczID0gYXJnMTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEVpdGhlciBhcmcy
ICYgYXJnMyBuZWVkIHN3YXBwaW5nLCBvciB3ZSdyZSBhbGwgZG9uZS4KKyAgICAgICAgQVNTRVJU
KChhcmcyID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiB8fCBhcmczID09IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMykKKyAgICAgICAgICAgIHx8IChhcmcyID09IEdQUkluZm86OmFyZ3VtZW50R1BSMyB8
fCBhcmczID09IEdQUkluZm86OmFyZ3VtZW50R1BSMikpOworCisgICAgICAgIGlmIChhcmcyICE9
IEdQUkluZm86OmFyZ3VtZW50R1BSMikKKyAgICAgICAgICAgIHN3YXAoR1BSSW5mbzo6YXJndW1l
bnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgIH0KKworI2lmIENQVShYODZfNjQp
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQorICAg
IHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwg
RlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEZQUkluZm86OmFy
Z3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxPihhcmcxLCBhcmcyKTsKKyAgICB9Cisj
ZWxzZQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkK
KyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAg
ICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCBhcmcxKTsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1
bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJnMik7CisgICAgfQorI2VuZGlmCisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQorICAgIHsK
KyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxKQorICAg
IHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJn
dW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1Q
dHIgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUo
YXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0
aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0z
MiBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAg
IG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcx
LCBhcmcyLCBhcmczKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1
c3RlZEltbTMyIGFyZzMpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwg
YXJnMik7CisgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAg
ICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmcz
KQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAg
ICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoYXJn
MywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJn
dW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50
R1BSMyk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIs
IEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAg
ICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisK
KyNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKKyAgICAvLyBUaGVz
ZSBtZXRob2RzIGFyZSBzdWl0YWJsZSBmb3IgYW55IGNhbGxpbmcgY29udmVudGlvbiB0aGF0IHBy
b3ZpZGVzIGZvcgorICAgIC8vIGV4YWN0bHkgNCBhcmd1bWVudCByZWdpc3RlcnMsIGUuZy4gQVJN
djcuCisjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJn
NCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0
ZWRJbW0zMiBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAg
eworICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQpOwor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BS
UmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDEpOworICAgICAgICBwb2tlKGFy
ZzQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgfQorI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAor
fTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCisKKyNlbmRpZiAvLyBERkdDQ2FsbEhlbHBlcnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxMDUwMzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDxhc3NlbWJsZXIvTGlua0J1ZmZlci5oPgogI2luY2x1
ZGUgPGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oPgogI2luY2x1ZGUgPGJ5dGVjb2RlL0NvZGVC
bG9jay5oPgotI2luY2x1ZGUgPGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuaD4KKyNpbmNsdWRlIDxk
ZmcvREZHQ0NhbGxIZWxwZXJzLmg+CiAjaW5jbHVkZSA8ZGZnL0RGR0ZQUkluZm8uaD4KICNpbmNs
dWRlIDxkZmcvREZHR1BSSW5mby5oPgogI2luY2x1ZGUgPGRmZy9ERkdHcmFwaC5oPgpAQCAtMTQ3
LDEwICsxNDcsMTAgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKIC8vIHJlbGF0aW9u
c2hpcCkuIFRoZSBKSVRDb21waWxlciBob2xkcyByZWZlcmVuY2VzIHRvIGluZm9ybWF0aW9uIHJl
cXVpcmVkIGR1cmluZwogLy8gY29tcGlsYXRpb24sIGFuZCBhbHNvIHJlY29yZHMgaW5mb3JtYXRp
b24gdXNlZCBpbiBsaW5raW5nIChlLmcuIGEgbGlzdCBvZiBhbGwKIC8vIGNhbGwgdG8gYmUgbGlu
a2VkKS4KLWNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CitjbGFz
cyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogcHVibGljOgogICAgIEpJVENv
bXBpbGVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgR3JhcGgmIGRmZywgQ29kZUJsb2NrKiBj
b2RlQmxvY2spCi0gICAgICAgIDogQXNzZW1ibHlIZWxwZXJzKGdsb2JhbERhdGEsIGNvZGVCbG9j
aykKKyAgICAgICAgOiBDQ2FsbEhlbHBlcnMoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKQogICAgICAg
ICAsIG1fZ3JhcGgoZGZnKQogICAgIHsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMDUwMzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNjAsNDU3ICsxMDYwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgbV9nZW5lcmF0aW9uSW5m
b1tub2RlLnZpcnR1YWxSZWdpc3RlcigpXS5pbml0Q29uc3RhbnQobm9kZUluZGV4LCBub2RlLnJl
ZkNvdW50KCkpOwogICAgIH0KICAgICAKLSAgICAvLyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29y
dCBhcmd1bWVudHMgaW50byB0aGUgY29ycmVjdCByZWdpc3RlcnMuCi0gICAgLy8gT24gWDg2IHdl
IHVzZSBjZGVjbCBjYWxsaW5nIGNvbnZlbnRpb25zLCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMg
b24gdGhlCi0gICAgLy8gc3RhY2suIE9uIG90aGVyIGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQg
dG8gc29ydCB2YWx1ZXMgaW50byB0aGUKLSAgICAvLyBjb3JyZWN0IHJlZ2lzdGVycy4KLSNpZiAh
TlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUwotICAgIHVuc2lnbmVkIG1fY2FsbEFyZ3VtZW50
T2Zmc2V0OwotICAgIHZvaWQgcmVzZXRDYWxsQXJndW1lbnRzKCkgeyBtX2NhbGxBcmd1bWVudE9m
ZnNldCA9IDA7IH0KLQotICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzaW5nIGludGVybmFsbHkg
dG8gaW1wbGVtZW50IHRoZSBjYWxsT3BlcmF0aW9uIG1ldGhvZHMuCi0gICAgdm9pZCBhZGRDYWxs
QXJndW1lbnQoR1BSUmVnIHZhbHVlKQotICAgIHsKLSAgICAgICAgbV9qaXQucG9rZSh2YWx1ZSwg
bV9jYWxsQXJndW1lbnRPZmZzZXQrKyk7Ci0gICAgfQotICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50
KFRydXN0ZWRJbW0zMiBpbW0pCi0gICAgewotICAgICAgICBtX2ppdC5wb2tlKGltbSwgbV9jYWxs
QXJndW1lbnRPZmZzZXQrKyk7Ci0gICAgfQotICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KFRydXN0
ZWRJbW1QdHIgcG9pbnRlcikKLSAgICB7Ci0gICAgICAgIG1faml0LnBva2UocG9pbnRlciwgbV9j
YWxsQXJndW1lbnRPZmZzZXQrKyk7Ci0gICAgfQotICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEZQ
UlJlZyB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIG1faml0LnN0b3JlRG91YmxlKHZhbHVlLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIG1fY2Fs
bEFyZ3VtZW50T2Zmc2V0ICogc2l6ZW9mKHZvaWQqKSkpOwotICAgICAgICBtX2NhbGxBcmd1bWVu
dE9mZnNldCArPSBzaXplb2YoZG91YmxlKSAvIHNpemVvZih2b2lkKik7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQotICAgIHsKLSAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcx
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVn
IGFyZzEsIEZQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4
ZWNTdGF0ZSgpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICB9Ci0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcxKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSkKLSAgICB7Ci0gICAgICAgIHJl
c2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgfQot
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMo
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
LSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyKQotICAgIHsKLSAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0
ZWRJbW0zMiBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwot
ICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCi0gICAgewotICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwot
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAgICBy
ZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQot
ICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1
bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMyk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKLSAgICB9Ci0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKLSAg
ICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkK
LSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQot
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVn
IGFyZzUpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwot
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7Ci0gICAgfQotI2VuZGlmIC8vICFOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTCi0gICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUg
Zm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92aWRlcyBmb3IKLSAgICAvLyBhdCBs
ZWFzdCA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBYODZfNjQsIEFSTXY3LgotI2lmIE5VTUJF
Ul9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotICAgIHRlbXBsYXRlPEdQUlJlZyBkZXN0QSwg
R1BSUmVnIGRlc3RCPgotICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhHUFJSZWcgc3JjQSwgR1BS
UmVnIHNyY0IpCi0gICAgewotICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNyY0EgIT0gc3JjQiwg
dGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMgbWF5IGJlIGluOgot
ICAgICAgICAvLyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywgdGhlIHJpZ2h0IHdh
eSBhcm91bmQuCi0gICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0
aGUgd3Jvbmcgd2F5IGFyb3VuZC4KLSAgICAgICAgLy8gKDMpIG5laXRoZXIgYXJlIGN1cnJlbnRs
eSBpbiBhcmcgcmVnaXN0ZXJzLgotICAgICAgICAvLyAoNCkgc3JjQSBpbiBpbiBpdHMgY29ycmVj
dCByZWcuCi0gICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAg
ICAgICAvLyAoNikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0gICAgICAgIC8vICg3KSBz
cmNCIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAvLwotICAgICAgICAvLyBUaGUg
dHJpdmlhbCBhcHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMsIHRvIHB1dCBzcmNB
IGluIHBsYWNlIHRoZW4gc3JjQiBpbgotICAgICAgICAvLyBwbGFjZSAodGhlIE1hY3JvQXNzZW1i
bGVyIHdpbGwgb21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNoIHdpbGwgYmUgc2Fm
ZSBpbgotICAgICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4gY2FzZXMgd2hlcmUg
c3JjQT09c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCi0gICAgICAgIC8vIChyZXF1
aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8gYXZvaWQgdHJhbXBs
aW5nLikKLQotICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgewotICAgICAgICAgICAgLy8gSGFu
ZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KLSAgICAgICAgICAgIG1faml0
Lm1vdmUoc3JjQSwgZGVzdEEpOwotICAgICAgICAgICAgbV9qaXQubW92ZShzcmNCLCBkZXN0Qik7
Ci0gICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0QikgewotICAgICAgICAgICAgLy8gSGFu
ZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBmaXJzdC4KLSAg
ICAgICAgICAgIG1faml0Lm1vdmUoc3JjQiwgZGVzdEIpOwotICAgICAgICAgICAgbV9qaXQubW92
ZShzcmNBLCBkZXN0QSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9qaXQuc3dhcChk
ZXN0QSwgZGVzdEIpOwotICAgIH0KLSNpZiBDUFUoWDg2XzY0KQotICAgIHRlbXBsYXRlPEZQUlJl
ZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgotICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhGUFJSZWcg
c3JjQSwgRlBSUmVnIHNyY0IpCi0gICAgewotICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNyY0Eg
IT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMgbWF5
IGJlIGluOgotICAgICAgICAvLyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywgdGhl
IHJpZ2h0IHdheSBhcm91bmQuCi0gICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGluIGFy
ZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4KLSAgICAgICAgLy8gKDMpIG5laXRoZXIgYXJl
IGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgotICAgICAgICAvLyAoNCkgc3JjQSBpbiBpbiBp
dHMgY29ycmVjdCByZWcuCi0gICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJlY3Qg
cmVnLgotICAgICAgICAvLyAoNikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0gICAgICAg
IC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAvLwotICAgICAg
ICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMsIHRv
IHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBpbgotICAgICAgICAvLyBwbGFjZSAodGhlIE1h
Y3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNoIHdp
bGwgYmUgc2FmZSBpbgotICAgICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4gY2Fz
ZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCi0gICAgICAg
IC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8gYXZv
aWQgdHJhbXBsaW5nLikKLQotICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgewotICAgICAgICAg
ICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KLSAgICAgICAg
ICAgIG1faml0Lm1vdmVEb3VibGUoc3JjQSwgZGVzdEEpOwotICAgICAgICAgICAgbV9qaXQubW92
ZURvdWJsZShzcmNCLCBkZXN0Qik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIGlmIChzcmNBICE9IGRlc3RCKSB7Ci0gICAgICAgICAgICAvLyBIYW5k
bGUgdGhlIG5vbi1zd2FwIGNhc2UgLSBqdXN0IHB1dCBzcmNCIGluIHBsYWNlIGZpcnN0LgotICAg
ICAgICAgICAgbV9qaXQubW92ZURvdWJsZShzcmNCLCBkZXN0Qik7Ci0gICAgICAgICAgICBtX2pp
dC5tb3ZlRG91YmxlKHNyY0EsIGRlc3RBKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIEFTU0VSVChzcmNCID09IGRlc3RBICYmIHNyY0EgPT0gZGVzdEIpOwotICAg
ICAgICAvLyBOZWVkIHRvIHN3YXA7IHBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCi0gICAgICAg
IEZQUlJlZyB0ZW1wOwotICAgICAgICBpZiAoZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIz
ICYmIGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMykKLSAgICAgICAgICAgIHRlbXAgPSBG
UFJJbmZvOjphcmd1bWVudEZQUjM7Ci0gICAgICAgIGVsc2UgaWYgKGRlc3RBICE9IEZQUkluZm86
OmFyZ3VtZW50RlBSMiAmJiBkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjIpCi0gICAgICAg
ICAgICB0ZW1wID0gRlBSSW5mbzo6YXJndW1lbnRGUFIyOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIEFTU0VSVChkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjEgJiYgZGVzdEEgIT0g
RlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICAgICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1
bWVudEZQUjE7Ci0gICAgICAgIH0KLSAgICAgICAgbV9qaXQubW92ZURvdWJsZShkZXN0QSwgdGVt
cCk7Ci0gICAgICAgIG1faml0Lm1vdmVEb3VibGUoZGVzdEIsIGRlc3RBKTsKLSAgICAgICAgbV9q
aXQubW92ZURvdWJsZSh0ZW1wLCBkZXN0Qik7Ci0gICAgfQotI2VuZGlmCi0gICAgdm9pZCBzZXR1
cFN0dWJBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAg
c2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50
R1BSMj4oYXJnMSwgYXJnMik7Ci0gICAgfQotICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRzKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICAvLyBJ
ZiBuZWl0aGVyIG9mIGFyZzIvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBh
cmcxIGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJB
cmdzIHRvIGZpeCBhcmcyL2FyZzMuCi0gICAgICAgIGlmIChhcmcyICE9IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSkgewotICAgICAgICAgICAg
bV9qaXQubW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICAgICAgc2V0
dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mz4oYXJnMiwgYXJnMyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBJZiBuZWl0aGVyIG9mIGFyZzEvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4g
bW92ZSBhcmcyIGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3
b1N0dWJBcmdzIHRvIGZpeCBhcmcxL2FyZzMuCi0gICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86
OmFyZ3VtZW50R1BSMiAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMikgewotICAgICAg
ICAgICAgbV9qaXQubW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICAg
ICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMz4oYXJnMSwgYXJnMyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBJZiBuZWl0aGVyIG9mIGFyZzEvYXJnMiBhcmUgaW4gb3VyIHdheSwgdGhlbiB3
ZSBjYW4gbW92ZSBhcmczIGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBz
ZXR1cFR3b1N0dWJBcmdzIHRvIGZpeCBhcmcxL2FyZzIuCi0gICAgICAgIGlmIChhcmcxICE9IEdQ
UkluZm86OmFyZ3VtZW50R1BSMyAmJiBhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMykgewot
ICAgICAgICAgICAgbV9qaXQubW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAg
ICAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMj4oYXJnMSwgYXJnMik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8g
bW92ZSBhbnkgb2YgYXJnMS9hcmcyL2FyZzMuCi0gICAgICAgIC8vIFNpbmNlIGFsbCB0aHJlZSBh
cmUgYmxvY2tlZCwgdGhlbiBhbGwgdGhyZWUgbXVzdCBhbHJlYWR5IGJlIGluIHRoZSBhcmd1bWVu
dCByZWdpc3Rlci4KLSAgICAgICAgLy8gQnV0IGFyZSB0aGV5IGluIHRoZSByaWdodCBvbmVzPwot
Ci0gICAgICAgIC8vIEZpcnN0LCBlbnN1cmUgYXJnMSBpcyBpbiBwbGFjZS4KLSAgICAgICAgaWYg
KGFyZzEgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKSB7Ci0gICAgICAgICAgICBtX2ppdC5zd2Fw
KGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0KLSAgICAgICAgICAgIC8vIElmIGFyZzEg
d2Fzbid0IGluIGFyZ3VtZW50R1BSMSwgb25lIG9mIGFyZzIvYXJnMyBtdXN0IGJlLgotICAgICAg
ICAgICAgQVNTRVJUKGFyZzIgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxIHx8IGFyZzMgPT0gR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgICAgIC8vIElmIGFyZzIgd2FzIGluIGFyZ3Vt
ZW50R1BSMSBpdCBubyBsb25nZXIgaXMgKGR1ZSB0byB0aGUgc3dhcCkuCi0gICAgICAgICAgICAv
LyBPdGhlcndpc2UgYXJnMyBtdXN0IGhhdmUgYmVlbi4gTWFyayBoaW0gYXMgbW92ZWQuCi0gICAg
ICAgICAgICBpZiAoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEpCi0gICAgICAgICAgICAg
ICAgYXJnMiA9IGFyZzE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnMyA9
IGFyZzE7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFaXRoZXIgYXJnMiAmIGFyZzMgbmVlZCBz
d2FwcGluZywgb3Igd2UncmUgYWxsIGRvbmUuCi0gICAgICAgIEFTU0VSVCgoYXJnMiA9PSBHUFJJ
bmZvOjphcmd1bWVudEdQUjIgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpCi0gICAg
ICAgICAgICB8fCAoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMgfHwgYXJnMyA9PSBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpKTsKLQotICAgICAgICBpZiAoYXJnMiAhPSBHUFJJbmZvOjphcmd1
bWVudEdQUjIpCi0gICAgICAgICAgICBtX2ppdC5zd2FwKEdQUkluZm86OmFyZ3VtZW50R1BSMiwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAgICB9Ci0KLSNpZiBDUFUoWDg2XzY0KQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKLSAgICB7Ci0gICAg
ICAgIG1faml0Lm1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICB9
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQ
UlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgc2V0dXBUd29TdHViQXJnczxGUFJJbmZvOjphcmd1
bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMT4oYXJnMSwgYXJnMik7Ci0gICAgfQotI2Vs
c2UKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0g
ICAgewotICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQotICAgIHsK
LSAgICAgICAgbV9qaXQuYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSwgYXJnMSk7Ci0gICAgICAgIG1faml0LmFzc2VtYmxlcigpLnZt
b3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzIpOwot
ICAgIH0KLSNlbmRpZgotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhl
Y1N0YXRlKCkKLSAgICB7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKLSAgICB7Ci0g
ICAgICAgIG1faml0Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAg
bV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSkKLSAgICB7Ci0gICAgICAgIG1faml0Lm1vdmUo
YXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcx
LCBhcmcyKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFy
ZzIpCi0gICAgewotICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAg
ICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIpCi0gICAgewot
ICAgICAgICBtX2ppdC5tb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7IC8vIE1vdmUg
dGhpcyBmaXJzdCwgc28gc2V0dGluZyBhcmcxIGRvZXMgbm90IHRyYW1wbGUhCi0gICAgICAgIG1f
aml0Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKLSAgICB7Ci0gICAgICAgIG1f
aml0Lm1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92
ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCi0gICAgewotICAgICAgICBtX2ppdC5t
b3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJn
MiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICBzZXR1cFN0dWJBcmd1
bWVudHMoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczKQotICAgIHsKLSAgICAgICAgc2V0dXBTdHVi
QXJndW1lbnRzKGFyZzEsIGFyZzIpOwotICAgICAgICBtX2ppdC5tb3ZlKGFyZzMsIEdQUkluZm86
OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZElt
bTMyIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKLSAgICB7Ci0gICAgICAgIG1faml0Lm1vdmUo
YXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92ZShhcmcyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtX2ppdC5tb3ZlKGFyZzMsIEdQUkluZm86
OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFyZ3VtZW50
cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbV9qaXQubW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjMpOwotICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0z
MiBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIG1faml0Lm1vdmUoYXJnMSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbV9qaXQubW92ZShhcmcyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOwotICAgICAgICBtX2ppdC5tb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50
R1BSMyk7Ci0gICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0jZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VN
RU5UX1JFR0lTVEVSUyA+PSA0Ci0gICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9y
IGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92aWRlcyBmb3IKLSAgICAvLyBleGFjdGx5
IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIEFSTXY3LgotI2lmIE5VTUJFUl9PRl9BUkdVTUVO
VF9SRUdJU1RFUlMgPT0gNAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQpCi0gICAgewotICAgICAgICBtX2ppdC5wb2tlKGFyZzQpOwotICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKLSAgICB7
Ci0gICAgICAgIG1faml0LnBva2UoYXJnNCk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVk
SW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQotICAgIHsKLSAgICAgICAgbV9q
aXQucG9rZShhcmc0KTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
VHJ1c3RlZEltbVB0ciBhcmc0KQotICAgIHsKLSAgICAgICAgbV9qaXQucG9rZShhcmc0KTsKLSAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJl
ZyBhcmc1KQotICAgIHsKLSAgICAgICAgbV9qaXQucG9rZShhcmc1LCAxKTsKLSAgICAgICAgbV9q
aXQucG9rZShhcmc0KTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOwotICAgIH0KLSNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTID09IDQKLQogICAgIC8vIFRoZXNlIG1ldGhvZHMgYWRkIGNhbGxzIHRvIEMrKyBoZWxwZXIg
ZnVuY3Rpb25zLgogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIGJyb2FkbHkgdmFsdWUgcmVwcmVz
ZW50YXRpb24gc3BlY2lmaWMgKGkuZS4KICAgICAvLyBkZWFsIHdpdGggdGhlIGZhY3QgdGhhdCBh
IEpTVmFsdWUgbWF5IGJlIHBhc3NlZCBpbiBvbmUgb3IgdHdvCkBAIC0xNTE5LDMxNCArMTA2OCwz
MTQgQEAgcHJpdmF0ZToKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCB2b2lkKiBwb2ludGVyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0RGR09wZXJhdGlv
bl9EIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEpCiAgICAgewotICAgICAg
ICBzZXR1cEFyZ3VtZW50cyhhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJn
MSk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUkluZm86OnJldHVy
blZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FR0kgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1t
UHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25f
RUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBJZGVudGlmaWVyKiBpZGVudGlmaWVyKQogICAg
IHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoaWRl
bnRpZmllcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FQSBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVkSW1t
UHRyKHNpemUpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVy
YXRpb25fRVNTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgaW50IHN0YXJ0Q29uc3RhbnQsIGlu
dCBudW1Db25zdGFudHMpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoSW1tMzIoc3RhcnRDb25zdGFudCksIEltbTMyKG51bUNvbnN0YW50cykpOworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoSW1tMzIoc3RhcnRDb25zdGFudCksIElt
bTMyKG51bUNvbnN0YW50cykpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIHZvaWQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VDSSBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBJZGVudGlmaWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRl
bnRpZmllcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkkgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSWRlbnRpZmllciogaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVz
dGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVy
YXRpb25fRUpBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
Mik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEp
OworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0RGR09wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7Ci0gICAgICAg
IHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
RXhlY1N0YXRlKCk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FQ0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihT
X0RGR09wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQog
ICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0RGR09wZXJh
dGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
Mik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfREZHT3BlcmF0aW9uX0VQUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMiBpbW0pCiAgICAg
ewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgTWFjcm9Bc3NlbWJs
ZXI6OkltbVB0cihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKGltbS5tX3ZhbHVlKSkpKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyKHN0YXRpY19jYXN0PGNvbnN0IHZv
aWQqPihKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW1tLm1fdmFsdWUpKSkpKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZH
T3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpJ
bW0zMiBpbW0sIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKE1hY3JvQXNzZW1ibGVyOjpJbW1QdHIoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+
KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0ubV92YWx1ZSkpKSksIGFyZzIpOworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoTWFjcm9Bc3NlbWJsZXI6OkltbVB0
cihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGltbS5t
X3ZhbHVlKSkpKSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FQ0ogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewotICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VK
UFAgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIHZvaWQqIHBvaW50ZXIpCiAg
ICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1
c3RlZEltbVB0cihwb2ludGVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FSkNJIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBJZGVudGlmaWVyKiBpZGVudGlmaWVyKQog
ICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRy
dXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpK
SiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAg
ewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0
aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09w
ZXJhdGlvbl9FUFpKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnMykKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFZfREZHT3BlcmF0aW9uX0VBWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUNKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEZQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQUlJlZyByZXN1
bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1l
bnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhhcmcxLCBhcmcy
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICNlbHNlCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0RG
R09wZXJhdGlvbl9EIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEpCiAgICAg
ewotICAgICAgICBzZXR1cEFyZ3VtZW50cyhhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHMoYXJnMSk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUCBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCB2b2lkKiBw
b2ludGVyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIocG9pbnRlcikpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVz
dWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RG
R09wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZCwgR1BSUmVnIGFyZzEsIHZvaWQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1t
UHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VHSSBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcg
YXJnMSwgSWRlbnRpZmllciogaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIo
aWRlbnRpZmllcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVAgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFy
ZzEpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiAgICAgewot
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihpZGVudGlm
aWVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKGlkZW50aWZpZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9u
X0VBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQ
UlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgdm9pZCogcG9pbnRlciwgc2l6ZV90IHNp
emUpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cihwb2ludGVyKSwgVHJ1c3RlZEltbVB0cihzaXplKSk7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVkSW1t
UHRyKHNpemUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VTUyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBpbnQgc3RhcnRD
b25zdGFudCwgaW50IG51bUNvbnN0YW50cykKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoc3RhcnRDb25zdGFudCksIFRydXN0ZWRJbW0zMihu
dW1Db25zdGFudHMpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwgVHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykp
OwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpQIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJS
ZWcgYXJnMVBheWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIEltbVB0cihwb2ludGVyKSk7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwg
YXJnMVRhZywgSW1tUHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3Bl
cmF0aW9uX0VKUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXls
b2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMikKICAg
ICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJn
MVRhZywgYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0
VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09w
ZXJhdGlvbl9FQ0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgR1BSUmVnIGFyZzEsIElkZW50aWZpZXIqIGlkZW50aWZpZXIpCiAgICAgewotICAgICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudGlm
aWVyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBU
cnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3Bl
cmF0aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXls
b2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBJZGVudGlmaWVyKiBpZGVu
dGlmaWVyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQ
YXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVz
dGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0
aW9uX0VKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
LCBpbnQzMl90IGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgSWRlbnRpZmllciogaWRlbnRp
ZmllcikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5
bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcpLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBU
cnVzdGVkSW1tMzIoYXJnMVRhZyksIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBh
eWxvYWQsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBh
eWxvYWQpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBh
eWxvYWQsIGFyZzFUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMVBheWxvYWQsIGFyZzFUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVy
YXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewotICAgICAgICBzZXR1cEFy
Z3VtZW50c0V4ZWNTdGF0ZSgpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0
ZSgpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19ERkdPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19ERkdPcGVy
YXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVn
IGFyZzFQYXlsb2FkKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfREZHT3BlcmF0aW9uX0VKSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxv
YWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiAgICAgewotICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXls
b2FkLCBhcmcyVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09w
ZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcs
IEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMlBheWxvYWQsIGFyZzJUYWcpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFU
YWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3Bl
cmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXls
b2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6
SW1tMzIgaW1tKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzFQYXlsb2FkLCBhcmcxVGFnLCBpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykp
OworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQs
IGFyZzFUYWcsIGltbSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CiAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyIGltbSwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyks
IGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGltbSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgYXJnMlBheWxv
YWQsIGFyZzJUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUNKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKLSAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXls
b2FkLCBhcmcyVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VKUFAg
b3BlcmF0aW9uLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJn
Miwgdm9pZCogcG9pbnRlcikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMiwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxUGF5bG9hZCwg
YXJnMVRhZywgYXJnMiwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpDSSBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyLCBJZGVudGlm
aWVyKiBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIp
KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2Fk
LCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FQ0pKIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIEdQ
UlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewotICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcsIGFyZzNQYXls
b2FkLCBhcmczVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRVBa
SiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQ
UlJlZyBhcmczUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczUGF5bG9hZCwgYXJnM1Rh
Zyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVy
YXRpb25fRUFaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczUGF5bG9h
ZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihEX0RGR09wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
VGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCiAgICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0RGR09w
ZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcg
YXJnMikKICAgICB7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>