<?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>234555</bug_id>
          
          <creation_ts>2021-12-21 03:05:41 -0800</creation_ts>
          <short_desc>[JSC] Remove m_calleeSaveRegisters from CodeBlock::JITData and rename it to BaselineJITData</short_desc>
          <delta_ts>2022-01-04 16:21:55 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1825954</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-21 03:05:41 -0800</bug_when>
    <thetext>[JSC] Remove m_calleeSaveRegisters from CodeBlock::JITData and rename it to BaselineJITData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825955</commentid>
    <comment_count>1</comment_count>
      <attachid>447707</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-21 03:06:07 -0800</bug_when>
    <thetext>Created attachment 447707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825965</commentid>
    <comment_count>2</comment_count>
      <attachid>447710</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-21 04:13:46 -0800</bug_when>
    <thetext>Created attachment 447710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825969</commentid>
    <comment_count>3</comment_count>
      <attachid>447711</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-21 04:25:32 -0800</bug_when>
    <thetext>Created attachment 447711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826805</commentid>
    <comment_count>4</comment_count>
      <attachid>447958</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-25 03:43:31 -0800</bug_when>
    <thetext>Created attachment 447958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826806</commentid>
    <comment_count>5</comment_count>
      <attachid>447958</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-25 03:46:54 -0800</bug_when>
    <thetext>Comment on attachment 447958
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=447958&amp;action=review

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:481
&gt; +        if (*ptr &gt;= Options::earlyReturnFromInfiniteLoopsLimit())
&gt;              LLINT_RETURN_TWO(LLInt::fuzzerReturnEarlyFromLoopHintEntrypoint().code().executableAddress(), callFrame-&gt;topOfFrame());

We do not need ensureJITData since we no longer load a pointer from JITData (we removed that indirection).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827060</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-28 03:06:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/86954269&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828067</commentid>
    <comment_count>7</comment_count>
      <attachid>447958</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-01-04 13:16:33 -0800</bug_when>
    <thetext>Comment on attachment 447958
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828141</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-04 16:21:52 -0800</bug_when>
    <thetext>Committed r287596 (245724@main): &lt;https://commits.webkit.org/245724@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447958.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447707</attachid>
            <date>2021-12-21 03:06:07 -0800</date>
            <delta_ts>2021-12-21 04:13:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234555-20211221030606.patch</filename>
            <type>text/plain</type>
            <size>35450</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmYyMTU2MzE3ZTdjYzRmNmZjMmEyYTZmMGI5ZTJhYWZhYmY0NDdiLi5mZjU0YTQzMWYyNjQ4NDYw
ODkxOGFhZDY1OGI5NTUzNDU1NWZkYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMS0xMi0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBtX2NhbGxlZVNhdmVSZWdpc3RlcnMgZnJvbSBDb2Rl
QmxvY2s6OkpJVERhdGEgYW5kIHJlbmFtZSBpdCB0byBCYXNlbGluZUpJVERhdGEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU1NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdp
c3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNhbGxlZVNhdmVSZWdp
c3RlcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVy
cyk6CisgICAgICAgICogYnl0ZWNvZGUvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtQ
b2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6ZW1pdFNhdmVDYWxsZWVTYXZlcyk6CisgICAgICAg
ICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwcmVwYXJlT1NSRW50
cnkpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpP
U1JFeGl0Ojpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FsbGVlU2F2ZVNsb3QpOgorICAgICAgICAq
IGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJl
YWRJbXBsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RhY2tMYXlvdXRQaGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwv
RlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZSk6CisgICAgICAgICog
ZnRsL0ZUTEpJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjpjYWxsZWVTYXZl
UmVnaXN0ZXJzIGNvbnN0KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RF
cSk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5j
cHA6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3Rl
cnNGb3JVbndpbmRpbmcpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3IpOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVz
Rm9yKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6ZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdSZWdpc3RlcnMpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2
ZXNGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZl
Q2FsbGVlU2F2ZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVt
aXRSZXN0b3JlQ2FsbGVlU2F2ZXMpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9DYWxsRnJhbWVT
aHVmZmxlRGF0YS5jcHA6CisgICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmg6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNhdmVDYWxsZWVT
YXZlcyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemlu
Zyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDb2RlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUQ29kZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVycyBjb25zdCk6CisgICAgICAg
ICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3Bw
OgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lz
dGVycyk6CisgICAgICAgICogaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0Lmg6CisgICAgICAgICog
dG9vbHMvVk1JbnNwZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpWTUluc3BlY3Rvcjo6ZHVtcFJl
Z2lzdGVycyk6CisKIDIwMjEtMTItMjEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtSSVNDVjY0XSBBZGQgbWlzc2luZyBNYWNyb0Fzc2VtYmxlclJJU0NW
NjQgZmxvYXRpbmctcG9pbnQgcm91bmRpbmcsIGNvbXBhcmlzb24gbWV0aG9kcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBiNGEyZjA2YWRhM2Qz
YmYyMWVlMDBjNDQyNTFhMzNlZjFiOTQyMWI2Li4zZjRkYmU3Yjk3NTFlODFkMzg0NjMyMTAxMTg1
MWY4NDhlNmMxYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcApAQCAtMTc4NiwyNiArMTc4Niw2IEBAIENhbGxMaW5rSW5mbyogQ29kZUJsb2NrOjpn
ZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUluZGV4KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVn
aXN0ZXJzKFJlZ2lzdGVyU2V0IHJlZ2lzdGVyU2V0KQotewotICAgIGF1dG8gY2FsbGVlU2F2ZVJl
Z2lzdGVycyA9IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KHJlZ2lzdGVyU2V0KTsKLQotICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICBhdXRvJiBqaXREYXRhID0gZW5zdXJl
SklURGF0YShsb2NrZXIpOwotICAgIGppdERhdGEubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gV1RG
TW92ZShjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKLSAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwot
ICAgIGppdERhdGEubV9oYXNDYWxsZWVTYXZlUmVnaXN0ZXJzID0gdHJ1ZTsKLX0KLQotdm9pZCBD
b2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJBdE9mZnNldExpc3QmJiBy
ZWdpc3RlckF0T2Zmc2V0TGlzdCkKLXsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
bG9jayk7Ci0gICAgYXV0byYgaml0RGF0YSA9IGVuc3VyZUpJVERhdGEobG9ja2VyKTsKLSAgICBq
aXREYXRhLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IFdURk1vdmUocmVnaXN0ZXJBdE9mZnNldExp
c3QpOwotICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgaml0RGF0YS5tX2hhc0NhbGxl
ZVNhdmVSZWdpc3RlcnMgPSB0cnVlOwotfQotCiB2b2lkIENvZGVCbG9jazo6cmVzZXRKSVREYXRh
KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSk7CkBA
IC0yNDc4LDE4ICsyNDU4LDYgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpyZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlcigpIGNvbnN0CiB9CiAKICNpZiAhRU5BQkxFKENfTE9PUCkKLWNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBDb2RlQmxvY2s6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdAot
ewotI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2ppdERhdGEuZ2V0
KCkpIHsKLSAgICAgICAgaWYgKGppdERhdGEtPm1faGFzQ2FsbGVlU2F2ZVJlZ2lzdGVycykKLSAg
ICAgICAgICAgIHJldHVybiAmaml0RGF0YS0+bV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwotICAgIH0K
LSNlbmRpZgotICAgIHJldHVybiAmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVD
YWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci19Ci0KLSAgICAKIHN0YXRpYyBzaXplX3Qgcm91bmRDYWxs
ZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoc2l6ZV90IGNhbGxlZVNhdmVSZWdpc3RlcnMp
CiB7CiAKQEAgLTI1MDIsOSArMjQ3MCw5IEBAIHNpemVfdCBDb2RlQmxvY2s6OmxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKQogICAgIHJldHVybiByb3VuZENh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhudW1iZXJPZkxMSW50QmFzZWxpbmVDYWxs
ZWVTYXZlUmVnaXN0ZXJzKCkpOwogfQogCi1zaXplX3QgQ29kZUJsb2NrOjpjYWxsZWVTYXZlU3Bh
Y2VBc1ZpcnR1YWxSZWdpc3RlcnMoKQorc2l6ZV90IENvZGVCbG9jazo6Y2FsbGVlU2F2ZVNwYWNl
QXNWaXJ0dWFsUmVnaXN0ZXJzKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBjYWxsZWVTYXZl
UmVnaXN0ZXJzKQogewotICAgIHJldHVybiByb3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJl
Z2lzdGVycyhjYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKSk7CisgICAgcmV0dXJuIHJvdW5k
Q2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKGNhbGxlZVNhdmVSZWdpc3RlcnMuc2l6
ZSgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKaW5kZXggYTFmNzkyYjViMDA3M2U0MTQxYjVmNGFiMDY2ZGUwY2E0YzFlYWM2Ny4uNTI4
Y2E4ZjZjODgwNzZmODc1OGFlODBmNWQzMjE3NTlkZmZhMTU0OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjkzLDkgKzI5Myw2IEBAIGNsYXNzIENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2lu
PiBmaW5kUEModm9pZCogcGMpOwogCi0gICAgdm9pZCBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJl
Z2lzdGVyU2V0KTsKLSAgICB2b2lkIHNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJBdE9m
ZnNldExpc3QmJik7Ci0KICAgICAvLyBXZSBjYWxsIHRoaXMgd2hlbiB3ZSB3YW50IHRvIHJlYXR0
ZW1wdCBjb21waWxpbmcgc29tZXRoaW5nIHdpdGggdGhlIGJhc2VsaW5lIEpJVC4gSWRlYWxseQog
ICAgIC8vIHRoZSBiYXNlbGluZSBKSVQgd291bGQgbm90IGFkZCBkYXRhIHRvIENvZGVCbG9jaywg
YnV0IGluc3RlYWQgaXQgd291bGQgcHV0IGl0cyBkYXRhIGludG8KICAgICAvLyBhIG5ld2x5IGNy
ZWF0ZWQgSklUQ29kZSwgd2hpY2ggY291bGQgYmUgdGhyb3duIGF3YXkgaWYgd2UgYmFpbCBvbiBK
SVQgY29tcGlsYXRpb24uIFRoZW4gd2UKQEAgLTYzMywxNSArNjMwLDEzIEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgY291bnRSZW9wdGltaXphdGlvbigpOwog
CiAjaWYgIUVOQUJMRShDX0xPT1ApCi0gICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNh
bGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdDsKLQogICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJP
ZkxMSW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkgeyByZXR1cm4gUmVnaXN0ZXJTZXQ6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkubnVtYmVyT2ZTZXRSZWdpc3RlcnMo
KTsgfQogICAgIHN0YXRpYyBzaXplX3QgbGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmly
dHVhbFJlZ2lzdGVycygpOwotICAgIHNpemVfdCBjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMoKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lz
dGVycyhjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOwogI2Vsc2UKICAgICBzdGF0aWMgdW5z
aWduZWQgbnVtYmVyT2ZMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpIHsgcmV0dXJu
IDA7IH0KICAgICBzdGF0aWMgc2l6ZV90IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMoKSB7IHJldHVybiAxOyB9OwotICAgIHNpemVfdCBjYWxsZWVTYXZlU3Bh
Y2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIHNpemVfdCBj
YWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShKSVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKaW5kZXggMjM0MWMwM2JiMWZkOTg2YTU5
Mjc0ZmIyOTQzYWFhNTVjMDJiNGIwYS4uYWI2YzkyNDA2NWJlYTk5ODc0ZTZjN2RkNDcyZGJiMTkx
ZTgwOGNkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0
Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcApA
QCAtMTc1OCw4ICsxNzU4LDggQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKIAogICAgIGlmICgh
ZnJhbWVTaHVmZmxlciAmJiBjYWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgIC8v
IFdlIHN0cm9uZ2x5IGFzc3VtZSB0aGF0IGNhbGxlZUdQUiBpcyBub3QgYSBjYWxsZWUgc2F2ZSBy
ZWdpc3RlciBpbiB0aGUgc2xvdyBwYXRoLgotICAgICAgICBBU1NFUlQoIWNhbGxlckNvZGVCbG9j
ay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5maW5kKGNhbGxlZUdQUikpOwotICAgICAgICBzdHVi
Sml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgQVNTRVJUKCFjYWxsZXJDb2Rl
QmxvY2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5maW5kKGNhbGxlZUdQUikp
OworICAgICAgICBzdHViSml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY2FsbGVyQ29kZUJs
b2NrLT5qaXRDb2RlKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgfQogCiAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93UGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaAppbmRleCA0OTk3YmQ0YmI5MGU1OTM3MjI5MGMwZWFiMjg2OGI2YzE4
MTI5YTdhLi44OTQ3Y2JlOWEzYzUyMTc2YTJkNDUzNDc4ODI5NjJlOTVjMWUzOGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0zMDIsNiArMzAyLDE2
IEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7CiAKICAgICBWTSYg
dm0oKSB7IHJldHVybiBtX2dyYXBoLm1fdm07IH0KIAorICAgIHZvaWQgZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlcygpCisgICAgeworICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKCZSZWdp
c3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGVtaXRTYXZlQ2FsbGVlU2F2ZXMoKQorICAgIHsKKyAgICAgICAgZW1pdFNhdmVDYWxs
ZWVTYXZlc0ZvcigmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMo
KSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBPU1JFeGl0SnVtcFBsYWNl
aG9sZGVyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcApp
bmRleCBlNzYzNzFjMDUyY2QxMjM4MDgxOWE3YTRhNTY5YmJmZmY4ZDBmN2RjLi4xMTMyY2YwZDlm
NjViMTM5N2ZlYjllYjk1NzE0MWViNGQxMTU4NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmNwcApAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQqIHByZXBhcmVPU1JF
bnRyeShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvCiAKICAgICAvLyA2KSBDb3B5IG91ciBjYWxsZWUgc2F2ZXMgdG8gYnVmZmVyLgogI2lm
IE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAotICAgIGNvbnN0IFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiByZWdpc3RlclNhdmVMb2NhdGlvbnMgPSBjb2RlQmxvY2stPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVnaXN0ZXJT
YXZlTG9jYXRpb25zID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMo
KTsKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNl
dDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CiAgICAgUmVnaXN0ZXJTZXQgZG9udFNh
dmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDI5YjVlMTU3
MjA5ZjcyODQwM2FlMzE4NDJjMmViNGU3Mjc3NjM3YTkuLjg5YWU3M2YyM2RhNTdjNzNlZTEwNTYx
NGJjNjc0N2VkMDE5MjU1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
LmNwcApAQCAtNzM4LDggKzczOCw4IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CiAKICAgICAvLyBSZXN0b3JlIHRoZSBERkcgY2FsbGVlIHNhdmVzIGFu
ZCB0aGVuIHNhdmUgdGhlIG9uZXMgdGhlIGJhc2VsaW5lIEpJVCB1c2VzLgotICAgIGppdC5lbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgaml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3Ioaml0
LmJhc2VsaW5lQ29kZUJsb2NrKCkpOworICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9y
KGppdC5jb2RlQmxvY2soKS0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAg
IGppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5qaXRD
b2RlKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAKICAgICAvLyBUaGUgdGFnIHJlZ2lzdGVy
cyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJpZXMgYmVsb3cuCiAgICAgaml0LmVt
aXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CkBAIC03NzAsNyArNzcwLDcgQEAgdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBP
U1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICBpZiAob3BlcmFuZC5pc1RtcCgpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpICYmIG9wZXJh
bmQudG9Mb2NhbCgpIDwgc3RhdGljX2Nhc3Q8aW50PihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+
Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpKQorICAgICAgICBpZiAob3BlcmFu
ZC5pc0xvY2FsKCkgJiYgb3BlcmFuZC50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxpbnQ+KENvZGVC
bG9jazo6Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCpqaXQuYmFzZWxpbmVDb2Rl
QmxvY2soKS0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcAppbmRleCBlNzIyZjllYmRhY2M4OTM2OTA2NTZkNWI2M2U5ZjYyNDQ0NjE1ZjQzLi4x
ZTc1NmYxZjlkNDg4YjAzYzQzMjI2MWY5NjA3YTRhNGUzYzE5ODZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBA
IC0yMzAsNyArMjMwLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ28KIAogQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzIGNhbGxlZVNhdmVTbG90KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
LCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBHUFJSZWcgY2FsbGVlU2F2ZSkKIHsKLSAg
ICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBiYXNlbGluZUNvZGVC
bG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0KiBjYWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbGVlU2F2ZXMt
PnNpemUoKTsgaSsrKSB7CiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVT
YXZlcy0+YXQoaSk7CiAgICAgICAgIGlmIChlbnRyeS5yZWcoKSAhPSBjYWxsZWVTYXZlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXggYzJiYmQ1ZTljM2U4MzVkYTkxZTk2
MTVlZTFmODNmODM2ZGQwNmRkZC4uYTQ5M2JlMzRhZjUxMzA4ZDJiZGYxOTM0MGQ5ODI5Y2VjMzQ2
MzI4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC0xOTgsOCArMTk4
LDYgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQog
ICAgICAgICBwYXJzZShkZmcpOwogICAgIH0KIAotICAgIG1fY29kZUJsb2NrLT5zZXRDYWxsZWVT
YXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwotCiAg
ICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAKICNkZWZpbmUgUlVOX1BIQVNFKHBoYXNlKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMmQ4MDU2
ZjYzYzNhMjI3M2RjYjM4YjkzYzMzMDU0MDVhOTRmOTRiNS4uN2ZiNTY1MjMzMmY5YzYwZjYyMjI4
NmZlYWE5ZTU2YmE2MzI3ZjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCiAgICAg
ICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50
KGpzVW5kZWZpbmVkKCkpOwogCi0gICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNh
dmVSZWdpc3RlcnMobV9qaXQuY29kZUJsb2NrKCkpOworICAgICAgICAgICAgc2h1ZmZsZURhdGEu
c2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKCZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0LnN0
b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgbV9qaXQu
Y2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDEzNWMxMjYzYWI0YTZhYTU1NGQwNmJkZDBiMzU4
NDNjMmNkZTk1YjAuLjA3OGJiZTM5ZWFiYjVlM2VkMmM4Y2I4YzE4MDJjMDU4ZmIzNmNhZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cApAQCAtODQyLDcgKzg0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpIDwg
bnVtQWxsb2NhdGVkQXJnczsgKytpKQogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLmFyZ3Nb
aV0gPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChqc1VuZGVmaW5lZCgpKTsKIAotICAgICAgICAg
ICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKG1faml0LmNvZGVCbG9jaygp
KTsKKyAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycygmUmVn
aXN0ZXJBdE9mZnNldExpc3Q6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIobnVtUGFzc2VkQXJncyksIEpJVENvbXBpbGVyOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCmluZGV4IDk2
NDliZjJhYjM3YzljNWRmZmJjOWQ0NjY1NDA4MTZmZTBmYmE1NmIuLjkxY2M4ZjM0ZTY0ZWRjNzQ4
NjljNmVlZGU0MTE4MjA4ODJiNjUxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIFN0
YWNrTGF5b3V0UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBWZWN0b3I8dW5zaWduZWQ+IGFsbG9jYXRpb24odXNlZE9wZXJhbmRzLnNpemUoKSk7Ci0g
ICAgICAgIG1fZ3JhcGgubV9uZXh0TWFjaGluZUxvY2FsID0gY29kZUJsb2NrKCktPmNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOworICAgICAgICBtX2dyYXBoLm1fbmV4dE1hY2hp
bmVMb2NhbCA9IENvZGVCbG9jazo6Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKFJl
Z2lzdGVyQXRPZmZzZXRMaXN0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZE9wZXJhbmRzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgICAgICBpZiAoIXVzZWRPcGVyYW5kcy5nZXRGb3JPcGVyYW5kSW5kZXgoaSkpIHsKICAgICAg
ICAgICAgICAgICBhbGxvY2F0aW9uW2ldID0gVUlOVF9NQVg7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA5Yjk4ZDU0NzYzMTgzODZhZmIyZmVjZjhlZTFkMjYw
MmFhZmFkZWU3Li4zYjRjYTFkMTU3NWQ1MGJiZmUxYzRiN2FiODJmMTllYWM5MDYyYjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAg
dm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJl
c3VsdCkKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCByZWdpc3Rlck9mZnNldHMgPSBzdGF0ZS5w
cm9jLT5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKTsKICAgICBpZiAoc2hvdWxkRHVt
cERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIGRhdGFMb2codGllck5hbWUsICJVbndpbmQgaW5mbyBm
b3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAi
OiAiLCByZWdpc3Rlck9mZnNldHMsICJcbiIpOwotICAgIGNvZGVCbG9jay0+c2V0Q2FsbGVlU2F2
ZVJlZ2lzdGVycyhXVEZNb3ZlKHJlZ2lzdGVyT2Zmc2V0cykpOworICAgIHN0YXRlLmppdENvZGUt
Pm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KFdURk1vdmUocmVn
aXN0ZXJPZmZzZXRzKSk7CiAgICAgQVNTRVJUKCEoc3RhdGUucHJvYy0+ZnJhbWVTaXplKCkgJSBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CiAgICAgc3RhdGUuaml0Q29kZS0+Y29tbW9uLmZyYW1l
UmVnaXN0ZXJDb3VudCA9IHN0YXRlLnByb2MtPmZyYW1lU2l6ZSgpIC8gc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRD
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAppbmRleCA5ZjUw
MjNkYTFkYjQyNDU1ZmEwNTQ3ZDExNTE1Y2M5N2M3MDdjOWQ3Li42MGZlOTQ0ZDA4ZGY1ZjNmZDUw
MjYxMWY1ZDIzMWFkNjgzM2FiYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEpJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENv
ZGUuaApAQCAtNzAsOSArNzAsMTIgQEAgY2xhc3MgSklUQ29kZSA6IHB1YmxpYyBKU0M6OkpJVENv
ZGUgewogICAgIHZvaWQgc2hyaW5rVG9GaXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgb3Zl
cnJpZGU7CiAKICAgICBQQ1RvQ29kZU9yaWdpbk1hcCogcGNUb0NvZGVPcmlnaW5NYXAoKSBvdmVy
cmlkZSB7IHJldHVybiBjb21tb24ubV9wY1RvQ29kZU9yaWdpbk1hcC5nZXQoKTsgfQorCisgICAg
Y29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdCB7
IHJldHVybiAmbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOyB9CiAgICAgCiAgICAgREZHOjpDb21tb25E
YXRhIGNvbW1vbjsKICAgICBWZWN0b3I8T1NSRXhpdD4gbV9vc3JFeGl0OworICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKICAgICBTZWdtZW50ZWRWZWN0b3I8
T1NSRXhpdERlc2NyaXB0b3IsIDg+IG9zckV4aXREZXNjcmlwdG9yczsKICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPExhenlTbG93UGF0aD4+IGxhenlTbG93UGF0aHM7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOGRmNGIwZjY1
ZjU3ZjlhMTZmZmQwMTc0YTgzNWJmZGZjZTJjYzU2ZC4uNjA5ZTZkZGY1MTgxOGM1YzBhNTFkZjY5
NTgwNzJkZTRlYzg4ZGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtMTAzOTUsNyArMTAzOTUsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAgICAgICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmdzLmFwcGVuZChW
YWx1ZVJlY292ZXJ5Ojpjb25zdGFudChqc1VuZGVmaW5lZCgpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHNodWZmbGVEYXRhLm51bVBhc3NlZEFyZ3MgPSBudW1QYXNzZWRBcmdzOwogICAgICAgICAg
ICAgICAgICAgICBzaHVmZmxlRGF0YS5udW1QYXJhbWV0ZXJzID0gaml0LmNvZGVCbG9jaygpLT5u
dW1QYXJhbWV0ZXJzKCk7Ci0gICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2Fs
bGVlU2F2ZVJlZ2lzdGVycyhqaXQuY29kZUJsb2NrKCkpOworICAgICAgICAgICAgICAgICAgICBz
aHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoc3RhdGUtPmppdENvZGUtPmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBhdXRvKiBjYWxsTGlua0luZm8gPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZENhbGxM
aW5rSW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkRpcmVjdFRhaWxDYWxsLCBJbnZhbGlkR1BS
UmVnKTsKQEAgLTEwNTU1LDcgKzEwNTU1LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAog
ICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bVBhc3NlZEFyZ3MgPSBudW1BcmdzOwogICAg
ICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bVBhcmFtZXRlcnMgPSBqaXQuY29kZUJsb2NrKCkt
Pm51bVBhcmFtZXRlcnMoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzaHVm
ZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoaml0LmNvZGVCbG9jaygpKTsKKyAgICAg
ICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoc3RhdGUtPmpp
dENvZGUtPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAKICAgICAgICAgICAgICAgICBhdXRvKiBj
YWxsTGlua0luZm8gPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhjb2Rl
T3JpZ2luKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlu
a0luZm86OlRhaWxDYWxsLCBHUFJJbmZvOjpyZWdUMCk7CkBAIC0xMDkwNCw3ICsxMDkwNCw3IEBA
IElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgZG9uZTsKICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkgewogICAgICAgICAg
ICAgICAgICAgICBzbG93UGF0aCA9IGNhbGxMaW5rSW5mby0+ZW1pdFRhaWxDYWxsRmFzdFBhdGgo
aml0LCBHUFJJbmZvOjpyZWdUMCwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdewotICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKHN0YXRlLT5qaXRDb2Rl
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0LnBy
ZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMDkxNiw3ICsxMDkxNiw3IEBAIElHTk9SRV9DTEFOR19X
QVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoU3RhcnQgPSBqaXQubGFi
ZWwoKTsKIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQotICAgICAgICAgICAgICAg
ICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgICAgICAgICAgICAgICAgICBq
aXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihzdGF0ZS0+aml0Q29kZS0+Y2FsbGVlU2F2ZVJl
Z2lzdGVycygpKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3Jp
Z2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmVt
aXRTbG93UGF0aCgqdm0sIGppdCk7CiAgICAgICAgICAgICAgICAgCkBAIC0xMTE4NSw3ICsxMTE4
NSw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgZG9uZTsKICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkgewogICAg
ICAgICAgICAgICAgICAgICBzbG93UGF0aCA9IGNhbGxMaW5rSW5mby0+ZW1pdFRhaWxDYWxsRmFz
dFBhdGgoaml0LCBHUFJJbmZvOjpyZWdUMCwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdewotICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKHN0YXRlLT5q
aXRDb2RlLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coKTsKICAgICAgICAgICAgICAgICAgICAgfSkpOwog
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMTE5Nyw3ICsxMTE5Nyw3IEBAIElHTk9SRV9D
TEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoU3RhcnQgPSBq
aXQubGFiZWwoKTsKIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQotICAgICAgICAg
ICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgICAgICAgICAgICAg
ICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihzdGF0ZS0+aml0Q29kZS0+Y2FsbGVl
U2F2ZVJlZ2lzdGVycygpKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNO
b2RlT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggNTM5MjEz
NGEzYzgwYjVmMDU0ODIxYTM5ZGFlNmJlMGQ4MjNmYTc5My4uZmU3OWY3OGQzNzUwZDYzNGRlMjMy
M2NhZGRiMDZkNDE3ZTg4M2JlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyB2b2lkIGNv
bXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JF
eGl0JiBleGl0CiAgICAgICAgIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoCiAgICAgICAgICAg
ICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMuc2l6ZSgpICsgbnVtTWF0ZXJpYWxpemF0aW9u
cyArIG1heE1hdGVyaWFsaXphdGlvbk51bUFyZ3VtZW50cykgKwogICAgICAgICByZXF1aXJlZFNj
cmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpICsKLSAgICAgICAgY29kZUJsb2NrLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCktPnNpemUoKSAqIHNpemVvZih1aW50NjRfdCkpOworICAgICAgICBjb2RlQmxv
Y2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5zaXplKCkgKiBzaXplb2YodWlu
dDY0X3QpKTsKICAgICBFbmNvZGVkSlNWYWx1ZSogc2NyYXRjaCA9IHNjcmF0Y2hCdWZmZXIgPyBz
dGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSkg
OiBudWxscHRyOwogICAgIEVuY29kZWRKU1ZhbHVlKiBtYXRlcmlhbGl6YXRpb25Qb2ludGVycyA9
IHNjcmF0Y2ggKyBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMuc2l6ZSgpOwogICAgIEVuY29k
ZWRKU1ZhbHVlKiBtYXRlcmlhbGl6YXRpb25Bcmd1bWVudHMgPSBtYXRlcmlhbGl6YXRpb25Qb2lu
dGVycyArIG51bU1hdGVyaWFsaXphdGlvbnM7CkBAIC0zOTAsOCArMzkwLDggQEAgc3RhdGljIHZv
aWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUs
IE9TUkV4aXQmIGV4aXQKICAgICAKICAgICAvLyBCZWZvcmUgd2Ugc3RhcnQgbWVzc2luZyB3aXRo
IHRoZSBmcmFtZSwgd2UgbmVlZCB0byBzZXQgYXNpZGUgYW55IHJlZ2lzdGVycyB0aGF0IHRoZQog
ICAgIC8vIEZUTCBjb2RlIHdhcyBwcmVzZXJ2aW5nLgotICAgIGZvciAodW5zaWduZWQgaSA9IGNv
ZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5zaXplKCk7IGktLTspIHsKLSAgICAgICAg
UmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygp
LT5hdChpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpLT5zaXplKCk7IGktLTspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9m
ZnNldCBlbnRyeSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkt
PmF0KGkpOwogICAgICAgICBqaXQubG9hZDY0KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBlbnRyeS5vZmZz
ZXQoKSksCiAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CkBAIC00MDIsNyArNDAyLDcgQEAg
c3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUq
IGppdENvZGUsIE9TUkV4aXQmIGV4aXQKIAogICAgIC8vIEZpcnN0IHNldCB1cCBTUCBzbyB0aGF0
IG91ciBkYXRhIGRvZXNuJ3QgZ2V0IGNsb2JiZXJlZCBieSBzaWduYWxzLgogICAgIHVuc2lnbmVk
IGNvbnNlcnZhdGl2ZVN0YWNrRGVsdGEgPQotICAgICAgICAoZXhpdC5tX2Rlc2NyaXB0b3ItPm1f
dmFsdWVzLm51bWJlck9mTG9jYWxzKCkgKyBiYXNlbGluZUNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNw
YWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpICogc2l6ZW9mKFJlZ2lzdGVyKSArCisgICAgICAgIChl
eGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSArIENvZGVCbG9jazo6
Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCpiYXNlbGluZUNvZGVCbG9jay0+aml0
Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpKSAqIHNpemVvZihSZWdpc3RlcikgKwogICAg
ICAgICBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbDsKICAgICBjb25zZXJ2YXRpdmVTdGFj
a0RlbHRhID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAogICAgICAgICBzdGFja0FsaWdubWVu
dEJ5dGVzKCksIGNvbnNlcnZhdGl2ZVN0YWNrRGVsdGEpOwpAQCAtNDEyLDEzICs0MTIsMTMgQEAg
c3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUq
IGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICBqaXQuY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1l
bnQoKTsKIAogICAgIFJlZ2lzdGVyU2V0IGFsbEZUTENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6
OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKTsKLSAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogYmFzZWxpbmVDYWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlUmVn
aXN0ZXJzKCk7CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGJhc2VsaW5lQ2FsbGVl
U2F2ZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJz
KCk7CiAKICAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3Qo
KTsgcmVnID0gcmVnLm5leHQoKSkgewogICAgICAgICBpZiAoIWFsbEZUTENhbGxlZVNhdmVzLmdl
dChyZWcpKSB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICB1bnNp
Z25lZCB1bndpbmRJbmRleCA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5pbmRl
eE9mKHJlZyk7CisgICAgICAgIHVuc2lnbmVkIHVud2luZEluZGV4ID0gY29kZUJsb2NrLT5qaXRD
b2RlKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+aW5kZXhPZihyZWcpOwogICAgICAgICBjb25z
dCBSZWdpc3RlckF0T2Zmc2V0KiBiYXNlbGluZVJlZ2lzdGVyT2Zmc2V0ID0gYmFzZWxpbmVDYWxs
ZWVTYXZlcy0+ZmluZChyZWcpOwogCiAgICAgICAgIGlmIChyZWcuaXNHUFIoKSkgewpAQCAtNDUz
LDcgKzQ1Myw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhp
dElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBzaXplX3QgYmFzZWxpbmVWaXJ0dWFsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXMgPSBiYXNl
bGluZUNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAg
c2l6ZV90IGJhc2VsaW5lVmlydHVhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVzID0gQ29kZUJsb2Nr
OjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKmJhc2VsaW5lQ29kZUJsb2NrLT5q
aXRDb2RlKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAKICAgICBpZiAoZXhpdC5tX2NvZGVP
cmlnaW4uaW5saW5lU3RhY2tDb250YWluc0FjdGl2ZUNoZWNrcG9pbnQoKSkgewogICAgICAgICBF
bmNvZGVkSlNWYWx1ZSogdG1wU2NyYXRjaCA9IHNjcmF0Y2ggKyBleGl0Lm1fZGVzY3JpcHRvci0+
bV92YWx1ZXMudG1wSW5kZXgoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDk2NDJkYTFjM2JkZTkzNmMzNjYxZTI3ZjE2
OGM5OTJiZWZkMjU0ODEuLjg5MjFiYmIxNzc5MDM4NzYwMDdmZTc4NDQyZGU5MTg0NzlkMDk3YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0
b3IuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWdpc3RlckF0T2Zmc2V0
TGlzdD4gU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0ZvclUKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSB0aGlzLT5jb2RlQmxvY2soKSkKLSAgICAgICAgcmV0dXJuICpjb2RlQmxvY2stPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKKyAgICAgICAgcmV0dXJuICpjb2RlQmxvY2stPmppdENvZGUoKS0+Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpOwogCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCBlNjQ1ODUz
MWViYzkwNGRlNWRkMDRjZTNhYmE1M2M1YmQzYzcwYjBmLi5hODExZjNlMDY5MDhkYzhlMzA5NTZm
MWYwODlhNDI0MTMxYzIzY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCkBAIC00NSwxMSArNDUsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LUV4ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3IoY29uc3QgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbikKK0V4ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4
ZWN1dGFibGVGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVP
cmlnaW4pCiB7CiAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUoKTsKICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgcmV0dXJuIG1f
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKKyAgICAgICAgcmV0dXJuIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCk7CiAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVD
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOwogfQogCkBAIC0xMzcyLDcgKzEzNzIsNyBAQCB2
b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2
ZXNGb3IoQ29kZUJsb2NrKiBjb2RlQgogewogICAgIEFTU0VSVF9VTlVTRUQoY29kZUJsb2NrLCBj
b2RlQmxvY2spOwogICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShjb2RlQmxvY2st
PmppdFR5cGUoKSkpOwotICAgIEFTU0VSVChjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMo
KSA9PSAmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0
ZXJzKCkpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpID09ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSk7CiAKICAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2
ZXMgPSAmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0
ZXJzKCk7CiAgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChS
ZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCBmMjc5NzE1ZWU4ODEyMjY3YjdmZjBhMjI1NjhiNDRi
YmE5YmY3MWI4Li5mMjgwYTExNTU1MjJmZTE1M2ZhYjdiYzhmNDlhODg3MjQyMmNmNjdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTMxNiwzNSAr
MzE2LDE0IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgdm9pZCBlbWl0U2F2ZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOwogICAgIHZv
aWQgZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmKTsKIAotICAgIHZvaWQg
ZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChjb2RlQmxvY2spOwotCi0gICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAg
ICAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNhbGxlZVNhdmVzKTsKLSAgICB9Ci0KICAgICB2
b2lkIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNh
bGxlZVNhdmVzKTsKICAgICAKICAgICBlbnVtIFJlc3RvcmVUYWdSZWdpc3Rlck1vZGUgeyBVc2VF
eGlzdGluZ1RhZ1JlZ2lzdGVyQ29udGVudHMsIENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0
ZXJzRnJvbUJhc2VGcmFtZSB9OwogCiAgICAgdm9pZCBlbWl0U2F2ZU9yQ29weUxMSW50QmFzZWxp
bmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqLCBWaXJ0dWFsUmVnaXN0ZXIgb2Zmc2V0VmlydHVh
bFJlZ2lzdGVyLCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlLCBHUFJSZWcgdGVtcDEsIEdQUlJlZyB0
ZW1wMiwgR1BSUmVnIHRlbXAzKTsKLSAgICAKLSAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2
ZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgewotICAgICAgICBBU1NFUlQoY29kZUJs
b2NrKTsKLQotICAgICAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMg
PSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKLSAgICAgICAgZW1pdFJlc3RvcmVD
YWxsZWVTYXZlc0ZvcihjYWxsZWVTYXZlcyk7Ci0gICAgfQogCiAgICAgdm9pZCBlbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyk7
CiAKLSAgICB2b2lkIGVtaXRTYXZlQ2FsbGVlU2F2ZXMoKQotICAgIHsKLSAgICAgICAgZW1pdFNh
dmVDYWxsZWVTYXZlc0Zvcihjb2RlQmxvY2soKSk7Ci0gICAgfQotCiAgICAgdm9pZCBlbWl0U2F2
ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQp
CkBAIC0zNTcsMTEgKzMzNiw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNy
b0Fzc2VtYmxlciB7CiAgICAgICAgIGVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7
CiAjZW5kaWYKICAgICB9Ci0gICAgCi0gICAgdm9pZCBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCkK
LSAgICB7Ci0gICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29kZUJsb2NrKCkpOwot
ICAgIH0KIAogICAgIHZvaWQgZW1pdFJlc3RvcmVTYXZlZFRhZ1JlZ2lzdGVycygpCiAgICAgewpA
QCAtMTU0MCw3ICsxNTE0LDcgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbik7CiAgICAgfQogICAgIAotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
Rm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pOworICAgIEV4ZWN1dGFibGVCYXNlKiBl
eGVjdXRhYmxlRm9yKENvZGVCbG9jayosIGNvbnN0IENvZGVPcmlnaW4mKTsKICAgICAKICAgICBD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJh
bWVTaHVmZmxlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNo
dWZmbGVEYXRhLmNwcAppbmRleCAzZGQ2ZTBjYjFiZjU3N2I5MzQzNDBiNDExN2E2NTU4YTkxMjk1
MWM5Li44MTgwZDZhYmE1NzQwNDAxYTJmY2FiMmQ1YTFmZGQ1M2M5YTIwNmEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcApAQCAt
MzQsMTEgKzM0LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGE6OnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsK
LSAgICBzZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0
ZXJzKCkpOwotfQotCiB2b2lkIENhbGxGcmFtZVNodWZmbGVEYXRhOjpzZXR1cENhbGxlZVNhdmVS
ZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHJlZ2lzdGVyU2F2ZUxvY2F0aW9u
cykKIHsKICAgICBSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzIHsgUmVnaXN0ZXJTZXQ6
OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgKaW5kZXggMGJjMTliOTlkNjFlNGJjYmI3MTllYTlm
Y2MxYmM4YzM3ZmJmZWM1Zi4uNmNlYzA0NDZjMzBjMGVkZWY4MDljYWE4N2MwZTlkMTJiOGY4ZWI0
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURh
dGEuaApAQCAtNTMsNyArNTMsNiBAQCBzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgewogICAg
IEdQUlJlZyBudW1iZXJUYWdSZWdpc3RlciB7IEludmFsaWRHUFJSZWcgfTsKICNlbmRpZgogCi0g
ICAgdm9pZCBzZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoQ29kZUJsb2NrKik7CiAgICAgdm9pZCBz
ZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKICAg
ICBWYWx1ZVJlY292ZXJ5IGNhbGxlZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggMDMwZjNmMzZmNmVlZmQ4NzkwZGE4OTQ1NzhjOTRhYWEyMGM1OTk3Zi4uZGQzMjYwYjJjMDg1
MDZhZjNhMWEzYmI1MzBjYjJlMWJiNTE5NTU2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtNzA2LDYgKzcwNiwxMSBAQCB2b2lkIEpJVDo6ZW1pdE1hdGVyaWFsaXplTWV0YWRhdGFB
bmRDb25zdGFudFBvb2xSZWdpc3RlcnMoKQogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29k
ZUJsb2NrOjpKSVREYXRhOjpvZmZzZXRPZkpJVENvbnN0YW50UG9vbCgpKSwgc19jb25zdGFudHNH
UFIpOwogfQogCit2b2lkIEpJVDo6ZW1pdFNhdmVDYWxsZWVTYXZlcygpCit7CisgICAgQmFzZTo6
ZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcigmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworfQorCiB2b2lkIEpJVDo6ZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlcygpCiB7CiAgICAgQmFzZTo6ZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcigmUmVnaXN0
ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwpAQCAt
NzgyLDcgKzc4Nyw3IEBAIHZvaWQgSklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5n
KEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICBtb3ZlKHJlZ1QxLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIAotICAgIGVt
aXRTYXZlQ2FsbGVlU2F2ZXNGb3IoJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CiAgICAg
ZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKICAgICBlbWl0TWF0ZXJpYWxpemVN
ZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAppbmRleCBmZjM4ODc0MzNjM2Q1ZDFjY2YzNjhjNmYzZWU5ZTFhOGE4ODQ3Njk4Li44N2NlOWRj
NTllMWQyZTY4Y2FmODc1YzE3NjVjYWM0OTUxMmI4MGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKQEAgLTg5Myw2ICs4OTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVt
aXRNYXRlcmlhbGl6ZU1ldGFkYXRhQW5kQ29uc3RhbnRQb29sUmVnaXN0ZXJzKCk7CiAKKyAgICAg
ICAgdm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CiAgICAgICAgIHZvaWQgZW1pdFJlc3RvcmVD
YWxsZWVTYXZlcygpOwogCiAgICAgICAgIHN0YXRpYyBib29sIHJlcG9ydENvbXBpbGVUaW1lcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKaW5kZXggYjJlM2RjYzcwODI5YTQ3
ZTc4ZWRiZWI0MjAzODBjMDA4YjRjNjhmMi4uNTY1NTQyZjliOWIzZGM0MmE0NDQ3NjA2NTUwMGE4
OWUwNjlmZTIzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3BwCkBAIC0yNiw2
ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogCisj
aW5jbHVkZSAiRlRMSklUQ29kZS5oIgorCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtOTUsNiArOTcsMjIgQEAgdm9pZCBKSVRDb2RlOjpzaHJpbmtU
b0ZpdChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKQogewogfQogCitjb25zdCBSZWdpc3RlckF0
T2Zmc2V0TGlzdCogSklUQ29kZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpIGNvbnN0Cit7CisgICAg
c3dpdGNoIChqaXRUeXBlKCkpIHsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyAgICBjYXNlIEpJVFR5
cGU6OkZUTEpJVDoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEZUTDo6SklUQ29k
ZSo+KHRoaXMpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREZH
X0pJVCkKKyAgICBjYXNlIEpJVFR5cGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJuICZSZWdpc3Rl
ckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOworI2VuZGlmCisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICB9Cit9CisKIEpJVENvZGVXaXRoQ29kZVJlZjo6
SklUQ29kZVdpdGhDb2RlUmVmKEpJVFR5cGUgaml0VHlwZSkKICAgICA6IEpJVENvZGUoaml0VHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXggOGU0Y2UwM2Y4ZWVlYzM0
MGJiNjY2ZjUyNzlhNjg3NmRjMmM2ODg2MC4uZDdkMzhkZDFlNGE4NDQzNjYyOWUwOTZlNjQ2ZGU0
YjI3NzllNWY1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKQEAgLTIyOCw2ICsy
MjgsOCBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENv
ZGU+IHsKIAogICAgIHZpcnR1YWwgUENUb0NvZGVPcmlnaW5NYXAqIHBjVG9Db2RlT3JpZ2luTWFw
KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBKSVRUeXBlIG1f
aml0VHlwZTsKICAgICBTaGFyZUF0dHJpYnV0ZSBtX3NoYXJlQXR0cmlidXRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcAppbmRleCA4
YjM5MTI2YzViNTQyYTIzMmNkZjFjMDBmYWYyYWMwYmQ2YmI1MTZhLi5lZDgzMDNkZTQxYjU3NGFm
Y2U5Mjg5N2NmMGE5ZDVhZGVmNDA4MTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcApAQCAtODAsNiArODAsMTYgQEAgY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QmIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVJlZ2lzdGUKICAgICByZXR1cm4gcmVzdWx0LmdldCgpOwogfQogCitjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCYgUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmRmZ0NhbGxlZVNhdmVS
ZWdpc3RlcnMoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0
YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJlc3VsdDsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbXSB7CisgICAgICAgIHJlc3VsdC5jb25zdHJ1Y3Qo
UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgfSk7CisgICAgcmV0
dXJuIHJlc3VsdC5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
TkFCTEUoQVNTRU1CTEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlckF0T2Zmc2V0TGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3Rl
ckF0T2Zmc2V0TGlzdC5oCmluZGV4IGE5OTAxN2M0YWViZmUyOWFjZGMyNjFiOTJhNjM0ODQxMzI3
NjRjM2QuLmQxMTdjZjc1ZTA5ODg4NDgzZTc2NWU1MmEzZWM3NmYyMjJhNzEzODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmgKQEAgLTY2
LDYgKzY2LDcgQEAgY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3QgewogICAgIEZpeGVkVmVjdG9y
PFJlZ2lzdGVyQXRPZmZzZXQ+Ojpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBt
X3JlZ2lzdGVycy5lbmQoKTsgfQogCiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0JiBsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgYW5k
IE9mZnNldHMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIExMSW50LgorICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCYgZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3Rl
cnMgYW5kIE9mZnNldHMgc2F2ZWQgYW5kIHVzZWQgYnkgREZHLgogCiBwcml2YXRlOgogICAgIEZp
eGVkVmVjdG9yPFJlZ2lzdGVyQXRPZmZzZXQ+IG1fcmVnaXN0ZXJzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKaW5kZXggYjFiMzExNzMxYWQ0Yzc4MWQ1Nzcz
YzkxNTMwMzJjMzg5ZDkyNWYxZi4uN2UzYWU3ZDg5NTgyZjIxZWUyZDY3MDRjZWI3YjBlNGRmYWZm
YWJjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCkBA
IC00MDIsNyArNDAyLDcgQEAgdm9pZCBWTUluc3BlY3Rvcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKICAgICAtLWl0OwogICAgIGRhdGFMb2dGKCItLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLVxuIik7CiAKLSAgICBzaXplX3QgbnVtYmVyT2ZDYWxsZWVTYXZlU2xvdHMgPSBjb2RlQmxv
Y2stPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOworICAgIHNpemVfdCBudW1i
ZXJPZkNhbGxlZVNhdmVTbG90cyA9IENvZGVCbG9jazo6Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFs
UmVnaXN0ZXJzKCpjb2RlQmxvY2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
ICAgICBjb25zdCBSZWdpc3RlciogZW5kT2ZDYWxsZWVTYXZlcyA9IGl0IC0gbnVtYmVyT2ZDYWxs
ZWVTYXZlU2xvdHM7CiAKICAgICBlbmQgPSBpdCAtIGNvZGVCbG9jay0+bnVtVmFycygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447710</attachid>
            <date>2021-12-21 04:13:46 -0800</date>
            <delta_ts>2021-12-21 04:33:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234555-20211221041345.patch</filename>
            <type>text/plain</type>
            <size>53655</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmYyMTU2MzE3ZTdjYzRmNmZjMmEyYTZmMGI5ZTJhYWZhYmY0NDdiLi5lYzkyZDUxYzM4NGQwNWIw
NTRmZTQwMTA2YjFhM2JhZDg5MDRiZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAyMS0xMi0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBtX2NhbGxlZVNhdmVSZWdpc3RlcnMgZnJvbSBDb2Rl
QmxvY2s6OkpJVERhdGEgYW5kIHJlbmFtZSBpdCB0byBCYXNlbGluZUpJVERhdGEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU1NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2Vs
aW5lQ29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmFsaXplSklUSW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpnZXRJQ1N0YXR1c01hcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFN0dWJJ
bmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVy
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFBDKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjplbnN1cmVKSVREYXRhU2xvdyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cmVzZXRKSVREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpjYWxsZWVTYXZlUmVnaXN0ZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvZmZzZXRPZkJhc2VsaW5l
SklURGF0YSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVKSVREYXRhKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkpJVERhdGE6Om9mZnNldE9mSklUQ29uc3RhbnRQ
b29sKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjplbnN1cmVKSVREYXRhKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lSklUQ29uc3RhbnRQb29sKTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6
bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMpOgor
ICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0U2F2ZUNhbGxlZVNhdmVzKToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVP
U1JFbnRyeSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Ok9TUkV4aXQ6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZWVTYXZlU2xvdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRG
Rzo6YWRqdXN0QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAg
ICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0
YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVycyBjb25zdCk6Cisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpT
dGFja1Zpc2l0b3I6OkZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzRm9yVW53aW5kaW5nKToKKyAg
ICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpleGVjdXRhYmxlRm9yKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0U2F2ZU9yQ29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0Zvcik6CisgICAgICAgICogaml0
L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRT
YXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQmFzZWxpbmVKSVRDb2RlLmg6CisgICAgICAgICog
aml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcDoKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1
ZmZsZURhdGEuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0ZXJpYWxp
emVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNhdmVDYWxsZWVTYXZlcyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUFuZExpbmtX
aXRob3V0RmluYWxpemluZyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9K
SVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVycyBj
b25zdCk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmxvYWRDb25zdGFudCk6CisgICAgICAgICogaml0L0pJ
VE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0Y2gpOgorICAgICAg
ICAqIGppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
QXRPZmZzZXRMaXN0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKiBqaXQvUmVn
aXN0ZXJBdE9mZnNldExpc3QuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogdG9vbHMvVk1JbnNwZWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpWTUluc3BlY3Rvcjo6ZHVtcFJlZ2lzdGVycyk6CisKIDIw
MjEtMTItMjEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtSSVNDVjY0XSBBZGQgbWlzc2luZyBNYWNyb0Fzc2VtYmxlclJJU0NWNjQgZmxvYXRpbmctcG9p
bnQgcm91bmRpbmcsIGNvbXBhcmlzb24gbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBiNGEyZjA2YWRhM2QzYmYyMWVlMDBjNDQyNTFh
MzNlZjFiOTQyMWI2Li5hNThlYThjZmNkY2NhNDQzODUwMzM1N2I3NTEyY2YxYWYxYjRjMTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNzg0
LDExICs3ODQsOCBAQCB2b2lkIENvZGVCbG9jazo6c2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNv
ZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4gaml0Q29kZSkKIAogICAgIHsKICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgICAgICBhdXRvJiBqaXREYXRhID0gZW5z
dXJlSklURGF0YShsb2NrZXIpOwotCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGppdERhdGEubV9q
aXRDb25zdGFudFBvb2wuaXNFbXB0eSgpKTsKLSAgICAgICAgaml0RGF0YS5tX2ppdENvbnN0YW50
UG9vbCA9IEZpeGVkVmVjdG9yPHZvaWQqPihqaXRDb2RlLT5tX2NvbnN0YW50UG9vbC5zaXplKCkp
OwotICAgICAgICBqaXREYXRhLm1fc3R1YkluZm9zID0gRml4ZWRWZWN0b3I8U3RydWN0dXJlU3R1
YkluZm8+KGppdENvZGUtPm1fdW5saW5rZWRTdHViSW5mb3Muc2l6ZSgpKTsKKyAgICAgICAgbV9i
YXNlbGluZUpJVERhdGEgPSBCYXNlbGluZUpJVERhdGE6OmNyZWF0ZShqaXRDb2RlLT5tX2NvbnN0
YW50UG9vbC5zaXplKCkpOworICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+bV9zdHViSW5mb3Mg
PSBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4oaml0Q29kZS0+bV91bmxpbmtlZFN0dWJJ
bmZvcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIHVubGlua2VkQ2FsbExpbmtJbmZvIDog
aml0Q29kZS0+bV91bmxpbmtlZENhbGxzKSB7CiAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbyA9IGdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgobG9ja2VyLCB1bmxp
bmtlZENhbGxMaW5rSW5mby5ieXRlY29kZUluZGV4KTsKICAgICAgICAgICAgIEFTU0VSVChjYWxs
TGlua0luZm8pOwpAQCAtNzk5LDI0ICs3OTYsMjQgQEAgdm9pZCBDb2RlQmxvY2s6OnNldHVwV2l0
aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJVENvZGU+IGppdENvZGUpCiAgICAg
ICAgICAgICBhdXRvIGVudHJ5ID0gaml0Q29kZS0+bV9jb25zdGFudFBvb2wuYXQoaSk7CiAgICAg
ICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBKSVRDb25z
dGFudFBvb2w6OlR5cGU6Okdsb2JhbE9iamVjdDoKLSAgICAgICAgICAgICAgICBqaXREYXRhLm1f
aml0Q29uc3RhbnRQb29sW2ldID0gbV9nbG9iYWxPYmplY3QuZ2V0KCk7CisgICAgICAgICAgICAg
ICAgKCptX2Jhc2VsaW5lSklURGF0YSlbaV0gPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSklUQ29uc3RhbnRQb29sOjpUeXBl
OjpTdHJ1Y3R1cmVTdHViSW5mbzogewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsKICAgICAgICAgICAgICAg
ICBVbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvJiB1bmxpbmtlZFN0dWJJbmZvID0gaml0Q29kZS0+
bV91bmxpbmtlZFN0dWJJbmZvc1tpbmRleF07Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gaml0RGF0YS5tX3N0dWJJbmZvc1tpbmRleF07CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gbV9iYXNlbGluZUpJVERhdGEtPm1f
c3R1YkluZm9zW2luZGV4XTsKICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0aWFsaXplRnJv
bVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8odGhpcywgdW5saW5rZWRTdHViSW5mbyk7Ci0gICAg
ICAgICAgICAgICAgaml0RGF0YS5tX2ppdENvbnN0YW50UG9vbFtpXSA9ICZzdHViSW5mbzsKKyAg
ICAgICAgICAgICAgICAoKm1fYmFzZWxpbmVKSVREYXRhKVtpXSA9ICZzdHViSW5mbzsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgSklUQ29u
c3RhbnRQb29sOjpUeXBlOjpGdW5jdGlvbkRlY2w6IHsKICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVudHJ5LnBvaW50ZXIoKSk7Ci0gICAg
ICAgICAgICAgICAgaml0RGF0YS5tX2ppdENvbnN0YW50UG9vbFtpXSA9IGZ1bmN0aW9uRGVjbChp
bmRleCk7CisgICAgICAgICAgICAgICAgKCptX2Jhc2VsaW5lSklURGF0YSlbaV0gPSBmdW5jdGlv
bkRlY2woaW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FzZSBKSVRDb25zdGFudFBvb2w6OlR5cGU6OkZ1bmN0aW9uRXhwcjogewogICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50
cnkucG9pbnRlcigpKTsKLSAgICAgICAgICAgICAgICBqaXREYXRhLm1faml0Q29uc3RhbnRQb29s
W2ldID0gZnVuY3Rpb25FeHByKGluZGV4KTsKKyAgICAgICAgICAgICAgICAoKm1fYmFzZWxpbmVK
SVREYXRhKVtpXSA9IGZ1bmN0aW9uRXhwcihpbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC05MDUsNyArOTAyLDcgQEAgQ29kZUJs
b2NrOjp+Q29kZUJsb2NrKCkKICAgICAvLyBkZXN0cnVjdG9ycy4KIAogI2lmIEVOQUJMRShKSVQp
Ci0gICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsKKyAgICBpZiAoYXV0
byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7CiAgICAgICAgIGZvciAoYXV0
byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewogICAgICAgICAgICAgc3R1Yklu
Zm8uYWJvdXRUb0RpZSgpOwogICAgICAgICAgICAgc3R1YkluZm8uZGVyZWYoKTsKQEAgLTEyNDks
NyArMTI0Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBWaXNpdG9yJiB2aXNpdG9yCiAKICNpZiBFTkFCTEUoSklUKQog
ICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBq
aXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0g
bV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgc3R1Yklu
Zm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgICAgICBzdHViSW5mby5wcm9w
YWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKICAgICAgICAgfQpAQCAtMTU4MiwyMCArMTU3OSw5
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKIH0KIAogI2lm
IEVOQUJMRShKSVQpCi1Db2RlQmxvY2s6OkpJVERhdGEmIENvZGVCbG9jazo6ZW5zdXJlSklURGF0
YVNsb3coY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKLXsKLSAgICBBU1NFUlQoIW1faml0RGF0
YSk7Ci0gICAgYXV0byBqaXREYXRhID0gbWFrZVVuaXF1ZTxKSVREYXRhPigpOwotICAgIC8vIGNh
bGxlZVNhdmVSZWdpc3RlcnMoKSBjYW4gYWNjZXNzIG1faml0RGF0YSB3aXRob3V0IHRha2luZyBh
IGxvY2sgZnJvbSBCYXNlbGluZSBKSVQuIFRoaXMgaXMgT0sgc2luY2UgSklURGF0YTo6bV9jYWxs
ZWVTYXZlUmVnaXN0ZXJzIGlzIGZpbGxlZCBpbiBERkcgYW5kIEZUTCBDb2RlQmxvY2tzLgotICAg
IC8vIEJ1dCB3ZSBzaG91bGQgbm90IHNlZSBnYXJiYWdlIHBvaW50ZXIgaW4gdGhhdCBjYXNlLiBX
ZSBlbnN1cmUgSklURGF0YTo6bV9jYWxsZWVTYXZlUmVnaXN0ZXJzIGlzIGluaXRpYWxpemVkIGFz
IG51bGxwdHIgYmVmb3JlIGV4cG9zaW5nIGl0IHRvIEJhc2VsaW5lSklUIGJ5IHN0b3JlLXN0b3Jl
LWZlbmNlLgotICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgbV9qaXREYXRhID0gV1RG
TW92ZShqaXREYXRhKTsKLSAgICByZXR1cm4gKm1faml0RGF0YTsKLX0KLQogdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplSklUSW5saW5lQ2FjaGVzKCkKIHsKLSAgICBpZiAoYXV0byogaml0RGF0YSA9
IG1faml0RGF0YS5nZXQoKSkgeworICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJ
VERhdGEuZ2V0KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1f
c3R1YkluZm9zKSB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXJCYXNlIGxvY2tlcihO
b0xvY2tpbmdOZWNlc3NhcnkpOwogICAgICAgICAgICAgc3R1YkluZm8udmlzaXRXZWFrUmVmZXJl
bmNlcyhsb2NrZXIsIHRoaXMpOwpAQCAtMTY5OSw3ICsxNjg1LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiBy
ZXN1bHQpCiAgICAgfQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzSklUKGpp
dFR5cGUoKSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2ppdERhdGEuZ2V0KCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9z
KQogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8uY29kZU9yaWdpbiwgSUNTdGF0
dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gJnN0dWJJbmZvOwogICAgICAgICB9CkBA
IC0xNzM4LDcgKzE3MjQsNyBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoSUNTdGF0
dXNNYXAmIHJlc3VsdCkKIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmZpbmRTdHViSW5m
byhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOwotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7Cisg
ICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewogICAgICAg
ICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKICAgICAgICAg
ICAgIGlmIChzdHViSW5mby5jb2RlT3JpZ2luID09IGNvZGVPcmlnaW4pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuICZzdHViSW5mbzsKQEAgLTE3ODYsMzIgKzE3NzIsMTIgQEAgQ2FsbExpbmtJbmZv
KiBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnNl
dENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQgcmVnaXN0ZXJTZXQpCi17Ci0gICAgYXV0
byBjYWxsZWVTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJBdE9mZnNldExpc3QocmVnaXN0ZXJTZXQp
OwotCi0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGF1dG8mIGpp
dERhdGEgPSBlbnN1cmVKSVREYXRhKGxvY2tlcik7Ci0gICAgaml0RGF0YS5tX2NhbGxlZVNhdmVS
ZWdpc3RlcnMgPSBXVEZNb3ZlKGNhbGxlZVNhdmVSZWdpc3RlcnMpOwotICAgIFdURjo6c3RvcmVT
dG9yZUZlbmNlKCk7Ci0gICAgaml0RGF0YS5tX2hhc0NhbGxlZVNhdmVSZWdpc3RlcnMgPSB0cnVl
OwotfQotCi12b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlckF0
T2Zmc2V0TGlzdCYmIHJlZ2lzdGVyQXRPZmZzZXRMaXN0KQotewotICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICBhdXRvJiBqaXREYXRhID0gZW5zdXJlSklURGF0YShs
b2NrZXIpOwotICAgIGppdERhdGEubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gV1RGTW92ZShyZWdp
c3RlckF0T2Zmc2V0TGlzdCk7Ci0gICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBqaXRE
YXRhLm1faGFzQ2FsbGVlU2F2ZVJlZ2lzdGVycyA9IHRydWU7Ci19Ci0KLXZvaWQgQ29kZUJsb2Nr
OjpyZXNldEpJVERhdGEoKQordm9pZCBDb2RlQmxvY2s6OnJlc2V0QmFzZWxpbmVKSVREYXRhKCkK
IHsKICAgICBSRUxFQVNFX0FTU0VSVCghSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSk7CiAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIAotICAgIGlmIChhdXRvKiBq
aXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jh
c2VsaW5lSklURGF0YS5nZXQoKSkgewogICAgICAgICAvLyBXZSBjYW4gY2xlYXIgdGhlc2UgYmVj
YXVzZSBubyBvdGhlciB0aHJlYWQgd2lsbCBoYXZlIHJlZmVyZW5jZXMgdG8gYW55IHN0dWIgaW5m
b3MsIGNhbGwKICAgICAgICAgLy8gbGluayBpbmZvcywgb3IgYnkgdmFsIGluZm9zIGlmIHdlIGRv
bid0IGhhdmUgSklUIGNvZGUuIEF0dGVtcHRzIHRvIHF1ZXJ5IHRoZXNlIGRhdGEKICAgICAgICAg
Ly8gc3RydWN0dXJlcyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldElDU3RhdHVzTWFwIGFu
ZCBmcmllbmRzKSB3aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCkBAIC0xODMyLDcgKzE3OTgsNyBA
QCB2b2lkIENvZGVCbG9jazo6cmVzZXRKSVREYXRhKCkKICAgICAgICAgLy8gV2UgY2FuIGNsZWFy
IHRoaXMgYmVjYXVzZSB0aGUgREZHJ3MgcXVlcmllcyB0byB0aGVzZSBkYXRhIHN0cnVjdHVyZXMg
YXJlIGd1YXJkZWQgYnkgd2hldGhlcgogICAgICAgICAvLyB0aGVyZSBpcyBKSVQgY29kZS4KIAot
ICAgICAgICBtX2ppdERhdGEgPSBudWxscHRyOworICAgICAgICBtX2Jhc2VsaW5lSklURGF0YSA9
IG51bGxwdHI7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xODc4LDcgKzE4NDQsNyBAQCB2b2lkIENv
ZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiBsb2NrZXIsCiAgICAgfSk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChhdXRv
KiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgaWYgKGF1dG8qIGppdERhdGEgPSBt
X2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDog
aml0RGF0YS0+bV9zdHViSW5mb3MpCiAgICAgICAgICAgICBzdHViSW5mby52aXNpdEFnZ3JlZ2F0
ZSh2aXNpdG9yKTsKICAgICB9CkBAIC0yNDc4LDE4ICsyNDQ0LDYgQEAgdW5zaWduZWQgQ29kZUJs
b2NrOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIGNvbnN0CiB9CiAKICNpZiAhRU5BQkxF
KENfTE9PUCkKLWNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBDb2RlQmxvY2s6OmNhbGxlZVNh
dmVSZWdpc3RlcnMoKSBjb25zdAotewotI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKGF1dG8qIGpp
dERhdGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsKLSAgICAgICAgaWYgKGppdERhdGEtPm1faGFzQ2Fs
bGVlU2F2ZVJlZ2lzdGVycykKLSAgICAgICAgICAgIHJldHVybiAmaml0RGF0YS0+bV9jYWxsZWVT
YXZlUmVnaXN0ZXJzOwotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAmUmVnaXN0ZXJBdE9mZnNl
dExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci19Ci0KLSAgICAKIHN0
YXRpYyBzaXplX3Qgcm91bmRDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoc2l6ZV90
IGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7CiAKQEAgLTI1MDIsOSArMjQ1Niw5IEBAIHNpemVfdCBD
b2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMo
KQogICAgIHJldHVybiByb3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhudW1i
ZXJPZkxMSW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogfQogCi1zaXplX3QgQ29k
ZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKQorc2l6ZV90IENvZGVC
bG9jazo6Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKGNvbnN0IFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0JiBjYWxsZWVTYXZlUmVnaXN0ZXJzKQogewotICAgIHJldHVybiByb3VuZENhbGxl
ZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhjYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUo
KSk7CisgICAgcmV0dXJuIHJvdW5kQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKGNh
bGxlZVNhdmVSZWdpc3RlcnMuc2l6ZSgpKTsKIH0KICNlbmRpZgogCkBAIC0zNTE1LDcgKzM0Njks
NyBAQCBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6ZmluZFBDKHZvaWQqIHBj
KQogCiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0g
ICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgICAgIGlm
IChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKICAgICAgICAgICAg
IGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewogICAgICAgICAg
ICAgICAgIGlmIChzdHViSW5mby5jb250YWluc1BDKHBjKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0dWJJbmZvLmNvZGVPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKaW5kZXggYTFmNzkyYjViMDA3M2U0MTQxYjVmNGFiMDY2ZGUwY2E0YzFl
YWM2Ny4uNDkxYmI4ZWUwNWIxNTk3M2Q1OWRkMzYzYTg0MDU2NDViNmMyYzFkZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTUsNiArOTUsNyBAQCBj
bGFzcyBNZXRhZGF0YVRhYmxlOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiBjbGFzcyBT
dHJ1Y3R1cmVTdHViSW5mbzsKIGNsYXNzIEJhc2VsaW5lSklUQ29kZTsKK2NsYXNzIEJhc2VsaW5l
SklURGF0YTsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQ29kZUJs
b2NrUmFyZURhdGEpOwogCkBAIC0yNDYsNyArMjQ3LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+IGJ5dGVjb2Rl
SW5kZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4KTsKIAotICAgIC8vIEJlY2F1c2Ug
d2UgbWlnaHQgdGhyb3cgb3V0IGJhc2VsaW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2VsaW5l
IEpJVCBkYXRhIChtX2ppdERhdGEpLAorICAgIC8vIEJlY2F1c2Ugd2UgbWlnaHQgdGhyb3cgb3V0
IGJhc2VsaW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2VsaW5lIEpJVCBkYXRhIChtX2Jhc2Vs
aW5lSklURGF0YSksCiAgICAgLy8geW91IG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCB0aGUgbGlm
ZXRpbWUgb2Ygd2hlbiB5b3UgdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbi4K
ICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIG1heSBoYXZlIHJhdyBwb2ludGVycyBpbnRvIHRoaXMg
ZGF0YSBzdHJ1Y3R1cmUgdGhhdCBnZXRzIHRocm93biBhd2F5LgogICAgIC8vIFNwZWNpZmljYWxs
eSwgeW91IG5lZWQgdG8gZW5zdXJlIHRoYXQgbm8gR0MgY2FuIGJlIGZpbmFsaXplZCAodHlwaWNh
bGx5IHRoYXQgbWVhbnMgbm8KQEAgLTI1NSwyOSArMjU2LDkgQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChJQ1N0YXR1c01hcCYgcmVz
dWx0KTsKICAgICAKICNpZiBFTkFCTEUoSklUKQotICAgIHN0cnVjdCBKSVREYXRhIHsKLSAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwotCi0gICAgICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZVN0
dWJJbmZvPiBtX3N0dWJJbmZvczsKLSAgICAgICAgYm9vbCBtX2hhc0NhbGxlZVNhdmVSZWdpc3Rl
cnMgeyBmYWxzZSB9OwotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCBtX2NhbGxlZVNhdmVS
ZWdpc3RlcnM7Ci0KLSAgICAgICAgRml4ZWRWZWN0b3I8dm9pZCo+IG1faml0Q29uc3RhbnRQb29s
OwotICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSklUQ29uc3RhbnRQb29sKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpJVERhdGEsIG1faml0Q29uc3RhbnRQb29sKTsgfQotICAg
IH07Ci0KICAgICB2b2lkIHNldHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGlu
ZUpJVENvZGU+KTsKIAotICAgIEpJVERhdGEmIGVuc3VyZUpJVERhdGEoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiBsb2NrZXIpCi0gICAgewotICAgICAgICBpZiAoTElLRUxZKG1faml0RGF0YSkp
Ci0gICAgICAgICAgICByZXR1cm4gKm1faml0RGF0YTsKLSAgICAgICAgcmV0dXJuIGVuc3VyZUpJ
VERhdGFTbG93KGxvY2tlcik7Ci0gICAgfQotICAgIEpJVERhdGEmIGVuc3VyZUpJVERhdGFTbG93
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOwotCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkpJVERhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2ppdERh
dGEpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkJhc2VsaW5lSklURGF0YSgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fYmFzZWxpbmVKSVREYXRhKTsgfQog
CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGFkZE9wdGltaXppbmdTdHViSW5mbyhBY2Nlc3NUeXBl
LCBDb2RlT3JpZ2luKTsKIApAQCAtMjkzLDE1ICsyNzQsMTIgQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAKICAgICBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyh2
b2lkKiBwYyk7CiAKLSAgICB2b2lkIHNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQp
OwotICAgIHZvaWQgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlckF0T2Zmc2V0TGlzdCYm
KTsKLQogICAgIC8vIFdlIGNhbGwgdGhpcyB3aGVuIHdlIHdhbnQgdG8gcmVhdHRlbXB0IGNvbXBp
bGluZyBzb21ldGhpbmcgd2l0aCB0aGUgYmFzZWxpbmUgSklULiBJZGVhbGx5CiAgICAgLy8gdGhl
IGJhc2VsaW5lIEpJVCB3b3VsZCBub3QgYWRkIGRhdGEgdG8gQ29kZUJsb2NrLCBidXQgaW5zdGVh
ZCBpdCB3b3VsZCBwdXQgaXRzIGRhdGEgaW50bwogICAgIC8vIGEgbmV3bHkgY3JlYXRlZCBKSVRD
b2RlLCB3aGljaCBjb3VsZCBiZSB0aHJvd24gYXdheSBpZiB3ZSBiYWlsIG9uIEpJVCBjb21waWxh
dGlvbi4gVGhlbiB3ZQogICAgIC8vIHdvdWxkIGJlIGFibGUgdG8gZ2V0IHJpZCBvZiB0aGlzIHNp
bGx5IGZ1bmN0aW9uLgogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MDYxCi0gICAgdm9pZCByZXNldEpJVERhdGEoKTsKKyAgICB2b2lkIHJl
c2V0QmFzZWxpbmVKSVREYXRhKCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIHZvaWQg
dW5saW5rSW5jb21pbmdDYWxscygpOwpAQCAtNTU0LDEwICs1MzIsMTAgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBTaW1wbGVKdW1wVGFi
bGUmIGJhc2VsaW5lU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KTsKICAgICBTdHJpbmdK
dW1wVGFibGUmIGJhc2VsaW5lU3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KTsK
LSAgICB2b2lkKiBiYXNlbGluZUpJVENvbnN0YW50UG9vbCgpCisgICAgQmFzZWxpbmVKSVREYXRh
KiBiYXNlbGluZUpJVERhdGEoKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9qaXRE
YXRhICYmIGppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7Ci0gICAgICAgIHJldHVy
biBtX2ppdERhdGEtPm1faml0Q29uc3RhbnRQb29sLnN0b3JhZ2UoKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgcmV0
dXJuIG1fYmFzZWxpbmVKSVREYXRhLmdldCgpOwogICAgIH0KICNlbmRpZgogICAgIHNpemVfdCBu
dW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRDb2RlLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyB9CkBAIC02MzMsMTUg
KzYxMSwxMyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGNv
dW50UmVvcHRpbWl6YXRpb24oKTsKIAogI2lmICFFTkFCTEUoQ19MT09QKQotICAgIGNvbnN0IFJl
Z2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3Q7Ci0KICAgICBz
dGF0aWMgdW5zaWduZWQgbnVtYmVyT2ZMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
IHsgcmV0dXJuIFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
Lm51bWJlck9mU2V0UmVnaXN0ZXJzKCk7IH0KICAgICBzdGF0aWMgc2l6ZV90IGxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBzaXplX3QgY2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgc3RhdGljIHNpemVfdCBjYWxsZWVT
YXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmKTsK
ICNlbHNlCiAgICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mTExJbnRCYXNlbGluZUNhbGxlZVNh
dmVSZWdpc3RlcnMoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIHNpemVfdCBsbGludEJhc2Vs
aW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkgeyByZXR1cm4gMTsgfTsKLSAg
ICBzaXplX3QgY2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkgeyByZXR1cm4gMDsg
fQorICAgIHN0YXRpYyBzaXplX3QgY2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKGNv
bnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JikgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoSklUKQpAQCAtOTYwLDcgKzkzNiw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5BQkxFKEpJVCkK
IHB1YmxpYzoKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SklURGF0YT4gbV9qaXREYXRhOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxCYXNlbGluZUpJVERhdGE+IG1fYmFzZWxpbmVKSVREYXRhOwogcHJpdmF0
ZToKICNlbmRpZgogI2lmIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlcGF0Y2guY3BwCmluZGV4IDIzNDFjMDNiYjFmZDk4NmE1OTI3NGZiMjk0M2FhYTU1
YzAyYjRiMGEuLmFiNmM5MjQwNjViZWE5OTg3NGU2YzdkZDQ3MmRiYjE5MWU4MDhjZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTE3NTgsOCArMTc1
OCw4IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAKICAgICBpZiAoIWZyYW1lU2h1ZmZsZXIg
JiYgY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkgewogICAgICAgICAvLyBXZSBzdHJvbmdseSBh
c3N1bWUgdGhhdCBjYWxsZWVHUFIgaXMgbm90IGEgY2FsbGVlIHNhdmUgcmVnaXN0ZXIgaW4gdGhl
IHNsb3cgcGF0aC4KLSAgICAgICAgQVNTRVJUKCFjYWxsZXJDb2RlQmxvY2stPmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKS0+ZmluZChjYWxsZWVHUFIpKTsKLSAgICAgICAgc3R1YkppdC5lbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIEFTU0VSVCghY2FsbGVyQ29kZUJsb2NrLT5qaXRDb2Rl
KCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+ZmluZChjYWxsZWVHUFIpKTsKKyAgICAgICAgc3R1
YkppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNhbGxlckNvZGVCbG9jay0+aml0Q29kZSgp
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgIH0KIAogICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3Qgc2xvd1BhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKaW5kZXggNDk5N2JkNGJiOTBlNTkzNzIyOTBjMGVhYjI4NjhiNmMxODEyOWE3YS4uODk0N2Ni
ZTlhM2M1MjE3NmEyZDQ1MzQ3ODgyOTYyZTk1YzFlMzhmOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMzAyLDYgKzMwMiwxNiBAQCBjbGFzcyBKSVRD
b21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogCiAgICAgVk0mIHZtKCkgeyByZXR1cm4g
bV9ncmFwaC5tX3ZtOyB9CiAKKyAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKQorICAg
IHsKKyAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcigmUmVnaXN0ZXJBdE9mZnNldExp
c3Q6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgfQorCisgICAgdm9pZCBlbWl0U2F2
ZUNhbGxlZVNhdmVzKCkKKyAgICB7CisgICAgICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoJlJl
Z2lzdGVyQXRPZmZzZXRMaXN0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIH0KKwog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgT1NSRXhpdEp1bXBQbGFjZWhvbGRlcjsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKaW5kZXggZTc2MzcxYzA1
MmNkMTIzODA4MTlhN2E0YTU2OWJiZmZmOGQwZjdkYy4uMTEzMmNmMGQ5ZjY1YjEzOTdmZWI5ZWI5
NTcxNDFlYjRkMTE1ODVmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eS5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoVk0mIHZtLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjbwogCiAgICAg
Ly8gNikgQ29weSBvdXIgY2FsbGVlIHNhdmVzIHRvIGJ1ZmZlci4KICNpZiBOVU1CRVJfT0ZfQ0FM
TEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKLSAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCog
cmVnaXN0ZXJTYXZlTG9jYXRpb25zID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucyA9
IGNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgUmVnaXN0
ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2
ZVJlZ2lzdGVyT2Zmc2V0cygpOwogICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0g
UmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCAyOWI1ZTE1NzIwOWY3Mjg0MDNhZTMx
ODQyYzJlYjRlNzI3NzYzN2E5Li44OWFlNzNmMjNkYTU3YzczZWUxMDU2MTRiYzY3NDdlZDAxOTI1
NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTczOCw4
ICs3MzgsOCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBW
TSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgIENDYWxsSGVscGVyczo6
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwogCiAgICAgLy8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRo
ZSBvbmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4KLSAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVT
YXZlcygpOwotICAgIGppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVC
bG9jaygpKTsKKyAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihqaXQuY29kZUJsb2Nr
KCktPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBqaXQuZW1pdFNhdmVD
YWxsZWVTYXZlc0ZvcihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+aml0Q29kZSgpLT5jYWxsZWVT
YXZlUmVnaXN0ZXJzKCkpOwogCiAgICAgLy8gVGhlIHRhZyByZWdpc3RlcnMgYXJlIG5lZWRlZCB0
byBtYXRlcmlhbGl6ZSByZWNvdmVyaWVzIGJlbG93LgogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVU
YWdDaGVja1JlZ2lzdGVycygpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgT1NSRXhpdDo6Y29t
cGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwg
Y29uc3QKICAgICAgICAgaWYgKG9wZXJhbmQuaXNUbXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSAmJiBvcGVyYW5kLnRvTG9jYWwoKSA8
IHN0YXRpY19jYXN0PGludD4oaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmNhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycygpKSkKKyAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpICYm
IG9wZXJhbmQudG9Mb2NhbCgpIDwgc3RhdGljX2Nhc3Q8aW50PihDb2RlQmxvY2s6OmNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygqaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmppdENv
ZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXgg
ZTcyMmY5ZWJkYWNjODkzNjkwNjU2ZDViNjNlOWY2MjQ0NDYxNWY0My4uMTgyMjIzOTZjZjQ1ZTdh
ZTdjM2IxMDNjNGVmYTk2ZmFhNzQxOGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMjMwLDcgKzIzMCw3
IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0
dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvCiAKIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxs
ZWVTYXZlU2xvdChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgQ29kZUJsb2NrKiBi
YXNlbGluZUNvZGVCbG9jaywgR1BSUmVnIGNhbGxlZVNhdmUpCiB7Ci0gICAgY29uc3QgUmVnaXN0
ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gYmFzZWxpbmVDb2RlQmxvY2stPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2
ZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNhdmVzLT5zaXplKCk7IGkrKykg
ewogICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwog
ICAgICAgICBpZiAoZW50cnkucmVnKCkgIT0gY2FsbGVlU2F2ZSkKQEAgLTMxNCw3ICszMTQsNyBA
QCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9T
UkV4aXRCYXNlJiBleGl0KQogICAgICAgICB9IGVsc2UgaWYgKHRydWVDYWxsZXIpIHsKICAgICAg
ICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBqaXQuYmFzZWxp
bmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+bWV0
YWRhdGFUYWJsZSgpKSwgY2FsbGVlU2F2ZVNsb3QoaW5saW5lQ2FsbEZyYW1lLCBiYXNlbGluZUNv
ZGVCbG9jaywgSklUOjpzX21ldGFkYXRhR1BSKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmVQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5i
YXNlbGluZUpJVENvbnN0YW50UG9vbCgpKSwgY2FsbGVlU2F2ZVNsb3QoaW5saW5lQ2FsbEZyYW1l
LCBiYXNlbGluZUNvZGVCbG9jaywgSklUOjpzX2NvbnN0YW50c0dQUikpOworICAgICAgICAgICAg
aml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiYXNlbGluZUNvZGVCbG9j
a0ZvckNhbGxlci0+YmFzZWxpbmVKSVREYXRhKCkpLCBjYWxsZWVTYXZlU2xvdChpbmxpbmVDYWxs
RnJhbWUsIGJhc2VsaW5lQ29kZUJsb2NrLCBKSVQ6OnNfY29uc3RhbnRzR1BSKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCkBAIC00MDcs
NyArNDA3LDcgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgIGp1bXBUYXJnZXQgPSBk
ZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGNvZGVCbG9ja0ZvckV4aXQtPm1ldGFkYXRhVGFibGUoKSksIEpJVDo6c19tZXRhZGF0YUdQ
Uik7Ci0gICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxv
Y2tGb3JFeGl0LT5iYXNlbGluZUpJVENvbnN0YW50UG9vbCgpKSwgSklUOjpzX2NvbnN0YW50c0dQ
Uik7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxv
Y2tGb3JFeGl0LT5iYXNlbGluZUpJVERhdGEoKSksIEpJVDo6c19jb25zdGFudHNHUFIpOwogCiAg
ICAgICAgIEJ5dGVjb2RlSW5kZXggZXhpdEluZGV4ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4g
ZGVzdGluYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBjMmJi
ZDVlOWMzZTgzNWRhOTFlOTYxNWVlMWY4M2Y4MzZkZDA2ZGRkLi5hNDkzYmUzNGFmNTEzMDhkMmJk
ZjE5MzQwZDk4MjljZWMzNDYzMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAKQEAgLTE5OCw4ICsxOTgsNiBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGls
ZUluVGhyZWFkSW1wbCgpCiAgICAgICAgIHBhcnNlKGRmZyk7CiAgICAgfQogCi0gICAgbV9jb2Rl
QmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVS
ZWdpc3RlcnMoKSk7Ci0KICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKIAogI2RlZmluZSBSVU5f
UEhBU0UocGhhc2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAppbmRleCAyZDgwNTZmNjNjM2EyMjczZGNiMzhiOTNjMzMwNTQwNWE5NGY5NGI1Li43ZmI1
NjUyMzMyZjljNjBmNjIyMjg2ZmVhYTllNTZiYTYzMjdmNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTc0MSw3
ICs3NDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRl
ZEFyZ3M7ICsraSkKICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmdzW2ldID0gVmFsdWVS
ZWNvdmVyeTo6Y29uc3RhbnQoanNVbmRlZmluZWQoKSk7CiAKLSAgICAgICAgICAgIHNodWZmbGVE
YXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2ppdC5jb2RlQmxvY2soKSk7CisgICAgICAg
ICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoJlJlZ2lzdGVyQXRPZmZz
ZXRMaXN0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBh
c3NlZEFyZ3MpLCBtX2ppdC5jYWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMTM1YzEyNjNhYjRh
NmFhNTU0ZDA2YmRkMGIzNTg0M2MyY2RlOTViMC4uMDc4YmJlMzllYWJiNWUzZWQyYzhjYjhjMTgw
MmMwNThmYjM2Y2FmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC04NDIsNyArODQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51
bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAg
c2h1ZmZsZURhdGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVk
KCkpOwogCi0gICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMo
bV9qaXQuY29kZUJsb2NrKCkpOworICAgICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVT
YXZlUmVnaXN0ZXJzKCZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgSklUQ29tcGlsZXI6OmNhbGxl
ZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xh
eW91dFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAKaW5kZXggOTY0OWJmMmFiMzdjOWM1ZGZmYmM5ZDQ2NjU0MDgxNmZlMGZiYTU2Yi4u
OTFjYzhmMzRlNjRlZGM3NDg2OWM2ZWVkZTQxMTgyMDg4MmI2NTFkYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCkBAIC0xMTksNyAr
MTE5LDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWxsb2NhdGlvbih1c2VkT3Bl
cmFuZHMuc2l6ZSgpKTsKLSAgICAgICAgbV9ncmFwaC5tX25leHRNYWNoaW5lTG9jYWwgPSBjb2Rl
QmxvY2soKS0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgICAgIG1f
Z3JhcGgubV9uZXh0TWFjaGluZUxvY2FsID0gQ29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMoUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmRmZ0NhbGxlZVNhdmVSZWdpc3Rl
cnMoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1c2VkT3BlcmFuZHMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmICghdXNlZE9wZXJhbmRzLmdldEZvck9wZXJhbmRJ
bmRleChpKSkgewogICAgICAgICAgICAgICAgIGFsbG9jYXRpb25baV0gPSBVSU5UX01BWDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDliOThkNTQ3NjMxODM4
NmFmYjJmZWNmOGVlMWQyNjAyYWFmYWRlZTcuLjNiNGNhMWQxNTc1ZDUwYmJmZTFjNGI3YWI4MmYx
OWVhYzkwNjJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
cGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApA
QCAtNzcsNyArNzcsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJl
c3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHJlZ2lzdGVy
T2Zmc2V0cyA9IHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpOwog
ICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKICAgICAgICAgZGF0YUxvZyh0aWVyTmFt
ZSwgIlVud2luZCBpbmZvIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJ
VFR5cGU6OkZUTEpJVCksICI6ICIsIHJlZ2lzdGVyT2Zmc2V0cywgIlxuIik7Ci0gICAgY29kZUJs
b2NrLT5zZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFdURk1vdmUocmVnaXN0ZXJPZmZzZXRzKSk7Cisg
ICAgc3RhdGUuaml0Q29kZS0+bV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJBdE9mZnNl
dExpc3QoV1RGTW92ZShyZWdpc3Rlck9mZnNldHMpKTsKICAgICBBU1NFUlQoIShzdGF0ZS5wcm9j
LT5mcmFtZVNpemUoKSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKICAgICBzdGF0ZS5qaXRD
b2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50ID0gc3RhdGUucHJvYy0+ZnJhbWVTaXplKCkg
LyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklU
Q29kZS5oCmluZGV4IDlmNTAyM2RhMWRiNDI0NTVmYTA1NDdkMTE1MTVjYzk3YzcwN2M5ZDcuLjYw
ZmU5NDRkMDhkZjVmM2ZkNTAyNjExZjVkMjMxYWQ2ODMzYWJjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklUQ29kZS5oCkBAIC03MCw5ICs3MCwxMiBAQCBjbGFzcyBKSVRDb2RlIDog
cHVibGljIEpTQzo6SklUQ29kZSB7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdChjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImKSBvdmVycmlkZTsKIAogICAgIFBDVG9Db2RlT3JpZ2luTWFwKiBwY1RvQ29k
ZU9yaWdpbk1hcCgpIG92ZXJyaWRlIHsgcmV0dXJuIGNvbW1vbi5tX3BjVG9Db2RlT3JpZ2luTWFw
LmdldCgpOyB9CisKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZVJl
Z2lzdGVycygpIGNvbnN0IHsgcmV0dXJuICZtX2NhbGxlZVNhdmVSZWdpc3RlcnM7IH0KICAgICAK
ICAgICBERkc6OkNvbW1vbkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxPU1JFeGl0PiBtX29zckV4
aXQ7CisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAg
IFNlZ21lbnRlZFZlY3RvcjxPU1JFeGl0RGVzY3JpcHRvciwgOD4gb3NyRXhpdERlc2NyaXB0b3Jz
OwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TGF6eVNsb3dQYXRoPj4gbGF6eVNsb3dQYXRo
czsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAppbmRleCA4ZGY0YjBmNjVmNTdmOWExNmZmZDAxNzRhODM1YmZkZmNlMmNjNTZkLi42MDllNmRk
ZjUxODE4YzVjMGE1MWRmNjk1ODA3MmRlNGVjODhkYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDM5NSw3ICsxMDM5NSw3IEBAIElH
Tk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVE
YXRhLmFyZ3MuYXBwZW5kKFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVkKCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFzc2VkQXJncyA9IG51bVBhc3Nl
ZEFyZ3M7CiAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bVBhcmFtZXRlcnMgPSBq
aXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsKLSAgICAgICAgICAgICAgICAgICAgc2h1
ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKGppdC5jb2RlQmxvY2soKSk7CisgICAg
ICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGF0
ZS0+aml0Q29kZS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2Rl
LT5jb21tb24uYWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAgICAg
ICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6RGlyZWN0VGFp
bENhbGwsIEludmFsaWRHUFJSZWcpOwpAQCAtMTA1NTUsNyArMTA1NTUsNyBAQCBJR05PUkVfQ0xB
TkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFzc2VkQXJn
cyA9IG51bUFyZ3M7CiAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFyYW1ldGVycyA9
IGppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOwogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhqaXQuY29k
ZUJsb2NrKCkpOworICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJl
Z2lzdGVycyhzdGF0ZS0+aml0Q29kZS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAgICAg
ICAgICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRk
Q2FsbExpbmtJbmZvKGNvZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+
c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6VGFpbENhbGwsIEdQUkluZm86OnJlZ1QwKTsKQEAgLTEw
OTA0LDcgKzEwOTA0LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lOwogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxD
YWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gY2FsbExpbmtJbmZvLT5lbWl0
VGFpbENhbGxGYXN0UGF0aChqaXQsIEdQUkluZm86OnJlZ1QwLCBzY29wZWRMYW1iZGE8dm9pZCgp
PihbJl17Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZl
cygpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNG
b3Ioc3RhdGUtPmppdENvZGUtPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOwogICAgICAgICAgICAgICAg
ICAgICB9KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTEwOTE2LDcgKzEwOTE2LDcg
QEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIGF1dG8gc2xvd1Bh
dGhTdGFydCA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwp
Ci0gICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKHN0YXRlLT5qaXRD
b2RlLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihzZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsKICAgICAgICAgICAgICAgICAK
QEAgLTExMTg1LDcgKzExMTg1LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lOwogICAgICAgICAgICAgICAgIGlmIChp
c1RhaWxDYWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gY2FsbExpbmtJbmZv
LT5lbWl0VGFpbENhbGxGYXN0UGF0aChqaXQsIEdQUkluZm86OnJlZ1QwLCBzY29wZWRMYW1iZGE8
dm9pZCgpPihbJl17Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlcygpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXNGb3Ioc3RhdGUtPmppdENvZGUtPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOwogICAgICAgICAg
ICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTExMTk3LDcgKzEx
MTk3LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIGF1dG8g
c2xvd1BhdGhTdGFydCA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFp
bENhbGwpCi0gICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7
CisgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKHN0YXRl
LT5qaXRDb2RlLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsKICAgICAgICAgICAg
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVy
LmNwcAppbmRleCA1MzkyMTM0YTNjODBiNWYwNTQ4MjFhMzlkYWU2YmUwZDgyM2ZhNzkzLi5mZTc5
Zjc4ZDM3NTBkNjM0ZGUyMzIzY2FkZGIwNmQ0MTdlODgzYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBAIC0xODEsNyArMTgxLDcg
QEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENv
ZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSAqICgKICAgICAgICAgICAgIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy5zaXplKCkgKyBu
dW1NYXRlcmlhbGl6YXRpb25zICsgbWF4TWF0ZXJpYWxpemF0aW9uTnVtQXJndW1lbnRzKSArCiAg
ICAgICAgIHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkgKwotICAgICAgICBjb2Rl
QmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+c2l6ZSgpICogc2l6ZW9mKHVpbnQ2NF90KSk7
CisgICAgICAgIGNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNp
emUoKSAqIHNpemVvZih1aW50NjRfdCkpOwogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0g
c2NyYXRjaEJ1ZmZlciA/IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZl
ci0+ZGF0YUJ1ZmZlcigpKSA6IG51bGxwdHI7CiAgICAgRW5jb2RlZEpTVmFsdWUqIG1hdGVyaWFs
aXphdGlvblBvaW50ZXJzID0gc2NyYXRjaCArIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy5z
aXplKCk7CiAgICAgRW5jb2RlZEpTVmFsdWUqIG1hdGVyaWFsaXphdGlvbkFyZ3VtZW50cyA9IG1h
dGVyaWFsaXphdGlvblBvaW50ZXJzICsgbnVtTWF0ZXJpYWxpemF0aW9uczsKQEAgLTM5MCw4ICsz
OTAsOCBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4aXRJRCwg
SklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgIAogICAgIC8vIEJlZm9yZSB3ZSBz
dGFydCBtZXNzaW5nIHdpdGggdGhlIGZyYW1lLCB3ZSBuZWVkIHRvIHNldCBhc2lkZSBhbnkgcmVn
aXN0ZXJzIHRoYXQgdGhlCiAgICAgLy8gRlRMIGNvZGUgd2FzIHByZXNlcnZpbmcuCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKTsg
aS0tOykgewotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY29kZUJsb2NrLT5jYWxs
ZWVTYXZlUmVnaXN0ZXJzKCktPmF0KGkpOworICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9j
ay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKTsgaS0tOykgeworICAg
ICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKS0+YXQoaSk7CiAgICAgICAgIGppdC5sb2FkNjQoCiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVn
aXN0ZXIsIGVudHJ5Lm9mZnNldCgpKSwKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKQEAg
LTQwMiw3ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVk
IGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogCiAgICAgLy8gRmlyc3Qg
c2V0IHVwIFNQIHNvIHRoYXQgb3VyIGRhdGEgZG9lc24ndCBnZXQgY2xvYmJlcmVkIGJ5IHNpZ25h
bHMuCiAgICAgdW5zaWduZWQgY29uc2VydmF0aXZlU3RhY2tEZWx0YSA9Ci0gICAgICAgIChleGl0
Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSArIGJhc2VsaW5lQ29kZUJs
b2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkgKiBzaXplb2YoUmVnaXN0
ZXIpICsKKyAgICAgICAgKGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy5udW1iZXJPZkxvY2Fs
cygpICsgQ29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKmJhc2Vs
aW5lQ29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSkpICogc2l6ZW9m
KFJlZ2lzdGVyKSArCiAgICAgICAgIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsOwogICAg
IGNvbnNlcnZhdGl2ZVN0YWNrRGVsdGEgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCiAgICAg
ICAgIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgY29uc2VydmF0aXZlU3RhY2tEZWx0YSk7CkBAIC00
MTIsMTMgKzQxMiwxMyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVk
IGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgIGppdC5jaGVja1N0
YWNrUG9pbnRlckFsaWdubWVudCgpOwogCiAgICAgUmVnaXN0ZXJTZXQgYWxsRlRMQ2FsbGVlU2F2
ZXMgPSBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAgIGNvbnN0IFJl
Z2lzdGVyQXRPZmZzZXRMaXN0KiBiYXNlbGluZUNhbGxlZVNhdmVzID0gYmFzZWxpbmVDb2RlQmxv
Y2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogYmFzZWxpbmVDYWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5qaXRDb2RlKCktPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKIAogICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsg
cmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7CiAgICAgICAgIGlmICghYWxs
RlRMQ2FsbGVlU2F2ZXMuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9Ci0gICAgICAgIHVuc2lnbmVkIHVud2luZEluZGV4ID0gY29kZUJsb2NrLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCktPmluZGV4T2YocmVnKTsKKyAgICAgICAgdW5zaWduZWQgdW53aW5kSW5kZXgg
PSBjb2RlQmxvY2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5pbmRleE9mKHJl
Zyk7CiAgICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQqIGJhc2VsaW5lUmVnaXN0ZXJPZmZz
ZXQgPSBiYXNlbGluZUNhbGxlZVNhdmVzLT5maW5kKHJlZyk7CiAKICAgICAgICAgaWYgKHJlZy5p
c0dQUigpKSB7CkBAIC00NTMsNyArNDUzLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0m
IHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHNpemVfdCBiYXNlbGluZVZpcnR1YWxSZWdpc3RlcnNGb3JD
YWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMoKTsKKyAgICBzaXplX3QgYmFzZWxpbmVWaXJ0dWFsUmVnaXN0ZXJzRm9yQ2FsbGVl
U2F2ZXMgPSBDb2RlQmxvY2s6OmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygqYmFz
ZWxpbmVDb2RlQmxvY2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAg
IGlmIChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFja0NvbnRhaW5zQWN0aXZlQ2hlY2twb2lu
dCgpKSB7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIGV4
aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggOTY0MmRhMWMz
YmRlOTM2YzM2NjFlMjdmMTY4Yzk5MmJlZmQyNTQ4MS4uODkyMWJiYjE3NzkwMzg3NjAwN2ZlNzg0
NDJkZTkxODQ3OWQwOTdiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBzdGQ6Om9wdGlvbmFs
PFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjYWxsZWVTYXZlUmVn
aXN0ZXJzRm9yVQogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogICAgIGlmIChDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpKQotICAgICAgICByZXR1cm4gKmNv
ZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgICAgICByZXR1cm4gKmNvZGVCbG9j
ay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAKICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCmluZGV4IGU2NDU4NTMxZWJjOTA0ZGU1ZGQwNGNlM2FiYTUzYzViZDNjNzBiMGYuLmE4MTFm
M2UwNjkwOGRjOGUzMDk1NmYxZjA4OWE0MjQxMzFjMjNjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTQ1LDExICs0NSwxMSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotRXhlY3V0YWJsZUJhc2UqIEFzc2VtYmx5SGVscGVyczo6ZXhlY3V0
YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQorRXhlY3V0YWJsZUJhc2UqIEFz
c2VtYmx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbikKIHsKICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOwogICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQot
ICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOworICAgICAgICBy
ZXR1cm4gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKICAgICByZXR1cm4gaW5saW5lQ2Fs
bEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CiB9CiAKQEAgLTEz
NzIsNyArMTM3Miw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9yQ29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChjb2RlQmxvY2ssIGNvZGVCbG9jayk7CiAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKGNvZGVCbG9jay0+aml0VHlwZSgpKSk7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpID09ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0Q29kZSgp
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkgPT0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJh
c2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0KiBjYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVy
cyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGYyNzk3MTVlZTg4MTIy
NjdiN2ZmMGEyMjU2OGI0NGJiYTliZjcxYjguLmYyODBhMTE1NTUyMmZlMTUzZmFiN2JjOGY0OWE4
ODcyNDIyY2Y2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaApAQCAtMzE2LDM1ICszMTYsMTQgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGlj
IE1hY3JvQXNzZW1ibGVyIHsKICAgICB2b2lkIGVtaXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0Jik7CiAgICAgdm9pZCBlbWl0UmVzdG9yZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlz
dCYpOwogCi0gICAgdm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJs
b2NrKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0KLSAgICAgICAgY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7Ci0gICAgICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY2FsbGVlU2F2ZXMp
OwotICAgIH0KLQogICAgIHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMpOwogICAgIAogICAgIGVudW0gUmVzdG9yZVRhZ1Jl
Z2lzdGVyTW9kZSB7IFVzZUV4aXN0aW5nVGFnUmVnaXN0ZXJDb250ZW50cywgQ29weUJhc2VsaW5l
Q2FsbGVlU2F2ZWRSZWdpc3RlcnNGcm9tQmFzZUZyYW1lIH07CiAKICAgICB2b2lkIGVtaXRTYXZl
T3JDb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayosIFZpcnR1YWxSZWdp
c3RlciBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIsIFJlc3RvcmVUYWdSZWdpc3Rlck1vZGUsIEdQUlJl
ZyB0ZW1wMSwgR1BSUmVnIHRlbXAyLCBHUFJSZWcgdGVtcDMpOwotICAgIAotICAgIHZvaWQgZW1p
dFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChjb2RlQmxvY2spOwotCi0gICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAg
ICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNhbGxlZVNhdmVzKTsKLSAgICB9CiAKICAg
ICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QqIGNhbGxlZVNhdmVzKTsKIAotICAgIHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlcygpCi0gICAg
ewotICAgICAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvZGVCbG9jaygpKTsKLSAgICB9Ci0K
ICAgICB2b2lkIGVtaXRTYXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKCkKICAgICB7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKQEAgLTM1NywxMSArMzM2LDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxw
ZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgZW1pdE1hdGVyaWFsaXplVGFn
Q2hlY2tSZWdpc3RlcnMoKTsKICNlbmRpZgogICAgIH0KLSAgICAKLSAgICB2b2lkIGVtaXRSZXN0
b3JlQ2FsbGVlU2F2ZXMoKQotICAgIHsKLSAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0Zv
cihjb2RlQmxvY2soKSk7Ci0gICAgfQogCiAgICAgdm9pZCBlbWl0UmVzdG9yZVNhdmVkVGFnUmVn
aXN0ZXJzKCkKICAgICB7CkBAIC0xNTQwLDcgKzE1MTQsNyBAQCBjbGFzcyBBc3NlbWJseUhlbHBl
cnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICByZXR1cm4gY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsKICAgICB9CiAgICAgCi0gICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbik7CisgICAg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGVGb3IoQ29kZUJsb2NrKiwgY29uc3QgQ29kZU9yaWdp
biYpOwogICAgIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29uc3QgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Jhc2VsaW5lSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9C
YXNlbGluZUpJVENvZGUuaAppbmRleCAzMDAzYjA3MzUwMTg4ZTVmNzNmY2M5NjcyMGQ2YTllNzQx
ZjhiY2I1Li42NjFkZWVkY2FmZjVlODc2YjVkOTViY2Y5ODdjMGFlNDU4NmI5NmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Jhc2VsaW5lSklUQ29kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRDb2RlLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5j
bHVkZSAiSklUQ29kZU1hcC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaD4KIAogI2lmIEVOQUJMRShKSVQpCkBAIC0x
MDIsNiArMTAzLDI1IEBAIGNsYXNzIEJhc2VsaW5lSklUQ29kZSA6IHB1YmxpYyBEaXJlY3RKSVRD
b2RlLCBwdWJsaWMgTWF0aElDSG9sZGVyIHsKICAgICBib29sIG1faXNTaGFyZWFibGUgeyB0cnVl
IH07CiB9OwogCitjbGFzcyBCYXNlbGluZUpJVERhdGEgZmluYWwgOiBwdWJsaWMgVHJhaWxpbmdB
cnJheTxCYXNlbGluZUpJVERhdGEsIHZvaWQqPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gVHJhaWxpbmdBcnJheTxCYXNlbGluZUpJVERhdGEsIHZvaWQqPjsKKwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QmFzZWxpbmVKSVREYXRhPiBjcmVhdGUodW5zaWdu
ZWQgcG9vbFNpemUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEJhc2Vs
aW5lSklURGF0YT4geyBuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNp
emUocG9vbFNpemUpKSkgQmFzZWxpbmVKSVREYXRhKHBvb2xTaXplKSB9OworICAgIH0KKworICAg
IGV4cGxpY2l0IEJhc2VsaW5lSklURGF0YSh1bnNpZ25lZCBzaXplKQorICAgICAgICA6IEJhc2Uo
c2l6ZSkKKyAgICB7CisgICAgfQorCisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+
IG1fc3R1YkluZm9zOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFC
TEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZm
bGVEYXRhLmNwcAppbmRleCAzZGQ2ZTBjYjFiZjU3N2I5MzQzNDBiNDExN2E2NTU4YTkxMjk1MWM5
Li44MTgwZDZhYmE1NzQwNDAxYTJmY2FiMmQ1YTFmZGQ1M2M5YTIwNmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcApAQCAtMzQs
MTEgKzM0LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgQ2FsbEZyYW1lU2h1ZmZsZURh
dGE6OnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAg
ICBzZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJz
KCkpOwotfQotCiB2b2lkIENhbGxGcmFtZVNodWZmbGVEYXRhOjpzZXR1cENhbGxlZVNhdmVSZWdp
c3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucykK
IHsKICAgICBSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzIHsgUmVnaXN0ZXJTZXQ6OnZt
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgKaW5kZXggMGJjMTliOTlkNjFlNGJjYmI3MTllYTlmY2Mx
YmM4YzM3ZmJmZWM1Zi4uNmNlYzA0NDZjMzBjMGVkZWY4MDljYWE4N2MwZTlkMTJiOGY4ZWI0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0
YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
aApAQCAtNTMsNyArNTMsNiBAQCBzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgewogICAgIEdQ
UlJlZyBudW1iZXJUYWdSZWdpc3RlciB7IEludmFsaWRHUFJSZWcgfTsKICNlbmRpZgogCi0gICAg
dm9pZCBzZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoQ29kZUJsb2NrKik7CiAgICAgdm9pZCBzZXR1
cENhbGxlZVNhdmVSZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKICAgICBW
YWx1ZVJlY292ZXJ5IGNhbGxlZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
MDMwZjNmMzZmNmVlZmQ4NzkwZGE4OTQ1NzhjOTRhYWEyMGM1OTk3Zi4uYzY0ZGRlZjIzZDRiMmQ2
MjRmYjczNDU5ZjA1NDdhZjU3ODg5NDY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtMjc0LDggKzI3NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgaWYgKG9wY29kZUlEICE9IG9wX2NhdGNoKSB7CiAgICAgICAgICAgICBsb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwogICAgICAgICAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mTWV0YWRhdGFUYWJsZSgp
KSwgcmVnVDEpOwotICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6
Om9mZnNldE9mSklURGF0YSgpKSwgcmVnVDApOwotICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBDb2RlQmxvY2s6OkpJVERhdGE6Om9mZnNldE9mSklUQ29uc3RhbnRQb29sKCkpLCBy
ZWdUMik7CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zm
c2V0T2ZCYXNlbGluZUpJVERhdGEoKSksIHJlZ1QyKTsKIAogICAgICAgICAgICAgYXV0byBtZXRh
ZGF0YU9LID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMSwgc19tZXRhZGF0YUdQUik7CiAgICAgICAg
ICAgICBicmVha3BvaW50KCk7CkBAIC03MDIsOCArNzAxLDEyIEBAIHZvaWQgSklUOjplbWl0TWF0
ZXJpYWxpemVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycygpCiB7CiAgICAgbG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxlKCkpLCBz
X21ldGFkYXRhR1BSKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zm
c2V0T2ZKSVREYXRhKCkpLCByZWdUMCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2Rl
QmxvY2s6OkpJVERhdGE6Om9mZnNldE9mSklUQ29uc3RhbnRQb29sKCkpLCBzX2NvbnN0YW50c0dQ
Uik7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxp
bmVKSVREYXRhKCkpLCBzX2NvbnN0YW50c0dQUik7Cit9CisKK3ZvaWQgSklUOjplbWl0U2F2ZUNh
bGxlZVNhdmVzKCkKK3sKKyAgICBCYXNlOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKCZSZWdpc3Rl
ckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiB9CiAK
IHZvaWQgSklUOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCkKQEAgLTc4Miw3ICs3ODUsNyBAQCB2
b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVm
Zm9ydCBlZmZvcnQpCiAgICAgbW92ZShyZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAg
IGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKLSAgICBlbWl0U2F2ZUNhbGxlZVNhdmVz
Rm9yKCZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSk7CisgICAgZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgIGVtaXRNYXRlcmlhbGl6ZVRh
Z0NoZWNrUmVnaXN0ZXJzKCk7CiAgICAgZW1pdE1hdGVyaWFsaXplTWV0YWRhdGFBbmRDb25zdGFu
dFBvb2xSZWdpc3RlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZmYzODg3NDMz
YzNkNWQxY2NmMzY4YzZmM2VlOWUxYThhODg0NzY5OC4uODdjZTlkYzU5ZTFkMmU2OGNhZjg3NWMx
NzY1Y2FjNDk1MTJiODBkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC04OTMsNiArODkz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0TWF0ZXJpYWxpemVNZXRh
ZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycygpOwogCisgICAgICAgIHZvaWQgZW1pdFNhdmVD
YWxsZWVTYXZlcygpOwogICAgICAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAog
ICAgICAgICBzdGF0aWMgYm9vbCByZXBvcnRDb21waWxlVGltZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuY3BwCmluZGV4IGIyZTNkY2M3MDgyOWE0N2U3OGVkYmViNDIwMzgwYzAw
OGI0YzY4ZjIuLjU2NTU0MmY5YjliM2RjNDJhNDQ0NzYwNjU1MDBhODllMDY5ZmUyMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKIAorI2luY2x1ZGUgIkZUTEpJVENv
ZGUuaCIKKwogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTk1LDYgKzk3LDIyIEBAIHZvaWQgSklUQ29kZTo6c2hyaW5rVG9GaXQoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJikKIHsKIH0KIAorY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIEpJVENv
ZGU6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdAoreworICAgIHN3aXRjaCAoaml0VHlwZSgp
KSB7CisjaWYgRU5BQkxFKEZUTF9KSVQpCisgICAgY2FzZSBKSVRUeXBlOjpGVExKSVQ6CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGVEw6OkpJVENvZGUqPih0aGlzKS0+Y2FsbGVl
U2F2ZVJlZ2lzdGVycygpOworI2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgY2FzZSBK
SVRUeXBlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmRm
Z0NhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiAmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0
ZXJzKCk7CisgICAgfQorfQorCiBKSVRDb2RlV2l0aENvZGVSZWY6OkpJVENvZGVXaXRoQ29kZVJl
ZihKSVRUeXBlIGppdFR5cGUpCiAgICAgOiBKSVRDb2RlKGppdFR5cGUpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29kZS5oCmluZGV4IDhlNGNlMDNmOGVlZWMzNDBiYjY2NmY1Mjc5YTY4NzZk
YzJjNjg4NjAuLjMwODM3OWZlNzgwMGU0ODQ0MTdkZTRkMGIxODhiY2FmZTQ4Y2ZmMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
Q29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAKIApAQCAtMjI4LDYgKzIyOSw4IEBAIGNsYXNzIEpJVENv
ZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogCiAgICAgdmlydHVh
bCBQQ1RvQ29kZU9yaWdpbk1hcCogcGNUb0NvZGVPcmlnaW5NYXAoKSB7IHJldHVybiBudWxscHRy
OyB9CiAKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZVJlZ2lzdGVy
cygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIEpJVFR5cGUgbV9qaXRUeXBlOwogICAgIFNoYXJl
QXR0cmlidXRlIG1fc2hhcmVBdHRyaWJ1dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCmluZGV4IDU4NjQxMmJjNDdlZTZiYjc0MGVmMTUyMDg0ZWYyY2EyMWE2YjE1OWIuLjI2
ZWIyYWZlY2FlZjVhZTRlMzdiYTA5MGZjMmJhNTg2MWEyN2ZhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC01MDUsNyArNTA1LDcgQEAgQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6bWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGNvbnN0IEJ5dGVjb2RlJiBi
eXRlY29kZSwKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bG9hZENvbnN0YW50KEpJVENvbnN0
YW50UG9vbDo6Q29uc3RhbnQgY29uc3RhbnRJbmRleCwgR1BSUmVnIHJlc3VsdCkKIHsKLSAgICBs
b2FkUHRyKEFkZHJlc3Moc19jb25zdGFudHNHUFIsIEZpeGVkVmVjdG9yPHZvaWQqPjo6U3RvcmFn
ZTo6b2Zmc2V0T2ZEYXRhKCkgKyBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGNvbnN0YW50SW5kZXgp
ICogc2l6ZW9mKHZvaWQqKSksIHJlc3VsdCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHNfY29uc3Rh
bnRzR1BSLCBCYXNlbGluZUpJVERhdGE6Om9mZnNldE9mRGF0YSgpICsgc3RhdGljX2Nhc3Q8dWlu
dHB0cl90Pihjb25zdGFudEluZGV4KSAqIHNpemVvZih2b2lkKikpLCByZXN1bHQpOwogfQogCiBB
TFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsb2FkR2xvYmFsT2JqZWN0KEdQUlJlZyByZXN1bHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBiOWFlZmNhZTZmY2U0
MGI2N2JiNDc1ODZjMzdhZjgwY2FhYmYxYjg3Li45MDMwYmI1M2IyYWRkNjFhZTA4YTMwYzg3Yzcx
YTM4ZjFmNjc0Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
QEAgLTEwNjQsOCArMTA2NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgLy8gU28gd2UgcmVwbGVuaXNoIGl0IGhl
cmUuCiAgICAgewogICAgICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKSwgcmVnVDApOwotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9j
azo6b2Zmc2V0T2ZKSVREYXRhKCkpLCByZWdUMCk7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgQ29kZUJsb2NrOjpKSVREYXRhOjpvZmZzZXRPZkpJVENvbnN0YW50UG9vbCgpKSwgc19j
b25zdGFudHNHUFIpOworICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6
b2Zmc2V0T2ZCYXNlbGluZUpJVERhdGEoKSksIHNfY29uc3RhbnRzR1BSKTsKICAgICB9CiAKICAg
ICBjYWxsT3BlcmF0aW9uTm9FeGNlcHRpb25DaGVjayhvcGVyYXRpb25SZXRyaWV2ZUFuZENsZWFy
RXhjZXB0aW9uSWZDYXRjaGFibGUsICZ2bSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAKaW5kZXggOGIzOTEyNmM1YjU0MmEyMzJj
ZGYxYzAwZmFmMmFjMGJkNmJiNTE2YS4uZWQ4MzAzZGU0MWI1NzRhZmNlOTI4OTdjZjBhOWQ1YWRl
ZjQwODExNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0
T2Zmc2V0TGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0
T2Zmc2V0TGlzdC5jcHAKQEAgLTgwLDYgKzgwLDE2IEBAIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0JiBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3Rl
CiAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKIH0KIAorY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKK3sKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZXN1bHQ7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgW10geworICAgICAgICByZXN1bHQuY29uc3RydWN0KFJlZ2lzdGVyU2V0OjpkZmdD
YWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIH0pOworICAgIHJldHVybiByZXN1bHQuZ2V0KCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExp
c3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuaApp
bmRleCBhOTkwMTdjNGFlYmZlMjlhY2RjMjYxYjkyYTYzNDg0MTMyNzY0YzNkLi5kMTE3Y2Y3NWUw
OTg4ODQ4M2U3NjVlNTJhM2VjNzZmMjIyYTcxMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5oCkBAIC02Niw2ICs2Niw3IEBAIGNsYXNz
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHsKICAgICBGaXhlZFZlY3RvcjxSZWdpc3RlckF0T2Zmc2V0
Pjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RlcnMuZW5kKCk7
IH0KIAogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgbGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIGFuZCBPZmZzZXRzIHNhdmVkIGFu
ZCB1c2VkIGJ5IHRoZSBMTEludC4KKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QmIGRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIGFuZCBPZmZzZXRzIHNh
dmVkIGFuZCB1c2VkIGJ5IERGRy4KIAogcHJpdmF0ZToKICAgICBGaXhlZFZlY3RvcjxSZWdpc3Rl
ckF0T2Zmc2V0PiBtX3JlZ2lzdGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDZmNzc0MDVkNDg4OWNjNmNiNzhjZTU4YWUzNDEwMDY1
MjgzNjczYjguLjM1NjYxZDgyMjZmYzE5ZjJiMjNhYjJmM2JiMzAzY2U0NzcxMjQyYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNDc3
LDEwICs0NzcsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChsb29wX29zcikKICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6cmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcoKSAm
JiBjb2RlQmxvY2stPmxvb3BIaW50c0FyZUVsaWdpYmxlRm9yRnV6emluZ0Vhcmx5UmV0dXJuKCkp
KSB7CiAgICAgICAgIHVpbnRwdHJfdCogcHRyID0gdm0uZ2V0TG9vcEhpbnRFeGVjdXRpb25Db3Vu
dGVyKHBjKTsKICAgICAgICAgKnB0ciArPSBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIo
KS5tX2FjdGl2ZVRocmVzaG9sZDsKLSAgICAgICAgaWYgKCpwdHIgPj0gT3B0aW9uczo6ZWFybHlS
ZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpIHsKLSAgICAgICAgICAgIGNvZGVCbG9jay0+
ZW5zdXJlSklURGF0YShDb25jdXJyZW50SlNMb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spKTsgLy8g
V2UncmUgcmV0dXJuaW5nIHRvIHRoZSBPU1IgZW50cnkgY29kZSBoZXJlLCB3aGljaCBleHBlY3Rz
IHRoYXQgbV9qaXREYXRhIGlzIG5vdCBudWxsLgorICAgICAgICBpZiAoKnB0ciA+PSBPcHRpb25z
OjplYXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQoKSkKICAgICAgICAgICAgIExMSU5U
X1JFVFVSTl9UV08oTExJbnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2lu
dCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCBjYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggM2U5MmNhNTBhZDBkODhh
MjhlMjVjMmRlN2Q2NzU4MmVkZGFkZWE0Ni4uM2JlYmQxMzZmMmJhYmZjZDMzOWQ3MjJmZDJjYjIz
MzI5NDZmNWFiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjYxMiw4ICsyNjEyLDcgQEAgaWYgSklUCiAgICAgbWFj
cm8gbG9hZEJhc2VsaW5lSklUQ29uc3RhbnRQb29sKCkKICAgICAgICAgIyBCYXNlbGluZSB1c2Vz
IExMSW50J3MgUEIgcmVnaXN0ZXIgZm9yIGl0cyBKSVQgY29uc3RhbnQgcG9vbC4KICAgICAgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9qaXRE
YXRhW1BCXSwgUEIKLSAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpKSVREYXRhOjptX2ppdENvbnN0
YW50UG9vbCArIFZvaWRQb2ludGVyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVtQQl0sIFBCCisgICAg
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9iYXNlbGluZUpJVERhdGFbUEJdLCBQQgogICAgIGVuZAog
CiAgICAgbWFjcm8gc2V0dXBSZXR1cm5Ub0Jhc2VsaW5lQWZ0ZXJDaGVja3BvaW50RXhpdElmTmVl
ZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCmluZGV4
IGIxYjMxMTczMWFkNGM3ODFkNTc3M2M5MTUzMDMyYzM4OWQ5MjVmMWYuLjdlM2FlN2Q4OTU4MmYy
MWVlMmQ2NzA0Y2ViN2IwZTRkZmFmZmFiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL1ZNSW5zcGVjdG9yLmNwcApAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgVk1JbnNwZWN0b3I6
OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgLS1pdDsKICAgICBkYXRh
TG9nRigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogCi0gICAgc2l6ZV90IG51bWJlck9mQ2Fs
bGVlU2F2ZVNsb3RzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMoKTsKKyAgICBzaXplX3QgbnVtYmVyT2ZDYWxsZWVTYXZlU2xvdHMgPSBDb2RlQmxvY2s6OmNh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygqY29kZUJsb2NrLT5qaXRDb2RlKCktPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgY29uc3QgUmVnaXN0ZXIqIGVuZE9mQ2FsbGVlU2F2
ZXMgPSBpdCAtIG51bWJlck9mQ2FsbGVlU2F2ZVNsb3RzOwogCiAgICAgZW5kID0gaXQgLSBjb2Rl
QmxvY2stPm51bVZhcnMoKTsK
</data>
<flag name="commit-queue"
          id="473409"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447711</attachid>
            <date>2021-12-21 04:25:32 -0800</date>
            <delta_ts>2021-12-25 03:43:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234555-20211221042531.patch</filename>
            <type>text/plain</type>
            <size>53716</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmYyMTU2MzE3ZTdjYzRmNmZjMmEyYTZmMGI5ZTJhYWZhYmY0NDdiLi5lYzkyZDUxYzM4NGQwNWIw
NTRmZTQwMTA2YjFhM2JhZDg5MDRiZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAyMS0xMi0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBtX2NhbGxlZVNhdmVSZWdpc3RlcnMgZnJvbSBDb2Rl
QmxvY2s6OkpJVERhdGEgYW5kIHJlbmFtZSBpdCB0byBCYXNlbGluZUpJVERhdGEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU1NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2Vs
aW5lQ29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmFsaXplSklUSW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpnZXRJQ1N0YXR1c01hcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFN0dWJJ
bmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVy
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFBDKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjplbnN1cmVKSVREYXRhU2xvdyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cmVzZXRKSVREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpjYWxsZWVTYXZlUmVnaXN0ZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvZmZzZXRPZkJhc2VsaW5l
SklURGF0YSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVKSVREYXRhKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkpJVERhdGE6Om9mZnNldE9mSklUQ29uc3RhbnRQ
b29sKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjplbnN1cmVKSVREYXRhKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lSklUQ29uc3RhbnRQb29sKTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6
bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMpOgor
ICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0U2F2ZUNhbGxlZVNhdmVzKToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVP
U1JFbnRyeSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Ok9TUkV4aXQ6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZWVTYXZlU2xvdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRG
Rzo6YWRqdXN0QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAg
ICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0
YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVycyBjb25zdCk6Cisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGZ0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpT
dGFja1Zpc2l0b3I6OkZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzRm9yVW53aW5kaW5nKToKKyAg
ICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpleGVjdXRhYmxlRm9yKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0U2F2ZU9yQ29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0Zvcik6CisgICAgICAgICogaml0
L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRT
YXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQmFzZWxpbmVKSVRDb2RlLmg6CisgICAgICAgICog
aml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcDoKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1
ZmZsZURhdGEuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0ZXJpYWxp
emVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNhdmVDYWxsZWVTYXZlcyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUFuZExpbmtX
aXRob3V0RmluYWxpemluZyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9K
SVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVycyBj
b25zdCk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmxvYWRDb25zdGFudCk6CisgICAgICAgICogaml0L0pJ
VE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0Y2gpOgorICAgICAg
ICAqIGppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
QXRPZmZzZXRMaXN0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKiBqaXQvUmVn
aXN0ZXJBdE9mZnNldExpc3QuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogdG9vbHMvVk1JbnNwZWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpWTUluc3BlY3Rvcjo6ZHVtcFJlZ2lzdGVycyk6CisKIDIw
MjEtMTItMjEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtSSVNDVjY0XSBBZGQgbWlzc2luZyBNYWNyb0Fzc2VtYmxlclJJU0NWNjQgZmxvYXRpbmctcG9p
bnQgcm91bmRpbmcsIGNvbXBhcmlzb24gbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBiNGEyZjA2YWRhM2QzYmYyMWVlMDBjNDQyNTFh
MzNlZjFiOTQyMWI2Li5hNThlYThjZmNkY2NhNDQzODUwMzM1N2I3NTEyY2YxYWYxYjRjMTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNzg0
LDExICs3ODQsOCBAQCB2b2lkIENvZGVCbG9jazo6c2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNv
ZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4gaml0Q29kZSkKIAogICAgIHsKICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgICAgICBhdXRvJiBqaXREYXRhID0gZW5z
dXJlSklURGF0YShsb2NrZXIpOwotCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGppdERhdGEubV9q
aXRDb25zdGFudFBvb2wuaXNFbXB0eSgpKTsKLSAgICAgICAgaml0RGF0YS5tX2ppdENvbnN0YW50
UG9vbCA9IEZpeGVkVmVjdG9yPHZvaWQqPihqaXRDb2RlLT5tX2NvbnN0YW50UG9vbC5zaXplKCkp
OwotICAgICAgICBqaXREYXRhLm1fc3R1YkluZm9zID0gRml4ZWRWZWN0b3I8U3RydWN0dXJlU3R1
YkluZm8+KGppdENvZGUtPm1fdW5saW5rZWRTdHViSW5mb3Muc2l6ZSgpKTsKKyAgICAgICAgbV9i
YXNlbGluZUpJVERhdGEgPSBCYXNlbGluZUpJVERhdGE6OmNyZWF0ZShqaXRDb2RlLT5tX2NvbnN0
YW50UG9vbC5zaXplKCkpOworICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+bV9zdHViSW5mb3Mg
PSBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4oaml0Q29kZS0+bV91bmxpbmtlZFN0dWJJ
bmZvcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIHVubGlua2VkQ2FsbExpbmtJbmZvIDog
aml0Q29kZS0+bV91bmxpbmtlZENhbGxzKSB7CiAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbyA9IGdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgobG9ja2VyLCB1bmxp
bmtlZENhbGxMaW5rSW5mby5ieXRlY29kZUluZGV4KTsKICAgICAgICAgICAgIEFTU0VSVChjYWxs
TGlua0luZm8pOwpAQCAtNzk5LDI0ICs3OTYsMjQgQEAgdm9pZCBDb2RlQmxvY2s6OnNldHVwV2l0
aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJVENvZGU+IGppdENvZGUpCiAgICAg
ICAgICAgICBhdXRvIGVudHJ5ID0gaml0Q29kZS0+bV9jb25zdGFudFBvb2wuYXQoaSk7CiAgICAg
ICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBKSVRDb25z
dGFudFBvb2w6OlR5cGU6Okdsb2JhbE9iamVjdDoKLSAgICAgICAgICAgICAgICBqaXREYXRhLm1f
aml0Q29uc3RhbnRQb29sW2ldID0gbV9nbG9iYWxPYmplY3QuZ2V0KCk7CisgICAgICAgICAgICAg
ICAgKCptX2Jhc2VsaW5lSklURGF0YSlbaV0gPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSklUQ29uc3RhbnRQb29sOjpUeXBl
OjpTdHJ1Y3R1cmVTdHViSW5mbzogewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsKICAgICAgICAgICAgICAg
ICBVbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvJiB1bmxpbmtlZFN0dWJJbmZvID0gaml0Q29kZS0+
bV91bmxpbmtlZFN0dWJJbmZvc1tpbmRleF07Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gaml0RGF0YS5tX3N0dWJJbmZvc1tpbmRleF07CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gbV9iYXNlbGluZUpJVERhdGEtPm1f
c3R1YkluZm9zW2luZGV4XTsKICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0aWFsaXplRnJv
bVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8odGhpcywgdW5saW5rZWRTdHViSW5mbyk7Ci0gICAg
ICAgICAgICAgICAgaml0RGF0YS5tX2ppdENvbnN0YW50UG9vbFtpXSA9ICZzdHViSW5mbzsKKyAg
ICAgICAgICAgICAgICAoKm1fYmFzZWxpbmVKSVREYXRhKVtpXSA9ICZzdHViSW5mbzsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgSklUQ29u
c3RhbnRQb29sOjpUeXBlOjpGdW5jdGlvbkRlY2w6IHsKICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVudHJ5LnBvaW50ZXIoKSk7Ci0gICAg
ICAgICAgICAgICAgaml0RGF0YS5tX2ppdENvbnN0YW50UG9vbFtpXSA9IGZ1bmN0aW9uRGVjbChp
bmRleCk7CisgICAgICAgICAgICAgICAgKCptX2Jhc2VsaW5lSklURGF0YSlbaV0gPSBmdW5jdGlv
bkRlY2woaW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FzZSBKSVRDb25zdGFudFBvb2w6OlR5cGU6OkZ1bmN0aW9uRXhwcjogewogICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50
cnkucG9pbnRlcigpKTsKLSAgICAgICAgICAgICAgICBqaXREYXRhLm1faml0Q29uc3RhbnRQb29s
W2ldID0gZnVuY3Rpb25FeHByKGluZGV4KTsKKyAgICAgICAgICAgICAgICAoKm1fYmFzZWxpbmVK
SVREYXRhKVtpXSA9IGZ1bmN0aW9uRXhwcihpbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC05MDUsNyArOTAyLDcgQEAgQ29kZUJs
b2NrOjp+Q29kZUJsb2NrKCkKICAgICAvLyBkZXN0cnVjdG9ycy4KIAogI2lmIEVOQUJMRShKSVQp
Ci0gICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsKKyAgICBpZiAoYXV0
byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7CiAgICAgICAgIGZvciAoYXV0
byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewogICAgICAgICAgICAgc3R1Yklu
Zm8uYWJvdXRUb0RpZSgpOwogICAgICAgICAgICAgc3R1YkluZm8uZGVyZWYoKTsKQEAgLTEyNDks
NyArMTI0Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBWaXNpdG9yJiB2aXNpdG9yCiAKICNpZiBFTkFCTEUoSklUKQog
ICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBq
aXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0g
bV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgc3R1Yklu
Zm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgICAgICBzdHViSW5mby5wcm9w
YWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKICAgICAgICAgfQpAQCAtMTU4MiwyMCArMTU3OSw5
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKIH0KIAogI2lm
IEVOQUJMRShKSVQpCi1Db2RlQmxvY2s6OkpJVERhdGEmIENvZGVCbG9jazo6ZW5zdXJlSklURGF0
YVNsb3coY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKLXsKLSAgICBBU1NFUlQoIW1faml0RGF0
YSk7Ci0gICAgYXV0byBqaXREYXRhID0gbWFrZVVuaXF1ZTxKSVREYXRhPigpOwotICAgIC8vIGNh
bGxlZVNhdmVSZWdpc3RlcnMoKSBjYW4gYWNjZXNzIG1faml0RGF0YSB3aXRob3V0IHRha2luZyBh
IGxvY2sgZnJvbSBCYXNlbGluZSBKSVQuIFRoaXMgaXMgT0sgc2luY2UgSklURGF0YTo6bV9jYWxs
ZWVTYXZlUmVnaXN0ZXJzIGlzIGZpbGxlZCBpbiBERkcgYW5kIEZUTCBDb2RlQmxvY2tzLgotICAg
IC8vIEJ1dCB3ZSBzaG91bGQgbm90IHNlZSBnYXJiYWdlIHBvaW50ZXIgaW4gdGhhdCBjYXNlLiBX
ZSBlbnN1cmUgSklURGF0YTo6bV9jYWxsZWVTYXZlUmVnaXN0ZXJzIGlzIGluaXRpYWxpemVkIGFz
IG51bGxwdHIgYmVmb3JlIGV4cG9zaW5nIGl0IHRvIEJhc2VsaW5lSklUIGJ5IHN0b3JlLXN0b3Jl
LWZlbmNlLgotICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgbV9qaXREYXRhID0gV1RG
TW92ZShqaXREYXRhKTsKLSAgICByZXR1cm4gKm1faml0RGF0YTsKLX0KLQogdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplSklUSW5saW5lQ2FjaGVzKCkKIHsKLSAgICBpZiAoYXV0byogaml0RGF0YSA9
IG1faml0RGF0YS5nZXQoKSkgeworICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJ
VERhdGEuZ2V0KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1f
c3R1YkluZm9zKSB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXJCYXNlIGxvY2tlcihO
b0xvY2tpbmdOZWNlc3NhcnkpOwogICAgICAgICAgICAgc3R1YkluZm8udmlzaXRXZWFrUmVmZXJl
bmNlcyhsb2NrZXIsIHRoaXMpOwpAQCAtMTY5OSw3ICsxNjg1LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiBy
ZXN1bHQpCiAgICAgfQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzSklUKGpp
dFR5cGUoKSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2ppdERhdGEuZ2V0KCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9z
KQogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8uY29kZU9yaWdpbiwgSUNTdGF0
dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gJnN0dWJJbmZvOwogICAgICAgICB9CkBA
IC0xNzM4LDcgKzE3MjQsNyBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoSUNTdGF0
dXNNYXAmIHJlc3VsdCkKIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmZpbmRTdHViSW5m
byhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOwotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7Cisg
ICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewogICAgICAg
ICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKICAgICAgICAg
ICAgIGlmIChzdHViSW5mby5jb2RlT3JpZ2luID09IGNvZGVPcmlnaW4pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuICZzdHViSW5mbzsKQEAgLTE3ODYsMzIgKzE3NzIsMTIgQEAgQ2FsbExpbmtJbmZv
KiBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnNl
dENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQgcmVnaXN0ZXJTZXQpCi17Ci0gICAgYXV0
byBjYWxsZWVTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJBdE9mZnNldExpc3QocmVnaXN0ZXJTZXQp
OwotCi0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGF1dG8mIGpp
dERhdGEgPSBlbnN1cmVKSVREYXRhKGxvY2tlcik7Ci0gICAgaml0RGF0YS5tX2NhbGxlZVNhdmVS
ZWdpc3RlcnMgPSBXVEZNb3ZlKGNhbGxlZVNhdmVSZWdpc3RlcnMpOwotICAgIFdURjo6c3RvcmVT
dG9yZUZlbmNlKCk7Ci0gICAgaml0RGF0YS5tX2hhc0NhbGxlZVNhdmVSZWdpc3RlcnMgPSB0cnVl
OwotfQotCi12b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlckF0
T2Zmc2V0TGlzdCYmIHJlZ2lzdGVyQXRPZmZzZXRMaXN0KQotewotICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICBhdXRvJiBqaXREYXRhID0gZW5zdXJlSklURGF0YShs
b2NrZXIpOwotICAgIGppdERhdGEubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gV1RGTW92ZShyZWdp
c3RlckF0T2Zmc2V0TGlzdCk7Ci0gICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBqaXRE
YXRhLm1faGFzQ2FsbGVlU2F2ZVJlZ2lzdGVycyA9IHRydWU7Ci19Ci0KLXZvaWQgQ29kZUJsb2Nr
OjpyZXNldEpJVERhdGEoKQordm9pZCBDb2RlQmxvY2s6OnJlc2V0QmFzZWxpbmVKSVREYXRhKCkK
IHsKICAgICBSRUxFQVNFX0FTU0VSVCghSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSk7CiAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIAotICAgIGlmIChhdXRvKiBq
aXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jh
c2VsaW5lSklURGF0YS5nZXQoKSkgewogICAgICAgICAvLyBXZSBjYW4gY2xlYXIgdGhlc2UgYmVj
YXVzZSBubyBvdGhlciB0aHJlYWQgd2lsbCBoYXZlIHJlZmVyZW5jZXMgdG8gYW55IHN0dWIgaW5m
b3MsIGNhbGwKICAgICAgICAgLy8gbGluayBpbmZvcywgb3IgYnkgdmFsIGluZm9zIGlmIHdlIGRv
bid0IGhhdmUgSklUIGNvZGUuIEF0dGVtcHRzIHRvIHF1ZXJ5IHRoZXNlIGRhdGEKICAgICAgICAg
Ly8gc3RydWN0dXJlcyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldElDU3RhdHVzTWFwIGFu
ZCBmcmllbmRzKSB3aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCkBAIC0xODMyLDcgKzE3OTgsNyBA
QCB2b2lkIENvZGVCbG9jazo6cmVzZXRKSVREYXRhKCkKICAgICAgICAgLy8gV2UgY2FuIGNsZWFy
IHRoaXMgYmVjYXVzZSB0aGUgREZHJ3MgcXVlcmllcyB0byB0aGVzZSBkYXRhIHN0cnVjdHVyZXMg
YXJlIGd1YXJkZWQgYnkgd2hldGhlcgogICAgICAgICAvLyB0aGVyZSBpcyBKSVQgY29kZS4KIAot
ICAgICAgICBtX2ppdERhdGEgPSBudWxscHRyOworICAgICAgICBtX2Jhc2VsaW5lSklURGF0YSA9
IG51bGxwdHI7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xODc4LDcgKzE4NDQsNyBAQCB2b2lkIENv
ZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiBsb2NrZXIsCiAgICAgfSk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChhdXRv
KiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgaWYgKGF1dG8qIGppdERhdGEgPSBt
X2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDog
aml0RGF0YS0+bV9zdHViSW5mb3MpCiAgICAgICAgICAgICBzdHViSW5mby52aXNpdEFnZ3JlZ2F0
ZSh2aXNpdG9yKTsKICAgICB9CkBAIC0yNDc4LDE4ICsyNDQ0LDYgQEAgdW5zaWduZWQgQ29kZUJs
b2NrOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIGNvbnN0CiB9CiAKICNpZiAhRU5BQkxF
KENfTE9PUCkKLWNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBDb2RlQmxvY2s6OmNhbGxlZVNh
dmVSZWdpc3RlcnMoKSBjb25zdAotewotI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKGF1dG8qIGpp
dERhdGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsKLSAgICAgICAgaWYgKGppdERhdGEtPm1faGFzQ2Fs
bGVlU2F2ZVJlZ2lzdGVycykKLSAgICAgICAgICAgIHJldHVybiAmaml0RGF0YS0+bV9jYWxsZWVT
YXZlUmVnaXN0ZXJzOwotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAmUmVnaXN0ZXJBdE9mZnNl
dExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci19Ci0KLSAgICAKIHN0
YXRpYyBzaXplX3Qgcm91bmRDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoc2l6ZV90
IGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7CiAKQEAgLTI1MDIsOSArMjQ1Niw5IEBAIHNpemVfdCBD
b2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMo
KQogICAgIHJldHVybiByb3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhudW1i
ZXJPZkxMSW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogfQogCi1zaXplX3QgQ29k
ZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKQorc2l6ZV90IENvZGVC
bG9jazo6Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKGNvbnN0IFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0JiBjYWxsZWVTYXZlUmVnaXN0ZXJzKQogewotICAgIHJldHVybiByb3VuZENhbGxl
ZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhjYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUo
KSk7CisgICAgcmV0dXJuIHJvdW5kQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKGNh
bGxlZVNhdmVSZWdpc3RlcnMuc2l6ZSgpKTsKIH0KICNlbmRpZgogCkBAIC0zNTE1LDcgKzM0Njks
NyBAQCBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6ZmluZFBDKHZvaWQqIHBj
KQogCiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0g
ICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgICAgIGlm
IChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKICAgICAgICAgICAg
IGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewogICAgICAgICAg
ICAgICAgIGlmIChzdHViSW5mby5jb250YWluc1BDKHBjKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0dWJJbmZvLmNvZGVPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKaW5kZXggYTFmNzkyYjViMDA3M2U0MTQxYjVmNGFiMDY2ZGUwY2E0YzFl
YWM2Ny4uNDkxYmI4ZWUwNWIxNTk3M2Q1OWRkMzYzYTg0MDU2NDViNmMyYzFkZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTUsNiArOTUsNyBAQCBj
bGFzcyBNZXRhZGF0YVRhYmxlOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiBjbGFzcyBT
dHJ1Y3R1cmVTdHViSW5mbzsKIGNsYXNzIEJhc2VsaW5lSklUQ29kZTsKK2NsYXNzIEJhc2VsaW5l
SklURGF0YTsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQ29kZUJs
b2NrUmFyZURhdGEpOwogCkBAIC0yNDYsNyArMjQ3LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+IGJ5dGVjb2Rl
SW5kZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4KTsKIAotICAgIC8vIEJlY2F1c2Ug
d2UgbWlnaHQgdGhyb3cgb3V0IGJhc2VsaW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2VsaW5l
IEpJVCBkYXRhIChtX2ppdERhdGEpLAorICAgIC8vIEJlY2F1c2Ugd2UgbWlnaHQgdGhyb3cgb3V0
IGJhc2VsaW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2VsaW5lIEpJVCBkYXRhIChtX2Jhc2Vs
aW5lSklURGF0YSksCiAgICAgLy8geW91IG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCB0aGUgbGlm
ZXRpbWUgb2Ygd2hlbiB5b3UgdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbi4K
ICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIG1heSBoYXZlIHJhdyBwb2ludGVycyBpbnRvIHRoaXMg
ZGF0YSBzdHJ1Y3R1cmUgdGhhdCBnZXRzIHRocm93biBhd2F5LgogICAgIC8vIFNwZWNpZmljYWxs
eSwgeW91IG5lZWQgdG8gZW5zdXJlIHRoYXQgbm8gR0MgY2FuIGJlIGZpbmFsaXplZCAodHlwaWNh
bGx5IHRoYXQgbWVhbnMgbm8KQEAgLTI1NSwyOSArMjU2LDkgQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChJQ1N0YXR1c01hcCYgcmVz
dWx0KTsKICAgICAKICNpZiBFTkFCTEUoSklUKQotICAgIHN0cnVjdCBKSVREYXRhIHsKLSAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwotCi0gICAgICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZVN0
dWJJbmZvPiBtX3N0dWJJbmZvczsKLSAgICAgICAgYm9vbCBtX2hhc0NhbGxlZVNhdmVSZWdpc3Rl
cnMgeyBmYWxzZSB9OwotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCBtX2NhbGxlZVNhdmVS
ZWdpc3RlcnM7Ci0KLSAgICAgICAgRml4ZWRWZWN0b3I8dm9pZCo+IG1faml0Q29uc3RhbnRQb29s
OwotICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSklUQ29uc3RhbnRQb29sKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpJVERhdGEsIG1faml0Q29uc3RhbnRQb29sKTsgfQotICAg
IH07Ci0KICAgICB2b2lkIHNldHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGlu
ZUpJVENvZGU+KTsKIAotICAgIEpJVERhdGEmIGVuc3VyZUpJVERhdGEoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiBsb2NrZXIpCi0gICAgewotICAgICAgICBpZiAoTElLRUxZKG1faml0RGF0YSkp
Ci0gICAgICAgICAgICByZXR1cm4gKm1faml0RGF0YTsKLSAgICAgICAgcmV0dXJuIGVuc3VyZUpJ
VERhdGFTbG93KGxvY2tlcik7Ci0gICAgfQotICAgIEpJVERhdGEmIGVuc3VyZUpJVERhdGFTbG93
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOwotCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkpJVERhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2ppdERh
dGEpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkJhc2VsaW5lSklURGF0YSgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fYmFzZWxpbmVKSVREYXRhKTsgfQog
CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGFkZE9wdGltaXppbmdTdHViSW5mbyhBY2Nlc3NUeXBl
LCBDb2RlT3JpZ2luKTsKIApAQCAtMjkzLDE1ICsyNzQsMTIgQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAKICAgICBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyh2
b2lkKiBwYyk7CiAKLSAgICB2b2lkIHNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQp
OwotICAgIHZvaWQgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlckF0T2Zmc2V0TGlzdCYm
KTsKLQogICAgIC8vIFdlIGNhbGwgdGhpcyB3aGVuIHdlIHdhbnQgdG8gcmVhdHRlbXB0IGNvbXBp
bGluZyBzb21ldGhpbmcgd2l0aCB0aGUgYmFzZWxpbmUgSklULiBJZGVhbGx5CiAgICAgLy8gdGhl
IGJhc2VsaW5lIEpJVCB3b3VsZCBub3QgYWRkIGRhdGEgdG8gQ29kZUJsb2NrLCBidXQgaW5zdGVh
ZCBpdCB3b3VsZCBwdXQgaXRzIGRhdGEgaW50bwogICAgIC8vIGEgbmV3bHkgY3JlYXRlZCBKSVRD
b2RlLCB3aGljaCBjb3VsZCBiZSB0aHJvd24gYXdheSBpZiB3ZSBiYWlsIG9uIEpJVCBjb21waWxh
dGlvbi4gVGhlbiB3ZQogICAgIC8vIHdvdWxkIGJlIGFibGUgdG8gZ2V0IHJpZCBvZiB0aGlzIHNp
bGx5IGZ1bmN0aW9uLgogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MDYxCi0gICAgdm9pZCByZXNldEpJVERhdGEoKTsKKyAgICB2b2lkIHJl
c2V0QmFzZWxpbmVKSVREYXRhKCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIHZvaWQg
dW5saW5rSW5jb21pbmdDYWxscygpOwpAQCAtNTU0LDEwICs1MzIsMTAgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBTaW1wbGVKdW1wVGFi
bGUmIGJhc2VsaW5lU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KTsKICAgICBTdHJpbmdK
dW1wVGFibGUmIGJhc2VsaW5lU3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KTsK
LSAgICB2b2lkKiBiYXNlbGluZUpJVENvbnN0YW50UG9vbCgpCisgICAgQmFzZWxpbmVKSVREYXRh
KiBiYXNlbGluZUpJVERhdGEoKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9qaXRE
YXRhICYmIGppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7Ci0gICAgICAgIHJldHVy
biBtX2ppdERhdGEtPm1faml0Q29uc3RhbnRQb29sLnN0b3JhZ2UoKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgcmV0
dXJuIG1fYmFzZWxpbmVKSVREYXRhLmdldCgpOwogICAgIH0KICNlbmRpZgogICAgIHNpemVfdCBu
dW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRDb2RlLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyB9CkBAIC02MzMsMTUg
KzYxMSwxMyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGNv
dW50UmVvcHRpbWl6YXRpb24oKTsKIAogI2lmICFFTkFCTEUoQ19MT09QKQotICAgIGNvbnN0IFJl
Z2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3Q7Ci0KICAgICBz
dGF0aWMgdW5zaWduZWQgbnVtYmVyT2ZMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
IHsgcmV0dXJuIFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
Lm51bWJlck9mU2V0UmVnaXN0ZXJzKCk7IH0KICAgICBzdGF0aWMgc2l6ZV90IGxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBzaXplX3QgY2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgc3RhdGljIHNpemVfdCBjYWxsZWVT
YXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmKTsK
ICNlbHNlCiAgICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mTExJbnRCYXNlbGluZUNhbGxlZVNh
dmVSZWdpc3RlcnMoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIHNpemVfdCBsbGludEJhc2Vs
aW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkgeyByZXR1cm4gMTsgfTsKLSAg
ICBzaXplX3QgY2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkgeyByZXR1cm4gMDsg
fQorICAgIHN0YXRpYyBzaXplX3QgY2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKGNv
bnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JikgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoSklUKQpAQCAtOTYwLDcgKzkzNiw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5BQkxFKEpJVCkK
IHB1YmxpYzoKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SklURGF0YT4gbV9qaXREYXRhOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxCYXNlbGluZUpJVERhdGE+IG1fYmFzZWxpbmVKSVREYXRhOwogcHJpdmF0
ZToKICNlbmRpZgogI2lmIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlcGF0Y2guY3BwCmluZGV4IDIzNDFjMDNiYjFmZDk4NmE1OTI3NGZiMjk0M2FhYTU1
YzAyYjRiMGEuLmFiNmM5MjQwNjViZWE5OTg3NGU2YzdkZDQ3MmRiYjE5MWU4MDhjZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTE3NTgsOCArMTc1
OCw4IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAKICAgICBpZiAoIWZyYW1lU2h1ZmZsZXIg
JiYgY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkgewogICAgICAgICAvLyBXZSBzdHJvbmdseSBh
c3N1bWUgdGhhdCBjYWxsZWVHUFIgaXMgbm90IGEgY2FsbGVlIHNhdmUgcmVnaXN0ZXIgaW4gdGhl
IHNsb3cgcGF0aC4KLSAgICAgICAgQVNTRVJUKCFjYWxsZXJDb2RlQmxvY2stPmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKS0+ZmluZChjYWxsZWVHUFIpKTsKLSAgICAgICAgc3R1YkppdC5lbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIEFTU0VSVCghY2FsbGVyQ29kZUJsb2NrLT5qaXRDb2Rl
KCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+ZmluZChjYWxsZWVHUFIpKTsKKyAgICAgICAgc3R1
YkppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNhbGxlckNvZGVCbG9jay0+aml0Q29kZSgp
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgIH0KIAogICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3Qgc2xvd1BhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKaW5kZXggNDk5N2JkNGJiOTBlNTkzNzIyOTBjMGVhYjI4NjhiNmMxODEyOWE3YS4uODk0N2Ni
ZTlhM2M1MjE3NmEyZDQ1MzQ3ODgyOTYyZTk1YzFlMzhmOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMzAyLDYgKzMwMiwxNiBAQCBjbGFzcyBKSVRD
b21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogCiAgICAgVk0mIHZtKCkgeyByZXR1cm4g
bV9ncmFwaC5tX3ZtOyB9CiAKKyAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKQorICAg
IHsKKyAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcigmUmVnaXN0ZXJBdE9mZnNldExp
c3Q6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgfQorCisgICAgdm9pZCBlbWl0U2F2
ZUNhbGxlZVNhdmVzKCkKKyAgICB7CisgICAgICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoJlJl
Z2lzdGVyQXRPZmZzZXRMaXN0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIH0KKwog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgT1NSRXhpdEp1bXBQbGFjZWhvbGRlcjsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKaW5kZXggZTc2MzcxYzA1
MmNkMTIzODA4MTlhN2E0YTU2OWJiZmZmOGQwZjdkYy4uMTEzMmNmMGQ5ZjY1YjEzOTdmZWI5ZWI5
NTcxNDFlYjRkMTE1ODVmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eS5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoVk0mIHZtLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjbwogCiAgICAg
Ly8gNikgQ29weSBvdXIgY2FsbGVlIHNhdmVzIHRvIGJ1ZmZlci4KICNpZiBOVU1CRVJfT0ZfQ0FM
TEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKLSAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCog
cmVnaXN0ZXJTYXZlTG9jYXRpb25zID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucyA9
IGNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgUmVnaXN0
ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2
ZVJlZ2lzdGVyT2Zmc2V0cygpOwogICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0g
UmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCAyOWI1ZTE1NzIwOWY3Mjg0MDNhZTMx
ODQyYzJlYjRlNzI3NzYzN2E5Li44OWFlNzNmMjNkYTU3YzczZWUxMDU2MTRiYzY3NDdlZDAxOTI1
NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTczOCw4
ICs3MzgsOCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBW
TSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgIENDYWxsSGVscGVyczo6
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwogCiAgICAgLy8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRo
ZSBvbmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4KLSAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVT
YXZlcygpOwotICAgIGppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVC
bG9jaygpKTsKKyAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihqaXQuY29kZUJsb2Nr
KCktPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBqaXQuZW1pdFNhdmVD
YWxsZWVTYXZlc0ZvcihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+aml0Q29kZSgpLT5jYWxsZWVT
YXZlUmVnaXN0ZXJzKCkpOwogCiAgICAgLy8gVGhlIHRhZyByZWdpc3RlcnMgYXJlIG5lZWRlZCB0
byBtYXRlcmlhbGl6ZSByZWNvdmVyaWVzIGJlbG93LgogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVU
YWdDaGVja1JlZ2lzdGVycygpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgT1NSRXhpdDo6Y29t
cGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwg
Y29uc3QKICAgICAgICAgaWYgKG9wZXJhbmQuaXNUbXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSAmJiBvcGVyYW5kLnRvTG9jYWwoKSA8
IHN0YXRpY19jYXN0PGludD4oaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmNhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycygpKSkKKyAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpICYm
IG9wZXJhbmQudG9Mb2NhbCgpIDwgc3RhdGljX2Nhc3Q8aW50PihDb2RlQmxvY2s6OmNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygqaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmppdENv
ZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXgg
ZTcyMmY5ZWJkYWNjODkzNjkwNjU2ZDViNjNlOWY2MjQ0NDYxNWY0My4uMTgyMjIzOTZjZjQ1ZTdh
ZTdjM2IxMDNjNGVmYTk2ZmFhNzQxOGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMjMwLDcgKzIzMCw3
IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0
dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvCiAKIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxs
ZWVTYXZlU2xvdChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgQ29kZUJsb2NrKiBi
YXNlbGluZUNvZGVCbG9jaywgR1BSUmVnIGNhbGxlZVNhdmUpCiB7Ci0gICAgY29uc3QgUmVnaXN0
ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gYmFzZWxpbmVDb2RlQmxvY2stPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2
ZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNhdmVzLT5zaXplKCk7IGkrKykg
ewogICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwog
ICAgICAgICBpZiAoZW50cnkucmVnKCkgIT0gY2FsbGVlU2F2ZSkKQEAgLTMxNCw3ICszMTQsNyBA
QCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9T
UkV4aXRCYXNlJiBleGl0KQogICAgICAgICB9IGVsc2UgaWYgKHRydWVDYWxsZXIpIHsKICAgICAg
ICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBqaXQuYmFzZWxp
bmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+bWV0
YWRhdGFUYWJsZSgpKSwgY2FsbGVlU2F2ZVNsb3QoaW5saW5lQ2FsbEZyYW1lLCBiYXNlbGluZUNv
ZGVCbG9jaywgSklUOjpzX21ldGFkYXRhR1BSKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmVQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5i
YXNlbGluZUpJVENvbnN0YW50UG9vbCgpKSwgY2FsbGVlU2F2ZVNsb3QoaW5saW5lQ2FsbEZyYW1l
LCBiYXNlbGluZUNvZGVCbG9jaywgSklUOjpzX2NvbnN0YW50c0dQUikpOworICAgICAgICAgICAg
aml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiYXNlbGluZUNvZGVCbG9j
a0ZvckNhbGxlci0+YmFzZWxpbmVKSVREYXRhKCkpLCBjYWxsZWVTYXZlU2xvdChpbmxpbmVDYWxs
RnJhbWUsIGJhc2VsaW5lQ29kZUJsb2NrLCBKSVQ6OnNfY29uc3RhbnRzR1BSKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCkBAIC00MDcs
NyArNDA3LDcgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgIGp1bXBUYXJnZXQgPSBk
ZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGNvZGVCbG9ja0ZvckV4aXQtPm1ldGFkYXRhVGFibGUoKSksIEpJVDo6c19tZXRhZGF0YUdQ
Uik7Ci0gICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxv
Y2tGb3JFeGl0LT5iYXNlbGluZUpJVENvbnN0YW50UG9vbCgpKSwgSklUOjpzX2NvbnN0YW50c0dQ
Uik7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxv
Y2tGb3JFeGl0LT5iYXNlbGluZUpJVERhdGEoKSksIEpJVDo6c19jb25zdGFudHNHUFIpOwogCiAg
ICAgICAgIEJ5dGVjb2RlSW5kZXggZXhpdEluZGV4ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4g
ZGVzdGluYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBjMmJi
ZDVlOWMzZTgzNWRhOTFlOTYxNWVlMWY4M2Y4MzZkZDA2ZGRkLi5hNDkzYmUzNGFmNTEzMDhkMmJk
ZjE5MzQwZDk4MjljZWMzNDYzMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAKQEAgLTE5OCw4ICsxOTgsNiBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGls
ZUluVGhyZWFkSW1wbCgpCiAgICAgICAgIHBhcnNlKGRmZyk7CiAgICAgfQogCi0gICAgbV9jb2Rl
QmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVS
ZWdpc3RlcnMoKSk7Ci0KICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKIAogI2RlZmluZSBSVU5f
UEhBU0UocGhhc2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAppbmRleCAyZDgwNTZmNjNjM2EyMjczZGNiMzhiOTNjMzMwNTQwNWE5NGY5NGI1Li43ZmI1
NjUyMzMyZjljNjBmNjIyMjg2ZmVhYTllNTZiYTYzMjdmNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTc0MSw3
ICs3NDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRl
ZEFyZ3M7ICsraSkKICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmdzW2ldID0gVmFsdWVS
ZWNvdmVyeTo6Y29uc3RhbnQoanNVbmRlZmluZWQoKSk7CiAKLSAgICAgICAgICAgIHNodWZmbGVE
YXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2ppdC5jb2RlQmxvY2soKSk7CisgICAgICAg
ICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoJlJlZ2lzdGVyQXRPZmZz
ZXRMaXN0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBh
c3NlZEFyZ3MpLCBtX2ppdC5jYWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMTM1YzEyNjNhYjRh
NmFhNTU0ZDA2YmRkMGIzNTg0M2MyY2RlOTViMC4uMDc4YmJlMzllYWJiNWUzZWQyYzhjYjhjMTgw
MmMwNThmYjM2Y2FmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC04NDIsNyArODQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51
bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAg
c2h1ZmZsZURhdGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVk
KCkpOwogCi0gICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMo
bV9qaXQuY29kZUJsb2NrKCkpOworICAgICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVT
YXZlUmVnaXN0ZXJzKCZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgSklUQ29tcGlsZXI6OmNhbGxl
ZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xh
eW91dFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAKaW5kZXggOTY0OWJmMmFiMzdjOWM1ZGZmYmM5ZDQ2NjU0MDgxNmZlMGZiYTU2Yi4u
OTFjYzhmMzRlNjRlZGM3NDg2OWM2ZWVkZTQxMTgyMDg4MmI2NTFkYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCkBAIC0xMTksNyAr
MTE5LDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWxsb2NhdGlvbih1c2VkT3Bl
cmFuZHMuc2l6ZSgpKTsKLSAgICAgICAgbV9ncmFwaC5tX25leHRNYWNoaW5lTG9jYWwgPSBjb2Rl
QmxvY2soKS0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgICAgIG1f
Z3JhcGgubV9uZXh0TWFjaGluZUxvY2FsID0gQ29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMoUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmRmZ0NhbGxlZVNhdmVSZWdpc3Rl
cnMoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1c2VkT3BlcmFuZHMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmICghdXNlZE9wZXJhbmRzLmdldEZvck9wZXJhbmRJ
bmRleChpKSkgewogICAgICAgICAgICAgICAgIGFsbG9jYXRpb25baV0gPSBVSU5UX01BWDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDliOThkNTQ3NjMxODM4
NmFmYjJmZWNmOGVlMWQyNjAyYWFmYWRlZTcuLjNiNGNhMWQxNTc1ZDUwYmJmZTFjNGI3YWI4MmYx
OWVhYzkwNjJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
cGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApA
QCAtNzcsNyArNzcsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJl
c3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHJlZ2lzdGVy
T2Zmc2V0cyA9IHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpOwog
ICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKICAgICAgICAgZGF0YUxvZyh0aWVyTmFt
ZSwgIlVud2luZCBpbmZvIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJ
VFR5cGU6OkZUTEpJVCksICI6ICIsIHJlZ2lzdGVyT2Zmc2V0cywgIlxuIik7Ci0gICAgY29kZUJs
b2NrLT5zZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFdURk1vdmUocmVnaXN0ZXJPZmZzZXRzKSk7Cisg
ICAgc3RhdGUuaml0Q29kZS0+bV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJBdE9mZnNl
dExpc3QoV1RGTW92ZShyZWdpc3Rlck9mZnNldHMpKTsKICAgICBBU1NFUlQoIShzdGF0ZS5wcm9j
LT5mcmFtZVNpemUoKSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKICAgICBzdGF0ZS5qaXRD
b2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50ID0gc3RhdGUucHJvYy0+ZnJhbWVTaXplKCkg
LyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklU
Q29kZS5oCmluZGV4IDlmNTAyM2RhMWRiNDI0NTVmYTA1NDdkMTE1MTVjYzk3YzcwN2M5ZDcuLjYw
ZmU5NDRkMDhkZjVmM2ZkNTAyNjExZjVkMjMxYWQ2ODMzYWJjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklUQ29kZS5oCkBAIC03MCw5ICs3MCwxMiBAQCBjbGFzcyBKSVRDb2RlIDog
cHVibGljIEpTQzo6SklUQ29kZSB7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdChjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImKSBvdmVycmlkZTsKIAogICAgIFBDVG9Db2RlT3JpZ2luTWFwKiBwY1RvQ29k
ZU9yaWdpbk1hcCgpIG92ZXJyaWRlIHsgcmV0dXJuIGNvbW1vbi5tX3BjVG9Db2RlT3JpZ2luTWFw
LmdldCgpOyB9CisKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZVJl
Z2lzdGVycygpIGNvbnN0IHsgcmV0dXJuICZtX2NhbGxlZVNhdmVSZWdpc3RlcnM7IH0KICAgICAK
ICAgICBERkc6OkNvbW1vbkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxPU1JFeGl0PiBtX29zckV4
aXQ7CisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAg
IFNlZ21lbnRlZFZlY3RvcjxPU1JFeGl0RGVzY3JpcHRvciwgOD4gb3NyRXhpdERlc2NyaXB0b3Jz
OwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TGF6eVNsb3dQYXRoPj4gbGF6eVNsb3dQYXRo
czsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAppbmRleCA4ZGY0YjBmNjVmNTdmOWExNmZmZDAxNzRhODM1YmZkZmNlMmNjNTZkLi42MDllNmRk
ZjUxODE4YzVjMGE1MWRmNjk1ODA3MmRlNGVjODhkYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDM5NSw3ICsxMDM5NSw3IEBAIElH
Tk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVE
YXRhLmFyZ3MuYXBwZW5kKFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVkKCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFzc2VkQXJncyA9IG51bVBhc3Nl
ZEFyZ3M7CiAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bVBhcmFtZXRlcnMgPSBq
aXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsKLSAgICAgICAgICAgICAgICAgICAgc2h1
ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKGppdC5jb2RlQmxvY2soKSk7CisgICAg
ICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGF0
ZS0+aml0Q29kZS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2Rl
LT5jb21tb24uYWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAgICAg
ICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6RGlyZWN0VGFp
bENhbGwsIEludmFsaWRHUFJSZWcpOwpAQCAtMTA1NTUsNyArMTA1NTUsNyBAQCBJR05PUkVfQ0xB
TkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFzc2VkQXJn
cyA9IG51bUFyZ3M7CiAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFyYW1ldGVycyA9
IGppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOwogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhqaXQuY29k
ZUJsb2NrKCkpOworICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJl
Z2lzdGVycyhzdGF0ZS0+aml0Q29kZS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAgICAg
ICAgICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRk
Q2FsbExpbmtJbmZvKGNvZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+
c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6VGFpbENhbGwsIEdQUkluZm86OnJlZ1QwKTsKQEAgLTEw
OTA0LDcgKzEwOTA0LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lOwogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxD
YWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gY2FsbExpbmtJbmZvLT5lbWl0
VGFpbENhbGxGYXN0UGF0aChqaXQsIEdQUkluZm86OnJlZ1QwLCBzY29wZWRMYW1iZGE8dm9pZCgp
PihbJl17Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZl
cygpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNG
b3Ioc3RhdGUtPmppdENvZGUtPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOwogICAgICAgICAgICAgICAg
ICAgICB9KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTEwOTE2LDcgKzEwOTE2LDcg
QEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIGF1dG8gc2xvd1Bh
dGhTdGFydCA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwp
Ci0gICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKHN0YXRlLT5qaXRD
b2RlLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihzZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsKICAgICAgICAgICAgICAgICAK
QEAgLTExMTg1LDcgKzExMTg1LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lOwogICAgICAgICAgICAgICAgIGlmIChp
c1RhaWxDYWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gY2FsbExpbmtJbmZv
LT5lbWl0VGFpbENhbGxGYXN0UGF0aChqaXQsIEdQUkluZm86OnJlZ1QwLCBzY29wZWRMYW1iZGE8
dm9pZCgpPihbJl17Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlcygpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXNGb3Ioc3RhdGUtPmppdENvZGUtPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOwogICAgICAgICAg
ICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTExMTk3LDcgKzEx
MTk3LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIGF1dG8g
c2xvd1BhdGhTdGFydCA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFp
bENhbGwpCi0gICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7
CisgICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKHN0YXRl
LT5qaXRDb2RlLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsKICAgICAgICAgICAg
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVy
LmNwcAppbmRleCA1MzkyMTM0YTNjODBiNWYwNTQ4MjFhMzlkYWU2YmUwZDgyM2ZhNzkzLi5mZTc5
Zjc4ZDM3NTBkNjM0ZGUyMzIzY2FkZGIwNmQ0MTdlODgzYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBAIC0xODEsNyArMTgxLDcg
QEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENv
ZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSAqICgKICAgICAgICAgICAgIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy5zaXplKCkgKyBu
dW1NYXRlcmlhbGl6YXRpb25zICsgbWF4TWF0ZXJpYWxpemF0aW9uTnVtQXJndW1lbnRzKSArCiAg
ICAgICAgIHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkgKwotICAgICAgICBjb2Rl
QmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+c2l6ZSgpICogc2l6ZW9mKHVpbnQ2NF90KSk7
CisgICAgICAgIGNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNp
emUoKSAqIHNpemVvZih1aW50NjRfdCkpOwogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0g
c2NyYXRjaEJ1ZmZlciA/IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZl
ci0+ZGF0YUJ1ZmZlcigpKSA6IG51bGxwdHI7CiAgICAgRW5jb2RlZEpTVmFsdWUqIG1hdGVyaWFs
aXphdGlvblBvaW50ZXJzID0gc2NyYXRjaCArIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy5z
aXplKCk7CiAgICAgRW5jb2RlZEpTVmFsdWUqIG1hdGVyaWFsaXphdGlvbkFyZ3VtZW50cyA9IG1h
dGVyaWFsaXphdGlvblBvaW50ZXJzICsgbnVtTWF0ZXJpYWxpemF0aW9uczsKQEAgLTM5MCw4ICsz
OTAsOCBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4aXRJRCwg
SklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgIAogICAgIC8vIEJlZm9yZSB3ZSBz
dGFydCBtZXNzaW5nIHdpdGggdGhlIGZyYW1lLCB3ZSBuZWVkIHRvIHNldCBhc2lkZSBhbnkgcmVn
aXN0ZXJzIHRoYXQgdGhlCiAgICAgLy8gRlRMIGNvZGUgd2FzIHByZXNlcnZpbmcuCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKTsg
aS0tOykgewotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY29kZUJsb2NrLT5jYWxs
ZWVTYXZlUmVnaXN0ZXJzKCktPmF0KGkpOworICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9j
ay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKTsgaS0tOykgeworICAg
ICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKS0+YXQoaSk7CiAgICAgICAgIGppdC5sb2FkNjQoCiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVn
aXN0ZXIsIGVudHJ5Lm9mZnNldCgpKSwKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKQEAg
LTQwMiw3ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVk
IGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogCiAgICAgLy8gRmlyc3Qg
c2V0IHVwIFNQIHNvIHRoYXQgb3VyIGRhdGEgZG9lc24ndCBnZXQgY2xvYmJlcmVkIGJ5IHNpZ25h
bHMuCiAgICAgdW5zaWduZWQgY29uc2VydmF0aXZlU3RhY2tEZWx0YSA9Ci0gICAgICAgIChleGl0
Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSArIGJhc2VsaW5lQ29kZUJs
b2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkgKiBzaXplb2YoUmVnaXN0
ZXIpICsKKyAgICAgICAgKGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy5udW1iZXJPZkxvY2Fs
cygpICsgQ29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKmJhc2Vs
aW5lQ29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSkpICogc2l6ZW9m
KFJlZ2lzdGVyKSArCiAgICAgICAgIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsOwogICAg
IGNvbnNlcnZhdGl2ZVN0YWNrRGVsdGEgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCiAgICAg
ICAgIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgY29uc2VydmF0aXZlU3RhY2tEZWx0YSk7CkBAIC00
MTIsMTMgKzQxMiwxMyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVk
IGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgIGppdC5jaGVja1N0
YWNrUG9pbnRlckFsaWdubWVudCgpOwogCiAgICAgUmVnaXN0ZXJTZXQgYWxsRlRMQ2FsbGVlU2F2
ZXMgPSBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAgIGNvbnN0IFJl
Z2lzdGVyQXRPZmZzZXRMaXN0KiBiYXNlbGluZUNhbGxlZVNhdmVzID0gYmFzZWxpbmVDb2RlQmxv
Y2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogYmFzZWxpbmVDYWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5qaXRDb2RlKCktPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKIAogICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsg
cmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7CiAgICAgICAgIGlmICghYWxs
RlRMQ2FsbGVlU2F2ZXMuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9Ci0gICAgICAgIHVuc2lnbmVkIHVud2luZEluZGV4ID0gY29kZUJsb2NrLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCktPmluZGV4T2YocmVnKTsKKyAgICAgICAgdW5zaWduZWQgdW53aW5kSW5kZXgg
PSBjb2RlQmxvY2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5pbmRleE9mKHJl
Zyk7CiAgICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQqIGJhc2VsaW5lUmVnaXN0ZXJPZmZz
ZXQgPSBiYXNlbGluZUNhbGxlZVNhdmVzLT5maW5kKHJlZyk7CiAKICAgICAgICAgaWYgKHJlZy5p
c0dQUigpKSB7CkBAIC00NTMsNyArNDUzLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0m
IHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHNpemVfdCBiYXNlbGluZVZpcnR1YWxSZWdpc3RlcnNGb3JD
YWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMoKTsKKyAgICBzaXplX3QgYmFzZWxpbmVWaXJ0dWFsUmVnaXN0ZXJzRm9yQ2FsbGVl
U2F2ZXMgPSBDb2RlQmxvY2s6OmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygqYmFz
ZWxpbmVDb2RlQmxvY2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAg
IGlmIChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFja0NvbnRhaW5zQWN0aXZlQ2hlY2twb2lu
dCgpKSB7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIGV4
aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggOTY0MmRhMWMz
YmRlOTM2YzM2NjFlMjdmMTY4Yzk5MmJlZmQyNTQ4MS4uODkyMWJiYjE3NzkwMzg3NjAwN2ZlNzg0
NDJkZTkxODQ3OWQwOTdiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBzdGQ6Om9wdGlvbmFs
PFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjYWxsZWVTYXZlUmVn
aXN0ZXJzRm9yVQogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogICAgIGlmIChDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpKQotICAgICAgICByZXR1cm4gKmNv
ZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgICAgICByZXR1cm4gKmNvZGVCbG9j
ay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAKICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCmluZGV4IGU2NDU4NTMxZWJjOTA0ZGU1ZGQwNGNlM2FiYTUzYzViZDNjNzBiMGYuLmE4MTFm
M2UwNjkwOGRjOGUzMDk1NmYxZjA4OWE0MjQxMzFjMjNjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTQ1LDExICs0NSwxMSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotRXhlY3V0YWJsZUJhc2UqIEFzc2VtYmx5SGVscGVyczo6ZXhlY3V0
YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQorRXhlY3V0YWJsZUJhc2UqIEFz
c2VtYmx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbikKIHsKICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOwogICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQot
ICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOworICAgICAgICBy
ZXR1cm4gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKICAgICByZXR1cm4gaW5saW5lQ2Fs
bEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CiB9CiAKQEAgLTEz
NzIsNyArMTM3Miw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9yQ29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChjb2RlQmxvY2ssIGNvZGVCbG9jayk7CiAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKGNvZGVCbG9jay0+aml0VHlwZSgpKSk7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpID09ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0Q29kZSgp
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkgPT0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJh
c2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0KiBjYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVy
cyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGYyNzk3MTVlZTg4MTIy
NjdiN2ZmMGEyMjU2OGI0NGJiYTliZjcxYjguLmYyODBhMTE1NTUyMmZlMTUzZmFiN2JjOGY0OWE4
ODcyNDIyY2Y2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaApAQCAtMzE2LDM1ICszMTYsMTQgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGlj
IE1hY3JvQXNzZW1ibGVyIHsKICAgICB2b2lkIGVtaXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0Jik7CiAgICAgdm9pZCBlbWl0UmVzdG9yZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlz
dCYpOwogCi0gICAgdm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJs
b2NrKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0KLSAgICAgICAgY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7Ci0gICAgICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY2FsbGVlU2F2ZXMp
OwotICAgIH0KLQogICAgIHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMpOwogICAgIAogICAgIGVudW0gUmVzdG9yZVRhZ1Jl
Z2lzdGVyTW9kZSB7IFVzZUV4aXN0aW5nVGFnUmVnaXN0ZXJDb250ZW50cywgQ29weUJhc2VsaW5l
Q2FsbGVlU2F2ZWRSZWdpc3RlcnNGcm9tQmFzZUZyYW1lIH07CiAKICAgICB2b2lkIGVtaXRTYXZl
T3JDb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayosIFZpcnR1YWxSZWdp
c3RlciBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIsIFJlc3RvcmVUYWdSZWdpc3Rlck1vZGUsIEdQUlJl
ZyB0ZW1wMSwgR1BSUmVnIHRlbXAyLCBHUFJSZWcgdGVtcDMpOwotICAgIAotICAgIHZvaWQgZW1p
dFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChjb2RlQmxvY2spOwotCi0gICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAg
ICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNhbGxlZVNhdmVzKTsKLSAgICB9CiAKICAg
ICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QqIGNhbGxlZVNhdmVzKTsKIAotICAgIHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlcygpCi0gICAg
ewotICAgICAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvZGVCbG9jaygpKTsKLSAgICB9Ci0K
ICAgICB2b2lkIGVtaXRTYXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKCkKICAgICB7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKQEAgLTM1NywxMSArMzM2LDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxw
ZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgZW1pdE1hdGVyaWFsaXplVGFn
Q2hlY2tSZWdpc3RlcnMoKTsKICNlbmRpZgogICAgIH0KLSAgICAKLSAgICB2b2lkIGVtaXRSZXN0
b3JlQ2FsbGVlU2F2ZXMoKQotICAgIHsKLSAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0Zv
cihjb2RlQmxvY2soKSk7Ci0gICAgfQogCiAgICAgdm9pZCBlbWl0UmVzdG9yZVNhdmVkVGFnUmVn
aXN0ZXJzKCkKICAgICB7CkBAIC0xNTQwLDcgKzE1MTQsNyBAQCBjbGFzcyBBc3NlbWJseUhlbHBl
cnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICByZXR1cm4gY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsKICAgICB9CiAgICAgCi0gICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbik7CisgICAg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGVGb3IoQ29kZUJsb2NrKiwgY29uc3QgQ29kZU9yaWdp
biYpOwogICAgIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29uc3QgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Jhc2VsaW5lSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9C
YXNlbGluZUpJVENvZGUuaAppbmRleCAzMDAzYjA3MzUwMTg4ZTVmNzNmY2M5NjcyMGQ2YTllNzQx
ZjhiY2I1Li42NjFkZWVkY2FmZjVlODc2YjVkOTViY2Y5ODdjMGFlNDU4NmI5NmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Jhc2VsaW5lSklUQ29kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRDb2RlLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5j
bHVkZSAiSklUQ29kZU1hcC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaD4KIAogI2lmIEVOQUJMRShKSVQpCkBAIC0x
MDIsNiArMTAzLDI1IEBAIGNsYXNzIEJhc2VsaW5lSklUQ29kZSA6IHB1YmxpYyBEaXJlY3RKSVRD
b2RlLCBwdWJsaWMgTWF0aElDSG9sZGVyIHsKICAgICBib29sIG1faXNTaGFyZWFibGUgeyB0cnVl
IH07CiB9OwogCitjbGFzcyBCYXNlbGluZUpJVERhdGEgZmluYWwgOiBwdWJsaWMgVHJhaWxpbmdB
cnJheTxCYXNlbGluZUpJVERhdGEsIHZvaWQqPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gVHJhaWxpbmdBcnJheTxCYXNlbGluZUpJVERhdGEsIHZvaWQqPjsKKwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QmFzZWxpbmVKSVREYXRhPiBjcmVhdGUodW5zaWdu
ZWQgcG9vbFNpemUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEJhc2Vs
aW5lSklURGF0YT4geyBuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNp
emUocG9vbFNpemUpKSkgQmFzZWxpbmVKSVREYXRhKHBvb2xTaXplKSB9OworICAgIH0KKworICAg
IGV4cGxpY2l0IEJhc2VsaW5lSklURGF0YSh1bnNpZ25lZCBzaXplKQorICAgICAgICA6IEJhc2Uo
c2l6ZSkKKyAgICB7CisgICAgfQorCisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+
IG1fc3R1YkluZm9zOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFC
TEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZm
bGVEYXRhLmNwcAppbmRleCAzZGQ2ZTBjYjFiZjU3N2I5MzQzNDBiNDExN2E2NTU4YTkxMjk1MWM5
Li44MTgwZDZhYmE1NzQwNDAxYTJmY2FiMmQ1YTFmZGQ1M2M5YTIwNmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcApAQCAtMzQs
MTEgKzM0LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgQ2FsbEZyYW1lU2h1ZmZsZURh
dGE6OnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAg
ICBzZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJz
KCkpOwotfQotCiB2b2lkIENhbGxGcmFtZVNodWZmbGVEYXRhOjpzZXR1cENhbGxlZVNhdmVSZWdp
c3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucykK
IHsKICAgICBSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzIHsgUmVnaXN0ZXJTZXQ6OnZt
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgKaW5kZXggMGJjMTliOTlkNjFlNGJjYmI3MTllYTlmY2Mx
YmM4YzM3ZmJmZWM1Zi4uNmNlYzA0NDZjMzBjMGVkZWY4MDljYWE4N2MwZTlkMTJiOGY4ZWI0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0
YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
aApAQCAtNTMsNyArNTMsNiBAQCBzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgewogICAgIEdQ
UlJlZyBudW1iZXJUYWdSZWdpc3RlciB7IEludmFsaWRHUFJSZWcgfTsKICNlbmRpZgogCi0gICAg
dm9pZCBzZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoQ29kZUJsb2NrKik7CiAgICAgdm9pZCBzZXR1
cENhbGxlZVNhdmVSZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKICAgICBW
YWx1ZVJlY292ZXJ5IGNhbGxlZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
MDMwZjNmMzZmNmVlZmQ4NzkwZGE4OTQ1NzhjOTRhYWEyMGM1OTk3Zi4uYzY0ZGRlZjIzZDRiMmQ2
MjRmYjczNDU5ZjA1NDdhZjU3ODg5NDY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtMjc0LDggKzI3NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgaWYgKG9wY29kZUlEICE9IG9wX2NhdGNoKSB7CiAgICAgICAgICAgICBsb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwogICAgICAgICAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mTWV0YWRhdGFUYWJsZSgp
KSwgcmVnVDEpOwotICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6
Om9mZnNldE9mSklURGF0YSgpKSwgcmVnVDApOwotICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBDb2RlQmxvY2s6OkpJVERhdGE6Om9mZnNldE9mSklUQ29uc3RhbnRQb29sKCkpLCBy
ZWdUMik7CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zm
c2V0T2ZCYXNlbGluZUpJVERhdGEoKSksIHJlZ1QyKTsKIAogICAgICAgICAgICAgYXV0byBtZXRh
ZGF0YU9LID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMSwgc19tZXRhZGF0YUdQUik7CiAgICAgICAg
ICAgICBicmVha3BvaW50KCk7CkBAIC03MDIsOCArNzAxLDEyIEBAIHZvaWQgSklUOjplbWl0TWF0
ZXJpYWxpemVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycygpCiB7CiAgICAgbG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxlKCkpLCBz
X21ldGFkYXRhR1BSKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zm
c2V0T2ZKSVREYXRhKCkpLCByZWdUMCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2Rl
QmxvY2s6OkpJVERhdGE6Om9mZnNldE9mSklUQ29uc3RhbnRQb29sKCkpLCBzX2NvbnN0YW50c0dQ
Uik7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxp
bmVKSVREYXRhKCkpLCBzX2NvbnN0YW50c0dQUik7Cit9CisKK3ZvaWQgSklUOjplbWl0U2F2ZUNh
bGxlZVNhdmVzKCkKK3sKKyAgICBCYXNlOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKCZSZWdpc3Rl
ckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiB9CiAK
IHZvaWQgSklUOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCkKQEAgLTc4Miw3ICs3ODUsNyBAQCB2
b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVm
Zm9ydCBlZmZvcnQpCiAgICAgbW92ZShyZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAg
IGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKLSAgICBlbWl0U2F2ZUNhbGxlZVNhdmVz
Rm9yKCZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSk7CisgICAgZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgIGVtaXRNYXRlcmlhbGl6ZVRh
Z0NoZWNrUmVnaXN0ZXJzKCk7CiAgICAgZW1pdE1hdGVyaWFsaXplTWV0YWRhdGFBbmRDb25zdGFu
dFBvb2xSZWdpc3RlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZmYzODg3NDMz
YzNkNWQxY2NmMzY4YzZmM2VlOWUxYThhODg0NzY5OC4uODdjZTlkYzU5ZTFkMmU2OGNhZjg3NWMx
NzY1Y2FjNDk1MTJiODBkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC04OTMsNiArODkz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0TWF0ZXJpYWxpemVNZXRh
ZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycygpOwogCisgICAgICAgIHZvaWQgZW1pdFNhdmVD
YWxsZWVTYXZlcygpOwogICAgICAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAog
ICAgICAgICBzdGF0aWMgYm9vbCByZXBvcnRDb21waWxlVGltZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuY3BwCmluZGV4IGIyZTNkY2M3MDgyOWE0N2U3OGVkYmViNDIwMzgwYzAw
OGI0YzY4ZjIuLmFiNjY0OWMyYmQzYjQzYzIyMjE2NTJlZjgxZmYxMTlhOWMyOGJkY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKIAorI2luY2x1ZGUgIkZUTEpJVENv
ZGUuaCIKKwogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTk1LDYgKzk3LDI2IEBAIHZvaWQgSklUQ29kZTo6c2hyaW5rVG9GaXQoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJikKIHsKIH0KIAorY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIEpJVENv
ZGU6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdAoreworICAgIHN3aXRjaCAoaml0VHlwZSgp
KSB7CisjaWYgRU5BQkxFKEZUTF9KSVQpCisgICAgY2FzZSBKSVRUeXBlOjpGVExKSVQ6CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGVEw6OkpJVENvZGUqPih0aGlzKS0+Y2FsbGVl
U2F2ZVJlZ2lzdGVycygpOworI2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgY2FzZSBK
SVRUeXBlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmRm
Z0NhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisjaWYgIUVOQUJM
RShDX0xPT1ApCisgICAgICAgIHJldHVybiAmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFz
ZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisjZWxzZQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyNlbmRpZgorICAgIH0KK30KKwogSklUQ29kZVdpdGhDb2RlUmVmOjpKSVRDb2RlV2l0aENv
ZGVSZWYoSklUVHlwZSBqaXRUeXBlKQogICAgIDogSklUQ29kZShqaXRUeXBlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaAppbmRleCA4ZTRjZTAzZjhlZWVjMzQwYmI2NjZmNTI3OWE2
ODc2ZGMyYzY4ODYwLi4zMDgzNzlmZTc4MDBlNDg0NDE3ZGU0ZDBiMTg4YmNhZmU0OGNmZjEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIK
ICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCiAKQEAgLTIyOCw2ICsyMjksOCBAQCBjbGFzcyBK
SVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKIAogICAgIHZp
cnR1YWwgUENUb0NvZGVPcmlnaW5NYXAqIHBjVG9Db2RlT3JpZ2luTWFwKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogCisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVSZWdp
c3RlcnMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBKSVRUeXBlIG1faml0VHlwZTsKICAgICBT
aGFyZUF0dHJpYnV0ZSBtX3NoYXJlQXR0cmlidXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAppbmRleCA1ODY0MTJiYzQ3ZWU2YmI3NDBlZjE1MjA4NGVmMmNhMjFhNmIxNTli
Li4yNmViMmFmZWNhZWY1YWU0ZTM3YmEwOTBmYzJiYTU4NjFhMjdmYTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNTA1LDcgKzUwNSw3IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBKSVQ6Om1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShjb25zdCBCeXRlY29k
ZSYgYnl0ZWNvZGUsCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxvYWRDb25zdGFudChKSVRD
b25zdGFudFBvb2w6OkNvbnN0YW50IGNvbnN0YW50SW5kZXgsIEdQUlJlZyByZXN1bHQpCiB7Ci0g
ICAgbG9hZFB0cihBZGRyZXNzKHNfY29uc3RhbnRzR1BSLCBGaXhlZFZlY3Rvcjx2b2lkKj46OlN0
b3JhZ2U6Om9mZnNldE9mRGF0YSgpICsgc3RhdGljX2Nhc3Q8dWludHB0cl90Pihjb25zdGFudElu
ZGV4KSAqIHNpemVvZih2b2lkKikpLCByZXN1bHQpOworICAgIGxvYWRQdHIoQWRkcmVzcyhzX2Nv
bnN0YW50c0dQUiwgQmFzZWxpbmVKSVREYXRhOjpvZmZzZXRPZkRhdGEoKSArIHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oY29uc3RhbnRJbmRleCkgKiBzaXplb2Yodm9pZCopKSwgcmVzdWx0KTsKIH0K
IAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bG9hZEdsb2JhbE9iamVjdChHUFJSZWcgcmVzdWx0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYjlhZWZjYWU2
ZmNlNDBiNjdiYjQ3NTg2YzM3YWY4MGNhYWJmMWI4Ny4uOTAzMGJiNTNiMmFkZDYxYWUwOGEzMGM4
N2M3MWEzOGYxZjY3NGNhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCkBAIC0xMDY0LDggKzEwNjQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIFNvIHdlIHJlcGxlbmlzaCBp
dCBoZXJlLgogICAgIHsKICAgICAgICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayksIHJlZ1QwKTsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2Rl
QmxvY2s6Om9mZnNldE9mSklURGF0YSgpKSwgcmVnVDApOwotICAgICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIENvZGVCbG9jazo6SklURGF0YTo6b2Zmc2V0T2ZKSVRDb25zdGFudFBvb2woKSks
IHNfY29uc3RhbnRzR1BSKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxv
Y2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKCkpLCBzX2NvbnN0YW50c0dQUik7CiAgICAgfQog
CiAgICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uUmV0cmlldmVBbmRD
bGVhckV4Y2VwdGlvbklmQ2F0Y2hhYmxlLCAmdm0oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwCmluZGV4IDhiMzkxMjZjNWI1NDJh
MjMyY2RmMWMwMGZhZjJhYzBiZDZiYjUxNmEuLmVkODMwM2RlNDFiNTc0YWZjZTkyODk3Y2YwYTlk
NWFkZWY0MDgxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJBdE9mZnNldExpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJBdE9mZnNldExpc3QuY3BwCkBAIC04MCw2ICs4MCwxNiBAQCBjb25zdCBSZWdpc3RlckF0T2Zm
c2V0TGlzdCYgUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVn
aXN0ZQogICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CiB9CiAKK2NvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0JiBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCit7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gcmVzdWx0OworICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VLZXksIFtdIHsKKyAgICAgICAgcmVzdWx0LmNvbnN0cnVjdChSZWdpc3RlclNldDo6
ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0Lmdl
dCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJM
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZz
ZXRMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0
LmgKaW5kZXggYTk5MDE3YzRhZWJmZTI5YWNkYzI2MWI5MmE2MzQ4NDEzMjc2NGMzZC4uZDExN2Nm
NzVlMDk4ODg0ODNlNzY1ZTUyYTNlYzc2ZjIyMmE3MTM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuaApAQCAtNjYsNiArNjYsNyBAQCBj
bGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdCB7CiAgICAgRml4ZWRWZWN0b3I8UmVnaXN0ZXJBdE9m
ZnNldD46OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJzLmVu
ZCgpOyB9CiAKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGxsaW50QmFz
ZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBhbmQgT2Zmc2V0cyBzYXZl
ZCBhbmQgdXNlZCBieSB0aGUgTExJbnQuCisgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0JiBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBhbmQgT2Zmc2V0
cyBzYXZlZCBhbmQgdXNlZCBieSBERkcuCiAKIHByaXZhdGU6CiAgICAgRml4ZWRWZWN0b3I8UmVn
aXN0ZXJBdE9mZnNldD4gbV9yZWdpc3RlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA2Zjc3NDA1ZDQ4ODljYzZjYjc4Y2U1OGFlMzQx
MDA2NTI4MzY3M2I4Li4zNTY2MWQ4MjI2ZmMxOWYyYjIzYWIyZjNiYjMwM2NlNDc3MTI0MmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAg
LTQ3NywxMCArNDc3LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wobG9vcF9vc3IpCiAgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5n
KCkgJiYgY29kZUJsb2NrLT5sb29wSGludHNBcmVFbGlnaWJsZUZvckZ1enppbmdFYXJseVJldHVy
bigpKSkgewogICAgICAgICB1aW50cHRyX3QqIHB0ciA9IHZtLmdldExvb3BIaW50RXhlY3V0aW9u
Q291bnRlcihwYyk7CiAgICAgICAgICpwdHIgKz0gY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3Vu
dGVyKCkubV9hY3RpdmVUaHJlc2hvbGQ7Ci0gICAgICAgIGlmICgqcHRyID49IE9wdGlvbnM6OmVh
cmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCgpKSB7Ci0gICAgICAgICAgICBjb2RlQmxv
Y2stPmVuc3VyZUpJVERhdGEoQ29uY3VycmVudEpTTG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKSk7
IC8vIFdlJ3JlIHJldHVybmluZyB0byB0aGUgT1NSIGVudHJ5IGNvZGUgaGVyZSwgd2hpY2ggZXhw
ZWN0cyB0aGF0IG1faml0RGF0YSBpcyBub3QgbnVsbC4KKyAgICAgICAgaWYgKCpwdHIgPj0gT3B0
aW9uczo6ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCiAgICAgICAgICAgICBM
TElOVF9SRVRVUk5fVFdPKExMSW50OjpmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludEVudHJ5
cG9pbnQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY2FsbEZyYW1lLT50b3BPZkZyYW1l
KCkpOwotICAgICAgICB9CiAgICAgfQogICAgIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDNlOTJjYTUwYWQw
ZDg4YTI4ZTI1YzJkZTdkNjc1ODJlZGRhZGVhNDYuLjNiZWJkMTM2ZjJiYWJmY2QzMzlkNzIyZmQy
Y2IyMzMyOTQ2ZjVhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI2MTIsOCArMjYxMiw3IEBAIGlmIEpJVAogICAg
IG1hY3JvIGxvYWRCYXNlbGluZUpJVENvbnN0YW50UG9vbCgpCiAgICAgICAgICMgQmFzZWxpbmUg
dXNlcyBMTEludCdzIFBCIHJlZ2lzdGVyIGZvciBpdHMgSklUIGNvbnN0YW50IHBvb2wuCiAgICAg
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
aml0RGF0YVtQQl0sIFBCCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6SklURGF0YTo6bV9qaXRD
b25zdGFudFBvb2wgKyBWb2lkUG9pbnRlckZpeGVkVmVjdG9yOjptX3N0b3JhZ2VbUEJdLCBQQgor
ICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYmFzZWxpbmVKSVREYXRhW1BCXSwgUEIKICAgICBl
bmQKIAogICAgIG1hY3JvIHNldHVwUmV0dXJuVG9CYXNlbGluZUFmdGVyQ2hlY2twb2ludEV4aXRJ
Zk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNw
ZWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcApp
bmRleCBiMWIzMTE3MzFhZDRjNzgxZDU3NzNjOTE1MzAzMmMzODlkOTI1ZjFmLi43ZTNhZTdkODk1
ODJmMjFlZTJkNjcwNGNlYjdiMGU0ZGZhZmZhYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9WTUluc3BlY3Rvci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIFZNSW5zcGVj
dG9yOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIC0taXQ7CiAgICAg
ZGF0YUxvZ0YoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAotICAgIHNpemVfdCBudW1iZXJP
ZkNhbGxlZVNhdmVTbG90cyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCk7CisgICAgc2l6ZV90IG51bWJlck9mQ2FsbGVlU2F2ZVNsb3RzID0gQ29kZUJsb2Nr
OjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKmNvZGVCbG9jay0+aml0Q29kZSgp
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgIGNvbnN0IFJlZ2lzdGVyKiBlbmRPZkNhbGxl
ZVNhdmVzID0gaXQgLSBudW1iZXJPZkNhbGxlZVNhdmVTbG90czsKIAogICAgIGVuZCA9IGl0IC0g
Y29kZUJsb2NrLT5udW1WYXJzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447958</attachid>
            <date>2021-12-25 03:43:31 -0800</date>
            <delta_ts>2022-01-04 16:21:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234555-20211225034330.patch</filename>
            <type>text/plain</type>
            <size>54454</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjZiNzYyNmZlMTU4MGI3YTUzNTFmZjFiYmQ5NzRkNTgyZTg3YzE1Li5lYTZmZGU0NzdiMzdjMTVj
ZmVjNDQyNmJmYzYyZGYzMTdiMTY3NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDkgQEAKKzIwMjEtMTItMjUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzIGZyb20gQ29k
ZUJsb2NrOjpKSVREYXRhIGFuZCByZW5hbWUgaXQgdG8gQmFzZWxpbmVKSVREYXRhCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ1NTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92
ZXMgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzIGZyb20gQ29kZUJsb2NrOjpKSVREYXRhLCBhbmQgbW92
aW5nIGl0IHRvIGVhY2ggSklUQ29kZS4KKyAgICAgICAgVGhpcyBpcyByZWFzb25hYmxlIHNpbmNl
IG1fY2FsbGVlU2F2ZVJlZ2lzdGVycyBpbmZvcm1hdGlvbiBiZWxvbmdzIHRvIEpJVENvZGUsIG5v
dCBDb2RlQmxvY2suCisgICAgICAgIEFuZCBpbiBMTEludCwgQmFzZWxpbmUsIGFuZCBERkcgY2Fz
ZXMsIG1fY2FsbGVlU2F2ZVJlZ2lzdGVycyBpcyB0aGUgc2FtZS4gU28gd2UgZG8gbm90IGhhdmUg
dGhpcworICAgICAgICBmaWVsZCBpbiB0aGVzZSBKSVRDb2RlLiBPbmx5IEZUTCBjYW4gaGF2ZSBt
X2NhbGxlZVNhdmVSZWdpc3RlcnMuCisKKyAgICAgICAgQnkgcmVtb3ZpbmcgbV9jYWxsZWVTYXZl
UmVnaXN0ZXJzIGZyb20gQ29kZUJsb2NrOjpKSVREYXRhLCBub3cgaXQgb25seSBpbmNsdWRlcyBC
YXNlbGluZSBKSVQgcmVsYXRlZAorICAgICAgICBkYXRhLiBTbyB0aGlzIHBhdGNoIHJlbmFtZXMg
Q29kZUJsb2NrOjpKSVREYXRhIHRvIEJhc2VsaW5lSklURGF0YS4KKworICAgICAgICBXZSBhbHNv
IHVzZSBUcmFpbGluZ0FycmF5IGZvciBCYXNlbGluZUpJVERhdGEgc28gdGhhdCB3ZSBjYW4gcmVt
b3ZlIG9uZSBsZXZlbCBpbmRpcmVjdGlvbiB3aGVuIGxvYWRpbmcKKyAgICAgICAgSklUQ29uc3Rh
bnRQb29sIGZyb20gSklURGF0YS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNvZGUp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5hbGl6ZUpJVElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0
SUNTdGF0dXNNYXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmRTdHViSW5mbyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVzZXRCYXNlbGluZUpJVERhdGEpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmRQQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZW5zdXJlSklURGF0YVNsb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNl
dENhbGxlZVNhdmVSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnJlc2V0SklURGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y2FsbGVl
U2F2ZVJlZ2lzdGVycyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZCYXNlbGluZUpJVERhdGEp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lSklURGF0YSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpKSVREYXRhOjpvZmZzZXRPZkpJVENvbnN0YW50UG9vbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNlbGluZUpJVENvbnN0YW50UG9vbCk6IERlbGV0ZWQu
CisgICAgICAgICogYnl0ZWNvZGUvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5
bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzKToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6ZW1pdFNhdmVDYWxsZWVTYXZlcyk6CisgICAgICAgICog
ZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwcmVwYXJlT1NSRW50cnkp
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JF
eGl0Ojpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FsbGVlU2F2ZVNsb3QpOgorICAgICAgICAoSlND
OjpERkc6OnJlaWZ5SW5saW5lZENhbGxGcmFtZXMpOgorICAgICAgICAoSlNDOjpERkc6OmFkanVz
dEFuZEp1bXBUb1RhcmdldCk6CisgICAgICAgICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZEltcGwpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAqIGRm
Zy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdGFja0xheW91
dFBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMSklUQ29kZS5oOgorICAgICAgICAo
SlNDOjpGVEw6OkpJVENvZGU6OmNhbGxlZVNhdmVSZWdpc3RlcnMgY29uc3QpOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNp
dG9yOjpGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0ZvclVud2luZGluZyk6CisgICAgICAgICog
aml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
ZXhlY3V0YWJsZUZvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVP
ckNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJs
eUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZVRoZW5N
YXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
ZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFzc2VtYmx5
SGVscGVyczo6ZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0Zvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxsZWVTYXZlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVDYWxsZWVTYXZlcyk6IERlbGV0
ZWQuCisgICAgICAgICogaml0L0Jhc2VsaW5lSklUQ29kZS5oOgorICAgICAgICAqIGppdC9DYWxs
RnJhbWVTaHVmZmxlRGF0YS5jcHA6CisgICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVEYXRh
Lmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGVyaWFsaXplTWV0YWRh
dGFBbmRDb25zdGFudFBvb2xSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTYXZl
Q2FsbGVlU2F2ZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZp
bmFsaXppbmcpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ29kZS5j
cHA6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmNhbGxlZVNhdmVSZWdpc3RlcnMgY29uc3QpOgor
ICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SklUOjpsb2FkQ29uc3RhbnQpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAgICAgICAgKiBqaXQv
UmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0
TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgICogaml0L1JlZ2lzdGVyQXRP
ZmZzZXRMaXN0Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk1JbnNwZWN0b3I6OmR1bXBSZWdpc3RlcnMpOgorCiAyMDIxLTEyLTIz
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIERlZmVycmVk
V29ya1RpbWVyOjphZGRQZW5kaW5nV29yaygpIHJldHVybiBhIFRpY2tldC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYjRhMmYwNmFkYTNkM2Jm
MjFlZTAwYzQ0MjUxYTMzZWYxYjk0MjFiNi4uNDM1MDE3MTE2NTc2ZmFhY2ZiZDFkZTg3MTUzNjQw
ZGNmNjE3M2IyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTc4NCwxMSArNzg0LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnNldHVwV2l0aFVubGlu
a2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJVENvZGU+IGppdENvZGUpCiAKICAgICB7CiAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgYXV0byYg
aml0RGF0YSA9IGVuc3VyZUpJVERhdGEobG9ja2VyKTsKLQotICAgICAgICBSRUxFQVNFX0FTU0VS
VChqaXREYXRhLm1faml0Q29uc3RhbnRQb29sLmlzRW1wdHkoKSk7Ci0gICAgICAgIGppdERhdGEu
bV9qaXRDb25zdGFudFBvb2wgPSBGaXhlZFZlY3Rvcjx2b2lkKj4oaml0Q29kZS0+bV9jb25zdGFu
dFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgaml0RGF0YS5tX3N0dWJJbmZvcyA9IEZpeGVkVmVjdG9y
PFN0cnVjdHVyZVN0dWJJbmZvPihqaXRDb2RlLT5tX3VubGlua2VkU3R1YkluZm9zLnNpemUoKSk7
CisgICAgICAgIEFTU0VSVCghbV9iYXNlbGluZUpJVERhdGEpOworICAgICAgICBtX2Jhc2VsaW5l
SklURGF0YSA9IEJhc2VsaW5lSklURGF0YTo6Y3JlYXRlKGppdENvZGUtPm1fY29uc3RhbnRQb29s
LnNpemUoKSk7CisgICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5tX3N0dWJJbmZvcyA9IEZpeGVk
VmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPihqaXRDb2RlLT5tX3VubGlua2VkU3R1YkluZm9zLnNp
emUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgdW5saW5rZWRDYWxsTGlua0luZm8gOiBqaXRDb2Rl
LT5tX3VubGlua2VkQ2FsbHMpIHsKICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvID0gZ2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChsb2NrZXIsIHVubGlua2VkQ2Fs
bExpbmtJbmZvLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5m
byk7CkBAIC03OTksMjQgKzc5NywyNCBAQCB2b2lkIENvZGVCbG9jazo6c2V0dXBXaXRoVW5saW5r
ZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4gaml0Q29kZSkKICAgICAgICAgICAg
IGF1dG8gZW50cnkgPSBqaXRDb2RlLT5tX2NvbnN0YW50UG9vbC5hdChpKTsKICAgICAgICAgICAg
IHN3aXRjaCAoZW50cnkudHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEpJVENvbnN0YW50UG9v
bDo6VHlwZTo6R2xvYmFsT2JqZWN0OgotICAgICAgICAgICAgICAgIGppdERhdGEubV9qaXRDb25z
dGFudFBvb2xbaV0gPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKKyAgICAgICAgICAgICAgICBtX2Jh
c2VsaW5lSklURGF0YS0+YXQoaSkgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSklUQ29uc3RhbnRQb29sOjpUeXBlOjpTdHJ1
Y3R1cmVTdHViSW5mbzogewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsKICAgICAgICAgICAgICAgICBVbmxp
bmtlZFN0cnVjdHVyZVN0dWJJbmZvJiB1bmxpbmtlZFN0dWJJbmZvID0gaml0Q29kZS0+bV91bmxp
bmtlZFN0dWJJbmZvc1tpbmRleF07Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvID0gaml0RGF0YS5tX3N0dWJJbmZvc1tpbmRleF07CisgICAgICAgICAgICAgICAg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gbV9iYXNlbGluZUpJVERhdGEtPm1fc3R1Yklu
Zm9zW2luZGV4XTsKICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0aWFsaXplRnJvbVVubGlu
a2VkU3RydWN0dXJlU3R1YkluZm8odGhpcywgdW5saW5rZWRTdHViSW5mbyk7Ci0gICAgICAgICAg
ICAgICAgaml0RGF0YS5tX2ppdENvbnN0YW50UG9vbFtpXSA9ICZzdHViSW5mbzsKKyAgICAgICAg
ICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+YXQoaSkgPSAmc3R1YkluZm87CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEpJVENvbnN0YW50
UG9vbDo6VHlwZTo6RnVuY3Rpb25EZWNsOiB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5k
ZXggPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbnRyeS5wb2ludGVyKCkpOwotICAgICAgICAg
ICAgICAgIGppdERhdGEubV9qaXRDb25zdGFudFBvb2xbaV0gPSBmdW5jdGlvbkRlY2woaW5kZXgp
OworICAgICAgICAgICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9IGZ1bmN0aW9uRGVj
bChpbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIEpJVENvbnN0YW50UG9vbDo6VHlwZTo6RnVuY3Rpb25FeHByOiB7CiAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbnRyeS5w
b2ludGVyKCkpOwotICAgICAgICAgICAgICAgIGppdERhdGEubV9qaXRDb25zdGFudFBvb2xbaV0g
PSBmdW5jdGlvbkV4cHIoaW5kZXgpOworICAgICAgICAgICAgICAgIG1fYmFzZWxpbmVKSVREYXRh
LT5hdChpKSA9IGZ1bmN0aW9uRXhwcihpbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC05MDUsNyArOTAzLDcgQEAgQ29kZUJsb2Nr
Ojp+Q29kZUJsb2NrKCkKICAgICAvLyBkZXN0cnVjdG9ycy4KIAogI2lmIEVOQUJMRShKSVQpCi0g
ICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsKKyAgICBpZiAoYXV0byog
aml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
c3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewogICAgICAgICAgICAgc3R1YkluZm8u
YWJvdXRUb0RpZSgpOwogICAgICAgICAgICAgc3R1YkluZm8uZGVyZWYoKTsKQEAgLTEyNDksNyAr
MTI0Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBWaXNpdG9yJiB2aXNpdG9yCiAKICNpZiBFTkFCTEUoSklUKQogICAg
IGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBqaXRE
YXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9i
YXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8g
OiBqaXREYXRhLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgICAgICBzdHViSW5mby5wcm9wYWdh
dGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKICAgICAgICAgfQpAQCAtMTU4MiwyMCArMTU4MCw5IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKIH0KIAogI2lmIEVO
QUJMRShKSVQpCi1Db2RlQmxvY2s6OkpJVERhdGEmIENvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3coY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKLXsKLSAgICBBU1NFUlQoIW1faml0RGF0YSk7
Ci0gICAgYXV0byBqaXREYXRhID0gbWFrZVVuaXF1ZTxKSVREYXRhPigpOwotICAgIC8vIGNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSBjYW4gYWNjZXNzIG1faml0RGF0YSB3aXRob3V0IHRha2luZyBhIGxv
Y2sgZnJvbSBCYXNlbGluZSBKSVQuIFRoaXMgaXMgT0sgc2luY2UgSklURGF0YTo6bV9jYWxsZWVT
YXZlUmVnaXN0ZXJzIGlzIGZpbGxlZCBpbiBERkcgYW5kIEZUTCBDb2RlQmxvY2tzLgotICAgIC8v
IEJ1dCB3ZSBzaG91bGQgbm90IHNlZSBnYXJiYWdlIHBvaW50ZXIgaW4gdGhhdCBjYXNlLiBXZSBl
bnN1cmUgSklURGF0YTo6bV9jYWxsZWVTYXZlUmVnaXN0ZXJzIGlzIGluaXRpYWxpemVkIGFzIG51
bGxwdHIgYmVmb3JlIGV4cG9zaW5nIGl0IHRvIEJhc2VsaW5lSklUIGJ5IHN0b3JlLXN0b3JlLWZl
bmNlLgotICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgbV9qaXREYXRhID0gV1RGTW92
ZShqaXREYXRhKTsKLSAgICByZXR1cm4gKm1faml0RGF0YTsKLX0KLQogdm9pZCBDb2RlQmxvY2s6
OmZpbmFsaXplSklUSW5saW5lQ2FjaGVzKCkKIHsKLSAgICBpZiAoYXV0byogaml0RGF0YSA9IG1f
aml0RGF0YS5nZXQoKSkgeworICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERh
dGEuZ2V0KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1
YkluZm9zKSB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXJCYXNlIGxvY2tlcihOb0xv
Y2tpbmdOZWNlc3NhcnkpOwogICAgICAgICAgICAgc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNl
cyhsb2NrZXIsIHRoaXMpOwpAQCAtMTY5OSw3ICsxNjg2LDcgQEAgdm9pZCBDb2RlQmxvY2s6Omdl
dElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1
bHQpCiAgICAgfQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzSklUKGppdFR5
cGUoKSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewog
ICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKQog
ICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8uY29kZU9yaWdpbiwgSUNTdGF0dXMo
KSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gJnN0dWJJbmZvOwogICAgICAgICB9CkBAIC0x
NzM4LDcgKzE3MjUsNyBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoSUNTdGF0dXNN
YXAmIHJlc3VsdCkKIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmZpbmRTdHViSW5mbyhD
b2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAg
aWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewogICAgICAgICBm
b3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKICAgICAgICAgICAg
IGlmIChzdHViSW5mby5jb2RlT3JpZ2luID09IGNvZGVPcmlnaW4pCiAgICAgICAgICAgICAgICAg
cmV0dXJuICZzdHViSW5mbzsKQEAgLTE3ODYsMzIgKzE3NzMsMTIgQEAgQ2FsbExpbmtJbmZvKiBD
b2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnNldENh
bGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQgcmVnaXN0ZXJTZXQpCi17Ci0gICAgYXV0byBj
YWxsZWVTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJBdE9mZnNldExpc3QocmVnaXN0ZXJTZXQpOwot
Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGF1dG8mIGppdERh
dGEgPSBlbnN1cmVKSVREYXRhKGxvY2tlcik7Ci0gICAgaml0RGF0YS5tX2NhbGxlZVNhdmVSZWdp
c3RlcnMgPSBXVEZNb3ZlKGNhbGxlZVNhdmVSZWdpc3RlcnMpOwotICAgIFdURjo6c3RvcmVTdG9y
ZUZlbmNlKCk7Ci0gICAgaml0RGF0YS5tX2hhc0NhbGxlZVNhdmVSZWdpc3RlcnMgPSB0cnVlOwot
fQotCi12b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlckF0T2Zm
c2V0TGlzdCYmIHJlZ2lzdGVyQXRPZmZzZXRMaXN0KQotewotICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIobV9sb2NrKTsKLSAgICBhdXRvJiBqaXREYXRhID0gZW5zdXJlSklURGF0YShsb2Nr
ZXIpOwotICAgIGppdERhdGEubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gV1RGTW92ZShyZWdpc3Rl
ckF0T2Zmc2V0TGlzdCk7Ci0gICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBqaXREYXRh
Lm1faGFzQ2FsbGVlU2F2ZVJlZ2lzdGVycyA9IHRydWU7Ci19Ci0KLXZvaWQgQ29kZUJsb2NrOjpy
ZXNldEpJVERhdGEoKQordm9pZCBDb2RlQmxvY2s6OnJlc2V0QmFzZWxpbmVKSVREYXRhKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCghSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSk7CiAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIAotICAgIGlmIChhdXRvKiBqaXRE
YXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2Vs
aW5lSklURGF0YS5nZXQoKSkgewogICAgICAgICAvLyBXZSBjYW4gY2xlYXIgdGhlc2UgYmVjYXVz
ZSBubyBvdGhlciB0aHJlYWQgd2lsbCBoYXZlIHJlZmVyZW5jZXMgdG8gYW55IHN0dWIgaW5mb3Ms
IGNhbGwKICAgICAgICAgLy8gbGluayBpbmZvcywgb3IgYnkgdmFsIGluZm9zIGlmIHdlIGRvbid0
IGhhdmUgSklUIGNvZGUuIEF0dGVtcHRzIHRvIHF1ZXJ5IHRoZXNlIGRhdGEKICAgICAgICAgLy8g
c3RydWN0dXJlcyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldElDU3RhdHVzTWFwIGFuZCBm
cmllbmRzKSB3aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCkBAIC0xODMyLDcgKzE3OTksNyBAQCB2
b2lkIENvZGVCbG9jazo6cmVzZXRKSVREYXRhKCkKICAgICAgICAgLy8gV2UgY2FuIGNsZWFyIHRo
aXMgYmVjYXVzZSB0aGUgREZHJ3MgcXVlcmllcyB0byB0aGVzZSBkYXRhIHN0cnVjdHVyZXMgYXJl
IGd1YXJkZWQgYnkgd2hldGhlcgogICAgICAgICAvLyB0aGVyZSBpcyBKSVQgY29kZS4KIAotICAg
ICAgICBtX2ppdERhdGEgPSBudWxscHRyOworICAgICAgICBtX2Jhc2VsaW5lSklURGF0YSA9IG51
bGxwdHI7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xODc4LDcgKzE4NDUsNyBAQCB2b2lkIENvZGVC
bG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiBsb2NrZXIsCiAgICAgfSk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChhdXRvKiBq
aXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jh
c2VsaW5lSklURGF0YS5nZXQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0
RGF0YS0+bV9zdHViSW5mb3MpCiAgICAgICAgICAgICBzdHViSW5mby52aXNpdEFnZ3JlZ2F0ZSh2
aXNpdG9yKTsKICAgICB9CkBAIC0yNDc4LDE4ICsyNDQ1LDYgQEAgdW5zaWduZWQgQ29kZUJsb2Nr
OjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIGNvbnN0CiB9CiAKICNpZiAhRU5BQkxFKENf
TE9PUCkKLWNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBDb2RlQmxvY2s6OmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSBjb25zdAotewotI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKGF1dG8qIGppdERh
dGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsKLSAgICAgICAgaWYgKGppdERhdGEtPm1faGFzQ2FsbGVl
U2F2ZVJlZ2lzdGVycykKLSAgICAgICAgICAgIHJldHVybiAmaml0RGF0YS0+bV9jYWxsZWVTYXZl
UmVnaXN0ZXJzOwotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAmUmVnaXN0ZXJBdE9mZnNldExp
c3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci19Ci0KLSAgICAKIHN0YXRp
YyBzaXplX3Qgcm91bmRDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoc2l6ZV90IGNh
bGxlZVNhdmVSZWdpc3RlcnMpCiB7CiAKQEAgLTI1MDIsOSArMjQ1Nyw5IEBAIHNpemVfdCBDb2Rl
QmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKQog
ICAgIHJldHVybiByb3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhudW1iZXJP
ZkxMSW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogfQogCi1zaXplX3QgQ29kZUJs
b2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKQorc2l6ZV90IENvZGVCbG9j
azo6Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0JiBjYWxsZWVTYXZlUmVnaXN0ZXJzKQogewotICAgIHJldHVybiByb3VuZENhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhjYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKSk7
CisgICAgcmV0dXJuIHJvdW5kQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKGNhbGxl
ZVNhdmVSZWdpc3RlcnMuc2l6ZSgpKTsKIH0KICNlbmRpZgogCkBAIC0zNTE1LDcgKzM0NzAsNyBA
QCBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6ZmluZFBDKHZvaWQqIHBjKQog
CiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAg
ICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CisgICAgICAgIGlmIChh
dXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewogICAgICAgICAgICAg
ICAgIGlmIChzdHViSW5mby5jb250YWluc1BDKHBjKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0dWJJbmZvLmNvZGVPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggYTFmNzkyYjViMDA3M2U0MTQxYjVmNGFiMDY2ZGUwY2E0YzFlYWM2
Ny4uNDkxYmI4ZWUwNWIxNTk3M2Q1OWRkMzYzYTg0MDU2NDViNmMyYzFkZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTUsNiArOTUsNyBAQCBjbGFz
cyBNZXRhZGF0YVRhYmxlOwogY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiBjbGFzcyBTdHJ1
Y3R1cmVTdHViSW5mbzsKIGNsYXNzIEJhc2VsaW5lSklUQ29kZTsKK2NsYXNzIEJhc2VsaW5lSklU
RGF0YTsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQ29kZUJsb2Nr
UmFyZURhdGEpOwogCkBAIC0yNDYsNyArMjQ3LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+IGJ5dGVjb2RlSW5k
ZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4KTsKIAotICAgIC8vIEJlY2F1c2Ugd2Ug
bWlnaHQgdGhyb3cgb3V0IGJhc2VsaW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2VsaW5lIEpJ
VCBkYXRhIChtX2ppdERhdGEpLAorICAgIC8vIEJlY2F1c2Ugd2UgbWlnaHQgdGhyb3cgb3V0IGJh
c2VsaW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2VsaW5lIEpJVCBkYXRhIChtX2Jhc2VsaW5l
SklURGF0YSksCiAgICAgLy8geW91IG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCB0aGUgbGlmZXRp
bWUgb2Ygd2hlbiB5b3UgdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbi4KICAg
ICAvLyBUaGUgcmV0dXJuIHZhbHVlIG1heSBoYXZlIHJhdyBwb2ludGVycyBpbnRvIHRoaXMgZGF0
YSBzdHJ1Y3R1cmUgdGhhdCBnZXRzIHRocm93biBhd2F5LgogICAgIC8vIFNwZWNpZmljYWxseSwg
eW91IG5lZWQgdG8gZW5zdXJlIHRoYXQgbm8gR0MgY2FuIGJlIGZpbmFsaXplZCAodHlwaWNhbGx5
IHRoYXQgbWVhbnMgbm8KQEAgLTI1NSwyOSArMjU2LDkgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChJQ1N0YXR1c01hcCYgcmVzdWx0
KTsKICAgICAKICNpZiBFTkFCTEUoSklUKQotICAgIHN0cnVjdCBKSVREYXRhIHsKLSAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwotCi0gICAgICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZVN0dWJJ
bmZvPiBtX3N0dWJJbmZvczsKLSAgICAgICAgYm9vbCBtX2hhc0NhbGxlZVNhdmVSZWdpc3RlcnMg
eyBmYWxzZSB9OwotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCBtX2NhbGxlZVNhdmVSZWdp
c3RlcnM7Ci0KLSAgICAgICAgRml4ZWRWZWN0b3I8dm9pZCo+IG1faml0Q29uc3RhbnRQb29sOwot
ICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSklUQ29uc3RhbnRQb29sKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpJVERhdGEsIG1faml0Q29uc3RhbnRQb29sKTsgfQotICAgIH07
Ci0KICAgICB2b2lkIHNldHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJ
VENvZGU+KTsKIAotICAgIEpJVERhdGEmIGVuc3VyZUpJVERhdGEoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiBsb2NrZXIpCi0gICAgewotICAgICAgICBpZiAoTElLRUxZKG1faml0RGF0YSkpCi0g
ICAgICAgICAgICByZXR1cm4gKm1faml0RGF0YTsKLSAgICAgICAgcmV0dXJuIGVuc3VyZUpJVERh
dGFTbG93KGxvY2tlcik7Ci0gICAgfQotICAgIEpJVERhdGEmIGVuc3VyZUpJVERhdGFTbG93KGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOwotCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZkpJVERhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2ppdERhdGEp
OyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkJhc2VsaW5lSklURGF0YSgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fYmFzZWxpbmVKSVREYXRhKTsgfQogCiAg
ICAgU3RydWN0dXJlU3R1YkluZm8qIGFkZE9wdGltaXppbmdTdHViSW5mbyhBY2Nlc3NUeXBlLCBD
b2RlT3JpZ2luKTsKIApAQCAtMjkzLDE1ICsyNzQsMTIgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyh2b2lk
KiBwYyk7CiAKLSAgICB2b2lkIHNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQpOwot
ICAgIHZvaWQgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlckF0T2Zmc2V0TGlzdCYmKTsK
LQogICAgIC8vIFdlIGNhbGwgdGhpcyB3aGVuIHdlIHdhbnQgdG8gcmVhdHRlbXB0IGNvbXBpbGlu
ZyBzb21ldGhpbmcgd2l0aCB0aGUgYmFzZWxpbmUgSklULiBJZGVhbGx5CiAgICAgLy8gdGhlIGJh
c2VsaW5lIEpJVCB3b3VsZCBub3QgYWRkIGRhdGEgdG8gQ29kZUJsb2NrLCBidXQgaW5zdGVhZCBp
dCB3b3VsZCBwdXQgaXRzIGRhdGEgaW50bwogICAgIC8vIGEgbmV3bHkgY3JlYXRlZCBKSVRDb2Rl
LCB3aGljaCBjb3VsZCBiZSB0aHJvd24gYXdheSBpZiB3ZSBiYWlsIG9uIEpJVCBjb21waWxhdGlv
bi4gVGhlbiB3ZQogICAgIC8vIHdvdWxkIGJlIGFibGUgdG8gZ2V0IHJpZCBvZiB0aGlzIHNpbGx5
IGZ1bmN0aW9uLgogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU5MDYxCi0gICAgdm9pZCByZXNldEpJVERhdGEoKTsKKyAgICB2b2lkIHJlc2V0
QmFzZWxpbmVKSVREYXRhKCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIHZvaWQgdW5s
aW5rSW5jb21pbmdDYWxscygpOwpAQCAtNTU0LDEwICs1MzIsMTAgQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBTaW1wbGVKdW1wVGFibGUm
IGJhc2VsaW5lU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KTsKICAgICBTdHJpbmdKdW1w
VGFibGUmIGJhc2VsaW5lU3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KTsKLSAg
ICB2b2lkKiBiYXNlbGluZUpJVENvbnN0YW50UG9vbCgpCisgICAgQmFzZWxpbmVKSVREYXRhKiBi
YXNlbGluZUpJVERhdGEoKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9qaXREYXRh
ICYmIGppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7Ci0gICAgICAgIHJldHVybiBt
X2ppdERhdGEtPm1faml0Q29uc3RhbnRQb29sLnN0b3JhZ2UoKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgcmV0dXJu
IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpOwogICAgIH0KICNlbmRpZgogICAgIHNpemVfdCBudW1i
ZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRD
b2RlLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyB9CkBAIC02MzMsMTUgKzYx
MSwxMyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGNvdW50
UmVvcHRpbWl6YXRpb24oKTsKIAogI2lmICFFTkFCTEUoQ19MT09QKQotICAgIGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3Q7Ci0KICAgICBzdGF0
aWMgdW5zaWduZWQgbnVtYmVyT2ZMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpIHsg
cmV0dXJuIFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpLm51
bWJlck9mU2V0UmVnaXN0ZXJzKCk7IH0KICAgICBzdGF0aWMgc2l6ZV90IGxsaW50QmFzZWxpbmVD
YWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBzaXplX3QgY2FsbGVlU2F2
ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgc3RhdGljIHNpemVfdCBjYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmKTsKICNl
bHNlCiAgICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mTExJbnRCYXNlbGluZUNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIHNpemVfdCBsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkgeyByZXR1cm4gMTsgfTsKLSAgICBz
aXplX3QgY2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkgeyByZXR1cm4gMDsgfQor
ICAgIHN0YXRpYyBzaXplX3QgY2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKGNvbnN0
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JikgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoSklUKQpAQCAtOTYwLDcgKzkzNiw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5BQkxFKEpJVCkKIHB1
YmxpYzoKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SklURGF0YT4gbV9qaXREYXRhOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxCYXNlbGluZUpJVERhdGE+IG1fYmFzZWxpbmVKSVREYXRhOwogcHJpdmF0ZToK
ICNlbmRpZgogI2lmIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlcGF0Y2guY3BwCmluZGV4IDIzNDFjMDNiYjFmZDk4NmE1OTI3NGZiMjk0M2FhYTU1YzAy
YjRiMGEuLmFiNmM5MjQwNjViZWE5OTg3NGU2YzdkZDQ3MmRiYjE5MWU4MDhjZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTE3NTgsOCArMTc1OCw4
IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAKICAgICBpZiAoIWZyYW1lU2h1ZmZsZXIgJiYg
Y2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkgewogICAgICAgICAvLyBXZSBzdHJvbmdseSBhc3N1
bWUgdGhhdCBjYWxsZWVHUFIgaXMgbm90IGEgY2FsbGVlIHNhdmUgcmVnaXN0ZXIgaW4gdGhlIHNs
b3cgcGF0aC4KLSAgICAgICAgQVNTRVJUKCFjYWxsZXJDb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdp
c3RlcnMoKS0+ZmluZChjYWxsZWVHUFIpKTsKLSAgICAgICAgc3R1YkppdC5lbWl0UmVzdG9yZUNh
bGxlZVNhdmVzKCk7CisgICAgICAgIEFTU0VSVCghY2FsbGVyQ29kZUJsb2NrLT5qaXRDb2RlKCkt
PmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+ZmluZChjYWxsZWVHUFIpKTsKKyAgICAgICAgc3R1Ykpp
dC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNhbGxlckNvZGVCbG9jay0+aml0Q29kZSgpLT5j
YWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgIH0KIAogICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3Qgc2xvd1BhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
aW5kZXggNDk5N2JkNGJiOTBlNTkzNzIyOTBjMGVhYjI4NjhiNmMxODEyOWE3YS4uODk0N2NiZTlh
M2M1MjE3NmEyZDQ1MzQ3ODgyOTYyZTk1YzFlMzhmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMzAyLDYgKzMwMiwxNiBAQCBjbGFzcyBKSVRDb21w
aWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogCiAgICAgVk0mIHZtKCkgeyByZXR1cm4gbV9n
cmFwaC5tX3ZtOyB9CiAKKyAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKQorICAgIHsK
KyAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcigmUmVnaXN0ZXJBdE9mZnNldExpc3Q6
OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgfQorCisgICAgdm9pZCBlbWl0U2F2ZUNh
bGxlZVNhdmVzKCkKKyAgICB7CisgICAgICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoJlJlZ2lz
dGVyQXRPZmZzZXRMaXN0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIH0KKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgT1NSRXhpdEp1bXBQbGFjZWhvbGRlcjsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKaW5kZXggZTc2MzcxYzA1MmNk
MTIzODA4MTlhN2E0YTU2OWJiZmZmOGQwZjdkYy4uMTEzMmNmMGQ5ZjY1YjEzOTdmZWI5ZWI5NTcx
NDFlYjRkMTE1ODVmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5j
cHAKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoVk0mIHZtLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjbwogCiAgICAgLy8g
NikgQ29weSBvdXIgY2FsbGVlIHNhdmVzIHRvIGJ1ZmZlci4KICNpZiBOVU1CRVJfT0ZfQ0FMTEVF
X1NBVkVTX1JFR0lTVEVSUyA+IDAKLSAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVn
aXN0ZXJTYXZlTG9jYXRpb25zID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Cisg
ICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucyA9IGNv
ZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgUmVnaXN0ZXJB
dE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJl
Z2lzdGVyT2Zmc2V0cygpOwogICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVn
aXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCAyOWI1ZTE1NzIwOWY3Mjg0MDNhZTMxODQy
YzJlYjRlNzI3NzYzN2E5Li44OWFlNzNmMjNkYTU3YzczZWUxMDU2MTRiYzY3NDdlZDAxOTI1NWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTczOCw4ICs3
MzgsOCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYg
dm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgIENDYWxsSGVscGVyczo6ZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwog
CiAgICAgLy8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRoZSBv
bmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4KLSAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZl
cygpOwotICAgIGppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVCbG9j
aygpKTsKKyAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihqaXQuY29kZUJsb2NrKCkt
PmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBqaXQuZW1pdFNhdmVDYWxs
ZWVTYXZlc0ZvcihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+aml0Q29kZSgpLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCkpOwogCiAgICAgLy8gVGhlIHRhZyByZWdpc3RlcnMgYXJlIG5lZWRlZCB0byBt
YXRlcmlhbGl6ZSByZWNvdmVyaWVzIGJlbG93LgogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVUYWdD
aGVja1JlZ2lzdGVycygpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGls
ZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29u
c3QKICAgICAgICAgaWYgKG9wZXJhbmQuaXNUbXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSAmJiBvcGVyYW5kLnRvTG9jYWwoKSA8IHN0
YXRpY19jYXN0PGludD4oaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmNhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycygpKSkKKyAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpICYmIG9w
ZXJhbmQudG9Mb2NhbCgpIDwgc3RhdGljX2Nhc3Q8aW50PihDb2RlQmxvY2s6OmNhbGxlZVNhdmVT
cGFjZUFzVmlydHVhbFJlZ2lzdGVycygqaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmppdENvZGUo
KS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggZTcy
MmY5ZWJkYWNjODkzNjkwNjU2ZDViNjNlOWY2MjQ0NDYxNWY0My4uMTgyMjIzOTZjZjQ1ZTdhZTdj
M2IxMDNjNGVmYTk2ZmFhNzQxOGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJu
UEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvCiAKIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxsZWVT
YXZlU2xvdChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgQ29kZUJsb2NrKiBiYXNl
bGluZUNvZGVCbG9jaywgR1BSUmVnIGNhbGxlZVNhdmUpCiB7Ci0gICAgY29uc3QgUmVnaXN0ZXJB
dE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gYmFzZWxpbmVDb2RlQmxvY2stPmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMg
PSBiYXNlbGluZUNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNhdmVzLT5zaXplKCk7IGkrKykgewog
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwogICAg
ICAgICBpZiAoZW50cnkucmVnKCkgIT0gY2FsbGVlU2F2ZSkKQEAgLTMxNCw3ICszMTQsNyBAQCB2
b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4
aXRCYXNlJiBleGl0KQogICAgICAgICB9IGVsc2UgaWYgKHRydWVDYWxsZXIpIHsKICAgICAgICAg
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBqaXQuYmFzZWxpbmVD
b2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwogICAgICAgICAgICAgaml0LnN0b3JlUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+bWV0YWRh
dGFUYWJsZSgpKSwgY2FsbGVlU2F2ZVNsb3QoaW5saW5lQ2FsbEZyYW1lLCBiYXNlbGluZUNvZGVC
bG9jaywgSklUOjpzX21ldGFkYXRhR1BSKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmVQdHIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5iYXNl
bGluZUpJVENvbnN0YW50UG9vbCgpKSwgY2FsbGVlU2F2ZVNsb3QoaW5saW5lQ2FsbEZyYW1lLCBi
YXNlbGluZUNvZGVCbG9jaywgSklUOjpzX2NvbnN0YW50c0dQUikpOworICAgICAgICAgICAgaml0
LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihiYXNlbGluZUNvZGVCbG9ja0Zv
ckNhbGxlci0+YmFzZWxpbmVKSVREYXRhKCkpLCBjYWxsZWVTYXZlU2xvdChpbmxpbmVDYWxsRnJh
bWUsIGJhc2VsaW5lQ29kZUJsb2NrLCBKSVQ6OnNfY29uc3RhbnRzR1BSKSk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCkBAIC00MDcsNyAr
NDA3LDcgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0
aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGNvZGVCbG9ja0ZvckV4aXQtPm1ldGFkYXRhVGFibGUoKSksIEpJVDo6c19tZXRhZGF0YUdQUik7
Ci0gICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxvY2tG
b3JFeGl0LT5iYXNlbGluZUpJVENvbnN0YW50UG9vbCgpKSwgSklUOjpzX2NvbnN0YW50c0dQUik7
CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxvY2tG
b3JFeGl0LT5iYXNlbGluZUpJVERhdGEoKSksIEpJVDo6c19jb25zdGFudHNHUFIpOwogCiAgICAg
ICAgIEJ5dGVjb2RlSW5kZXggZXhpdEluZGV4ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCgpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZGVz
dGluYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBjMmJiZDVl
OWMzZTgzNWRhOTFlOTYxNWVlMWY4M2Y4MzZkZDA2ZGRkLi5hNDkzYmUzNGFmNTEzMDhkMmJkZjE5
MzQwZDk4MjljZWMzNDYzMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAK
QEAgLTE5OCw4ICsxOTgsNiBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUlu
VGhyZWFkSW1wbCgpCiAgICAgICAgIHBhcnNlKGRmZyk7CiAgICAgfQogCi0gICAgbV9jb2RlQmxv
Y2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdp
c3RlcnMoKSk7Ci0KICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKIAogI2RlZmluZSBSVU5fUEhB
U0UocGhhc2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAppbmRleCAyZDgwNTZmNjNjM2EyMjczZGNiMzhiOTNjMzMwNTQwNWE5NGY5NGI1Li43ZmI1NjUy
MzMyZjljNjBmNjIyMjg2ZmVhYTllNTZiYTYzMjdmNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTc0MSw3ICs3
NDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51bUFsbG9jYXRlZEFy
Z3M7ICsraSkKICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5hcmdzW2ldID0gVmFsdWVSZWNv
dmVyeTo6Y29uc3RhbnQoanNVbmRlZmluZWQoKSk7CiAKLSAgICAgICAgICAgIHNodWZmbGVEYXRh
LnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2ppdC5jb2RlQmxvY2soKSk7CisgICAgICAgICAg
ICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoJlJlZ2lzdGVyQXRPZmZzZXRM
aXN0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBhc3Nl
ZEFyZ3MpLCBtX2ppdC5jYWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMTM1YzEyNjNhYjRhNmFh
NTU0ZDA2YmRkMGIzNTg0M2MyY2RlOTViMC4uMDc4YmJlMzllYWJiNWUzZWQyYzhjYjhjMTgwMmMw
NThmYjM2Y2FmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCkBAIC04NDIsNyArODQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBh
c3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAgc2h1
ZmZsZURhdGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVkKCkp
OwogCi0gICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMobV9q
aXQuY29kZUJsb2NrKCkpOworICAgICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZl
UmVnaXN0ZXJzKCZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgSklUQ29tcGlsZXI6OmNhbGxlZUZy
YW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91
dFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFz
ZS5jcHAKaW5kZXggOTY0OWJmMmFiMzdjOWM1ZGZmYmM5ZDQ2NjU0MDgxNmZlMGZiYTU2Yi4uOTFj
YzhmMzRlNjRlZGM3NDg2OWM2ZWVkZTQxMTgyMDg4MmI2NTFkYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWxsb2NhdGlvbih1c2VkT3BlcmFu
ZHMuc2l6ZSgpKTsKLSAgICAgICAgbV9ncmFwaC5tX25leHRNYWNoaW5lTG9jYWwgPSBjb2RlQmxv
Y2soKS0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgICAgIG1fZ3Jh
cGgubV9uZXh0TWFjaGluZUxvY2FsID0gQ29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMoUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMo
KSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1c2VkT3BlcmFuZHMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgICAgIGlmICghdXNlZE9wZXJhbmRzLmdldEZvck9wZXJhbmRJbmRl
eChpKSkgewogICAgICAgICAgICAgICAgIGFsbG9jYXRpb25baV0gPSBVSU5UX01BWDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDliOThkNTQ3NjMxODM4NmFm
YjJmZWNmOGVlMWQyNjAyYWFmYWRlZTcuLjNiNGNhMWQxNTc1ZDUwYmJmZTFjNGI3YWI4MmYxOWVh
YzkwNjJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGls
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAt
NzcsNyArNzcsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3Vs
dCYgc2FmZXBvaW50UmVzdWx0KQogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHJlZ2lzdGVyT2Zm
c2V0cyA9IHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpOwogICAg
IGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKICAgICAgICAgZGF0YUxvZyh0aWVyTmFtZSwg
IlVud2luZCBpbmZvIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVFR5
cGU6OkZUTEpJVCksICI6ICIsIHJlZ2lzdGVyT2Zmc2V0cywgIlxuIik7Ci0gICAgY29kZUJsb2Nr
LT5zZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFdURk1vdmUocmVnaXN0ZXJPZmZzZXRzKSk7CisgICAg
c3RhdGUuaml0Q29kZS0+bV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJBdE9mZnNldExp
c3QoV1RGTW92ZShyZWdpc3Rlck9mZnNldHMpKTsKICAgICBBU1NFUlQoIShzdGF0ZS5wcm9jLT5m
cmFtZVNpemUoKSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKICAgICBzdGF0ZS5qaXRDb2Rl
LT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50ID0gc3RhdGUucHJvYy0+ZnJhbWVTaXplKCkgLyBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29k
ZS5oCmluZGV4IDlmNTAyM2RhMWRiNDI0NTVmYTA1NDdkMTE1MTVjYzk3YzcwN2M5ZDcuLjYwZmU5
NDRkMDhkZjVmM2ZkNTAyNjExZjVkMjMxYWQ2ODMzYWJjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklUQ29kZS5oCkBAIC03MCw5ICs3MCwxMiBAQCBjbGFzcyBKSVRDb2RlIDogcHVi
bGljIEpTQzo6SklUQ29kZSB7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdChjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImKSBvdmVycmlkZTsKIAogICAgIFBDVG9Db2RlT3JpZ2luTWFwKiBwY1RvQ29kZU9y
aWdpbk1hcCgpIG92ZXJyaWRlIHsgcmV0dXJuIGNvbW1vbi5tX3BjVG9Db2RlT3JpZ2luTWFwLmdl
dCgpOyB9CisKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZVJlZ2lz
dGVycygpIGNvbnN0IHsgcmV0dXJuICZtX2NhbGxlZVNhdmVSZWdpc3RlcnM7IH0KICAgICAKICAg
ICBERkc6OkNvbW1vbkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxPU1JFeGl0PiBtX29zckV4aXQ7
CisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwogICAgIFNl
Z21lbnRlZFZlY3RvcjxPU1JFeGl0RGVzY3JpcHRvciwgOD4gb3NyRXhpdERlc2NyaXB0b3JzOwog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TGF6eVNsb3dQYXRoPj4gbGF6eVNsb3dQYXRoczsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCA4ZGY0YjBmNjVmNTdmOWExNmZmZDAxNzRhODM1YmZkZmNlMmNjNTZkLi42MDllNmRkZjUx
ODE4YzVjMGE1MWRmNjk1ODA3MmRlNGVjODhkYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMDM5NSw3ICsxMDM5NSw3IEBAIElHTk9S
RV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRh
LmFyZ3MuYXBwZW5kKFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVkKCkpKTsKICAg
ICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFzc2VkQXJncyA9IG51bVBhc3NlZEFy
Z3M7CiAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bVBhcmFtZXRlcnMgPSBqaXQu
Y29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsKLSAgICAgICAgICAgICAgICAgICAgc2h1ZmZs
ZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKGppdC5jb2RlQmxvY2soKSk7CisgICAgICAg
ICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGF0ZS0+
aml0Q29kZS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5j
b21tb24uYWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6RGlyZWN0VGFpbENh
bGwsIEludmFsaWRHUFJSZWcpOwpAQCAtMTA1NTUsNyArMTA1NTUsNyBAQCBJR05PUkVfQ0xBTkdf
V0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFzc2VkQXJncyA9
IG51bUFyZ3M7CiAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFyYW1ldGVycyA9IGpp
dC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOwogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhqaXQuY29kZUJs
b2NrKCkpOworICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lz
dGVycyhzdGF0ZS0+aml0Q29kZS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAgICAgICAg
ICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkQ2Fs
bExpbmtJbmZvKGNvZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0
VXBDYWxsKENhbGxMaW5rSW5mbzo6VGFpbENhbGwsIEdQUkluZm86OnJlZ1QwKTsKQEAgLTEwOTA0
LDcgKzEwOTA0LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBkb25lOwogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxs
KSB7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gY2FsbExpbmtJbmZvLT5lbWl0VGFp
bENhbGxGYXN0UGF0aChqaXQsIEdQUkluZm86OnJlZ1QwLCBzY29wZWRMYW1iZGE8dm9pZCgpPihb
Jl17Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygp
OworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3Io
c3RhdGUtPmppdENvZGUtPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOwogICAgICAgICAgICAgICAgICAg
ICB9KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTEwOTE2LDcgKzEwOTE2LDcgQEAg
SUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhT
dGFydCA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCi0g
ICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAgICAg
ICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKHN0YXRlLT5qaXRDb2Rl
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihz
ZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICAgICAgICAgIGNh
bGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsKICAgICAgICAgICAgICAgICAKQEAg
LTExMTg1LDcgKzExMTg1LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lOwogICAgICAgICAgICAgICAgIGlmIChpc1Rh
aWxDYWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gY2FsbExpbmtJbmZvLT5l
bWl0VGFpbENhbGxGYXN0UGF0aChqaXQsIEdQUkluZm86OnJlZ1QwLCBzY29wZWRMYW1iZGE8dm9p
ZCgpPihbJl17Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVT
YXZlcygpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2
ZXNGb3Ioc3RhdGUtPmppdENvZGUtPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOwogICAgICAgICAgICAg
ICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTExMTk3LDcgKzExMTk3
LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIGF1dG8gc2xv
d1BhdGhTdGFydCA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENh
bGwpCi0gICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKHN0YXRlLT5q
aXRDb2RlLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgICAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwgaml0KTsKICAgICAgICAgICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBp
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cAppbmRleCA1MzkyMTM0YTNjODBiNWYwNTQ4MjFhMzlkYWU2YmUwZDgyM2ZhNzkzLi5mZTc5Zjc4
ZDM3NTBkNjM0ZGUyMzIzY2FkZGIwNmQ0MTdlODgzYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAg
c3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUq
IGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAq
ICgKICAgICAgICAgICAgIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy5zaXplKCkgKyBudW1N
YXRlcmlhbGl6YXRpb25zICsgbWF4TWF0ZXJpYWxpemF0aW9uTnVtQXJndW1lbnRzKSArCiAgICAg
ICAgIHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkgKwotICAgICAgICBjb2RlQmxv
Y2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+c2l6ZSgpICogc2l6ZW9mKHVpbnQ2NF90KSk7Cisg
ICAgICAgIGNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUo
KSAqIHNpemVvZih1aW50NjRfdCkpOwogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2Ny
YXRjaEJ1ZmZlciA/IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+
ZGF0YUJ1ZmZlcigpKSA6IG51bGxwdHI7CiAgICAgRW5jb2RlZEpTVmFsdWUqIG1hdGVyaWFsaXph
dGlvblBvaW50ZXJzID0gc2NyYXRjaCArIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy5zaXpl
KCk7CiAgICAgRW5jb2RlZEpTVmFsdWUqIG1hdGVyaWFsaXphdGlvbkFyZ3VtZW50cyA9IG1hdGVy
aWFsaXphdGlvblBvaW50ZXJzICsgbnVtTWF0ZXJpYWxpemF0aW9uczsKQEAgLTM5MCw4ICszOTAs
OCBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4aXRJRCwgSklU
Q29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgIAogICAgIC8vIEJlZm9yZSB3ZSBzdGFy
dCBtZXNzaW5nIHdpdGggdGhlIGZyYW1lLCB3ZSBuZWVkIHRvIHNldCBhc2lkZSBhbnkgcmVnaXN0
ZXJzIHRoYXQgdGhlCiAgICAgLy8gRlRMIGNvZGUgd2FzIHByZXNlcnZpbmcuCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKTsgaS0t
OykgewotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY29kZUJsb2NrLT5jYWxsZWVT
YXZlUmVnaXN0ZXJzKCktPmF0KGkpOworICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+
aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKTsgaS0tOykgeworICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKS0+YXQoaSk7CiAgICAgICAgIGppdC5sb2FkNjQoCiAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIsIGVudHJ5Lm9mZnNldCgpKSwKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKQEAgLTQw
Miw3ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4
aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogCiAgICAgLy8gRmlyc3Qgc2V0
IHVwIFNQIHNvIHRoYXQgb3VyIGRhdGEgZG9lc24ndCBnZXQgY2xvYmJlcmVkIGJ5IHNpZ25hbHMu
CiAgICAgdW5zaWduZWQgY29uc2VydmF0aXZlU3RhY2tEZWx0YSA9Ci0gICAgICAgIChleGl0Lm1f
ZGVzY3JpcHRvci0+bV92YWx1ZXMubnVtYmVyT2ZMb2NhbHMoKSArIGJhc2VsaW5lQ29kZUJsb2Nr
LT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkgKiBzaXplb2YoUmVnaXN0ZXIp
ICsKKyAgICAgICAgKGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy5udW1iZXJPZkxvY2Fscygp
ICsgQ29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKmJhc2VsaW5l
Q29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSkpICogc2l6ZW9mKFJl
Z2lzdGVyKSArCiAgICAgICAgIG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsOwogICAgIGNv
bnNlcnZhdGl2ZVN0YWNrRGVsdGEgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCiAgICAgICAg
IHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgY29uc2VydmF0aXZlU3RhY2tEZWx0YSk7CkBAIC00MTIs
MTMgKzQxMiwxMyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4
aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgIGppdC5jaGVja1N0YWNr
UG9pbnRlckFsaWdubWVudCgpOwogCiAgICAgUmVnaXN0ZXJTZXQgYWxsRlRMQ2FsbGVlU2F2ZXMg
PSBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAgIGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBiYXNlbGluZUNhbGxlZVNhdmVzID0gYmFzZWxpbmVDb2RlQmxvY2st
PmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCog
YmFzZWxpbmVDYWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5qaXRDb2RlKCktPmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKTsKIAogICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVn
IDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7CiAgICAgICAgIGlmICghYWxsRlRM
Q2FsbGVlU2F2ZXMuZ2V0KHJlZykpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
Ci0gICAgICAgIHVuc2lnbmVkIHVud2luZEluZGV4ID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVn
aXN0ZXJzKCktPmluZGV4T2YocmVnKTsKKyAgICAgICAgdW5zaWduZWQgdW53aW5kSW5kZXggPSBj
b2RlQmxvY2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5pbmRleE9mKHJlZyk7
CiAgICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQqIGJhc2VsaW5lUmVnaXN0ZXJPZmZzZXQg
PSBiYXNlbGluZUNhbGxlZVNhdmVzLT5maW5kKHJlZyk7CiAKICAgICAgICAgaWYgKHJlZy5pc0dQ
UigpKSB7CkBAIC00NTMsNyArNDUzLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZt
LCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHNpemVfdCBiYXNlbGluZVZpcnR1YWxSZWdpc3RlcnNGb3JDYWxs
ZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMoKTsKKyAgICBzaXplX3QgYmFzZWxpbmVWaXJ0dWFsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2
ZXMgPSBDb2RlQmxvY2s6OmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygqYmFzZWxp
bmVDb2RlQmxvY2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAgIGlm
IChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFja0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCgp
KSB7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIGV4aXQu
bV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggOTY0MmRhMWMzYmRl
OTM2YzM2NjFlMjdmMTY4Yzk5MmJlZmQyNTQ4MS4uODkyMWJiYjE3NzkwMzg3NjAwN2ZlNzg0NDJk
ZTkxODQ3OWQwOTdiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJl
Z2lzdGVyQXRPZmZzZXRMaXN0PiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0
ZXJzRm9yVQogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogICAgIGlmIChDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpKQotICAgICAgICByZXR1cm4gKmNvZGVC
bG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgICAgICByZXR1cm4gKmNvZGVCbG9jay0+
aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAKICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
CmluZGV4IDllNGY3MTQ4ZmE1YWYzZDJiMjIyMTNlMzkwZmE2MjFlMjgxNzdhN2YuLmRlOGQ2NTNk
ZDgyYmE2Yzk3ODdiY2IwZDE5NWZlMmI1YzRjZTg3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTQ1LDExICs0NSwxMSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotRXhlY3V0YWJsZUJhc2UqIEFzc2VtYmx5SGVscGVyczo6ZXhlY3V0YWJs
ZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQorRXhlY3V0YWJsZUJhc2UqIEFzc2Vt
Ymx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbikKIHsKICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOwogICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAg
ICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOworICAgICAgICByZXR1
cm4gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKICAgICByZXR1cm4gaW5saW5lQ2FsbEZy
YW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CiB9CiAKQEAgLTEzNzIs
NyArMTM3Miw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9yQ29weUxMSW50QmFz
ZWxpbmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChjb2RlQmxvY2ssIGNvZGVCbG9jayk7CiAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVD
b2RlKGNvZGVCbG9jay0+aml0VHlwZSgpKSk7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Y2FsbGVl
U2F2ZVJlZ2lzdGVycygpID09ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0Q29kZSgpLT5j
YWxsZWVTYXZlUmVnaXN0ZXJzKCkgPT0gJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2Vs
aW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0KiBjYWxsZWVTYXZlcyA9ICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9
IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDk4MmU0NWFhYWU1NmIyNmQx
Zjg1OWVlNzI4ZjZiZDcyN2YzMjMzNDMuLjIzZTA4NzE4ZGJmODIwNDIzNWUzOTlhYTY1Y2IwZDk5
MDgyOTcxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aApAQCAtMzE2LDM1ICszMTYsMTQgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1h
Y3JvQXNzZW1ibGVyIHsKICAgICB2b2lkIGVtaXRTYXZlKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0Jik7CiAgICAgdm9pZCBlbWl0UmVzdG9yZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYp
OwogCi0gICAgdm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUJsb2Nr
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0KLSAgICAgICAgY29uc3QgUmVn
aXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVn
aXN0ZXJzKCk7Ci0gICAgICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoY2FsbGVlU2F2ZXMpOwot
ICAgIH0KLQogICAgIHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihjb25zdCBSZWdpc3RlckF0
T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMpOwogICAgIAogICAgIGVudW0gUmVzdG9yZVRhZ1JlZ2lz
dGVyTW9kZSB7IFVzZUV4aXN0aW5nVGFnUmVnaXN0ZXJDb250ZW50cywgQ29weUJhc2VsaW5lQ2Fs
bGVlU2F2ZWRSZWdpc3RlcnNGcm9tQmFzZUZyYW1lIH07CiAKICAgICB2b2lkIGVtaXRTYXZlT3JD
b3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayosIFZpcnR1YWxSZWdpc3Rl
ciBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIsIFJlc3RvcmVUYWdSZWdpc3Rlck1vZGUsIEdQUlJlZyB0
ZW1wMSwgR1BSUmVnIHRlbXAyLCBHUFJSZWcgdGVtcDMpOwotICAgIAotICAgIHZvaWQgZW1pdFJl
c3RvcmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChjb2RlQmxvY2spOwotCi0gICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0
KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAgICAg
ICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNhbGxlZVNhdmVzKTsKLSAgICB9CiAKICAgICB2
b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGNhbGxlZVNhdmVzKTsKIAotICAgIHZvaWQgZW1pdFNhdmVDYWxsZWVTYXZlcygpCi0gICAgewot
ICAgICAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvZGVCbG9jaygpKTsKLSAgICB9Ci0KICAg
ICB2b2lkIGVtaXRTYXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKCkKICAgICB7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKQEAgLTM1NywxMSArMzM2LDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJz
IDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgZW1pdE1hdGVyaWFsaXplVGFnQ2hl
Y2tSZWdpc3RlcnMoKTsKICNlbmRpZgogICAgIH0KLSAgICAKLSAgICB2b2lkIGVtaXRSZXN0b3Jl
Q2FsbGVlU2F2ZXMoKQotICAgIHsKLSAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0Zvcihj
b2RlQmxvY2soKSk7Ci0gICAgfQogCiAgICAgdm9pZCBlbWl0UmVzdG9yZVNhdmVkVGFnUmVnaXN0
ZXJzKCkKICAgICB7CkBAIC0xNTgwLDcgKzE1NTQsNyBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMg
OiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsKICAgICB9CiAgICAgCi0gICAgRXhlY3V0YWJsZUJh
c2UqIGV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbik7CisgICAgRXhl
Y3V0YWJsZUJhc2UqIGV4ZWN1dGFibGVGb3IoQ29kZUJsb2NrKiwgY29uc3QgQ29kZU9yaWdpbiYp
OwogICAgIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Jhc2VsaW5lSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNl
bGluZUpJVENvZGUuaAppbmRleCAzMDAzYjA3MzUwMTg4ZTVmNzNmY2M5NjcyMGQ2YTllNzQxZjhi
Y2I1Li42NjFkZWVkY2FmZjVlODc2YjVkOTViY2Y5ODdjMGFlNDU4NmI5NmZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Jhc2VsaW5lSklUQ29kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRDb2RlLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVk
ZSAiSklUQ29kZU1hcC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaD4KIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xMDIs
NiArMTAzLDI1IEBAIGNsYXNzIEJhc2VsaW5lSklUQ29kZSA6IHB1YmxpYyBEaXJlY3RKSVRDb2Rl
LCBwdWJsaWMgTWF0aElDSG9sZGVyIHsKICAgICBib29sIG1faXNTaGFyZWFibGUgeyB0cnVlIH07
CiB9OwogCitjbGFzcyBCYXNlbGluZUpJVERhdGEgZmluYWwgOiBwdWJsaWMgVHJhaWxpbmdBcnJh
eTxCYXNlbGluZUpJVERhdGEsIHZvaWQqPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB1
c2luZyBCYXNlID0gVHJhaWxpbmdBcnJheTxCYXNlbGluZUpJVERhdGEsIHZvaWQqPjsKKworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QmFzZWxpbmVKSVREYXRhPiBjcmVhdGUodW5zaWduZWQg
cG9vbFNpemUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEJhc2VsaW5l
SklURGF0YT4geyBuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUo
cG9vbFNpemUpKSkgQmFzZWxpbmVKSVREYXRhKHBvb2xTaXplKSB9OworICAgIH0KKworICAgIGV4
cGxpY2l0IEJhc2VsaW5lSklURGF0YSh1bnNpZ25lZCBzaXplKQorICAgICAgICA6IEJhc2Uoc2l6
ZSkKKyAgICB7CisgICAgfQorCisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1f
c3R1YkluZm9zOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVm
ZmxlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVE
YXRhLmNwcAppbmRleCAzZGQ2ZTBjYjFiZjU3N2I5MzQzNDBiNDExN2E2NTU4YTkxMjk1MWM5Li44
MTgwZDZhYmE1NzQwNDAxYTJmY2FiMmQ1YTFmZGQ1M2M5YTIwNmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcApAQCAtMzQsMTEg
KzM0LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgQ2FsbEZyYW1lU2h1ZmZsZURhdGE6
OnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBz
ZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OwotfQotCiB2b2lkIENhbGxGcmFtZVNodWZmbGVEYXRhOjpzZXR1cENhbGxlZVNhdmVSZWdpc3Rl
cnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucykKIHsK
ICAgICBSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzIHsgUmVnaXN0ZXJTZXQ6OnZtQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nh
bGxGcmFtZVNodWZmbGVEYXRhLmgKaW5kZXggMGJjMTliOTlkNjFlNGJjYmI3MTllYTlmY2MxYmM4
YzM3ZmJmZWM1Zi4uNmNlYzA0NDZjMzBjMGVkZWY4MDljYWE4N2MwZTlkMTJiOGY4ZWI0MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaApA
QCAtNTMsNyArNTMsNiBAQCBzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgewogICAgIEdQUlJl
ZyBudW1iZXJUYWdSZWdpc3RlciB7IEludmFsaWRHUFJSZWcgfTsKICNlbmRpZgogCi0gICAgdm9p
ZCBzZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoQ29kZUJsb2NrKik7CiAgICAgdm9pZCBzZXR1cENh
bGxlZVNhdmVSZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqKTsKICAgICBWYWx1
ZVJlY292ZXJ5IGNhbGxlZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDMw
ZjNmMzZmNmVlZmQ4NzkwZGE4OTQ1NzhjOTRhYWEyMGM1OTk3Zi4uYzY0ZGRlZjIzZDRiMmQ2MjRm
YjczNDU5ZjA1NDdhZjU3ODg5NDY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAt
Mjc0LDggKzI3NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAg
ICAgaWYgKG9wY29kZUlEICE9IG9wX2NhdGNoKSB7CiAgICAgICAgICAgICBsb2FkUHRyKGFkZHJl
c3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwogICAgICAgICAgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mTWV0YWRhdGFUYWJsZSgpKSwg
cmVnVDEpOwotICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9m
ZnNldE9mSklURGF0YSgpKSwgcmVnVDApOwotICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBDb2RlQmxvY2s6OkpJVERhdGE6Om9mZnNldE9mSklUQ29uc3RhbnRQb29sKCkpLCByZWdU
Mik7CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0
T2ZCYXNlbGluZUpJVERhdGEoKSksIHJlZ1QyKTsKIAogICAgICAgICAgICAgYXV0byBtZXRhZGF0
YU9LID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMSwgc19tZXRhZGF0YUdQUik7CiAgICAgICAgICAg
ICBicmVha3BvaW50KCk7CkBAIC03MDIsOCArNzAxLDEyIEBAIHZvaWQgSklUOjplbWl0TWF0ZXJp
YWxpemVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycygpCiB7CiAgICAgbG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxlKCkpLCBzX21l
dGFkYXRhR1BSKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0
T2ZKSVREYXRhKCkpLCByZWdUMCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxv
Y2s6OkpJVERhdGE6Om9mZnNldE9mSklUQ29uc3RhbnRQb29sKCkpLCBzX2NvbnN0YW50c0dQUik7
CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVK
SVREYXRhKCkpLCBzX2NvbnN0YW50c0dQUik7Cit9CisKK3ZvaWQgSklUOjplbWl0U2F2ZUNhbGxl
ZVNhdmVzKCkKK3sKKyAgICBCYXNlOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKCZSZWdpc3RlckF0
T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiB9CiAKIHZv
aWQgSklUOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCkKQEAgLTc4Miw3ICs3ODUsNyBAQCB2b2lk
IEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVmZm9y
dCBlZmZvcnQpCiAgICAgbW92ZShyZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGNo
ZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKLSAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9y
KCZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMo
KSk7CisgICAgZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgIGVtaXRNYXRlcmlhbGl6ZVRhZ0No
ZWNrUmVnaXN0ZXJzKCk7CiAgICAgZW1pdE1hdGVyaWFsaXplTWV0YWRhdGFBbmRDb25zdGFudFBv
b2xSZWdpc3RlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZmYzODg3NDMzYzNk
NWQxY2NmMzY4YzZmM2VlOWUxYThhODg0NzY5OC4uODdjZTlkYzU5ZTFkMmU2OGNhZjg3NWMxNzY1
Y2FjNDk1MTJiODBkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC04OTMsNiArODkzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0TWF0ZXJpYWxpemVNZXRhZGF0
YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycygpOwogCisgICAgICAgIHZvaWQgZW1pdFNhdmVDYWxs
ZWVTYXZlcygpOwogICAgICAgICB2b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAogICAg
ICAgICBzdGF0aWMgYm9vbCByZXBvcnRDb21waWxlVGltZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuY3BwCmluZGV4IGIyZTNkY2M3MDgyOWE0N2U3OGVkYmViNDIwMzgwYzAwOGI0
YzY4ZjIuLmFiNjY0OWMyYmQzYjQzYzIyMjE2NTJlZjgxZmYxMTlhOWMyOGJkY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKIAorI2luY2x1ZGUgIkZUTEpJVENvZGUu
aCIKKwogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTk1LDYgKzk3LDI2IEBAIHZvaWQgSklUQ29kZTo6c2hyaW5rVG9GaXQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKIHsKIH0KIAorY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIEpJVENvZGU6
OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdAoreworICAgIHN3aXRjaCAoaml0VHlwZSgpKSB7
CisjaWYgRU5BQkxFKEZUTF9KSVQpCisgICAgY2FzZSBKSVRUeXBlOjpGVExKSVQ6CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBGVEw6OkpJVENvZGUqPih0aGlzKS0+Y2FsbGVlU2F2
ZVJlZ2lzdGVycygpOworI2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgY2FzZSBKSVRU
eXBlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmRmZ0Nh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisjaWYgIUVOQUJMRShD
X0xPT1ApCisgICAgICAgIHJldHVybiAmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisjZWxzZQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyNlbmRpZgorICAgIH0KK30KKwogSklUQ29kZVdpdGhDb2RlUmVmOjpKSVRDb2RlV2l0aENvZGVS
ZWYoSklUVHlwZSBqaXRUeXBlKQogICAgIDogSklUQ29kZShqaXRUeXBlKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENvZGUuaAppbmRleCA4ZTRjZTAzZjhlZWVjMzQwYmI2NjZmNTI3OWE2ODc2
ZGMyYzY4ODYwLi4zMDgzNzlmZTc4MDBlNDg0NDE3ZGU0ZDBiMTg4YmNhZmU0OGNmZjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNp
bmNsdWRlICJSZWdpc3RlclNldC5oIgogCiAKQEAgLTIyOCw2ICsyMjksOCBAQCBjbGFzcyBKSVRD
b2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKIAogICAgIHZpcnR1
YWwgUENUb0NvZGVPcmlnaW5NYXAqIHBjVG9Db2RlT3JpZ2luTWFwKCkgeyByZXR1cm4gbnVsbHB0
cjsgfQogCisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBKSVRUeXBlIG1faml0VHlwZTsKICAgICBTaGFy
ZUF0dHJpYnV0ZSBtX3NoYXJlQXR0cmlidXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAppbmRleCA1ODY0MTJiYzQ3ZWU2YmI3NDBlZjE1MjA4NGVmMmNhMjFhNmIxNTliLi4y
NmViMmFmZWNhZWY1YWU0ZTM3YmEwOTBmYzJiYTU4NjFhMjdmYTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNTA1LDcgKzUwNSw3IEBAIEFMV0FZU19JTkxJTkUg
dm9pZCBKSVQ6Om1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShjb25zdCBCeXRlY29kZSYg
Ynl0ZWNvZGUsCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxvYWRDb25zdGFudChKSVRDb25z
dGFudFBvb2w6OkNvbnN0YW50IGNvbnN0YW50SW5kZXgsIEdQUlJlZyByZXN1bHQpCiB7Ci0gICAg
bG9hZFB0cihBZGRyZXNzKHNfY29uc3RhbnRzR1BSLCBGaXhlZFZlY3Rvcjx2b2lkKj46OlN0b3Jh
Z2U6Om9mZnNldE9mRGF0YSgpICsgc3RhdGljX2Nhc3Q8dWludHB0cl90Pihjb25zdGFudEluZGV4
KSAqIHNpemVvZih2b2lkKikpLCByZXN1bHQpOworICAgIGxvYWRQdHIoQWRkcmVzcyhzX2NvbnN0
YW50c0dQUiwgQmFzZWxpbmVKSVREYXRhOjpvZmZzZXRPZkRhdGEoKSArIHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oY29uc3RhbnRJbmRleCkgKiBzaXplb2Yodm9pZCopKSwgcmVzdWx0KTsKIH0KIAog
QUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bG9hZEdsb2JhbE9iamVjdChHUFJSZWcgcmVzdWx0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYjlhZWZjYWU2ZmNl
NDBiNjdiYjQ3NTg2YzM3YWY4MGNhYWJmMWI4Ny4uOTAzMGJiNTNiMmFkZDYxYWUwOGEzMGM4N2M3
MWEzOGYxZjY3NGNhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CkBAIC0xMDY0LDggKzEwNjQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIFNvIHdlIHJlcGxlbmlzaCBpdCBo
ZXJlLgogICAgIHsKICAgICAgICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIHJlZ1QwKTsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxv
Y2s6Om9mZnNldE9mSklURGF0YSgpKSwgcmVnVDApOwotICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIENvZGVCbG9jazo6SklURGF0YTo6b2Zmc2V0T2ZKSVRDb25zdGFudFBvb2woKSksIHNf
Y29uc3RhbnRzR1BSKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6
Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKCkpLCBzX2NvbnN0YW50c0dQUik7CiAgICAgfQogCiAg
ICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uUmV0cmlldmVBbmRDbGVh
ckV4Y2VwdGlvbklmQ2F0Y2hhYmxlLCAmdm0oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwCmluZGV4IDhiMzkxMjZjNWI1NDJhMjMy
Y2RmMWMwMGZhZjJhYzBiZDZiYjUxNmEuLmVkODMwM2RlNDFiNTc0YWZjZTkyODk3Y2YwYTlkNWFk
ZWY0MDgxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJB
dE9mZnNldExpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJB
dE9mZnNldExpc3QuY3BwCkBAIC04MCw2ICs4MCwxNiBAQCBjb25zdCBSZWdpc3RlckF0T2Zmc2V0
TGlzdCYgUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0
ZQogICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CiB9CiAKK2NvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0JiBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCit7Cisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gcmVzdWx0OworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VLZXksIFtdIHsKKyAgICAgICAgcmVzdWx0LmNvbnN0cnVjdChSZWdpc3RlclNldDo6ZGZn
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0LmdldCgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRM
aXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmgK
aW5kZXggYTk5MDE3YzRhZWJmZTI5YWNkYzI2MWI5MmE2MzQ4NDEzMjc2NGMzZC4uZDExN2NmNzVl
MDk4ODg0ODNlNzY1ZTUyYTNlYzc2ZjIyMmE3MTM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuaApAQCAtNjYsNiArNjYsNyBAQCBjbGFz
cyBSZWdpc3RlckF0T2Zmc2V0TGlzdCB7CiAgICAgRml4ZWRWZWN0b3I8UmVnaXN0ZXJBdE9mZnNl
dD46OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJzLmVuZCgp
OyB9CiAKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBhbmQgT2Zmc2V0cyBzYXZlZCBh
bmQgdXNlZCBieSB0aGUgTExJbnQuCisgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0JiBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBhbmQgT2Zmc2V0cyBz
YXZlZCBhbmQgdXNlZCBieSBERkcuCiAKIHByaXZhdGU6CiAgICAgRml4ZWRWZWN0b3I8UmVnaXN0
ZXJBdE9mZnNldD4gbV9yZWdpc3RlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA2Zjc3NDA1ZDQ4ODljYzZjYjc4Y2U1OGFlMzQxMDA2
NTI4MzY3M2I4Li4zNTY2MWQ4MjI2ZmMxOWYyYjIzYWIyZjNiYjMwM2NlNDc3MTI0MmI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQ3
NywxMCArNDc3LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wobG9vcF9vc3IpCiAgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkg
JiYgY29kZUJsb2NrLT5sb29wSGludHNBcmVFbGlnaWJsZUZvckZ1enppbmdFYXJseVJldHVybigp
KSkgewogICAgICAgICB1aW50cHRyX3QqIHB0ciA9IHZtLmdldExvb3BIaW50RXhlY3V0aW9uQ291
bnRlcihwYyk7CiAgICAgICAgICpwdHIgKz0gY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVy
KCkubV9hY3RpdmVUaHJlc2hvbGQ7Ci0gICAgICAgIGlmICgqcHRyID49IE9wdGlvbnM6OmVhcmx5
UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCgpKSB7Ci0gICAgICAgICAgICBjb2RlQmxvY2st
PmVuc3VyZUpJVERhdGEoQ29uY3VycmVudEpTTG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKSk7IC8v
IFdlJ3JlIHJldHVybmluZyB0byB0aGUgT1NSIGVudHJ5IGNvZGUgaGVyZSwgd2hpY2ggZXhwZWN0
cyB0aGF0IG1faml0RGF0YSBpcyBub3QgbnVsbC4KKyAgICAgICAgaWYgKCpwdHIgPj0gT3B0aW9u
czo6ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCiAgICAgICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKExMSW50OjpmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludEVudHJ5cG9p
bnQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY2FsbEZyYW1lLT50b3BPZkZyYW1lKCkp
OwotICAgICAgICB9CiAgICAgfQogICAgIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDNlOTJjYTUwYWQwZDg4
YTI4ZTI1YzJkZTdkNjc1ODJlZGRhZGVhNDYuLjNiZWJkMTM2ZjJiYWJmY2QzMzlkNzIyZmQyY2Iy
MzMyOTQ2ZjVhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI2MTIsOCArMjYxMiw3IEBAIGlmIEpJVAogICAgIG1h
Y3JvIGxvYWRCYXNlbGluZUpJVENvbnN0YW50UG9vbCgpCiAgICAgICAgICMgQmFzZWxpbmUgdXNl
cyBMTEludCdzIFBCIHJlZ2lzdGVyIGZvciBpdHMgSklUIGNvbnN0YW50IHBvb2wuCiAgICAgICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faml0
RGF0YVtQQl0sIFBCCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6SklURGF0YTo6bV9qaXRDb25z
dGFudFBvb2wgKyBWb2lkUG9pbnRlckZpeGVkVmVjdG9yOjptX3N0b3JhZ2VbUEJdLCBQQgorICAg
ICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYmFzZWxpbmVKSVREYXRhW1BCXSwgUEIKICAgICBlbmQK
IAogICAgIG1hY3JvIHNldHVwUmV0dXJuVG9CYXNlbGluZUFmdGVyQ2hlY2twb2ludEV4aXRJZk5l
ZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAppbmRl
eCBiMWIzMTE3MzFhZDRjNzgxZDU3NzNjOTE1MzAzMmMzODlkOTI1ZjFmLi43ZTNhZTdkODk1ODJm
MjFlZTJkNjcwNGNlYjdiMGU0ZGZhZmZhYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9WTUluc3BlY3Rvci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIFZNSW5zcGVjdG9y
OjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIC0taXQ7CiAgICAgZGF0
YUxvZ0YoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAotICAgIHNpemVfdCBudW1iZXJPZkNh
bGxlZVNhdmVTbG90cyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0
ZXJzKCk7CisgICAgc2l6ZV90IG51bWJlck9mQ2FsbGVlU2F2ZVNsb3RzID0gQ29kZUJsb2NrOjpj
YWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKmNvZGVCbG9jay0+aml0Q29kZSgpLT5j
YWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgIGNvbnN0IFJlZ2lzdGVyKiBlbmRPZkNhbGxlZVNh
dmVzID0gaXQgLSBudW1iZXJPZkNhbGxlZVNhdmVTbG90czsKIAogICAgIGVuZCA9IGl0IC0gY29k
ZUJsb2NrLT5udW1WYXJzKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>