<?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>43950</bug_id>
          
          <creation_ts>2010-08-12 23:26:57 -0700</creation_ts>
          <short_desc>REGRESSION(r65295): It broke 4 sputnik tests (Requested by Ossy on #webkit).</short_desc>
          <delta_ts>2010-08-13 00:35:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>264198</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-12 23:26:57 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/65295 broke the build:
It broke 4 sputnik tests (Requested by Ossy on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264199</commentid>
    <comment_count>1</comment_count>
      <attachid>64306</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-12 23:27:12 -0700</bug_when>
    <thetext>Created attachment 64306
ROLLOUT of r65295

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264205</commentid>
    <comment_count>2</comment_count>
      <attachid>64306</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-08-12 23:42:30 -0700</bug_when>
    <thetext>Comment on attachment 64306
ROLLOUT of r65295

Clearing flags on attachment: 64306

Committed r65302: &lt;http://trac.webkit.org/changeset/65302&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264206</commentid>
    <comment_count>3</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-08-12 23:42:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264219</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-08-13 00:31:43 -0700</bug_when>
    <thetext>http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20%28Tests%29/r65298%20%2815391%29/results.html

http://build.webkit.org/results/Qt%20Linux%20Release/r65295%20%2817677%29/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264220</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-08-13 00:35:32 -0700</bug_when>
    <thetext>Follow up patch rolled out too, see: https://bugs.webkit.org/show_bug.cgi?id=43951</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64306</attachid>
            <date>2010-08-12 23:27:12 -0700</date>
            <delta_ts>2010-08-12 23:42:30 -0700</delta_ts>
            <desc>ROLLOUT of r65295</desc>
            <filename>bug-43950-20100813062710.patch</filename>
            <type>text/plain</type>
            <size>67221</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA2YTc5NDAyNDQ3NzFlZjAzYjc3MWE0OWZiYTczYjVmNmFhYmJhM2FkLi4y
ZWI0MTc4OTAwYTZjNDhjNmNiNDQzOGNkMjczZmM1NjAxYTY3ZDdlIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsODEgQEAKKzIwMTAtMDgtMTIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2NTI5NS4KKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjUyOTUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzOTUwCisKKyAgICAgICAgSXQg
YnJva2UgNCBzcHV0bmlrIHRlc3RzIChSZXF1ZXN0ZWQgYnkgT3NzeSBvbiAjd2Via2l0KS4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpjb25zdGFudE5hbWUpOgorICAgICAgICAoSlNDOjppZE5h
bWUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlZ2lzdGVyTmFtZSk6CisgICAgICAgIChK
U0M6OnJlZ2V4cE5hbWUpOgorICAgICAgICAoSlNDOjpwcmludEdsb2JhbFJlc29sdmVJbmZvKToK
KyAgICAgICAgKEpTQzo6cHJpbnRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cHJpbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50
U3RydWN0dXJlcyk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uUHJpbnQp
OgorICAgICAgICAoZnVuY3Rpb25EZWJ1Zyk6CisgICAgICAgIChydW5JbnRlcmFjdGl2ZSk6Cisg
ICAgICAgIChmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKiBwY3JlL3Bj
cmVfZXhlYy5jcHA6CisgICAgICAgIChIaXN0b2dyYW06On5IaXN0b2dyYW0pOgorICAgICAgICAq
IHByb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OkNhbGxJZGVudGlmaWVy
OjpjX3N0cik6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OlByb2ZpbGU6OmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUpOgorICAgICAgICAqIHByb2ZpbGVy
L1Byb2ZpbGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9yOjp3
aWxsRXhlY3V0ZSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OmRpZEV4ZWN1dGUp
OgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
ZmlsZU5vZGU6OmRlYnVnUHJpbnREYXRhKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZU5vZGU6OmRl
YnVnUHJpbnREYXRhU2FtcGxlU3R5bGUpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNw
cDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChK
U0M6OkFyZ3VtZW50czo6cHV0KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChK
U0M6OnBhcnNlRGF0ZSk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAg
IChKU0M6OklkZW50aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVy
Ojp0b0FycmF5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1
dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKEpTQzo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6cGFyc2VJbnQp
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jSlNDUHJpbnQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OkpTU3RyaW5nKToKKyAgICAg
ICAgKiBydW50aW1lL1VTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjp0b0RvdWJs
ZSk6CisgICAgICAgIChKU0M6OlVTdHJpbmc6OlVURjhTdHJpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvVVN0cmluZy5oOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjppc051bGwpOgorICAgICAgICAo
SlNDOjpVU3RyaW5nOjppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6VVN0cmluZzo6aW1wbCk6Cisg
ICAgICAgIChKU0M6OlVTdHJpbmc6OmNvc3QpOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjp+VVN0
cmluZyk6CisgICAgICAgIChKU0M6OlVTdHJpbmc6OnRvQXJyYXlJbmRleCk6CisgICAgICAgICog
d3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjp1dGY4KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpTdHJp
bmcpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjpsZW5ndGgpOgorICAgICAgICAoV1RGOjpTdHJpbmc6Om9wZXJh
dG9yW10pOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmlzTnVsbCk6CisgICAgICAgIChXVEY6OlN0
cmluZzo6aXNFbXB0eSk6CisgICAgICAgIChXVEY6OlN0cmluZzo6aW1wbCk6CisKIDIwMTAtMDgt
MTIgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAg
IFdpbmRvd3MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDcxMmY4
ZmJjZGI4NzY2MDg0ZGNlYWYxY2YzMDFmZmY0OWM1ODIxNzAuLjUwZWMzMDdlMTEzZWI2NjJmYmU5
YjA5MmU4N2IwYmIzNTQ2NGMyYTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTUx
Myw4ICs1MTMsOCBAQCBfX1pOSzNKU0M3SlNWYWx1ZTE2dG9PYmplY3RTbG93Q2FzZUVQTlNfOUV4
ZWNTdGF0ZUUKIF9fWk5LM0pTQzdKU1ZhbHVlMTlzeW50aGVzaXplUHJvdG90eXBlRVBOU185RXhl
Y1N0YXRlRQogX19aTkszSlNDN0pTVmFsdWUyMHRvVGhpc09iamVjdFNsb3dDYXNlRVBOU185RXhl
Y1N0YXRlRQogX19aTkszSlNDN0pTVmFsdWU5dG9JbnRlZ2VyRVBOU185RXhlY1N0YXRlRQorX19a
TkszSlNDN1VTdHJpbmcxMFVURjhTdHJpbmdFYgogX19aTkszSlNDN1VTdHJpbmcxNHRvU3RyaWN0
VUludDMyRVBiCi1fX1pOSzNKU0M3VVN0cmluZzR1dGY4RWIKIF9fWk5LM0pTQzdVU3RyaW5nNWFz
Y2lpRXYKIF9fWk5LM0pTQzdVU3RyaW5nNnN1YnN0ckVqagogX19aTkszSlNDN1VTdHJpbmc4dG9V
SW50MzJFUGIKQEAgLTU0MCw3ICs1NDAsNyBAQCBfX1pOSzNXVEY2U3RyaW5nMTZyZW1vdmVDaGFy
YWN0ZXJzRVBGYnRFCiBfX1pOSzNXVEY2U3RyaW5nMTdjcm9zc1RocmVhZFN0cmluZ0V2CiBfX1pO
SzNXVEY2U3RyaW5nMThzaW1wbGlmeVdoaXRlU3BhY2VFdgogX19aTkszV1RGNlN0cmluZzE5Y2hh
cmFjdGVyU3RhcnRpbmdBdEVqCi1fX1pOSzNXVEY2U3RyaW5nNHV0ZjhFYgorX19aTkszV1RGNlN0
cmluZzR1dGY4RXYKIF9fWk5LM1dURjZTdHJpbmc1YXNjaWlFdgogX19aTkszV1RGNlN0cmluZzVs
b3dlckV2CiBfX1pOSzNXVEY2U3RyaW5nNXNwbGl0RVJLUzBfYlJOU182VmVjdG9ySVMwX0xtMEVF
RQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMjY2ZTY4MjJkODViMjlh
NjlkY2U0OWI2MjYwM2QxN2U4YjlkOTM4Ni4uN2Q4NDZkOTAyMDczZTAzMTkxYWU5OGFlZGM5YzZk
YzA3YzRiNDllMSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC03MSwx
MiArNzEsMTIgQEAgc3RhdGljIFVTdHJpbmcgdmFsdWVUb1NvdXJjZVN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsKQogCiBzdGF0aWMgQ1N0cmluZyBjb25zdGFudE5hbWUoRXhlY1N0
YXRlKiBleGVjLCBpbnQgaywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbWFrZVN0cmlu
Zyh2YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIHZhbHVlKSwgIihAayIsIFVTdHJpbmc6Om51bWJl
cihrIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpLCAiKSIpLnV0ZjgoKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZyh2YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIHZhbHVlKSwgIihAayIsIFVT
dHJpbmc6Om51bWJlcihrIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpLCAiKSIpLlVURjhT
dHJpbmcoKTsKIH0KIAogc3RhdGljIENTdHJpbmcgaWROYW1lKGludCBpZDAsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQogewotICAgIHJldHVybiBtYWtlU3RyaW5nKGlkZW50LnVzdHJpbmcoKSwg
IihAaWQiLCBVU3RyaW5nOjpudW1iZXIoaWQwKSwgIikiKS51dGY4KCk7CisgICAgcmV0dXJuIG1h
a2VTdHJpbmcoaWRlbnQudXN0cmluZygpLCAiKEBpZCIsIFVTdHJpbmc6Om51bWJlcihpZDApLCAi
KSIpLlVURjhTdHJpbmcoKTsKIH0KIAogQ1N0cmluZyBDb2RlQmxvY2s6OnJlZ2lzdGVyTmFtZShF
eGVjU3RhdGUqIGV4ZWMsIGludCByKSBjb25zdApAQCAtODcsNyArODcsNyBAQCBDU3RyaW5nIENv
ZGVCbG9jazo6cmVnaXN0ZXJOYW1lKEV4ZWNTdGF0ZSogZXhlYywgaW50IHIpIGNvbnN0CiAgICAg
aWYgKGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHIpKQogICAgICAgICByZXR1cm4gY29uc3RhbnRO
YW1lKGV4ZWMsIHIsIGdldENvbnN0YW50KHIpKTsKIAotICAgIHJldHVybiBtYWtlU3RyaW5nKCJy
IiwgVVN0cmluZzo6bnVtYmVyKHIpKS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoInIi
LCBVU3RyaW5nOjpudW1iZXIocikpLlVURjhTdHJpbmcoKTsKIH0KIAogc3RhdGljIFVTdHJpbmcg
cmVnZXhwVG9Tb3VyY2VTdHJpbmcoUmVnRXhwKiByZWdFeHApCkBAIC0xMDYsNyArMTA2LDcgQEAg
c3RhdGljIFVTdHJpbmcgcmVnZXhwVG9Tb3VyY2VTdHJpbmcoUmVnRXhwKiByZWdFeHApCiAKIHN0
YXRpYyBDU3RyaW5nIHJlZ2V4cE5hbWUoaW50IHJlLCBSZWdFeHAqIHJlZ2V4cCkKIHsKLSAgICBy
ZXR1cm4gbWFrZVN0cmluZyhyZWdleHBUb1NvdXJjZVN0cmluZyhyZWdleHApLCAiKEByZSIsIFVT
dHJpbmc6Om51bWJlcihyZSksICIpIikudXRmOCgpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHJl
Z2V4cFRvU291cmNlU3RyaW5nKHJlZ2V4cCksICIoQHJlIiwgVVN0cmluZzo6bnVtYmVyKHJlKSwg
IikiKS5VVEY4U3RyaW5nKCk7CiB9CiAKIHN0YXRpYyBVU3RyaW5nIHBvaW50ZXJUb1NvdXJjZVN0
cmluZyh2b2lkKiBwKQpAQCAtMjI0LDMyICsyMjQsMzIgQEAgc3RhdGljIHVuc2lnbmVkIGluc3Ry
dWN0aW9uT2Zmc2V0Rm9yTnRoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVmVjdG9yPEluc3RydWN0
aW8KIAogc3RhdGljIHZvaWQgcHJpbnRHbG9iYWxSZXNvbHZlSW5mbyhjb25zdCBHbG9iYWxSZXNv
bHZlSW5mbyYgcmVzb2x2ZUluZm8sIHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0KQogewotICAg
IHByaW50ZigiICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAicmVzb2x2ZV9n
bG9iYWwiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcocmVzb2x2ZUluZm8uc3RydWN0dXJlKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9m
ZnNldCwgInJlc29sdmVfZ2xvYmFsIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHJlc29sdmVJbmZv
LnN0cnVjdHVyZSkuVVRGOFN0cmluZygpLmRhdGEoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50
U3RydWN0dXJlU3R1YkluZm8oY29uc3QgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCB1bnNp
Z25lZCBpbnN0cnVjdGlvbk9mZnNldCkKIHsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5
cGUpIHsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjoKLSAgICAgICAgcHJpbnRmKCIg
IFslNGRdICVzOiAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfc2VsZiIsIHBv
aW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1
Y3R1cmUpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4i
LCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9zZWxmIiwgcG9pbnRlclRvU291cmNlU3Ry
aW5nKHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZSkuVVRGOFN0cmlu
ZygpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRf
cHJvdG86Ci0gICAgICAgIHByaW50ZigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlv
bk9mZnNldCwgImdldF9ieV9pZF9wcm90byIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5m
by51LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2lu
dGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0
dXJlKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXNc
biIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX3Byb3RvIiwgcG9pbnRlclRvU291cmNl
U3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUpLlVURjhT
dHJpbmcoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRQ
cm90by5wcm90b3R5cGVTdHJ1Y3R1cmUpLlVURjhTdHJpbmcoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWluOgotICAgICAgICBwcmludGYo
IiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfY2hh
aW4iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlkQ2hhaW4uYmFzZU9i
amVjdFN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJ
bmZvLnUuZ2V0QnlJZENoYWluLmNoYWluKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcHJpbnRm
KCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX2No
YWluIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmJhc2VP
YmplY3RTdHJ1Y3R1cmUpLlVURjhTdHJpbmcoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmlu
ZyhzdHViSW5mby51LmdldEJ5SWRDaGFpbi5jaGFpbikuVVRGOFN0cmluZygpLmRhdGEoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZl9saXN0OgotICAg
ICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzICglZClcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAi
b3BfZ2V0X2J5X2lkX3NlbGZfbGlzdCIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51
LmdldEJ5SWRTZWxmTGlzdC5zdHJ1Y3R1cmVMaXN0KS51dGY4KCkuZGF0YSgpLCBzdHViSW5mby51
LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZSk7CisgICAgICAgIHByaW50ZigiICBbJTRkXSAlczog
JXMgKCVkKVxuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9nZXRfYnlfaWRfc2VsZl9saXN0Iiwg
cG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0LnN0cnVjdHVy
ZUxpc3QpLlVURjhTdHJpbmcoKS5kYXRhKCksIHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0Lmxp
c3RTaXplKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90
b19saXN0OgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzICglZClcbiIsIGluc3RydWN0
aW9uT2Zmc2V0LCAib3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QiLCBwb2ludGVyVG9Tb3VyY2VTdHJp
bmcoc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3QpLnV0ZjgoKS5kYXRh
KCksIHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZSk7CisgICAgICAgIHByaW50
ZigiICBbJTRkXSAlczogJXMgKCVkKVxuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9nZXRfYnlf
aWRfcHJvdG9fbGlzdCIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRQ
cm90b0xpc3Quc3RydWN0dXJlTGlzdCkuVVRGOFN0cmluZygpLmRhdGEoKSwgc3R1YkluZm8udS5n
ZXRCeUlkUHJvdG9MaXN0Lmxpc3RTaXplKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNj
ZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uOgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVz
LCAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iLCBw
b2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91
c1N0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZv
LnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9T
b3VyY2VTdHJpbmcoc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbikudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIHByaW50ZigiICBbJTRkXSAlczogJXMsICVzLCAlc1xuIiwgaW5zdHJ1
Y3Rpb25PZmZzZXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmlu
ZyhzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlKS5VVEY4U3Ry
aW5nKCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5wdXRCeUlkVHJh
bnNpdGlvbi5zdHJ1Y3R1cmUpLlVURjhTdHJpbmcoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0
cmluZyhzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluKS5VVEY4U3RyaW5nKCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNl
OgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwg
InB1dF9ieV9pZF9yZXBsYWNlIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUucHV0
QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IHByaW50ZigiICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAicHV0X2J5X2lk
X3JlcGxhY2UiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5wdXRCeUlkUmVwbGFj
ZS5iYXNlT2JqZWN0U3RydWN0dXJlKS5VVEY4U3RyaW5nKCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZDoKICAgICAgICAgcHJpbnRmKCIgIFslNGRd
ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZCIpOwpAQCAtMjc4LDcgKzI3OCw3
IEBAIHN0YXRpYyB2b2lkIHByaW50U3RydWN0dXJlU3R1YkluZm8oY29uc3QgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCB1bnNpZ25lZCBpCiB2b2lkIENvZGVCbG9jazo6cHJpbnRTdHJ1Y3R1
cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQywgaW50IG9wZXJhbmQp
IGNvbnN0CiB7CiAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQgPSB2UEMgLSBtX2luc3Ry
dWN0aW9ucy5iZWdpbigpOwotICAgIHByaW50ZigiICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0
aW9uT2Zmc2V0LCBuYW1lLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDW29wZXJhbmRdLnUuc3Ry
dWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKKyAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4iLCBp
bnN0cnVjdGlvbk9mZnNldCwgbmFtZSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1tvcGVyYW5k
XS51LnN0cnVjdHVyZSkuVVRGOFN0cmluZygpLmRhdGEoKSk7CiB9CiAKIHZvaWQgQ29kZUJsb2Nr
OjpwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QKQEAgLTI5NSwx
NSArMjk1LDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1
Y3Rpb24qIHZQQykgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBd
LnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX3Byb3RvKSkg
ewotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZz
ZXQsICJnZXRfYnlfaWRfcHJvdG8iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3Ry
dWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3Ry
dWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzOiAlcywg
JXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX3Byb3RvIiwgcG9pbnRlclRvU291
cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVjdHVyZSkuVVRGOFN0cmluZygpLmRhdGEoKSwgcG9pbnRl
clRvU291cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVjdHVyZSkuVVRGOFN0cmluZygpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKSkgewotICAgICAgICBw
cmludGYoIiAgWyU0ZF0gJXM6ICVzLCAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAicHV0
X2J5X2lkX3RyYW5zaXRpb24iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0
dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0
dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzZdLnUuc3RydWN0
dXJlQ2hhaW4pLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVz
LCAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iLCBw
b2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS5VVEY4U3RyaW5nKCkuZGF0
YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlKS5VVEY4U3RyaW5n
KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4p
LlVURjhTdHJpbmcoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2
UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY2hh
aW4pKSB7Ci0gICAgICAgIHByaW50ZigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlv
bk9mZnNldCwgImdldF9ieV9pZF9jaGFpbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0u
dS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0u
dS5zdHJ1Y3R1cmVDaGFpbikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHByaW50ZigiICBbJTRk
XSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9jaGFpbiIsIHBv
aW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLlVURjhTdHJpbmcoKS5kYXRh
KCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbikuVVRGOFN0
cmluZygpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCkpIHsKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmlu
ZGV4IDMxNmYzNDY3ZDU1ZTE3YTBlNDU4MDJjNDkxMmZjYjQ0NDA4ZTIwNDIuLjAzYmM0MTFlNzM3
ZjFkMjJiODYwM2Q0NDY4MjIxYjUwY2Q3ZTAyZDcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgcHV0Y2hhcignICcpOwogCi0gICAgICAg
IHByaW50ZigiJXMiLCBleGVjLT5hcmd1bWVudChpKS50b1N0cmluZyhleGVjKS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgcHJpbnRmKCIlcyIsIGV4ZWMtPmFyZ3VtZW50KGkpLnRvU3RyaW5nKGV4
ZWMpLlVURjhTdHJpbmcoKS5kYXRhKCkpOwogICAgIH0KIAogICAgIHB1dGNoYXIoJ1xuJyk7CkBA
IC0xODgsNyArMTg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
aW50KEV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRlYnVnKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIi0tPiAl
c1xuIiwgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykudXRmOCgpLmRhdGEoKSk7Cisg
ICAgZnByaW50ZihzdGRlcnIsICItLT4gJXNcbiIsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLlVURjhTdHJpbmcoKS5kYXRhKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgdm9pZCBydW5J
bnRlcmFjdGl2ZShHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgaWYgKGNvbXBs
ZXRpb24uY29tcGxUeXBlKCkgPT0gVGhyb3cpCiAgICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlv
bjogJXNcbiIsIGNvbXBsZXRpb24udmFsdWUoKS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSkuYXNjaWkoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiJXNc
biIsIGNvbXBsZXRpb24udmFsdWUoKS50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBwcmludGYoIiVzXG4iLCBjb21wbGV0aW9u
LnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLlVURjhTdHJpbmco
KS5kYXRhKCkpOwogCiAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLT5jbGVhckV4
Y2VwdGlvbigpOwogICAgIH0KQEAgLTUzMiw5ICs1MzIsOSBAQCBpbnQganNjbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIAogc3RhdGljIGJvb2wg
ZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShjb25zdCBVU3RyaW5nJiBmaWxlTmFtZSwgVmVj
dG9yPGNoYXI+JiBidWZmZXIpCiB7Ci0gICAgRklMRSogZiA9IGZvcGVuKGZpbGVOYW1lLnV0Zjgo
KS5kYXRhKCksICJyIik7CisgICAgRklMRSogZiA9IGZvcGVuKGZpbGVOYW1lLlVURjhTdHJpbmco
KS5kYXRhKCksICJyIik7CiAgICAgaWYgKCFmKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAi
Q291bGQgbm90IG9wZW4gZmlsZTogJXNcbiIsIGZpbGVOYW1lLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBvcGVuIGZpbGU6ICVzXG4iLCBmaWxlTmFt
ZS5VVEY4U3RyaW5nKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlX2V4ZWMuY3BwIGIvSmF2YVNjcmlw
dENvcmUvcGNyZS9wY3JlX2V4ZWMuY3BwCmluZGV4IGY0ODk5ZjI3NDZlNzBlODE1ODJkMTliOWYz
NWM1MjYyZDk5NDNjZjMuLjA5ODMwMmJjYjY5Mzc5YjM2NDZiMzczOTgwOWE0ZGI3NDRmMTA1NTIg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BjcmUvcGNyZV9leGVjLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9wY3JlL3BjcmVfZXhlYy5jcHAKQEAgLTIxNDMsNyArMjE0Myw3IEBAIEhpc3Rv
Z3JhbTo6fkhpc3RvZ3JhbSgpCiAgICAgc2l6ZV90IHNpemUgPSB2YWx1ZXMuc2l6ZSgpOwogICAg
IHByaW50ZigiUmVndWxhciBFeHByZXNzaW9ucywgc29ydGVkIGJ5IHRpbWUgc3BlbnQgZXZhbHVh
dGluZyB0aGVtOlxuIik7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgIHByaW50ZigiICAgICVmIC0gJXNcbiIsIHZhbHVlc1tzaXplIC0gaSAtIDFdLnNlY29u
ZCwgdmFsdWVzW3NpemUgLSBpIC0gMV0uZmlyc3QudXRmOCgpLmNfc3RyKCkpOworICAgICAgICBw
cmludGYoIiAgICAlZiAtICVzXG4iLCB2YWx1ZXNbc2l6ZSAtIGkgLSAxXS5zZWNvbmQsIHZhbHVl
c1tzaXplIC0gaSAtIDFdLmZpcnN0LlVURjhTdHJpbmcoKS5jX3N0cigpKTsKIH0KIAogdm9pZCBI
aXN0b2dyYW06OmFkZChjb25zdCBKU1JlZ0V4cCogcmUsIGRvdWJsZSBlbGFwc2VkVGltZSkKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmggYi9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9DYWxsSWRlbnRpZmllci5oCmluZGV4IDcxNGIxNDAwYmVlMDU4
OTRjZWFhZGNiNDA3ZDg3ODhmOTg2ZDk5NTIuLmNmZGVmMTg5NjNiNmRlMTkzZjFhNDExNzhjY2M4
MTA0NDM3ZDc3ZjQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVu
dGlmaWVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaApA
QCAtNzEsNyArNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgb3BlcmF0b3IgY29uc3QgY2hhciooKSBjb25zdCB7IHJldHVybiBjX3N0cigpOyB9Ci0gICAg
ICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLnV0ZjgoKS5kYXRh
KCk7IH0KKyAgICAgICAgY29uc3QgY2hhciogY19zdHIoKSBjb25zdCB7IHJldHVybiBtX25hbWUu
VVRGOFN0cmluZygpLmRhdGEoKTsgfQogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlLmNwcAppbmRleCBiYzIzOWIzNGY5YTZhMGFiZWQ4Yjc4NzJkOWVlY2NhYzM3NGIx
ZDM4Li45NGI5ZmJjZmEwNjk1ZWY1ZWRmMDJjMjViYWEwYWI0ZTIwNmQ1NGUwIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgUHJvZmlsZTo6
ZGVidWdQcmludERhdGFTYW1wbGVTdHlsZSgpIGNvbnN0CiAKICAgICBzdGQ6OnNvcnQoc29ydGVk
RnVuY3Rpb25zLmJlZ2luKCksIHNvcnRlZEZ1bmN0aW9ucy5lbmQoKSwgZnVuY3Rpb25OYW1lQ291
bnRQYWlyQ29tcGFyYXRvcik7CiAgICAgZm9yIChOYW1lQ291bnRQYWlyVmVjdG9yOjppdGVyYXRv
ciBpdCA9IHNvcnRlZEZ1bmN0aW9ucy5iZWdpbigpOyBpdCAhPSBzb3J0ZWRGdW5jdGlvbnMuZW5k
KCk7ICsraXQpCi0gICAgICAgIHByaW50ZigiICAgICAgICAlLTEyZCVzXG4iLCAoKml0KS5zZWNv
bmQsIFVTdHJpbmcoKCppdCkuZmlyc3QpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBwcmludGYo
IiAgICAgICAgJS0xMmQlc1xuIiwgKCppdCkuc2Vjb25kLCBVU3RyaW5nKCgqaXQpLmZpcnN0KS5V
VEY4U3RyaW5nKCkuZGF0YSgpKTsKIAogICAgIHByaW50ZigiXG5Tb3J0IGJ5IHRvcCBvZiBzdGFj
aywgc2FtZSBjb2xsYXBzZWQgKHdoZW4gPj0gNSk6XG4iKTsKIH0KZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwIGIvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAKaW5kZXggMWQ5MTZlYTFjYzFkMWM1NTI5M2I5
MWZjNzNjMWRmYmYzNDRiNWQxNi4uYmRmYTI3YjIyYzk2N2Q3MzQxN2FlZjIxNDI4OGQ1ZmE4NWU1
MDFhNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRv
ci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAK
QEAgLTc1LDggKzc1LDggQEAgY29uc3QgVVN0cmluZyYgUHJvZmlsZUdlbmVyYXRvcjo6dGl0bGUo
KSBjb25zdAogdm9pZCBQcm9maWxlR2VuZXJhdG9yOjp3aWxsRXhlY3V0ZShjb25zdCBDYWxsSWRl
bnRpZmllciYgY2FsbElkZW50aWZpZXIpCiB7CiAgICAgaWYgKEpBVkFTQ1JJUFRDT1JFX1BST0ZJ
TEVfV0lMTF9FWEVDVVRFX0VOQUJMRUQoKSkgewotICAgICAgICBDU3RyaW5nIG5hbWUgPSBjYWxs
SWRlbnRpZmllci5tX25hbWUudXRmOCgpOwotICAgICAgICBDU3RyaW5nIHVybCA9IGNhbGxJZGVu
dGlmaWVyLm1fdXJsLnV0ZjgoKTsKKyAgICAgICAgQ1N0cmluZyBuYW1lID0gY2FsbElkZW50aWZp
ZXIubV9uYW1lLlVURjhTdHJpbmcoKTsKKyAgICAgICAgQ1N0cmluZyB1cmwgPSBjYWxsSWRlbnRp
Zmllci5tX3VybC5VVEY4U3RyaW5nKCk7CiAgICAgICAgIEpBVkFTQ1JJUFRDT1JFX1BST0ZJTEVf
V0lMTF9FWEVDVVRFKG1fcHJvZmlsZUdyb3VwLCBjb25zdF9jYXN0PGNoYXIqPihuYW1lLmRhdGEo
KSksIGNvbnN0X2Nhc3Q8Y2hhcio+KHVybC5kYXRhKCkpLCBjYWxsSWRlbnRpZmllci5tX2xpbmVO
dW1iZXIpOwogICAgIH0KIApAQCAtOTAsOCArOTAsOCBAQCB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6
OndpbGxFeGVjdXRlKGNvbnN0IENhbGxJZGVudGlmaWVyJiBjYWxsSWRlbnRpZmllcikKIHZvaWQg
UHJvZmlsZUdlbmVyYXRvcjo6ZGlkRXhlY3V0ZShjb25zdCBDYWxsSWRlbnRpZmllciYgY2FsbElk
ZW50aWZpZXIpCiB7CiAgICAgaWYgKEpBVkFTQ1JJUFRDT1JFX1BST0ZJTEVfRElEX0VYRUNVVEVf
RU5BQkxFRCgpKSB7Ci0gICAgICAgIENTdHJpbmcgbmFtZSA9IGNhbGxJZGVudGlmaWVyLm1fbmFt
ZS51dGY4KCk7Ci0gICAgICAgIENTdHJpbmcgdXJsID0gY2FsbElkZW50aWZpZXIubV91cmwudXRm
OCgpOworICAgICAgICBDU3RyaW5nIG5hbWUgPSBjYWxsSWRlbnRpZmllci5tX25hbWUuVVRGOFN0
cmluZygpOworICAgICAgICBDU3RyaW5nIHVybCA9IGNhbGxJZGVudGlmaWVyLm1fdXJsLlVURjhT
dHJpbmcoKTsKICAgICAgICAgSkFWQVNDUklQVENPUkVfUFJPRklMRV9ESURfRVhFQ1VURShtX3By
b2ZpbGVHcm91cCwgY29uc3RfY2FzdDxjaGFyKj4obmFtZS5kYXRhKCkpLCBjb25zdF9jYXN0PGNo
YXIqPih1cmwuZGF0YSgpKSwgY2FsbElkZW50aWZpZXIubV9saW5lTnVtYmVyKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcCBiL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcAppbmRleCBiZmNmY2JlNTdhZGQx
N2Q5ZmJiMWFlYTYzNzlkOTM2OGQ1ZDU1M2ZmLi45NjljZGE4NDliZDkzNTQ1Njc3NjA4YWE4Nzhk
MzBmMGE5ZWZkZTA1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
Tm9kZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwCkBA
IC0yOTQsMTEgKzI5NCwxMSBAQCB2b2lkIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50RGF0YShpbnQg
aW5kZW50TGV2ZWwpIGNvbnN0CiAgICAgICAgIHByaW50ZigiICAiKTsKIAogICAgIHByaW50Zigi
RnVuY3Rpb24gTmFtZSAlcyAlZCBTZWxmVGltZSAlLjNmbXMvJS4zZiUlIFRvdGFsVGltZSAlLjNm
bXMvJS4zZiUlIFZTZWxmICUuM2ZtcyBWVG90YWwgJS4zZm1zIFZpc2libGUgJXMgTmV4dCBTaWJs
aW5nICVzXG4iLAotICAgICAgICBmdW5jdGlvbk5hbWUoKS51dGY4KCkuZGF0YSgpLCAKKyAgICAg
ICAgZnVuY3Rpb25OYW1lKCkuVVRGOFN0cmluZygpLmRhdGEoKSwgCiAgICAgICAgIG1fbnVtYmVy
T2ZDYWxscywgbV9hY3R1YWxTZWxmVGltZSwgc2VsZlBlcmNlbnQoKSwgbV9hY3R1YWxUb3RhbFRp
bWUsIHRvdGFsUGVyY2VudCgpLAogICAgICAgICBtX3Zpc2libGVTZWxmVGltZSwgbV92aXNpYmxl
VG90YWxUaW1lLCAKICAgICAgICAgKG1fdmlzaWJsZSA/ICJUcnVlIiA6ICJGYWxzZSIpLAotICAg
ICAgICBtX25leHRTaWJsaW5nID8gbV9uZXh0U2libGluZy0+ZnVuY3Rpb25OYW1lKCkudXRmOCgp
LmRhdGEoKSA6ICIiKTsKKyAgICAgICAgbV9uZXh0U2libGluZyA/IG1fbmV4dFNpYmxpbmctPmZ1
bmN0aW9uTmFtZSgpLlVURjhTdHJpbmcoKS5kYXRhKCkgOiAiIik7CiAKICAgICArK2luZGVudExl
dmVsOwogCkBAIC0zMTMsNyArMzEzLDcgQEAgZG91YmxlIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50
RGF0YVNhbXBsZVN0eWxlKGludCBpbmRlbnRMZXZlbCwgRnVuY3Rpb25DYWxsSGFzaEMKICAgICBw
cmludGYoIiAgICAiKTsKIAogICAgIC8vIFByaW50IGZ1bmN0aW9uIG5hbWVzCi0gICAgY29uc3Qg
Y2hhciogbmFtZSA9IGZ1bmN0aW9uTmFtZSgpLnV0ZjgoKS5kYXRhKCk7CisgICAgY29uc3QgY2hh
ciogbmFtZSA9IGZ1bmN0aW9uTmFtZSgpLlVURjhTdHJpbmcoKS5kYXRhKCk7CiAgICAgZG91Ymxl
IHNhbXBsZUNvdW50ID0gbV9hY3R1YWxUb3RhbFRpbWUgKiAxMDAwOwogICAgIGlmIChpbmRlbnRM
ZXZlbCkgewogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGluZGVudExldmVsOyArK2kpCkBA
IC0zMzksNyArMzM5LDcgQEAgZG91YmxlIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50RGF0YVNhbXBs
ZVN0eWxlKGludCBpbmRlbnRMZXZlbCwgRnVuY3Rpb25DYWxsSGFzaEMKICAgICAgICAgd2hpbGUg
KGluZGVudExldmVsLS0pCiAgICAgICAgICAgICBwcmludGYoIiAgIik7CiAKLSAgICAgICAgcHJp
bnRmKCIlLjBmICVzXG4iLCBzYW1wbGVDb3VudCAtIHN1bU9mQ2hpbGRyZW5zQ291bnQsIGZ1bmN0
aW9uTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBwcmludGYoIiUuMGYgJXNcbiIsIHNh
bXBsZUNvdW50IC0gc3VtT2ZDaGlsZHJlbnNDb3VudCwgZnVuY3Rpb25OYW1lKCkuVVRGOFN0cmlu
ZygpLmRhdGEoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fYWN0dWFsVG90YWxUaW1lOwpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IDRjYTAzMjhlNmM2YTBhMWNkNjI0NTNl
OTM0YTc2Y2JhMzJhZDEwOGEuLjkxNmFhYzMxZWYwNzJlNmNhZDdiZjllZmFkOTI4OGQ3MDYxMTM4
MjggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBA
QCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaSwgUHJvcGVydHlTbG90JiBzbAogYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIGJvb2wgaXNBcnJheUluZGV4OwotICAgIHVuc2lnbmVk
IGkgPSB0b0FycmF5SW5kZXgocHJvcGVydHlOYW1lLnVzdHJpbmcoKSwgJmlzQXJyYXlJbmRleCk7
CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoJmlzQXJyYXlJbmRl
eCk7CiAgICAgaWYgKGlzQXJyYXlJbmRleCAmJiBpIDwgZC0+bnVtQXJndW1lbnRzICYmICghZC0+
ZGVsZXRlZEFyZ3VtZW50cyB8fCAhZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkpIHsKICAgICAgICAg
aWYgKGkgPCBkLT5udW1QYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgICBzbG90LnNldFJlZ2lzdGVy
U2xvdCgmZC0+cmVnaXN0ZXJzW2QtPmZpcnN0UGFyYW1ldGVySW5kZXggKyBpXSk7CkBAIC0xODIs
NyArMTgyLDcgQEAgYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmEKIGJvb2wgQXJndW1lbnRzOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBib29s
IGlzQXJyYXlJbmRleDsKLSAgICB1bnNpZ25lZCBpID0gdG9BcnJheUluZGV4KHByb3BlcnR5TmFt
ZS51c3RyaW5nKCksICZpc0FycmF5SW5kZXgpOworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5h
bWUudG9BcnJheUluZGV4KCZpc0FycmF5SW5kZXgpOwogICAgIGlmIChpc0FycmF5SW5kZXggJiYg
aSA8IGQtPm51bUFyZ3VtZW50cyAmJiAoIWQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIWQtPmRlbGV0
ZWRBcmd1bWVudHNbaV0pKSB7CiAgICAgICAgIGlmIChpIDwgZC0+bnVtUGFyYW1ldGVycykgewog
ICAgICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGQtPnJlZ2lzdGVyc1tkLT5maXJz
dFBhcmFtZXRlckluZGV4ICsgaV0uanNWYWx1ZSgpLCBEb250RW51bSk7CkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBBcmd1bWVudHM6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYKIHZvaWQgQXJndW1lbnRzOjpwdXQoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBib29sIGlzQXJyYXlJbmRleDsKLSAgICB1
bnNpZ25lZCBpID0gdG9BcnJheUluZGV4KHByb3BlcnR5TmFtZS51c3RyaW5nKCksICZpc0FycmF5
SW5kZXgpOworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KCZpc0Fy
cmF5SW5kZXgpOwogICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IGQtPm51bUFyZ3VtZW50cyAm
JiAoIWQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIWQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pKSB7CiAg
ICAgICAgIGlmIChpIDwgZC0+bnVtUGFyYW1ldGVycykKICAgICAgICAgICAgIGQtPnJlZ2lzdGVy
c1tkLT5maXJzdFBhcmFtZXRlckluZGV4ICsgaV0gPSBKU1ZhbHVlKHZhbHVlKTsKQEAgLTI3Niw3
ICsyNzYsNyBAQCBib29sIEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpKQogYm9vbCBBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSAKIHsKICAgICBib29sIGlzQXJy
YXlJbmRleDsKLSAgICB1bnNpZ25lZCBpID0gdG9BcnJheUluZGV4KHByb3BlcnR5TmFtZS51c3Ry
aW5nKCksICZpc0FycmF5SW5kZXgpOworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9B
cnJheUluZGV4KCZpc0FycmF5SW5kZXgpOwogICAgIGlmIChpc0FycmF5SW5kZXggJiYgaSA8IGQt
Pm51bUFyZ3VtZW50cykgewogICAgICAgICBpZiAoIWQtPmRlbGV0ZWRBcmd1bWVudHMpIHsKICAg
ICAgICAgICAgIGQtPmRlbGV0ZWRBcmd1bWVudHMuc2V0KG5ldyBib29sW2QtPm51bUFyZ3VtZW50
c10pOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5j
cHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAppbmRleCBiNjZi
MDg4MzdjZjA4ZWRkNWFkMTdkNWUyNTUwZjMzMGE4YWQ2MDE0Li43MGRiYWEwMzA2MzYyY2JiNWQ2
OTgzMzZiZTc4NzdmN2YxODljZTQ4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252
ZXJzaW9uLmNwcApAQCAtNTYsNyArNTYsNyBAQCBkb3VibGUgcGFyc2VEYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgVVN0cmluZyAmZGF0ZSkKIHsKICAgICBpZiAoZGF0ZSA9PSBleGVjLT5nbG9i
YWxEYXRhKCkuY2FjaGVkRGF0ZVN0cmluZykKICAgICAgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERh
dGEoKS5jYWNoZWREYXRlU3RyaW5nVmFsdWU7Ci0gICAgZG91YmxlIHZhbHVlID0gcGFyc2VEYXRl
RnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhleGVjLCBkYXRlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIGRvdWJsZSB2YWx1ZSA9IHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMo
ZXhlYywgZGF0ZS5VVEY4U3RyaW5nKCkuZGF0YSgpKTsKICAgICBleGVjLT5nbG9iYWxEYXRhKCku
Y2FjaGVkRGF0ZVN0cmluZyA9IGRhdGU7CiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmNhY2hlZERh
dGVTdHJpbmdWYWx1ZSA9IHZhbHVlOwogICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmgKaW5kZXggZTI0ZjFiNGNkNDA1MWIzNTJjMGQzYjQ3ZTI2Yzk0NzQ3NzVh
NDA2ZS4uMjU1MzVhNDc3OTU2MzIyOGE1OGU5ZTFjZDI3MWZmMDYxZGI3ZDA0MyAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTQ0LDYgKzQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIElkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJbXBs
KiByZXApIDogbV9zdHJpbmcoYWRkKGdsb2JhbERhdGEsIHJlcCkpIHsgfSAKICAgICAgICAgSWRl
bnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpIDogbV9z
dHJpbmcoYWRkKGdsb2JhbERhdGEsIHMuaW1wbCgpKSkgeyB9CiAKKyAgICAgICAgLy8gU3BlY2lh
bCBjb25zdHJ1Y3RvciBmb3IgY2FzZXMgd2hlcmUgd2Ugb3ZlcndyaXRlIGFuIG9iamVjdCBpbiBw
bGFjZS4KKyAgICAgICAgSWRlbnRpZmllcihQbGFjZW1lbnROZXdBZG9wdFR5cGUpIDogbV9zdHJp
bmcoUGxhY2VtZW50TmV3QWRvcHQpIHsgfQorICAgICAgICAKICAgICAgICAgY29uc3QgVVN0cmlu
ZyYgdXN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgICAgIFN0cmluZ0lt
cGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pbXBsKCk7IH0KICAgICAgICAgCkBA
IC02NSw2ICs2OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1aW50MzJfdCB0b1VJbnQz
Mihib29sKiBvaykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9VSW50MzIob2spOyB9CiAgICAg
ICAgIHVpbnQzMl90IHRvVUludDMyKGJvb2wqIG9rLCBib29sIHRvbGVyYXRlRW1wdHlTdHJpbmcp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvVUludDMyKG9rLCB0b2xlcmF0ZUVtcHR5U3RyaW5n
KTsgfTsKICAgICAgICAgdWludDMyX3QgdG9TdHJpY3RVSW50MzIoYm9vbCogb2spIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLnRvU3RyaWN0VUludDMyKG9rKTsgfQorICAgICAgICB1bnNpZ25lZCB0
b0FycmF5SW5kZXgoYm9vbCogb2spIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvQXJyYXlJbmRl
eChvayk7IH0KICAgICAgICAgZG91YmxlIHRvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcudG9Eb3VibGUoKTsgfQogICAgICAgICAKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAKaW5kZXggZmZiOGQ5ZWIxMzY3OWE0MTYzZWI4YjgwZDNjOGZjYzU5NDY2NjY0
Yy4uMGRiMGE2MzAwYmU5NzE4YWIzNzc4MmRlNzdjMzMxOGQ0YTJjOGQxOSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgYm9vbCBKU0FycmF5OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUKICAgICB9CiAKICAgICBib29sIGlzQXJyYXlJbmRleDsKLSAgICB1bnNpZ25lZCBpID0g
dG9BcnJheUluZGV4KHByb3BlcnR5TmFtZS51c3RyaW5nKCksICZpc0FycmF5SW5kZXgpOworICAg
IHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KCZpc0FycmF5SW5kZXgpOwog
ICAgIGlmIChpc0FycmF5SW5kZXgpCiAgICAgICAgIHJldHVybiBKU0FycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoZXhlYywgaSwgc2xvdCk7CiAKQEAgLTI5MCw3ICsyOTAsNyBAQCBib29sIEpTQXJy
YXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcgogICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IG1fc3RvcmFnZTsKICAg
ICAKICAgICBib29sIGlzQXJyYXlJbmRleDsKLSAgICB1bnNpZ25lZCBpID0gdG9BcnJheUluZGV4
KHByb3BlcnR5TmFtZS51c3RyaW5nKCksICZpc0FycmF5SW5kZXgpOworICAgIHVuc2lnbmVkIGkg
PSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KCZpc0FycmF5SW5kZXgpOwogICAgIGlmIChpc0Fy
cmF5SW5kZXgpIHsKICAgICAgICAgaWYgKGkgPj0gc3RvcmFnZS0+bV9sZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTcsNyArMzE3LDcgQEAgYm9vbCBKU0FycmF5OjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXIKIHZvaWQgSlNBcnJheTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgYm9vbCBpc0FycmF5SW5kZXg7Ci0gICAgdW5zaWduZWQgaSA9IHRvQXJyYXlJbmRleChw
cm9wZXJ0eU5hbWUudXN0cmluZygpLCAmaXNBcnJheUluZGV4KTsKKyAgICB1bnNpZ25lZCBpID0g
cHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleCgmaXNBcnJheUluZGV4KTsKICAgICBpZiAoaXNBcnJh
eUluZGV4KSB7CiAgICAgICAgIHB1dChleGVjLCBpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTQ3NSw3ICs0NzUsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXRTbG93Q2Fz
ZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdQogYm9vbCBKU0FycmF5
OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBib29sIGlzQXJyYXlJbmRleDsKLSAgICB1bnNpZ25lZCBpID0gdG9B
cnJheUluZGV4KHByb3BlcnR5TmFtZS51c3RyaW5nKCksICZpc0FycmF5SW5kZXgpOworICAgIHVu
c2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KCZpc0FycmF5SW5kZXgpOwogICAg
IGlmIChpc0FycmF5SW5kZXgpCiAgICAgICAgIHJldHVybiBkZWxldGVQcm9wZXJ0eShleGVjLCBp
KTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCBiNzJhMjg1ZjBjNzQxZWFkN2U5MWM3
YWUxZDBmMTMwODMzMjA3NDk3Li5mOGE3ZDgxMTliNDE2ZWVmYTBkZGU4Nzg3YzI5ZTNkOTc5Njhh
MzMyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMjYxLDE3ICsyNjEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBtYXJrQ2hpbGRyZW4obV92YWx1ZXMucmVtb3Zl
TGFzdCgpKTsKICAgICAgICAgfQogICAgIH0KLQotICAgIC8vIFJ1bGUgZnJvbSBFQ01BIDE1LjIg
YWJvdXQgd2hhdCBhbiBhcnJheSBpbmRleCBpcy4KLSAgICAvLyBNdXN0IGV4YWN0bHkgbWF0Y2gg
c3RyaW5nIGZvcm0gb2YgYW4gdW5zaWduZWQgaW50ZWdlciwgYW5kIGJlIGxlc3MgdGhhbiAyXjMy
IC0gMS4KLSAgICBpbmxpbmUgdW5zaWduZWQgdG9BcnJheUluZGV4KGNvbnN0IFVTdHJpbmcmIHN0
cmluZywgYm9vbCogb2spCi0gICAgewotICAgICAgICB1bnNpZ25lZCBpID0gc3RyaW5nLnRvU3Ry
aWN0VUludDMyKG9rKTsKLSAgICAgICAgaWYgKG9rICYmIGkgPj0gMHhGRkZGRkZGRlUpCi0gICAg
ICAgICAgICAqb2sgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGk7Ci0gICAgfQotCisgICAgCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTQXJyYXlfaApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCBlNzJkMzQy
YTAyN2Y4MDQ3OTE3ZThlZDUzN2EyZmYwNWRiMDlmOTg3Li41YjExMWZhYTQ0MGE2MWI0M2RiMGUz
YjgxY2JkZWE3MDY0MzlmM2QwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGRv
Tm90RXNjYXBlKQogewogICAgIFVTdHJpbmcgc3RyID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYyk7Ci0gICAgQ1N0cmluZyBjc3RyID0gc3RyLnV0ZjgodHJ1ZSk7CisgICAgQ1N0cmlu
ZyBjc3RyID0gc3RyLlVURjhTdHJpbmcodHJ1ZSk7CiAgICAgaWYgKCFjc3RyLmRhdGEoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVVJJRXJyb3IoZXhlYywgIlN0cmlu
ZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2VxdWVuY2UuIikpOwogCkBAIC0yNjUsOSAr
MjY1LDkgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUludChjb25zdCBVU3RyaW5nJiBzLCBpbnQgcmFk
aXgpCiAKICAgICBpZiAobnVtYmVyID49IG1hbnRpc3NhT3ZlcmZsb3dMb3dlckJvdW5kKSB7CiAg
ICAgICAgIGlmIChyYWRpeCA9PSAxMCkKLSAgICAgICAgICAgIG51bWJlciA9IFdURjo6c3RydG9k
KHMuc3Vic3RyKGZpcnN0RGlnaXRQb3NpdGlvbiwgcCAtIGZpcnN0RGlnaXRQb3NpdGlvbikudXRm
OCgpLmRhdGEoKSwgMCk7CisgICAgICAgICAgICBudW1iZXIgPSBXVEY6OnN0cnRvZChzLnN1YnN0
cihmaXJzdERpZ2l0UG9zaXRpb24sIHAgLSBmaXJzdERpZ2l0UG9zaXRpb24pLlVURjhTdHJpbmco
KS5kYXRhKCksIDApOwogICAgICAgICBlbHNlIGlmIChyYWRpeCA9PSAyIHx8IHJhZGl4ID09IDQg
fHwgcmFkaXggPT0gOCB8fCByYWRpeCA9PSAxNiB8fCByYWRpeCA9PSAzMikKLSAgICAgICAgICAg
IG51bWJlciA9IHBhcnNlSW50T3ZlcmZsb3cocy5zdWJzdHIoZmlyc3REaWdpdFBvc2l0aW9uLCBw
IC0gZmlyc3REaWdpdFBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLCBwIC0gZmlyc3REaWdpdFBvc2l0
aW9uLCByYWRpeCk7CisgICAgICAgICAgICBudW1iZXIgPSBwYXJzZUludE92ZXJmbG93KHMuc3Vi
c3RyKGZpcnN0RGlnaXRQb3NpdGlvbiwgcCAtIGZpcnN0RGlnaXRQb3NpdGlvbikuVVRGOFN0cmlu
ZygpLmRhdGEoKSwgcCAtIGZpcnN0RGlnaXRQb3NpdGlvbiwgcmFkaXgpOwogICAgIH0KIAogICAg
IGlmICghc2F3RGlnaXQpCkBAIC00NTMsNyArNDUzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoRXhlY1N0YXRlKiBleGVjKQogI2lmbmRlZiBOREVC
VUcKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0pTQ1ByaW50KEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICBDU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLlVURjhTdHJpbmcoKTsKICAgICBwdXRzKHN0cmluZy5kYXRhKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKaW5kZXggODk4MjAxZDZhM2VmYjA5OTNlZjAwMmViZTVjODhkZTk5
MDM3NTk2NC4uNDk5ZGE4OWRiMTIzNDg2ZDQwODUzZmMzNzFkZjAxNWE4NGRjZjNhMSAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMTkxLDcgKzE5MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoMCkKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKCFtX3ZhbHVlLmlzTnVsbCgpKTsKLSAgICAgICAgICAgIEhlYXA6OmhlYXAodGhpcykt
PnJlcG9ydEV4dHJhTWVtb3J5Q29zdCh2YWx1ZS5pbXBsKCktPmNvc3QoKSk7CisgICAgICAgICAg
ICBIZWFwOjpoZWFwKHRoaXMpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QodmFsdWUuY29zdCgpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGVudW0gSGFzT3RoZXJPd25lclR5cGUgeyBIYXNPdGhlck93
bmVyIH07CkBAIC0zMDgsNyArMzA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAv
LyBuYXN0eSBoYWNrIGJlY2F1c2Ugd2UgY2FuJ3QgdW5pb24gbm9uLVBPRCB0eXBlcwogICAgICAg
ICAgICAgbV9vdGhlci5tX2ZpbmFsaXplckNhbGxiYWNrID0gZmluYWxpemVyOwogICAgICAgICAg
ICAgbV9vdGhlci5tX2ZpbmFsaXplckNvbnRleHQgPSBjb250ZXh0OwotICAgICAgICAgICAgSGVh
cDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHZhbHVlLmltcGwoKS0+Y29zdCgp
KTsKKyAgICAgICAgICAgIEhlYXA6OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdCh2
YWx1ZS5jb3N0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgfkpTU3RyaW5nKCkKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1VTdHJpbmcuY3BwCmluZGV4IDllOTdlMjVkZDM5MjljZTg5ZTMzMGJmMmNkNTM5NTk4
MmJkMDkxNzcuLmVlN2UyNDIzMTRjNzljYTlhNzc2YTVlNmUzYjhkZjIyZTQ2Y2U4YmEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9VU3RyaW5nLmNwcApAQCAtMjU3LDYgKzI1NywxNyBAQCBkb3VibGUgVVN0
cmluZzo6dG9Eb3VibGUoYm9vbCB0b2xlcmF0ZVRyYWlsaW5nSnVuaywgYm9vbCB0b2xlcmF0ZUVt
cHR5U3RyaW5nKSBjbwogICAgICAgICByZXR1cm4gTmFOOwogICAgIH0KIAorICAgIC8vIEZJWE1F
OiBJZiB0b2xlcmF0ZVRyYWlsaW5nSnVuayBpcyB0cnVlLCB0aGVuIHdlIHdhbnQgdG8gdG9sZXJh
dGUganVuayAKKyAgICAvLyBhZnRlciB0aGUgbnVtYmVyLCBldmVuIGlmIGl0IGNvbnRhaW5zIGlu
dmFsaWQgVVRGLTE2IHNlcXVlbmNlcy4gU28gd2UKKyAgICAvLyBzaG91bGRuJ3QgdXNlIHRoZSBV
VEY4U3RyaW5nIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIG51bGwgd2hlbiBpdAorICAgIC8vIGVu
Y291bnRlcnMgaW52YWxpZCBVVEYtMTYuIEZ1cnRoZXIsIHdlIGhhdmUgbm8gbmVlZCB0byBjb252
ZXJ0IHRoZQorICAgIC8vIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIHRvIFVURi04LCBzbyB0aGUgVVRG
OFN0cmluZyBkb2VzIHF1aXRlIGEgYml0IG9mCisgICAgLy8gdW5uZWNlc3Nhcnkgd29yay4KKwor
ICAgIC8vIEZJWE1FOiBUaGUgc3BhY2Ugc2tpcHBpbmcgY29kZSBiZWxvdyBza2lwcyBvbmx5IEFT
Q0lJIHNwYWNlcywgYnV0IGNhbGxlcnMKKyAgICAvLyBuZWVkIHRvIHNraXAgYWxsIFN0cldoaXRl
U3BhY2UuIFRoZSBpc1N0cldoaXRlU3BhY2UgZnVuY3Rpb24gZG9lcyB0aGUKKyAgICAvLyByaWdo
dCB0aGluZyBidXQgcmVxdWlyZXMgVUNoYXIsIG5vdCBjaGFyLCBmb3IgaXRzIGFyZ3VtZW50Lgor
CiAgICAgY29uc3QgVUNoYXIqIGRhdGEgPSB0aGlzLT5jaGFyYWN0ZXJzKCk7CiAgICAgY29uc3Qg
VUNoYXIqIGVuZCA9IGRhdGEgKyBzaXplOwogCkBAIC01ODMsNTIgKzU5NCwyMCBAQCBib29sIG9w
ZXJhdG9yPihjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpCiAgICAgcmV0dXJu
IChsMSA+IGwyKTsKIH0KIAotLy8gSGVscGVyIHRvIHdyaXRlIGEgdGhyZWUtYnl0ZSBVVEYtOCBj
b2RlIHBvaW50IHRvIHRoZSBidWZmZXIsIGNhbGxlciBtdXN0IGNoZWNrIHJvb20gaXMgYXZhaWxh
YmxlLgotc3RhdGljIGlubGluZSB2b2lkIHB1dFVURjhUcmlwbGUoY2hhciomIGJ1ZmZlciwgVUNo
YXIgY2gpCitDU3RyaW5nIFVTdHJpbmc6OlVURjhTdHJpbmcoYm9vbCBzdHJpY3QpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKGNoID49IDB4MDgwMCk7Ci0gICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8
Y2hhcj4oKChjaCA+PiAxMikgJiAweDBGKSB8IDB4RTApOwotICAgICpidWZmZXIrKyA9IHN0YXRp
Y19jYXN0PGNoYXI+KCgoY2ggPj4gNikgJiAweDNGKSB8IDB4ODApOwotICAgICpidWZmZXIrKyA9
IHN0YXRpY19jYXN0PGNoYXI+KChjaCAmIDB4M0YpIHwgMHg4MCk7Ci19Ci0KLUNTdHJpbmcgVVN0
cmluZzo6dXRmOChib29sIHN0cmljdCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0
aGlzLT5sZW5ndGgoKTsKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJh
Y3RlcnMoKTsKLQotICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBh
bGwgdGhlIGNoYXJhY3RlcnMKLSAgICAvLyAoYW4gaW5kaXZpZHVhbCBVVEYtMTYgVUNoYXIgY2Fu
IG9ubHkgZXhwYW5kIHRvIDMgVVRGLTggYnl0ZXMpLgotICAgIC8vIE9wdGltaXphdGlvbiBpZGVh
cywgaWYgd2UgZmluZCB0aGlzIGZ1bmN0aW9uIGlzIGhvdDoKLSAgICAvLyAgKiBXZSBjb3VsZCBz
cGVjdWxhdGl2ZWx5IGNyZWF0ZSBhIENTdHJpbmdCdWZmZXIgdG8gY29udGFpbiAnbGVuZ3RoJyAK
LSAgICAvLyAgICBjaGFyYWN0ZXJzLCBhbmQgcmVzaXplIGlmIG5lY2Vzc2FyeSAoaS5lLiBpZiB0
aGUgYnVmZmVyIGNvbnRhaW5zCi0gICAgLy8gICAgbm9uLWFzY2lpIGNoYXJhY3RlcnMpLiAoQWx0
ZXJuYXRpdmVseSwgc2NhbiB0aGUgYnVmZmVyIGZpcnN0IGZvcgotICAgIC8vICAgIGFzY2lpIGNo
YXJhY3RlcnMsIHNvIHdlIGtub3cgdGhpcyB3aWxsIGJlIHN1ZmZpY2llbnQpLgotICAgIC8vICAq
IFdlIGNvdWxkIGFsbG9jYXRlIGEgQ1N0cmluZ0J1ZmZlciB3aXRoIGFuIGFwcHJvcHJpYXRlIHNp
emUgdG8KLSAgICAvLyAgICBoYXZlIGEgZ29vZCBjaGFuY2Ugb2YgYmVpbmcgYWJsZSB0byB3cml0
ZSB0aGUgc3RyaW5nIGludG8gdGhlCi0gICAgLy8gICAgYnVmZmVyIHdpdGhvdXQgcmVhbGxvY2lu
ZyAoc2F5LCAxLjUgeCBsZW5ndGgpLgotICAgIFZlY3RvcjxjaGFyLCAxMDI0PiBidWZmZXJWZWN0
b3IobGVuZ3RoICogMyk7Ci0KLSAgICBjaGFyKiBidWZmZXIgPSBidWZmZXJWZWN0b3IuZGF0YSgp
OwotICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0ID0gY29udmVydFVURjE2VG9VVEY4KCZjaGFy
YWN0ZXJzLCBjaGFyYWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWZWN0
b3Iuc2l6ZSgpLCBzdHJpY3QpOwotICAgIEFTU0VSVChyZXN1bHQgIT0gdGFyZ2V0RXhoYXVzdGVk
KTsgLy8gKGxlbmd0aCAqIDMpIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkgY29udmVyc2lv
bgotCi0gICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VJbGxlZ2FsKSAvLyBPbmx5IHByb2R1Y2VkIGZy
b20gc3RyaWN0IGNvbnZlcnNpb24uCisgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3Vn
aCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KKyAgICBjb25zdCB1bnNpZ25lZCBsZW4gPSBs
ZW5ndGgoKTsKKyAgICBWZWN0b3I8Y2hhciwgMTAyND4gYnVmZmVyKGxlbiAqIDMpOworCisgICAg
Ly8gQ29udmVydCB0byBydW5zIG9mIDgtYml0IGNoYXJhY3RlcnMuCisgICAgY2hhciogcCA9IGJ1
ZmZlci5kYXRhKCk7CisgICAgY29uc3QgVUNoYXIqIGQgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IFVDaGFyKj4oJmNoYXJhY3RlcnMoKVswXSk7CisgICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQg
PSBjb252ZXJ0VVRGMTZUb1VURjgoJmQsIGQgKyBsZW4sICZwLCBwICsgYnVmZmVyLnNpemUoKSwg
c3RyaWN0KTsKKyAgICBpZiAocmVzdWx0ICE9IGNvbnZlcnNpb25PSykKICAgICAgICAgcmV0dXJu
IENTdHJpbmcoKTsKIAotICAgIC8vIElmIGEgaGlnaCBzdXJyb2dhdGUgaXMgbGVmdCB1bmNvbnZl
cnRlZCwgdHJlYXQgaXQgdGhlIHNhbWUgd2FzIGFzIGFuIHVucGFpcmVkIGhpZ2ggc3Vycm9nYXRl
Ci0gICAgLy8gd291bGQgaGF2ZSBiZWVuIGhhbmRsZWQgaW4gdGhlIG1pZGRsZSBvZiBhIHN0cmlu
ZyB3aXRoIG5vbi1zdHJpY3QgY29udmVyc2lvbiAtIHdoaWNoIGlzIHRvIHNheSwKLSAgICAvLyBz
aW1wbHkgZW5jb2RlIGl0IHRvIFVURi04LgotICAgIGlmIChyZXN1bHQgPT0gc291cmNlRXhoYXVz
dGVkKSB7Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIG9uZSB1bnBhaXJlZCBoaWdoIHN1cnJv
Z2F0ZS4KLSAgICAgICAgQVNTRVJUKChjaGFyYWN0ZXJzICsgMSkgPT0gKHRoaXMtPmNoYXJhY3Rl
cnMoKSArIGxlbmd0aCkpOwotICAgICAgICBBU1NFUlQoKCpjaGFyYWN0ZXJzID49IDB4RDgwMCkg
JiYgKCpjaGFyYWN0ZXJzIDw9IDB4REJGRikpOwotICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUg
cm9vbSBsZWZ0LCBzaW5jZSBvbmUgVUNoYXIgaGFzbid0IGJlZW4gY29udmVydGVkLgotICAgICAg
ICBBU1NFUlQoKGJ1ZmZlciArIDMpIDw9IChidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKSk7
Ci0gICAgICAgIHB1dFVURjhUcmlwbGUoYnVmZmVyLCAqY2hhcmFjdGVycyk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyVmVjdG9yLmRhdGEoKSwgYnVmZmVyIC0gYnVmZmVyVmVj
dG9yLmRhdGEoKSk7CisgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcCAtIGJ1ZmZl
ci5kYXRhKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5n
LmgKaW5kZXggOGQxYjVjMjg2MjJlM2FlYWY3ZmQyOTZjNWIzZjAyNDc2M2VjMzg2Mi4uMWI2YzMz
ZTVhN2VlOTI5ODhhMjlhMDQzMDU2YmQ4ODkwZTJhNmE5NSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9VU3RyaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3Ry
aW5nLmgKQEAgLTM4LDYgKzM4LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3VzaW5nIFdURjo6
UGxhY2VtZW50TmV3QWRvcHRUeXBlOwordXNpbmcgV1RGOjpQbGFjZW1lbnROZXdBZG9wdDsKKwog
Y2xhc3MgVVN0cmluZyB7CiBwdWJsaWM6CiAgICAgLy8gQ29uc3RydWN0IGEgbnVsbCBzdHJpbmcs
IGRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFuIGVtcHR5IHN0cmluZy4KQEAgLTYwLDE4ICs2MywzMCBA
QCBwdWJsaWM6CiAgICAgVVN0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9p
bXBsKGltcGwpIHsgfQogICAgIFVTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9p
bXBsKGltcGwpIHsgfQogCi0gICAgLy8gSW5saW5lIHRoZSBkZXN0cnVjdG9yLgotICAgIEFMV0FZ
U19JTkxJTkUgflVTdHJpbmcoKSB7IH0KLQogICAgIHZvaWQgc3dhcChVU3RyaW5nJiBvKSB7IG1f
aW1wbC5zd2FwKG8ubV9pbXBsKTsgfQogCiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFj
aXR5PgogICAgIHN0YXRpYyBVU3RyaW5nIGFkb3B0KFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNp
dHk+JiB2ZWN0b3IpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KHZlY3Rvcik7IH0KIAotICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQotICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3RoKCk7IH0KKyAgICBz
dGF0aWMgVVN0cmluZyBudW1iZXIoaW50KTsKKyAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9u
ZyBsb25nKTsKKyAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIodW5zaWduZWQpOworICAgIHN0YXRp
YyBVU3RyaW5nIG51bWJlcihsb25nKTsKKyAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIoZG91Ymxl
KTsKIAotICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7
IH0KKyAgICAvLyBOT1RFOiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSB1c2VkIGZvciAqZGVi
dWdnaW5nKiBwdXJwb3NlcyBhcyBpdAorICAgIC8vIGlzIG5laXRoZXIgVW5pY29kZSBzYWZlIG5v
ciBmcmVlIGZyb20gc2lkZSBlZmZlY3RzIG5vciB0aHJlYWQtc2FmZS4KKyAgICBjaGFyKiBhc2Np
aSgpIGNvbnN0OworCisgICAgLyoqCisgICAgICogQ29udmVydCB0aGUgc3RyaW5nIHRvIFVURi04
LCBhc3N1bWluZyBpdCBpcyBVVEYtMTYgZW5jb2RlZC4KKyAgICAgKiBJbiBub24tc3RyaWN0IG1v
ZGUsIHRoaXMgZnVuY3Rpb24gaXMgdG9sZXJhbnQgb2YgYmFkbHkgZm9ybWVkIFVURi0xNiwgaXQK
KyAgICAgKiBjYW4gY3JlYXRlIFVURi04IHN0cmluZ3MgdGhhdCBhcmUgaW52YWxpZCBiZWNhdXNl
IHRoZXkgaGF2ZSBjaGFyYWN0ZXJzIGluCisgICAgICogdGhlIHJhbmdlIFUrRDgwMC1VK0RERkYs
IFUrRkZGRSwgb3IgVStGRkZGLCBidXQgdGhlIFVURi04IHN0cmluZyBpcworICAgICAqIGd1YXJh
bnRlZWQgdG8gYmUgb3RoZXJ3aXNlIHZhbGlkLgorICAgICAqIEluIHN0cmljdCBtb2RlLCBlcnJv
ciBpcyByZXR1cm5lZCBhcyBudWxsIENTdHJpbmcuCisgICAgICovCisgICAgQ1N0cmluZyBVVEY4
U3RyaW5nKGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QKICAgICB7CkBAIC04Nyw4ICsxMDIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX2ltcGwtPmNoYXJhY3RlcnMoKTsKICAgICB9CiAKLSAgICBDU3RyaW5nIHV0ZjgoYm9vbCBz
dHJpY3QgPSBmYWxzZSkgY29uc3Q7Ci0KICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2ltcGwgfHwgaW5kZXggPj0gbV9pbXBs
LT5sZW5ndGgoKSkKQEAgLTk2LDE0ICsxMDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X2ltcGwtPmNoYXJhY3RlcnMoKVtpbmRleF07CiAgICAgfQogCi0gICAgc3RhdGljIFVTdHJpbmcg
bnVtYmVyKGludCk7Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKLSAgICBz
dGF0aWMgVVN0cmluZyBudW1iZXIobG9uZyk7Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxv
bmcgbG9uZyk7Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGRvdWJsZSk7Ci0KLQotCiAgICAg
ZG91YmxlIHRvRG91YmxlKGJvb2wgdG9sZXJhdGVUcmFpbGluZ0p1bmssIGJvb2wgdG9sZXJhdGVF
bXB0eVN0cmluZykgY29uc3Q7CiAgICAgZG91YmxlIHRvRG91YmxlKGJvb2wgdG9sZXJhdGVUcmFp
bGluZ0p1bmspIGNvbnN0OwogICAgIGRvdWJsZSB0b0RvdWJsZSgpIGNvbnN0OwpAQCAtMTEyLDYg
KzExNyw4IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCB0b1VJbnQzMihib29sKiBvaywgYm9vbCB0
b2xlcmF0ZUVtcHR5U3RyaW5nKSBjb25zdDsKICAgICB1aW50MzJfdCB0b1N0cmljdFVJbnQzMihi
b29sKiBvayA9IDApIGNvbnN0OwogCisgICAgdW5zaWduZWQgdG9BcnJheUluZGV4KGJvb2wqIG9r
ID0gMCkgY29uc3Q7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm90Rm91bmQgPSAweEZG
RkZGRkZGdTsKICAgICB1bnNpZ25lZCBmaW5kKGNvbnN0IFVTdHJpbmcmIGYsIHVuc2lnbmVkIHBv
cyA9IDApIGNvbnN0OwogICAgIHVuc2lnbmVkIGZpbmQoVUNoYXIsIHVuc2lnbmVkIHBvcyA9IDAp
IGNvbnN0OwpAQCAtMTIwLDEwICsxMjcsMTkgQEAgcHVibGljOgogCiAgICAgVVN0cmluZyBzdWJz
dHIodW5zaWduZWQgcG9zID0gMCwgdW5zaWduZWQgbGVuID0gMHhGRkZGRkZGRikgY29uc3Q7CiAK
LSAgICAvLyBOT1RFOiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSB1c2VkIGZvciAqZGVidWdn
aW5nKiBwdXJwb3NlcyBhcyBpdAotICAgIC8vIGlzIG5laXRoZXIgVW5pY29kZSBzYWZlIG5vciBm
cmVlIGZyb20gc2lkZSBlZmZlY3RzIG5vciB0aHJlYWQtc2FmZS4KLSAgICBjaGFyKiBhc2NpaSgp
IGNvbnN0OworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQorICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3Ro
KCk7IH0KKworICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0
KCk7IH0KKworICAgIHNpemVfdCBjb3N0KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9p
bXBsKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmNvc3Qo
KTsKKyAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIH5VU3RyaW5nKCkgeyB9CiBwcml2YXRlOgog
ICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2ltcGw7CiB9OwpAQCAtMjAxLDYgKzIxNywxNiBAQCBp
bmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJp
bmcmIHMyKQogICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHMxLmltcGwoKSwgczIuaW1wbCgp
KTsKIH0KIAorLy8gUnVsZSBmcm9tIEVDTUEgMTUuMiBhYm91dCB3aGF0IGFuIGFycmF5IGluZGV4
IGlzLgorLy8gTXVzdCBleGFjdGx5IG1hdGNoIHN0cmluZyBmb3JtIG9mIGFuIHVuc2lnbmVkIGlu
dGVnZXIsIGFuZCBiZSBsZXNzIHRoYW4gMl4zMiAtIDEuCitpbmxpbmUgdW5zaWduZWQgVVN0cmlu
Zzo6dG9BcnJheUluZGV4KGJvb2wqIG9rKSBjb25zdAoreworICAgIHVuc2lnbmVkIGkgPSB0b1N0
cmljdFVJbnQzMihvayk7CisgICAgaWYgKG9rICYmIGkgPj0gMHhGRkZGRkZGRlUpCisgICAgICAg
ICpvayA9IGZhbHNlOworICAgIHJldHVybiBpOworfQorCiAvLyBXZSdkIHJhdGhlciBub3QgZG8g
c2hhcmVkIHN1YnN0cmluZyBhcHBlbmQgZm9yIHNtYWxsIHN0cmluZ3MsIHNpbmNlCiAvLyB0aGlz
IHJ1bnMgdG9vIG11Y2ggcmlzayBvZiBhIHRpbnkgaW5pdGlhbCBzdHJpbmcgaG9sZGluZyBkb3du
IGEKIC8vIGh1Z2UgYnVmZmVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5k
ZXggZTk3OGI2YzdkODYwNWZlNTY3NzMzZThiNDcxMTlmODg1NzNlYzRlOC4uOTAxYTEyMWQwMThj
ZTRjMjJjNGYzZmY5MDgzOWU1OTRmNzg5OWY4NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZT
dHJpbmcuY3BwCkBAIC02NTQsNyArNjU0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dFVURjhU
cmlwbGUoY2hhciomIGJ1ZmZlciwgVUNoYXIgY2gpCiAgICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nh
c3Q8Y2hhcj4oKGNoICYgMHgzRikgfCAweDgwKTsKIH0KIAotQ1N0cmluZyBTdHJpbmc6OnV0Zjgo
Ym9vbCBzdHJpY3QpIGNvbnN0CitDU3RyaW5nIFN0cmluZzo6dXRmOCgpIGNvbnN0CiB7CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzKCk7CkBAIC02NzIsMTIgKzY3MiwxMCBAQCBDU3RyaW5n
IFN0cmluZzo6dXRmOChib29sIHN0cmljdCkgY29uc3QKICAgICBWZWN0b3I8Y2hhciwgMTAyND4g
YnVmZmVyVmVjdG9yKGxlbmd0aCAqIDMpOwogCiAgICAgY2hhciogYnVmZmVyID0gYnVmZmVyVmVj
dG9yLmRhdGEoKTsKLSAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnRVVEYxNlRv
VVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxlbmd0aCwgJmJ1ZmZlciwgYnVmZmVyICsg
YnVmZmVyVmVjdG9yLnNpemUoKSwgc3RyaWN0KTsKKyAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3Vs
dCA9IGNvbnZlcnRVVEYxNlRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxlbmd0aCwg
JmJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSwgZmFsc2UpOworICAgIEFTU0VS
VChyZXN1bHQgIT0gc291cmNlSWxsZWdhbCk7IC8vIE9ubHkgcHJvZHVjZWQgZnJvbSBzdHJpY3Qg
Y29udmVyc2lvbi4KICAgICBBU1NFUlQocmVzdWx0ICE9IHRhcmdldEV4aGF1c3RlZCk7IC8vIChs
ZW5ndGggKiAzKSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYW55IGNvbnZlcnNpb24KIAotICAg
IGlmIChyZXN1bHQgPT0gc291cmNlSWxsZWdhbCkgLy8gT25seSBwcm9kdWNlZCBmcm9tIHN0cmlj
dCBjb252ZXJzaW9uLgotICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotCiAgICAgLy8gSWYgYSBo
aWdoIHN1cnJvZ2F0ZSBpcyBsZWZ0IHVuY29udmVydGVkLCB0cmVhdCBpdCB0aGUgc2FtZSB3YXMg
YXMgYW4gdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUKICAgICAvLyB3b3VsZCBoYXZlIGJlZW4gaGFu
ZGxlZCBpbiB0aGUgbWlkZGxlIG9mIGEgc3RyaW5nIHdpdGggbm9uLXN0cmljdCBjb252ZXJzaW9u
IC0gd2hpY2ggaXMgdG8gc2F5LAogICAgIC8vIHNpbXBseSBlbmNvZGUgaXQgdG8gVVRGLTguCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGY3OWNjNWQ5ODQ0YWJhNzk4OGUxZjhl
NjdlYzI3YmY4Nzg1MTYyMGEuLmJkMzBlZWRkYTNhMGQ1NzdhZjQ5MmZmYjBiODBhMjI1ZTBkMGQ0
YzMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC05NywyMSArOTcsMTggQEAg
cHVibGljOgogICAgIFN0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBs
KGltcGwpIHsgfQogICAgIFN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwo
aW1wbCkgeyB9CiAKLSAgICAvLyBJbmxpbmUgdGhlIGRlc3RydWN0b3IuCi0gICAgQUxXQVlTX0lO
TElORSB+U3RyaW5nKCkgeyB9Ci0KICAgICB2b2lkIHN3YXAoU3RyaW5nJiBvKSB7IG1faW1wbC5z
d2FwKG8ubV9pbXBsKTsgfQogCisgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hp
Y2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCisg
ICAgU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX2ltcGwoV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQor
CiAgICAgc3RhdGljIFN0cmluZyBhZG9wdChTdHJpbmdCdWZmZXImIGJ1ZmZlcikgeyByZXR1cm4g
U3RyaW5nSW1wbDo6YWRvcHQoYnVmZmVyKTsgfQogICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KICAgICBzdGF0aWMgU3RyaW5nIGFkb3B0KFZlY3RvcjxVQ2hhciwgaW5saW5lQ2Fw
YWNpdHk+JiB2ZWN0b3IpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KHZlY3Rvcik7IH0KIAot
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3RoKCk7IH0KLQot
ICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KIAot
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2ltcGwpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKQEAgLTEyNSwzMCArMTIyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1f
aW1wbC0+Y2hhcmFjdGVycygpOwogICAgIH0KIAotICAgIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7
Ci0gICAgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwotCisgICAgY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CisgICAgCiAgICAgVUNo
YXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICgh
bV9pbXBsIHx8IGluZGV4ID49IG1faW1wbC0+bGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpW2luZGV4XTsKICAgICB9Ci0K
LSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihzaG9ydCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1i
ZXIodW5zaWduZWQgc2hvcnQpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGludCk7Ci0gICAg
c3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVy
KGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcpOwotICAgIHN0
YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIo
dW5zaWduZWQgbG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihkb3VibGUpOwot
Ci0KLQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwot
ICAgIAogICAgIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7IC8v
IERpdHRvLgogICAgIAogICAgIGJvb2wgY29udGFpbnMoVUNoYXIgYykgY29uc3QgeyByZXR1cm4g
ZmluZChjKSAhPSAtMTsgfQpAQCAtMjA5LDYgKzE5MCwxNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0
dXJuIHRoZSBzdHJpbmcgd2l0aCBjYXNlIGZvbGRlZCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21w
YXJpc29uLgogICAgIFN0cmluZyBmb2xkQ2FzZSgpIGNvbnN0OwogCisgICAgc3RhdGljIFN0cmlu
ZyBudW1iZXIoc2hvcnQpOworICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIHNob3J0
KTsKKyAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQpOworICAgIHN0YXRpYyBTdHJpbmcgbnVt
YmVyKHVuc2lnbmVkKTsKKyAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nKTsKKyAgICBzdGF0
aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKKyAgICBzdGF0aWMgU3RyaW5nIG51bWJl
cihsb25nIGxvbmcpOworICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9u
Zyk7CisgICAgc3RhdGljIFN0cmluZyBudW1iZXIoZG91YmxlKTsKKwogI2lmICFQTEFURk9STShR
VCkKICAgICBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFyICosIC4uLikgV1RGX0FUVFJJ
QlVURV9QUklOVEYoMSwgMik7CiAjZWxzZQpAQCAtMjQ5LDYgKzI0MCwxMSBAQCBwdWJsaWM6CiAg
ICAgLy8gdG8gZXZlciBwcmVmZXIgY29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCiAg
ICAgU3RyaW5nIHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7CiAKKyAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3RoKCk7IH0KKworICAgIFN0
cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KKwogI2lmIFBM
QVRGT1JNKENGKQogICAgIFN0cmluZyhDRlN0cmluZ1JlZik7CiAgICAgQ0ZTdHJpbmdSZWYgY3Jl
YXRlQ0ZTdHJpbmcoKSBjb25zdDsKQEAgLTI4MCw2ICsyNzYsOSBAQCBwdWJsaWM6CiAKICAgICBW
ZWN0b3I8Y2hhcj4gYXNjaWkoKSBjb25zdDsKIAorICAgIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7
CisgICAgQ1N0cmluZyB1dGY4KCkgY29uc3Q7CisKICAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3Qg
Y2hhciopOwogCkBAIC0yOTEsMTAgKzI5MCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29udGFp
bnNPbmx5QVNDSUkoKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFj
dGVycygpLCBsZW5ndGgoKSk7IH0KIAotICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMs
IHdoaWNoIGFyZSBvbmx5IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVk
LgotICAgIFN0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9pbXBsKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
IH0KLQogcHJpdmF0ZToKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9pbXBsOwogfTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNhMGIx
ODQwNWU5YjFhYzFhMTg5YzNhZTY3MDIzMzUzMTkyZDZlZi4uNGVmYWU0N2E5NWI3NmY0NWJkMDE0
YjhkZTZhOWJmN2RmNjg2MmMzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0wOC0xMiAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjY1Mjk1LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC82NTI5NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDM5NTAKKworICAgICAgICBJdCBicm9rZSA0IHNwdXRuaWsgdGVzdHMgKFJlcXVlc3RlZCBi
eSBPc3N5IG9uICN3ZWJraXQpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fRW51bWVyYXRl
KToKKyAgICAgICAgKiBicmlkZ2UvYy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6Y29udmVydFZhbHVlVG9OUFZhcmlhbnQpOgorICAgICAgICAqIGJyaWRnZS9qbmkvSk5J
QnJpZGdlLmNwcDoKKyAgICAgICAgKEphdmFQYXJhbWV0ZXI6OkphdmFQYXJhbWV0ZXIpOgorICAg
ICAgICAoSmF2YU1ldGhvZDo6SmF2YU1ldGhvZCk6CisgICAgICAgIChKYXZhTWV0aG9kOjpzaWdu
YXR1cmUpOgorICAgICAgICAoSmF2YU1ldGhvZDo6bWV0aG9kSUQpOgorICAgICAgICAqIGJyaWRn
ZS9qbmkvSk5JQnJpZGdlLmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhU3RyaW5nOjpV
VEY4U3RyaW5nKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFQYXJhbWV0ZXI6OnR5cGUp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YU1ldGhvZDo6cmV0dXJuVHlwZSk6CisgICAg
ICAgICogYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW06CisgICAgICAgIChKYXZhSlNPYmplY3Q6
OmNhbGwpOgorICAgICAgICAoSmF2YUpTT2JqZWN0OjpldmFsKToKKyAgICAgICAgKEphdmFKU09i
amVjdDo6Z2V0TWVtYmVyKToKKyAgICAgICAgKEphdmFKU09iamVjdDo6c2V0TWVtYmVyKToKKyAg
ICAgICAgKEphdmFKU09iamVjdDo6cmVtb3ZlTWVtYmVyKToKKyAgICAgICAgKEphdmFKU09iamVj
dDo6Y29udmVydEpPYmplY3RUb1ZhbHVlKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KTklC
cmlkZ2VKU0MuY3BwOgorICAgICAgICAoSmF2YUZpZWxkOjpKYXZhRmllbGQpOgorICAgICAgICAo
SmF2YUZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZSk6CisgICAgICAgIChKYXZhRmllbGQ6OnNldFZh
bHVlVG9JbnN0YW5jZSk6CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSk5JQnJpZGdlSlNDLmg6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhRmllbGQ6OnR5cGUpOgorICAgICAgICAqIGJy
aWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHA6CisgICAgICAgIChKYXZhSW5zdGFuY2U6
Omludm9rZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2YVN0cmluZ0pTQy5o
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YVN0cmluZ0ltcGw6OlVURjhTdHJpbmcpOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGlt
ZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6
cHV0KToKKwogMjAxMC0wOC0xMiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2NTI4NCBhbmQgcjY1Mjg4LiAg
QnJva2UgY2hyb21pdW0gY29tcGlsZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYzM1ZWY4OGM1ZjUyYmRmNzA0YzljZGFiZDIyNWZiMjQ2ZTAxYjBiNi4u
ZjllZDFiNDMxMzk2YmUwYzFmZDg3ZTEwN2Q2NTFjMTcyYmYzMDI0MyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwMjE1LDcgKzIwMjE1LDYgQEAKIAkJ
CWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMw
ODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVj
dCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwot
CQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5n
cyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggZmM1N2YzMTYzMDRiMmNiNjA3NzUxMzI4
MWU1ODM3YTFlY2VkZGMzZi4uYTY3YWQzM2FmYzIzZjI4NzYxNzZkMzY1MjRlNmE1YTg4MTMyZjg4
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTI3MSw3
ICsyNzEsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eQogCiAgICAgLy8gYWxsb3cgd2luZG93
WzFdIG9yIHBhcmVudFsxXSBldGMuICgjNTY5ODMpCiAgICAgYm9vbCBvazsKLSAgICB1bnNpZ25l
ZCBpID0gdG9BcnJheUluZGV4KHByb3BlcnR5TmFtZS51c3RyaW5nKCksICZvayk7CisgICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgoJm9rKTsKICAgICBpZiAob2sgJiYg
aSA8IGltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5jaGlsZENvdW50KCkpIHsKICAgICAgICAgc2xv
dC5zZXRDdXN0b21JbmRleCh0aGlzLCBpLCBpbmRleEdldHRlcik7CiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByCiAgICAgfQog
ICAgIAogICAgIGJvb2wgb2s7Ci0gICAgdW5zaWduZWQgaSA9IHRvQXJyYXlJbmRleChwcm9wZXJ0
eU5hbWUudXN0cmluZygpLCAmb2spOworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9B
cnJheUluZGV4KCZvayk7CiAgICAgaWYgKG9rICYmIGkgPCBpbXBsKCktPmZyYW1lKCktPnRyZWUo
KS0+Y2hpbGRDb3VudCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBz
bG90LnNldEN1c3RvbUluZGV4KHRoaXMsIGksIGluZGV4R2V0dGVyKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0
LmNwcAppbmRleCAxNzI3MGViZmM2ODkwZjI2Njk4YzJhZjY5YjI5NWFlOTViODg3OTVjLi5kNDU0
Yzc0ZTA4ODI1NjQzNzY0ODM4NzBiNDY0ZGY0ZWJjNjViOWE4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3Qu
Y3BwCkBAIC00NzQsNyArNDc0LDcgQEAgYm9vbCBfTlBOX0VudW1lcmF0ZShOUFAsIE5QT2JqZWN0
KiBvLCBOUElkZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQKICAgICAgICAg
TlBJZGVudGlmaWVyKiBpZGVudGlmaWVycyA9IHN0YXRpY19jYXN0PE5QSWRlbnRpZmllcio+KG1h
bGxvYyhzaXplb2YoTlBJZGVudGlmaWVyKSAqIHNpemUpKTsKICAgICAgICAgCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBpZGVudGlmaWVy
c1tpXSA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihwcm9wZXJ0eU5hbWVzW2ldLnVzdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0gX05QTl9HZXRT
dHJpbmdJZGVudGlmaWVyKHByb3BlcnR5TmFtZXNbaV0udXN0cmluZygpLlVURjhTdHJpbmcoKS5k
YXRhKCkpOwogCiAgICAgICAgICppZGVudGlmaWVyID0gaWRlbnRpZmllcnM7CiAgICAgICAgICpj
b3VudCA9IHNpemU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAg
Yi9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKaW5kZXggYjE2MGY5ZjIwM2YyYTI1YmNj
YTIzZDI1Y2UwNzJjZjU1YmY0OGZmNS4uNDQzZWNjYTdjZTM3MTkzNjk0NDI0NTMzMGQ5YWRjMDFi
ZTA5Njg5MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCisrKyBi
L1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIGNv
bnZlcnRWYWx1ZVRvTlBWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgTlBW
YXJpYW50KiByZXN1bHQpCiAKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAgICBV
U3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKTsKLSAgICAgICAgQ1N0cmluZyBj
c3RyaW5nID0gdXN0cmluZy51dGY4KCk7CisgICAgICAgIENTdHJpbmcgY3N0cmluZyA9IHVzdHJp
bmcuVVRGOFN0cmluZygpOwogICAgICAgICBOUFN0cmluZyBzdHJpbmcgPSB7IChjb25zdCBOUFVU
RjgqKWNzdHJpbmcuZGF0YSgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY3N0cmluZy5sZW5ndGgo
KSkgfTsKICAgICAgICAgTlBOX0luaXRpYWxpemVWYXJpYW50V2l0aFN0cmluZ0NvcHkocmVzdWx0
LCAmc3RyaW5nKTsKICAgICB9IGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwIGIvV2ViQ29yZS9icmlkZ2Uvam5p
L0pOSUJyaWRnZS5jcHAKaW5kZXggOGZhMjY3ODhhMjA0YWQxYmNmNzQyYjJkZDY4MTc3N2FhMDFj
ODc1Mi4uMzVhMGQzNGY1OTA0ZDlkOThmYzJmYzU3YWMxZDY1MjE1NDg2NzU3ZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9icmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHAKKysrIGIvV2ViQ29yZS9icmlkZ2Uv
am5pL0pOSUJyaWRnZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiBKYXZhUGFyYW1ldGVyOjpKYXZhUGFyYW1ldGVyKEpOSUVudiogZW52LCBqc3RyaW5nIHR5
cGUpCiB7CiAgICAgbV90eXBlID0gSmF2YVN0cmluZyhlbnYsIHR5cGUpOwotICAgIG1fSk5JVHlw
ZSA9IEpOSVR5cGVGcm9tQ2xhc3NOYW1lKG1fdHlwZS51dGY4KCkpOworICAgIG1fSk5JVHlwZSA9
IEpOSVR5cGVGcm9tQ2xhc3NOYW1lKG1fdHlwZS5VVEY4U3RyaW5nKCkpOwogfQogCiBKYXZhTWV0
aG9kOjpKYXZhTWV0aG9kKEpOSUVudiogZW52LCBqb2JqZWN0IGFNZXRob2QpCkBAIC01NSw3ICs1
NSw3IEBAIEphdmFNZXRob2Q6OkphdmFNZXRob2QoSk5JRW52KiBlbnYsIGpvYmplY3QgYU1ldGhv
ZCkKICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihyZXR1cm5UeXBlKTsKICAgICB9CiAgICAg
bV9yZXR1cm5UeXBlID0gSmF2YVN0cmluZyhlbnYsIHJldHVyblR5cGVOYW1lKTsKLSAgICBtX0pO
SVJldHVyblR5cGUgPSBKTklUeXBlRnJvbUNsYXNzTmFtZShtX3JldHVyblR5cGUudXRmOCgpKTsK
KyAgICBtX0pOSVJldHVyblR5cGUgPSBKTklUeXBlRnJvbUNsYXNzTmFtZShtX3JldHVyblR5cGUu
VVRGOFN0cmluZygpKTsKICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKHJldHVyblR5cGVOYW1lKTsK
IAogICAgIC8vIEdldCBtZXRob2QgbmFtZQpAQCAtMTQ4LDcgKzE0OCw3IEBAIGNvbnN0IGNoYXIq
IEphdmFNZXRob2Q6OnNpZ25hdHVyZSgpIGNvbnN0CiAgICAgICAgIH0KICAgICAgICAgc2lnbmF0
dXJlQnVpbGRlci5hcHBlbmQoIikiKTsKIAotICAgICAgICBjb25zdCBjaGFyKiByZXR1cm5UeXBl
ID0gbV9yZXR1cm5UeXBlLnV0ZjgoKTsKKyAgICAgICAgY29uc3QgY2hhciogcmV0dXJuVHlwZSA9
IG1fcmV0dXJuVHlwZS5VVEY4U3RyaW5nKCk7CiAgICAgICAgIGlmIChtX0pOSVJldHVyblR5cGUg
PT0gYXJyYXlfdHlwZSkKICAgICAgICAgICAgIGFwcGVuZENsYXNzTmFtZShzaWduYXR1cmVCdWls
ZGVyLCByZXR1cm5UeXBlKTsKICAgICAgICAgZWxzZSB7CkBAIC0xNzQsNyArMTc0LDcgQEAgSk5J
VHlwZSBKYXZhTWV0aG9kOjpKTklSZXR1cm5UeXBlKCkgY29uc3QKIGptZXRob2RJRCBKYXZhTWV0
aG9kOjptZXRob2RJRChqb2JqZWN0IG9iaikgY29uc3QKIHsKICAgICBpZiAoIW1fbWV0aG9kSUQp
Ci0gICAgICAgIG1fbWV0aG9kSUQgPSBnZXRNZXRob2RJRChvYmosIG1fbmFtZS51dGY4KCksIHNp
Z25hdHVyZSgpKTsKKyAgICAgICAgbV9tZXRob2RJRCA9IGdldE1ldGhvZElEKG9iaiwgbV9uYW1l
LlVURjhTdHJpbmcoKSwgc2lnbmF0dXJlKCkpOwogICAgIHJldHVybiBtX21ldGhvZElEOwogfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9qbmkvSk5JQnJpZGdlLmggYi9XZWJDb3JlL2Jy
aWRnZS9qbmkvSk5JQnJpZGdlLmgKaW5kZXggNGY1ZTZiN2ZhZjBmMzY1ODQ3ZWMzYjBhM2E5NjEw
YWM1MDg3ZjVmYS4uNzgyMDJhZTY5MjhlM2YyMDA4MWJkOGNlMWJhNjQyY2I2MTY1MjU3OCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2Uvam5pL0pOSUJyaWRnZS5oCisrKyBiL1dlYkNvcmUvYnJp
ZGdlL2puaS9KTklCcmlkZ2UuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
aW1wbC5pbml0KGdldEpOSUVudigpLCBzKTsKICAgICB9CiAKLSAgICBjb25zdCBjaGFyKiB1dGY4
KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLnV0ZjgoKTsgfQorICAgIGNvbnN0IGNoYXIqIFVURjhT
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuVVRGOFN0cmluZygpOyB9CiAgICAgY29uc3Qg
amNoYXIqIHVjaGFycygpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC51Y2hhcnMoKTsgfQogICAgIGlu
dCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2ltcGwubGVuZ3RoKCk7IH0KICNpZiBVU0UoSlND
KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgSmF2YVBhcmFtZXRlcihKTklFbnYqLCBq
c3RyaW5nIHR5cGUpOwogICAgIHZpcnR1YWwgfkphdmFQYXJhbWV0ZXIoKSB7IH0KIAotICAgIFJ1
bnRpbWVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUudXRmOCgpOyB9CisgICAgUnVu
dGltZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5VVEY4U3RyaW5nKCk7IH0KICAg
ICBKTklUeXBlIGdldEpOSVR5cGUoKSBjb25zdCB7IHJldHVybiBtX0pOSVR5cGU7IH0KIAogcHJp
dmF0ZToKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIH5KYXZhTWV0aG9kKCk7CiAKICAg
ICBjb25zdCBKYXZhU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAg
UnVudGltZVR5cGUgcmV0dXJuVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmV0dXJuVHlwZS51dGY4
KCk7IH0KKyAgICBSdW50aW1lVHlwZSByZXR1cm5UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXR1
cm5UeXBlLlVURjhTdHJpbmcoKTsgfQogICAgIEphdmFQYXJhbWV0ZXIqIHBhcmFtZXRlckF0KGlu
dCBpKSBjb25zdCB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW2ldOyB9CiAgICAgaW50IG51bVBhcmFt
ZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcmFtZXRlcnM7IH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbSBiL1dlYkNvcmUvYnJpZGdlL2puaS9q
bmlfanNvYmplY3QubW0KaW5kZXggZDdkM2E1NDJiNTU1ODE3NjFjZjMwMWYwYWQwNTUxNWEyMDIz
NmRhOC4uNDQwNmMzYzZjNTQ2YTA5ZDU2MTBhNTUwYzI2OGUxM2EzN2NiMjgxYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbQorKysgYi9XZWJDb3JlL2JyaWRn
ZS9qbmkvam5pX2pzb2JqZWN0Lm1tCkBAIC0yNzYsNyArMjc2LDcgQEAgUm9vdE9iamVjdCogSmF2
YUpTT2JqZWN0Ojpyb290T2JqZWN0KCkgY29uc3QKIAogam9iamVjdCBKYXZhSlNPYmplY3Q6OmNh
bGwoanN0cmluZyBtZXRob2ROYW1lLCBqb2JqZWN0QXJyYXkgYXJncykgY29uc3QKIHsKLSAgICBM
T0coTGl2ZUNvbm5lY3QsICJKYXZhSlNPYmplY3Q6OmNhbGwgbWV0aG9kTmFtZSA9ICVzIiwgSmF2
YVN0cmluZyhtZXRob2ROYW1lKS51dGY4KCkpOworICAgIExPRyhMaXZlQ29ubmVjdCwgIkphdmFK
U09iamVjdDo6Y2FsbCBtZXRob2ROYW1lID0gJXMiLCBKYXZhU3RyaW5nKG1ldGhvZE5hbWUpLlVU
RjhTdHJpbmcoKSk7CiAKICAgICBSb290T2JqZWN0KiByb290T2JqZWN0ID0gdGhpcy0+cm9vdE9i
amVjdCgpOwogICAgIGlmICghcm9vdE9iamVjdCkKQEAgLTMwNSw3ICszMDUsNyBAQCBqb2JqZWN0
IEphdmFKU09iamVjdDo6Y2FsbChqc3RyaW5nIG1ldGhvZE5hbWUsIGpvYmplY3RBcnJheSBhcmdz
KSBjb25zdAogCiBqb2JqZWN0IEphdmFKU09iamVjdDo6ZXZhbChqc3RyaW5nIHNjcmlwdCkgY29u
c3QKIHsKLSAgICBMT0coTGl2ZUNvbm5lY3QsICJKYXZhSlNPYmplY3Q6OmV2YWwgc2NyaXB0ID0g
JXMiLCBKYXZhU3RyaW5nKHNjcmlwdCkudXRmOCgpKTsKKyAgICBMT0coTGl2ZUNvbm5lY3QsICJK
YXZhSlNPYmplY3Q6OmV2YWwgc2NyaXB0ID0gJXMiLCBKYXZhU3RyaW5nKHNjcmlwdCkuVVRGOFN0
cmluZygpKTsKICAgICAKICAgICBKU1ZhbHVlIHJlc3VsdDsKIApAQCAtMzMyLDcgKzMzMiw3IEBA
IGpvYmplY3QgSmF2YUpTT2JqZWN0OjpldmFsKGpzdHJpbmcgc2NyaXB0KSBjb25zdAogCiBqb2Jq
ZWN0IEphdmFKU09iamVjdDo6Z2V0TWVtYmVyKGpzdHJpbmcgbWVtYmVyTmFtZSkgY29uc3QKIHsK
LSAgICBMT0coTGl2ZUNvbm5lY3QsICJKYXZhSlNPYmplY3Q6OmdldE1lbWJlciAoJXApIG1lbWJl
ck5hbWUgPSAlcyIsIF9pbXAsIEphdmFTdHJpbmcobWVtYmVyTmFtZSkudXRmOCgpKTsKKyAgICBM
T0coTGl2ZUNvbm5lY3QsICJKYXZhSlNPYmplY3Q6OmdldE1lbWJlciAoJXApIG1lbWJlck5hbWUg
PSAlcyIsIF9pbXAsIEphdmFTdHJpbmcobWVtYmVyTmFtZSkuVVRGOFN0cmluZygpKTsKIAogICAg
IFJvb3RPYmplY3QqIHJvb3RPYmplY3QgPSB0aGlzLT5yb290T2JqZWN0KCk7CiAgICAgaWYgKCFy
b290T2JqZWN0KQpAQCAtMzQ4LDcgKzM0OCw3IEBAIGpvYmplY3QgSmF2YUpTT2JqZWN0OjpnZXRN
ZW1iZXIoanN0cmluZyBtZW1iZXJOYW1lKSBjb25zdAogCiB2b2lkIEphdmFKU09iamVjdDo6c2V0
TWVtYmVyKGpzdHJpbmcgbWVtYmVyTmFtZSwgam9iamVjdCB2YWx1ZSkgY29uc3QKIHsKLSAgICBM
T0coTGl2ZUNvbm5lY3QsICJKYXZhSlNPYmplY3Q6OnNldE1lbWJlciBtZW1iZXJOYW1lID0gJXMs
IHZhbHVlID0gJXAiLCBKYXZhU3RyaW5nKG1lbWJlck5hbWUpLnV0ZjgoKSwgdmFsdWUpOworICAg
IExPRyhMaXZlQ29ubmVjdCwgIkphdmFKU09iamVjdDo6c2V0TWVtYmVyIG1lbWJlck5hbWUgPSAl
cywgdmFsdWUgPSAlcCIsIEphdmFTdHJpbmcobWVtYmVyTmFtZSkuVVRGOFN0cmluZygpLCB2YWx1
ZSk7CiAKICAgICBSb290T2JqZWN0KiByb290T2JqZWN0ID0gdGhpcy0+cm9vdE9iamVjdCgpOwog
ICAgIGlmICghcm9vdE9iamVjdCkKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIEphdmFKU09iamVj
dDo6c2V0TWVtYmVyKGpzdHJpbmcgbWVtYmVyTmFtZSwgam9iamVjdCB2YWx1ZSkgY29uc3QKIAog
dm9pZCBKYXZhSlNPYmplY3Q6OnJlbW92ZU1lbWJlcihqc3RyaW5nIG1lbWJlck5hbWUpIGNvbnN0
CiB7Ci0gICAgTE9HKExpdmVDb25uZWN0LCAiSmF2YUpTT2JqZWN0OjpyZW1vdmVNZW1iZXIgbWVt
YmVyTmFtZSA9ICVzIiwgSmF2YVN0cmluZyhtZW1iZXJOYW1lKS51dGY4KCkpOworICAgIExPRyhM
aXZlQ29ubmVjdCwgIkphdmFKU09iamVjdDo6cmVtb3ZlTWVtYmVyIG1lbWJlck5hbWUgPSAlcyIs
IEphdmFTdHJpbmcobWVtYmVyTmFtZSkuVVRGOFN0cmluZygpKTsKIAogICAgIFJvb3RPYmplY3Qq
IHJvb3RPYmplY3QgPSB0aGlzLT5yb290T2JqZWN0KCk7CiAgICAgaWYgKCFyb290T2JqZWN0KQpA
QCAtNTcyLDcgKzU3Miw3IEBAIEpTVmFsdWUgSmF2YUpTT2JqZWN0Ojpjb252ZXJ0Sk9iamVjdFRv
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBqb2JqZWN0IHRoZU9iamVjdCkKICAgICAvLyBjcmVhdGVk
IGFib3ZlIHRvIHdyYXAgaW50ZXJuYWwgYnJvd3NlciBvYmplY3RzLiBUaGUgY29uc3RydWN0b3Ig
b2YgdGhpcyBjbGFzcyB0YWtlcyB0aGUgbmF0aXZlCiAgICAgLy8gcG9pbnRlciBhbmQgc3RvcmVz
IGl0IGluIHRoaXMgb2JqZWN0LCBzbyB0aGF0IGl0IGNhbiBiZSByZXRyaWV2ZWQgYmVsb3cuCiAg
ICAganN0cmluZyBjbGFzc05hbWUgPSAoanN0cmluZyljYWxsSk5JTWV0aG9kPGpvYmplY3Q+KGNs
YXNzT2ZJbnN0YW5jZSwgImdldE5hbWUiLCAiKClMamF2YS9sYW5nL1N0cmluZzsiKTsKLSAgICBp
ZiAoIWNsYXNzTmFtZSB8fCAoc3RyY21wKEphdmFTdHJpbmcoY2xhc3NOYW1lKS51dGY4KCksICJz
dW4ucGx1Z2luLmphdmFzY3JpcHQud2Via2l0LkpTT2JqZWN0IikgIT0gMCkpIHsKKyAgICBpZiAo
IWNsYXNzTmFtZSB8fCAoc3RyY21wKEphdmFTdHJpbmcoY2xhc3NOYW1lKS5VVEY4U3RyaW5nKCks
ICJzdW4ucGx1Z2luLmphdmFzY3JpcHQud2Via2l0LkpTT2JqZWN0IikgIT0gMCkpIHsKICAgICAg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAgICAgcmV0dXJuIEph
dmFJbnN0YW5jZTo6Y3JlYXRlKHRoZU9iamVjdCwgX3Jvb3RPYmplY3QpLT5jcmVhdGVSdW50aW1l
T2JqZWN0KGV4ZWMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdlL2puaS9qc2Mv
Sk5JQnJpZGdlSlNDLmNwcCBiL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSk5JQnJpZGdlSlNDLmNw
cAppbmRleCA5NjZkOTQ2OTQyYzkyNDRiYjY2ZDk3ZmE1Nzc1NTRjYTkzODhlMjE3Li5kNWRjMWNi
MTg1NTg4MWQ4M2Y0Njk0MTIzMWVkMmJhNDgwNzMwYWMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jy
aWRnZS9qbmkvanNjL0pOSUJyaWRnZUpTQy5jcHAKKysrIGIvV2ViQ29yZS9icmlkZ2Uvam5pL2pz
Yy9KTklCcmlkZ2VKU0MuY3BwCkBAIC00OSw3ICs0OSw3IEBAIEphdmFGaWVsZDo6SmF2YUZpZWxk
KEpOSUVudiogZW52LCBqb2JqZWN0IGFGaWVsZCkKICAgICAgICAgZmllbGRUeXBlTmFtZSA9IGVu
di0+TmV3U3RyaW5nVVRGKCI8VW5rbm93bj4iKTsKICAgICBtX3R5cGUgPSBKYXZhU3RyaW5nKGVu
diwgZmllbGRUeXBlTmFtZSk7CiAKLSAgICBtX0pOSVR5cGUgPSBKTklUeXBlRnJvbUNsYXNzTmFt
ZShtX3R5cGUudXRmOCgpKTsKKyAgICBtX0pOSVR5cGUgPSBKTklUeXBlRnJvbUNsYXNzTmFtZSht
X3R5cGUuVVRGOFN0cmluZygpKTsKIAogICAgIC8vIEdldCBmaWVsZCBuYW1lCiAgICAganN0cmlu
ZyBmaWVsZE5hbWUgPSBzdGF0aWNfY2FzdDxqc3RyaW5nPihjYWxsSk5JTWV0aG9kPGpvYmplY3Q+
KGFGaWVsZCwgImdldE5hbWUiLCAiKClMamF2YS9sYW5nL1N0cmluZzsiKSk7CkBAIC0xNTAsNyAr
MTUwLDcgQEAgSlNWYWx1ZSBKYXZhRmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSW5zdGFuY2UqIGkpIGNvbnN0CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIExPRyhMaXZlQ29ubmVjdCwgIkphdmFGaWVsZDo6dmFsdWVGcm9tSW5zdGFuY2UgZ2V0dGlu
ZyAlcyA9ICVzIiwgVVN0cmluZyhuYW1lKCkpLnV0ZjgoKS5kYXRhKCksIGpzcmVzdWx0LnRvU3Ry
aW5nKGV4ZWMpLmFzY2lpKCkpOworICAgIExPRyhMaXZlQ29ubmVjdCwgIkphdmFGaWVsZDo6dmFs
dWVGcm9tSW5zdGFuY2UgZ2V0dGluZyAlcyA9ICVzIiwgVVN0cmluZyhuYW1lKCkpLlVURjhTdHJp
bmcoKS5kYXRhKCksIGpzcmVzdWx0LnRvU3RyaW5nKGV4ZWMpLmFzY2lpKCkpOwogCiAgICAgcmV0
dXJuIGpzcmVzdWx0OwogfQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgSmF2YUZpZWxkOjpzZXRW
YWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaSwgSlNWYWx1
ZSBhCiAgICAgY29uc3QgSmF2YUluc3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PGNvbnN0
IEphdmFJbnN0YW5jZSo+KGkpOwogICAgIGp2YWx1ZSBqYXZhVmFsdWUgPSBjb252ZXJ0VmFsdWVU
b0pWYWx1ZShleGVjLCBpLT5yb290T2JqZWN0KCksIGFWYWx1ZSwgbV9KTklUeXBlLCB0eXBlKCkp
OwogCi0gICAgTE9HKExpdmVDb25uZWN0LCAiSmF2YUZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2Ug
c2V0dGluZyB2YWx1ZSAlcyB0byAlcyIsIFVTdHJpbmcobmFtZSgpKS51dGY4KCkuZGF0YSgpLCBh
VmFsdWUudG9TdHJpbmcoZXhlYykuYXNjaWkoKSk7CisgICAgTE9HKExpdmVDb25uZWN0LCAiSmF2
YUZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2Ugc2V0dGluZyB2YWx1ZSAlcyB0byAlcyIsIFVTdHJp
bmcobmFtZSgpKS5VVEY4U3RyaW5nKCkuZGF0YSgpLCBhVmFsdWUudG9TdHJpbmcoZXhlYykuYXNj
aWkoKSk7CiAKICAgICBzd2l0Y2ggKG1fSk5JVHlwZSkgewogICAgIGNhc2UgYXJyYXlfdHlwZToK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSk5JQnJpZGdlSlNDLmggYi9XZWJD
b3JlL2JyaWRnZS9qbmkvanNjL0pOSUJyaWRnZUpTQy5oCmluZGV4IGFmYjFiY2U5YzU4YjRiNGNk
Y2MxNzc2M2IzNjZkMWZjZDljNDM4OTEuLmRkNjU0MTcyZjVhMGI2YmFiYjEwOWVmMWUzYjQ3YjZh
YTc2ZDU3YzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSk5JQnJpZGdlSlND
LmgKKysrIGIvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KTklCcmlkZ2VKU0MuaApAQCAtNDUsNyAr
NDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVj
U3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OwogCiAgICAgY29uc3QgSmF2
YVN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIHZpcnR1YWwgUnVu
dGltZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS51dGY4KCk7IH0KKyAgICB2aXJ0
dWFsIFJ1bnRpbWVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUuVVRGOFN0cmluZygp
OyB9CiAKICAgICBKTklUeXBlIGdldEpOSVR5cGUoKSBjb25zdCB7IHJldHVybiBtX0pOSVR5cGU7
IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0Mu
Y3BwIGIvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCmluZGV4IDY5
OWRkOGUxZjE4YjBjZmE4MTkyMWYyY2ZkN2MyYjlkNWJhOWVkOWYuLjg4MTg2YzU5ODg4OTVlYmU4
MzZhMDM1ODY3NmFkZjJkY2NiNTRlNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL2puaS9q
c2MvSmF2YUluc3RhbmNlSlNDLmNwcAorKysgYi9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJ
bnN0YW5jZUpTQy5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCBKU1ZhbHVlIEphdmFJbnN0YW5jZTo6
aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhv
ZAogICAgIH0KIAogICAgIGNvbnN0IEphdmFNZXRob2QqIGpNZXRob2QgPSBzdGF0aWNfY2FzdDxj
b25zdCBKYXZhTWV0aG9kKj4obWV0aG9kKTsKLSAgICBMT0coTGl2ZUNvbm5lY3QsICJKYXZhSW5z
dGFuY2U6Omludm9rZU1ldGhvZCBjYWxsICVzICVzIG9uICVwIiwgVVN0cmluZyhqTWV0aG9kLT5u
YW1lKCkpLnV0ZjgoKS5kYXRhKCksIGpNZXRob2QtPnNpZ25hdHVyZSgpLCBtX2luc3RhbmNlLT5t
X2luc3RhbmNlKTsKKyAgICBMT0coTGl2ZUNvbm5lY3QsICJKYXZhSW5zdGFuY2U6Omludm9rZU1l
dGhvZCBjYWxsICVzICVzIG9uICVwIiwgVVN0cmluZyhqTWV0aG9kLT5uYW1lKCkpLlVURjhTdHJp
bmcoKS5kYXRhKCksIGpNZXRob2QtPnNpZ25hdHVyZSgpLCBtX2luc3RhbmNlLT5tX2luc3RhbmNl
KTsKIAogICAgIFZlY3RvcjxqdmFsdWU+IGpBcmdzKGNvdW50KTsKIApAQCAtMjUzLDcgKzI1Myw3
IEBAIEpTVmFsdWUgSmF2YUluc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBS
dW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kCiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgIGpvYmplY3QgY2xhc3NPZkluc3RhbmNlID0gY2FsbEpOSU1ldGhvZDxq
b2JqZWN0PihyZXN1bHQubCwgImdldENsYXNzIiwgIigpTGphdmEvbGFuZy9DbGFzczsiKTsKICAg
ICAgICAgICAgICAgICAgICAganN0cmluZyBjbGFzc05hbWUgPSBzdGF0aWNfY2FzdDxqc3RyaW5n
PihjYWxsSk5JTWV0aG9kPGpvYmplY3Q+KGNsYXNzT2ZJbnN0YW5jZSwgImdldE5hbWUiLCAiKClM
amF2YS9sYW5nL1N0cmluZzsiKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc3RyY21wKEph
dmFTdHJpbmcoY2xhc3NOYW1lKS51dGY4KCksICJzdW4ucGx1Z2luLmphdmFzY3JpcHQud2Via2l0
LkpTT2JqZWN0IikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAoSmF2YVN0cmlu
ZyhjbGFzc05hbWUpLlVURjhTdHJpbmcoKSwgInN1bi5wbHVnaW4uamF2YXNjcmlwdC53ZWJraXQu
SlNPYmplY3QiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHVsbCB0aGUgbmF0aXZl
SlNPYmplY3QgdmFsdWUgZnJvbSB0aGUgSmF2YSBpbnN0YW5jZS4gIFRoaXMgaXMgYSBwb2ludGVy
IHRvIHRoZSBKU09iamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgIEpOSUVudiogZW52ID0g
Z2V0Sk5JRW52KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqZmllbGRJRCBmaWVsZElEID0g
ZW52LT5HZXRGaWVsZElEKHN0YXRpY19jYXN0PGpjbGFzcz4oY2xhc3NPZkluc3RhbmNlKSwgIm5h
dGl2ZUpTT2JqZWN0IiwgIkoiKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdlL2puaS9qc2Mv
SmF2YVN0cmluZ0pTQy5oIGIvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhU3RyaW5nSlNDLmgK
aW5kZXggY2Y1NzViMmIwZTA1Y2ViNzhjOTQzOWI1NjZhNmVmODk1ZWM3NTk3Zi4uMjkwYzgxYTQ3
MWExZmE2YWI2NWFhOTRiMjZmZWU4OTBmODQ5ZWY5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9icmlk
Z2Uvam5pL2pzYy9KYXZhU3RyaW5nSlNDLmgKKysrIGIvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9K
YXZhU3RyaW5nSlNDLmgKQEAgLTYwLDExICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJlbGVh
c2VVQ2hhcmFjdGVyc0ZvckpTdHJpbmdJbkVudihlLCBzLCB1Yyk7CiAgICAgfQogCi0gICAgY29u
c3QgY2hhciogdXRmOCgpIGNvbnN0CisgICAgY29uc3QgY2hhciogVVRGOFN0cmluZygpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAoIW1fdXRmOFN0cmluZy5kYXRhKCkpIHsKICAgICAgICAgICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgICAgICAgICBtX3V0ZjhT
dHJpbmcgPSBVU3RyaW5nKG1faW1wbCkudXRmOCgpOworICAgICAgICAgICAgbV91dGY4U3RyaW5n
ID0gVVN0cmluZyhtX2ltcGwpLlVURjhTdHJpbmcoKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gbV91dGY4U3RyaW5nLmRhdGEoKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmNwcCBiL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmlu
ZGV4IDQxNjI3YjgwNDA5NzNjZWI1MTZhODI5YjIyMDZmZTc5ZTdmYWY5Y2YuLjJjZDdkNjZkZTY4
NzViY2RlN2Q3NDgxNDliNzU0NmI2YjcyZWVjYzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
CkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0CiAgICAgfQogICAgIAog
ICAgIGJvb2wgb2s7Ci0gICAgdW5zaWduZWQgaW5kZXggPSB0b0FycmF5SW5kZXgocHJvcGVydHlO
YW1lLnVzdHJpbmcoKSwgJm9rKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS50
b0FycmF5SW5kZXgoJm9rKTsKICAgICBpZiAob2spIHsKICAgICAgICAgaWYgKGluZGV4IDwgZ2V0
TGVuZ3RoKCkpIHsKICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpcywgaW5kZXgs
IGluZGV4R2V0dGVyKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBib29sIFJ1bnRpbWVBcnJheTo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cAogICAgIH0KICAgICAKICAgICBib29sIG9rOwotICAgIHVuc2lnbmVkIGluZGV4ID0gdG9BcnJh
eUluZGV4KHByb3BlcnR5TmFtZS51c3RyaW5nKCksICZvayk7CisgICAgdW5zaWduZWQgaW5kZXgg
PSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KCZvayk7CiAgICAgaWYgKG9rKSB7CiAgICAgICAg
IGlmIChpbmRleCA8IGdldExlbmd0aCgpKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dDsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6cHV0KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgfQogICAg
IAogICAgIGJvb2wgb2s7Ci0gICAgdW5zaWduZWQgaW5kZXggPSB0b0FycmF5SW5kZXgocHJvcGVy
dHlOYW1lLnVzdHJpbmcoKSwgJm9rKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFt
ZS50b0FycmF5SW5kZXgoJm9rKTsKICAgICBpZiAob2spIHsKICAgICAgICAgZ2V0Q29uY3JldGVB
cnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggMzZkZDRkNWE2ZjNjMjFkYzQwMTM2NGVjYWY0YTE1MDQ3YzNmMjExOS4uY2Y3ZmMwZDE0
NTYwNzNlMzVlNGVjNmJhODcyMjU1MmRiOGVlMjgyZiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
MC0wOC0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY1Mjk1LgorICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC82NTI5NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM5NTAKKworICAgICAgICBJdCBicm9rZSA0IHNwdXRuaWsg
dGVzdHMgKFJlcXVlc3RlZCBieSBPc3N5IG9uICN3ZWJraXQpLgorCisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSk6CisKIDIwMTAtMDgtMTIg
IEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggY2IxZDk1ODBlNDI0YjZh
NWE5MzZmOGNiZjExN2E3NDY4MTU1MmVhMi4uODM1NGMwNjA5Y2EyMDQ3NWQ4OTRiMzY4MWIxNTM4
NmZmZDMxMjg0NiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTEyMzgsNyArMTIzOCw3IEBAIGJvb2wg
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUodWludDMyX3Qgb2JqZWN0SUQs
IGRhdGFfdCYgcmVzdWx0RGF0CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXkqPiBhcnJh
eShBZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgdWlu
dDY0X3QgbWV0aG9kTmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KF9OUE5fR2V0U3Ry
aW5nSWRlbnRpZmllcihwcm9wZXJ0eU5hbWVzW2ldLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7
CisgICAgICAgIHVpbnQ2NF90IG1ldGhvZE5hbWUgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90
PihfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIocHJvcGVydHlOYW1lc1tpXS51c3RyaW5nKCkuVVRG
OFN0cmluZygpLmRhdGEoKSkpOwogCiAgICAgICAgIFthcnJheS5nZXQoKSBhZGRPYmplY3Q6W05T
TnVtYmVyIG51bWJlcldpdGhMb25nTG9uZzptZXRob2ROYW1lXV07CiAgICAgfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggOGJlNWE4
MDI3Mjc2YTllMDU5NDk5MzFjYmUxMjVjYjdlZDdlNmRjMC4uNzI0YWY4M2E1OWUwYWZmMDU2YmI3
YmMzNTRmNGFkYTQ1OTg4ZDI1NiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDgtMTIgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHI2NTI5NS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvNjUyOTUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQzOTUwCisKKyAgICAgICAgSXQgYnJva2UgNCBzcHV0bmlrIHRlc3RzIChSZXF1ZXN0
ZWQgYnkgT3NzeSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKHd4V2ViRnJhbWU6OlJ1blNjcmlwdCk6CisKIDIwMTAtMDgtMTIgIEdhdmluIEJhcnJhY2xv
dWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJGcmFtZS5jcHAgYi9XZWJLaXQvd3gvV2Vi
RnJhbWUuY3BwCmluZGV4IGY5YmU1NmZjY2I0ZjIxNmFmNzEzM2EyOGEwMDM0MjFlZWI2ZTY4MGQu
LjE4MjAwNGJiZjdjYjdmNWYyMTYwMmJkOGE5NWNmNWE2N2M4OTVjODkgMTAwNjQ0Ci0tLSBhL1dl
YktpdC93eC9XZWJGcmFtZS5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcApAQCAtMjMz
LDcgKzIzMyw3IEBAIHd4U3RyaW5nIHd4V2ViRnJhbWU6OlJ1blNjcmlwdChjb25zdCB3eFN0cmlu
ZyYgamF2YXNjcmlwdCkKICAgICAgICAgICAgIGlmIChqc0VuYWJsZWQpIHsKICAgICAgICAgICAg
ICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChqYXZh
c2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB3eFN0cmluZyhyZXN1bHQudG9TdHJpbmco
bV9pbXBsLT5mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChXZWJDb3JlOjptYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSwgd3hDb252VVRGOCk7
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB3eFN0cmluZyhyZXN1
bHQudG9TdHJpbmcobV9pbXBsLT5mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChXZWJDb3Jl
OjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKSkuVVRGOFN0cmluZygpLmRh
dGEoKSwgd3hDb252VVRGOCk7ICAgICAgICAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggYjgwNzhiMTRjOWJiZDcyZTFmNzkxOWFlMTVjY2Q1YWY1MmQxYjU1ZS4uZWMwODdhYzEyYmJm
OWNhMTBmMTQzY2ZhYjEyMGM3YmUxYzMyNDNjZiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wOC0xMiAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY1Mjk1LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC82NTI5NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDM5NTAKKworICAgICAgICBJdCBicm9rZSA0IHNwdXRuaWsgdGVzdHMgKFJl
cXVlc3RlZCBieSBPc3N5IG9uICN3ZWJraXQpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpucElkZW50aWZpZXJGcm9tSWRl
bnRpZmllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05QSlNPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
UFJ1bnRpbWVPYmplY3RNYXA6OmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlhbnQpOgorCiAyMDEwLTA4
LTEyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9KU05QT2JqZWN0LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL0pTTlBP
YmplY3QuY3BwCmluZGV4IDM4NmVkOTMyYjViZjFiZTAwMzk4ODRhMzJhOTE5NjU5ZDk5MjYwYmEu
LmJkODliMmU0ZDBmOTY3ZTcxZmUwYTI0MzU0NGU5NmI0NjNlZjhkMjQgMTAwNjQ0Ci0tLSBhL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL0pTTlBPYmplY3QuY3BwCisrKyBiL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL0pTTlBPYmplY3QuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdGF0aWMgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllckZyb21JZGVudGlm
aWVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PE5QSWRlbnRpZmllcj4oSWRlbnRpZmllclJlcDo6Z2V0KGlkZW50aWZpZXIudXN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlBJZGVudGlmaWVyPihJ
ZGVudGlmaWVyUmVwOjpnZXQoaWRlbnRpZmllci51c3RyaW5nKCkuVVRGOFN0cmluZygpLmRhdGEo
KSkpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNOUE9iamVjdDo6c19pbmZvID0geyAiTlBPYmpl
Y3QiLCAwLCAwLCAwIH07CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
UEpTT2JqZWN0LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05QSlNPYmplY3QuY3Bw
CmluZGV4IGZiYzg0NTQ4ZDk2NzBlZWI0YmE3ZWFjMjJmM2UwYWIzOTAwZmNlZTEuLjJmYmIyMjUw
YzVjYWNmYjFlOWU2OTI0MDgxODBhMTliMGEwOGI0NTUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05QSlNPYmplY3QuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05QSlNPYmplY3QuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgYm9vbCBOUEpTT2JqZWN0
OjplbnVtZXJhdGUoTlBJZGVudGlmaWVyKiogaWRlbnRpZmllcnMsIHVpbnQzMl90KiBpZGVudGlm
aWVyQ291bnQKICAgICBOUElkZW50aWZpZXIqIG5hbWVJZGVudGlmaWVycyA9IHN0YXRpY19jYXN0
PE5QSWRlbnRpZmllcio+KG1hbGxvYyhzaXplb2YoTlBJZGVudGlmaWVyKSAqIHByb3BlcnR5TmFt
ZXMuc2l6ZSgpKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMu
c2l6ZSgpOyArK2kpCi0gICAgICAgIG5hbWVJZGVudGlmaWVyc1tpXSA9IHN0YXRpY19jYXN0PE5Q
SWRlbnRpZmllcj4oSWRlbnRpZmllclJlcDo6Z2V0KHByb3BlcnR5TmFtZXNbaV0udXN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgbmFtZUlkZW50aWZpZXJzW2ldID0gc3RhdGljX2Nh
c3Q8TlBJZGVudGlmaWVyPihJZGVudGlmaWVyUmVwOjpnZXQocHJvcGVydHlOYW1lc1tpXS51c3Ry
aW5nKCkuVVRGOFN0cmluZygpLmRhdGEoKSkpOwogCiAgICAgKmlkZW50aWZpZXJzID0gbmFtZUlk
ZW50aWZpZXJzOwogICAgICppZGVudGlmaWVyQ291bnQgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsK
ZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05QUnVudGltZU9iamVjdE1h
cC5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OUFJ1bnRpbWVPYmplY3RNYXAuY3Bw
CmluZGV4IGUwZmFhNWI0YzMzOWI0MzhlMGI5MTNkODQyNzEyYTY3ODMxYzM1YWQuLmJjMDkzMzNj
ZjA0N2FmMDgzNThhYjIwNWFkYTczYTlmODIzMmQyYTIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05QUnVudGltZU9iamVjdE1hcC5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTlBSdW50aW1lT2JqZWN0TWFwLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBA
IHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjpjb252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1CiAgICAgfQogCiAgICAgaWYgKHZhbHVlLmlzU3RyaW5n
KCkpIHsKLSAgICAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyku
dXRmOCgpOworICAgICAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVj
KS5VVEY4U3RyaW5nKCk7CiAKICAgICAgICAgLy8gVGhpcyBzaG91bGQgdXNlIE5QTl9NZW1BbGxv
YywgYnV0IHdlIGtub3cgdGhhdCBpdCB1c2VzIG1hbGxvYyB1bmRlciB0aGUgaG9vZC4KICAgICAg
ICAgY2hhciogdXRmOENoYXJhY3RlcnMgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKHV0ZjhT
dHJpbmcubGVuZ3RoKCkpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>