<?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>122025</bug_id>
          
          <creation_ts>2013-09-27 11:16:35 -0700</creation_ts>
          <short_desc>Deoptimize 32-bit deoptimization</short_desc>
          <delta_ts>2013-09-27 11:49:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>121374</dependson>
          <blocked>122024</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934021</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-27 11:16:35 -0700</bug_when>
    <thetext>Make everyone use the simplified deoptimization code path, which should make it easier to implement changes to stack layout in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934025</commentid>
    <comment_count>1</comment_count>
      <attachid>212828</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-27 11:31:17 -0700</bug_when>
    <thetext>Created attachment 212828
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934032</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-27 11:49:57 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/156564</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212828</attachid>
            <date>2013-09-27 11:31:17 -0700</date>
            <delta_ts>2013-09-27 11:40:04 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>43608</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDEzLTA5LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RGVvcHRpbWl6ZSAzMi1iaXQgZGVvcHRpbWl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgSnVzdCBzaW1wbGlmeWluZyBhIGJ1bmNo
IG9mIGNvZGUuIEkgZG9uJ3Qgd2FudCB0aGUgb2xkLCBzdXBlci1jb21wbGljYXRlZCwKKyAgICAg
ICAgZGVvcHRpbWl6YXRpb24gY29kZSB0byBnZXQgaW4gdGhlIHdheSBvZiBjaGFuZ2VzIEknbGwg
YmUgbWFraW5nIHRvIERGRyBzdGFjayBsYXlvdXQuCisKKyAgICAgICAgKiBieXRlY29kZS9WYWx1
ZVJlY292ZXJ5Lmg6CisgICAgICAgIChKU0M6OlZhbHVlUmVjb3Zlcnk6OmluR1BSKToKKyAgICAg
ICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6aXNJblJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlZh
bHVlUmVjb3Zlcnk6Omdwcik6CisgICAgICAgIChKU0M6OlZhbHVlUmVjb3Zlcnk6OmR1bXBJbkNv
bnRleHQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKwogMjAxMy0wOS0yNyAgR2Fib3IgUmFwY3NhbnlpICA8
cmdhYm9yQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTExJbnQgYWxpZ25tZW50IHByb2JsZW0gb24g
QVJNIGluIGRlYnVnIG1vZGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9W
YWx1ZVJlY292ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZhbHVlUmVjb3ZlcnkuaAkocmV2aXNpb24gMTU2NTUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiAr
NTYsNyBAQCBlbnVtIFZhbHVlUmVjb3ZlcnlUZWNobmlxdWUgewogICAgIFVuYm94ZWRJbnQ1Mklu
R1BSLAogICAgIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSLAogICAgIFVuYm94ZWRCb29sZWFuSW5H
UFIsCisgICAgVW5ib3hlZENlbGxJbkdQUiwKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIElu
UGFpciwKICNlbmRpZgpAQCAtMTQ1LDYgKzE0Niw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
c3VsdC5tX3RlY2huaXF1ZSA9IFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOwogICAgICAgICBlbHNl
IGlmIChkYXRhRm9ybWF0ID09IERhdGFGb3JtYXRCb29sZWFuKQogICAgICAgICAgICAgcmVzdWx0
Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEJvb2xlYW5JbkdQUjsKKyAgICAgICAgZWxzZSBpZiAoZGF0
YUZvcm1hdCA9PSBEYXRhRm9ybWF0Q2VsbCkKKyAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1
ZSA9IFVuYm94ZWRDZWxsSW5HUFI7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdC5t
X3RlY2huaXF1ZSA9IEluR1BSOwogICAgICAgICByZXN1bHQubV9zb3VyY2UuZ3ByID0gZ3ByOwpA
QCAtMjQwLDYgKzI0Myw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBJbkdQUjoKICAgICAgICAg
Y2FzZSBVbmJveGVkSW50MzJJbkdQUjoKICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BS
OgorICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CisgICAgICAgIGNhc2UgVW5ib3hlZElu
dDUySW5HUFI6CisgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6CiAjaWYgVVNF
KEpTVkFMVUUzMl82NCkKICAgICAgICAgY2FzZSBJblBhaXI6CiAjZW5kaWYKQEAgLTI2Nyw3ICsy
NzMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZ3By
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBJbkdQUiB8fCBt
X3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVk
Qm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVl
ID09IFVuYm94ZWRJbnQ1MkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRTdHJpY3RJbnQ1
MkluR1BSKTsKKyAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5p
cXVlID09IFVuYm94ZWRJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFu
SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5i
b3hlZEludDUySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDUySW5HUFIg
fHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZENlbGxJbkdQUik7CiAgICAgICAgIHJldHVybiBtX3Nv
dXJjZS5ncHI7CiAgICAgfQogICAgIApAQCAtMzM5LDYgKzM0NSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50KCJib29s
KCIsIGdwcigpLCAiKSIpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVuYm94
ZWRDZWxsSW5HUFI6CisgICAgICAgICAgICBvdXQucHJpbnQoImNlbGwoIiwgZ3ByKCksICIpIik7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVUludDMySW5HUFI6CiAgICAgICAg
ICAgICBvdXQucHJpbnQoInVpbnQzMigiLCBncHIoKSwgIikiKTsKICAgICAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyMzJfNjQuY3BwCShyZXZpc2lvbiAxNTY1NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY3LDk4ICsxNjcsMTA0IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25z
dCAKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICAvLyA0KSBGaWd1cmUgb3V0IGhvdyBtYW55
IHNjcmF0Y2ggc2xvdHMgd2UnbGwgbmVlZC4gV2UgbmVlZCBvbmUgZm9yIGV2ZXJ5IEdQUi9GUFIK
LSAgICAvLyAgICB3aG9zZSBkZXN0aW5hdGlvbiBpcyBub3cgb2NjdXBpZWQgYnkgYSBERkcgdmly
dHVhbCByZWdpc3RlciwgYW5kIHdlIG5lZWQKLSAgICAvLyAgICBvbmUgZm9yIGV2ZXJ5IGRpc3Bs
YWNlZCB2aXJ0dWFsIHJlZ2lzdGVyIGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4KLSAgICAvLyAgICBH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyBvZiB0aGVtLiBBbHNvIHNlZSBpZiB0aGVyZSBhcmUg
YW55IGNvbnN0YW50cywKLSAgICAvLyAgICBhbnkgdW5kZWZpbmVkIHNsb3RzLCBhbnkgRlBSIHNs
b3RzLCBhbmQgYW55IHVuYm94ZWQgaW50cy4KLSAgICAgICAgICAgIAotICAgIFZlY3Rvcjxib29s
PiBwb2lzb25lZFZpcnR1YWxSZWdpc3RlcnMob3BlcmFuZHMubnVtYmVyT2ZMb2NhbHMoKSk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBvaXNvbmVkVmlydHVhbFJlZ2lzdGVycy5zaXpl
KCk7ICsraSkKLSAgICAgICAgcG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzW2ldID0gZmFsc2U7Cisg
ICAgLy8gRG8gYSBzaW1wbGlmaWVkIE9TUiBleGl0LiBTZWUgREZHT1NSRXhpdENvbXBpbGVyNjQu
Y3BwJ3MgY29tbWVudCByZWdhcmRpbmcgaG93IGFuZCB3bnkgd2UKKyAgICAvLyBkbyB0aGlzIHNp
bXBsZSBhcHByb2FjaC4KIAotICAgIHVuc2lnbmVkIG51bWJlck9mUG9pc29uZWRWaXJ0dWFsUmVn
aXN0ZXJzID0gMDsKLSAgICB1bnNpZ25lZCBudW1iZXJPZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3Rl
cnMgPSAwOworICAgIC8vIDQpIFNhdmUgYWxsIHN0YXRlIGZyb20gR1BScyBpbnRvIHRoZSBzY3Jh
dGNoIGJ1ZmZlci4KICAgICAKLSAgICAvLyBCb29sZWFucyBmb3IgZmFzdCBjaGVja3MuIFdlIGV4
cGVjdCB0aGF0IG1vc3QgT1NSIGV4aXRzIGRvIG5vdCBoYXZlIHRvIHJlYm94Ci0gICAgLy8gSW50
MzJzLCBoYXZlIG5vIEZQUnMsIGFuZCBoYXZlIG5vIGNvbnN0YW50cy4gSWYgdGhlcmUgYXJlIGNv
bnN0YW50cywgd2UKLSAgICAvLyBleHBlY3QgbW9zdCBvZiB0aGVtIHRvIGJlIGpzVW5kZWZpbmVk
KCk7IGlmIHRoYXQncyB0cnVlIHRoZW4gd2UgaGFuZGxlIHRoYXQKLSAgICAvLyBzcGVjaWFsbHkg
dG8gbWluaW1pemUgY29kZSBzaXplIGFuZCBleGVjdXRpb24gdGltZS4KLSAgICBib29sIGhhdmVV
bmJveGVkSW50MzJJbkpTU3RhY2sgPSBmYWxzZTsKLSAgICBib29sIGhhdmVVbmJveGVkQ2VsbElu
SlNTdGFjayA9IGZhbHNlOwotICAgIGJvb2wgaGF2ZVVuYm94ZWRCb29sZWFuSW5KU1N0YWNrID0g
ZmFsc2U7Ci0gICAgYm9vbCBoYXZlVUludDMycyA9IGZhbHNlOwotICAgIGJvb2wgaGF2ZUZQUnMg
PSBmYWxzZTsKLSAgICBib29sIGhhdmVDb25zdGFudHMgPSBmYWxzZTsKLSAgICBib29sIGhhdmVV
bmRlZmluZWQgPSBmYWxzZTsKLSAgICBib29sIGhhdmVBcmd1bWVudHMgPSBmYWxzZTsKKyAgICBT
Y3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gbV9qaXQudm0oKS0+c2NyYXRjaEJ1ZmZlckZv
clNpemUoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIG9wZXJhbmRzLnNpemUoKSk7CisgICAgRW5j
b2RlZEpTVmFsdWUqIHNjcmF0Y2ggPSBzY3JhdGNoQnVmZmVyID8gc3RhdGljX2Nhc3Q8RW5jb2Rl
ZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpIDogMDsKICAgICAKICAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7
CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhd
OworICAgICAgICAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewotICAg
ICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNl
ZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAg
ICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6IHsKLSAgICAgICAgICAgIG51bWJlck9m
RGlzcGxhY2VkVmlydHVhbFJlZ2lzdGVycysrOwotICAgICAgICAgICAgQVNTRVJUKHJlY292ZXJ5
LnZpcnR1YWxSZWdpc3RlcigpLmlzTG9jYWwoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IC8vIFNlZSBpZiB3ZSBtaWdodCBsaWtlIHRvIHN0b3JlIHRvIHRoaXMgdmlydHVhbCByZWdpc3Rl
ciBiZWZvcmUgZG9pbmcKLSAgICAgICAgICAgIC8vIHZpcnR1YWwgcmVnaXN0ZXIgc2h1ZmZsaW5n
LiBJZiBzbywgd2Ugc2F5IHRoYXQgdGhlIHZpcnR1YWwgcmVnaXN0ZXIKLSAgICAgICAgICAgIC8v
IGlzIHBvaXNvbmVkOiBpdCBjYW5ub3QgYmUgc3RvcmVkIHRvIHVudGlsIGFmdGVyIGRpc3BsYWNl
ZCB2aXJ0dWFsCi0gICAgICAgICAgICAvLyByZWdpc3RlcnMgYXJlIGhhbmRsZWQuIFdlIHRyYWNr
IHBvaXNvbmVkIHZpcnR1YWwgcmVnaXN0ZXIgY2FyZWZ1bGx5Ci0gICAgICAgICAgICAvLyB0byBl
bnN1cmUgdGhpcyBoYXBwZW5zIGVmZmljaWVudGx5LiBOb3RlIHRoYXQgd2UgZXhwZWN0IHRoaXMg
Y2FzZQotICAgICAgICAgICAgLy8gdG8gYmUgcmFyZSwgc28gdGhlIGhhbmRsaW5nIG9mIGl0IGlz
IG9wdGltaXplZCBmb3IgdGhlIGNhc2VzIGluCi0gICAgICAgICAgICAvLyB3aGljaCBpdCBkb2Vz
IG5vdCBoYXBwZW4uCi0gICAgICAgICAgICBpbnQgbG9jYWwgPSByZWNvdmVyeS52aXJ0dWFsUmVn
aXN0ZXIoKS50b0xvY2FsKCk7Ci0gICAgICAgICAgICBpZiAobG9jYWwgPCAoaW50KW9wZXJhbmRz
Lm51bWJlck9mTG9jYWxzKCkpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wZXJhbmRzLmxv
Y2FsKGxvY2FsKS50ZWNobmlxdWUoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgSW5HUFI6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAgICAgICAgICAgICBj
YXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6Ci0gICAgICAgICAgICAgICAgY2FzZSBVSW50MzJJbkdQ
UjoKLSAgICAgICAgICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAgICAgICBjYXNlIElu
RlBSOgotICAgICAgICAgICAgICAgICAgICBpZiAoIXBvaXNvbmVkVmlydHVhbFJlZ2lzdGVyc1ts
b2NhbF0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvaXNvbmVkVmlydHVhbFJlZ2lzdGVy
c1tsb2NhbF0gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZQb2lzb25l
ZFZpcnR1YWxSZWdpc3RlcnMrKzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICAgICAgfQorICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BS
OgogICAgICAgICBjYXNlIFVJbnQzMkluR1BSOgotICAgICAgICAgICAgaGF2ZVVJbnQzMnMgPSB0
cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkSW50MzI6Ci0gICAgICAgICAgICBoYXZlVW5ib3hlZEludDMySW5KU1N0YWNrID0g
dHJ1ZTsKKyAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgorICAgICAgICBjYXNlIFVu
Ym94ZWRDZWxsSW5HUFI6CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAg
ICAgIHJlY292ZXJ5LmdwcigpLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZENlbGw6Ci0gICAgICAgICAgICBoYXZlVW5ib3hlZENlbGxJbkpTU3RhY2sg
PSB0cnVlOworICAgICAgICBjYXNlIEluUGFpcjoKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIo
CisgICAgICAgICAgICAgICAgcmVjb3ZlcnkudGFnR1BSKCksCisgICAgICAgICAgICAgICAgJmJp
dHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNC
aXRzLnRhZyk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIHJl
Y292ZXJ5LnBheWxvYWRHUFIoKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRCb29sZWFuOgotICAgICAgICAgICAgaGF2ZVVuYm94ZWRCb29sZWFuSW5K
U1N0YWNrID0gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gTm93IGFsbCBHUFJzIGFy
ZSBmcmVlIHRvIHJldXNlLgorICAgIAorICAgIC8vIDUpIFNhdmUgYWxsIHN0YXRlIGZyb20gRlBS
cyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4KKyAgICAKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGNvbnN0IFZh
bHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOworICAgICAgICAKKyAgICAg
ICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIEluRlBSOgot
ICAgICAgICAgICAgaGF2ZUZQUnMgPSB0cnVlOworICAgICAgICAgICAgbV9qaXQubW92ZShBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUocmVjb3ZlcnkuZnByKCksIEdQUklu
Zm86OnJlZ1QwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgQ29uc3RhbnQ6Ci0gICAgICAgICAgICBoYXZlQ29uc3RhbnRzID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGlmIChyZWNvdmVyeS5jb25zdGFudCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAg
ICAgaGF2ZVVuZGVmaW5lZCA9IHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBOb3cgYWxsIEZQUnMgYXJlIGZy
ZWUgdG8gcmV1c2UuCisgICAgCisgICAgLy8gNikgU2F2ZSBhbGwgc3RhdGUgZnJvbSB0aGUgc3Rh
Y2sgaW50byB0aGUgc2NyYXRjaCBidWZmZXIuIEZvciBzaW1wbGljaXR5IHdlCisgICAgLy8gICAg
ZG8gdGhpcyBldmVuIGZvciBzdGF0ZSB0aGF0J3MgYWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ug
b24gdGhlIHN0YWNrLgorICAgIC8vICAgIEl0IG1ha2VzIHRoaW5ncyBzaW1wbGVyIGxhdGVyLgor
ICAgIAorICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7
ICsraW5kZXgpIHsKKyAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVy
YW5kc1tpbmRleF07CisgICAgICAgIGludCBvcGVyYW5kID0gb3BlcmFuZHMub3BlcmFuZEZvcklu
ZGV4KGluZGV4KTsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVl
KCkpIHsKKyAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgSW50
MzJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0
YWNrOgorICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2Ug
Qm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG1faml0LmxvYWQzMigKKyAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVn
aXN0ZXIoKSksCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAg
bV9qaXQubG9hZDMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZv
cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6
cmVnVDEpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMCwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsCisgICAgICAgICAg
ICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGlu
ZGV4KS0+YXNCaXRzLnBheWxvYWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
LSAgICAgICAgY2FzZSBBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6Ci0gICAgICAgICAgICBo
YXZlQXJndW1lbnRzID0gdHJ1ZTsKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJv
eGVkSW50MzI6CisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6Cisg
ICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW46CisgICAgICAgICAg
ICBtX2ppdC5sb2FkMzIoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Io
b3BlcmFuZCksCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAg
bV9qaXQubG9hZDMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZv
cihvcGVyYW5kKSwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAg
ICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAg
ICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2gg
KyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0
PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9h
ZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgpA
QCAtMjY2LDM4MCArMjcyLDE1OCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQo
Y29uc3QgCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgc2NyYXRjaEJ1ZmZl
ckxlbmd0aEJlZm9yZVVJbnQzMnMgPSBudW1iZXJPZlBvaXNvbmVkVmlydHVhbFJlZ2lzdGVycyAr
ICgobnVtYmVyT2ZEaXNwbGFjZWRWaXJ0dWFsUmVnaXN0ZXJzICogMikgPD0gR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnMgPyAwIDogbnVtYmVyT2ZEaXNwbGFjZWRWaXJ0dWFsUmVnaXN0ZXJzKTsK
LSAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gbV9qaXQudm0oKS0+c2NyYXRjaEJ1
ZmZlckZvclNpemUoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChzY3JhdGNoQnVmZmVyTGVuZ3Ro
QmVmb3JlVUludDMycyArIChoYXZlVUludDMycyA/IDIgOiAwKSkpOwotICAgIEVuY29kZWRKU1Zh
bHVlKiBzY3JhdGNoRGF0YUJ1ZmZlciA9IHNjcmF0Y2hCdWZmZXIgPyBzdGF0aWNfY2FzdDxFbmNv
ZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSkgOiAwOwotCi0gICAgLy8g
RnJvbSBoZXJlIG9uLCB0aGUgY29kZSBhc3N1bWVzIHRoYXQgaXQgaXMgcHJvZml0YWJsZSB0byBt
YXhpbWl6ZSB0aGUgZGlzdGFuY2UKLSAgICAvLyBiZXR3ZWVuIHdoZW4gc29tZXRoaW5nIGlzIGNv
bXB1dGVkIGFuZCB3aGVuIGl0IGlzIHN0b3JlZC4KLSAgICAKLSAgICAvLyA1KSBQZXJmb3JtIGFs
bCByZWJveGluZyBvZiBpbnRlZ2VycyBhbmQgY2VsbHMsIGV4Y2VwdCBmb3IgdGhvc2UgaW4gcmVn
aXN0ZXJzLgotCi0gICAgaWYgKGhhdmVVbmJveGVkSW50MzJJbkpTU3RhY2sgfHwgaGF2ZVVuYm94
ZWRDZWxsSW5KU1N0YWNrIHx8IGhhdmVVbmJveGVkQm9vbGVhbkluSlNTdGFjaykgewotICAgICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4
KSB7Ci0gICAgICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRz
W2luZGV4XTsKLSAgICAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgotICAgICAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6SW50MzJUYWcpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFs
UmVnaXN0ZXI+KG9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkpKSk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZENlbGw6Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Ioc3Rh
dGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgp
KSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlIEFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWRCb29sZWFuOgotICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksIEFzc2Vt
Ymx5SGVscGVyczo6dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZHMu
b3BlcmFuZEZvckluZGV4KGluZGV4KSkpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIDYpIER1bXAgYWxsIG5vbi1wb2lzb25lZCBHUFJz
LiBGb3IgcG9pc29uZWQgR1BScywgc2F2ZSB0aGVtIGludG8gdGhlIHNjcmF0Y2ggc3RvcmFnZS4K
LSAgICAvLyAgICBOb3RlIHRoYXQgR1BScyBkbyBub3QgaGF2ZSBhIGZhc3QgY2hhbmdlIChsaWtl
IGhhdmVGUFJzKSBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0Ci0gICAgLy8gICAgbW9zdCBPU1IgZmFp
bHVyZSBwb2ludHMgd2lsbCBoYXZlIGF0IGxlYXN0IG9uZSBHUFIgdGhhdCBuZWVkcyB0byBiZSBk
dW1wZWQuCisgICAgLy8gNykgRG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9y
ZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KICAgICAKLSAgICBpbml0aWFsaXplUG9pc29u
ZWQob3BlcmFuZHMubnVtYmVyT2ZMb2NhbHMoKSk7Ci0gICAgdW5zaWduZWQgY3VycmVudFBvaXNv
bkluZGV4ID0gMDsKKyAgICBib29sIGhhdmVBcmd1bWVudHMgPSBmYWxzZTsKICAgICAKICAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7
CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhd
OwogICAgICAgICBpbnQgb3BlcmFuZCA9IG9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCk7
CisgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAg
ICAgIGNhc2UgSW5HUFI6CisgICAgICAgIGNhc2UgSW5QYWlyOgorICAgICAgICBjYXNlIEluRlBS
OgorICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBEb3VibGVE
aXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCisgICAgICAgICAg
ICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGlu
ZGV4KS0+YXNCaXRzLnRhZywKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgICAgICBtX2ppdC5sb2FkMzIoCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCisg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MigKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMy
KAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLAorICAgICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoK
ICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAgICAgY2FzZSBVbmJveGVkQm9v
bGVhbkluR1BSOgotICAgICAgICAgICAgaWYgKG9wZXJhbmRzLmlzVmFyaWFibGUoaW5kZXgpICYm
IHBvaXNvbmVkVmlydHVhbFJlZ2lzdGVyc1tvcGVyYW5kcy52YXJpYWJsZUZvckluZGV4KGluZGV4
KV0pIHsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHJlY292ZXJ5LmdwcigpLCByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihzY3JhdGNoRGF0YUJ1ZmZlciArIGN1cnJlbnRQb2lzb25JbmRl
eCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxv
YWQpKTsKLSAgICAgICAgICAgICAgICBtX3BvaXNvblNjcmF0Y2hJbmRpY2VzW29wZXJhbmRzLnZh
cmlhYmxlRm9ySW5kZXgoaW5kZXgpXSA9IGN1cnJlbnRQb2lzb25JbmRleDsKLSAgICAgICAgICAg
ICAgICBjdXJyZW50UG9pc29uSW5kZXgrKzsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgdWludDMyX3QgdGFnID0gSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZzsKLSAgICAgICAg
ICAgICAgICBpZiAocmVjb3ZlcnkudGVjaG5pcXVlKCkgPT0gSW5HUFIpCi0gICAgICAgICAgICAg
ICAgICAgIHRhZyA9IEpTVmFsdWU6OkNlbGxUYWc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
cmVjb3ZlcnkudGVjaG5pcXVlKCkgPT0gVW5ib3hlZEludDMySW5HUFIpCi0gICAgICAgICAgICAg
ICAgICAgIHRhZyA9IEpTVmFsdWU6OkludDMyVGFnOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgdGFnID0gSlNWYWx1ZTo6Qm9vbGVhblRhZzsKLSAgICAgICAgICAg
ICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHRhZyksIEFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpb3BlcmFuZCkpOwotICAgICAg
ICAgICAgICAgIG1faml0LnN0b3JlMzIocmVjb3ZlcnkuZ3ByKCksIEFzc2VtYmx5SGVscGVyczo6
cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKW9wZXJhbmQpKTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG1faml0Lmxv
YWQzMigKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKKyAgICAgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwKKyAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7CisgICAgICAg
ICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJblBhaXI6Ci0gICAgICAgICAgICBpZiAob3Bl
cmFuZHMuaXNWYXJpYWJsZShpbmRleCkgJiYgcG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzW29wZXJh
bmRzLnZhcmlhYmxlRm9ySW5kZXgoaW5kZXgpXSkgewotICAgICAgICAgICAgICAgIG1faml0LnN0
b3JlMzIocmVjb3ZlcnkudGFnR1BSKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNjcmF0Y2hE
YXRhQnVmZmVyICsgY3VycmVudFBvaXNvbkluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3Rv
cmUzMihyZWNvdmVyeS5wYXlsb2FkR1BSKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNjcmF0
Y2hEYXRhQnVmZmVyICsgY3VycmVudFBvaXNvbkluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwotICAgICAgICAgICAgICAgIG1f
cG9pc29uU2NyYXRjaEluZGljZXNbb3BlcmFuZHMudmFyaWFibGVGb3JJbmRleChpbmRleCldID0g
Y3VycmVudFBvaXNvbkluZGV4OwotICAgICAgICAgICAgICAgIGN1cnJlbnRQb2lzb25JbmRleCsr
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHJl
Y292ZXJ5LnRhZ0dQUigpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVy
KW9wZXJhbmQpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHJlY292ZXJ5LnBheWxv
YWRHUFIoKSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpb3Bl
cmFuZCkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZENlbGw6CisgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoK
KyAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3Jp
cHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksCisg
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOworICAgICAg
ICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKKyAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVUludDMySW5HUFI6IHsKLSAgICAgICAgICAg
IEVuY29kZWRKU1ZhbHVlKiBteVNjcmF0Y2ggPSBzY3JhdGNoRGF0YUJ1ZmZlciArIHNjcmF0Y2hC
dWZmZXJMZW5ndGhCZWZvcmVVSW50MzJzOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBHUFJS
ZWcgYWRkcmVzc0dQUiA9IEdQUkluZm86OnJlZ1QwOwotICAgICAgICAgICAgaWYgKGFkZHJlc3NH
UFIgPT0gcmVjb3ZlcnkuZ3ByKCkpCi0gICAgICAgICAgICAgICAgYWRkcmVzc0dQUiA9IEdQUklu
Zm86OnJlZ1QxOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihhZGRy
ZXNzR1BSLCBteVNjcmF0Y2gpOwotICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobXlTY3JhdGNoICsgMSksIGFkZHJlc3NHUFIpOwotICAgICAgICAg
ICAgbV9qaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgYWRkcmVzc0dQUik7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBwb3NpdGl2ZSA9IG1f
aml0LmJyYW5jaDMyKEFzc2VtYmx5SGVscGVyczo6R3JlYXRlclRoYW5PckVxdWFsLCByZWNvdmVy
eS5ncHIoKSwgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShyZWNvdmVyeS5ncHIoKSwg
RlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5hZGREb3VibGUoQXNzZW1ibHlI
ZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJkFzc2VtYmx5SGVscGVyczo6dHdvVG9UaGUzMiksIEZQ
UkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaWYgKG9wZXJhbmRzLmlzVmFyaWFibGUoaW5k
ZXgpICYmIHBvaXNvbmVkVmlydHVhbFJlZ2lzdGVyc1tvcGVyYW5kcy52YXJpYWJsZUZvckluZGV4
KGluZGV4KV0pIHsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cihzY3JhdGNoRGF0YUJ1ZmZlciArIGN1cnJlbnRQb2lzb25JbmRleCksIGFk
ZHJlc3NHUFIpOwotICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZw
UmVnVDAsIGFkZHJlc3NHUFIpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
bV9qaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpb3BlcmFuZCkpOworICAgICAgICBjYXNlIEFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWRCb29sZWFuOgorICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5H
UFI6CisgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAg
IG1faml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKKyAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xl
YW5UYWcpLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQp
KTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6
cmVnVDAsCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJh
bmQpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgVUlu
dDMySW5HUFI6IHsKKyAgICAgICAgICAgIG1faml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICAm
Yml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5h
c0JpdHMucGF5bG9hZCwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMigKKyAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwKKyAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MCkpOworICAgICAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoR1BSSW5mbzo6cmVn
VDAsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgbV9qaXQuYWRkRG91YmxlKAorICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZBc3NlbWJseUhl
bHBlcnM6OnR3b1RvVGhlMzIpLAorICAgICAgICAgICAgICAgIEZQUkluZm86OmZwUmVnVDApOwor
ICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBw
b3NpdGl2ZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChvcGVy
YW5kcy5pc1ZhcmlhYmxlKGluZGV4KSAmJiBwb2lzb25lZFZpcnR1YWxSZWdpc3RlcnNbb3BlcmFu
ZHMudmFyaWFibGVGb3JJbmRleChpbmRleCldKSB7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3Rv
cmUzMihyZWNvdmVyeS5ncHIoKSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2NyYXRjaERhdGFC
dWZmZXIgKyBjdXJyZW50UG9pc29uSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3Rv
cmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNjcmF0Y2hEYXRhQnVmZmVyICsgY3VycmVudFBvaXNvbklu
ZGV4KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFn
KSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIo
cmVjb3ZlcnkuZ3ByKCksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lz
dGVyKW9wZXJhbmQpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgQXNzZW1ibHlIZWxwZXJzOjp0
YWdGb3IoKFZpcnR1YWxSZWdpc3RlcilvcGVyYW5kKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5
SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMy
KAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkludDMyVGFnKSwKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVy
YW5kKSk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobXlTY3Jh
dGNoICsgMSksIGFkZHJlc3NHUFIpOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShhZGRy
ZXNzR1BSLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmxvYWRQdHIobXlT
Y3JhdGNoLCBhZGRyZXNzR1BSKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKG9wZXJhbmRzLmlzVmFyaWFibGUoaW5kZXgpICYmIHBvaXNvbmVkVmlydHVh
bFJlZ2lzdGVyc1tvcGVyYW5kcy52YXJpYWJsZUZvckluZGV4KGluZGV4KV0pIHsKLSAgICAgICAg
ICAgICAgICBtX3BvaXNvblNjcmF0Y2hJbmRpY2VzW29wZXJhbmRzLnZhcmlhYmxlRm9ySW5kZXgo
aW5kZXgpXSA9IGN1cnJlbnRQb2lzb25JbmRleDsKLSAgICAgICAgICAgICAgICBjdXJyZW50UG9p
c29uSW5kZXgrKzsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBDb25zdGFudDoK
KyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS50YWcoKSksCisgICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgbV9q
aXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSksCisgICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIDcpIER1bXAgYWxsIGRvdWJsZXMgaW50byB0aGUg
c3RhY2ssIG9yIHRvIHRoZSBzY3JhdGNoIHN0b3JhZ2UgaWYgdGhlCi0gICAgLy8gICAgZGVzdGlu
YXRpb24gdmlydHVhbCByZWdpc3RlciBpcyBwb2lzb25lZC4KLSAgICBpZiAoaGF2ZUZQUnMpIHsK
LSAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsg
KytpbmRleCkgewotICAgICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBv
cGVyYW5kc1tpbmRleF07Ci0gICAgICAgICAgICBpZiAocmVjb3ZlcnkudGVjaG5pcXVlKCkgIT0g
SW5GUFIpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAob3BlcmFu
ZHMuaXNWYXJpYWJsZShpbmRleCkgJiYgcG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzW29wZXJhbmRz
LnZhcmlhYmxlRm9ySW5kZXgoaW5kZXgpXSkgewotICAgICAgICAgICAgICAgIG1faml0LnN0b3Jl
RG91YmxlKHJlY292ZXJ5LmZwcigpLCBzY3JhdGNoRGF0YUJ1ZmZlciArIGN1cnJlbnRQb2lzb25J
bmRleCk7Ci0gICAgICAgICAgICAgICAgbV9wb2lzb25TY3JhdGNoSW5kaWNlc1tvcGVyYW5kcy52
YXJpYWJsZUZvckluZGV4KGluZGV4KV0gPSBjdXJyZW50UG9pc29uSW5kZXg7Ci0gICAgICAgICAg
ICAgICAgY3VycmVudFBvaXNvbkluZGV4Kys7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShyZWNvdmVyeS5mcHIoKSwgQXNzZW1ibHlIZWxwZXJz
OjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpb3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGlu
ZGV4KSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIEF0IHRoaXMgcG9pbnQgYWxs
IEdQUnMgYXJlIGF2YWlsYWJsZSBmb3Igc2NyYXRjaCB1c2UuCi0gICAgCi0gICAgQVNTRVJUKGN1
cnJlbnRQb2lzb25JbmRleCA9PSBudW1iZXJPZlBvaXNvbmVkVmlydHVhbFJlZ2lzdGVycyk7Ci0g
ICAgCi0gICAgLy8gOCkgUmVzaHVmZmxlIGRpc3BsYWNlZCB2aXJ0dWFsIHJlZ2lzdGVycy4gT3B0
aW1pemUgZm9yIHRoZSBjYXNlIHRoYXQKLSAgICAvLyAgICB0aGUgbnVtYmVyIG9mIGRpc3BsYWNl
ZCB2aXJ0dWFsIHJlZ2lzdGVycyBpcyBub3QgbW9yZSB0aGFuIHRoZSBudW1iZXIKLSAgICAvLyAg
ICBvZiBhdmFpbGFibGUgcGh5c2ljYWwgcmVnaXN0ZXJzLgotICAgIAotICAgIGlmIChudW1iZXJP
ZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3RlcnMpIHsKLSAgICAgICAgaWYgKG51bWJlck9mRGlzcGxh
Y2VkVmlydHVhbFJlZ2lzdGVycyAqIDIgPD0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpIHsK
LSAgICAgICAgICAgIC8vIFNvIGZhciB0aGlzIGFwcGVhcnMgdG8gYmUgdGhlIGNhc2UgdGhhdCB0
cmlnZ2VycyBhbGwgdGhlIHRpbWUsIGJ1dAotICAgICAgICAgICAgLy8gdGhhdCBpcyBmYXIgZnJv
bSBndWFyYW50ZWVkLgotICAgICAgICAKLSAgICAgICAgICAgIHVuc2lnbmVkIGRpc3BsYWNlbWVu
dEluZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBv
cGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBWYWx1ZVJl
Y292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKLSAgICAgICAgICAgICAgICBzd2l0
Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFj
ZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhl
bHBlcnM6OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjp0
b1JlZ2lzdGVyKGRpc3BsYWNlbWVudEluZGV4KyspKTsKLSAgICAgICAgICAgICAgICAgICAgbV9q
aXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rl
cigpKSwgR1BSSW5mbzo6dG9SZWdpc3RlcihkaXNwbGFjZW1lbnRJbmRleCsrKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBl
cnM6OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjp0b1Jl
Z2lzdGVyKGRpc3BsYWNlbWVudEluZGV4KyspKTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQu
bW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIEdQ
UkluZm86OnRvUmVnaXN0ZXIoZGlzcGxhY2VtZW50SW5kZXgrKykpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6
Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxv
YWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGRp
c3BsYWNlbWVudEluZGV4KyspKTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6dG9S
ZWdpc3RlcihkaXNwbGFjZW1lbnRJbmRleCsrKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihy
ZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnRvUmVnaXN0ZXIoZGlzcGxhY2Vt
ZW50SW5kZXgrKykpOwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLCBHUFJJbmZvOjp0b1JlZ2lz
dGVyKGRpc3BsYWNlbWVudEluZGV4KyspKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgICAgIGRpc3Bs
YWNlbWVudEluZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBW
YWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKLSAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBE
aXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZElu
SlNTdGFjazoKLSAgICAgICAgICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUkluZm86OnRvUmVnaXN0ZXIoZGlzcGxhY2VtZW50
SW5kZXgrKyksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKW9w
ZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9q
aXQuc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGRpc3BsYWNlbWVudEluZGV4KyspLCBBc3Nl
bWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKW9wZXJhbmRzLm9wZXJhbmRGb3JJ
bmRleChpbmRleCkpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHVzZSB0aGUgc2h1ZmZsaW5nIGFsZ29yaXRobSB0aGF0IHdlIHVzZQotICAg
ICAgICAgICAgLy8gZm9yIHNwZWN1bGF0aXZlLT5ub24tc3BlY3VsYXRpdmUganVtcHMsIGlmIHdl
IGV2ZXIgZGlzY292ZXIgdGhhdAotICAgICAgICAgICAgLy8gc29tZSBob3QgY29kZSB3aXRoIGxv
dHMgb2YgbGl2ZSB2YWx1ZXMgdGhhdCBnZXQgZGlzcGxhY2VkIGFuZAotICAgICAgICAgICAgLy8g
c3BpbGxlZCByZWFsbHkgZW5qb3lzIGZyZXF1ZW50bHkgZmFpbGluZyBzcGVjdWxhdGlvbi4KLSAg
ICAgICAgCi0gICAgICAgICAgICAvLyBGb3Igbm93IHRoaXMgY29kZSBpcyBlbmdpbmVlcmVkIHRv
IGJlIGNvcnJlY3QgYnV0IHByb2JhYmx5IG5vdAotICAgICAgICAgICAgLy8gc3VwZXIuIEluIHBh
cnRpY3VsYXIsIGl0IGNvcnJlY3RseSBoYW5kbGVzIGNhc2VzIHdoZXJlIGZvciBleGFtcGxlCi0g
ICAgICAgICAgICAvLyB0aGUgZGlzcGxhY2VtZW50cyBhcmUgYSBwZXJtdXRhdGlvbiBvZiB0aGUg
ZGVzdGluYXRpb24gdmFsdWVzLCBsaWtlCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8g
MSAtPiAyCi0gICAgICAgICAgICAvLyAyIC0+IDEKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAg
ICAvLyBJdCBhY2NvbXBsaXNoZXMgdGhpcyBieSBzaW1wbHkgbGlmdGluZyBhbGwgb2YgdGhlIHZp
cnR1YWwgcmVnaXN0ZXJzCi0gICAgICAgICAgICAvLyBmcm9tIHRoZWlyIG9sZCAoREZHIEpJVCkg
bG9jYXRpb25zIGFuZCBkcm9wcGluZyB0aGVtIGluIGEgc2NyYXRjaAotICAgICAgICAgICAgLy8g
bG9jYXRpb24gaW4gbWVtb3J5LCBhbmQgdGhlbiB0cmFuc2ZlcnJpbmcgZnJvbSB0aGF0IHNjcmF0
Y2ggbG9jYXRpb24KLSAgICAgICAgICAgIC8vIHRvIHRoZWlyIG5ldyAob2xkIEpJVCkgbG9jYXRp
b25zLgotICAgICAgICAKLSAgICAgICAgICAgIHVuc2lnbmVkIHNjcmF0Y2hJbmRleCA9IG51bWJl
ck9mUG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkgewotICAgICAgICAgICAg
ICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwotICAg
ICAgICAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0
ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMy
KEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BS
SW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUkluZm86
OnJlZ1QwLCByZWludGVycHJldF9jYXN0PGNoYXIqPihzY3JhdGNoRGF0YUJ1ZmZlciArIHNjcmF0
Y2hJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnBheWxvYWQpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihHUFJJbmZvOjpy
ZWdUMSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2NyYXRjaERhdGFCdWZmZXIgKyBzY3JhdGNo
SW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50
YWcpKTsKLSAgICAgICAgICAgICAgICAgICAgc2NyYXRjaEluZGV4Kys7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3Rh
Y2s6Ci0gICAgICAgICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAg
ICAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihyZWNvdmVyeS52
aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAg
bV9qaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMCwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2Ny
YXRjaERhdGFCdWZmZXIgKyBzY3JhdGNoSW5kZXgrKykgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
ICAgIHNjcmF0Y2hJbmRleCA9IG51bWJlck9mUG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzOwotICAg
ICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsg
KytpbmRleCkgewotICAgICAgICAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5
ID0gb3BlcmFuZHNbaW5kZXhdOwotICAgICAgICAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVj
aG5pcXVlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKLSAg
ICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNj
cmF0Y2hEYXRhQnVmZmVyICsgc2NyYXRjaEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNjcmF0
Y2hEYXRhQnVmZmVyICsgc2NyYXRjaEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OnBh
eWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgp
KSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDEsIEFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpb3BlcmFuZHMub3BlcmFuZEZv
ckluZGV4KGluZGV4KSkpOwotICAgICAgICAgICAgICAgICAgICBzY3JhdGNoSW5kZXgrKzsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBJbnQzMkRpc3Bs
YWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KHNjcmF0Y2hEYXRhQnVmZmVyICsgc2NyYXRjaEluZGV4KyspICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSwgR1BS
SW5mbzo6cmVnVDApOwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgQXNzZW1ibHlIZWxwZXJz
Ojp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcilvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgp
KSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDAsIEFz
c2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKW9wZXJhbmRzLm9wZXJh
bmRGb3JJbmRleChpbmRleCkpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkMzIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2NyYXRjaERhdGFCdWZmZXIg
KyBzY3JhdGNoSW5kZXgrKykgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpb3BlcmFuZHMu
b3BlcmFuZEZvckluZGV4KGluZGV4KSkpOwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9y
ZTMyKEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxS
ZWdpc3RlcilvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNT
dGFjazoKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KHNjcmF0Y2hEYXRhQnVmZmVyICsgc2NyYXRjaEluZGV4KyspICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSwgR1BSSW5mbzo6cmVn
VDApOwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zv
cigoVmlydHVhbFJlZ2lzdGVyKW9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkpKTsKLSAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlI
ZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpb3BlcmFuZHMub3BlcmFuZEZvcklu
ZGV4KGluZGV4KSkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJbmRl
eCA9PSBudW1iZXJPZlBvaXNvbmVkVmlydHVhbFJlZ2lzdGVycyArIG51bWJlck9mRGlzcGxhY2Vk
VmlydHVhbFJlZ2lzdGVycyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLy8gOSkgRHVt
cCBhbGwgcG9pc29uZWQgdmlydHVhbCByZWdpc3RlcnMuCi0gICAgCi0gICAgaWYgKG51bWJlck9m
UG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzKSB7Ci0gICAgICAgIGZvciAoaW50IGxvY2FsSW5kZXgg
PSAwOyBsb2NhbEluZGV4IDwgKGludClvcGVyYW5kcy5udW1iZXJPZkxvY2FscygpOyArK2xvY2Fs
SW5kZXgpIHsKLSAgICAgICAgICAgIGlmICghcG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzW2xvY2Fs
SW5kZXhdKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gdmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwobG9jYWxJbmRleCk7Ci0KLSAgICAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJl
Y292ZXJ5ID0gb3BlcmFuZHMubG9jYWwobG9jYWxJbmRleCk7Ci0gICAgICAgICAgICBzd2l0Y2gg
KHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIEluR1BSOgotICAgICAg
ICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAgICAgICAgIGNhc2UgVW5ib3hlZEJv
b2xlYW5JbkdQUjogewotICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihyZWludGVycHJldF9j
YXN0PGNoYXIqPihzY3JhdGNoRGF0YUJ1ZmZlciArIHBvaXNvbkluZGV4KGxvY2FsSW5kZXgpKSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCks
IEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUkluZm86
OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSk7Ci0g
ICAgICAgICAgICAgICAgdWludDMyX3QgdGFnID0gSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZzsKLSAg
ICAgICAgICAgICAgICBpZiAocmVjb3ZlcnkudGVjaG5pcXVlKCkgPT0gSW5HUFIpCi0gICAgICAg
ICAgICAgICAgICAgIHRhZyA9IEpTVmFsdWU6OkNlbGxUYWc7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAocmVjb3ZlcnkudGVjaG5pcXVlKCkgPT0gVW5ib3hlZEludDMySW5HUFIpCi0gICAgICAg
ICAgICAgICAgICAgIHRhZyA9IEpTVmFsdWU6OkludDMyVGFnOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgdGFnID0gSlNWYWx1ZTo6Qm9vbGVhblRhZzsKLSAgICAg
ICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHRh
ZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlcikpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjYXNlIEluRlBSOgot
ICAgICAgICAgICAgY2FzZSBJblBhaXI6Ci0gICAgICAgICAgICBjYXNlIFVJbnQzMkluR1BSOgot
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihyZWludGVycHJldF9jYXN0PGNoYXIqPihzY3Jh
dGNoRGF0YUJ1ZmZlciArIHBvaXNvbkluZGV4KGxvY2FsSW5kZXgpKSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCksIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
c2NyYXRjaERhdGFCdWZmZXIgKyBwb2lzb25JbmRleChsb2NhbEluZGV4KSkgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZyksIEdQUkluZm86OnJlZ1Qx
KTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QwLCBBc3NlbWJs
eUhlbHBlcnM6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAg
bV9qaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iodmly
dHVhbFJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIDEwKSBEdW1wIGFsbCBjb25zdGFu
dHMuIE9wdGltaXplIGZvciBVbmRlZmluZWQsIHNpbmNlIHRoYXQncyBhIGNvbnN0YW50IHdlIHNl
ZQotICAgIC8vICAgICBvZnRlbi4KLQotICAgIGlmIChoYXZlQ29uc3RhbnRzKSB7Ci0gICAgICAg
IGlmIChoYXZlVW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKGpzVW5kZWZpbmVkKCkucGF5bG9hZCgpKSwgR1BSSW5mbzo6cmVn
VDApOwotICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
Mihqc1VuZGVmaW5lZCgpLnRhZygpKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6
ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVy
eSA9IG9wZXJhbmRzW2luZGV4XTsKLSAgICAgICAgICAgIGlmIChyZWNvdmVyeS50ZWNobmlxdWUo
KSAhPSBDb25zdGFudCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlm
IChyZWNvdmVyeS5jb25zdGFudCgpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgICAgICBt
X2ppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Io
KFZpcnR1YWxSZWdpc3RlcilvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpKSk7Ci0gICAg
ICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMSwgQXNzZW1ibHlIZWxwZXJz
Ojp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcilvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgp
KSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS5wYXlsb2Fk
KCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilvcGVyYW5k
cy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygp
KSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcilvcGVyYW5kcy5vcGVy
YW5kRm9ySW5kZXgoaW5kZXgpKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGNhc2UgQXJndW1l
bnRzVGhhdFdlcmVOb3RDcmVhdGVkOgorICAgICAgICAgICAgaGF2ZUFyZ3VtZW50cyA9IHRydWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8gMTIpIEFkanVz
dCB0aGUgb2xkIEpJVCdzIGV4ZWN1dGUgY291bnRlci4gU2luY2Ugd2UgYXJlIGV4aXRpbmcgT1NS
LCB3ZSBrbm93Ci0gICAgLy8gICAgIHRoYXQgYWxsIG5ldyBjYWxscyBpbnRvIHRoaXMgY29kZSB3
aWxsIGdvIHRvIHRoZSBuZXcgSklULCBzbyB0aGUgZXhlY3V0ZQotICAgIC8vICAgICBjb3VudGVy
IG9ubHkgYWZmZWN0cyBjYWxsIGZyYW1lcyB0aGF0IHBlcmZvcm1lZCBPU1IgZXhpdCBhbmQgY2Fs
bCBmcmFtZXMKLSAgICAvLyAgICAgdGhhdCB3ZXJlIHN0aWxsIGV4ZWN1dGluZyB0aGUgb2xkIEpJ
VCBhdCB0aGUgdGltZSBvZiBhbm90aGVyIGNhbGwgZnJhbWUncwotICAgIC8vICAgICBPU1IgZXhp
dC4gV2Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGUgZm9sbG93aW5nIGlzIHRydWU6CisgICAgLy8g
OCkgQWRqdXN0IHRoZSBvbGQgSklUJ3MgZXhlY3V0ZSBjb3VudGVyLiBTaW5jZSB3ZSBhcmUgZXhp
dGluZyBPU1IsIHdlIGtub3cKKyAgICAvLyAgICB0aGF0IGFsbCBuZXcgY2FsbHMgaW50byB0aGlz
IGNvZGUgd2lsbCBnbyB0byB0aGUgbmV3IEpJVCwgc28gdGhlIGV4ZWN1dGUKKyAgICAvLyAgICBj
b3VudGVyIG9ubHkgYWZmZWN0cyBjYWxsIGZyYW1lcyB0aGF0IHBlcmZvcm1lZCBPU1IgZXhpdCBh
bmQgY2FsbCBmcmFtZXMKKyAgICAvLyAgICB0aGF0IHdlcmUgc3RpbGwgZXhlY3V0aW5nIHRoZSBv
bGQgSklUIGF0IHRoZSB0aW1lIG9mIGFub3RoZXIgY2FsbCBmcmFtZSdzCisgICAgLy8gICAgT1NS
IGV4aXQuIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIGZvbGxvd2luZyBpcyB0cnVlOgogICAg
IC8vCi0gICAgLy8gICAgIChhKSBDb2RlIHRoZSBwZXJmb3JtcyBhbiBPU1IgZXhpdCBnZXRzIGEg
Y2hhbmNlIHRvIHJlZW50ZXIgb3B0aW1pemVkCi0gICAgLy8gICAgICAgICBjb2RlIGV2ZW50dWFs
bHksIHNpbmNlIG9wdGltaXplZCBjb2RlIGlzIGZhc3Rlci4gQnV0IHdlIGRvbid0Ci0gICAgLy8g
ICAgICAgICB3YW50IHRvIGRvIHN1Y2ggcmVlbnRlcnkgdG9vIGFnZ3Jlc3NpdmVseSAoc2VlIChj
KSBiZWxvdykuCisgICAgLy8gICAgKGEpIENvZGUgdGhlIHBlcmZvcm1zIGFuIE9TUiBleGl0IGdl
dHMgYSBjaGFuY2UgdG8gcmVlbnRlciBvcHRpbWl6ZWQKKyAgICAvLyAgICAgICAgY29kZSBldmVu
dHVhbGx5LCBzaW5jZSBvcHRpbWl6ZWQgY29kZSBpcyBmYXN0ZXIuIEJ1dCB3ZSBkb24ndAorICAg
IC8vICAgICAgICB3YW50IHRvIGRvIHN1Y2ggcmVlbnRlcnkgdG9vIGFnZ3Jlc3NpdmVseSAoc2Vl
IChjKSBiZWxvdykuCiAgICAgLy8KLSAgICAvLyAgICAgKGIpIElmIHRoZXJlIGlzIGNvZGUgb24g
dGhlIGNhbGwgc3RhY2sgdGhhdCBpcyBzdGlsbCBydW5uaW5nIHRoZSBvbGQKLSAgICAvLyAgICAg
ICAgIEpJVCdzIGNvZGUgYW5kIGhhcyBuZXZlciBPU1InZCwgdGhlbiBpdCBzaG91bGQgZ2V0IGEg
Y2hhbmNlIHRvCi0gICAgLy8gICAgICAgICBwZXJmb3JtIE9TUiBlbnRyeSBkZXNwaXRlIHRoZSBm
YWN0IHRoYXQgd2UndmUgZXhpdGVkLgorICAgIC8vICAgIChiKSBJZiB0aGVyZSBpcyBjb2RlIG9u
IHRoZSBjYWxsIHN0YWNrIHRoYXQgaXMgc3RpbGwgcnVubmluZyB0aGUgb2xkCisgICAgLy8gICAg
ICAgIEpJVCdzIGNvZGUgYW5kIGhhcyBuZXZlciBPU1InZCwgdGhlbiBpdCBzaG91bGQgZ2V0IGEg
Y2hhbmNlIHRvCisgICAgLy8gICAgICAgIHBlcmZvcm0gT1NSIGVudHJ5IGRlc3BpdGUgdGhlIGZh
Y3QgdGhhdCB3ZSd2ZSBleGl0ZWQuCiAgICAgLy8KLSAgICAvLyAgICAgKGMpIENvZGUgdGhlIHBl
cmZvcm1zIGFuIE9TUiBleGl0IHNob3VsZCBub3QgaW1tZWRpYXRlbHkgcmV0cnkgT1NSCi0gICAg
Ly8gICAgICAgICBlbnRyeSwgc2luY2UgYm90aCBmb3JtcyBvZiBPU1IgYXJlIGV4cGVuc2l2ZS4g
T1NSIGVudHJ5IGlzCi0gICAgLy8gICAgICAgICBwYXJ0aWN1bGFybHkgZXhwZW5zaXZlLgorICAg
IC8vICAgIChjKSBDb2RlIHRoZSBwZXJmb3JtcyBhbiBPU1IgZXhpdCBzaG91bGQgbm90IGltbWVk
aWF0ZWx5IHJldHJ5IE9TUgorICAgIC8vICAgICAgICBlbnRyeSwgc2luY2UgYm90aCBmb3JtcyBv
ZiBPU1IgYXJlIGV4cGVuc2l2ZS4gT1NSIGVudHJ5IGlzCisgICAgLy8gICAgICAgIHBhcnRpY3Vs
YXJseSBleHBlbnNpdmUuCiAgICAgLy8KLSAgICAvLyAgICAgKGQpIEZyZXF1ZW50IE9TUiBmYWls
dXJlcywgZXZlbiB0aG9zZSB0aGF0IGRvIG5vdCByZXN1bHQgaW4gdGhlIGNvZGUKLSAgICAvLyAg
ICAgICAgIHJ1bm5pbmcgaW4gYSBob3QgbG9vcCwgcmVzdWx0IGluIHJlY29tcGlsYXRpb24gZ2V0
dGluZyB0cmlnZ2VyZWQuCisgICAgLy8gICAgKGQpIEZyZXF1ZW50IE9TUiBmYWlsdXJlcywgZXZl
biB0aG9zZSB0aGF0IGRvIG5vdCByZXN1bHQgaW4gdGhlIGNvZGUKKyAgICAvLyAgICAgICAgcnVu
bmluZyBpbiBhIGhvdCBsb29wLCByZXN1bHQgaW4gcmVjb21waWxhdGlvbiBnZXR0aW5nIHRyaWdn
ZXJlZC4KICAgICAvLwotICAgIC8vICAgICBUbyBlbnN1cmUgKGMpLCB3ZSdkIGxpa2UgdG8gc2V0
IHRoZSBleGVjdXRlIGNvdW50ZXIgdG8KLSAgICAvLyAgICAgY291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlcldhcm1VcCgpLiBUaGlzIHNlZW1zIGxpa2UgaXQgd291bGQgZW5kYW5nZXIKLSAgICAv
LyAgICAgKGEpIGFuZCAoYiksIHNpbmNlIHRoZW4gZXZlcnkgT1NSIGV4aXQgd291bGQgZGVsYXkg
dGhlIG9wcG9ydHVuaXR5IGZvcgotICAgIC8vICAgICBldmVyeSBjYWxsIGZyYW1lIHRvIHBlcmZv
cm0gT1NSIGVudHJ5LiBFc3NlbnRpYWxseSwgaWYgT1NSIGV4aXQgaGFwcGVucwotICAgIC8vICAg
ICBmcmVxdWVudGx5IGFuZCB0aGUgZnVuY3Rpb24gaGFzIGZldyBsb29wcywgdGhlbiB0aGUgY291
bnRlciB3aWxsIG5ldmVyCi0gICAgLy8gICAgIGJlY29tZSBub24tbmVnYXRpdmUgYW5kIE9TUiBl
bnRyeSB3aWxsIG5ldmVyIGJlIHRyaWdnZXJlZC4gT1NSIGVudHJ5Ci0gICAgLy8gICAgIHdpbGwg
b25seSBoYXBwZW4gaWYgYSBsb29wIGdldHMgaG90IGluIHRoZSBvbGQgSklULCB3aGljaCBkb2Vz
IGEgcHJldHR5Ci0gICAgLy8gICAgIGdvb2Qgam9iIG9mIGVuc3VyaW5nIChhKSBhbmQgKGIpLiBC
dXQgdGhhdCBkb2Vzbid0IHRha2UgY2FyZSBvZiAoZCksCi0gICAgLy8gICAgIHNpbmNlIGVhY2gg
c3BlY3VsYXRpb24gZmFpbHVyZSB3b3VsZCByZXNldCB0aGUgZXhlY3V0ZSBjb3VudGVyLgotICAg
IC8vICAgICBTbyB3ZSBjaGVjayBoZXJlIGlmIHRoZSBudW1iZXIgb2Ygc3BlY3VsYXRpb24gZmFp
bHVyZXMgaXMgc2lnbmlmaWNhbnRseQotICAgIC8vICAgICBsYXJnZXIgdGhhbiB0aGUgbnVtYmVy
IG9mIHN1Y2Nlc3NlcyAod2Ugd2FudCA5MCUgc3VjY2VzcyByYXRlKSwgYW5kIGlmCi0gICAgLy8g
ICAgIHRoZXJlIGhhdmUgYmVlbiBhIGxhcmdlIGVub3VnaCBudW1iZXIgb2YgZmFpbHVyZXMuIElm
IHNvLCB3ZSBzZXQgdGhlCi0gICAgLy8gICAgIGNvdW50ZXIgdG8gMDsgb3RoZXJ3aXNlIHdlIHNl
dCB0aGUgY291bnRlciB0bwotICAgIC8vICAgICBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
V2FybVVwKCkuCisgICAgLy8gICAgVG8gZW5zdXJlIChjKSwgd2UnZCBsaWtlIHRvIHNldCB0aGUg
ZXhlY3V0ZSBjb3VudGVyIHRvCisgICAgLy8gICAgY291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
cldhcm1VcCgpLiBUaGlzIHNlZW1zIGxpa2UgaXQgd291bGQgZW5kYW5nZXIKKyAgICAvLyAgICAo
YSkgYW5kIChiKSwgc2luY2UgdGhlbiBldmVyeSBPU1IgZXhpdCB3b3VsZCBkZWxheSB0aGUgb3Bw
b3J0dW5pdHkgZm9yCisgICAgLy8gICAgZXZlcnkgY2FsbCBmcmFtZSB0byBwZXJmb3JtIE9TUiBl
bnRyeS4gRXNzZW50aWFsbHksIGlmIE9TUiBleGl0IGhhcHBlbnMKKyAgICAvLyAgICBmcmVxdWVu
dGx5IGFuZCB0aGUgZnVuY3Rpb24gaGFzIGZldyBsb29wcywgdGhlbiB0aGUgY291bnRlciB3aWxs
IG5ldmVyCisgICAgLy8gICAgYmVjb21lIG5vbi1uZWdhdGl2ZSBhbmQgT1NSIGVudHJ5IHdpbGwg
bmV2ZXIgYmUgdHJpZ2dlcmVkLiBPU1IgZW50cnkKKyAgICAvLyAgICB3aWxsIG9ubHkgaGFwcGVu
IGlmIGEgbG9vcCBnZXRzIGhvdCBpbiB0aGUgb2xkIEpJVCwgd2hpY2ggZG9lcyBhIHByZXR0eQor
ICAgIC8vICAgIGdvb2Qgam9iIG9mIGVuc3VyaW5nIChhKSBhbmQgKGIpLiBCdXQgdGhhdCBkb2Vz
bid0IHRha2UgY2FyZSBvZiAoZCksCisgICAgLy8gICAgc2luY2UgZWFjaCBzcGVjdWxhdGlvbiBm
YWlsdXJlIHdvdWxkIHJlc2V0IHRoZSBleGVjdXRlIGNvdW50ZXIuCisgICAgLy8gICAgU28gd2Ug
Y2hlY2sgaGVyZSBpZiB0aGUgbnVtYmVyIG9mIHNwZWN1bGF0aW9uIGZhaWx1cmVzIGlzIHNpZ25p
ZmljYW50bHkKKyAgICAvLyAgICBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NlcyAo
d2Ugd2FudCA5MCUgc3VjY2VzcyByYXRlKSwgYW5kIGlmCisgICAgLy8gICAgdGhlcmUgaGF2ZSBi
ZWVuIGEgbGFyZ2UgZW5vdWdoIG51bWJlciBvZiBmYWlsdXJlcy4gSWYgc28sIHdlIHNldCB0aGUK
KyAgICAvLyAgICBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBzZXQgdGhlIGNvdW50ZXIgdG8K
KyAgICAvLyAgICBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkuCiAgICAgCiAg
ICAgaGFuZGxlRXhpdENvdW50cyhtX2ppdCwgZXhpdCk7CiAgICAgCi0gICAgLy8gMTMpIFJlaWZ5
IGlubGluZWQgY2FsbCBmcmFtZXMuCisgICAgLy8gOSkgUmVpZnkgaW5saW5lZCBjYWxsIGZyYW1l
cy4KICAgICAKICAgICByZWlmeUlubGluZWRDYWxsRnJhbWVzKG1faml0LCBleGl0KTsKICAgICAK
LSAgICAvLyAxNCkgQ3JlYXRlIGFyZ3VtZW50cyBpZiBuZWNlc3NhcnkgYW5kIHBsYWNlIHRoZW0g
aW50byB0aGUgYXBwcm9wcmlhdGUgYWxpYXNlZAorICAgIC8vIDEwKSBDcmVhdGUgYXJndW1lbnRz
IGlmIG5lY2Vzc2FyeSBhbmQgcGxhY2UgdGhlbSBpbnRvIHRoZSBhcHByb3ByaWF0ZSBhbGlhc2Vk
CiAgICAgLy8gICAgIHJlZ2lzdGVycy4KICAgICAKICAgICBpZiAoaGF2ZUFyZ3VtZW50cykgewpA
QCAtNzA2LDE0ICs0OTAsMTQgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNv
bnN0IAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIC8vIDE1KSBMb2FkIHRoZSByZXN1bHQg
b2YgdGhlIGxhc3QgYnl0ZWNvZGUgb3BlcmF0aW9uIGludG8gcmVnVDAuCisgICAgLy8gMTEpIExv
YWQgdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBieXRlY29kZSBvcGVyYXRpb24gaW50byByZWdUMC4K
ICAgICAKICAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kLmlzVmFsaWQoKSkgewogICAgICAg
ICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKGV4aXQubV9sYXN0U2V0
T3BlcmFuZCksIEdQUkluZm86OmNhY2hlZFJlc3VsdFJlZ2lzdGVyKTsKICAgICAgICAgbV9qaXQu
bG9hZDMyKEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKGV4aXQubV9sYXN0U2V0T3BlcmFuZCksIEdQ
UkluZm86OmNhY2hlZFJlc3VsdFJlZ2lzdGVyMik7CiAgICAgfQogICAgIAotICAgIC8vIDE2KSBB
bmQgZmluaXNoLgorICAgIC8vIDEyKSBBbmQgZmluaXNoLgogICAgIAogICAgIGFkanVzdEFuZEp1
bXBUb1RhcmdldChtX2ppdCwgZXhpdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTU2NTUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5OSw2ICsxOTksNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29t
cGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgVUludDMySW5HUFI6CiAgICAgICAgIGNhc2Ug
VW5ib3hlZEludDUySW5HUFI6CiAgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6
CisgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKICAgICAgICAgICAgIG1faml0LnN0b3Jl
NjQocmVjb3ZlcnkuZ3ByKCksIHNjcmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIApAQCAtMjA3LDcgKzIwOCw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpj
b21waWxlRXhpdChjb25zdCAKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICAvLyBBbmQgdm9p
bGEsIGFsbCBGUFJzIGFyZSBmcmVlIHRvIHJldXNlLgorICAgIC8vIEFuZCB2b2lsYSwgYWxsIEdQ
UnMgYXJlIGZyZWUgdG8gcmV1c2UuCiAgICAgCiAgICAgLy8gNSkgU2F2ZSBhbGwgc3RhdGUgZnJv
bSBGUFJzIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLgogICAgIApAQCAtMjI3LDcgKzIyOCw3IEBA
IHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAKICAgICAvLyBO
b3csIGFsbCBGUFJzIGFyZSBhbHNvIGZyZWUuCiAgICAgCi0gICAgLy8gNSkgU2F2ZSBhbGwgc3Rh
dGUgZnJvbSB0aGUgc3RhY2sgaW50byB0aGUgc2NyYXRjaCBidWZmZXIuIEZvciBzaW1wbGljaXR5
IHdlCisgICAgLy8gNikgU2F2ZSBhbGwgc3RhdGUgZnJvbSB0aGUgc3RhY2sgaW50byB0aGUgc2Ny
YXRjaCBidWZmZXIuIEZvciBzaW1wbGljaXR5IHdlCiAgICAgLy8gICAgZG8gdGhpcyBldmVuIGZv
ciBzdGF0ZSB0aGF0J3MgYWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0YWNrLgog
ICAgIC8vICAgIEl0IG1ha2VzIHRoaW5ncyBzaW1wbGVyIGxhdGVyLgogCkBAIC0yNTcsNyArMjU4
LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICB9
CiAgICAgfQogICAgIAotICAgIC8vIDYpIERvIGFsbCBkYXRhIGZvcm1hdCBjb252ZXJzaW9ucyBh
bmQgc3RvcmUgdGhlIHJlc3VsdHMgaW50byB0aGUgc3RhY2suCisgICAgLy8gNykgRG8gYWxsIGRh
dGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFj
ay4KICAgICAKICAgICBib29sIGhhdmVBcmd1bWVudHMgPSBmYWxzZTsKICAgICAKQEAgLTI2Nyw2
ICsyNjgsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAg
ICAgIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNh
c2UgSW5HUFI6CisgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKICAgICAgICAgY2FzZSBE
aXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoc2NyYXRjaCArIGlu
ZGV4LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86
OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwpAQCAtMzI5LDcg
KzMzMSw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICAvLyA3KSBBZGp1c3QgdGhlIG9sZCBKSVQncyBleGVjdXRl
IGNvdW50ZXIuIFNpbmNlIHdlIGFyZSBleGl0aW5nIE9TUiwgd2Uga25vdworICAgIC8vIDgpIEFk
anVzdCB0aGUgb2xkIEpJVCdzIGV4ZWN1dGUgY291bnRlci4gU2luY2Ugd2UgYXJlIGV4aXRpbmcg
T1NSLCB3ZSBrbm93CiAgICAgLy8gICAgdGhhdCBhbGwgbmV3IGNhbGxzIGludG8gdGhpcyBjb2Rl
IHdpbGwgZ28gdG8gdGhlIG5ldyBKSVQsIHNvIHRoZSBleGVjdXRlCiAgICAgLy8gICAgY291bnRl
ciBvbmx5IGFmZmVjdHMgY2FsbCBmcmFtZXMgdGhhdCBwZXJmb3JtZWQgT1NSIGV4aXQgYW5kIGNh
bGwgZnJhbWVzCiAgICAgLy8gICAgdGhhdCB3ZXJlIHN0aWxsIGV4ZWN1dGluZyB0aGUgb2xkIEpJ
VCBhdCB0aGUgdGltZSBvZiBhbm90aGVyIGNhbGwgZnJhbWUncwpAQCAtMzY3LDEyICszNjksMTIg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIAogICAgIGhh
bmRsZUV4aXRDb3VudHMobV9qaXQsIGV4aXQpOwogICAgIAotICAgIC8vIDgpIFJlaWZ5IGlubGlu
ZWQgY2FsbCBmcmFtZXMuCisgICAgLy8gOSkgUmVpZnkgaW5saW5lZCBjYWxsIGZyYW1lcy4KICAg
ICAKICAgICByZWlmeUlubGluZWRDYWxsRnJhbWVzKG1faml0LCBleGl0KTsKICAgICAKLSAgICAv
LyA5KSBDcmVhdGUgYXJndW1lbnRzIGlmIG5lY2Vzc2FyeSBhbmQgcGxhY2UgdGhlbSBpbnRvIHRo
ZSBhcHByb3ByaWF0ZSBhbGlhc2VkCi0gICAgLy8gICAgcmVnaXN0ZXJzLgorICAgIC8vIDEwKSBD
cmVhdGUgYXJndW1lbnRzIGlmIG5lY2Vzc2FyeSBhbmQgcGxhY2UgdGhlbSBpbnRvIHRoZSBhcHBy
b3ByaWF0ZSBhbGlhc2VkCisgICAgLy8gICAgIHJlZ2lzdGVycy4KICAgICAKICAgICBpZiAoaGF2
ZUFyZ3VtZW50cykgewogICAgICAgICBIYXNoU2V0PElubGluZUNhbGxGcmFtZSosIERlZmF1bHRI
YXNoPElubGluZUNhbGxGcmFtZSo+OjpIYXNoLApAQCAtNDIyLDEyICs0MjQsMTIgQEAgdm9pZCBP
U1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIC8vIDEwKSBMb2FkIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYnl0ZWNvZGUgb3BlcmF0
aW9uIGludG8gcmVnVDAuCisgICAgLy8gMTEpIExvYWQgdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBi
eXRlY29kZSBvcGVyYXRpb24gaW50byByZWdUMC4KICAgICAKICAgICBpZiAoZXhpdC5tX2xhc3RT
ZXRPcGVyYW5kLmlzVmFsaWQoKSkKICAgICAgICAgbV9qaXQubG9hZDY0KEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcihleGl0Lm1fbGFzdFNldE9wZXJhbmQpLCBHUFJJbmZvOjpjYWNoZWRSZXN1
bHRSZWdpc3Rlcik7CiAgICAgCi0gICAgLy8gMTEpIEFuZCBmaW5pc2guCisgICAgLy8gMTIpIEFu
ZCBmaW5pc2guCiAgICAgCiAgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KG1faml0LCBleGl0KTsK
IH0K
</data>
<flag name="review"
          id="235093"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>