<?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>140951</bug_id>
          
          <creation_ts>2015-01-27 12:49:51 -0800</creation_ts>
          <short_desc>REGRESSION(r179192): Caused numerous layout test failures (Requested by mattbaker_ on #webkit).</short_desc>
          <delta_ts>2022-03-01 02:48:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          <blocked>140900</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ggaren</cc>
    
    <cc>mattbaker</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064619</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-27 12:49:51 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/179192 broke the build:
Caused numerous layout test failures (Requested by mattbaker_ on #webkit).

This is an automatic bug report generated by webkitbot. 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 fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064621</commentid>
    <comment_count>1</comment_count>
      <attachid>245461</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-27 12:50:20 -0800</bug_when>
    <thetext>Created attachment 245461
ROLLOUT of r179192

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

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064623</commentid>
    <comment_count>2</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-01-27 12:55:08 -0800</bug_when>
    <thetext>It appears that a flaky build bot might be the culprit, rollout premature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064627</commentid>
    <comment_count>3</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-01-27 13:00:22 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; It appears that a flaky build bot might be the culprit, rollout premature.

I don&apos;t think if Windows, 32-bit and ARM bots are flakey at the same time.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245461</attachid>
            <date>2015-01-27 12:50:20 -0800</date>
            <delta_ts>2022-03-01 02:48:31 -0800</delta_ts>
            <desc>ROLLOUT of r179192</desc>
            <filename>bug-140951-20150127125023.patch</filename>
            <type>text/plain</type>
            <size>90203</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NWI0YmRjMDY4ZjRkMWNmOTA1MmI1ZDhiYTQyNTI3ZmM5Y2I1N2NiLi42MjJjMzQyZWEzMGE2MjQy
ZTk5NTZkOThkZGQ4YTM0YWQ5NzNjMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wMS0yNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3OTE5Mi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDk1MQorCisgICAg
ICAgIENhdXNlZCBudW1lcm91cyBsYXlvdXQgdGVzdCBmYWlsdXJlcyAoUmVxdWVzdGVkIGJ5IG1h
dHRiYWtlcl8KKyAgICAgICAgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdl
c2V0OgorCisgICAgICAgICJVc2UgRmFzdE1hbGxvYyAoYm1hbGxvYykgaW5zdGVhZCBvZiBCbG9j
a0FsbG9jYXRvciBmb3IgR0MKKyAgICAgICAgcGFnZXMiCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA5MDAKKyAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTc5MTkyCisKIDIwMTUtMDEtMjcgIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTc4NTkxKTogMjAlIHJl
Z3Jlc3Npb24gaW4gT2N0YW5lIGJveDJkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhmMDg5MTcyNWM4OTIzMGY3ZjhjMmM5ZTE4
NTdhNDgzZDFhNDA5MTkuLjk0YmY2NzBkODkyNzI5NWNkMjEzOTQwZTlmMjA2M2Q4M2M1ODQyNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDEtMjcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNzkx
OTIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA5
NTEKKworICAgICAgICBDYXVzZWQgbnVtZXJvdXMgbGF5b3V0IHRlc3QgZmFpbHVyZXMgKFJlcXVl
c3RlZCBieSBtYXR0YmFrZXJfCisgICAgICAgIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVy
dGVkIGNoYW5nZXNldDoKKworICAgICAgICAiVXNlIEZhc3RNYWxsb2MgKGJtYWxsb2MpIGluc3Rl
YWQgb2YgQmxvY2tBbGxvY2F0b3IgZm9yIEdDCisgICAgICAgIHBhZ2VzIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwOTAwCisgICAgICAgIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE3OTE5MgorCiAyMDE1LTAxLTI2ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIEZhc3RNYWxsb2MgKGJt
YWxsb2MpIGluc3RlYWQgb2YgQmxvY2tBbGxvY2F0b3IgZm9yIEdDIHBhZ2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMjQyMGNhMmRlMTNiYmU3YThiZTQ5MzNmNzQ5NWI0ZTFlMmU1MmVhMy4uMjg1ZGFiYThjZmMx
YWYzNzNhZDZjZDc1ZWNhYWFlNDM5M2MzNzMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDE1LTAxLTI3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTc5MTkyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwOTUxCisKKyAgICAgICAgQ2F1c2Vk
IG51bWVyb3VzIGxheW91dCB0ZXN0IGZhaWx1cmVzIChSZXF1ZXN0ZWQgYnkgbWF0dGJha2VyXwor
ICAgICAgICBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAg
ICAgICAgIlVzZSBGYXN0TWFsbG9jIChibWFsbG9jKSBpbnN0ZWFkIG9mIEJsb2NrQWxsb2NhdG9y
IGZvciBHQworICAgICAgICBwYWdlcyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MDkwMAorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8xNzkxOTIKKwogMjAxNS0wMS0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBNb2Rlcm5pemUgc29tZSBjb25zdHJ1Y3RvcnMgb2YgdGhl
IENTUyBKSVQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCBlNGY1OTQ2YzEy
MmNlMGYwMmMwNGY5OGUyY2NlYTYwZTA5YmEyODdlLi4yOTIzOTU4YTk5ZDIyZWRhNGZkN2FmNWE3
ODhkMDBjYjkyNzIzODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
QmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5o
IgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKLSNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2su
aCIKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBjZGYxZTVhMTZlZTdmZGIxMGQ2YWI2YmQ0ZDJlNjMyMWEzNWUyNzk0Li42MWNk
YTIyMDJhYWRiMzBhODk4ZDEzYzMzNTA5ZjZjNzI2M2JjNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0yNDgsNiArMjQ4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBkaXNhc3NlbWJsZXIvTExWTURpc2Fzc2VtYmxlci5jcHAKICAgICBkaXNhc3Nl
bWJsZXIvWDg2RGlzYXNzZW1ibGVyLmNwcAogCisgICAgaGVhcC9CbG9ja0FsbG9jYXRvci5jcHAK
ICAgICBoZWFwL0NvZGVCbG9ja1NldC5jcHAKICAgICBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNw
cAogICAgIGhlYXAvQ29waWVkU3BhY2UuY3BwCkBAIC0yNzMsNiArMjc0LDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBoZWFwL01hcmtlZEJsb2NrLmNwcAogICAgIGhlYXAvTWFy
a2VkU3BhY2UuY3BwCiAgICAgaGVhcC9TbG90VmlzaXRvci5jcHAKKyAgICBoZWFwL1N1cGVyUmVn
aW9uLmNwcAogICAgIGhlYXAvV2Vhay5jcHAKICAgICBoZWFwL1dlYWtCbG9jay5jcHAKICAgICBo
ZWFwL1dlYWtIYW5kbGVPd25lci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCmluZGV4IGYyMzdhNjlmNjg0ZDE1OTJlZjhiOTY0NjFiODE3OWY1MjQ0ZmFhYmYuLmY2NmVl
ZTYxZjZmYzdhYjU1NGM5NzRlYzZlZjNhOTQ4YTY5NDYxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNTMwLDYgKzUzMCw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxmdGxcRlRMVW53aW5kSW5mby5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxmdGxcRlRMVmFsdWVGb3JtYXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cZnRsXEZUTFZhbHVlUmFuZ2UuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caGVhcFxCbG9ja0FsbG9jYXRvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxoZWFwXENvZGVCbG9ja1NldC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxo
ZWFwXENvbnNlcnZhdGl2ZVJvb3RzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGhlYXBcQ29waWVkU3BhY2UuY3BwIiAvPgpAQCAtNTU1LDYgKzU1Niw3IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxoZWFwXE1hcmtlZFNwYWNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGhlYXBcTWFya1N0YWNrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGhlYXBcU2xvdFZpc2l0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caGVhcFxTdXBlclJlZ2lvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxo
ZWFwXFdlYWsuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrQmxv
Y2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrSGFuZGxlT3du
ZXIuY3BwIiAvPgpAQCAtMTIxNiw2ICsxMjE4LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGZ0bFxGVExWYWx1ZVJhbmdlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxm
dGxcRlRMV2VpZ2h0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxmdGxcRlRMV2Vp
Z2h0ZWRUYXJnZXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcQmxvY2tB
bGxvY2F0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcQ29kZUJsb2Nr
U2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXENvbnNlcnZhdGl2ZVJv
b3RzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXENvcGllZEFsbG9jYXRv
ci5oIiAvPgpAQCAtMTI2NSwxMCArMTI2OCwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxNYXJrZWRTcGFjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVh
cFxNYXJrU3RhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcUmVjdXJz
aXZlQWxsb2NhdGlvblNjb3BlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFw
XFJlZ2lvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxTbG90VmlzaXRv
ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxTbG90VmlzaXRvcklubGlu
ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcU3Ryb25nLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFN0cm9uZ0lubGluZXMuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcU3VwZXJSZWdpb24uaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGhlYXBcVGlueUJsb29tRmlsdGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vhay5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDM5MDE2NWNjNDJkY2I2YWMwYzlk
ZmI5YzVhNzViNzY2MDJkMTAyOTEuLjUxNWEzMmM3ZTUwYjIxMjJlNjBlMTFjZGVkNGQ5N2M1OTUx
NjQ3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMKQEAgLTIzNyw2ICsyMzcsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGlz
YXNzZW1ibGVyXERpc2Fzc2VtYmxlci5jcHAiPgogICAgICAgPEZpbHRlcj5kaXNhc3NlbWJsZXI8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhl
YXBcQmxvY2tBbGxvY2F0b3IuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb25zZXJ2YXRp
dmVSb290cy5jcHAiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CkBAIC0zMDYsNiArMzA5LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBc
U2xvdFZpc2l0b3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxTdXBlclJlZ2lvbi5jcHAi
PgorICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdlYWsuY3BwIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjA0Miw2ICsyMDQ4LDkgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGRpc2Fzc2VtYmxlclxEaXNhc3NlbWJsZXIuaCI+CiAgICAgICA8
RmlsdGVyPmRpc2Fzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxCbG9ja0FsbG9jYXRvci5oIj4KKyAgICAgIDxGaWx0ZXI+
aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxDb25zZXJ2YXRpdmVSb290cy5oIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjE4MCw2ICsyMTg5LDkgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXFJlZ2lvbi5oIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxTbG90VmlzaXRv
ci5oIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAt
MjE5Miw2ICsyMjA0LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcU3Ryb25n
SW5saW5lcy5oIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxTdXBlclJlZ2lvbi5oIj4KKyAgICAg
IDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxUaW55Qmxvb21GaWx0ZXIuaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMjEyYzllY2I4ZjczNDY0MDQ2ZThhMTU1NTliYjk2ODk3N2FmZjM3ZC4uNGZmZTZhMGYyNmUy
NmY3M2RlMTZkNDczOTJjZjRjMzgzYWQ1NDJhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTgxMyw2ICs4MTMsOCBAQAogCQkxNDdGMzlENTEwN0VDMzc2MDA0MjdBNDggLyogSlNT
dHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLzsgfTsKIAkJMTQ3RjM5
RDYxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTQ0pTVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpT
Q0pTVmFsdWUuY3BwICovOyB9OwogCQkxNDdGMzlENzEwN0VDMzc2MDA0MjdBNDggLyogSlNFbnZp
cm9ubWVudFJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzIyQTM5QTBFMTZFMTQ4MDBBRjIxQzggLyogSlNFbnZpcm9ubWVudFJlY29yZC5j
cHAgKi87IH07CisJCTE0ODE2RTFCMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgxNkUx
OTE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuY3BwICovOyB9OworCQkxNDgxNkUx
QzE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODE2RTFBMTU0Q0M1NkMwMEI4MDU0QyAvKiBC
bG9ja0FsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0ODJCNzRFMEE0MzAzMjgwMDUxN0NGQyAvKiBKU1N0cmluZ1JlZi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgyQjc0QzBBNDMw
MzI4MDA1MTdDRkMgLyogSlNTdHJpbmdSZWYuY3BwICovOyB9OwogCQkxNDgyQjdFNDBBNDMwNzYw
MDA1MTdDRkMgLyogSlNPYmplY3RSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQ4MkI3RTIwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVm
LmNwcCAqLzsgfTsKIAkJMTQ4NzRBRTMxNUVCREU0QTAwMkUzNTg3IC8qIEpTTmFtZVNjb3BlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODc0QURG
MTVFQkRFNEEwMDJFMzU4NyAvKiBKU05hbWVTY29wZS5jcHAgKi87IH07CkBAIC0xNTE5LDYgKzE1
MjEsNyBAQAogCQlCQ0ZEOEM5MjBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkwMEVFQjJF
RTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovOyB9OwogCQlCQ0ZEOEM5MzBFRUIyRUU3MDAy
ODM4NDggLyogSnVtcFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzIwMzI4MjAxOTgx
OTc5RDAwODhCNDk5IC8qIEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5jIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIwMzI4MUUxOTgxOTc5RDAwODhC
NDk5IC8qIEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5jICovOyB9OworCQlDMjBCMjU5OTE3
MDY1MzYyMDBDMjFGNEUgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMjBCMjU5ODE3MDY1MzYyMDBDMjFGNEUgLyogUmVnaW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzIwQkE5MkQx
NkJCMUMxNTAwQjNBRUEyIC8qIFN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIwQkE5MkMxNkJCMUMxNTAwQjNB
RUEyIC8qIFN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyMTEyMkUxMTVERDlBQjMwMDc5MEUzQSAvKiBH
Q1RocmVhZFNoYXJlZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzIxMTIyREUxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0
YS5jcHAgKi87IH07CiAJCUMyMTEyMkUyMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJl
ZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
MTEyMkRGMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU1OSw2ICsxNTYyLDgg
QEAKIAkJQzJDRjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQ0YzOUJGMTZF
MTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QubW0gKi87IH07CiAJCUMyQ0YzOUMy
MTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQ0YzOUMwMTZFMTVBODEwMERENjlCRSAv
KiBKU0FQSVdyYXBwZXJPYmplY3QuaCAqLzsgfTsKIAkJQzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2
IC8qIEhlYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMkRBNzc4MjE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMkRGNDQyRjE3MDdB
QzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzJERjQ0MkQxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVn
aW9uLmNwcCAqLzsgfTsKKwkJQzJERjQ0MzAxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkRGNDQy
RTE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkU1MjZCRDE1OTBFRjAwMDA1NEU0OEQgLyog
SGVhcFRpbWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyRTUyNkJCMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwICovOyB9OwogCQlD
MkU1MjZCRTE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkU1MjZCQzE1OTBFRjAwMDA1NEU0OEQgLyog
SGVhcFRpbWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzJFQUEzRkExNDlBODM1RTAwRkNFMTEyIC8qIENvcGllZFNwYWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkVBQTNGODE0OUE4MzA4MDBG
Q0UxMTIgLyogQ29waWVkU3BhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMjQyMyw2ICsyNDI4LDggQEAKIAkJMTQ3QjgzQUEwRTZEQjhDOTAw
NDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE0N0I4NDYyMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0
eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0UHJvcGVydHlTbG90
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0ODBEQjlCMEREQzIyN0YwMDNDRkRG
MiAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEZWJ1Z2dlckNhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDgx
NkUxOTE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxvY2tBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxNDgxNkUxQTE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tBbGxvY2F0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ4MkI2RUEwQTQzMDBCMzAwNTE3Q0ZDIC8q
IEpTVmFsdWVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZVJl
Zi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDgyQjc0QjBBNDMwMzI4MDA1MTdD
RkMgLyogSlNTdHJpbmdSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
dHJpbmdSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ4MkI3NEMwQTQzMDMy
ODAwNTE3Q0ZDIC8qIEpTU3RyaW5nUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU3RyaW5nUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMxOTYsNiArMzIwMyw3IEBACiAJCUJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFi
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSnVtcFRhYmxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMDMyODFFMTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0
b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1l
ID0gQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmM7IHBhdGggPSBBUEkvdGVzdHMvQ3VzdG9t
R2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
MDMyODFGMTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NU
ZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMEIyNTk4MTcwNjUzNjIwMEMyMUY0RSAvKiBS
ZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMEJBOTJDMTZCQjFDMTUwMEIzQUVBMiAvKiBTdHJ1
Y3R1cmVSYXJlRGF0YUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMTEyMkRFMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NUaHJlYWRTaGFyZWREYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxMTIyREYxNUREOUFCMzAwNzkwRTNBIC8q
IEdDVGhyZWFkU2hhcmVkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
Q1RocmVhZFNoYXJlZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyMzgs
NiArMzI0Niw4IEBACiAJCUMyQ0YzOUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJP
YmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU0FQSVdy
YXBwZXJPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQ0YzOUMwMTZF
MTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyREE3NzgyMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMkRGNDQyRDE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VwZXJSZWdpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkRGNDQyRTE3MDdBQzAxMDBBNUNBOTYg
LyogU3VwZXJSZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VwZXJS
ZWdpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFNTI2QkIxNTkwRUYwMDAw
NTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBIZWFwVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkU1MjZC
QzE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhlYXBUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkVB
QTNGODE0OUE4MzA4MDBGQ0UxMTIgLyogQ29waWVkU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29waWVkU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTM4MTYsNiArMzgyNiw4IEBACiAJCQkJQUREQjFGNjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9w
YXF1ZVJvb3RTZXQuaCAqLywKIAkJCQkyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCAqLywKIAkJCQkyQUFDRTYzQjE4Q0E1QTAzMDBFRDAxOTEgLyogR0NB
Y3Rpdml0eUNhbGxiYWNrLmggKi8sCisJCQkJMTQ4MTZFMTkxNTRDQzU2QzAwQjgwNTRDIC8qIEJs
b2NrQWxsb2NhdG9yLmNwcCAqLywKKwkJCQkxNDgxNkUxQTE1NENDNTZDMDBCODA1NEMgLyogQmxv
Y2tBbGxvY2F0b3IuaCAqLywKIAkJCQkwRkQ4QTMxMTE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJs
b2NrU2V0LmNwcCAqLywKIAkJCQkwRkQ4QTMxMjE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2Nr
U2V0LmggKi8sCiAJCQkJMTQ2QjE0REIxMkVCNUIxMjAwMUJFQzFCIC8qIENvbnNlcnZhdGl2ZVJv
b3RzLmNwcCAqLywKQEAgLTM4ODMsMTEgKzM4OTUsMTQgQEAKIAkJCQkxNDJENkYwRTEzNTM5QTQx
MDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCAqLywKIAkJCQkxNDJENkYwRjEzNTM5QTQxMDBCMDJF
ODYgLyogTWFya1N0YWNrLmggKi8sCiAJCQkJMkFBRDk2NDkxODU2OTQxNzAwMUY5M0JFIC8qIFJl
Y3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oICovLAorCQkJCUMyMEIyNTk4MTcwNjUzNjIwMEMyMUY0
RSAvKiBSZWdpb24uaCAqLywKIAkJCQlDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZp
c2l0b3IuY3BwICovLAogCQkJCTE0QkE3OEYwMTNBQUI4OEYwMDVCN0MyQyAvKiBTbG90VmlzaXRv
ci5oICovLAogCQkJCTBGQ0I0MDg1MTVDMEEzQzMwMDQ4OTMyQiAvKiBTbG90VmlzaXRvcklubGlu
ZXMuaCAqLywKIAkJCQkxNDJFMzEzMjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggKi8sCiAJ
CQkJMTQ1NzIyODUxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCAqLywKKwkJCQlD
MkRGNDQyRDE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uY3BwICovLAorCQkJCUMyREY0
NDJFMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5oICovLAogCQkJCTE0MTQ0OENDMTNB
MTc4MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIuaCAqLywKIAkJCQkwRjVGMDhDRTE0NkM3
NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovLAogCQkJCTFBQ0Y3Mzc2
MTcxQ0E2RkIwMEM5QkIxRSAvKiBXZWFrLmNwcCAqLywKQEAgLTU0NDIsNiArNTQ1Nyw3IEBACiAJ
CQkJMEYyNEU1NDExN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc4NEEyNjExMUQxNjYyMjAwNTc3NkFDIC8qIEFTVEJ1aWxkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxNDgxNkUxQzE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBC
b29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4
NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVEMkU2NjUxOTVFMTc0MDAw
QTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTYxMjQs
NiArNjE0MCw3IEBACiAJCQkJQkMxOEM0NUIwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZ0V4cE9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MkMwRTE2RkNEMjAwQjM0NDYwIC8qIFJlZ0V4
cE9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwMkM0MEUxNzA2QTcwMDJDN0U4
MiAvKiBSZWdFeHBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyMEIyNTk5MTcwNjUz
NjIwMEMyMUY0RSAvKiBSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVEMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MkIwRUQx
Q0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNkIxQ0JB
MTg2MTI0NEMwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtNjE5Niw2ICs2MjEzLDcgQEAKIAkJCQkwRjc2NkQzOTE1QUU0QTFGMDA4RjM2M0Ug
LyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNDRjBEMDgwRUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzkwNDE0ODBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkRGNDQzMDE3MDdBQzAxMDBBNUNBOTYgLyog
U3VwZXJSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDZCMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBTeW1ib2xUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NEEyNjQxMUQxNjYyMjAw
NTc3NkFDIC8qIFN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdF
RTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtNjc0
Miw2ICs2NzYwLDcgQEAKIAkJCQkwRjYzOTQ1NDE1RDA3MDU1MDA2QTU5N0MgLyogQXJyYXlQcm9m
aWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUMwMTA3RUMzNzYwMDQyN0E0OCAvKiBB
cnJheVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU0MDE3RUE5RjU5MDBB
QkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0ODE2RTFC
MTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjY5Q0M4ODE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQyODA4NjMxMDdFQzExQTAwMTNFN0IyIC8qIEJvb2xlYW5Db25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg2NDEwN0VDMTFBMDAxM0U3QjIgLyogQm9v
bGVhbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTcyNjMsNiArNzI4Miw3IEBACiAJCQkJ
QzJGMEYyRDExNkJBRUVFOTAwMTg3QzE5IC8qIFN0cnVjdHVyZVJhcmVEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xl
YXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQ0YwRDBDMEVGMEI4QTUw
MDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkRG
NDQyRjE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIzMiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBMkMxN0IxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5u
ZXJVdGlscy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Jsb2NrQWxsb2NhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjQwOGY4ZWYwYWQwMjRlMzM4MDY4MDQx
YTMxYzRmMjc1MWFhYTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQmxvY2tBbGxvY2F0b3IuY3BwCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJsb2NrQWxsb2NhdG9yLmgiCisKKyNpbmNs
dWRlICJDb3BpZWRCbG9jay5oIgorI2luY2x1ZGUgIkNvcHlXb3JrTGlzdC5oIgorI2luY2x1ZGUg
Ik1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIldlYWtC
bG9jay5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworaW5saW5lIFRocmVhZElkZW50aWZpZXIgY3JlYXRlQmxvY2tGcmVlaW5nVGhyZWFkKEJsb2Nr
QWxsb2NhdG9yKiBhbGxvY2F0b3IpCit7CisgICAgaWYgKCFHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNf
c2hvdWxkQ3JlYXRlR0NUaW1lcikKKyAgICAgICAgcmV0dXJuIDA7IC8vIE5vIGJsb2NrIGZyZWVp
bmcgdGhyZWFkLgorICAgIFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllciA9IGNyZWF0ZVRocmVh
ZChhbGxvY2F0b3ItPmJsb2NrRnJlZWluZ1RocmVhZFN0YXJ0RnVuYywgYWxsb2NhdG9yLCAiSmF2
YVNjcmlwdENvcmU6OkJsb2NrRnJlZSIpOworICAgIFJFTEVBU0VfQVNTRVJUKGlkZW50aWZpZXIp
OworICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCitCbG9ja0FsbG9jYXRvcjo6QmxvY2tBbGxv
Y2F0b3IoKQorICAgIDogbV9zdXBlclJlZ2lvbigpCisgICAgLCBtX2NvcGllZFJlZ2lvblNldChD
b3BpZWRCbG9jazo6YmxvY2tTaXplKQorICAgICwgbV9tYXJrZWRSZWdpb25TZXQoTWFya2VkQmxv
Y2s6OmJsb2NrU2l6ZSkKKyAgICAsIG1fZm91cktCQmxvY2tSZWdpb25TZXQoV2Vha0Jsb2NrOjpi
bG9ja1NpemUpCisgICAgLCBtX3dvcmtMaXN0UmVnaW9uU2V0KENvcHlXb3JrTGlzdFNlZ21lbnQ6
OmJsb2NrU2l6ZSkKKyAgICAsIG1fbnVtYmVyT2ZFbXB0eVJlZ2lvbnMoMCkKKyAgICAsIG1faXND
dXJyZW50bHlBbGxvY2F0aW5nKGZhbHNlKQorICAgICwgbV9ibG9ja0ZyZWVpbmdUaHJlYWRTaG91
bGRRdWl0KGZhbHNlKQorICAgICwgbV9ibG9ja0ZyZWVpbmdUaHJlYWQoY3JlYXRlQmxvY2tGcmVl
aW5nVGhyZWFkKHRoaXMpKQoreworICAgIG1fcmVnaW9uTG9jay5Jbml0KCk7Cit9CisKK0Jsb2Nr
QWxsb2NhdG9yOjp+QmxvY2tBbGxvY2F0b3IoKQoreworICAgIHJlbGVhc2VGcmVlUmVnaW9ucygp
OworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9lbXB0
eVJlZ2lvbkNvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgbV9ibG9ja0ZyZWVpbmdUaHJlYWRTaG91
bGRRdWl0ID0gdHJ1ZTsKKyAgICAgICAgbV9lbXB0eVJlZ2lvbkNvbmRpdGlvbi5ub3RpZnlfYWxs
KCk7CisgICAgfQorICAgIGlmIChtX2Jsb2NrRnJlZWluZ1RocmVhZCkKKyAgICAgICAgd2FpdEZv
clRocmVhZENvbXBsZXRpb24obV9ibG9ja0ZyZWVpbmdUaHJlYWQpOworICAgIEFTU0VSVChhbGxS
ZWdpb25TZXRzQXJlRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fZW1wdHlSZWdpb25zLmlzRW1wdHko
KSk7Cit9CisKK2Jvb2wgQmxvY2tBbGxvY2F0b3I6OmFsbFJlZ2lvblNldHNBcmVFbXB0eSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY29waWVkUmVnaW9uU2V0LmlzRW1wdHkoKQorICAgICAgICAm
JiBtX21hcmtlZFJlZ2lvblNldC5pc0VtcHR5KCkKKyAgICAgICAgJiYgbV9mb3VyS0JCbG9ja1Jl
Z2lvblNldC5pc0VtcHR5KCkKKyAgICAgICAgJiYgbV93b3JrTGlzdFJlZ2lvblNldC5pc0VtcHR5
KCk7Cit9CisKK3ZvaWQgQmxvY2tBbGxvY2F0b3I6OnJlbGVhc2VGcmVlUmVnaW9ucygpCit7Cisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgUmVnaW9uKiByZWdpb247CisgICAgICAgIHsKKyAg
ICAgICAgICAgIFNwaW5Mb2NrSG9sZGVyIGxvY2tlcigmbV9yZWdpb25Mb2NrKTsKKyAgICAgICAg
ICAgIGlmICghbV9udW1iZXJPZkVtcHR5UmVnaW9ucykKKyAgICAgICAgICAgICAgICByZWdpb24g
PSAwOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVnaW9uID0gbV9lbXB0
eVJlZ2lvbnMucmVtb3ZlSGVhZCgpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJl
Z2lvbik7CisgICAgICAgICAgICAgICAgbV9udW1iZXJPZkVtcHR5UmVnaW9ucy0tOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIXJlZ2lvbikKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIHJlZ2lvbi0+ZGVzdHJveSgpOworICAgIH0KK30KKwor
dm9pZCBCbG9ja0FsbG9jYXRvcjo6d2FpdEZvckR1cmF0aW9uKHN0ZDo6Y2hyb25vOjptaWxsaXNl
Y29uZHMgZHVyYXRpb24pCit7CisgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2Nr
KG1fZW1wdHlSZWdpb25Db25kaXRpb25NdXRleCk7CisKKyAgICAvLyBJZiB0aGlzIHJldHVybnMg
ZWFybHksIHRoYXQncyBmaW5lLCBzbyBsb25nIGFzIGl0IGRvZXNuJ3QgZG8gaXQgdG9vCisgICAg
Ly8gZnJlcXVlbnRseS4gSXQgd291bGQgb25seSBiZSBhIGJ1ZyBpZiB0aGlzIGZ1bmN0aW9uIGZh
aWxlZCB0byByZXR1cm4KKyAgICAvLyB3aGVuIGl0IHdhcyBhc2tlZCB0byBkbyBzby4KKyAgICBp
ZiAobV9ibG9ja0ZyZWVpbmdUaHJlYWRTaG91bGRRdWl0KQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2VtcHR5UmVnaW9uQ29uZGl0aW9uLndhaXRfZm9yKGxvY2ssIGR1cmF0aW9uKTsKK30KKwor
dm9pZCBCbG9ja0FsbG9jYXRvcjo6YmxvY2tGcmVlaW5nVGhyZWFkU3RhcnRGdW5jKHZvaWQqIGJs
b2NrQWxsb2NhdG9yKQoreworICAgIHN0YXRpY19jYXN0PEJsb2NrQWxsb2NhdG9yKj4oYmxvY2tB
bGxvY2F0b3IpLT5ibG9ja0ZyZWVpbmdUaHJlYWRNYWluKCk7Cit9CisKK3ZvaWQgQmxvY2tBbGxv
Y2F0b3I6OmJsb2NrRnJlZWluZ1RocmVhZE1haW4oKQoreworICAgIHNpemVfdCBjdXJyZW50TnVt
YmVyT2ZFbXB0eVJlZ2lvbnM7CisgICAgd2hpbGUgKCFtX2Jsb2NrRnJlZWluZ1RocmVhZFNob3Vs
ZFF1aXQpIHsKKyAgICAgICAgLy8gR2VuZXJhbGx5IHdhaXQgZm9yIG9uZSBzZWNvbmQgYmVmb3Jl
IHNjYXZlbmdpbmcgZnJlZSBibG9ja3MuIFRoaXMKKyAgICAgICAgLy8gbWF5IHJldHVybiBlYXJs
eSwgcGFydGljdWxhcmx5IHdoZW4gd2UncmUgYmVpbmcgYXNrZWQgdG8gcXVpdC4KKyAgICAgICAg
d2FpdEZvckR1cmF0aW9uKHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDEpKTsKKyAgICAgICAgaWYgKG1f
YmxvY2tGcmVlaW5nVGhyZWFkU2hvdWxkUXVpdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAKKyAgICAgICAgaWYgKG1faXNDdXJyZW50bHlBbGxvY2F0aW5nKSB7CisgICAgICAgICAgICBt
X2lzQ3VycmVudGx5QWxsb2NhdGluZyA9IGZhbHNlOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBTbGVlcCB1bnRpbCB0aGVyZSBpcyBhY3R1YWxseSB3b3Jr
IHRvIGRvIHJhdGhlciB0aGFuIHdha2luZyB1cCBldmVyeSBzZWNvbmQgdG8gY2hlY2suCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9jayhtX2Vt
cHR5UmVnaW9uQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgU3BpbkxvY2tIb2xkZXIgcmVn
aW9uTG9ja2VyKCZtX3JlZ2lvbkxvY2spOworICAgICAgICAgICAgd2hpbGUgKCFtX251bWJlck9m
RW1wdHlSZWdpb25zICYmICFtX2Jsb2NrRnJlZWluZ1RocmVhZFNob3VsZFF1aXQpIHsKKyAgICAg
ICAgICAgICAgICBtX3JlZ2lvbkxvY2suVW5sb2NrKCk7CisgICAgICAgICAgICAgICAgbV9lbXB0
eVJlZ2lvbkNvbmRpdGlvbi53YWl0KGxvY2spOworICAgICAgICAgICAgICAgIG1fcmVnaW9uTG9j
ay5Mb2NrKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50TnVtYmVyT2ZFbXB0
eVJlZ2lvbnMgPSBtX251bWJlck9mRW1wdHlSZWdpb25zOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBzaXplX3QgZGVzaXJlZE51bWJlck9mRW1wdHlSZWdpb25zID0gY3VycmVudE51bWJl
ck9mRW1wdHlSZWdpb25zIC8gMjsKKyAgICAgICAgCisgICAgICAgIHdoaWxlICghbV9ibG9ja0Zy
ZWVpbmdUaHJlYWRTaG91bGRRdWl0KSB7CisgICAgICAgICAgICBSZWdpb24qIHJlZ2lvbjsKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTcGluTG9ja0hvbGRlciBsb2NrZXIoJm1fcmVn
aW9uTG9jayk7CisgICAgICAgICAgICAgICAgaWYgKG1fbnVtYmVyT2ZFbXB0eVJlZ2lvbnMgPD0g
ZGVzaXJlZE51bWJlck9mRW1wdHlSZWdpb25zKQorICAgICAgICAgICAgICAgICAgICByZWdpb24g
PSAwOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZWdpb24g
PSBtX2VtcHR5UmVnaW9ucy5yZW1vdmVIZWFkKCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHJlZ2lvbik7CisgICAgICAgICAgICAgICAgICAgIG1fbnVtYmVyT2ZFbXB0eVJl
Z2lvbnMtLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmICghcmVnaW9uKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCisgICAgICAgICAgICByZWdpb24tPmRlc3Ryb3koKTsKKyAgICAgICAgfQorICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9CbG9ja0FsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxv
Y2tBbGxvY2F0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjY4NjdmOTQwODQzZjc4NzE2MzJmNWIzMjhmZTYz
M2ZmNDkyZGEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tBbGxvY2F0b3IuaApAQCAtMCwwICsxLDI1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
QmxvY2tBbGxvY2F0b3JfaAorI2RlZmluZSBCbG9ja0FsbG9jYXRvcl9oCisKKyNpbmNsdWRlICJH
Q0FjdGl2aXR5Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJIZWFwQmxvY2suaCIKKyNpbmNsdWRlICJS
ZWdpb24uaCIKKyNpbmNsdWRlIDxjb25kaXRpb25fdmFyaWFibGU+CisjaW5jbHVkZSA8d3RmL0Rv
dWJseUxpbmtlZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaD4KKyNpbmNsdWRlIDx3dGYvVENTcGluTG9jay5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJs
b2NrQWxsb2NhdG9yOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgQ29waWVkQmxvY2s7CitjbGFz
cyBDb3B5V29ya0xpc3RTZWdtZW50OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdDQXJy
YXlTZWdtZW50OworY2xhc3MgSGFuZGxlQmxvY2s7CitjbGFzcyBKU0NlbGw7CitjbGFzcyBWTTsK
K2NsYXNzIE1hcmtlZEJsb2NrOworY2xhc3MgV2Vha0Jsb2NrOworCisvLyBTaW1wbGUgYWxsb2Nh
dG9yIHRvIHJlZHVjZSBWTSBjb3N0IGJ5IGhvbGRpbmcgb250byBibG9ja3Mgb2YgbWVtb3J5IGZv
cgorLy8gc2hvcnQgcGVyaW9kcyBvZiB0aW1lIGFuZCB0aGVuIGZyZWVpbmcgdGhlbSBvbiBhIHNl
Y29uZGFyeSB0aHJlYWQuCisKK2NsYXNzIEJsb2NrQWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAgICBC
bG9ja0FsbG9jYXRvcigpOworICAgIH5CbG9ja0FsbG9jYXRvcigpOworCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IERlYWRCbG9jayogYWxsb2NhdGUoKTsKKyAgICBEZWFkQmxvY2sqIGFsbG9j
YXRlQ3VzdG9tU2l6ZShzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgYmxvY2tBbGlnbm1lbnQpOwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGRlYWxsb2NhdGUoVCopOworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiB2b2lkIGRlYWxsb2NhdGVDdXN0b21TaXplKFQqKTsKKworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUZyZWVSZWdpb25zKCk7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCB3YWl0Rm9yRHVyYXRpb24oc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyk7CisKKyAg
ICBmcmllbmQgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVCbG9ja0ZyZWVpbmdUaHJlYWQoQmxvY2tB
bGxvY2F0b3IqKTsKKyAgICB2b2lkIGJsb2NrRnJlZWluZ1RocmVhZE1haW4oKTsKKyAgICBzdGF0
aWMgdm9pZCBibG9ja0ZyZWVpbmdUaHJlYWRTdGFydEZ1bmModm9pZCogaGVhcCk7CisKKyAgICBz
dHJ1Y3QgUmVnaW9uU2V0IHsKKyAgICAgICAgUmVnaW9uU2V0KHNpemVfdCBibG9ja1NpemUpCisg
ICAgICAgICAgICA6IG1fbnVtYmVyT2ZQYXJ0aWFsUmVnaW9ucygwKQorICAgICAgICAgICAgLCBt
X2Jsb2NrU2l6ZShibG9ja1NpemUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2Z1bGxS
ZWdpb25zLmlzRW1wdHkoKSAmJiBtX3BhcnRpYWxSZWdpb25zLmlzRW1wdHkoKTsKKyAgICAgICAg
fQorCisgICAgICAgIERvdWJseUxpbmtlZExpc3Q8UmVnaW9uPiBtX2Z1bGxSZWdpb25zOworICAg
ICAgICBEb3VibHlMaW5rZWRMaXN0PFJlZ2lvbj4gbV9wYXJ0aWFsUmVnaW9uczsKKyAgICAgICAg
c2l6ZV90IG1fbnVtYmVyT2ZQYXJ0aWFsUmVnaW9uczsKKyAgICAgICAgc2l6ZV90IG1fYmxvY2tT
aXplOworICAgIH07CisKKyAgICBEZWFkQmxvY2sqIHRyeUFsbG9jYXRlRnJvbVJlZ2lvbihSZWdp
b25TZXQmLCBEb3VibHlMaW5rZWRMaXN0PFJlZ2lvbj4mLCBzaXplX3QmKTsKKworICAgIGJvb2wg
YWxsUmVnaW9uU2V0c0FyZUVtcHR5KCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gUmVnaW9uU2V0JiByZWdpb25TZXRGb3IoKTsKKworICAgIFN1cGVyUmVnaW9uIG1fc3VwZXJS
ZWdpb247CisgICAgUmVnaW9uU2V0IG1fY29waWVkUmVnaW9uU2V0OworICAgIFJlZ2lvblNldCBt
X21hcmtlZFJlZ2lvblNldDsKKyAgICAvLyBXZWFrQmxvY2tzIGFuZCBHQ0FycmF5U2VnbWVudHMg
dXNlIHRoZSBzYW1lIFJlZ2lvblNldCBzaW5jZSB0aGV5J3JlIHRoZSBzYW1lIHNpemUuCisgICAg
UmVnaW9uU2V0IG1fZm91cktCQmxvY2tSZWdpb25TZXQ7CisgICAgUmVnaW9uU2V0IG1fd29ya0xp
c3RSZWdpb25TZXQ7CisKKyAgICBEb3VibHlMaW5rZWRMaXN0PFJlZ2lvbj4gbV9lbXB0eVJlZ2lv
bnM7CisgICAgc2l6ZV90IG1fbnVtYmVyT2ZFbXB0eVJlZ2lvbnM7CisKKyAgICBib29sIG1faXND
dXJyZW50bHlBbGxvY2F0aW5nOworICAgIGJvb2wgbV9ibG9ja0ZyZWVpbmdUaHJlYWRTaG91bGRR
dWl0OworICAgIFNwaW5Mb2NrIG1fcmVnaW9uTG9jazsKKyAgICBzdGQ6Om11dGV4IG1fZW1wdHlS
ZWdpb25Db25kaXRpb25NdXRleDsKKyAgICBzdGQ6OmNvbmRpdGlvbl92YXJpYWJsZSBtX2VtcHR5
UmVnaW9uQ29uZGl0aW9uOworICAgIFRocmVhZElkZW50aWZpZXIgbV9ibG9ja0ZyZWVpbmdUaHJl
YWQ7Cit9OworCitpbmxpbmUgRGVhZEJsb2NrKiBCbG9ja0FsbG9jYXRvcjo6dHJ5QWxsb2NhdGVG
cm9tUmVnaW9uKFJlZ2lvblNldCYgc2V0LCBEb3VibHlMaW5rZWRMaXN0PFJlZ2lvbj4mIHJlZ2lv
bnMsIHNpemVfdCYgbnVtYmVyT2ZSZWdpb25zKQoreworICAgIGlmIChudW1iZXJPZlJlZ2lvbnMp
IHsKKyAgICAgICAgQVNTRVJUKCFyZWdpb25zLmlzRW1wdHkoKSk7CisgICAgICAgIFJlZ2lvbiog
cmVnaW9uID0gcmVnaW9ucy5oZWFkKCk7CisgICAgICAgIEFTU0VSVCghcmVnaW9uLT5pc0Z1bGwo
KSk7CisKKyAgICAgICAgaWYgKHJlZ2lvbi0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBBU1NF
UlQocmVnaW9uID09IG1fZW1wdHlSZWdpb25zLmhlYWQoKSk7CisgICAgICAgICAgICBtX251bWJl
ck9mRW1wdHlSZWdpb25zLS07CisgICAgICAgICAgICBzZXQubV9udW1iZXJPZlBhcnRpYWxSZWdp
b25zKys7CisgICAgICAgICAgICByZWdpb24gPSBtX2VtcHR5UmVnaW9ucy5yZW1vdmVIZWFkKCkt
PnJlc2V0KHNldC5tX2Jsb2NrU2l6ZSk7CisgICAgICAgICAgICBzZXQubV9wYXJ0aWFsUmVnaW9u
cy5wdXNoKHJlZ2lvbik7CisgICAgICAgIH0KKworICAgICAgICBEZWFkQmxvY2sqIGJsb2NrID0g
cmVnaW9uLT5hbGxvY2F0ZSgpOworCisgICAgICAgIGlmIChyZWdpb24tPmlzRnVsbCgpKSB7Cisg
ICAgICAgICAgICBzZXQubV9udW1iZXJPZlBhcnRpYWxSZWdpb25zLS07CisgICAgICAgICAgICBz
ZXQubV9mdWxsUmVnaW9ucy5wdXNoKHNldC5tX3BhcnRpYWxSZWdpb25zLnJlbW92ZUhlYWQoKSk7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgfQorICAgIHJldHVybiAw
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIERlYWRCbG9jayogQmxvY2tBbGxv
Y2F0b3I6OmFsbG9jYXRlKCkKK3sKKyAgICBSZWdpb25TZXQmIHNldCA9IHJlZ2lvblNldEZvcjxU
PigpOworICAgIERlYWRCbG9jayogYmxvY2s7CisgICAgbV9pc0N1cnJlbnRseUFsbG9jYXRpbmcg
PSB0cnVlOworICAgIHsKKyAgICAgICAgU3BpbkxvY2tIb2xkZXIgbG9ja2VyKCZtX3JlZ2lvbkxv
Y2spOworICAgICAgICBpZiAoKGJsb2NrID0gdHJ5QWxsb2NhdGVGcm9tUmVnaW9uKHNldCwgc2V0
Lm1fcGFydGlhbFJlZ2lvbnMsIHNldC5tX251bWJlck9mUGFydGlhbFJlZ2lvbnMpKSkKKyAgICAg
ICAgICAgIHJldHVybiBibG9jazsKKyAgICAgICAgaWYgKChibG9jayA9IHRyeUFsbG9jYXRlRnJv
bVJlZ2lvbihzZXQsIG1fZW1wdHlSZWdpb25zLCBtX251bWJlck9mRW1wdHlSZWdpb25zKSkpCisg
ICAgICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgfQorCisgICAgUmVnaW9uKiBuZXdSZWdpb24g
PSBSZWdpb246OmNyZWF0ZSgmbV9zdXBlclJlZ2lvbiwgVDo6YmxvY2tTaXplKTsKKworICAgIFNw
aW5Mb2NrSG9sZGVyIGxvY2tlcigmbV9yZWdpb25Mb2NrKTsKKyAgICBtX2VtcHR5UmVnaW9ucy5w
dXNoKG5ld1JlZ2lvbik7CisgICAgbV9udW1iZXJPZkVtcHR5UmVnaW9ucysrOworICAgIGJsb2Nr
ID0gdHJ5QWxsb2NhdGVGcm9tUmVnaW9uKHNldCwgbV9lbXB0eVJlZ2lvbnMsIG1fbnVtYmVyT2ZF
bXB0eVJlZ2lvbnMpOworICAgIEFTU0VSVChibG9jayk7CisgICAgcmV0dXJuIGJsb2NrOworfQor
CitpbmxpbmUgRGVhZEJsb2NrKiBCbG9ja0FsbG9jYXRvcjo6YWxsb2NhdGVDdXN0b21TaXplKHNp
emVfdCBibG9ja1NpemUsIHNpemVfdCBibG9ja0FsaWdubWVudCkKK3sKKyAgICBzaXplX3QgcmVh
bFNpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoYmxvY2tBbGlnbm1lbnQsIGJsb2NrU2l6
ZSk7CisgICAgUmVnaW9uKiBuZXdSZWdpb24gPSBSZWdpb246OmNyZWF0ZUN1c3RvbVNpemUoJm1f
c3VwZXJSZWdpb24sIHJlYWxTaXplLCBibG9ja0FsaWdubWVudCk7CisgICAgRGVhZEJsb2NrKiBi
bG9jayA9IG5ld1JlZ2lvbi0+YWxsb2NhdGUoKTsKKyAgICBBU1NFUlQoYmxvY2spOworICAgIHJl
dHVybiBibG9jazsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIEJsb2Nr
QWxsb2NhdG9yOjpkZWFsbG9jYXRlKFQqIGJsb2NrKQoreworICAgIFJlZ2lvblNldCYgc2V0ID0g
cmVnaW9uU2V0Rm9yPFQ+KCk7CisgICAgYm9vbCBzaG91bGRXYWtlQmxvY2tGcmVlaW5nVGhyZWFk
ID0gZmFsc2U7CisgICAgeworICAgICAgICBTcGluTG9ja0hvbGRlciBsb2NrZXIoJm1fcmVnaW9u
TG9jayk7CisgICAgICAgIFJlZ2lvbiogcmVnaW9uID0gYmxvY2stPnJlZ2lvbigpOworICAgICAg
ICBBU1NFUlQoIXJlZ2lvbi0+aXNFbXB0eSgpKTsKKyAgICAgICAgaWYgKHJlZ2lvbi0+aXNGdWxs
KCkpCisgICAgICAgICAgICBzZXQubV9mdWxsUmVnaW9ucy5yZW1vdmUocmVnaW9uKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBzZXQubV9wYXJ0aWFsUmVnaW9ucy5yZW1vdmUocmVnaW9u
KTsKKyAgICAgICAgICAgIHNldC5tX251bWJlck9mUGFydGlhbFJlZ2lvbnMtLTsKKyAgICAgICAg
fQorCisgICAgICAgIHJlZ2lvbi0+ZGVhbGxvY2F0ZShibG9jayk7CisKKyAgICAgICAgaWYgKHJl
Z2lvbi0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX2VtcHR5UmVnaW9ucy5wdXNoKHJlZ2lv
bik7CisgICAgICAgICAgICBzaG91bGRXYWtlQmxvY2tGcmVlaW5nVGhyZWFkID0gIW1fbnVtYmVy
T2ZFbXB0eVJlZ2lvbnM7CisgICAgICAgICAgICBtX251bWJlck9mRW1wdHlSZWdpb25zKys7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZXQubV9wYXJ0aWFsUmVnaW9ucy5wdXNoKHJl
Z2lvbik7CisgICAgICAgICAgICBzZXQubV9udW1iZXJPZlBhcnRpYWxSZWdpb25zKys7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2hvdWxkV2FrZUJsb2NrRnJlZWluZ1RocmVhZCkgewor
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayhtX2VtcHR5UmVnaW9uQ29u
ZGl0aW9uTXV0ZXgpOworICAgICAgICBtX2VtcHR5UmVnaW9uQ29uZGl0aW9uLm5vdGlmeV9vbmUo
KTsKKyAgICB9CisKKyAgICBpZiAoIW1fYmxvY2tGcmVlaW5nVGhyZWFkKQorICAgICAgICByZWxl
YXNlRnJlZVJlZ2lvbnMoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lk
IEJsb2NrQWxsb2NhdG9yOjpkZWFsbG9jYXRlQ3VzdG9tU2l6ZShUKiBibG9jaykKK3sKKyAgICBS
ZWdpb24qIHJlZ2lvbiA9IGJsb2NrLT5yZWdpb24oKTsKKyAgICBBU1NFUlQocmVnaW9uLT5pc0N1
c3RvbVNpemUoKSk7CisgICAgcmVnaW9uLT5kZWFsbG9jYXRlKGJsb2NrKTsKKyAgICByZWdpb24t
PmRlc3Ryb3koKTsKK30KKworI2RlZmluZSBSRUdJT05fU0VUX0ZPUihibG9ja1R5cGUsIHNldCkg
XAorICAgIHRlbXBsYXRlIDw+IFwKKyAgICBpbmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNl
dCYgQmxvY2tBbGxvY2F0b3I6OnJlZ2lvblNldEZvcjxibG9ja1R5cGU+KCkgXAorICAgIHsgXAor
ICAgICAgICByZXR1cm4gc2V0OyBcCisgICAgfSBcCisgICAgdGVtcGxhdGUgPD4gXAorICAgIGlu
bGluZSBCbG9ja0FsbG9jYXRvcjo6UmVnaW9uU2V0JiBCbG9ja0FsbG9jYXRvcjo6cmVnaW9uU2V0
Rm9yPEhlYXBCbG9jazxibG9ja1R5cGU+PigpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIHNl
dDsgXAorICAgIH0gXAorCitSRUdJT05fU0VUX0ZPUihNYXJrZWRCbG9jaywgbV9tYXJrZWRSZWdp
b25TZXQpOworUkVHSU9OX1NFVF9GT1IoQ29waWVkQmxvY2ssIG1fY29waWVkUmVnaW9uU2V0KTsK
K1JFR0lPTl9TRVRfRk9SKFdlYWtCbG9jaywgbV9mb3VyS0JCbG9ja1JlZ2lvblNldCk7CitSRUdJ
T05fU0VUX0ZPUihHQ0FycmF5U2VnbWVudDxjb25zdCBKU0NlbGwqPiwgbV9mb3VyS0JCbG9ja1Jl
Z2lvblNldCk7CitSRUdJT05fU0VUX0ZPUihHQ0FycmF5U2VnbWVudDxDb2RlQmxvY2sqPiwgbV9m
b3VyS0JCbG9ja1JlZ2lvblNldCk7CitSRUdJT05fU0VUX0ZPUihDb3B5V29ya0xpc3RTZWdtZW50
LCBtX3dvcmtMaXN0UmVnaW9uU2V0KTsKK1JFR0lPTl9TRVRfRk9SKEhhbmRsZUJsb2NrLCBtX2Zv
dXJLQkJsb2NrUmVnaW9uU2V0KTsKKworI3VuZGVmIFJFR0lPTl9TRVRfRk9SCisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgoraW5saW5lIEJsb2NrQWxsb2NhdG9yOjpSZWdpb25TZXQmIEJsb2NrQWxs
b2NhdG9yOjpyZWdpb25TZXRGb3IoKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuICooUmVnaW9uU2V0KikwOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEJsb2NrQWxsb2NhdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db2RlQmxvY2tTZXQuY3BwCmluZGV4IGVhZTFhYWM1ZTM0MDRhM2QwODA2MWE5NTM2YTJkNGQ2
NjU2MTE2MGYuLjJhODE4ZjBlMWFjOGJkYmM5OTg4NWYwMjBmZjA1N2JiOTcwZWNkNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcApAQCAtMzUsOCArMzUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNl
OwogCi1Db2RlQmxvY2tTZXQ6OkNvZGVCbG9ja1NldCgpCi0gICAgOiBtX2N1cnJlbnRseUV4ZWN1
dGluZygpCitDb2RlQmxvY2tTZXQ6OkNvZGVCbG9ja1NldChCbG9ja0FsbG9jYXRvciYgYmxvY2tB
bGxvY2F0b3IpCisgICAgOiBtX2N1cnJlbnRseUV4ZWN1dGluZyhibG9ja0FsbG9jYXRvcikKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAppbmRleCBkMjQ4
MzM3MGI1NzE2ZDZjMjBjZWM2ZTQyZjI3ZjIwOTUyNzhkYWYyLi5lMDBjZWZlN2EwYmYwNjM0NTFi
ZjAyNjE1ZTJmYTFmMDU4YWNkNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2Rl
QmxvY2tTZXQuaApAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3Mg
QmxvY2tBbGxvY2F0b3I7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlND
ZWxsOwpAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBDb2RlQmxvY2tTZXQgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENvZGVCbG9ja1NldCk7CiAKIHB1YmxpYzoKLSAgICBDb2RlQmxvY2tTZXQo
KTsKKyAgICBDb2RlQmxvY2tTZXQoQmxvY2tBbGxvY2F0b3ImKTsKICAgICB+Q29kZUJsb2NrU2V0
KCk7CiAgICAgCiAgICAgLy8gQWRkIGEgQ29kZUJsb2NrLiBUaGlzIGlzIG9ubHkgY2FsbGVkIGJ5
IENvZGVCbG9jayBjb25zdHJ1Y3RvcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db3BpZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVk
QmxvY2suaAppbmRleCAxOTlkMGM1MWVlY2IzNzQ1MTViZjNhY2VlYjA5ZjM4ZTc4NzAwMWNjLi42
YjljOGY4MWM2NjE2YWEzMjY2NjYxMjI2YjA5NjJhYjFlY2E2NTgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvcGllZEJsb2NrLmgKQEAgLTI2LDEyICsyNiwxMiBAQAogI2lmbmRlZiBD
b3BpZWRCbG9ja19oCiAjZGVmaW5lIENvcGllZEJsb2NrX2gKIAorI2luY2x1ZGUgIkJsb2NrQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiQ29weVdvcmtMaXN0LmgiCiAjaW5jbHVkZSAiSGVhcEJsb2Nr
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNs
dWRlIDx3dGYvQXRvbWljcy5oPgotI2luY2x1ZGUgPHd0Zi9UQ1NwaW5Mb2NrLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIENvcGllZEJsb2NrIDogcHVibGlj
IEhlYXBCbG9jazxDb3BpZWRCbG9jaz4gewogICAgIGZyaWVuZCBjbGFzcyBDb3BpZWRTcGFjZTsK
ICAgICBmcmllbmQgY2xhc3MgQ29waWVkQWxsb2NhdG9yOwogcHVibGljOgotICAgIHN0YXRpYyBD
b3BpZWRCbG9jayogY3JlYXRlKHNpemVfdCk7Ci0gICAgc3RhdGljIENvcGllZEJsb2NrKiBjcmVh
dGVOb1plcm9GaWxsKHNpemVfdCk7CisgICAgc3RhdGljIENvcGllZEJsb2NrKiBjcmVhdGUoRGVh
ZEJsb2NrKik7CisgICAgc3RhdGljIENvcGllZEJsb2NrKiBjcmVhdGVOb1plcm9GaWxsKERlYWRC
bG9jayopOwogCiAgICAgdm9pZCBwaW4oKTsKICAgICBib29sIGlzUGlubmVkKCk7CkBAIC04Niw3
ICs4Niw3IEBAIHB1YmxpYzoKICAgICBTcGluTG9jayYgd29ya0xpc3RMb2NrKCkgeyByZXR1cm4g
bV93b3JrTGlzdExvY2s7IH0KIAogcHJpdmF0ZToKLSAgICBDb3BpZWRCbG9jayhzaXplX3QpOwor
ICAgIENvcGllZEJsb2NrKFJlZ2lvbiopOwogICAgIHZvaWQgemVyb0ZpbGxXaWxkZXJuZXNzKCk7
IC8vIENhbiBiZSBjYWxsZWQgYXQgYW55IHRpbWUgdG8gemVyby1maWxsIHRvIHRoZSBlbmQgb2Yg
dGhlIGJsb2NrLgogCiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC05NCw3ICs5NCw2
IEBAIHByaXZhdGU6CiAgICAgU3BpbkxvY2sgbV93b3JrTGlzdExvY2s7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPENvcHlXb3JrTGlzdD4gbV93b3JrTGlzdDsKIAotICAgIHNpemVfdCBtX2Jsb2NrU2l6
ZTsKICAgICBzaXplX3QgbV9yZW1haW5pbmc7CiAgICAgYm9vbCBtX2lzUGlubmVkIDogMTsKICAg
ICBib29sIG1faXNPbGQgOiAxOwpAQCAtMTA0LDE0ICsxMDMsMTUgQEAgcHJpdmF0ZToKICNlbmRp
ZgogfTsKIAotaW5saW5lIENvcGllZEJsb2NrKiBDb3BpZWRCbG9jazo6Y3JlYXRlTm9aZXJvRmls
bChzaXplX3QgYmxvY2tTaXplKQoraW5saW5lIENvcGllZEJsb2NrKiBDb3BpZWRCbG9jazo6Y3Jl
YXRlTm9aZXJvRmlsbChEZWFkQmxvY2sqIGJsb2NrKQogewotICAgIHJldHVybiBuZXcoTm90TnVs
bCwgZmFzdEFsaWduZWRNYWxsb2MoQ29waWVkQmxvY2s6OmJsb2NrU2l6ZSwgYmxvY2tTaXplKSkg
Q29waWVkQmxvY2soYmxvY2tTaXplKTsKKyAgICBSZWdpb24qIHJlZ2lvbiA9IGJsb2NrLT5yZWdp
b24oKTsKKyAgICByZXR1cm4gbmV3KE5vdE51bGwsIGJsb2NrKSBDb3BpZWRCbG9jayhyZWdpb24p
OwogfQogCi1pbmxpbmUgQ29waWVkQmxvY2sqIENvcGllZEJsb2NrOjpjcmVhdGUoc2l6ZV90IGJs
b2NrU2l6ZSkKK2lubGluZSBDb3BpZWRCbG9jayogQ29waWVkQmxvY2s6OmNyZWF0ZShEZWFkQmxv
Y2sqIGJsb2NrKQogewotICAgIENvcGllZEJsb2NrKiBuZXdCbG9jayA9IGNyZWF0ZU5vWmVyb0Zp
bGwoYmxvY2tTaXplKTsKKyAgICBDb3BpZWRCbG9jayogbmV3QmxvY2sgPSBjcmVhdGVOb1plcm9G
aWxsKGJsb2NrKTsKICAgICBuZXdCbG9jay0+emVyb0ZpbGxXaWxkZXJuZXNzKCk7CiAgICAgcmV0
dXJuIG5ld0Jsb2NrOwogfQpAQCAtMTI4LDkgKzEyOCw4IEBAIGlubGluZSB2b2lkIENvcGllZEJs
b2NrOjp6ZXJvRmlsbFdpbGRlcm5lc3MoKQogI2VuZGlmCiB9CiAKLWlubGluZSBDb3BpZWRCbG9j
azo6Q29waWVkQmxvY2soc2l6ZV90IGJsb2NrU2l6ZSkKLSAgICA6IEhlYXBCbG9jazxDb3BpZWRC
bG9jaz4oKQotICAgICwgbV9ibG9ja1NpemUoYmxvY2tTaXplKQoraW5saW5lIENvcGllZEJsb2Nr
OjpDb3BpZWRCbG9jayhSZWdpb24qIHJlZ2lvbikKKyAgICA6IEhlYXBCbG9jazxDb3BpZWRCbG9j
az4ocmVnaW9uKQogICAgICwgbV9yZW1haW5pbmcocGF5bG9hZENhcGFjaXR5KCkpCiAgICAgLCBt
X2lzUGlubmVkKGZhbHNlKQogICAgICwgbV9pc09sZChmYWxzZSkKQEAgLTIwNCw3ICsyMDMsNyBA
QCBpbmxpbmUgdm9pZCBDb3BpZWRCbG9jazo6ZGlkUHJvbW90ZSgpCiAKIGlubGluZSBib29sIENv
cGllZEJsb2NrOjppc092ZXJzaXplKCkKIHsKLSAgICByZXR1cm4gbV9ibG9ja1NpemUgIT0gYmxv
Y2tTaXplOworICAgIHJldHVybiByZWdpb24oKS0+aXNDdXN0b21TaXplKCk7CiB9CiAKIGlubGlu
ZSB1bnNpZ25lZCBDb3BpZWRCbG9jazo6bGl2ZUJ5dGVzKCkKQEAgLTIyMCw3ICsyMTksNyBAQCBp
bmxpbmUgY2hhciogQ29waWVkQmxvY2s6OnBheWxvYWQoKQogCiBpbmxpbmUgY2hhciogQ29waWVk
QmxvY2s6OnBheWxvYWRFbmQoKQogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIq
Pih0aGlzKSArIG1fYmxvY2tTaXplOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIq
Pih0aGlzKSArIHJlZ2lvbigpLT5ibG9ja1NpemUoKTsKIH0KIAogaW5saW5lIHNpemVfdCBDb3Bp
ZWRCbG9jazo6cGF5bG9hZENhcGFjaXR5KCkKQEAgLTI2NSw3ICsyNjQsNyBAQCBpbmxpbmUgc2l6
ZV90IENvcGllZEJsb2NrOjpzaXplKCkKIAogaW5saW5lIHNpemVfdCBDb3BpZWRCbG9jazo6Y2Fw
YWNpdHkoKQogewotICAgIHJldHVybiBtX2Jsb2NrU2l6ZTsKKyAgICByZXR1cm4gcmVnaW9uKCkt
PmJsb2NrU2l6ZSgpOwogfQogCiBpbmxpbmUgYm9vbCBDb3BpZWRCbG9jazo6aGFzV29ya0xpc3Qo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQmxvY2tJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9ja0lubGluZXMuaApp
bmRleCBmMWVhYjg4NGE1NGVhNjRiZTZjMjMwODRlZWNhMjIwOTkxODhlOWE3Li40NmU0NmQxMjEx
ZjcxYjgzZmMxYTg2YzRlNmQwMTJkMTI3YTUzNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db3BpZWRCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db3BpZWRCbG9ja0lubGluZXMuaApAQCAtNjIsNyArNjIsNyBAQCBpbmxpbmUg
dm9pZCBDb3BpZWRCbG9jazo6cmVwb3J0TGl2ZUJ5dGVzKFNwaW5Mb2NrSG9sZGVyJiwgSlNDZWxs
KiBvd25lciwgQ29weVRvawogICAgIH0KIAogICAgIGlmICghbV93b3JrTGlzdCkKLSAgICAgICAg
bV93b3JrTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29weVdvcmtMaXN0PigpOworICAgICAgICBt
X3dvcmtMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxDb3B5V29ya0xpc3Q+KEhlYXA6OmhlYXAob3du
ZXIpLT5ibG9ja0FsbG9jYXRvcigpKTsKIAogICAgIG1fd29ya0xpc3QtPmFwcGVuZChDb3B5V29y
a2xpc3RJdGVtKG93bmVyLCB0b2tlbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29waWVkU3BhY2UuY3BwCmluZGV4IDZmMWRlY2ZhNjc2MjU4NjVkMzNkOTY0MTU1MDM2YmE4YTkx
NjVmNzguLmNiMWE2NTZiNjMzMzQ1OTFlMmU3ODQ4OThhM2IwYjU0ZDk4ODI1N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5jcHAKQEAgLTQ1LDIyICs0NSwyMiBA
QCBDb3BpZWRTcGFjZTo6Q29waWVkU3BhY2UoSGVhcCogaGVhcCkKIENvcGllZFNwYWNlOjp+Q29w
aWVkU3BhY2UoKQogewogICAgIHdoaWxlICghbV9vbGRHZW4udG9TcGFjZS0+aXNFbXB0eSgpKQot
ICAgICAgICBDb3BpZWRCbG9jazo6ZGVzdHJveShtX29sZEdlbi50b1NwYWNlLT5yZW1vdmVIZWFk
KCkpOworICAgICAgICBtX2hlYXAtPmJsb2NrQWxsb2NhdG9yKCkuZGVhbGxvY2F0ZShDb3BpZWRC
bG9jazo6ZGVzdHJveShtX29sZEdlbi50b1NwYWNlLT5yZW1vdmVIZWFkKCkpKTsKIAogICAgIHdo
aWxlICghbV9vbGRHZW4uZnJvbVNwYWNlLT5pc0VtcHR5KCkpCi0gICAgICAgIENvcGllZEJsb2Nr
OjpkZXN0cm95KG1fb2xkR2VuLmZyb21TcGFjZS0+cmVtb3ZlSGVhZCgpKTsKKyAgICAgICAgbV9o
ZWFwLT5ibG9ja0FsbG9jYXRvcigpLmRlYWxsb2NhdGUoQ29waWVkQmxvY2s6OmRlc3Ryb3kobV9v
bGRHZW4uZnJvbVNwYWNlLT5yZW1vdmVIZWFkKCkpKTsKIAogICAgIHdoaWxlICghbV9vbGRHZW4u
b3ZlcnNpemVCbG9ja3MuaXNFbXB0eSgpKQotICAgICAgICBDb3BpZWRCbG9jazo6ZGVzdHJveSht
X29sZEdlbi5vdmVyc2l6ZUJsb2Nrcy5yZW1vdmVIZWFkKCkpOworICAgICAgICBtX2hlYXAtPmJs
b2NrQWxsb2NhdG9yKCkuZGVhbGxvY2F0ZUN1c3RvbVNpemUoQ29waWVkQmxvY2s6OmRlc3Ryb3ko
bV9vbGRHZW4ub3ZlcnNpemVCbG9ja3MucmVtb3ZlSGVhZCgpKSk7CiAKICAgICB3aGlsZSAoIW1f
bmV3R2VuLnRvU3BhY2UtPmlzRW1wdHkoKSkKLSAgICAgICAgQ29waWVkQmxvY2s6OmRlc3Ryb3ko
bV9uZXdHZW4udG9TcGFjZS0+cmVtb3ZlSGVhZCgpKTsKKyAgICAgICAgbV9oZWFwLT5ibG9ja0Fs
bG9jYXRvcigpLmRlYWxsb2NhdGUoQ29waWVkQmxvY2s6OmRlc3Ryb3kobV9uZXdHZW4udG9TcGFj
ZS0+cmVtb3ZlSGVhZCgpKSk7CiAKICAgICB3aGlsZSAoIW1fbmV3R2VuLmZyb21TcGFjZS0+aXNF
bXB0eSgpKQotICAgICAgICBDb3BpZWRCbG9jazo6ZGVzdHJveShtX25ld0dlbi5mcm9tU3BhY2Ut
PnJlbW92ZUhlYWQoKSk7CisgICAgICAgIG1faGVhcC0+YmxvY2tBbGxvY2F0b3IoKS5kZWFsbG9j
YXRlKENvcGllZEJsb2NrOjpkZXN0cm95KG1fbmV3R2VuLmZyb21TcGFjZS0+cmVtb3ZlSGVhZCgp
KSk7CiAKICAgICB3aGlsZSAoIW1fbmV3R2VuLm92ZXJzaXplQmxvY2tzLmlzRW1wdHkoKSkKLSAg
ICAgICAgQ29waWVkQmxvY2s6OmRlc3Ryb3kobV9uZXdHZW4ub3ZlcnNpemVCbG9ja3MucmVtb3Zl
SGVhZCgpKTsKKyAgICAgICAgbV9oZWFwLT5ibG9ja0FsbG9jYXRvcigpLmRlYWxsb2NhdGVDdXN0
b21TaXplKENvcGllZEJsb2NrOjpkZXN0cm95KG1fbmV3R2VuLm92ZXJzaXplQmxvY2tzLnJlbW92
ZUhlYWQoKSkpOwogCiAgICAgQVNTRVJUKG1fb2xkR2VuLnRvU3BhY2UtPmlzRW1wdHkoKSk7CiAg
ICAgQVNTRVJUKG1fb2xkR2VuLmZyb21TcGFjZS0+aXNFbXB0eSgpKTsKQEAgLTk5LDcgKzk5LDcg
QEAgQ2hlY2tlZEJvb2xlYW4gQ29waWVkU3BhY2U6OnRyeUFsbG9jYXRlT3ZlcnNpemUoc2l6ZV90
IGJ5dGVzLCB2b2lkKiogb3V0UHRyKQogewogICAgIEFTU0VSVChpc092ZXJzaXplKGJ5dGVzKSk7
CiAgICAgCi0gICAgQ29waWVkQmxvY2sqIGJsb2NrID0gQ29waWVkQmxvY2s6OmNyZWF0ZShzaXpl
b2YoQ29waWVkQmxvY2spICsgYnl0ZXMpOworICAgIENvcGllZEJsb2NrKiBibG9jayA9IENvcGll
ZEJsb2NrOjpjcmVhdGUobV9oZWFwLT5ibG9ja0FsbG9jYXRvcigpLmFsbG9jYXRlQ3VzdG9tU2l6
ZShzaXplb2YoQ29waWVkQmxvY2spICsgYnl0ZXMsIENvcGllZEJsb2NrOjpibG9ja1NpemUpKTsK
ICAgICBtX25ld0dlbi5vdmVyc2l6ZUJsb2Nrcy5wdXNoKGJsb2NrKTsKICAgICBtX25ld0dlbi5i
bG9ja0ZpbHRlci5hZGQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihibG9jaykpOwogICAgIG1fYmxv
Y2tTZXQuYWRkKGJsb2NrKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBDaGVja2VkQm9vbGVhbiBDb3Bp
ZWRTcGFjZTo6dHJ5QWxsb2NhdGVPdmVyc2l6ZShzaXplX3QgYnl0ZXMsIHZvaWQqKiBvdXRQdHIp
CiAgICAgKm91dFB0ciA9IGFsbG9jYXRvci5mb3JjZUFsbG9jYXRlKGJ5dGVzKTsKICAgICBhbGxv
Y2F0b3IucmVzZXRDdXJyZW50QmxvY2soKTsKIAotICAgIG1faGVhcC0+ZGlkQWxsb2NhdGUoYmxv
Y2stPmNhcGFjaXR5KCkpOworICAgIG1faGVhcC0+ZGlkQWxsb2NhdGUoYmxvY2stPnJlZ2lvbigp
LT5ibG9ja1NpemUoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE2MSw3ICsxNjEsNyBA
QCBDaGVja2VkQm9vbGVhbiBDb3BpZWRTcGFjZTo6dHJ5UmVhbGxvY2F0ZU92ZXJzaXplKHZvaWQq
KiBwdHIsIHNpemVfdCBvbGRTaXplLCBzaQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX25l
d0dlbi5vdmVyc2l6ZUJsb2Nrcy5yZW1vdmUob2xkQmxvY2spOwogICAgICAgICBtX2Jsb2NrU2V0
LnJlbW92ZShvbGRCbG9jayk7Ci0gICAgICAgIENvcGllZEJsb2NrOjpkZXN0cm95KG9sZEJsb2Nr
KTsKKyAgICAgICAgbV9oZWFwLT5ibG9ja0FsbG9jYXRvcigpLmRlYWxsb2NhdGVDdXN0b21TaXpl
KENvcGllZEJsb2NrOjpkZXN0cm95KG9sZEJsb2NrKSk7CiAgICAgfQogICAgIAogICAgICpwdHIg
PSBuZXdQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRT
cGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5s
aW5lcy5oCmluZGV4IDk5MjFkZmEwNjkyNDBiMzAyOTFjMzMxOGI2ZGIwMTBmNDkwOWYxMjcuLmVj
MzNmNTgyZmM2MDllODgyZTEwZGVkYzU1MTM1N2ZjZjBiYmZiNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5lcy5oCkBAIC0xMDYsMTIgKzEwNiwx
MiBAQCBpbmxpbmUgdm9pZCBDb3BpZWRTcGFjZTo6cmVjeWNsZUV2YWN1YXRlZEJsb2NrKENvcGll
ZEJsb2NrKiBibG9jaywgSGVhcE9wZXJhdGlvbgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X29sZEdlbi5mcm9tU3BhY2UtPnJlbW92ZShibG9jayk7CiAgICAgfQotICAgIENvcGllZEJsb2Nr
OjpkZXN0cm95KGJsb2NrKTsKKyAgICBtX2hlYXAtPmJsb2NrQWxsb2NhdG9yKCkuZGVhbGxvY2F0
ZShDb3BpZWRCbG9jazo6ZGVzdHJveShibG9jaykpOwogfQogCiBpbmxpbmUgdm9pZCBDb3BpZWRT
cGFjZTo6cmVjeWNsZUJvcnJvd2VkQmxvY2soQ29waWVkQmxvY2sqIGJsb2NrKQogewotICAgIENv
cGllZEJsb2NrOjpkZXN0cm95KGJsb2NrKTsKKyAgICBtX2hlYXAtPmJsb2NrQWxsb2NhdG9yKCku
ZGVhbGxvY2F0ZShDb3BpZWRCbG9jazo6ZGVzdHJveShibG9jaykpOwogCiAgICAgewogICAgICAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsKQEAgLTEyNiw3ICsxMjYs
NyBAQCBpbmxpbmUgdm9pZCBDb3BpZWRTcGFjZTo6cmVjeWNsZUJvcnJvd2VkQmxvY2soQ29waWVk
QmxvY2sqIGJsb2NrKQogaW5saW5lIENvcGllZEJsb2NrKiBDb3BpZWRTcGFjZTo6YWxsb2NhdGVC
bG9ja0ZvckNvcHlpbmdQaGFzZSgpCiB7CiAgICAgQVNTRVJUKG1faW5Db3B5aW5nUGhhc2UpOwot
ICAgIENvcGllZEJsb2NrKiBibG9jayA9IENvcGllZEJsb2NrOjpjcmVhdGVOb1plcm9GaWxsKENv
cGllZEJsb2NrOjpibG9ja1NpemUpOworICAgIENvcGllZEJsb2NrKiBibG9jayA9IENvcGllZEJs
b2NrOjpjcmVhdGVOb1plcm9GaWxsKG1faGVhcC0+YmxvY2tBbGxvY2F0b3IoKS5hbGxvY2F0ZTxD
b3BpZWRCbG9jaz4oKSk7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xv
YW5lZEJsb2Nrc0xvY2spOwpAQCAtMTQzLDcgKzE0Myw3IEBAIGlubGluZSB2b2lkIENvcGllZFNw
YWNlOjphbGxvY2F0ZUJsb2NrKCkKIAogICAgIG1fYWxsb2NhdG9yLnJlc2V0Q3VycmVudEJsb2Nr
KCk7CiAgICAgCi0gICAgQ29waWVkQmxvY2sqIGJsb2NrID0gQ29waWVkQmxvY2s6OmNyZWF0ZShD
b3BpZWRCbG9jazo6YmxvY2tTaXplKTsKKyAgICBDb3BpZWRCbG9jayogYmxvY2sgPSBDb3BpZWRC
bG9jazo6Y3JlYXRlKG1faGVhcC0+YmxvY2tBbGxvY2F0b3IoKS5hbGxvY2F0ZTxDb3BpZWRCbG9j
az4oKSk7CiAgICAgICAgIAogICAgIG1fbmV3R2VuLnRvU3BhY2UtPnB1c2goYmxvY2spOwogICAg
IG1fbmV3R2VuLmJsb2NrRmlsdGVyLmFkZChyZWludGVycHJldF9jYXN0PEJpdHM+KGJsb2NrKSk7
CkBAIC0yMzUsNyArMjM1LDcgQEAgaW5saW5lIHZvaWQgQ29waWVkU3BhY2U6OnN0YXJ0ZWRDb3B5
aW5nKCkKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG92ZXJzaXplQmxvY2tzLT5yZW1v
dmUoYmxvY2spOwogICAgICAgICAgICAgbV9ibG9ja1NldC5yZW1vdmUoYmxvY2spOwotICAgICAg
ICAgICAgQ29waWVkQmxvY2s6OmRlc3Ryb3koYmxvY2spOworICAgICAgICAgICAgbV9oZWFwLT5i
bG9ja0FsbG9jYXRvcigpLmRlYWxsb2NhdGVDdXN0b21TaXplKENvcGllZEJsb2NrOjpkZXN0cm95
KGJsb2NrKSk7CiAgICAgICAgIH0gCiAgICAgICAgIGJsb2NrID0gbmV4dDsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5V29ya0xpc3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlXb3JrTGlzdC5oCmluZGV4IDkwZWJmN2RlNTU2ZTRh
YWE0Y2Y2MTY2MGU5MmY4NDIxMzdlYzRiMWQuLjc2ZjFjM2Q2YjcxMjBkMTgxYWRlOTYxNzkxYjgz
ZTg1NDhhZjQ4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlX
b3JrTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlXb3JrTGlzdC5o
CkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIENvcHlXb3JrTGlzdF9oCiAKICNpbmNsdWRlICJD
b3B5VG9rZW4uaCIKLSNpbmNsdWRlICJIZWFwQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjAsOSArNTksOSBAQCBwcml2YXRlOgogCiBjbGFz
cyBDb3B5V29ya0xpc3RTZWdtZW50IDogcHVibGljIEhlYXBCbG9jazxDb3B5V29ya0xpc3RTZWdt
ZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENvcHlXb3JrTGlzdFNlZ21lbnQqIGNyZWF0ZSgp
CisgICAgc3RhdGljIENvcHlXb3JrTGlzdFNlZ21lbnQqIGNyZWF0ZShEZWFkQmxvY2sqIGJsb2Nr
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgZmFzdEFsaWduZWRNYWxsb2Mo
YmxvY2tTaXplLCBibG9ja1NpemUpKSBDb3B5V29ya0xpc3RTZWdtZW50KCk7CisgICAgICAgIHJl
dHVybiBuZXcgKE5vdE51bGwsIGJsb2NrKSBDb3B5V29ya0xpc3RTZWdtZW50KGJsb2NrLT5yZWdp
b24oKSk7CiAgICAgfQogCiAgICAgc2l6ZV90IHNpemUoKSB7IHJldHVybiBtX3NpemU7IH0KQEAg
LTc5LDggKzc4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXpl
ID0gNTEyOwogCiBwcml2YXRlOgotICAgIENvcHlXb3JrTGlzdFNlZ21lbnQoKQotICAgICAgICA6
IEhlYXBCbG9jazxDb3B5V29ya0xpc3RTZWdtZW50PigpCisgICAgQ29weVdvcmtMaXN0U2VnbWVu
dChSZWdpb24qIHJlZ2lvbikKKyAgICAgICAgOiBIZWFwQmxvY2s8Q29weVdvcmtMaXN0U2VnbWVu
dD4ocmVnaW9uKQogICAgICAgICAsIG1fc2l6ZSgwKQogICAgIHsKICAgICB9CkBAIC0xNDQsNiAr
MTQzLDcgQEAgY2xhc3MgQ29weVdvcmtMaXN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIENvcHlX
b3JrTGlzdEl0ZXJhdG9yIGl0ZXJhdG9yOwogCisgICAgQ29weVdvcmtMaXN0KEJsb2NrQWxsb2Nh
dG9yJik7CiAgICAgfkNvcHlXb3JrTGlzdCgpOwogCiAgICAgdm9pZCBhcHBlbmQoQ29weVdvcmts
aXN0SXRlbSk7CkBAIC0xNTIsMTggKzE1MiwyNCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
RG91Ymx5TGlua2VkTGlzdDxDb3B5V29ya0xpc3RTZWdtZW50PiBtX3NlZ21lbnRzOworICAgIEJs
b2NrQWxsb2NhdG9yJiBtX2Jsb2NrQWxsb2NhdG9yOwogfTsKIAoraW5saW5lIENvcHlXb3JrTGlz
dDo6Q29weVdvcmtMaXN0KEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcikKKyAgICA6IG1f
YmxvY2tBbGxvY2F0b3IoYmxvY2tBbGxvY2F0b3IpCit7Cit9CisKIGlubGluZSBDb3B5V29ya0xp
c3Q6On5Db3B5V29ya0xpc3QoKQogewogICAgIHdoaWxlICghbV9zZWdtZW50cy5pc0VtcHR5KCkp
Ci0gICAgICAgIENvcHlXb3JrTGlzdFNlZ21lbnQ6OmRlc3Ryb3kobV9zZWdtZW50cy5yZW1vdmVI
ZWFkKCkpOworICAgICAgICBtX2Jsb2NrQWxsb2NhdG9yLmRlYWxsb2NhdGUoQ29weVdvcmtMaXN0
U2VnbWVudDo6ZGVzdHJveShtX3NlZ21lbnRzLnJlbW92ZUhlYWQoKSkpOwogfQogCiBpbmxpbmUg
dm9pZCBDb3B5V29ya0xpc3Q6OmFwcGVuZChDb3B5V29ya2xpc3RJdGVtIGl0ZW0pCiB7CiAgICAg
aWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpIHx8IG1fc2VnbWVudHMudGFpbCgpLT5pc0Z1bGwoKSkK
LSAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoQ29weVdvcmtMaXN0U2VnbWVudDo6Y3JlYXRlKCkp
OworICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZChDb3B5V29ya0xpc3RTZWdtZW50OjpjcmVhdGUo
bV9ibG9ja0FsbG9jYXRvci5hbGxvY2F0ZTxDb3B5V29ya0xpc3RTZWdtZW50PigpKSk7CiAKICAg
ICBBU1NFUlQoIW1fc2VnbWVudHMudGFpbCgpLT5pc0Z1bGwoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaAppbmRleCBiOTRhMGNhNTU2M2RjNzYx
MTIyMTFhZGY4MmM0ZjAwZjM3YjdkMjE0Li44ZmFmMTZiZTliMmMyZDZmM2JhNTg0NzliZWUzZGQw
NzFkOTRhMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21l
bnRlZEFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRB
cnJheS5oCkBAIC0zMSwxOCArMzEsMjEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJs
b2NrQWxsb2NhdG9yOworY2xhc3MgRGVhZEJsb2NrOworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
IGNsYXNzIEdDQXJyYXlTZWdtZW50IDogcHVibGljIEhlYXBCbG9jazxHQ0FycmF5U2VnbWVudDxU
Pj4gewogcHVibGljOgotICAgIEdDQXJyYXlTZWdtZW50KCkKLSAgICAgICAgOiBIZWFwQmxvY2s8
R0NBcnJheVNlZ21lbnQ+KCkKKyAgICBHQ0FycmF5U2VnbWVudChSZWdpb24qIHJlZ2lvbikKKyAg
ICAgICAgOiBIZWFwQmxvY2s8R0NBcnJheVNlZ21lbnQ+KHJlZ2lvbikKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgICAgICwgbV90b3AoMCkKICNlbmRpZgogICAgIHsKICAgICB9CiAKLSAgICBz
dGF0aWMgR0NBcnJheVNlZ21lbnQqIGNyZWF0ZSgpOworICAgIHN0YXRpYyBHQ0FycmF5U2VnbWVu
dCogY3JlYXRlKERlYWRCbG9jayopOwogCiAgICAgVCogZGF0YSgpCiAgICAgewpAQCAtNjMsNyAr
NjYsNyBAQCBjbGFzcyBHQ1NlZ21lbnRlZEFycmF5IHsKICAgICBmcmllbmQgY2xhc3MgR0NTZWdt
ZW50ZWRBcnJheUl0ZXJhdG9yPFQ+OwogICAgIGZyaWVuZCBjbGFzcyBHQ1NlZ21lbnRlZEFycmF5
SXRlcmF0b3I8Y29uc3QgVD47CiBwdWJsaWM6Ci0gICAgR0NTZWdtZW50ZWRBcnJheSgpOworICAg
IEdDU2VnbWVudGVkQXJyYXkoQmxvY2tBbGxvY2F0b3ImKTsKICAgICB+R0NTZWdtZW50ZWRBcnJh
eSgpOwogCiAgICAgdm9pZCBhcHBlbmQoVCk7CkBAIC05OCw2ICsxMDEsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCB2YWxpZGF0ZVByZXZpb3VzKCk7CiAKICAgICBEb3VibHlMaW5rZWRMaXN0PEdD
QXJyYXlTZWdtZW50PFQ+PiBtX3NlZ21lbnRzOworICAgIEJsb2NrQWxsb2NhdG9yJiBtX2Jsb2Nr
QWxsb2NhdG9yOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGNvbnN0IHNpemVfdCBz
X3NlZ21lbnRDYXBhY2l0eSA9IENhcGFjaXR5RnJvbVNpemU8R0NBcnJheVNlZ21lbnQ8VD46OmJs
b2NrU2l6ZT46OnZhbHVlOwogICAgIHNpemVfdCBtX3RvcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oCmluZGV4IGIxNDhmYWQ0
ODE3NTUzNzE0MjdlZmJmMzMyNWU2OTY5MjIzNDk0ODguLmUyZWZmNGQ4NzgwNDMzMGU5YmQxOWQx
ZjhmZGZjOWQ0NmU0OWRjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0dDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaApAQCAtMjYsMTYgKzI2LDE4IEBACiAjaWZuZGVm
IEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzX2gKICNkZWZpbmUgR0NTZWdtZW50ZWRBcnJheUlubGlu
ZXNfaAogCisjaW5jbHVkZSAiQmxvY2tBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJHQ1NlZ21lbnRl
ZEFycmF5LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUdD
U2VnbWVudGVkQXJyYXk8VD46OkdDU2VnbWVudGVkQXJyYXkoKQotICAgIDogbV90b3AoMCkKK0dD
U2VnbWVudGVkQXJyYXk8VD46OkdDU2VnbWVudGVkQXJyYXkoQmxvY2tBbGxvY2F0b3ImIGJsb2Nr
QWxsb2NhdG9yKQorICAgIDogbV9ibG9ja0FsbG9jYXRvcihibG9ja0FsbG9jYXRvcikKKyAgICAs
IG1fdG9wKDApCiAgICAgLCBtX251bWJlck9mU2VnbWVudHMoMCkKIHsKLSAgICBtX3NlZ21lbnRz
LnB1c2goR0NBcnJheVNlZ21lbnQ8VD46OmNyZWF0ZSgpKTsKKyAgICBtX3NlZ21lbnRzLnB1c2go
R0NBcnJheVNlZ21lbnQ8VD46OmNyZWF0ZShtX2Jsb2NrQWxsb2NhdG9yLmFsbG9jYXRlPEdDQXJy
YXlTZWdtZW50PFQ+PigpKSk7CiAgICAgbV9udW1iZXJPZlNlZ21lbnRzKys7CiB9CiAKQEAgLTQ0
LDcgKzQ2LDcgQEAgR0NTZWdtZW50ZWRBcnJheTxUPjo6fkdDU2VnbWVudGVkQXJyYXkoKQogewog
ICAgIEFTU0VSVChtX251bWJlck9mU2VnbWVudHMgPT0gMSk7CiAgICAgQVNTRVJUKG1fc2VnbWVu
dHMuc2l6ZSgpID09IDEpOwotICAgIEdDQXJyYXlTZWdtZW50PFQ+OjpkZXN0cm95KG1fc2VnbWVu
dHMucmVtb3ZlSGVhZCgpKTsKKyAgICBtX2Jsb2NrQWxsb2NhdG9yLmRlYWxsb2NhdGUoR0NBcnJh
eVNlZ21lbnQ8VD46OmRlc3Ryb3kobV9zZWdtZW50cy5yZW1vdmVIZWFkKCkpKTsKICAgICBtX251
bWJlck9mU2VnbWVudHMtLTsKICAgICBBU1NFUlQoIW1fbnVtYmVyT2ZTZWdtZW50cyk7CiAgICAg
QVNTRVJUKCFtX3NlZ21lbnRzLnNpemUoKSk7CkBAIC01OSw3ICs2MSw3IEBAIHZvaWQgR0NTZWdt
ZW50ZWRBcnJheTxUPjo6Y2xlYXIoKQogICAgIGZvciAoR0NBcnJheVNlZ21lbnQ8VD4qIGN1cnJl
bnQgPSBtX3NlZ21lbnRzLmhlYWQoKTsgY3VycmVudC0+bmV4dCgpOyBjdXJyZW50ID0gbmV4dCkg
ewogICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4dCgpOwogICAgICAgICBtX3NlZ21lbnRzLnJl
bW92ZShjdXJyZW50KTsKLSAgICAgICAgR0NBcnJheVNlZ21lbnQ8VD46OmRlc3Ryb3koY3VycmVu
dCk7CisgICAgICAgIG1fYmxvY2tBbGxvY2F0b3IuZGVhbGxvY2F0ZShHQ0FycmF5U2VnbWVudDxU
Pjo6ZGVzdHJveShjdXJyZW50KSk7CiAgICAgfQogICAgIG1fdG9wID0gMDsKICAgICBtX251bWJl
ck9mU2VnbWVudHMgPSAxOwpAQCAtNzMsNyArNzUsNyBAQCB2b2lkIEdDU2VnbWVudGVkQXJyYXk8
VD46OmV4cGFuZCgpCiB7CiAgICAgQVNTRVJUKG1fc2VnbWVudHMuaGVhZCgpLT5tX3RvcCA9PSBz
X3NlZ21lbnRDYXBhY2l0eSk7CiAgICAgCi0gICAgR0NBcnJheVNlZ21lbnQ8VD4qIG5leHRTZWdt
ZW50ID0gR0NBcnJheVNlZ21lbnQ8VD46OmNyZWF0ZSgpOworICAgIEdDQXJyYXlTZWdtZW50PFQ+
KiBuZXh0U2VnbWVudCA9IEdDQXJyYXlTZWdtZW50PFQ+OjpjcmVhdGUobV9ibG9ja0FsbG9jYXRv
ci5hbGxvY2F0ZTxHQ0FycmF5U2VnbWVudDxUPj4oKSk7CiAgICAgbV9udW1iZXJPZlNlZ21lbnRz
Kys7CiAgICAgCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtOTEsNyArOTMsNyBAQCBib29sIEdD
U2VnbWVudGVkQXJyYXk8VD46OnJlZmlsbCgpCiAgICAgdmFsaWRhdGVQcmV2aW91cygpOwogICAg
IGlmICh0b3AoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgR0NBcnJheVNlZ21lbnQ8VD46
OmRlc3Ryb3kobV9zZWdtZW50cy5yZW1vdmVIZWFkKCkpOworICAgIG1fYmxvY2tBbGxvY2F0b3Iu
ZGVhbGxvY2F0ZShHQ0FycmF5U2VnbWVudDxUPjo6ZGVzdHJveShtX3NlZ21lbnRzLnJlbW92ZUhl
YWQoKSkpOwogICAgIEFTU0VSVChtX251bWJlck9mU2VnbWVudHMgPiAxKTsKICAgICBtX251bWJl
ck9mU2VnbWVudHMtLTsKICAgICBzZXRUb3BGb3JGdWxsU2VnbWVudCgpOwpAQCAtMTI1LDkgKzEy
Nyw5IEBAIHZvaWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6ZmlsbFZlY3RvcihWZWN0b3I8VD4mIHZl
Y3RvcikKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgR0NBcnJheVNlZ21lbnQ8
VD4qIEdDQXJyYXlTZWdtZW50PFQ+OjpjcmVhdGUoKQoraW5saW5lIEdDQXJyYXlTZWdtZW50PFQ+
KiBHQ0FycmF5U2VnbWVudDxUPjo6Y3JlYXRlKERlYWRCbG9jayogYmxvY2spCiB7Ci0gICAgcmV0
dXJuIG5ldyAoTm90TnVsbCwgZmFzdEFsaWduZWRNYWxsb2MoYmxvY2tTaXplLCBibG9ja1NpemUp
KSBHQ0FycmF5U2VnbWVudDxUPigpOworICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGJsb2NrKSBH
Q0FycmF5U2VnbWVudDxUPihibG9jay0+cmVnaW9uKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkU2hh
cmVkRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNoYXJlZERh
dGEuY3BwCmluZGV4IGM4ODQ3YWFiNGEwYzQ0MzU1ZTg4ZmU1OGQzYWNiMjM4MWMyMGM4NjUuLjI3
ZTU5ZThlYzkwMjA0NjU1ZDNjZjJkYWIyZmVjNzUzNTFmZGQ3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmNwcApAQCAtNzMsNyArNzMs
NyBAQCBHQ1RocmVhZFNoYXJlZERhdGE6OkdDVGhyZWFkU2hhcmVkRGF0YShWTSogdm0pCiAgICAg
OiBtX3ZtKHZtKQogICAgICwgbV9jb3BpZWRTcGFjZSgmdm0tPmhlYXAubV9zdG9yYWdlU3BhY2Up
CiAgICAgLCBtX3Nob3VsZEhhc2hDb25zKGZhbHNlKQotICAgICwgbV9zaGFyZWRNYXJrU3RhY2so
KQorICAgICwgbV9zaGFyZWRNYXJrU3RhY2sodm0tPmhlYXAuYmxvY2tBbGxvY2F0b3IoKSkKICAg
ICAsIG1fbnVtYmVyT2ZBY3RpdmVQYXJhbGxlbE1hcmtlcnMoMCkKICAgICAsIG1fcGFyYWxsZWxN
YXJrZXJzU2hvdWxkRXhpdChmYWxzZSkKICAgICAsIG1fY29weUluZGV4KDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5oCmluZGV4IDgxZDA3MzQ3
ZTRjYWY1NjI5NGZiNmE0ODA2MzliMzNkYzEyODI4MzIuLjMyYzA2YmRhMzQ3ZjM3NWM2NDc4ZmVm
ZDkxNTkyMGE2NWUxMmE3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0dDVGhyZWFkU2hhcmVkRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dD
VGhyZWFkU2hhcmVkRGF0YS5oCkBAIC00MCw3ICs0MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBHQ1RocmVhZDsKIGNsYXNzIFZNOwotY2xhc3MgQ29waWVkQmxvY2s7CiBjbGFzcyBDb3Bp
ZWRTcGFjZTsKIGNsYXNzIENvcHlWaXNpdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IYW5kbGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGFuZGxlQmxvY2suaAppbmRleCAxZTRlN2Q1YjM0MjNiZDU4NjRlYWU3MzMyNGFhZDFhYzBmMzJl
MmFkLi45NjJkMzdjNWUzOTE5Y2U1ODBlZDgxNGVlODgzNjMzZGNiZGE2MDZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUJsb2NrLmgKQEAgLTMwLDEyICszMCwxMyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgRGVhZEJsb2NrOwogY2xhc3MgSGFuZGxlU2V0OwogY2xh
c3MgSGFuZGxlTm9kZTsKIAogY2xhc3MgSGFuZGxlQmxvY2sgOiBwdWJsaWMgSGVhcEJsb2NrPEhh
bmRsZUJsb2NrPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEhhbmRsZUJsb2NrKiBjcmVhdGUoSGFu
ZGxlU2V0Kik7CisgICAgc3RhdGljIEhhbmRsZUJsb2NrKiBjcmVhdGUoRGVhZEJsb2NrKiwgSGFu
ZGxlU2V0Kik7CiAgICAgc3RhdGljIEhhbmRsZUJsb2NrKiBibG9ja0ZvcihIYW5kbGVOb2RlKik7
CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDQgKiBLQjsKQEAgLTQ3LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG5vZGVDYXBhY2l0eSgpOwogCiBwcml2YXRl
OgotICAgIEhhbmRsZUJsb2NrKEhhbmRsZVNldCopOworICAgIEhhbmRsZUJsb2NrKFJlZ2lvbios
IEhhbmRsZVNldCopOwogCiAgICAgY2hhciogcGF5bG9hZCgpOwogICAgIGNoYXIqIHBheWxvYWRF
bmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUJsb2Nr
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlQmxvY2tJbmxpbmVz
LmgKaW5kZXggMTBiYmZlNzJhNzZiMGMxN2IxOGVjYjdhZDU5ZjAyMWQ2ODgxZWFhNC4uN2M3NzE5
MzVlMGUyYzNkY2E2YjMwNWE2YjRmMDJjNjk4ZTg5MmQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlQmxvY2tJbmxpbmVzLmgKQEAgLTI2LDI0ICsyNiwyNiBAQAog
I2lmbmRlZiBIYW5kbGVCbG9ja0lubGluZXNfaAogI2RlZmluZSBIYW5kbGVCbG9ja0lubGluZXNf
aAogCisjaW5jbHVkZSAiQmxvY2tBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIYW5kbGVCbG9jay5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIEhhbmRsZUJsb2NrKiBIYW5kbGVCbG9jazo6
Y3JlYXRlKEhhbmRsZVNldCogaGFuZGxlU2V0KQoraW5saW5lIEhhbmRsZUJsb2NrKiBIYW5kbGVC
bG9jazo6Y3JlYXRlKERlYWRCbG9jayogYmxvY2ssIEhhbmRsZVNldCogaGFuZGxlU2V0KQogewot
ICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGZhc3RBbGlnbmVkTWFsbG9jKGJsb2NrU2l6ZSwgYmxv
Y2tTaXplKSkgSGFuZGxlQmxvY2soaGFuZGxlU2V0KTsKKyAgICBSZWdpb24qIHJlZ2lvbiA9IGJs
b2NrLT5yZWdpb24oKTsKKyAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBibG9jaykgSGFuZGxlQmxv
Y2socmVnaW9uLCBoYW5kbGVTZXQpOwogfQogCi1pbmxpbmUgSGFuZGxlQmxvY2s6OkhhbmRsZUJs
b2NrKEhhbmRsZVNldCogaGFuZGxlU2V0KQotICAgIDogSGVhcEJsb2NrPEhhbmRsZUJsb2NrPigp
CitpbmxpbmUgSGFuZGxlQmxvY2s6OkhhbmRsZUJsb2NrKFJlZ2lvbiogcmVnaW9uLCBIYW5kbGVT
ZXQqIGhhbmRsZVNldCkKKyAgICA6IEhlYXBCbG9jazxIYW5kbGVCbG9jaz4ocmVnaW9uKQogICAg
ICwgbV9oYW5kbGVTZXQoaGFuZGxlU2V0KQogewogfQogCiBpbmxpbmUgY2hhciogSGFuZGxlQmxv
Y2s6OnBheWxvYWRFbmQoKQogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPih0
aGlzKSArIGJsb2NrU2l6ZTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhp
cykgKyByZWdpb24oKS0+YmxvY2tTaXplKCk7CiB9CiAKIGlubGluZSBjaGFyKiBIYW5kbGVCbG9j
azo6cGF5bG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5k
bGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmNwcAppbmRl
eCBkZWM4MzcwZWJlNGJmMDFjNzkyOTgxYmU3MDNjYTM5NmU3YWNjMTUyLi5iZTY2N2U4MjAyZmM5
YzBlZGQ2ZTNlNDQ5MzMzMWMyMGRiMDZmMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IYW5kbGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hhbmRsZVNldC5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCBIYW5kbGVTZXQ6OkhhbmRsZVNldChW
TSogdm0pCiBIYW5kbGVTZXQ6On5IYW5kbGVTZXQoKQogewogICAgIHdoaWxlICghbV9ibG9ja0xp
c3QuaXNFbXB0eSgpKQotICAgICAgICBIYW5kbGVCbG9jazo6ZGVzdHJveShtX2Jsb2NrTGlzdC5y
ZW1vdmVIZWFkKCkpOworICAgICAgICBtX3ZtLT5oZWFwLmJsb2NrQWxsb2NhdG9yKCkuZGVhbGxv
Y2F0ZShIYW5kbGVCbG9jazo6ZGVzdHJveShtX2Jsb2NrTGlzdC5yZW1vdmVIZWFkKCkpKTsKIH0K
IAogdm9pZCBIYW5kbGVTZXQ6Omdyb3coKQogewotICAgIEhhbmRsZUJsb2NrKiBuZXdCbG9jayA9
IEhhbmRsZUJsb2NrOjpjcmVhdGUodGhpcyk7CisgICAgSGFuZGxlQmxvY2sqIG5ld0Jsb2NrID0g
SGFuZGxlQmxvY2s6OmNyZWF0ZShtX3ZtLT5oZWFwLmJsb2NrQWxsb2NhdG9yKCkuYWxsb2NhdGU8
SGFuZGxlQmxvY2s+KCksIHRoaXMpOwogICAgIG1fYmxvY2tMaXN0LmFwcGVuZChuZXdCbG9jayk7
CiAKICAgICBmb3IgKGludCBpID0gbmV3QmxvY2stPm5vZGVDYXBhY2l0eSgpIC0gMTsgaSA+PSAw
OyAtLWkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggNDI3ODc5ZjE0NmQ4
ZDdkODg4OWFmNjViYWM5NTNhZjU3M2Q2NTU5Mi4uMzc1OGRkM2RiMWJkODY4Mzk2ZWQ3Njc4ZDgx
NzNjZGU4YjdkZWM0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMwOCw2
ICszMDgsNyBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBt
X3RvdGFsQnl0ZXNWaXNpdGVkKDApCiAgICAgLCBtX3RvdGFsQnl0ZXNDb3BpZWQoMCkKICAgICAs
IG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyhOb09wZXJhdGlvbikKKyAgICAsIG1fYmxvY2tBbGxvY2F0
b3IoKQogICAgICwgbV9vYmplY3RTcGFjZSh0aGlzKQogICAgICwgbV9zdG9yYWdlU3BhY2UodGhp
cykKICAgICAsIG1fZXh0cmFNZW1vcnlVc2FnZSgwKQpAQCAtMzE2LDcgKzMxNyw3IEBAIEhlYXA6
OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fc2xvdFZpc2l0b3IobV9z
aGFyZWREYXRhKQogICAgICwgbV9jb3B5VmlzaXRvcihtX3NoYXJlZERhdGEpCiAgICAgLCBtX2hh
bmRsZVNldCh2bSkKLSAgICAsIG1fY29kZUJsb2NrcygpCisgICAgLCBtX2NvZGVCbG9ja3MobV9i
bG9ja0FsbG9jYXRvcikKICAgICAsIG1faXNTYWZlVG9Db2xsZWN0KGZhbHNlKQogICAgICwgbV93
cml0ZUJhcnJpZXJCdWZmZXIoMjU2KQogICAgICwgbV92bSh2bSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAppbmRleCA1ZmU1NzhmMjkzODlmMGY1MzEwNzc4MjQ3NDk2MWVhMTUzYTY3NTMwLi43
NjE5NDY1YzZmZTM2ZTYwOGM4MTJlMGZmODEwMGQ4ZDRjZGEwMmNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCkBAIC0yMyw2ICsyMyw3IEBACiAjZGVmaW5lIEhlYXBfaAogCiAjaW5jbHVk
ZSAiQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJCbG9ja0FsbG9jYXRvci5oIgogI2luY2x1ZGUg
IkNvZGVCbG9ja1NldC5oIgogI2luY2x1ZGUgIkNvcHlWaXNpdG9yLmgiCiAjaW5jbHVkZSAiR0NJ
bmNvbWluZ1JlZkNvdW50ZWRTZXQuaCIKQEAgLTIxNCw2ICsyMTUsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgYm9vbCBpc0RlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gISFtX2RlZmVycmFsRGVwdGgg
fHwgT3B0aW9uczo6ZGlzYWJsZUdDKCk7IH0KIAorICAgIEJsb2NrQWxsb2NhdG9yJiBibG9ja0Fs
bG9jYXRvcigpOwogICAgIFN0cnVjdHVyZUlEVGFibGUmIHN0cnVjdHVyZUlEVGFibGUoKSB7IHJl
dHVybiBtX3N0cnVjdHVyZUlEVGFibGU7IH0KIAogI2lmIFVTRShDRikKQEAgLTI0Myw2ICsyNDUs
NyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb3B5VmlzaXRvcjsKICAgICBmcmllbmQg
Y2xhc3MgUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlOwogICAgIGZyaWVuZCBjbGFzcyBTbG90Vmlz
aXRvcjsKKyAgICBmcmllbmQgY2xhc3MgU3VwZXJSZWdpb247CiAgICAgZnJpZW5kIGNsYXNzIElu
Y3JlbWVudGFsU3dlZXBlcjsKICAgICBmcmllbmQgY2xhc3MgSGVhcFN0YXRpc3RpY3M7CiAgICAg
ZnJpZW5kIGNsYXNzIFZNOwpAQCAtMzM5LDYgKzM0Miw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90
IG1fdG90YWxCeXRlc0NvcGllZDsKICAgICAKICAgICBIZWFwT3BlcmF0aW9uIG1fb3BlcmF0aW9u
SW5Qcm9ncmVzczsKKyAgICBCbG9ja0FsbG9jYXRvciBtX2Jsb2NrQWxsb2NhdG9yOwogICAgIFN0
cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRhYmxlOwogICAgIE1hcmtlZFNwYWNlIG1fb2Jq
ZWN0U3BhY2U7CiAgICAgQ29waWVkU3BhY2UgbV9zdG9yYWdlU3BhY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBCbG9jay5oCmluZGV4IDk4N2Q3MjZjNzBiZjhmNDkxMjU3NzNjZGI0ZmUw
MWM5NzY2ZThjYmIuLmE1YjhkN2UxZDNkM2U2NTQ2YTVkNWExMGUwYTFmZTEyOWJiMDRlMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBCbG9jay5oCkBAIC0yNywzMSArMjcsMzcgQEAK
ICNkZWZpbmUgSGVhcEJsb2NrX2gKIAogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+
Ci0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxvY2F0
aW9uQ2FuRmFpbCwgQWxsb2NhdGlvbk11c3RTdWNjZWVkIH07CiAKK2NsYXNzIFJlZ2lvbjsKKwog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIEhlYXBCbG9jayA6IHB1YmxpYyBEb3VibHlMaW5r
ZWRMaXN0Tm9kZTxUPiB7CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6RG91Ymx5TGlua2VkTGlzdE5v
ZGU8VD47CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShIZWFwQmxvY2sqIGJsb2Nr
KQorICAgIHN0YXRpYyBIZWFwQmxvY2sqIGRlc3Ryb3koSGVhcEJsb2NrKiBibG9jaykgV0FSTl9V
TlVTRURfUkVUVVJOCiAgICAgewogICAgICAgICBzdGF0aWNfY2FzdDxUKj4oYmxvY2spLT5+VCgp
OwotICAgICAgICBmYXN0QWxpZ25lZEZyZWUoYmxvY2spOworICAgICAgICByZXR1cm4gYmxvY2s7
CiAgICAgfQogCi0gICAgSGVhcEJsb2NrKCkKKyAgICBIZWFwQmxvY2soUmVnaW9uKiByZWdpb24p
CiAgICAgICAgIDogRG91Ymx5TGlua2VkTGlzdE5vZGU8VD4oKQorICAgICAgICAsIG1fcmVnaW9u
KHJlZ2lvbikKICAgICAgICAgLCBtX3ByZXYoMCkKICAgICAgICAgLCBtX25leHQoMCkKICAgICB7
CisgICAgICAgIEFTU0VSVChtX3JlZ2lvbik7CiAgICAgfQogCisgICAgUmVnaW9uKiByZWdpb24o
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbjsgfQorCiBwcml2YXRlOgorICAgIFJlZ2lvbiogbV9y
ZWdpb247CiAgICAgVCogbV9wcmV2OwogICAgIFQqIG1fbmV4dDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRleCBlNjcwNDEyYmUyZWFmMTg0Y2QyM2MyY2Yy
ZjBmNDY0M2ZjMDdiMjQxLi4xZTQyYzZhZTM2NWQ2NDc5MDI1MjlmZTAyMmVmNmNiY2ZiYzA3M2Y4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTI0MCw2ICsy
NDAsMTEgQEAgaW5saW5lIHZvaWQgSGVhcDo6YXNjcmliZU93bmVyKEpTQ2VsbCogaW50ZW5kZWRP
d25lciwgdm9pZCogc3RvcmFnZSkKICNlbmRpZgogfQogCitpbmxpbmUgQmxvY2tBbGxvY2F0b3Im
IEhlYXA6OmJsb2NrQWxsb2NhdG9yKCkKK3sKKyAgICByZXR1cm4gbV9ibG9ja0FsbG9jYXRvcjsK
K30KKwogI2lmIFVTRShDRikKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogaW5saW5lIHZvaWQgSGVh
cDo6cmVsZWFzZVNvb24oUmV0YWluUHRyPFQ+JiYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBUaW1lci5jcHAKaW5kZXggNWFhMzM5OTZlODRlODdiZWIyOTE0Mzc5NDlkZDg0
NjVkZmY0NDFkOC4uOTY2MGQ2NjIxNjUyNjg0NzZkNTczN2JjYTJhZDdmNjUyM2QxZjkyYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSGVhcFRpbWVyLmgiCiAKLSNpbmNsdWRl
ICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAppbmRleCBkYTZlZjk0NzIzZDBiNWU3NjA0YTEw
ZWE5YjdmN2I1ZWYyNWY0ZTM4Li42NjIwMWY0ZjEwNzQ0OTE2NWVlOWYwZTZlNTQwZTY0ZGY1OGFm
MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTMwLDgg
KzMwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLU1hcmtTdGFja0FycmF5OjpNYXJrU3RhY2tB
cnJheSgpCi0gICAgOiBHQ1NlZ21lbnRlZEFycmF5PGNvbnN0IEpTQ2VsbCo+KCkKK01hcmtTdGFj
a0FycmF5OjpNYXJrU3RhY2tBcnJheShCbG9ja0FsbG9jYXRvciYgYmxvY2tBbGxvY2F0b3IpCisg
ICAgOiBHQ1NlZ21lbnRlZEFycmF5PGNvbnN0IEpTQ2VsbCo+KGJsb2NrQWxsb2NhdG9yKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCmluZGV4IDA0ZjE5YzYyYzNk
NjczNzNhODUzMTc1NmEyZjhlN2Y0YWQzNTMwZDEuLjE3YTYwMTk0NTMwYjRkNzY1MjM1MzI0Yzcw
M2MzMmE1NjYyMmRlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCkBA
IC0zNCw3ICszNCw3IEBAIGNsYXNzIEpTQ2VsbDsKIAogY2xhc3MgTWFya1N0YWNrQXJyYXkgOiBw
dWJsaWMgR0NTZWdtZW50ZWRBcnJheTxjb25zdCBKU0NlbGwqPiB7CiBwdWJsaWM6Ci0gICAgTWFy
a1N0YWNrQXJyYXkoKTsKKyAgICBNYXJrU3RhY2tBcnJheShCbG9ja0FsbG9jYXRvciYpOwogCiAg
ICAgdm9pZCBkb25hdGVTb21lQ2VsbHNUbyhNYXJrU3RhY2tBcnJheSYgb3RoZXIpOwogICAgIHZv
aWQgc3RlYWxTb21lQ2VsbHNGcm9tKE1hcmtTdGFja0FycmF5JiBvdGhlciwgc2l6ZV90IGlkbGVU
aHJlYWRDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2Nh
dG9yLmNwcAppbmRleCA3YmYyYWE5ZDdmZDM1ZDRhNWM0ZjdkNzBiNGMzMGJhYTIwYzJhOGI3Li5i
OGYwMWZkMTg3OTIwZjM2MDUzYTk0OGFkZjYwMDk0Njg4MzljM2VhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKQEAgLTE5OCw3ICsxOTgsOSBA
QCBNYXJrZWRCbG9jayogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUJsb2NrKHNpemVfdCBieXRl
cykKIAogICAgIHNpemVfdCBjZWxsU2l6ZSA9IG1fY2VsbFNpemUgPyBtX2NlbGxTaXplIDogV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oYnl0ZXMpOwogCi0g
ICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpjcmVhdGUodGhpcywgYmxvY2tTaXplLCBjZWxsU2l6ZSwg
bV9kZXN0cnVjdG9yVHlwZSk7CisgICAgaWYgKGJsb2NrU2l6ZSA9PSBNYXJrZWRCbG9jazo6Ymxv
Y2tTaXplKQorICAgICAgICByZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0ZShtX2hlYXAtPmJsb2Nr
QWxsb2NhdG9yKCkuYWxsb2NhdGU8TWFya2VkQmxvY2s+KCksIHRoaXMsIGNlbGxTaXplLCBtX2Rl
c3RydWN0b3JUeXBlKTsKKyAgICByZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0ZShtX2hlYXAtPmJs
b2NrQWxsb2NhdG9yKCkuYWxsb2NhdGVDdXN0b21TaXplKGJsb2NrU2l6ZSwgTWFya2VkQmxvY2s6
OmJsb2NrU2l6ZSksIHRoaXMsIGNlbGxTaXplLCBtX2Rlc3RydWN0b3JUeXBlKTsKIH0KIAogdm9p
ZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrKiBibG9jaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAppbmRleCA2NjM5MmNhYTQ3NmY1MmU3
YjYyMmEzYTJlN2UwNTZiNGE3M2FlYThlLi5kYjhlMzcxNWFkMzJhYjM0Y2Y3ZGQ4MTkwMWM4ODY4
MzliOTcyNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3Bw
CkBAIC0zNCwyMCArMzQsMjEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLU1hcmtlZEJsb2NrKiBN
YXJrZWRCbG9jazo6Y3JlYXRlKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgYmxv
Y2tTaXplLCBzaXplX3QgY2VsbFNpemUsIERlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlKQor
TWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpjcmVhdGUoRGVhZEJsb2NrKiBibG9jaywgTWFya2Vk
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUgZGVz
dHJ1Y3RvclR5cGUpCiB7Ci0gICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgZmFzdEFsaWduZWRNYWxs
b2MoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSwgYmxvY2tTaXplKSkgTWFya2VkQmxvY2soYWxsb2Nh
dG9yLCBibG9ja1NpemUsIGNlbGxTaXplLCBkZXN0cnVjdG9yVHlwZSk7CisgICAgQVNTRVJUKHJl
aW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihibG9jaykgPT0gKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90
PihibG9jaykgJiBibG9ja01hc2spKTsKKyAgICBSZWdpb24qIHJlZ2lvbiA9IGJsb2NrLT5yZWdp
b24oKTsKKyAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBibG9jaykgTWFya2VkQmxvY2socmVnaW9u
LCBhbGxvY2F0b3IsIGNlbGxTaXplLCBkZXN0cnVjdG9yVHlwZSk7CiB9CiAKLU1hcmtlZEJsb2Nr
OjpNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGJsb2NrU2l6
ZSwgc2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKLSAgICA6
IEhlYXBCbG9jazxNYXJrZWRCbG9jaz4oKQorTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKFJlZ2lv
biogcmVnaW9uLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNlbGxTaXplLCBE
ZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKKyAgICA6IEhlYXBCbG9jazxNYXJrZWRCbG9j
az4ocmVnaW9uKQogICAgICwgbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsgYXRvbVNpemUgLSAx
KSAvIGF0b21TaXplKQotICAgICwgbV9lbmRBdG9tKChhbGxvY2F0b3ItPmNlbGxTaXplKCkgPyBh
dG9tc1BlckJsb2NrIDogYmxvY2tTaXplIC8gYXRvbVNpemUpIC0gbV9hdG9tc1BlckNlbGwgKyAx
KQorICAgICwgbV9lbmRBdG9tKChhbGxvY2F0b3ItPmNlbGxTaXplKCkgPyBhdG9tc1BlckJsb2Nr
IDogcmVnaW9uLT5ibG9ja1NpemUoKSAvIGF0b21TaXplKSAtIG1fYXRvbXNQZXJDZWxsICsgMSkK
ICAgICAsIG1fZGVzdHJ1Y3RvclR5cGUoZGVzdHJ1Y3RvclR5cGUpCiAgICAgLCBtX2FsbG9jYXRv
cihhbGxvY2F0b3IpCiAgICAgLCBtX3N0YXRlKE5ldykgLy8gQWxsIGNlbGxzIHN0YXJ0IG91dCB1
bm1hcmtlZC4KICAgICAsIG1fd2Vha1NldChhbGxvY2F0b3ItPmhlYXAoKS0+dm0oKSkKLSAgICAs
IG1fYmxvY2tTaXplKGJsb2NrU2l6ZSkKIHsKICAgICBBU1NFUlQoYWxsb2NhdG9yKTsKICAgICBI
RUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggYzA2Y2Q5NzA3MzYwZDliMzUyOTBjOTJmM2RjMzlk
NGY1YmMwMzM3Yi4uMDk3YmFkZDkxNzRiNTBiNTZkNDQyMTA5MmQwOTFjODQ2YjdkYjhhZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCkBAIC0yMiw3ICsyMiw5IEBA
CiAjaWZuZGVmIE1hcmtlZEJsb2NrX2gKICNkZWZpbmUgTWFya2VkQmxvY2tfaAogCisjaW5jbHVk
ZSAiQmxvY2tBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwQmxvY2suaCIKKwogI2luY2x1ZGUg
IkhlYXBPcGVyYXRpb24uaCIKICNpbmNsdWRlICJXZWFrU2V0LmgiCiAjaW5jbHVkZSA8d3RmL0Jp
dG1hcC5oPgpAQCAtMTExLDcgKzExMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9Owog
CiAgICAgICAgIGVudW0gRGVzdHJ1Y3RvclR5cGUgeyBOb25lLCBJbW1vcnRhbFN0cnVjdHVyZSwg
Tm9ybWFsIH07Ci0gICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKE1hcmtlZEFsbG9j
YXRvciosIHNpemVfdCBibG9ja1NpemUsIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUp
OworICAgICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGNyZWF0ZShEZWFkQmxvY2sqLCBNYXJrZWRB
bGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIERlc3RydWN0b3JUeXBlKTsKIAogICAgICAgICBz
dGF0aWMgYm9vbCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgc3RhdGljIE1h
cmtlZEJsb2NrKiBibG9ja0Zvcihjb25zdCB2b2lkKik7CkBAIC0xOTIsNyArMTk0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdHlwZWRlZiBjaGFyIEF0b21bYXRvbVNpemVdOwogCi0g
ICAgICAgIE1hcmtlZEJsb2NrKE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBibG9ja1NpemUsIHNp
emVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUpOworICAgICAgICBNYXJrZWRCbG9jayhSZWdp
b24qLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2VsbFNpemUsIERlc3RydWN0b3JUeXBlKTsK
ICAgICAgICAgQXRvbSogYXRvbXMoKTsKICAgICAgICAgc2l6ZV90IGF0b21OdW1iZXIoY29uc3Qg
dm9pZCopOwogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yVHlwZT4gdm9pZCBjYWxsRGVzdHJ1
Y3RvcihKU0NlbGwqKTsKQEAgLTIxMyw3ICsyMTUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKICAgICAgICAgQmxvY2tTdGF0ZSBtX3N0
YXRlOwogICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsKLSAgICAgICAgc2l6ZV90IG1fYmxvY2tT
aXplOwogICAgIH07CiAKICAgICBpbmxpbmUgTWFya2VkQmxvY2s6OkZyZWVMaXN0OjpGcmVlTGlz
dCgpCkBAIC0zMzIsNyArMzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUgc2l6
ZV90IE1hcmtlZEJsb2NrOjpjYXBhY2l0eSgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9ibG9j
a1NpemU7CisgICAgICAgIHJldHVybiByZWdpb24oKS0+YmxvY2tTaXplKCk7CiAgICAgfQogCiAg
ICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6YXRvbU51bWJlcihjb25zdCB2b2lkKiBwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCmluZGV4IDVlNWMwZWU1
YWMwOTdlYzY3ODU3ZDY0MzUzNmIwZWZlNGZkN2JiYjUuLjZjNDhmYjU3Y2I1N2QxNDkzM2QwMzkx
YWFhNzI4NzE5ODRjZDZjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5jcHAKQEAgLTI1MSw3ICsyNTEsMTEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZnJlZUJsb2Nr
KE1hcmtlZEJsb2NrKiBibG9jaykKICAgICBibG9jay0+YWxsb2NhdG9yKCktPnJlbW92ZUJsb2Nr
KGJsb2NrKTsKICAgICBtX2NhcGFjaXR5IC09IGJsb2NrLT5jYXBhY2l0eSgpOwogICAgIG1fYmxv
Y2tzLnJlbW92ZShibG9jayk7Ci0gICAgTWFya2VkQmxvY2s6OmRlc3Ryb3koYmxvY2spOworICAg
IGlmIChibG9jay0+Y2FwYWNpdHkoKSA9PSBNYXJrZWRCbG9jazo6YmxvY2tTaXplKSB7CisgICAg
ICAgIG1faGVhcC0+YmxvY2tBbGxvY2F0b3IoKS5kZWFsbG9jYXRlKE1hcmtlZEJsb2NrOjpkZXN0
cm95KGJsb2NrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9oZWFwLT5ibG9ja0Fs
bG9jYXRvcigpLmRlYWxsb2NhdGVDdXN0b21TaXplKE1hcmtlZEJsb2NrOjpkZXN0cm95KGJsb2Nr
KSk7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OmZyZWVPclNocmlua0Jsb2NrKE1hcmtlZEJsb2Nr
KiBibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCmluZGV4IDFh
Yjg1ZDVkYzRlZjdlMTg3YzI4NDljMzlmZWFhYWM0NDgyOTI4ODMuLmZmMGJhNTBkZWNhNWI5N2Qx
MWMwYzhkODIwYTAzZTNhNWUwMDE3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRM
aXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1JlZ2lvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUmVnaW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzI1NWY1NjQ5YjQzZjkwN2QyNDVmMjI5N2IyMzM5NGIwOWIyOTQ4NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1JlZ2lvbi5oCkBAIC0wLDAgKzEs
MzIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0NfUmVnaW9uX2gKKyNkZWZpbmUgSlNDX1Jl
Z2lvbl9oCisKKyNpbmNsdWRlICJIZWFwQmxvY2suaCIKKyNpbmNsdWRlICJTdXBlclJlZ2lvbi5o
IgorI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CisjaW5jbHVkZSA8d3RmL01ldGFB
bGxvY2F0b3JIYW5kbGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmg+
CisKKyNkZWZpbmUgSEVBUF9NRU1PUllfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KC0zKSkKKworI2RlZmluZSBFTkFCTEVfU1VQRVJfUkVHSU9OIDAKKwor
I2lmbmRlZiBFTkFCTEVfU1VQRVJfUkVHSU9OCisjaWYgVVNFKEpTVkFMVUU2NCkgJiYgIUNQVShB
Uk02NCkKKyNkZWZpbmUgRU5BQkxFX1NVUEVSX1JFR0lPTiAxCisjZWxzZQorI2RlZmluZSBFTkFC
TEVfU1VQRVJfUkVHSU9OIDAKKyNlbmRpZgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBEZWFkQmxvY2sgOiBwdWJsaWMgSGVhcEJsb2NrPERlYWRCbG9jaz4geworcHVibGljOgor
ICAgIERlYWRCbG9jayhSZWdpb24qKTsKK307CisKK2lubGluZSBEZWFkQmxvY2s6OkRlYWRCbG9j
ayhSZWdpb24qIHJlZ2lvbikKKyAgICA6IEhlYXBCbG9jazxEZWFkQmxvY2s+KHJlZ2lvbikKK3sK
K30KKworY2xhc3MgUmVnaW9uIDogcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFJlZ2lvbj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCisgICAgZnJpZW5kIGNsYXNzIFdURjo6
RG91Ymx5TGlua2VkTGlzdE5vZGU8UmVnaW9uPjsKKyAgICBmcmllbmQgY2xhc3MgQmxvY2tBbGxv
Y2F0b3I7CitwdWJsaWM6CisgICAgflJlZ2lvbigpOworICAgIHN0YXRpYyBSZWdpb24qIGNyZWF0
ZShTdXBlclJlZ2lvbiosIHNpemVfdCBibG9ja1NpemUpOworICAgIHN0YXRpYyBSZWdpb24qIGNy
ZWF0ZUN1c3RvbVNpemUoU3VwZXJSZWdpb24qLCBzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgYmxv
Y2tBbGlnbm1lbnQpOworICAgIFJlZ2lvbiogcmVzZXQoc2l6ZV90IGJsb2NrU2l6ZSk7CisgICAg
dm9pZCBkZXN0cm95KCk7CisKKyAgICBzaXplX3QgYmxvY2tTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9ibG9ja1NpemU7IH0KKyAgICBib29sIGlzRnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tz
SW5Vc2UgPT0gbV90b3RhbEJsb2NrczsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuICFtX2Jsb2Nrc0luVXNlOyB9CisgICAgYm9vbCBpc0N1c3RvbVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ3VzdG9tU2l6ZTsgfQorCisgICAgRGVhZEJsb2NrKiBhbGxvY2F0ZSgpOworICAg
IHZvaWQgZGVhbGxvY2F0ZSh2b2lkKik7CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNfcmVn
aW9uU2l6ZSA9IDY0ICogS0I7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX3JlZ2lvbk1hc2sg
PSB+KHNfcmVnaW9uU2l6ZSAtIDEpOworCitwcm90ZWN0ZWQ6CisgICAgUmVnaW9uKHNpemVfdCBi
bG9ja1NpemUsIHNpemVfdCB0b3RhbEJsb2NrcywgYm9vbCBpc0V4Y2Vzcyk7CisgICAgdm9pZCBp
bml0aWFsaXplQmxvY2tMaXN0KCk7CisKKyAgICBib29sIG1faXNFeGNlc3M7CisKK3ByaXZhdGU6
CisgICAgdm9pZCogYmFzZSgpOworICAgIHNpemVfdCBzaXplKCk7CisKKyAgICBzaXplX3QgbV90
b3RhbEJsb2NrczsKKyAgICBzaXplX3QgbV9ibG9ja3NJblVzZTsKKyAgICBzaXplX3QgbV9ibG9j
a1NpemU7CisgICAgYm9vbCBtX2lzQ3VzdG9tU2l6ZTsKKyAgICBSZWdpb24qIG1fcHJldjsKKyAg
ICBSZWdpb24qIG1fbmV4dDsKKyAgICBEb3VibHlMaW5rZWRMaXN0PERlYWRCbG9jaz4gbV9kZWFk
QmxvY2tzOworfTsKKworCitjbGFzcyBOb3JtYWxSZWdpb24gOiBwdWJsaWMgUmVnaW9uIHsKKyAg
ICBmcmllbmQgY2xhc3MgUmVnaW9uOworcHJpdmF0ZToKKyAgICBOb3JtYWxSZWdpb24oUGFzc1Jl
ZlB0cjxXVEY6Ok1ldGFBbGxvY2F0b3JIYW5kbGU+LCBzaXplX3QgYmxvY2tTaXplLCBzaXplX3Qg
dG90YWxCbG9ja3MpOworCisgICAgc3RhdGljIE5vcm1hbFJlZ2lvbiogdHJ5Q3JlYXRlKFN1cGVy
UmVnaW9uKiwgc2l6ZV90IGJsb2NrU2l6ZSk7CisgICAgc3RhdGljIE5vcm1hbFJlZ2lvbiogdHJ5
Q3JlYXRlQ3VzdG9tU2l6ZShTdXBlclJlZ2lvbiosIHNpemVfdCBibG9ja1NpemUsIHNpemVfdCBi
bG9ja0FsaWdubWVudCk7CisKKyAgICB2b2lkKiBiYXNlKCkgeyByZXR1cm4gbV9hbGxvY2F0aW9u
LT5zdGFydCgpOyB9CisgICAgc2l6ZV90IHNpemUoKSB7IHJldHVybiBtX2FsbG9jYXRpb24tPnNp
emVJbkJ5dGVzKCk7IH0KKworICAgIE5vcm1hbFJlZ2lvbiogcmVzZXQoc2l6ZV90IGJsb2NrU2l6
ZSk7CisKKyAgICBSZWZQdHI8V1RGOjpNZXRhQWxsb2NhdG9ySGFuZGxlPiBtX2FsbG9jYXRpb247
Cit9OworCitjbGFzcyBFeGNlc3NSZWdpb24gOiBwdWJsaWMgUmVnaW9uIHsKKyAgICBmcmllbmQg
Y2xhc3MgUmVnaW9uOworcHJpdmF0ZToKKyAgICBFeGNlc3NSZWdpb24oUGFnZUFsbG9jYXRpb25B
bGlnbmVkJiwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IHRvdGFsQmxvY2tzKTsKKworICAgIH5F
eGNlc3NSZWdpb24oKTsKKworICAgIHN0YXRpYyBFeGNlc3NSZWdpb24qIGNyZWF0ZShzaXplX3Qg
YmxvY2tTaXplKTsKKyAgICBzdGF0aWMgRXhjZXNzUmVnaW9uKiBjcmVhdGVDdXN0b21TaXplKHNp
emVfdCBibG9ja1NpemUsIHNpemVfdCBibG9ja0FsaWdubWVudCk7CisKKyAgICB2b2lkKiBiYXNl
KCkgeyByZXR1cm4gbV9hbGxvY2F0aW9uLmJhc2UoKTsgfQorICAgIHNpemVfdCBzaXplKCkgeyBy
ZXR1cm4gbV9hbGxvY2F0aW9uLnNpemUoKTsgfQorCisgICAgRXhjZXNzUmVnaW9uKiByZXNldChz
aXplX3QgYmxvY2tTaXplKTsKKworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBtX2FsbG9jYXRp
b247Cit9OworCitpbmxpbmUgTm9ybWFsUmVnaW9uOjpOb3JtYWxSZWdpb24oUGFzc1JlZlB0cjxX
VEY6Ok1ldGFBbGxvY2F0b3JIYW5kbGU+IGFsbG9jYXRpb24sIHNpemVfdCBibG9ja1NpemUsIHNp
emVfdCB0b3RhbEJsb2NrcykKKyAgICA6IFJlZ2lvbihibG9ja1NpemUsIHRvdGFsQmxvY2tzLCBm
YWxzZSkKKyAgICAsIG1fYWxsb2NhdGlvbihhbGxvY2F0aW9uKQoreworICAgIGluaXRpYWxpemVC
bG9ja0xpc3QoKTsKK30KKworaW5saW5lIE5vcm1hbFJlZ2lvbiogTm9ybWFsUmVnaW9uOjp0cnlD
cmVhdGUoU3VwZXJSZWdpb24qIHN1cGVyUmVnaW9uLCBzaXplX3QgYmxvY2tTaXplKQoreworICAg
IFJlZlB0cjxXVEY6Ok1ldGFBbGxvY2F0b3JIYW5kbGU+IGFsbG9jYXRpb24gPSBzdXBlclJlZ2lv
bi0+YWxsb2NhdGUoc19yZWdpb25TaXplLCBIRUFQX01FTU9SWV9JRCk7CisgICAgaWYgKCFhbGxv
Y2F0aW9uKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbmV3IE5vcm1hbFJlZ2lvbihh
bGxvY2F0aW9uLCBibG9ja1NpemUsIHNfcmVnaW9uU2l6ZSAvIGJsb2NrU2l6ZSk7Cit9CisKK2lu
bGluZSBOb3JtYWxSZWdpb24qIE5vcm1hbFJlZ2lvbjo6dHJ5Q3JlYXRlQ3VzdG9tU2l6ZShTdXBl
clJlZ2lvbiogc3VwZXJSZWdpb24sIHNpemVfdCBibG9ja1NpemUsIHNpemVfdCBibG9ja0FsaWdu
bWVudCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGJsb2NrQWxpZ25tZW50LCBibG9ja0FsaWdubWVu
dCA8PSBzX3JlZ2lvblNpemUpOworICAgIFJlZlB0cjxXVEY6Ok1ldGFBbGxvY2F0b3JIYW5kbGU+
IGFsbG9jYXRpb24gPSBzdXBlclJlZ2lvbi0+YWxsb2NhdGUoYmxvY2tTaXplLCBIRUFQX01FTU9S
WV9JRCk7CisgICAgaWYgKCFhbGxvY2F0aW9uKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbmV3IE5vcm1hbFJlZ2lvbihhbGxvY2F0aW9uLCBibG9ja1NpemUsIDEpOworfQorCitpbmxp
bmUgTm9ybWFsUmVnaW9uKiBOb3JtYWxSZWdpb246OnJlc2V0KHNpemVfdCBibG9ja1NpemUpCit7
CisgICAgQVNTRVJUKCFtX2lzRXhjZXNzKTsKKyAgICBSZWZQdHI8V1RGOjpNZXRhQWxsb2NhdG9y
SGFuZGxlPiBhbGxvY2F0aW9uID0gbV9hbGxvY2F0aW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
bmV3IChOb3ROdWxsLCB0aGlzKSBOb3JtYWxSZWdpb24oYWxsb2NhdGlvbi5yZWxlYXNlKCksIGJs
b2NrU2l6ZSwgc19yZWdpb25TaXplIC8gYmxvY2tTaXplKTsKK30KKworaW5saW5lIEV4Y2Vzc1Jl
Z2lvbjo6RXhjZXNzUmVnaW9uKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgc2l6
ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IHRvdGFsQmxvY2tzKQorICAgIDogUmVnaW9uKGJsb2NrU2l6
ZSwgdG90YWxCbG9ja3MsIHRydWUpCisgICAgLCBtX2FsbG9jYXRpb24oYWxsb2NhdGlvbikKK3sK
KyAgICBpbml0aWFsaXplQmxvY2tMaXN0KCk7Cit9CisKK2lubGluZSBFeGNlc3NSZWdpb246On5F
eGNlc3NSZWdpb24oKQoreworICAgIG1fYWxsb2NhdGlvbi5kZWFsbG9jYXRlKCk7Cit9CisKK2lu
bGluZSBFeGNlc3NSZWdpb24qIEV4Y2Vzc1JlZ2lvbjo6Y3JlYXRlKHNpemVfdCBibG9ja1NpemUp
Cit7CisgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9jYXRpb24gPSBQYWdlQWxsb2NhdGlv
bkFsaWduZWQ6OmFsbG9jYXRlKHNfcmVnaW9uU2l6ZSwgc19yZWdpb25TaXplLCBPU0FsbG9jYXRv
cjo6SlNHQ0hlYXBQYWdlcyk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRp
b24pKTsKKyAgICByZXR1cm4gbmV3IEV4Y2Vzc1JlZ2lvbihhbGxvY2F0aW9uLCBibG9ja1NpemUs
IHNfcmVnaW9uU2l6ZSAvIGJsb2NrU2l6ZSk7IAorfQorCitpbmxpbmUgRXhjZXNzUmVnaW9uKiBF
eGNlc3NSZWdpb246OmNyZWF0ZUN1c3RvbVNpemUoc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IGJs
b2NrQWxpZ25tZW50KQoreworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0g
UGFnZUFsbG9jYXRpb25BbGlnbmVkOjphbGxvY2F0ZShibG9ja1NpemUsIGJsb2NrQWxpZ25tZW50
LCBPU0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdlcyk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PGJv
b2w+KGFsbG9jYXRpb24pKTsKKyAgICByZXR1cm4gbmV3IEV4Y2Vzc1JlZ2lvbihhbGxvY2F0aW9u
LCBibG9ja1NpemUsIDEpOworfQorCitpbmxpbmUgRXhjZXNzUmVnaW9uKiBFeGNlc3NSZWdpb246
OnJlc2V0KHNpemVfdCBibG9ja1NpemUpCit7CisgICAgQVNTRVJUKG1faXNFeGNlc3MpOworICAg
IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gbV9hbGxvY2F0aW9uOworICAgIHJl
dHVybiBuZXcgKE5vdE51bGwsIHRoaXMpIEV4Y2Vzc1JlZ2lvbihhbGxvY2F0aW9uLCBibG9ja1Np
emUsIHNfcmVnaW9uU2l6ZSAvIGJsb2NrU2l6ZSk7Cit9CisKK2lubGluZSBSZWdpb246OlJlZ2lv
bihzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgdG90YWxCbG9ja3MsIGJvb2wgaXNFeGNlc3MpCisg
ICAgOiBEb3VibHlMaW5rZWRMaXN0Tm9kZTxSZWdpb24+KCkKKyAgICAsIG1faXNFeGNlc3MoaXNF
eGNlc3MpCisgICAgLCBtX3RvdGFsQmxvY2tzKHRvdGFsQmxvY2tzKQorICAgICwgbV9ibG9ja3NJ
blVzZSgwKQorICAgICwgbV9ibG9ja1NpemUoYmxvY2tTaXplKQorICAgICwgbV9pc0N1c3RvbVNp
emUoZmFsc2UpCisgICAgLCBtX3ByZXYoMCkKKyAgICAsIG1fbmV4dCgwKQoreworfQorCitpbmxp
bmUgdm9pZCBSZWdpb246OmluaXRpYWxpemVCbG9ja0xpc3QoKQoreworICAgIGNoYXIqIHN0YXJ0
ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGJhc2UoKSk7CisgICAgY2hhciogY3VycmVudCA9IHN0YXJ0
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90b3RhbEJsb2NrczsgaSsrKSB7CisgICAg
ICAgIEFTU0VSVChjdXJyZW50IDwgc3RhcnQgKyBzaXplKCkpOworICAgICAgICBtX2RlYWRCbG9j
a3MuYXBwZW5kKG5ldyAoTm90TnVsbCwgY3VycmVudCkgRGVhZEJsb2NrKHRoaXMpKTsKKyAgICAg
ICAgY3VycmVudCArPSBtX2Jsb2NrU2l6ZTsKKyAgICB9Cit9CisKK2lubGluZSBSZWdpb24qIFJl
Z2lvbjo6Y3JlYXRlKFN1cGVyUmVnaW9uKiBzdXBlclJlZ2lvbiwgc2l6ZV90IGJsb2NrU2l6ZSkK
K3sKKyNpZiBFTkFCTEUoU1VQRVJfUkVHSU9OKQorICAgIEFTU0VSVChibG9ja1NpemUgPD0gc19y
ZWdpb25TaXplKTsKKyAgICBBU1NFUlQoIShzX3JlZ2lvblNpemUgJSBibG9ja1NpemUpKTsKKyAg
ICBSZWdpb24qIHJlZ2lvbiA9IE5vcm1hbFJlZ2lvbjo6dHJ5Q3JlYXRlKHN1cGVyUmVnaW9uLCBi
bG9ja1NpemUpOworICAgIGlmIChMSUtFTFkoISFyZWdpb24pKQorICAgICAgICByZXR1cm4gcmVn
aW9uOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3VwZXJSZWdpb24pOworI2VuZGlmCisgICAg
cmV0dXJuIEV4Y2Vzc1JlZ2lvbjo6Y3JlYXRlKGJsb2NrU2l6ZSk7Cit9CisKK2lubGluZSBSZWdp
b24qIFJlZ2lvbjo6Y3JlYXRlQ3VzdG9tU2l6ZShTdXBlclJlZ2lvbiogc3VwZXJSZWdpb24sIHNp
emVfdCBibG9ja1NpemUsIHNpemVfdCBibG9ja0FsaWdubWVudCkKK3sKKyNpZiBFTkFCTEUoU1VQ
RVJfUkVHSU9OKQorICAgIFJlZ2lvbiogcmVnaW9uID0gTm9ybWFsUmVnaW9uOjp0cnlDcmVhdGVD
dXN0b21TaXplKHN1cGVyUmVnaW9uLCBibG9ja1NpemUsIGJsb2NrQWxpZ25tZW50KTsKKyAgICBp
ZiAoVU5MSUtFTFkoIXJlZ2lvbikpCisgICAgICAgIHJlZ2lvbiA9IEV4Y2Vzc1JlZ2lvbjo6Y3Jl
YXRlQ3VzdG9tU2l6ZShibG9ja1NpemUsIGJsb2NrQWxpZ25tZW50KTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHN1cGVyUmVnaW9uKTsKKyAgICBSZWdpb24qIHJlZ2lvbiA9IEV4Y2Vzc1JlZ2lv
bjo6Y3JlYXRlQ3VzdG9tU2l6ZShibG9ja1NpemUsIGJsb2NrQWxpZ25tZW50KTsKKyNlbmRpZgor
ICAgIHJlZ2lvbi0+bV9pc0N1c3RvbVNpemUgPSB0cnVlOworICAgIHJldHVybiByZWdpb247Cit9
CisKK2lubGluZSBSZWdpb246On5SZWdpb24oKQoreworICAgIEFTU0VSVChpc0VtcHR5KCkpOwor
fQorCitpbmxpbmUgdm9pZCBSZWdpb246OmRlc3Ryb3koKQoreworI2lmIEVOQUJMRShTVVBFUl9S
RUdJT04pCisgICAgaWYgKFVOTElLRUxZKG1faXNFeGNlc3MpKQorICAgICAgICBkZWxldGUgc3Rh
dGljX2Nhc3Q8RXhjZXNzUmVnaW9uKj4odGhpcyk7CisgICAgZWxzZQorICAgICAgICBkZWxldGUg
c3RhdGljX2Nhc3Q8Tm9ybWFsUmVnaW9uKj4odGhpcyk7CisjZWxzZQorICAgIGRlbGV0ZSBzdGF0
aWNfY2FzdDxFeGNlc3NSZWdpb24qPih0aGlzKTsKKyNlbmRpZgorfQorCitpbmxpbmUgUmVnaW9u
KiBSZWdpb246OnJlc2V0KHNpemVfdCBibG9ja1NpemUpCit7CisjaWYgRU5BQkxFKFNVUEVSX1JF
R0lPTikKKyAgICBBU1NFUlQoaXNFbXB0eSgpKTsKKyAgICBpZiAoVU5MSUtFTFkobV9pc0V4Y2Vz
cykpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFeGNlc3NSZWdpb24qPih0aGlzKS0+cmVz
ZXQoYmxvY2tTaXplKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9ybWFsUmVnaW9uKj4odGhp
cyktPnJlc2V0KGJsb2NrU2l6ZSk7CisjZWxzZQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxFeGNl
c3NSZWdpb24qPih0aGlzKS0+cmVzZXQoYmxvY2tTaXplKTsKKyNlbmRpZgorfQorCitpbmxpbmUg
RGVhZEJsb2NrKiBSZWdpb246OmFsbG9jYXRlKCkKK3sKKyAgICBBU1NFUlQoIWlzRnVsbCgpKTsK
KyAgICBtX2Jsb2Nrc0luVXNlKys7CisgICAgcmV0dXJuIG1fZGVhZEJsb2Nrcy5yZW1vdmVIZWFk
KCk7Cit9CisKK2lubGluZSB2b2lkIFJlZ2lvbjo6ZGVhbGxvY2F0ZSh2b2lkKiBiYXNlKQorewor
ICAgIEFTU0VSVChiYXNlKTsKKyAgICBBU1NFUlQobV9ibG9ja3NJblVzZSk7CisgICAgQVNTRVJU
KGJhc2UgPj0gdGhpcy0+YmFzZSgpICYmIGJhc2UgPCBzdGF0aWNfY2FzdDxjaGFyKj4odGhpcy0+
YmFzZSgpKSArIHNpemUoKSk7CisgICAgRGVhZEJsb2NrKiBibG9jayA9IG5ldyAoTm90TnVsbCwg
YmFzZSkgRGVhZEJsb2NrKHRoaXMpOworICAgIG1fZGVhZEJsb2Nrcy5wdXNoKGJsb2NrKTsKKyAg
ICBtX2Jsb2Nrc0luVXNlLS07Cit9CisKK2lubGluZSB2b2lkKiBSZWdpb246OmJhc2UoKQorewor
I2lmIEVOQUJMRShTVVBFUl9SRUdJT04pCisgICAgaWYgKFVOTElLRUxZKG1faXNFeGNlc3MpKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXhjZXNzUmVnaW9uKj4odGhpcyktPkV4Y2Vzc1Jl
Z2lvbjo6YmFzZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxOb3JtYWxSZWdpb24qPih0aGlz
KS0+Tm9ybWFsUmVnaW9uOjpiYXNlKCk7CisjZWxzZQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
eGNlc3NSZWdpb24qPih0aGlzKS0+RXhjZXNzUmVnaW9uOjpiYXNlKCk7CisjZW5kaWYKK30KKwor
aW5saW5lIHNpemVfdCBSZWdpb246OnNpemUoKQoreworI2lmIEVOQUJMRShTVVBFUl9SRUdJT04p
CisgICAgaWYgKFVOTElLRUxZKG1faXNFeGNlc3MpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RXhjZXNzUmVnaW9uKj4odGhpcyktPkV4Y2Vzc1JlZ2lvbjo6c2l6ZSgpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxOb3JtYWxSZWdpb24qPih0aGlzKS0+Tm9ybWFsUmVnaW9uOjpzaXplKCk7
CisjZWxzZQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxFeGNlc3NSZWdpb24qPih0aGlzKS0+RXhj
ZXNzUmVnaW9uOjpzaXplKCk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBKU0NfUmVnaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9yLmNwcAppbmRleCA0ZGU0OTY2NjhjZTU2M2U1ZWI5ZDY5ZGI3ODZjOTU3YTg4MzFmMGUyLi5k
NDVjMzgxYWFjNDQ0YTc2YWU1NjYxOWIxMzYwZmIzYmI4YjYwMGIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCkBAIC0xNyw3ICsxNyw3IEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogU2xvdFZpc2l0b3I6OlNsb3RWaXNpdG9yKEdDVGhyZWFkU2hhcmVkRGF0YSYg
c2hhcmVkKQotICAgIDogbV9zdGFjaygpCisgICAgOiBtX3N0YWNrKHNoYXJlZC5tX3ZtLT5oZWFw
LmJsb2NrQWxsb2NhdG9yKCkpCiAgICAgLCBtX2J5dGVzVmlzaXRlZCgwKQogICAgICwgbV9ieXRl
c0NvcGllZCgwKQogICAgICwgbV92aXNpdENvdW50KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TdXBlclJlZ2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU3ZmUyZTkzY2Y4ODZhMjM5ZmM3NDUy
MTE4ZjQ3ODY5ZDI4ZjMzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1N1cGVyUmVnaW9uLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN1cGVyUmVnaW9uLmgiCisKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCB1aW50NjRfdCBTdXBlclJlZ2lvbjo6c19maXhlZEhlYXBNZW1vcnlQb29sU2l6ZSA9IDQg
KiAxMDI0ICogc3RhdGljX2Nhc3Q8dWludDY0X3Q+KE1CKTsKKworU3VwZXJSZWdpb246OlN1cGVy
UmVnaW9uKCkKKyAgICA6IE1ldGFBbGxvY2F0b3IoUmVnaW9uOjpzX3JlZ2lvblNpemUsIFJlZ2lv
bjo6c19yZWdpb25TaXplKQorICAgICwgbV9yZXNlcnZhdGlvbkJhc2UoMCkKK3sKKyNpZiBFTkFC
TEUoU1VQRVJfUkVHSU9OKQorICAgIC8vIE92ZXItYWxsb2NhdGUgc28gdGhhdCB3ZSBjYW4gbWFr
ZSBzdXJlIHRoYXQgd2UncmUgYWxpZ25lZCB0byB0aGUgc2l6ZSBvZiBSZWdpb25zLgorICAgIG1f
cmVzZXJ2YXRpb24gPSBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmUoc19maXhlZEhlYXBNZW1vcnlQ
b29sU2l6ZSArIFJlZ2lvbjo6c19yZWdpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdl
cyk7CisgICAgbV9yZXNlcnZhdGlvbkJhc2UgPSBnZXRBbGlnbmVkQmFzZShtX3Jlc2VydmF0aW9u
KTsKKyAgICBhZGRGcmVzaEZyZWVTcGFjZShtX3Jlc2VydmF0aW9uQmFzZSwgc19maXhlZEhlYXBN
ZW1vcnlQb29sU2l6ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtX3Jlc2VydmF0aW9uKTsK
KyAgICBVTlVTRURfUEFSQU0obV9yZXNlcnZhdGlvbkJhc2UpOworI2VuZGlmCit9CisKK1N1cGVy
UmVnaW9uOjp+U3VwZXJSZWdpb24oKQoreworI2lmIEVOQUJMRShTVVBFUl9SRUdJT04pCisgICAg
bV9yZXNlcnZhdGlvbi5kZWFsbG9jYXRlKCk7CisjZW5kaWYKK30KKwordm9pZCogU3VwZXJSZWdp
b246OmdldEFsaWduZWRCYXNlKFBhZ2VSZXNlcnZhdGlvbiYgcmVzZXJ2YXRpb24pCit7CisgICAg
Zm9yIChjaGFyKiBjdXJyZW50ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc2VydmF0aW9uLmJhc2Uo
KSk7IGN1cnJlbnQgPCBzdGF0aWNfY2FzdDxjaGFyKj4ocmVzZXJ2YXRpb24uYmFzZSgpKSArIFJl
Z2lvbjo6c19yZWdpb25TaXplOyBjdXJyZW50ICs9IHBhZ2VTaXplKCkpIHsKKyAgICAgICAgaWYg
KCEocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGN1cnJlbnQpICYgflJlZ2lvbjo6c19yZWdpb25N
YXNrKSkKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50OworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCogU3VwZXJSZWdpb246OmFsbG9j
YXRlTmV3U3BhY2Uoc2l6ZV90JikKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBTdXBlclJl
Z2lvbjo6bm90aWZ5TmVlZFBhZ2Uodm9pZCogcGFnZSkKK3sKKyAgICBtX3Jlc2VydmF0aW9uLmNv
bW1pdChwYWdlLCBSZWdpb246OnNfcmVnaW9uU2l6ZSk7Cit9CisKK3ZvaWQgU3VwZXJSZWdpb246
Om5vdGlmeVBhZ2VJc0ZyZWUodm9pZCogcGFnZSkKK3sKKyAgICBtX3Jlc2VydmF0aW9uLmRlY29t
bWl0KHBhZ2UsIFJlZ2lvbjo6c19yZWdpb25TaXplKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3VwZXJSZWdpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjE1
MjZiN2E3ZTI0MThmN2I3MGE1OTMxMmQ5N2FlZWQ0Y2ZkMGM0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3VwZXJSZWdpb24uaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBTdXBlclJlZ2lvbl9oCisjZGVmaW5lIFN1cGVyUmVnaW9u
X2gKKworI2luY2x1ZGUgPHd0Zi9NZXRhQWxsb2NhdG9yLmg+CisjaW5jbHVkZSA8d3RmL1BhZ2VC
bG9jay5oPgorI2luY2x1ZGUgPHd0Zi9QYWdlUmVzZXJ2YXRpb24uaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIFZNOworCitjbGFzcyBTdXBlclJlZ2lvbiA6IHB1YmxpYyBXVEY6Ok1ldGFB
bGxvY2F0b3IgeworcHVibGljOgorICAgIFN1cGVyUmVnaW9uKCk7CisgICAgdmlydHVhbCB+U3Vw
ZXJSZWdpb24oKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCogYWxsb2NhdGVOZXdT
cGFjZShzaXplX3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TmVlZFBhZ2Uo
dm9pZCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlSXNGcmVlKHZvaWQq
KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc19maXhl
ZEhlYXBNZW1vcnlQb29sU2l6ZTsKKworICAgIHN0YXRpYyB2b2lkKiBnZXRBbGlnbmVkQmFzZShQ
YWdlUmVzZXJ2YXRpb24mKTsKKworICAgIFBhZ2VSZXNlcnZhdGlvbiBtX3Jlc2VydmF0aW9uOwor
ICAgIHZvaWQqIG1fcmVzZXJ2YXRpb25CYXNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBTdXBlclJlZ2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9XZWFrQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Js
b2NrLmNwcAppbmRleCBiNmMyN2U0ZGY1NmNmNjEyMjYxZTIxMTQyNWYwY2JlNzI0OTRkZDAwLi41
NDEyN2NhMDBlYzRiNjFiYmI1NmE4NGQxZjUyYWNkMjgyMTBiODQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAKQEAgLTM0LDEzICszNCwxNCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotV2Vha0Jsb2NrKiBXZWFrQmxvY2s6OmNyZWF0ZSgpCitXZWFrQmxvY2sqIFdl
YWtCbG9jazo6Y3JlYXRlKERlYWRCbG9jayogYmxvY2spCiB7Ci0gICAgcmV0dXJuIG5ldyAoTm90
TnVsbCwgZmFzdEFsaWduZWRNYWxsb2MoYmxvY2tTaXplLCBibG9ja1NpemUpKSBXZWFrQmxvY2so
KTsKKyAgICBSZWdpb24qIHJlZ2lvbiA9IGJsb2NrLT5yZWdpb24oKTsKKyAgICByZXR1cm4gbmV3
IChOb3ROdWxsLCBibG9jaykgV2Vha0Jsb2NrKHJlZ2lvbik7CiB9CiAKLVdlYWtCbG9jazo6V2Vh
a0Jsb2NrKCkKLSAgICA6IEhlYXBCbG9jazxXZWFrQmxvY2s+KCkKK1dlYWtCbG9jazo6V2Vha0Js
b2NrKFJlZ2lvbiogcmVnaW9uKQorICAgIDogSGVhcEJsb2NrPFdlYWtCbG9jaz4ocmVnaW9uKQog
ewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2Vha0ltcGxDb3VudCgpOyArK2kpIHsKICAg
ICAgICAgV2Vha0ltcGwqIHdlYWtJbXBsID0gJndlYWtJbXBscygpW2ldOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrQmxvY2suaAppbmRleCBjODI5MzBlOTY4YzNmYTY3ODAwOTNjMjVmZjlk
YjM1MzYzOGI4ZTJhLi5iNmI2MzFlMjdiMTAwMDQ5ZWU1YTliMThhMTMzNTBlMDg2MjY0Yzc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suaApAQCAtMzQsNiArMzQsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgRGVhZEJsb2NrOwogY2xhc3MgSGVhcFJvb3RWaXNp
dG9yOwogY2xhc3MgSlNWYWx1ZTsKIGNsYXNzIFdlYWtIYW5kbGVPd25lcjsKQEAgLTU1LDcgKzU2
LDcgQEAgcHVibGljOgogICAgICAgICBGcmVlQ2VsbCogZnJlZUxpc3Q7CiAgICAgfTsKIAotICAg
IHN0YXRpYyBXZWFrQmxvY2sqIGNyZWF0ZSgpOworICAgIHN0YXRpYyBXZWFrQmxvY2sqIGNyZWF0
ZShEZWFkQmxvY2sqKTsKIAogICAgIHN0YXRpYyBXZWFrSW1wbCogYXNXZWFrSW1wbChGcmVlQ2Vs
bCopOwogCkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGljIEZy
ZWVDZWxsKiBhc0ZyZWVDZWxsKFdlYWtJbXBsKik7CiAKLSAgICBXZWFrQmxvY2soKTsKKyAgICBX
ZWFrQmxvY2soUmVnaW9uKik7CiAgICAgV2Vha0ltcGwqIGZpcnN0V2Vha0ltcGwoKTsKICAgICB2
b2lkIGZpbmFsaXplKFdlYWtJbXBsKik7CiAgICAgV2Vha0ltcGwqIHdlYWtJbXBscygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0LmNwcAppbmRleCAzN2RkZmFjN2U2Zjg3ODkxODgz
YmM1N2ViZDk3Y2U4YTAwODljMGEwLi41NTZjODUxNWJkMjNhNzExMTdjZjg2NmI4MWRlYzhhMTll
YzU1YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0LmNwcApAQCAtMzcsNyAr
MzcsNyBAQCBXZWFrU2V0Ojp+V2Vha1NldCgpCiAgICAgV2Vha0Jsb2NrKiBuZXh0ID0gMDsKICAg
ICBmb3IgKFdlYWtCbG9jayogYmxvY2sgPSBtX2Jsb2Nrcy5oZWFkKCk7IGJsb2NrOyBibG9jayA9
IG5leHQpIHsKICAgICAgICAgbmV4dCA9IGJsb2NrLT5uZXh0KCk7Ci0gICAgICAgIFdlYWtCbG9j
azo6ZGVzdHJveShibG9jayk7CisgICAgICAgIGhlYXAoKS0+YmxvY2tBbGxvY2F0b3IoKS5kZWFs
bG9jYXRlKFdlYWtCbG9jazo6ZGVzdHJveShibG9jaykpOwogICAgIH0KICAgICBtX2Jsb2Nrcy5j
bGVhcigpOwogfQpAQCAtNzQsNyArNzQsNyBAQCBXZWFrQmxvY2s6OkZyZWVDZWxsKiBXZWFrU2V0
Ojp0cnlGaW5kQWxsb2NhdG9yKCkKIAogV2Vha0Jsb2NrOjpGcmVlQ2VsbCogV2Vha1NldDo6YWRk
QWxsb2NhdG9yKCkKIHsKLSAgICBXZWFrQmxvY2sqIGJsb2NrID0gV2Vha0Jsb2NrOjpjcmVhdGUo
KTsKKyAgICBXZWFrQmxvY2sqIGJsb2NrID0gV2Vha0Jsb2NrOjpjcmVhdGUoaGVhcCgpLT5ibG9j
a0FsbG9jYXRvcigpLmFsbG9jYXRlPFdlYWtCbG9jaz4oKSk7CiAgICAgaGVhcCgpLT5kaWRBbGxv
Y2F0ZShXZWFrQmxvY2s6OmJsb2NrU2l6ZSk7CiAgICAgbV9ibG9ja3MuYXBwZW5kKGJsb2NrKTsK
ICAgICBXZWFrQmxvY2s6OlN3ZWVwUmVzdWx0IHN3ZWVwUmVzdWx0ID0gYmxvY2stPnRha2VTd2Vl
cFJlc3VsdCgpOwpAQCAtODUsNyArODUsNyBAQCBXZWFrQmxvY2s6OkZyZWVDZWxsKiBXZWFrU2V0
OjphZGRBbGxvY2F0b3IoKQogdm9pZCBXZWFrU2V0OjpyZW1vdmVBbGxvY2F0b3IoV2Vha0Jsb2Nr
KiBibG9jaykKIHsKICAgICBtX2Jsb2Nrcy5yZW1vdmUoYmxvY2spOwotICAgIFdlYWtCbG9jazo6
ZGVzdHJveShibG9jayk7CisgICAgaGVhcCgpLT5ibG9ja0FsbG9jYXRvcigpLmRlYWxsb2NhdGUo
V2Vha0Jsb2NrOjpkZXN0cm95KGJsb2NrKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9G
YXN0TWFsbG9jLmNwcAppbmRleCBjYzdjNjY2YmEzYTAzYWZlMDYzMzIxZGZhZDI5ZDRiODY2NzE3
Njc4Li4xOGE5Yzg0MTI2NmYwOGY4ZjUzMzA0NzExMjZkNTBmMzg1ZGJmMWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0
TWFsbG9jLmNwcApAQCAtMjQ0LDM0ICsyNDQsNiBAQCBzaXplX3QgZmFzdE1hbGxvY0dvb2RTaXpl
KHNpemVfdCBieXRlcykKICNlbmRpZgogfQogCi0jaWYgT1MoV0lORE9XUykKLQotdm9pZCogZmFz
dEFsaWduZWRNYWxsb2Moc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpIAotewotICAgIHJl
dHVybiBfYWxpZ25lZF9tYWxsb2MoYWxpZ25tZW50LCBzaXplKTsKLX0KLQotdm9pZCBmYXN0QWxp
Z25lZEZyZWUodm9pZCogcCkgCi17Ci0gICAgX2FsaWduZWRfZnJlZShwKTsKLX0KLQotI2Vsc2UK
LQotdm9pZCogZmFzdEFsaWduZWRNYWxsb2Moc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUp
IAotewotICAgIHZvaWQqIHAgPSBudWxscHRyOwotICAgIHBvc2l4X21lbWFsaWduKCZwLCBhbGln
bm1lbnQsIHNpemUpOwotICAgIHJldHVybiBwOwotfQotCi12b2lkIGZhc3RBbGlnbmVkRnJlZSh2
b2lkKiBwKSAKLXsKLSAgICBmcmVlKHApOwotfQotCi0jZW5kaWYgLy8gT1MoV0lORE9XUykKLQog
VHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdE1hbGxvYyhzaXplX3QgbikgCiB7CiAgICAgQVNT
RVJUKCFpc0ZvcmJpZGRlbigpKTsKQEAgLTQ4MiwxNiArNDU0LDYgQEAgc2l6ZV90IGZhc3RNYWxs
b2NHb29kU2l6ZShzaXplX3Qgc2l6ZSkKICAgICByZXR1cm4gc2l6ZTsKIH0KICAgICAKLXZvaWQq
IGZhc3RBbGlnbmVkTWFsbG9jKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKSAKLXsKLSAg
ICByZXR1cm4gYm1hbGxvYzo6YXBpOjptZW1hbGlnbihhbGlnbm1lbnQsIHNpemUpOwotfQotCi12
b2lkIGZhc3RBbGlnbmVkRnJlZSh2b2lkKiBwKSAKLXsKLSAgICBibWFsbG9jOjphcGk6OmZyZWUo
cCk7Ci19Ci0KIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IHNpemUp
CiB7CiAgICAgcmV0dXJuIGZhc3RNYWxsb2Moc2l6ZSk7CkBAIC00MjQyLDYgKzQyMDQsNyBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRvX2ZyZWUodm9pZCogcHRyKSB7CiAgIH0KIH0KIAor
I2lmbmRlZiBXVEZfQ0hBTkdFUwogLy8gRm9yIHVzZSBieSBleHBvcnRlZCByb3V0aW5lcyBiZWxv
dyB0aGF0IHdhbnQgc3BlY2lmaWMgYWxpZ25tZW50cwogLy8KIC8vIE5vdGU6IHRoaXMgY29kZSBj
YW4gYmUgc2xvdywgYW5kIGNhbiBzaWduaWZpY2FudGx5IGZyYWdtZW50IG1lbW9yeS4KQEAgLTQz
MTIsNiArNDI3NSw3IEBAIHN0YXRpYyB2b2lkKiBkb19tZW1hbGlnbihzaXplX3QgYWxpZ24sIHNp
emVfdCBzaXplKSB7CiAgIH0KICAgcmV0dXJuIFNwYW5Ub01hbGxvY1Jlc3VsdChzcGFuKTsKIH0K
KyNlbmRpZgogCiAvLyBIZWxwZXJzIGZvciB1c2UgYnkgZXhwb3J0ZWQgcm91dGluZXMgYmVsb3c6
CiAKQEAgLTQzNjgsMTYgKzQzMzIsNiBAQCBleHRlcm4gIkMiCiB0ZW1wbGF0ZSA8Ym9vbCBjcmFz
aE9uRmFpbHVyZT4KIEFMV0FZU19JTkxJTkUgdm9pZCogbWFsbG9jKHNpemVfdCk7CiAKLXZvaWQq
IGZhc3RBbGlnbmVkTWFsbG9jKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKSAKLXsKLSAg
ICByZXR1cm4gZG9fbWVtYWxpZ24oYWxpZ25tZW50LCBzaXplKTsKLX0KLQotdm9pZCBmYXN0QWxp
Z25lZEZyZWUodm9pZCogcCkgCi17Ci0gICAgZG9fZnJlZShwKTsKLX0KLQogdm9pZCogZmFzdE1h
bGxvYyhzaXplX3Qgc2l6ZSkKIHsKICAgICB2b2lkKiByZXN1bHQgPSBtYWxsb2M8dHJ1ZT4oc2l6
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmgKaW5kZXggYjdkY2EwNjNhZTVmOTU0Yzg3ZjI4NWMzMmVjMzcwMjZi
MDhkOTgxMC4uYzliMmQ0MWE2M2VmZjM3ZTlmZDg4OWUzZGU1NzA0MjMzOTVlNmNmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zh
c3RNYWxsb2MuaApAQCAtMzcsMTAgKzM3LDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHNpemVfdCBmYXN0TWFsbG9jR29vZFNpemUoc2l6ZV90KTsKIAotICAg
IC8vIEFsbG9jYXRpb25zIGZyb20gZmFzdEFsaWduZWRNYWxsb2MoKSBtdXN0IGJlIGZyZWVkIHVz
aW5nIGZhc3RBbGlnbmVkRnJlZSgpLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0
QWxpZ25lZE1hbGxvYyhzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGZhc3RBbGlnbmVkRnJlZSh2b2lkKik7Ci0KICAgICBzdHJ1Y3QgVHJ5TWFs
bG9jUmV0dXJuVmFsdWUgewogICAgICAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSh2b2lkKiBkYXRh
KQogICAgICAgICAgICAgOiBtX2RhdGEoZGF0YSkKQEAgLTIzNSw4ICsyMzEsNiBAQCB1c2luZyBX
VEY6OnRyeUZhc3RDYWxsb2M7CiB1c2luZyBXVEY6OnRyeUZhc3RNYWxsb2M7CiB1c2luZyBXVEY6
OnRyeUZhc3RSZWFsbG9jOwogdXNpbmcgV1RGOjp0cnlGYXN0WmVyb2VkTWFsbG9jOwotdXNpbmcg
V1RGOjpmYXN0QWxpZ25lZE1hbGxvYzsKLXVzaW5nIFdURjo6ZmFzdEFsaWduZWRGcmVlOwogCiAj
aWZuZGVmIE5ERUJVRyAgICAKIHVzaW5nIFdURjo6ZmFzdE1hbGxvY0ZvcmJpZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyQ29jb2EubW0KaW5kZXggMTJlYTk3MmI1YjVkY2E0MWUwODFjYTlhYTQwZmQwOTNmZWU2ZDll
Ni4uMzQ0MWFiYWU4M2JmZDk4MzU4NjFmNzQzYmVjN2FiODI0ODgyM2FlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyQ29jb2EubW0KQEAgLTExNSwxMSArMTE1LDE0IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjppbnN0YWxsKCkKIAogICAgIC8vIEFsbG93IHNpbXVsYXRpb24gb2YgbWVtb3J5IHByZXNz
dXJlIHdpdGggIm5vdGlmeXV0aWwgLXAgb3JnLldlYktpdC5sb3dNZW1vcnkiCiAgICAgbm90aWZ5
X3JlZ2lzdGVyX2Rpc3BhdGNoKCJvcmcuV2ViS2l0Lmxvd01lbW9yeSIsICZfbm90aWZ5VG9rZW4s
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oaW50KSB7CisgICAgICAgIG1lbW9yeVByZXNz
dXJlSGFuZGxlcigpLnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKHRydWUpOworCiAgICAgICAgIC8v
IFdlIG9ubHkgZG8gYSBzeW5jaHJvbm91cyBHQyB3aGVuICpzaW11bGF0aW5nKiBtZW1vcnkgcHJl
c3N1cmUuCiAgICAgICAgIC8vIFRoaXMgZ2l2ZXMgdXMgYSBtb3JlIGNvbnNpc3RlbnQgcGljdHVy
ZSBvZiBsaXZlIG9iamVjdHMgYXQgdGhlIGVuZCBvZiB0ZXN0aW5nLgogICAgICAgICBnY0NvbnRy
b2xsZXIoKS5nYXJiYWdlQ29sbGVjdE5vdygpOwogCi0gICAgICAgIG1lbW9yeVByZXNzdXJlSGFu
ZGxlcigpLnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKHRydWUpOworICAgICAgICAvLyBSZWxlYXNl
IGFueSBmcmVlZCB1cCBibG9ja3MgZnJvbSB0aGUgSlMgaGVhcCBiYWNrIHRvIHRoZSBzeXN0ZW0u
CisgICAgICAgIEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKS5oZWFwLmJsb2NrQWxsb2NhdG9y
KCkucmVsZWFzZUZyZWVSZWdpb25zKCk7CiAKICAgICAgICAgbWFsbG9jX3pvbmVfcHJlc3N1cmVf
cmVsaWVmKG51bGxwdHIsIDApOwogICAgIH0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>