<?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>202959</bug_id>
          
          <creation_ts>2019-10-14 15:32:54 -0700</creation_ts>
          <short_desc>REGRESSION(r251090): &quot;broke tests&quot; (Requested by RMorisset on #webkit).</short_desc>
          <delta_ts>2019-10-15 15:25:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>202832</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>keith_miller</cc>
    
    <cc>lingcherd_ho</cc>
    
    <cc>rmorisset</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1579854</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 15:32:54 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/251090 broke the build:
&quot;broke tests&quot; (Requested by RMorisset 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>1579858</commentid>
    <comment_count>1</comment_count>
      <attachid>380926</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 15:33:09 -0700</bug_when>
    <thetext>Created attachment 380926
ROLLOUT of r251090

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>1579869</commentid>
    <comment_count>2</comment_count>
      <attachid>380926</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 15:52:19 -0700</bug_when>
    <thetext>Comment on attachment 380926
ROLLOUT of r251090

Clearing flags on attachment: 380926

Committed r251106: &lt;https://trac.webkit.org/changeset/251106&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579870</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 15:52:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580326</commentid>
    <comment_count>4</comment_count>
    <who name="Ling Ho">lingcherd_ho</who>
    <bug_when>2019-10-15 15:25:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/56267871&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380926</attachid>
            <date>2019-10-14 15:33:09 -0700</date>
            <delta_ts>2019-10-14 15:52:19 -0700</delta_ts>
            <desc>ROLLOUT of r251090</desc>
            <filename>bug-202959-20191014153308.patch</filename>
            <type>text/plain</type>
            <size>112011</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZWIyMTU4ODU5MmNiMjcwNWQ2YzYyOTIzMTdjNGJiNWZkZTIwYmNhLi4zNzUzMWQ1MzAwZDU3M2Qz
ZWM4ZTc5YzhjZDc1YWMyMTMwYzQ5Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxOS0xMC0xNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1MTA5MC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjk1OQorCisgICAg
ICAgICJicm9rZSB0ZXN0cyIgKFJlcXVlc3RlZCBieSBSTW9yaXNzZXQgb24gI3dlYmtpdCkuCisK
KyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJTcGxpdCBBcml0aFByb2Zp
bGUgaW50byBhIFVuYXJ5IGFuZCBhIEJpbmFyeSB2ZXJzaW9uIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIGh0dHBzOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8yNTEwOTAKKwogMjAxOS0xMC0xNCAgUm9iaW4gTW9yaXNz
ZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFNwbGl0IEFyaXRoUHJvZmlsZSBp
bnRvIGEgVW5hcnkgYW5kIGEgQmluYXJ5IHZlcnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKaW5kZXggMDVlZTc4YTQ3YmUzZTZhNzAzMWUz
NjU3OTQzYjFkYjAxZDVhMmYzNy4uOTk5OTMzYjhjMGVjZWQyYjcyMWJkODEwYTQ4MzExZGQ0MTZm
NmFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmls
ZS5jcHAKQEAgLTMyLDggKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJ
VCkKLXRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJp
dGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVl
UmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2b2lkIEFyaXRoUHJvZmlsZTo6ZW1p
dE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1Jl
Z2lzdGVyc01vZGUgbW9kZSkKIHsKICAgICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAh
c2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludCgpKQogICAg
ICAgICByZXR1cm47CkBAIC01OSw1MCArNTgsNDEgQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0Zmll
bGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcK
ICAgICBkb25lLmxpbmsoJmppdCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlw
ZT4KLWJvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXREb3VibGUo
KSBjb25zdAorYm9vbCBBcml0aFByb2ZpbGU6OnNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdAog
ewotICAgIHVpbnQzMl90IG1hc2sgPSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5l
Z1plcm9Eb3VibGUgfCBOb25OZWdaZXJvRG91YmxlOworICAgIHVpbnQzMl90IG1hc2sgPSBBcml0
aFByb2ZpbGU6OkludDMyT3ZlcmZsb3cgfCBBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cgfCBB
cml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUgfCBBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3Vi
bGU7CiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBCaXRmaWVsZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBjb25zdAordm9pZCBBcml0aFByb2ZpbGU6
OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3Vs
ZEVtaXRTZXREb3VibGUoKSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOZWdaZXJvRG91YmxlIHwgTm9u
TmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJp
dHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0
aFByb2ZpbGU6OkludDMyT3ZlcmZsb3cgfCBBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cgfCBB
cml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUgfCBBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3Vi
bGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotYm9vbCBBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdAorYm9vbCBBcml0aFBy
b2ZpbGU6OnNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3QKIHsKICAgICB1aW50MzJfdCBt
YXNrID0gQXJpdGhQcm9maWxlOjpOb25OdW1lcmljOwogICAgIHJldHVybiAobV9iaXRzICYgbWFz
aykgIT0gbWFzazsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotYm9vbCBB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0Citi
b29sIEFyaXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0CiB7CiAgICAgdWlu
dDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6QmlnSW50OwogICAgIHJldHVybiAobV9iaXRzICYg
bWFzaykgIT0gbWFzazsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotdm9p
ZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxw
ZXJzJiBqaXQpIGNvbnN0Cit2b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNldE5vbk51bWVyaWMoQ0Nh
bGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXROb25OdW1lcmlj
KCkpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKE5vbk51bWVy
aWMpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAg
ICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpO
b25OdW1lcmljKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygp
KSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0
Cit2b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29u
c3QKIHsKICAgICBpZiAoc2hvdWxkRW1pdFNldEJpZ0ludCgpKQotICAgICAgICBqaXQub3IzMihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRl
QWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6OkFic29s
dXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKIH0KLQotdGVtcGxhdGUgY2xhc3MgQXJpdGhQ
cm9maWxlPHVpbnQxNl90PjsgLy8gR2VuZXJhdGUgdGhlIGltcGxlbWVudGF0aW9ucyBmb3IgVW5h
cnlBcml0aFByb2ZpbGUKLXRlbXBsYXRlIGNsYXNzIEFyaXRoUHJvZmlsZTx1aW50MzJfdD47IC8v
IEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgZm9yIEJpbmFyeUFyaXRoUHJvZmlsZQogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpAQCAtMTExLDUyICsxMDEs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSYg
cHJvZmlsZSkKLXsKLSAgICBjb25zdCBjaGFyKiBzZXBhcmF0b3IgPSAiIjsKLQotICAgIG91dC5w
cmludCgiUmVzdWx0OjwiKTsKLSAgICBpZiAoIXByb2ZpbGUuZGlkT2JzZXJ2ZU5vbkludDMyKCkp
IHsKLSAgICAgICAgb3V0LnByaW50KCJJbnQzMiIpOwotICAgICAgICBzZXBhcmF0b3IgPSAifCI7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3Vi
bGUoKSkgewotICAgICAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIk5lZ1plcm9Eb3VibGUi
KTsKLSAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
cHJvZmlsZS5kaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpKSB7Ci0gICAgICAgICAgICBvdXQu
cHJpbnQoc2VwYXJhdG9yLCAiTm9uTmVnWmVyb0RvdWJsZSIpOwotICAgICAgICAgICAgc2VwYXJh
dG9yID0gInwiOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVOb25O
dW1lcmljKCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJOb25OdW1lcmlj
Iik7Ci0gICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KHByb2ZpbGUuZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSkgewotICAgICAgICAgICAgb3V0LnBy
aW50KHNlcGFyYXRvciwgIkludDMyT3ZlcmZsb3ciKTsKLSAgICAgICAgICAgIHNlcGFyYXRvciA9
ICJ8IjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiSW50NTJPdmVyZmxv
dyIpOwotICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChwcm9maWxlLmRpZE9ic2VydmVCaWdJbnQoKSkgewotICAgICAgICAgICAgb3V0LnByaW50KHNl
cGFyYXRvciwgIkJpZ0ludCIpOwotICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwotICAgICAg
ICB9Ci0gICAgfQotICAgIG91dC5wcmludCgiPiIpOwotCi0gICAgb3V0LnByaW50KCIgQXJnIE9i
c2VydmVkVHlwZTo8Iik7Ci0gICAgb3V0LnByaW50KHByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkp
OwotICAgIG91dC5wcmludCgiPiIpOwotCi0gICAgb3V0LnByaW50KCIgQXJnIFJlc3VsdFR5cGU6
PCIpOwotICAgIG91dC5wcmludChSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8dWludHB0cl90Pihwcm9maWxlLmFyZ1Jlc3VsdFR5cGUoKS5iaXRzKCkpKSkpOwotICAg
IG91dC5wcmludCgiPiIpOwotfQotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQordm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFyaXRoUHJvZmlsZSYgcHJvZmlsZSkKIHsKICAgICBj
b25zdCBjaGFyKiBzZXBhcmF0b3IgPSAiIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FyaXRoUHJvZmlsZS5oCmluZGV4IDY3OWEwNWZiMjU3ZGFlMDE3ZTc0NTYwYTliYTM4
Y2QzNTQ0MDU3YmEuLmZjYzRlMjgxOGJlNmRiMmFiZTQ4YmU4OTcyMjc0YjgzNmUwMjAzZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKQEAgLTY2
LDI0MyArNjYsMTExIEBAIHByaXZhdGU6CiAgICAgdWludDhfdCBtX2JpdHMgeyAwIH07CiB9Owog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotY2xhc3MgQXJpdGhQcm9maWxlIHsK
LXB1YmxpYzoKLSAgICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7Ci0gICAgICAgIE5vbk5lZ1plcm9E
b3VibGUgPSAxIDw8IDAsCi0gICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCi0gICAg
ICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEludDMyT3ZlcmZsb3cgICAg
PSAxIDw8IDMsCi0gICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCi0gICAgICAgIEJp
Z0ludCAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQgPSA2OwotCi0gICAgYm9vbCBkaWRP
YnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUg
fCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KLSAgICBib29sIGRpZE9i
c2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBO
ZWdaZXJvRG91YmxlKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRP
YnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJs
ZSk7IH0KLSAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFz
Qml0cyhOb25OdW1lcmljKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsg
cmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZs
b3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Ci0gICAgYm9vbCBk
aWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVy
Zmxvdyk7IH0KLQotICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRC
aXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJs
ZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51
bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJ
bnQoKSB7IHNldEJpdChCaWdJbnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZs
b3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1
Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIHZvaWQgb2JzZXJ2
ZVJlc3VsdChKU1ZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIo
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsK
LSAgICAgICAgICAgIG1fYml0cyB8PSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5v
bk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAg
ICAgICBtX2JpdHMgfD0gQmlnSW50OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIG1fYml0cyB8PSBOb25OdW1lcmljOwotICAgIH0KLQotICAgIGNvbnN0IHZvaWQqIGFk
ZHJlc3NPZkJpdHMoKSBjb25zdCB7IHJldHVybiAmbV9iaXRzOyB9Ci0KLSNpZiBFTkFCTEUoSklU
KQotICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVy
b0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpIGlmIGl0IHNlZXMgYQotICAgIC8vIGRvdWJsZS4gU2V0
cyBOb25OdW1lcmljIGlmIGl0IHNlZXMgYSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNl
cnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0g
SGF2ZVRhZ1JlZ2lzdGVycyk7Ci0KLSAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJP
dmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKS4KLSAgICBib29sIHNo
b3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKLSAgICB2b2lkIGVtaXRTZXREb3VibGUoQ0NhbGxI
ZWxwZXJzJikgY29uc3Q7Ci0KLSAgICAvLyBTZXRzIE5vbk51bWJlci4KLSAgICB2b2lkIGVtaXRT
ZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNl
dE5vbk51bWVyaWMoKSBjb25zdDsKLQotICAgIC8vIFNldHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0
U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldEJp
Z0ludCgpIGNvbnN0OwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLSAgICBjb25zdGV4cHIgdWlu
dDMyX3QgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAg
QXJpdGhQcm9maWxlKEJpdGZpZWxkVHlwZSBiaXRzKQotICAgICAgICA6IG1fYml0cyhiaXRzKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGhhc0JpdHMoaW50IG1hc2spIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIG1hc2s7IH0KLSAgICB2b2lkIHNldEJpdChpbnQgbWFzaykgeyBtX2JpdHMgfD0g
bWFzazsgfQotCi0gICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJl
IHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2
ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRhdGlvbiB0byBpdC4KLX07Ci0K
LS8qIFRoaXMgY2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBpbiAxNiBiaXRz
OgotICogLSBPYnNlcnZlZFJlc3VsdHMKLSAqIC0gUmVzdWx0VHlwZSBmb3IgdGhlIGFyZ3VtZW50
Ci0gKiAtIE9ic2VydmVkVHlwZSBmb3IgdGhlIGFyZ3VtZW50Ci0gKi8KLWNsYXNzIFVuYXJ5QXJp
dGhQcm9maWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTx1aW50MTZfdD4gewotICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgYXJnUmVzdWx0VHlwZVNoaWZ0ID0gb2JzZXJ2ZWRSZXN1bHRzTnVt
Qml0c05lZWRlZDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGFyZ09ic2VydmVkVHlw
ZVNoaWZ0ID0gYXJnUmVzdWx0VHlwZVNoaWZ0ICsgUmVzdWx0VHlwZTo6bnVtQml0c05lZWRlZDsK
LQotICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6
Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKHVpbnQxNl90KSAqIDgsICJTaG91bGQgZml0IGluIGEg
dWludDE2X3QiKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3QgY2xlYXJBcmdPYnNl
cnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KH4oMGIxMTEgPDwgYXJnT2Jz
ZXJ2ZWRUeXBlU2hpZnQpKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3QgcmVzdWx0
VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MTZfdCBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0KLXB1YmxpYzoKLSAgICBVbmFyeUFyaXRoUHJvZmls
ZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBBcml0aFByb2ZpbGU8dWludDE2X3Q+KGFyZy5i
aXRzKCkgPDwgYXJnUmVzdWx0VHlwZVNoaWZ0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFyZ1Jl
c3VsdFR5cGUoKS5iaXRzKCkgPT0gYXJnLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVChhcmdPYnNl
cnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRUeXBlKCku
aXNFbXB0eSgpKTsKLSAgICB9Ci0KLSAgICBVbmFyeUFyaXRoUHJvZmlsZSgpCi0gICAgICAgIDog
VW5hcnlBcml0aFByb2ZpbGUoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSkKLSAgICB7Ci0gICAg
fQotCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBvYnNlcnZlZEludEJpdHMoKQotICAg
IHsKLSAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2
ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQxNl90IGJpdHMg
PSBvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4MjAwMCwgIiIpOwotICAgICAgICByZXR1cm4gYml0czsK
LSAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBvYnNlcnZlZE51bWJlckJpdHMo
KQotICAgIHsKLSAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7
IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDE2
X3QgYml0cyA9IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdDsK
LSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4NDAwMCwgIiIpOwotICAgICAgICByZXR1
cm4gYml0czsKLSAgICB9Ci0KLSAgICBSZXN1bHRUeXBlIGFyZ1Jlc3VsdFR5cGUoKSBjb25zdCB7
IHJldHVybiBSZXN1bHRUeXBlKChtX2JpdHMgPj4gYXJnUmVzdWx0VHlwZVNoaWZ0KSAmIHJlc3Vs
dFR5cGVNYXNrKTsgfQotCi0gICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBhcmdPYnNlcnZlZFR5
cGUoKSBjb25zdCB7IHJldHVybiBPYnNlcnZlZFR5cGUoKG1fYml0cyA+PiBhcmdPYnNlcnZlZFR5
cGVTaGlmdCkgJiBvYnNlcnZlZFR5cGVNYXNrKTsgfQotICAgIHZvaWQgc2V0QXJnT2JzZXJ2ZWRU
eXBlKE9ic2VydmVkVHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgdWludDE2X3QgYml0cyA9IG1f
Yml0czsKLSAgICAgICAgYml0cyAmPSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2s7Ci0gICAg
ICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQ7Ci0gICAgICAg
IG1fYml0cyA9IGJpdHM7Ci0gICAgICAgIEFTU0VSVChhcmdPYnNlcnZlZFR5cGUoKSA9PSB0eXBl
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFyZ1Nhd0ludDMyKCkgeyBzZXRBcmdPYnNlcnZlZFR5cGUo
YXJnT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9Ci0gICAgdm9pZCBhcmdTYXdOdW1iZXIo
KSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkpOyB9
Ci0gICAgdm9pZCBhcmdTYXdOb25OdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNl
cnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9Ci0KLSAgICB2b2lkIG9ic2VydmVBcmcoSlNW
YWx1ZSBhcmcpCi0gICAgewotICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0g
KnRoaXM7Ci0gICAgICAgIGlmIChhcmcuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgaWYgKGFy
Zy5pc0ludDMyKCkpCi0gICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5hcmdTYXdJbnQzMigpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUuYXJnU2F3TnVtYmVy
KCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbmV3UHJvZmlsZS5hcmdTYXdOb25OdW1i
ZXIoKTsKLQotICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxlLmJpdHMoKTsKLSAgICB9Ci0KLSAg
ICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFyZ09i
c2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKLSAgICB9Ci0KLSAgICBmcmllbmQgY2xhc3MgSlNDOjpM
TEludE9mZnNldHNFeHRyYWN0b3I7Ci19OwotCi0vKiBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZm9s
bG93aW5nIGNvbXBvbmVudHMgaW4gMzIgYml0czoKLSAqIC0gT2JzZXJ2ZWRSZXN1bHRzCi0gKiAt
IFJlc3VsdFR5cGUgZm9yIHJpZ2h0LWhhbmQtc2lkZQotICogLSBSZXN1bHRUeXBlIGZvciBsZWZ0
LWhhbmQtc2lkZQotICogLSBPYnNlcnZlZFR5cGUgZm9yIHJpZ2h0LWhhbmQtc2lkZQotICogLSBP
YnNlcnZlZFR5cGUgZm9yIGxlZnQtaGFuZC1zaWRlCi0gKiAtIGEgYml0IHVzZWQgYnkgZGl2aXNp
b24gdG8gaW5kaWNhdGUgd2hldGhlciBhIHNwZWNpYWwgZmFzdCBwYXRoIHdhcyB0YWtlbgotICov
Ci1jbGFzcyBCaW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPHVpbnQzMl90
PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNSZXN1bHRUeXBlU2hpZnQgPSBv
YnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOworc3RydWN0IEFyaXRoUHJvZmlsZSB7Citwcml2
YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVtYmVyT2ZGbGFnQml0cyA9IDY7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNSZXN1bHRUeXBlU2hpZnQgPSBudW1i
ZXJPZkZsYWdCaXRzOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbGhzUmVzdWx0VHlw
ZVNoaWZ0ID0gcmhzUmVzdWx0VHlwZVNoaWZ0ICsgUmVzdWx0VHlwZTo6bnVtQml0c05lZWRlZDsK
ICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHJoc09ic2VydmVkVHlwZVNoaWZ0ID0gbGhz
UmVzdWx0VHlwZVNoaWZ0ICsgUmVzdWx0VHlwZTo6bnVtQml0c05lZWRlZDsKICAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQzMl90IGxoc09ic2VydmVkVHlwZVNoaWZ0ID0gcmhzT2JzZXJ2ZWRUeXBl
U2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQ7CiAKICAgICBzdGF0aWNfYXNzZXJ0
KE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA9PSAzLCAiV2UgbWFrZSBhIGhhcmQgYXNzdW1w
dGlvbiBhYm91dCB0aGF0IGhlcmUuIik7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBj
bGVhclJoc09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigwYjEx
MSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCkpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3QgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KH4o
MGIxMTEgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IGNsZWFyUmhzT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PHVpbnQzMl90
Pih+KCgxIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KSB8ICgxIDw8IChyaHNPYnNlcnZlZFR5cGVT
aGlmdCArIDEpKSB8ICgxIDw8IChyaHNPYnNlcnZlZFR5cGVTaGlmdCArIDIpKSkpOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KH4oKDEgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwg
KGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0
ICsgMikpKSk7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHJlc3VsdFR5cGVNYXNr
ID0gKDEgPDwgUmVzdWx0VHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3Qgb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVt
Qml0c05lZWRlZCkgLSAxOwogCisgICAgZW51bSBjbGFzcyBDb25zdGFudFRhZyB7IENvbnN0YW50
IH07CisKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNwZWNpYWxGYXN0
UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1C
aXRzTmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZih1aW50MzJfdCkgKiA4LCAi
U2hvdWxkIGZpdCBpbiBhIHVpbnQzMl90LiIpOworICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2Vy
dmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9mKHVp
bnQzMl90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKICAgICBzdGF0
aWNfYXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0
TWFzayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0LiIpOwogICAgIHN0YXRpY19h
c3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAi
VGhlc2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOwogICAgIHN0YXRpY19hc3NlcnQoc3BlY2lh
bEZhc3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMg
c2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBo
aWdoZXIgYml0LiIpOwogCi0gICAgQmluYXJ5QXJpdGhQcm9maWxlKFJlc3VsdFR5cGUgbGhzLCBS
ZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBBcml0aFByb2ZpbGU8dWludDMyX3Q+KChsaHMuYml0
cygpIDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkgfCAocmhzLmJpdHMoKSA8PCByaHNSZXN1bHRUeXBl
U2hpZnQpKQorICAgIEFyaXRoUHJvZmlsZShSZXN1bHRUeXBlIGFyZykKKyAgICAgICAgOiBBcml0
aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBhcmcpCisgICAgeworICAgICAgICBBU1NF
UlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBhcmcuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
KGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChyaHNPYnNlcnZl
ZFR5cGUoKS5pc0VtcHR5KCkpOworICAgIH0KKworICAgIEFyaXRoUHJvZmlsZShSZXN1bHRUeXBl
IGxocywgUmVzdWx0VHlwZSByaHMpCisgICAgICAgIDogQXJpdGhQcm9maWxlKENvbnN0YW50VGFn
OjpDb25zdGFudCwgbGhzLCByaHMpCiAgICAgewogICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlw
ZSgpLmJpdHMoKSA9PSBsaHMuYml0cygpICYmIHJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gcmhz
LmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwog
ICAgICAgICBBU1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKICAgICB9CiAKLSAg
ICBCaW5hcnlBcml0aFByb2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQotICAgICAgICA6IEJpbmFy
eUFyaXRoUHJvZmlsZSh0eXBlcy5maXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKKyAgICBBcml0aFBy
b2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQorICAgICAgICA6IEFyaXRoUHJvZmlsZSh0eXBlcy5m
aXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKICAgICB7IH0KIAotICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSgpCi0gICAgICAgIDogQmluYXJ5QXJpdGhQcm9maWxlKFJlc3VsdFR5cGU6OnVua25vd25UeXBl
KCksIFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCkpCisgICAgQXJpdGhQcm9maWxlKCkgPSBkZWZh
dWx0OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgZnJvbUludCh1aW50MzJf
dCBiaXRzKQogICAgIHsKKyAgICAgICAgcmV0dXJuIEFyaXRoUHJvZmlsZSB7IENvbnN0YW50VGFn
OjpDb25zdGFudCwgYml0cyB9OwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qgb2JzZXJ2ZWRJbnRJbnRCaXRzKCkKKyAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmls
ZSBvYnNlcnZlZFVuYXJ5SW50KCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5
cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07CisgICAgICAg
IGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQ7CisgICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDgwMDAwMCwg
IiIpOworICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICB9CisgICAgc3RhdGljIGNv
bnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRVbmFyeU51bWJlcigpCisgICAgeworICAgICAg
ICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCku
d2l0aE51bWJlcigpIH07CisgICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2JzZXJ2
ZWROdW1iZXIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0OworICAgICAgICBzdGF0aWNf
YXNzZXJ0KGJpdHMgPT0gMHgxMDAwMDAwLCAiIik7CisgICAgICAgIHJldHVybiBmcm9tSW50KGJp
dHMpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZEJp
bmFyeUludEludCgpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2Vy
dmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwogICAgICAgICBjb25zdGV4
cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5
cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQp
OwogICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHg5MDAwMDAsICIiKTsKLSAgICAgICAg
cmV0dXJuIGJpdHM7CisgICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOwogICAgIH0KLSAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkTnVtYmVySW50Qml0cygpCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKQogICAg
IHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2Vy
dmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBl
IG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwogICAgICAgICBj
b25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlw
ZVNoaWZ0KTsKICAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4MTEwMDAwMCwgIiIpOwot
ICAgICAgICByZXR1cm4gYml0czsKKyAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CiAgICAg
fQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgb2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkK
KyAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZEJpbmFyeUludE51bWJl
cigpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVy
IHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigpIH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNl
cnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07CiAg
ICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8
IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQpOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHhhMDAwMDAs
ICIiKTsKLSAgICAgICAgcmV0dXJuIGJpdHM7CisgICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMp
OwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkTnVtYmVyTnVt
YmVyQml0cygpCisgICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5h
cnlOdW1iZXJOdW1iZXIoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBv
YnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwogICAgICAgICBj
b25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5
cGVTaGlmdCk7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDEyMDAwMDAsICIiKTsK
LSAgICAgICAgcmV0dXJuIGJpdHM7CisgICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOwogICAg
IH0KIAorICAgIGVudW0gT2JzZXJ2ZWRSZXN1bHRzIHsKKyAgICAgICAgTm9uTmVnWmVyb0RvdWJs
ZSA9IDEgPDwgMCwKKyAgICAgICAgTmVnWmVyb0RvdWJsZSAgICA9IDEgPDwgMSwKKyAgICAgICAg
Tm9uTnVtZXJpYyAgICAgICA9IDEgPDwgMiwKKyAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEg
PDwgMywKKyAgICAgICAgSW50NTJPdmVyZmxvdyAgICA9IDEgPDwgNCwKKyAgICAgICAgQmlnSW50
ICAgICAgICAgICA9IDEgPDwgNSwKKyAgICB9OworCiAgICAgUmVzdWx0VHlwZSBsaHNSZXN1bHRU
eXBlKCkgY29uc3QgeyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRzID4+IGxoc1Jlc3VsdFR5cGVT
aGlmdCkgJiByZXN1bHRUeXBlTWFzayk7IH0KICAgICBSZXN1bHRUeXBlIHJoc1Jlc3VsdFR5cGUo
KSBjb25zdCB7IHJldHVybiBSZXN1bHRUeXBlKChtX2JpdHMgPj4gcmhzUmVzdWx0VHlwZVNoaWZ0
KSAmIHJlc3VsdFR5cGVNYXNrKTsgfQogCkBAIC0zMjgsNiArMTk2LDM5IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgdG9va1NwZWNpYWxGYXN0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIHNw
ZWNpYWxGYXN0UGF0aEJpdDsgfQogCisgICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9u
TnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7
IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQorICAg
IGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRz
KE5vbk5lZ1plcm9Eb3VibGUpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgp
IGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9i
c2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQor
ICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50
KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBo
YXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxv
dygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KKworICAgIHZvaWQg
c2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJsZSk7
IH0KKyAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1plcm9E
b3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChOb25O
dW1lcmljKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJbnQp
OyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQzMk92
ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQo
SW50NTJPdmVyZmxvdyk7IH0KKworICAgIGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBjb25z
dCB7IHJldHVybiAmbV9iaXRzOyB9CisKKyAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1ZSB2
YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICBtX2Jp
dHMgfD0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IEJp
Z0ludDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2JpdHMgfD0g
Tm9uTnVtZXJpYzsKKyAgICB9CisKICAgICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBzZXRMaHNPYnNl
cnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9CiAgICAgdm9pZCBsaHNT
YXdOdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTnVt
YmVyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOb25OdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlw
ZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CkBAIC0zMzcsNyArMjM4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBvYnNlcnZlTEhTKEpTVmFsdWUgbGhzKQogICAgIHsKLSAg
ICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQXJp
dGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKICAgICAgICAgaWYgKGxocy5pc051bWJlcigp
KSB7CiAgICAgICAgICAgICBpZiAobGhzLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBuZXdQ
cm9maWxlLmxoc1Nhd0ludDMyKCk7CkBAIC0zNTMsNyArMjU0LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgb2JzZXJ2ZUxIUyhsaHMpOwogCi0gICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBu
ZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRo
aXM7CiAgICAgICAgIGlmIChyaHMuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKHJocy5p
c0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQzMigpOwpAQCAt
MzY1LDExICsyNjYsNDcgQEAgcHVibGljOgogICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxlLmJp
dHMoKTsKICAgICB9CiAKLSAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQorI2lmIEVOQUJM
RShKSVQpICAgIAorICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwg
Tm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpIGlmIGl0IHNlZXMgYQorICAgIC8vIGRv
dWJsZS4gU2V0cyBOb25OdW1lcmljIGlmIGl0IHNlZXMgYSBub24tbnVtZXJpYy4KKyAgICB2b2lk
IGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3Rl
cnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgCisgICAgLy8gU2V0cyAoSW50MzJPdmVy
ZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSku
CisgICAgYm9vbCBzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0
RG91YmxlKENDYWxsSGVscGVycyYpIGNvbnN0OworICAgIAorICAgIC8vIFNldHMgTm9uTnVtYmVy
LgorICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisgICAg
Ym9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0OworCisgICAgLy8gU2V0cyBCaWdJ
bnQKKyAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisgICAgYm9v
bCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwor
ICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9CisK
K3ByaXZhdGU6CisgICAgY29uc3RleHByIGV4cGxpY2l0IEFyaXRoUHJvZmlsZShDb25zdGFudFRh
ZywgdWludDMyX3QgYml0cykKKyAgICAgICAgOiBtX2JpdHMoYml0cykKKyAgICB7CisgICAgfQor
CisgICAgY29uc3RleHByIEFyaXRoUHJvZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlwZSBhcmcp
CisgICAgICAgIDogbV9iaXRzKGFyZy5iaXRzKCkgPDwgbGhzUmVzdWx0VHlwZVNoaWZ0KQorICAg
IHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgQXJpdGhQcm9maWxlKENvbnN0YW50VGFnLCBSZXN1
bHRUeXBlIGxocywgUmVzdWx0VHlwZSByaHMpCisgICAgICAgIDogbV9iaXRzKChsaHMuYml0cygp
IDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkgfCAocmhzLmJpdHMoKSA8PCByaHNSZXN1bHRUeXBlU2hp
ZnQpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSAm
JiByaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiAgICAgfQogCisgICAgYm9vbCBoYXNCaXRz
KGludCBtYXNrKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9CisgICAgdm9pZCBzZXRC
aXQoaW50IG1hc2spIHsgbV9iaXRzIHw9IG1hc2s7IH0KKworICAgIHVpbnQzMl90IG1fYml0cyB7
IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBv
cGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNl
bnRhdGlvbiB0byBpdC4KKwogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIH07CiAKQEAgLTM3Nyw4ICszMTQsNyBAQCBwdWJsaWM6CiAKIG5hbWVzcGFjZSBXVEYg
ewogCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6OlVuYXJ5QXJp
dGhQcm9maWxlJik7Ci12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6
OkJpbmFyeUFyaXRoUHJvZmlsZSYpOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
Y29uc3QgSlNDOjpBcml0aFByb2ZpbGUmKTsKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYsIGNvbnN0IEpTQzo6T2JzZXJ2ZWRUeXBlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggZmIz
OTNlYTQ5OTlkNzc1MmNkNmU5NDAwMzUyNGQ2YTcxZjkzOTI1MC4uYzA4NmI4ZWIzZjNlZDI3OTg2
OGU3OTY0NTk3ZjE1ZmY3OGQ4MzhjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00MSw3ICs0MSw2IEBAIHR5cGVzIFsKICAgICA6SlNU
eXBlLAogICAgIDpKU1ZhbHVlLAogICAgIDpMTEludENhbGxMaW5rSW5mbywKLSAgICA6UmVzdWx0
VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywK
ICAgICA6UHJvcGVydHlPZmZzZXQsCkBAIC01OCw4ICs1Nyw3IEBAIHR5cGVzIFsKIAogICAgIDpW
YWx1ZVByb2ZpbGUsCiAgICAgOlZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIsCi0gICAgOlVu
YXJ5QXJpdGhQcm9maWxlLAotICAgIDpCaW5hcnlBcml0aFByb2ZpbGUsCisgICAgOkFyaXRoUHJv
ZmlsZSwKICAgICA6QXJyYXlQcm9maWxlLAogICAgIDpBcnJheUFsbG9jYXRpb25Qcm9maWxlLAog
ICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKQEAgLTI4NCw3ICsyODIsNyBAQCBvcF9ncm91
cCA6UHJvZmlsZWRCaW5hcnlPcCwKICAgICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMs
CiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6IEJpbmFyeUFy
aXRoUHJvZmlsZQorICAgICAgICBhcml0aFByb2ZpbGU6IEFyaXRoUHJvZmlsZQogICAgIH0sCiAg
ICAgbWV0YWRhdGFfaW5pdGlhbGl6ZXJzOiB7CiAgICAgICAgIGFyaXRoUHJvZmlsZTogOm9wZXJh
bmRUeXBlcwpAQCAtMzY5LDEzICszNjcsMTMgQEAgb3AgOm5lZ2F0ZSwKICAgICBhcmdzOiB7CiAg
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVn
aXN0ZXIsCi0gICAgICAgIHJlc3VsdFR5cGU6IFJlc3VsdFR5cGUsCisgICAgICAgIG9wZXJhbmRU
eXBlczogT3BlcmFuZFR5cGVzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJp
dGhQcm9maWxlOiBVbmFyeUFyaXRoUHJvZmlsZSwKKyAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0
aFByb2ZpbGUsCiAgICAgfSwKICAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKLSAgICAgICAg
YXJpdGhQcm9maWxlOiA6cmVzdWx0VHlwZQorICAgICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5k
VHlwZXMKICAgICB9CiAKIG9wIDpub3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCmluZGV4IDE0M2EzNjJhZTVkMjM2ZjIzM2ZlY2VlYzNkNzBlZDUxZjk3
NTY2N2QuLjYwY2M2NWU2NDQ1N2VkNDM0MDE0YzNhNzlhZmRlNjRkOGFiNjI4M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDgwLDI1ICsx
NDgwLDI1IEBAIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmFkZFN0dWJJbmZvKEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSkKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3R1
YkluZm9zLmFkZChhY2Nlc3NUeXBlKTsKIH0KIAotSklUQWRkSUMqIENvZGVCbG9jazo6YWRkSklU
QWRkSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRBZGRJQyogQ29kZUJs
b2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJuIGVuc3VyZUpJVERhdGEo
bG9ja2VyKS5tX2FkZElDcy5hZGQoYXJpdGhQcm9maWxlKTsKIH0KIAotSklUTXVsSUMqIENvZGVC
bG9jazo6YWRkSklUTXVsSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRN
dWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
IHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJuIGVu
c3VyZUpJVERhdGEobG9ja2VyKS5tX211bElDcy5hZGQoYXJpdGhQcm9maWxlKTsKIH0KIAotSklU
U3ViSUMqIENvZGVCbG9jazo6YWRkSklUU3ViSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCitKSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAg
ICAgcmV0dXJuIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX3N1YklDcy5hZGQoYXJpdGhQcm9maWxl
KTsKIH0KIAotSklUTmVnSUMqIENvZGVCbG9jazo6YWRkSklUTmVnSUMoVW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSkKK0pJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbmVnSUNzLmFkZChh
cml0aFByb2ZpbGUpOwpAQCAtMzA4NSwxOSArMzA4NSwxNiBAQCBjb25zdCBJbnN0cnVjdGlvbiog
Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYykKICAg
ICByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQob2Zmc2V0ICsgdGFyZ2V0KS5wdHIoKTsKIH0KIAot
QmluYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCitBcml0
aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKIHsKLSAgICByZXR1cm4gYmluYXJ5
QXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVPZmZzZXQpLnB0cigp
KTsKKyAgICByZXR1cm4gYXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNv
ZGVPZmZzZXQpLnB0cigpKTsKIH0KIAotVW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6dW5h
cnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
IGJ5dGVjb2RlT2Zmc2V0KQotewotICAgIHJldHVybiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGlu
c3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KS5wdHIoKSk7Ci19Ci0KLUJpbmFyeUFyaXRo
UHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVj
dGlvbiogcGMpCitBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yUEMoY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKKyAg
ICBjYXNlIG9wX25lZ2F0ZToKKyAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdhdGU+KCkubWV0
YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CiAgICAgY2FzZSBvcF9hZGQ6CiAgICAgICAgIHJl
dHVybiAmcGMtPmFzPE9wQWRkPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJpdGhQcm9maWxlOwogICAg
IGNhc2Ugb3BfbXVsOgpAQCAtMzExMywyMyArMzExMCwxMSBAQCBCaW5hcnlBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1VbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2Nr
Ojp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKLXsKLSAgICBz
d2l0Y2ggKHBjLT5vcGNvZGVJRCgpKSB7Ci0gICAgY2FzZSBvcF9uZWdhdGU6Ci0gICAgICAgIHJl
dHVybiAmcGMtPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJpdGhQcm9maWxlOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRy
OwotfQotCiBib29sIENvZGVCbG9jazo6Y291bGRUYWtlU3BlY2lhbEZhc3RDYXNlKEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgaWYgKCFoYXNCYXNlbGlu
ZUpJVFByb2ZpbGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBwcm9maWxlID0gYmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpOworICAgIEFyaXRoUHJvZmlsZSogcHJvZmlsZSA9IGFyaXRoUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBpZiAoIXByb2ZpbGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcHJvZmlsZS0+dG9va1NwZWNpYWxGYXN0UGF0
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDJh
MDM2Y2FiMzExMGRjM2Y1ZmEwYTg5YmUzMjhhYzYwMGZhNGQ2ZDYuLjQyMzNlYTIxZTk0NzgxMDQ0
MzA3MjJjNDM1NGIzNTFkZWY0MTQwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKQEAgLTgzLDggKzgzLDYgQEAgc3RydWN0IE9TUkV4aXRTdGF0ZTsKIH0g
Ly8gbmFtZXNwYWNlIERGRwogI2VuZGlmCiAKLWNsYXNzIFVuYXJ5QXJpdGhQcm9maWxlOwotY2xh
c3MgQmluYXJ5QXJpdGhQcm9maWxlOwogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwog
Y2xhc3MgQ29kZUJsb2NrU2V0OwogY2xhc3MgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTsKQEAg
LTk4LDYgKzk2LDcgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgQWNj
ZXNzVHlwZSA6IGludDhfdDsKIAorc3RydWN0IEFyaXRoUHJvZmlsZTsKIHN0cnVjdCBPcENhdGNo
OwogCiBlbnVtIFJlb3B0aW1pemF0aW9uTW9kZSB7IERvbnRDb3VudFJlb3B0aW1pemF0aW9uLCBD
b3VudFJlb3B0aW1pemF0aW9uIH07CkBAIC0yODAsMjIgKzI3OSwyMiBAQCBwdWJsaWM6CiAgICAg
fQogICAgIEpJVERhdGEmIGVuc3VyZUpJVERhdGFTbG93KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYpOwogCi0gICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEJpbmFyeUFyaXRoUHJvZmlsZSopOwot
ICAgIEpJVE11bElDKiBhZGRKSVRNdWxJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRO
ZWdJQyogYWRkSklUTmVnSUMoVW5hcnlBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRTdWJJQyogYWRk
SklUU3ViSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUQWRkSUMqIGFkZEpJVEFkZElD
KEFyaXRoUHJvZmlsZSopOworICAgIEpJVE11bElDKiBhZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUq
KTsKKyAgICBKSVROZWdJQyogYWRkSklUTmVnSUMoQXJpdGhQcm9maWxlKik7CisgICAgSklUU3Vi
SUMqIGFkZEpJVFN1YklDKEFyaXRoUHJvZmlsZSopOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Nh
bWU8R2VuZXJhdG9yLCBKSVRBZGRHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUQWRk
SUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJ
VEFkZElDKHByb2ZpbGUpOyB9CisgICAgSklUQWRkSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUq
IHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVEFkZElDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVE11bEdlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4K
LSAgICBKSVRNdWxJQyogYWRkTWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyBy
ZXR1cm4gYWRkSklUTXVsSUMocHJvZmlsZSk7IH0KKyAgICBKSVRNdWxJQyogYWRkTWF0aElDKEFy
aXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTXVsSUMocHJvZmlsZSk7IH0KIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUTmVnR2VuZXJhdG9yPjo6dmFs
dWU+Ojp0eXBlPgotICAgIEpJVE5lZ0lDKiBhZGRNYXRoSUMoVW5hcnlBcml0aFByb2ZpbGUqIHBy
b2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE5lZ0lDKHByb2ZpbGUpOyB9CisgICAgSklUTmVnSUMqIGFk
ZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE5lZ0lDKHByb2Zp
bGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVFN1YkdlbmVy
YXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVRTdWJJQyogYWRkTWF0aElDKEJpbmFyeUFyaXRo
UHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUU3ViSUMocHJvZmlsZSk7IH0KKyAgICBK
SVRTdWJJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklU
U3ViSUMocHJvZmlsZSk7IH0KIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBhZGRTdHViSW5mbyhB
Y2Nlc3NUeXBlKTsKIApAQCAtNDkzLDEwICs0OTIsOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoY29u
c3QgRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFj
aExMSW50Q2FsbExpbmtJbmZvKGNvbnN0IEZ1bmN0b3ImKTsKIAotICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJl
YW06Ok9mZnNldCBieXRlY29kZU9mZnNldCk7Ci0gICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBi
eXRlY29kZU9mZnNldCk7Ci0gICAgQmluYXJ5QXJpdGhQcm9maWxlKiBiaW5hcnlBcml0aFByb2Zp
bGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOwotICAgIFVuYXJ5QXJpdGhQcm9maWxlKiB1bmFy
eUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
IGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZUZvclBDKGNv
bnN0IEluc3RydWN0aW9uKik7CiAKICAgICBib29sIGNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZShJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggNzc3OTRjN2RmNWNlZmJmMTcyZjhkMmM4MGVmNmY4
NzBjNDQ5OTY0ZC4uOWFiNzcxMzdhYTY2ZDZmYTEzYTA3YzM0MDc3YWQ4YzQwYzAxMGY5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0yMzYsMjcgKzIzNiw2IEBAIHN0
cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYg
c3RkOjppc19lbnVtPEU+Ojp2YWx1CiAgICAgfQogfTsKIAotdGVtcGxhdGU8T3Bjb2RlU2l6ZSBz
aXplPgotc3RydWN0IEZpdHM8UmVzdWx0VHlwZSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXpl
b2YoUmVzdWx0VHlwZSkgIT0gc2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiB7Ci0gICAgc3RhdGljX2Fz
c2VydChzaXplb2YoUmVzdWx0VHlwZSkgPT0gc2l6ZW9mKHVpbnQ4X3QpKTsKLSAgICB1c2luZyBU
YXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOwotCi0g
ICAgc3RhdGljIGJvb2wgY2hlY2soUmVzdWx0VHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLQotICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQoUmVzdWx0VHlwZSB0
eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRhcmdldFR5cGU+KHR5cGUu
Yml0cygpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVzdWx0VHlwZSBjb252ZXJ0KFRhcmdldFR5
cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBSZXN1bHRUeXBlKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHR5cGUpKTsKLSAgICB9Ci19OwotCiB0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CiBz
dHJ1Y3QgRml0czxPcGVyYW5kVHlwZXMsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKE9w
ZXJhbmRUeXBlcykgIT0gc2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiB7CiAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoT3BlcmFuZFR5cGVzKSA9PSBzaXplb2YodWludDE2X3QpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLmNwcAppbmRleCBlMDI3NzY5YTBjZDJiZTk2M2FhOTk5Y2JhZmQyZjdiOGU1
YjEwNGUyLi43ZTNjYzk0ZmE0NjExMWRjYmFiMGYyMjA5ZjAxOTgyMDIzYjVmMDEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCkBAIC02NiwxNiArNjYsMTAgQEAgdm9pZCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQs
IEpTVmFsdWVSZWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBV
bmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUudW5hcnlBcml0aFByb2ZpbGUtPmVt
aXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICBj
YXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYXJpdGhQcm9maWxlLT5lbWl0T2Jz
ZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAg
ICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERv
Tm90SGF2ZVRhZ1JlZ2lzdGVycyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgfQorICAg
IH0gfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xMDAs
MTYgKzk0LDEwIEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFs
dWUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNhc2UgVW5h
cnlBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5vYnNl
cnZlUmVzdWx0KHZhbHVlKTsKKyAgICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAg
IHUuYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGNhc2UgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5i
aW5hcnlBcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIH0KKyAgICB9IH0KIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAppbmRleCAwNDQxNTAxMzkxMWFkN2Y4OGRh
ZWFhMmYzZTVkMjAyYTcxZjM4ZjgzLi5iNWU4NGIxMzM3ZTNlZjNiNjIzZGQyOTc2NTA3NGNjYTg1
N2MyMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTM1LDExICszNSwxMCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7Ci1jbGFzcyBCaW5h
cnlBcml0aFByb2ZpbGU7CiBjbGFzcyBDQ2FsbEhlbHBlcnM7CiBjbGFzcyBDb2RlQmxvY2s7CiBj
bGFzcyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTsKK3N0cnVjdCBBcml0aFByb2ZpbGU7CiBz
dHJ1Y3QgVmFsdWVQcm9maWxlOwogCiBjbGFzcyBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
IHsKQEAgLTU3LDIxICs1NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgbV9raW5kID0gTm9uZTsKICAgICB9Ci0KLSAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQotICAgIHsKLSAgICAgICAgaWYgKHByb2Zp
bGUpIHsKLSAgICAgICAgICAgIG1fa2luZCA9IFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk7Ci0gICAg
ICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBtX2tpbmQgPSBOb25lOwotICAgIH0KLQotICAgIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQorICAgIAorICAgIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoQXJpdGhQcm9maWxlKiBwcm9maWxlKQogICAgIHsKICAg
ICAgICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgIG1fa2luZCA9IEJpbmFyeUFyaXRoUHJv
ZmlsZVJlYWR5OwotICAgICAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUgPSBwcm9maWxlOwor
ICAgICAgICAgICAgbV9raW5kID0gQXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LmFy
aXRoUHJvZmlsZSA9IHByb2ZpbGU7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9raW5k
ID0gTm9uZTsKICAgICB9CkBAIC04OCwxNiArNzgsMTQgQEAgcHJpdmF0ZToKICAgICBlbnVtIEtp
bmQgewogICAgICAgICBOb25lLAogICAgICAgICBSZWFkeSwKLSAgICAgICAgVW5hcnlBcml0aFBy
b2ZpbGVSZWFkeSwKLSAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIEFy
aXRoUHJvZmlsZVJlYWR5LAogICAgICAgICBMYXp5T3BlcmFuZAogICAgIH07CiAgICAgCiAgICAg
S2luZCBtX2tpbmQ7CiAgICAgdW5pb24gewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7
Ci0gICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlKiB1bmFyeUFyaXRoUHJvZmlsZTsKLSAgICAgICAg
QmluYXJ5QXJpdGhQcm9maWxlKiBiaW5hcnlBcml0aFByb2ZpbGU7CisgICAgICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlOwogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2s7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggYjdhNGFhM2QxYjY3ODRhOTA2YWRhNTVlMmRmMTYzODA2OTBlNTVk
MS4uZTc5MTRhYTQ3YzVlZTlhOTgzZDc1OWZkZDZmYWFiNmNjYTBiM2YyMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTE2NjUsMTQgKzE2NjUsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKQogICAgIHJldHVy
biBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcChP
cGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIFJlc3Vs
dFR5cGUgdHlwZSkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcChP
cGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9wZXJh
bmRUeXBlcyB0eXBlcykKIHsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF9u
b3Q6CiAgICAgICAgIGVtaXRVbmFyeU9wPE9wTm90Pihkc3QsIHNyYyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2Ugb3BfbmVnYXRlOgotICAgICAgICBPcE5lZ2F0ZTo6ZW1pdCh0aGlzLCBkc3Qs
IHNyYywgdHlwZSk7CisgICAgICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBl
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ugb3BfYml0bm90OgogICAgICAgICBlbWl0VW5h
cnlPcDxPcEJpdG5vdD4oZHN0LCBzcmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDM4ZTc3Y2RiMTQyOWU5
MzZhYjM4NDllMjljYjgyYjAyZjgxMDY2NzIuLjQxOTdhYmMxMmU1MjI1ODkxNGZlNTAwZWMxZWU3
YjVhY2IzNGJkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTY4Miw3ICs2ODIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAgIH0KIAotICAgICAgICBSZWdp
c3RlcklEKiBlbWl0VW5hcnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMsIFJlc3VsdFR5cGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5hcnlPcChPcGNv
ZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9wZXJhbmRUeXBlcyk7CiAK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+CiAgICAgICAgIHN0ZDo6ZW5hYmxl
X2lmX3Q8CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKaW5kZXggZTQ4MWE0ZjFlMTNkYjNiYzNiM2ZjOTEzNDhhYWQ2NDMwZjEwZTk3
ZC4uNjU5MzdmMzE5YmU5MjU0OTNkZWVlMjU3ODRlMTEyYmE3YTU4ZDliZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAt
MjEzNiw3ICsyMTM2LDcgQEAgUmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogewogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkp
OwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpLCBtX2V4cHItPnJlc3VsdERlc2NyaXB0
b3IoKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4
cHItPnJlc3VsdERlc2NyaXB0b3IoKSkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gVW5hcnlQbHVzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCAxZmU0ZGJlODA4ZGNjNzRkZjYzZjY2MmIzYWJlNzcxY2ZmNTJkN2Q3Li42NjEwMTNhODc3
NzQ0Y2NlYzhiYzMzNjE3ZmIwYjlhMDk3OTUyNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtOTQyLDYwICs5NDIsNTYgQEAgcHJp
dmF0ZToKICAgICAgICAgaWYgKCFpc1g4NigpICYmIChub2RlLT5vcCgpID09IEFyaXRoTW9kIHx8
IG5vZGUtPm9wKCkgPT0gVmFsdWVNb2QpKQogICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAKLSAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgIGNhc2UgQXJpdGhBZGQ6Ci0gICAg
ICAgIGNhc2UgQXJpdGhTdWI6Ci0gICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKLSAgICAgICAgICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJl
bnRJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWFyaXRoUHJvZmlsZSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUo
KSkKLSAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVz
dWx0KTsKLSAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOb25OdW1lcmlj
KCkpCi0gICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVy
aWNSZXN1bHQpOwotICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0lu
dCgpKQotICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRS
ZXN1bHQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBWYWx1
ZU11bDoKLSAgICAgICAgY2FzZSBBcml0aE11bDogewotICAgICAgICAgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
PmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KTsKLSAg
ICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSkKLSAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDUyKTsKLSAg
ICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwg
bV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRl
eCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92
ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKLSAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRp
ZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKLSAgICAgICAgICAg
ICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCi0gICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7Ci0gICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAg
ICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKLSAgICAgICAgICAg
ICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0gICAgICAg
IGNhc2UgQXJpdGhOZWdhdGU6IHsKLSAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVuYXJ5QXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpOwotICAgICAgICAgICAgaWYg
KCFhcml0aFByb2ZpbGUpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAo
YXJpdGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2Zp
bGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdz
KE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKLSAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKLSAgICAgICAg
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IE92ZXJmbG93KSkKLSAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVy
Zmxvd0ludDMySW5CYXNlbGluZSk7Ci0gICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRP
YnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9k
ZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVCaWdJbnQoKSkKLSAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0K
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICB7CisgICAgICAg
ICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgp
OworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSkgeworICAgICAgICAgICAgICAgIHN3aXRj
aCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhBZGQ6CisgICAgICAg
ICAgICAgICAgY2FzZSBBcml0aFN1YjoKKyAgICAgICAgICAgICAgICBjYXNlIFZhbHVlQWRkOgor
ICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91
YmxlUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2Jz
ZXJ2ZU5vbk51bWVyaWMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2Ug
VmFsdWVNdWw6CisgICAgICAgICAgICAgICAgY2FzZSBBcml0aE11bDogeworICAgICAgICAgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1
Mik7CisgICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQz
Mk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8
IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIE5lZ2F0aXZlWmVybykpCisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNS
ZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
QmlnSW50KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVN
YXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6CisgICAgICAgICAg
ICAgICAgY2FzZSBBcml0aE5lZ2F0ZTogeworICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRp
ZE9ic2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykp
CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJv
SW5CYXNlbGluZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9i
c2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJp
YygpKQorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2
ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxl
LT5kaWRPYnNlcnZlQmlnSW50KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UobV9jdXJyZW50
SW5kZXgpKSB7CkBAIC0xMDM4LDcgKzEwMzQsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBGSVhN
RTogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIG1vcmUgZ3JhbnVsYXIuCiAgICAg
ICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lIHwgTm9k
ZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsKICAgICAgICAgCi0gICAgICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5i
aW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCk7CisgICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCk7
CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKICAgICAgICAg
ICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDRjNmQxMDk5YjZmYzEyOTAyMTVlMzhk
YWNlMmI0NDRmM2I3MTJlNTYuLjlkNWI3ZDkzMzdjMjFkMzgyMWQ1YzlkNGM1ZTEyMWMyMTAyZWJl
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xNjUyLDkgKzE2
NTIsNyBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlRm9yKE5vZGUqIGN1cnJlbgogICAgICAgICAgICAgICAgIHJldHVybiAm
cHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSk7CiAKICAgICAgICAgICAgIGlmIChwcm9maWxlZEJs
b2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEJp
bmFyeUFyaXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmlsZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgo
KSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAg
aWYgKFVuYXJ5QXJpdGhQcm9maWxlKiByZXN1bHQgPSBwcm9maWxlZEJsb2NrLT51bmFyeUFyaXRo
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUlu
ZGV4KCkpKQorICAgICAgICAgICAgICAgIGlmIChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2Zp
bGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5ieXRlY29kZUluZGV4KCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGY2MzJkMTE2NGRiZjE5YmUxZTZhZTU1NzVk
OGMzNDc0ZjkzZWUzNzcuLjlkMDM4YjVmMzJjNTY2OTA0MjcxNzIyMzI1YTYyZmNlNzQ5OWY0NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CkBAIC00MDAwLDcgKzQwMDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVB
ZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2pp
dC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29k
ZUluZGV4KCk7Ci0gICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGlu
ZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJ
bmRleCk7CisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9j
ay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklU
QWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFyaXRoUHJvZmls
ZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9wdGlt
aXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7
CkBAIC00MDI0LDcgKzQwMjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVT
dWIoTm9kZSogbm9kZSkKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0g
bV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
YmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
SW5kZXgpOwogICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRk
SklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24g
PSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdG
dW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwpAQCAtNDYxOCw3ICs0NjE4LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUpCiB7CiAgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxv
Y2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBVbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPnVuYXJ5QXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTmVnSUMqIG5lZ0lDID0gbV9qaXQuY29kZUJs
b2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRj
aGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7CkBAIC00ODQxLDcgKzQ4NDEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9kZSogbm9kZSkKIAogICAg
IENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29k
ZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgQmluYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9qaXQu
Y29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOTM4ZGM4NzAyNDFmZjYxNWFkMDdm
NGMyMWYyZjg4MzNiYjk2NjcwNC4uYTNiODRkNjM3OTgyYjU0Y2ZmYmExMDM2OTBhNjNmYjI5MWI1
MWRjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cApAQCAtMjEwNyw3ICsyMTA3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgg
PSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0byByZXBhdGNoaW5n
RnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplOwogICAgICAgICBhdXRvIG5vblJl
cGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkOwogICAgICAgICBjb21waWxlQmlu
YXJ5TWF0aElDPEpJVEFkZEdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rp
b24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTI2LDcgKzIxMjYsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdy
YXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAg
ICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVj
b2RlSW5kZXgoKTsKLSAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVJbmRleCk7CisgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxp
bmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgp
OwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0
aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVTdWI7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPihhcml0
aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAg
LTIxNDUsNyArMjE0NSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGlu
ZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gbV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFBy
b2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKKyAgICAgICAgQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bDsKICAgICAgICAgY29tcGlsZUJpbmFyeU1h
dGhJQzxKSVRNdWxHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBu
b25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE1Myw3ICsyMTUzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBlbmFt
ZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZnVu
Y3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1ZSAm
JiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+Ojp0
eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZVVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZVVuYXJ5TWF0aElDKEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAKQEAg
LTIyMzksNyArMjIzOSw3IEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2Vu
ZXJhdG9yLCB0eXBlbmFtZSBGdW5jMSwgdHlwZW5hbWUgRnVuYzIsCiAgICAgICAgIHR5cGVuYW1l
ID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X3BvaW50ZXI8RnVuYzE+Ojp0eXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMyPjo6dHlwZT46OnZhbHVlPj4KLSAgICB2b2lkIGNv
bXBpbGVCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMx
IHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZv
aWQgY29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEg
cmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCiAgICAgewog
ICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICAKQEAgLTI0MDYsNyArMjQwNiw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sg
PSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICBCaW5hcnlBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2Zp
bGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgYXV0byByZXBhdGNoaW5n
RnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICAgICAgYXV0byBu
b25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgICAgIGNv
bXBpbGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hp
bmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTMwNzIsNyArMzA3Miw3IEBA
IHByaXZhdGU6CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgQ29kZUJsb2NrKiBiYXNl
bGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0g
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPnVuYXJ5QXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5j
dGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7CiAgICAgICAgIGNvbXBpbGVV
bmFyeU1hdGhJQzxKSVROZWdHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0
aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXgg
MGQyMmZkMGMyOGNmNWJjMTY2NDNkMWExZGNmYjM2NjkwNjNlY2RjYi4uNDI3ZTlhZWRmNTk4NmE0
NmRkMWZiZDQ1YWYwNTJlZGIyNzkzNTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC05
MTksNyArOTE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIEl0IHdpbGwgZ2l2ZSB0
aGUgc2xvdyBwYXRoIHRoZSBzYW1lIHZhbHVlIHJlYWQgYnkgdGhlIGZhc3QgcGF0aC4KICAgICAg
ICAgR2V0UHV0SW5mbyBjb3BpZWRHZXRQdXRJbmZvKE9wUHV0VG9TY29wZSk7CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEJpbmFyeU9wPgotICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgY29w
aWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wKTsKKyAgICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFy
aXRoUHJvZmlsZShCaW5hcnlPcCk7CiAKICAgICAgICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0
ZXI7CiAKQEAgLTkzOSw3ICs5MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9y
PFN3aXRjaFJlY29yZD4gbV9zd2l0Y2hlczsKIAogICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCB1
bnNpZ25lZD4gbV9jb3BpZWRHZXRQdXRJbmZvczsKLSAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwg
QmluYXJ5QXJpdGhQcm9maWxlPiBtX2NvcGllZEFyaXRoUHJvZmlsZXM7CisgICAgICAgIEhhc2hN
YXA8dWludDY0X3QsIEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0aFByb2ZpbGVzOwogCiAgICAg
ICAgIEp1bXBMaXN0IG1fZXhjZXB0aW9uQ2hlY2tzOwogICAgICAgICBKdW1wTGlzdCBtX2V4Y2Vw
dGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQWRkR2VuZXJhdG9yLmNwcAppbmRleCA3NDBiMmVkOGJkNzJlNTZhZGQ5OWYwNzgw
YTQzNTJlNGI3OWJiYTQ3Li42MjdhZjI3ODdlMGI2OGEzZGQwZWIzOTIzNDFiZjUyZDRiNTQwMTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBA
IC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1
bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0
aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0
byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBl
KCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3Myw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBK
SVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNH
CiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsK
IH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRBZGRHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBM
aXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAg
ICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCmluZGV4IDY3NWNmOTNjOTA1NGE2
NDIzNTI5NjRjZWJkYmU2ZTZhZGVhZjJjZWYuLjRkYzM0YTJmNWI2Yzc0YTFhZmUxYjVmMjgxZWZi
MGI2N2Q2NWIyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRk
R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0
b3IuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghbV9sZWZ0T3Bl
cmFuZC5pc0NvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9wZXJhbmQuaXNDb25zdEludDMyKCkpOwog
ICAgIH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhl
bHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUq
KTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRo
SnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2Zp
bGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVs
cGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOworICAg
IGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlz
dCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogICAg
IHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIGxl
ZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9
CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVy
YW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdElu
dDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGht
ZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmlu
ZGV4IDY3Zjk5ODZhNjM4YWRhZWZjZTNiY2I4OWNjY2Q4MTk5MjI4NzQ5NDkuLmY0MjBhZTk5ZDBl
NTc3YTg1MmU0NmQ1NDZhY2Y0N2E2MzJmNDEwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRhKG1fY29kZUJs
b2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5t
X2FyaXRoUHJvZmlsZTsKICAgICBKSVROZWdJQyogbmVnYXRlSUMgPSBtX2NvZGVCbG9jay0+YWRk
SklUTmVnSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1
cnJlbnRJbnN0cnVjdGlvbiwgbmVnYXRlSUMpOwogICAgIGVtaXRNYXRoSUNGYXN0PE9wTmVnYXRl
PihuZWdhdGVJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7CkBAIC02MzMsOSArNjMzLDE0IEBAIHZvaWQgSklU
OjplbWl0X29wX3Vyc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0UmlnaHRTaGlmdEZhc3RQYXRoKGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BfdXJzaGlm
dCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgc3RhdGljIE9wZXJhbmRUeXBlcyBnZXRPcGVyYW5kVHlw
ZXMoY29uc3QgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCit7CisgICAgcmV0dXJuIE9wZXJh
bmRUeXBlcyhhcml0aFByb2ZpbGUubGhzUmVzdWx0VHlwZSgpLCBhcml0aFByb2ZpbGUucmhzUmVz
dWx0VHlwZSgpKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcEFkZD4oKS5tZXRhZGF0YShtX2NvZGVC
bG9jaykubV9hcml0aFByb2ZpbGU7CisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAm
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEFkZD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9h
cml0aFByb2ZpbGU7CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9jb2RlQmxvY2stPmFkZEpJVEFk
ZElDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGFkZElDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcEFkZD4oYWRkSUMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZCwgb3BlcmF0aW9uVmFs
dWVBZGQpOwpAQCAtNjgwLDcgKzY4NSw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRV
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjCiAKICAg
ICBib29sIGdlbmVyYXRlZElubGluZUNvZGUgPSBtYXRoSUMtPmdlbmVyYXRlSW5saW5lKCp0aGlz
LCBtYXRoSUNHZW5lcmF0aW9uU3RhdGUpOwogICAgIGlmICghZ2VuZXJhdGVkSW5saW5lQ29kZSkg
ewotICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0
aFByb2ZpbGUoKTsKKyAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMt
PmFyaXRoUHJvZmlsZSgpOwogICAgICAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQ
cm9maWxpbmcoKSkKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KHByb2ZpbGVk
RnVuY3Rpb24sIHJlc3VsdFJlZ3MsIHNyY1JlZ3MsIGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGVs
c2UKQEAgLTcwMyw3ICs3MDgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdl
bmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgTgogdm9pZCBKSVQ6
OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmls
ZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxlZEZ1bmN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBjb3BpZWRBcml0aFByb2ZpbGUoYnl0ZWNv
ZGUpOworICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRBcml0
aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zm
c2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBv
cDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTcyMiw4ICs3MjcsOCBAQCB2b2lkIEpJ
VDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29u
c3QgSW5zdHJ1Y3Rpb24qCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogI2VuZGlm
CiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChhcml0aFByb2ZpbGUubGhzUmVzdWx0
VHlwZSgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYXJpdGhQcm9maWxlLnJo
c1Jlc3VsdFR5cGUoKSk7CisgICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmly
c3QoKSk7CisgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsK
IAogICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDEpKQogICAgICAgICBsZWZ0T3BlcmFu
ZC5zZXRDb25zdEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDEpKTsKQEAgLTc1Myw3ICs3
NTgsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRv
cj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKG9wMSwgbGVmdFJlZ3MpOwogICAgICAgICBlbHNlIGlmIChyaWdodE9wZXJhbmQu
aXNDb25zdCgpKQogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIHJpZ2h0
UmVncyk7Ci0gICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElD
LT5hcml0aFByb2ZpbGUoKTsKKyAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBt
YXRoSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgICAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3Vs
ZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KHBy
b2ZpbGVkRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdodFJlZ3MsIGFyaXRoUHJv
ZmlsZSk7CiAgICAgICAgIGVsc2UKQEAgLTc5Myw3ICs3OTgsNyBAQCB2b2lkIEpJVDo6ZW1pdE1h
dGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVj
dGlvbiogYwogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAg
IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgp
OworICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUo
KTsKICAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAg
ICAgICBpZiAobWF0aElDR2VuZXJhdGlvblN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKICAg
ICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uV2l0aFJlc3VsdChyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VKTWljPihwcm9m
aWxlZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIHNyY1JlZ3MsIFRydXN0ZWRJbW1QdHIo
bWF0aElDKSk7CkBAIC04MjUsNyArODMwLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJ
VEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAg
IG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKIAogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSBjb25zaXN0ZW50QXJpdGhQcm9maWxlID0gY29waWVkQXJpdGhQcm9maWxlKGJ5
dGVjb2RlKTsKKyAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29waWVk
QXJpdGhQcm9maWxlKGJ5dGVjb2RlKSk7CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0
Lm9mZnNldCgpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBp
bnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CkBAIC04NDAsOCArODQ1LDggQEAgdm9p
ZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMs
IGNvbnN0IEluc3RydWN0aW9uKgogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVn
czsKICNlbmRpZgogICAgIAotICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGNvbnNpc3Rl
bnRBcml0aFByb2ZpbGUubGhzUmVzdWx0VHlwZSgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdo
dE9wZXJhbmQoY29uc2lzdGVudEFyaXRoUHJvZmlsZS5yaHNSZXN1bHRUeXBlKCkpOworICAgIFNu
aXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVy
YW5kIHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29u
c3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVy
YW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC04NTksNyArODY0LDcgQEAgdm9pZCBKSVQ6OmVtaXRN
YXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3Ry
dWN0aW9uKgogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUo
KTsKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxl
KCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAg
ICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCiAg
ICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbldpdGhSZXN1bHQoYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0VKSk1pYz4ocHJvZmls
ZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBUcnVz
dGVkSW1tUHRyKG1hdGhJQykpOwpAQCAtODg3LDE3ICs4OTIsMTkgQEAgdm9pZCBKSVQ6OmVtaXRN
YXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3Ry
dWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BEaXY+KCk7Ci0gICAgQmluYXJ5QXJpdGhQcm9maWxlIGNvbnNpc3RlbnRBcml0aFByb2Zp
bGUgPSBjb3BpZWRBcml0aFByb2ZpbGUoYnl0ZWNvZGUpOworICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIGludCByZXN1bHQgPSBieXRlY29k
ZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9saHMub2Zmc2V0KCk7
CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwogCiAjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMobWV0YWRhdGEu
bV9hcml0aFByb2ZpbGUpOwogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1ZVJlZ3Mo
cmVnVDApOwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxKTsK
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSByZWdUMjsKICNlbHNlCisgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFu
ZFR5cGVzKG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlKTsKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVn
cyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdz
ID0gSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gbGVmdFJlZ3M7CkBAIC05MDUsMTIgKzkxMiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogICAgIEZQUlJl
ZyBzY3JhdGNoRlBSID0gZnBSZWdUMjsKIAotICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbnVsbHB0cjsKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxw
dHI7CiAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgYXJpdGhQcm9maWxl
ID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEaXY+KCkubWV0YWRhdGEobV9jb2RlQmxvY2sp
Lm1fYXJpdGhQcm9maWxlOwogCi0gICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQoY29uc2lz
dGVudEFyaXRoUHJvZmlsZS5saHNSZXN1bHRUeXBlKCkpOwotICAgIFNuaXBwZXRPcGVyYW5kIHJp
Z2h0T3BlcmFuZChjb25zaXN0ZW50QXJpdGhQcm9maWxlLnJoc1Jlc3VsdFR5cGUoKSk7CisgICAg
U25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmlyc3QoKSk7CisgICAgU25pcHBldE9w
ZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsKIAogICAgIGlmIChpc09wZXJhbmRD
b25zdGFudEludChvcDEpKQogICAgICAgICBsZWZ0T3BlcmFuZC5zZXRDb25zdEludDMyKGdldE9w
ZXJhbmRDb25zdGFudEludChvcDEpKTsKQEAgLTk1Miw3ICs5NTksNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBK
SVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
Ci0gICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0
aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7Cisg
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxP
cE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTXVs
SUMqIG11bElDID0gbV9jb2RlQmxvY2stPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7CiAgICAg
bV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG11bElDKTsKICAg
ICBlbWl0TWF0aElDRmFzdDxPcE11bD4obXVsSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0
aW9uVmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWwpOwpAQCAtOTY4LDcgKzk3NSw3
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAKIHZvaWQgSklUOjplbWl0X29wX3N1Yihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+KCkubWV0
YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+KCkubWV0YWRhdGEobV9j
b2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVFN1YklDKiBzdWJJQyA9IG1fY29kZUJs
b2NrLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJ
Qy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBzdWJJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BT
dWI+KHN1YklDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQs
IG9wZXJhdGlvblZhbHVlU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURGl2R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2
R2VuZXJhdG9yLmNwcAppbmRleCBiOGM0Nzk4NmZhMTQ0MzdhZDc2NzkyMWVmMzYyZDk0MTBjZTg3
NDk2Li42NmUxYmUxNGE4ZGVkNTIxMzEyOTE5NDdjZDI0M2U1NWI3MzNmODk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCkBAIC0xMzAsNyArMTMw
LDcgQEAgdm9pZCBKSVREaXZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQpCiAgICAgbm90RG91YmxlWmVyby5saW5rKCZqaXQpOwogI2VuZGlmCiAgICAgaWYgKG1f
YXJpdGhQcm9maWxlKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihCaW5hcnlBcml0aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAg
ICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpzcGVj
aWFsRmFzdFBhdGhCaXQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhtX2FyaXRoUHJv
ZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAgICAgaml0LmJveERvdWJsZShtX2xlZnRGUFIsIG1f
cmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRE
aXZHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9y
LmgKaW5kZXggNzA4ZGIxMGQ2Y2Q4YjY3YzI2MzNmZDliOThhNzg2MmFmNmFkMzU4MS4uODM5NjY3
Nzk0M2ZkNjg5NmE0ZmRlNjkzOGE4YzAzYmNlOWI1NjExYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICBKSVREaXZHZW5lcmF0b3IoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQsIFNuaXBwZXRPcGVy
YW5kIHJpZ2h0T3BlcmFuZCwKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVn
cyBsZWZ0LCBKU1ZhbHVlUmVncyByaWdodCwKICAgICAgICAgRlBSUmVnIGxlZnRGUFIsIEZQUlJl
ZyByaWdodEZQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEZQUlJlZyBzY3JhdGNoRlBSLAotICAgICAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCisgICAgICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cikKICAgICAgICAgOiBtX2xlZnRPcGVy
YW5kKGxlZnRPcGVyYW5kKQogICAgICAgICAsIG1fcmlnaHRPcGVyYW5kKHJpZ2h0T3BlcmFuZCkK
ICAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAg
ICAgR1BSUmVnIG1fc2NyYXRjaEdQUjsKICAgICBGUFJSZWcgbV9zY3JhdGNoRlBSOwogICAgIGJv
b2wgbV9kaWRFbWl0RmFzdFBhdGggeyBmYWxzZSB9OwotICAgIEJpbmFyeUFyaXRoUHJvZmlsZSog
bV9hcml0aFByb2ZpbGU7CisgICAgQXJpdGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKIAogICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3QgbV9lbmRKdW1wTGlzdDsKICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0IG1fc2xvd1BhdGhKdW1wTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgKaW5kZXggNTdhODFlYzc5YzIyNmIwZjQ1NTFjNjBjZDFjMDg5NmNhNTkxN2EzYi4u
Mzk1OWI4ZDUwODhjNGZhNzA3MGY0ZTU4NmFiMDhjNzU0M2YxZDI4MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTcxNywxMyArNzE3LDEzIEBAIEFMV0FZU19JTkxJ
TkUgR2V0UHV0SW5mbyBKSVQ6OmNvcGllZEdldFB1dEluZm8oT3BQdXRUb1Njb3BlIGJ5dGVjb2Rl
KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLUFMV0FZU19JTkxJTkUgQmluYXJ5
QXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVjb2RlKQor
QUxXQVlTX0lOTElORSBBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5
T3AgYnl0ZWNvZGUpCiB7CiAgICAgdWludDY0X3Qga2V5ID0gKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihCaW5hcnlPcDo6b3Bjb2RlSUQpICsgMSkgPDwgMzIgfCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
Ynl0ZWNvZGUubV9tZXRhZGF0YUlEKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jb3BpZWRBcml0
aFByb2ZpbGVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlcmF0b3IgIT0gbV9jb3BpZWRBcml0aFBy
b2ZpbGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
aykubV9hcml0aFByb2ZpbGU7CisgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBtX2NvcGllZEFy
aXRoUHJvZmlsZXMuYWRkKGtleSwgYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gYXJpdGhQcm9m
aWxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKaW5kZXggODQ2NDYyMmE2
ZDg0NTM5NTM5ZTEwY2JlM2FhNTc3ODIxYjhkMjVjYS4uNTY0NWU0MmRlZmZiNGU2ZmQxY2ZmMjNk
MTc2ZjU5ODZlNDk5ZjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRNYXRoSUMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCkBA
IC01MiwxMSArNTIsMTEgQEAgc3RydWN0IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSB7CiAKICNkZWZp
bmUgRU5BQkxFX01BVEhfSUNfU1RBVFMgMAogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9y
VHlwZSwgdHlwZW5hbWUgQXJpdGhQcm9maWxlVHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBHZW5l
cmF0b3JUeXBlLCBib29sKCppc1Byb2ZpbGVFbXB0eSkoQXJpdGhQcm9maWxlJik+CiBjbGFzcyBK
SVRNYXRoSUMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEpJ
VE1hdGhJQyhBcml0aFByb2ZpbGVUeXBlKiBhcml0aFByb2ZpbGUpCisgICAgSklUTWF0aElDKEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogICAgICAgICA6IG1fYXJpdGhQcm9maWxlKGFyaXRo
UHJvZmlsZSkKICAgICB7CiAgICAgfQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKTsK
IAogICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKLSAgICAgICAgICAgIGlmIChtX2FyaXRo
UHJvZmlsZS0+aXNPYnNlcnZlZFR5cGVFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoaXNQcm9m
aWxlRW1wdHkoKm1fYXJpdGhQcm9maWxlKSkgewogICAgICAgICAgICAgICAgIC8vIEl0IGxvb2tz
IGxpa2UgdGhlIE1hdGhJQyBoYXMgeWV0IHRvIGV4ZWN1dGUuIFdlIGRvbid0IHdhbnQgdG8gZW1p
dCBjb2RlIGluIHRoaXMKICAgICAgICAgICAgICAgICAvLyBjYXNlIGZvciBhIGNvdXBsZSByZWFz
b25zLiBGaXJzdCwgdGhlIG9wZXJhdGlvbiBtYXkgbmV2ZXIgZXhlY3V0ZSwgc28gaWYgd2UgZG9u
J3QgZW1pdAogICAgICAgICAgICAgICAgIC8vIGNvZGUsIGl0J3MgYSB3aW4uIFNlY29uZCwgaWYg
dGhlIG9wZXJhdGlvbiBkb2VzIGV4ZWN1dGUsIHdlIGNhbiBlbWl0IGJldHRlciBjb2RlCkBAIC0y
MjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgICAgICBtX3Nsb3dQYXRoU3RhcnRMb2NhdGlvbiA9
IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihzdGF0ZS5zbG93UGF0aFN0
YXJ0KTsKICAgICB9CiAKLSAgICBBcml0aFByb2ZpbGVUeXBlKiBhcml0aFByb2ZpbGUoKSBjb25z
dCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQorICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KIAogI2lmIEVOQUJMRShNQVRI
X0lDX1NUQVRTKQogICAgIHNpemVfdCBtX2dlbmVyYXRlZENvZGVTaXplIHsgMCB9OwpAQCAtMjM2
LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZVR5
cGUqIG1fYXJpdGhQcm9maWxlOworICAgIEFyaXRoUHJvZmlsZSogbV9hcml0aFByb2ZpbGU7CiAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2NvZGU7CiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9pbmxpbmVTdGFydDsKICAg
ICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGluZUVuZDsKQEAgLTI0
NiwxNSArMjQ2LDE1IEBAIHB1YmxpYzoKICAgICBHZW5lcmF0b3JUeXBlIG1fZ2VuZXJhdG9yOwog
fTsKIAotaW5saW5lIGJvb2wgaXNCaW5hcnlQcm9maWxlRW1wdHkoQmluYXJ5QXJpdGhQcm9maWxl
JiBhcml0aFByb2ZpbGUpCitpbmxpbmUgYm9vbCBpc0JpbmFyeVByb2ZpbGVFbXB0eShBcml0aFBy
b2ZpbGUmIGFyaXRoUHJvZmlsZSkKIHsKICAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2Vy
dmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpOwogfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFzcyBKSVRC
aW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRo
UHJvZmlsZT4geworY2xhc3MgSklUQmluYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5l
cmF0b3JUeXBlLCBpc0JpbmFyeVByb2ZpbGVFbXB0eT4gewogcHVibGljOgotICAgIEpJVEJpbmFy
eU1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRN
YXRoSUM8R2VuZXJhdG9yVHlwZSwgQmluYXJ5QXJpdGhQcm9maWxlPihhcml0aFByb2ZpbGUpCisg
ICAgSklUQmluYXJ5TWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgICAgICA6
IEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc0JpbmFyeVByb2ZpbGVFbXB0eT4oYXJpdGhQcm9m
aWxlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMjY0LDE1ICsyNjQsMTUgQEAgdHlwZWRlZiBKSVRC
aW5hcnlNYXRoSUM8SklUTXVsR2VuZXJhdG9yPiBKSVRNdWxJQzsKIHR5cGVkZWYgSklUQmluYXJ5
TWF0aElDPEpJVFN1YkdlbmVyYXRvcj4gSklUU3ViSUM7CiAKIAotaW5saW5lIGJvb2wgaXNVbmFy
eVByb2ZpbGVFbXB0eShCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKK2lubGluZSBi
b29sIGlzVW5hcnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAg
ICAgcmV0dXJuIGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiB9CiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVFVuYXJ5TWF0aElDIDog
cHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBVbmFyeUFyaXRoUHJvZmlsZT4geworY2xh
c3MgSklUVW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzVW5h
cnlQcm9maWxlRW1wdHk+IHsKIHB1YmxpYzoKLSAgICBKSVRVbmFyeU1hdGhJQyhVbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQotICAgICAgICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBl
LCBVbmFyeUFyaXRoUHJvZmlsZT4oYXJpdGhQcm9maWxlKQorICAgIEpJVFVuYXJ5TWF0aElDKEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgICAgICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JU
eXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5Pihhcml0aFByb2ZpbGUpCiAgICAgewogICAgIH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5kZXgg
Y2Y2YmFhNTJmNjE4N2MyZWM5NjQzOTJjZDRkN2EyMGU5N2RkZGVmMy4uODNkMjkzYjYyNTI0OTdi
YmM0MjdhZjk5ZTFiOGQ3Mjc1NzA3Y2E2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTXVsR2VuZXJhdG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxp
bmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0
IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJ
Q0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KQogewogICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2
ZWRUeXBlIGxocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtODksNyArODksNyBA
QCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShD
Q2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1
bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBl
bmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29u
c3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2Zp
bGluZykKK2Jvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNo
R1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0
LnBheWxvYWRHUFIoKSk7CkBAIC0yMDUsMTggKzIwNSwxOCBAQCBib29sIEpJVE11bEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdAogCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3ROZWdhdGl2ZVplcm8gPSBqaXQu
YnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1bHQucGF5bG9hZEdQUigpLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChuZWdhdGl2ZVplcm9CaXRzKSk7CiAKLSAgICAgICAg
aml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpO
ZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxl
LT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNv
bHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZl
WmVyby5saW5rKCZqaXQpOwotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAg
ICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk5l
Z1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOwogCiAgICAgICAgIGppdC5tb3ZlKG1fcmVzdWx0LnBheWxvYWRH
UFIoKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LnVyc2hpZnRQdHIoQ0NhbGxIZWxwZXJz
OjpJbW0zMig1MiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBl
cnM6OkltbTMyKDB4N2ZmKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIG5vSW50NTJPdmVyZmxvdyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFu
T3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkp
OwogCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpbmFyeUFy
aXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNz
KGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxs
SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7
CiAgICAgICAgIG5vSW50NTJPdmVyZmxvdy5saW5rKCZqaXQpOwogCiAgICAgICAgIGRvbmUubGlu
aygmaml0KTsKQEAgLTIyNywxOCArMjI3LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAg
ICAgICAgIG5vdE5lZ2F0aXZlWmVyby5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6
Tm90RXF1YWwsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMCkpKTsKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1bHQudGFnR1BSKCksIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKG5lZ2F0aXZlWmVyb0JpdHMgPj4gMzIpKSk7CiAKLSAgICAgICAgaml0Lm9yMzIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpOZWdaZXJvRG91
YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJl
c3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5saW5r
KCZqaXQpOwotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5h
cnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRl
QWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3Iz
MihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3Vi
bGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NP
ZkJpdHMoKSkpOwogCiAgICAgICAgIGppdC5tb3ZlKG1fcmVzdWx0LnRhZ0dQUigpLCBtX3NjcmF0
Y2hHUFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyIC0g
MzIpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpJbW0z
MigweDdmZiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub0lu
dDUyT3ZlcmZsb3cgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpMZXNzVGhhbk9yRXF1YWws
IG1fc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHg0MzEpKTsKICAgICAg
ICAgCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpbmFyeUFy
aXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNz
KGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxs
SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7
CiAKICAgICAgICAgZW5kSnVtcExpc3QuYXBwZW5kKG5vSW50NTJPdmVyZmxvdyk7CiAgICAgICAg
IGlmIChtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQudGFnR1BSKCkgfHwgbV9zY3JhdGNoR1BSID09
IG1fcmVzdWx0LnBheWxvYWRHUFIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUTXVsR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11
bEdlbmVyYXRvci5oCmluZGV4IDYwODc3OTY2ODVhOTRhODY1YmM3YWE3MjE1YjFmOGViMDcyNmQy
ZDEuLjM2ZDI2ZWExMjRlMzljMTYwNWQ0ZTYyNmNjMDNmN2VlN2RkNjAxMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaApAQCAtNTYsOCArNTYsOCBAQCBw
dWJsaWM6CiAgICAgICAgIEFTU0VSVCghbV9sZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQz
MigpIHx8ICFtX3JpZ2h0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpKTsKICAgICB9CiAK
LSAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwg
TWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKik7Ci0gICAg
Ym9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93SnVtcExpc3QsIGNv
bnN0IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAg
SklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJ
Q0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJh
dGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1w
TGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBBcml0aFBy
b2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNM
ZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0
dXJuIGxlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9v
bCBpc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5k
KSB7IHJldHVybiByaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwCmluZGV4IGNlZWJlMzkw
OTRkOWE2MmU4Yzg5Zjg1NTYzMzdhM2Q5Y2Y1YzEyOWQuLjkyYzI5ZGQ2MzBhOTdjOTlhNmI0Yzk4
MTIwNGNmMmViNWMyYTZlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTmVnR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5l
Z0dlbmVyYXRvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJ
VE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxs
SGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dl
bmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAg
IEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2Ny
YXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwpAQCAtNDUsNyArNDUsNyBAQCBKSVRNYXRo
SUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBl
cnMmIGppdCwgTWF0aElDRwogICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIu
CiAgICAgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkVHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50
MzIoKTsKICAgICBpZiAoYXJpdGhQcm9maWxlKQotICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJp
dGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKTsKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFy
aXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
b2JzZXJ2ZWRUeXBlcy5pc0VtcHR5KCksICJXZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2VuZXJh
dGUgYW55dGhpbmcgaWYgd2UgZG8gbm90IGhhdmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYgKG9i
c2VydmVkVHlwZXMuaXNPbmx5Tm9uTnVtYmVyKCkpCkBAIC04Miw3ICs4Miw3IEBAIEpJVE1hdGhJ
Q0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVy
cyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJh
dGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0
LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCitib29s
IEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3Ny
Yy5wYXlsb2FkR1BSKCkpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQucGF5
bG9hZEdQUigpKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAog
I2VuZGlmCiAgICAgLy8gVGhlIGZsYWdzIG9mIEFyaXRoTmVnYXRlIGFyZSBiYXNpYyBpbiBERkcu
CiAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGtub3cgaWYgd2UgZXZlciBwcm9kdWNlZCBhIG51bWJl
ci4KLSAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRo
UHJvZmlsZS0+YXJnT2JzZXJ2ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+
ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRo
UHJvZmlsZSAmJiAhYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAm
JiAhYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmls
ZS0+ZW1pdFNldERvdWJsZShqaXQpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKaW5kZXggNzg3YjcwNzY4MjkzMTk0MmY1
Y2QzYmMyN2E5MGQ5ZjU2ZTNmOGUxMC4uOGEwYzJkNTE3ZDZmNDIxNzAzZTU3NzliNjVhNmJkOTIy
MTVmYzU4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5o
CkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3NjcmF0Y2hHUFIoc2NyYXRj
aEdQUikKICAgICB7IH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBVbmFyeUFyaXRo
UHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
c2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVt
aXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShD
Q2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBBcml0aFByb2ZpbGUq
KTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRo
SnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7
CiAKIHByaXZhdGU6CiAgICAgSlNWYWx1ZVJlZ3MgbV9yZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAxODc5NDU5ZGIzZjUxYzhjNTIzZTgw
Zjc1OWI5MzMyMzZlMjgzZGQ4Li42Mzk0NjNjOTllOWZkYmI0Nzg5MGVmNjQ5MGM4YjJiMWI1ZWVm
NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTI1NTQsNyArMjU1NCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHVu
cHJvZmlsZWRBZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0FkZChleGVjLCBvcDEsIG9wMikpOwogfQogCi1BTFdBWVNfSU5MSU5F
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZEFkZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFy
aXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgcHJvZmlsZWRBZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmls
ZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwpAQCAtMjU3NCw3ICsyNTc0LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGUKICAgICByZXR1cm4gdW5wcm9maWxlZEFkZChleGVjLCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUFkZFByb2ZpbGVkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmls
ZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRBZGQoZXhlYywgZW5jb2RlZE9w
MSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7CkBAIC0yNTg4LDcgKzI1ODgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6
ZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7
CiAKLSAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFBy
b2ZpbGUoKTsKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFBy
b2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9i
c2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0g
b3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemU7CkBAIC0yNjA5LDcgKzI2MDksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRO
b09wdGltaXplKEV4ZWNTdGF0ZSogZXhlYwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRBZGQoZXhlYywgZW5jb2RlZE9w
MSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9CkBAIC0yNjIzLDcgKzI2MjMsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemUoRXhl
Y1N0YXRlKiBleGVjLCBFbmNvZGVkSgogICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDIpOwogCiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25W
YWx1ZUFkZE5vT3B0aW1pemU7Ci0gICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpKQorICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5v
YnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKICAgICBhZGRJQy0+Z2VuZXJhdGVPdXRPZkxpbmUo
ZXhlYy0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI2NTUsNyArMjY1
NSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHVucHJvZmlsZWRNdWwo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc011bChleGVjLCBvcDEsIG9wMikpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBwcm9maWxlZE11bChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYg
YXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCitB
TFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZE11bChFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRS
SFNUeXBlcyA9IHRydWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNjkzLDcgKzI2OTMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSgogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOwogCiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11
bE5vT3B0aW1pemU7Ci0gICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
bXVsSUMtPmFyaXRoUHJvZmlsZSgpKQorICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZl
TEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKTsKICAgICBtdWxJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoZXhlYy0+Y29kZUJsb2Nr
KCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI3MDQsNyArMjcwNCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKCiAgICAgcmV0dXJuIHVucHJvZmlsZWRNdWwoZXhlYywgZW5jb2RlZE9w
MSwgZW5jb2RlZE9wMik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVNdWxQcm9maWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11
bFByb2ZpbGVkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKQEAgLTI3MTgsNyArMjcxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOwogCi0gICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBt
dWxJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBt
dWxJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgYXJp
dGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFu
dCA9IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplOwpAQCAtMjczNiw3ICsyNzM2
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2Zp
bGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgQmluYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCk7CisgICAg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAg
QVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVkTXVsKGV4ZWMsIGVuY29k
ZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQpAQCAtMjc2MCwxNCArMjc2MCwx
NCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkTmVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoLW51bWJlcikpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBwcm9maWxlZE5lZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcGVyYW5kLCBVbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQorQUxXQVlTX0lOTElO
RSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWROZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJh
bmQpOwotICAgIGFyaXRoUHJvZmlsZS5vYnNlcnZlQXJnKG9wZXJhbmQpOworICAgIGFyaXRoUHJv
ZmlsZS5vYnNlcnZlTEhTKG9wZXJhbmQpOwogICAgIAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0g
b3BlcmFuZC50b1ByaW1pdGl2ZShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI3OTEsNyArMjc5MSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1CiAgICAgcmV0dXJuIHVucHJvZmlsZWROZWdhdGUoZXhlYywgb3BlcmFuZCk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9m
aWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIFVuYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBv
cGVyYW5kLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWROZWdhdGUoZXhlYywgb3BlcmFuZCwgKmFyaXRo
UHJvZmlsZSk7CkBAIC0yODA1LDkgKzI4MDUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZQog
ICAgIAogICAgIEpTVmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFu
ZCk7CiAKLSAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRo
UHJvZmlsZSgpOworICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRo
UHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwotICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKKyAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFu
ZCk7CiAgICAgbmVnSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGV4ZWMtPmNvZGVCbG9jaygpLCBvcGVy
YXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKTsKIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpA
QCAtMjgzOCw4ICsyODM4LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZU9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2QKIAogICAgIEpTVmFs
dWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFuZCk7CiAKLSAgICBpZiAo
VW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKSkK
LSAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlQXJnKG9wZXJhbmQpOworICAgIGlmIChBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKSkKKyAgICAgICAg
YXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOwogICAgIG5lZ0lDLT5nZW5lcmF0ZU91
dE9mTGluZShleGVjLT5jb2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogCiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCkBAIC0yODY1LDcgKzI4NjUsNyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkU3ViKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWIoZXhlYywgb3AxLCBv
cDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRT
dWIoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxl
LCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCitBTFdBWVNfSU5MSU5F
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZFN1YihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5
cGVzID0gdHJ1ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKQEAgLTI4ODgsNyArMjg4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVTdWIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlCiAgICAgcmV0
dXJuIHVucHJvZmlsZWRTdWIoZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7
CiAKQEAgLTI5MDQsNyArMjkwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVTdWJPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKCiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICBhdXRvIG5vbk9wdGlt
aXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6ZTsKLSAgICBpZiAoQmluYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCkpCisgICAg
aWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpKQog
ICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIHN1YklDLT5nZW5l
cmF0ZU91dE9mTGluZShleGVjLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVWYXJpYW50KTsKIApA
QCAtMjkyOCw3ICsyOTI4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLAogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CiAKLSAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFBy
b2ZpbGUoKTsKKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFBy
b2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9i
c2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMikpOwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9u
VmFsdWVTdWJQcm9maWxlZE5vT3B0aW1pemU7CkBAIC0yOTQ2LDcgKzI5NDYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXpl
KEV4ZWNTdGF0ZSogZXhlYwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRTdWIodm0sIGV4ZWMsIGVuY29kZWRPcDEsIGVu
Y29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAppbmRleCAzYjZhYWYwNGZhMGU0ODgwZTk2NTYwZDA4YWQxZWJiNGFhNjIx
Y2RmLi45ZGI2NzM0MTkyM2RkZTExNTIyNGUyMGZkNWM4MDVhN2NkNzhiMjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzgsOCArMzgsNiBAQCB0eXBl
ZGVmIGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAgICAgCiBjbGFzcyBBcnJheUFsbG9jYXRpb25Q
cm9maWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOwotY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7Ci1j
bGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCdXR0ZXJmbHk7CiBjbGFzcyBDYWxsRnJh
bWU7CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02Niw2ICs2NCw3IEBAIGNsYXNzIFdhdGNocG9p
bnRTZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIHN0cnVj
dCBJbnN0cnVjdGlvbjsKK3N0cnVjdCBBcml0aFByb2ZpbGU7CiAKIHVzaW5nIEV4ZWNTdGF0ZSA9
IENhbGxGcmFtZTsKIApAQCAtODAsNyArNzksNyBAQCB0eXBlZGVmIGNoYXIqIFVudXNlZFB0cjsK
ICAgICBBOiBKU0FycmF5KgogICAgIEFhcDogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSoKICAgICBB
cDogQXJyYXlQcm9maWxlKgotICAgIEFycDogQmluYXJ5QXJpdGhQcm9maWxlKgorICAgIEFycDog
QXJpdGhQcm9maWxlKgogICAgIEI6IEJ1dHRlcmZseSoKICAgICBCeTogQnlWYWxJbmZvKgogICAg
IEM6IEpTQ2VsbCoKQEAgLTE0NiwxMyArMTQ1LDEzIEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUg
KEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKWikoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9F
SkMpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwqKTsKIHR5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKQSkoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9P
UEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VBUFopKEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCB2b2lk
KiwgaW50MzJfdCk7Ci10eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJ
VE9wZXJhdGlvbl9FSkFycCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEJpbmFyeUFyaXRo
UHJvZmlsZSopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRP
cGVyYXRpb25fRUpBcnApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBBcml0aFByb2ZpbGUq
KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9u
X0VKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkop
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkpKKShFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkpK
KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFU
SU9OICpKX0pJVE9wZXJhdGlvbl9FSkpBcCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKTsKLXR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJ
VF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkFycCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKK3R5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkFycCkoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBBcml0aFByb2ZpbGUqKTsKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkJ5
KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyop
OwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25f
RUpKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHZvaWQq
KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9u
X0VKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCopOwpAQCAtNDgzLDcgKzQ4
Miw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0lmRXhjZXB0aW9uSXNV
bmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKEV4CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW5zdGFuY2VPZkN1c3RvbShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0lu
c3RhbmNlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVBZGQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRo
UHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVBZGRQcm9maWxlZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmls
ZWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5U
RVJOQUw7CkBAIC00OTMsMTMgKzQ5MiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdQogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemUoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVNdWxQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRo
UHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQXJpdGhOZWdhdGUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCk7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwgVW5hcnlBcml0aFByb2ZpbGUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBvcGVyYW5kLCBBcml0aFByb2ZpbGUqKTsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9w
dGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJ
QyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9w
dGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJ
QyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YihFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlU3ViUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKikgV1RGX0lOVEVS
TkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2Zp
bGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJ
QyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVTdWJOb09wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1p
emUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAKaW5kZXggN2IxYThiODE5ZmVlOGE5NjdlOGEw
N2M4NGI3NGMxMGJjY2RmZDAyNC4uNzk1YzI3NTg0YzA0MjA2ZGIxMjk0MjU1Y2NlYTMxZTlmYmNj
YWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElDSW5saW5l
UmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQs
IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2Vu
ZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3Rh
dGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdlIGRlZmF1
bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9ic2VydmVk
VHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzgsNyArNzgsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1
bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0
aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBw
ZXQ7CiB9CiAKLWJvb2wgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVs
cGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUU3ViR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhK
dW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1p
dFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcp
OwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAppbmRleCAzNDkxYTgzZmVk
YTQwNDM3OGJiOTE2NjRjNWUwNTNlMmNlOTE4NWY2Li41NjFmNjMzNGFlM2NhNGI4ZTg5NDIzNzBi
ZjdkYzRhMThkZDU1MmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN1YkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2Vu
ZXJhdG9yLmgKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEZQ
UihzY3JhdGNoRlBSKQogICAgIHsgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVy
YXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEJp
bmFyeUFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJh
dGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQXJp
dGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIEND
YWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQ
cm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQo
U25pcHBldE9wZXJhbmQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdo
dE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBjMDM0MWM5NTZj
ZTg3OWMyNTM0ZmU4MDU0YjFhNzc3NGM0NjhlZTBiLi5iZGEzMDhjODRkMjdmYWY5N2E2MDYyZTE3
NjA4ZWYyZDUwYzA0NTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcApAQCAtMTM1LDQ5ICsxMzUsMzYgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhW
TSYgdm0pCiAjZW5kaWYKIAogICAgIHsKLSAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQ
cm9maWxlOwotICAgICAgICBhcml0aFByb2ZpbGUuYXJnU2F3SW50MzIoKTsKLSAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50
Qml0cygpKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5hcmdPYnNlcnZlZFR5cGUoKS5p
c09ubHlJbnQzMigpKTsKLSAgICB9Ci0gICAgewotICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSBh
cml0aFByb2ZpbGU7Ci0gICAgICAgIGFyaXRoUHJvZmlsZS5hcmdTYXdOdW1iZXIoKTsKLSAgICAg
ICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gVW5hcnlBcml0aFByb2ZpbGU6Om9ic2Vy
dmVkTnVtYmVyQml0cygpKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5hcmdPYnNlcnZl
ZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBCaW5hcnlB
cml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9m
aWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKICAgICAgICAgYXJpdGhQ
cm9maWxlLnJoc1Nhd0ludDMyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygp
ID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRJbnRCaXRzKCkpOwotICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwotICAg
ICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkp
OworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9i
c2VydmVkQmluYXJ5SW50SW50KCkuYml0cygpKTsKKyAgICAgICAgU1RBVElDX0FTU0VSVChBcml0
aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5
SW50MzIoKSk7CisgICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJp
bmFyeUludEludCgpLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0KICAg
ICB7Ci0gICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEFy
aXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdOdW1i
ZXIoKTsKICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nhd0ludDMyKCk7Ci0gICAgICAgIEFTU0VS
VChhcml0aFByb2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1i
ZXJJbnRCaXRzKCkpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlw
ZSgpLmlzT25seU51bWJlcigpKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNl
cnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5i
aXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgpLmJpdHMoKSk7
CisgICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJl
ckludCgpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICAgICAgU1RBVElD
X0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkucmhzT2JzZXJ2
ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQmluYXJ5QXJp
dGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmls
ZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJlcigpOwogICAgICAgICBhcml0aFBy
b2ZpbGUucmhzU2F3TnVtYmVyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygp
ID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdW1iZXJCaXRzKCkpOwotICAg
ICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigp
KTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlO
dW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5iaXRzKCkpOworICAgICAgICBTVEFU
SUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5saHNP
YnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIFNUQVRJQ19BU1NFUlQoQXJp
dGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJlcigpLnJoc09ic2VydmVkVHlwZSgp
LmlzT25seU51bWJlcigpKTsKICAgICB9CiAgICAgewotICAgICAgICBCaW5hcnlBcml0aFByb2Zp
bGUgYXJpdGhQcm9maWxlOworICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAg
ICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKICAgICAgICAgYXJpdGhQcm9maWxlLnJo
c1Nhd051bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5h
cnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50TnVtYmVyQml0cygpKTsKLSAgICAgICAgQVNTRVJU
KGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKLSAgICAgICAg
QVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7Cisg
ICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZWRCaW5hcnlJbnROdW1iZXIoKS5iaXRzKCkpOworICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRo
UHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09u
bHlJbnQzMigpKTsKKyAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVk
QmluYXJ5SW50TnVtYmVyKCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwogICAg
IH0KIH0KIElHTk9SRV9XQVJOSU5HU19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggZjVkOTE3NzQ2MjgxNmE3
NmM5ZDRkYjdjMTY0NjY5YTIyZmY3NDQyZi4uYTI1Zjk4NGFiZGFjN2M0NzE2MmM1MDZkOTQxN2Q3
NTA5Mzg3MmQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiBjb25z
dCBpbnQ2NF90KiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKIHsKLS8vIFRoaXMgaXMg
YSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3Iu
cmIsIGFuZCBjb250YWlucyBjb2RlCisvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2Zm
bGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUK
IC8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIgaWRl
bnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgogLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2UgaGF2
ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0c0V4
dHJhY3RvcgogLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMgd2UncmUgZXh0cmFj
dGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA2ZmQx
Njk4NmMxNTBjZjRhZmY4Mjc2YjFmOTU4OWVmMmRhZTM4ODc5Li5jM2QxN2Q4ZmYzNDA2YWQ3NDUx
ZWU0NzQ4OWFiZmFjYThhYmRkYWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNDAsMTUgKzI0MCwxMyBAQCBjb25z
dCBJc0ludmFsaWRhdGVkID0gY29uc3RleHByIElzSW52YWxpZGF0ZWQKICMgU2hhZG93Q2hpY2tl
biBkYXRhCiBjb25zdCBTaGFkb3dDaGlja2VuVGFpbE1hcmtlciA9IGNvbnN0ZXhwciBTaGFkb3dD
aGlja2VuOjpQYWNrZXQ6OnRhaWxNYXJrZXJWYWx1ZQogCi0jIFVuYXJ5QXJpdGhQcm9maWxlIGRh
dGEKLWNvbnN0IEFyaXRoUHJvZmlsZUludCA9IGNvbnN0ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6
Om9ic2VydmVkSW50Qml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHBy
IChVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJCaXRzKCkpCi0KLSMgQmluYXJ5QXJp
dGhQcm9maWxlIGRhdGEKLWNvbnN0IEFyaXRoUHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQmlu
YXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEludEJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmls
ZU51bWJlckludCA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJl
ckludEJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQmlu
YXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMoKSkKLWNvbnN0IEFyaXRoUHJv
ZmlsZU51bWJlck51bWJlciA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZl
ZE51bWJlck51bWJlckJpdHMoKSkKKyMgQXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRoUHJv
ZmlsZUludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZFVuYXJ5SW50KCkuYml0
cygpKQorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6
Om9ic2VydmVkVW5hcnlOdW1iZXIoKS5iaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVJbnRJbnQg
PSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRJbnQoKS5iaXRzKCkp
Citjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6
b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5iaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVJbnRO
dW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIo
KS5iaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSBjb25zdGV4cHIgKEFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5iaXRzKCkpCiAKICMgUG9p
bnRlciBUYWdzCiBjb25zdCBCeXRlY29kZVB0clRhZyA9IGNvbnN0ZXhwciBCeXRlY29kZVB0clRh
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQppbmRleCA1OTBiYzdlMmMwZWZjOGY3MjQ2YWQyMTc5NTNkZDY5MmY3
M2RhYWM1Li4zMDQzNWM0NjdkM2Q5ZTU2YTVhMmY3NGRmZTQxMzM2NDgwMTczZGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgZW5kKQogbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9uZWdhdGUsIE9wTmVnYXRlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKIAogICAgIG1hY3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICBvcmkg
dHlwZSwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJpbmFyeUFyaXRoUHJv
ZmlsZTo6bV9iaXRzW3Q1XQorICAgICAgICBvcmkgdHlwZSwgT3BOZWdhdGU6Ok1ldGFkYXRhOjpt
X2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgIGVuZAogCiAgICAg
bWV0YWRhdGEodDUsIHQwKQpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgZW5kKQogbWFjcm8gYmluYXJ5
T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRpb25B
bmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uKQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9w
Y29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAg
ICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsg
QmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAgICAgICBvcmkgdHlwZSwgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9i
aXRzW3Q1XQogICAgICAgICBlbmQKIAogICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CmluZGV4IDA1OWI1YTM1MGY3MDNmYjJkZjBhMmU3ZjE0ODVmM2VmMDdkZDU1MTAuLmIyZmI1NTFi
OWVhOTJjYmMxMzNkNjA5NDc4YTNlMDM4ODQzOTgxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC05NzYsMTkg
Kzk3NiwxOSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdhdGUsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcgogICAgIGdldChtX29wZXJhbmQsIHQw
KQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQogICAgIG1ldGFkYXRh
KHQxLCB0MikKLSAgICBsb2FkaSBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsg
QmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDFdLCB0MgorICAgIGxvYWRpIE9wTmVnYXRlOjpN
ZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCiAg
ICAgYnFiIHQzLCBudW1iZXJUYWcsIC5vcE5lZ2F0ZU5vdEludAogICAgIGJ0aXogdDMsIDB4N2Zm
ZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKICAgICBuZWdpIHQzCiAgICAgb3JxIG51bWJlclRhZywgdDMK
ICAgICBvcmkgQXJpdGhQcm9maWxlSW50LCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1l
dGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJpbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQor
ICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRo
UHJvZmlsZTo6bV9iaXRzW3QxXQogICAgIHJldHVybih0MykKIC5vcE5lZ2F0ZU5vdEludDoKICAg
ICBidHF6IHQzLCBudW1iZXJUYWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JxIDB4ODAwMDAwMDAw
MDAwMDAwMCwgdDMKICAgICBvcmkgQXJpdGhQcm9maWxlTnVtYmVyLCB0MgotICAgIHN0b3JlaSB0
MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJpbmFyeUFyaXRoUHJvZmls
ZTo6bV9iaXRzW3QxXQorICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRo
UHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQogICAgIHJldHVybih0MykKIAogLm9w
TmVnYXRlU2xvdzoKQEAgLTEwMDIsNyArMTAwMiw3IEBAIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3Rv
cmUob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRv
CiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MCkKIAogICAgICAgICBtYWNybyBwcm9maWxlKHR5cGUp
Ci0gICAgICAgICAgICBvcmkgdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRo
UHJvZmlsZSArIEJpbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQorICAgICAgICAgICAgb3Jp
IHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFBy
b2ZpbGU6Om1fYml0c1t0NV0KICAgICAgICAgZW5kCiAKICAgICAgICAgZ2V0KG1fcmhzLCB0MCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKaW5kZXggNTYyMmYyODlj
YzEzNmM5ODNmMjhlNzczZDFkYWFkMDBjNjVlMWI2My4uOWIzZDBkNzRjOGQ4MmI3YmU0OWExZTY4
NmFmOWQ2ZTE2ZTU0ZTc2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9SZXN1bHRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRU
eXBlLmgKQEAgLTQ4LDEwICs0OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
Y29uc3RleHByIGludCBudW1CaXRzTmVlZGVkID0gNzsKICAgICAgICAgc3RhdGljX2Fzc2VydCgo
VHlwZUJpdHMgJiAoKDEgPDwgbnVtQml0c05lZWRlZCkgLSAxKSkgPT0gVHlwZUJpdHMsICJUaGlz
IGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MuIik7CiAKLSAgICAgICAgY29uc3RleHByIGV4
cGxpY2l0IFJlc3VsdFR5cGUoKQotICAgICAgICAgICAgOiBSZXN1bHRUeXBlKHVua25vd25UeXBl
KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQogICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVz
dWx0VHlwZShUeXBlIHR5cGUpCiAgICAgICAgICAgICA6IG1fYml0cyh0eXBlKQogICAgICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAppbmRleCAzNDBiOTAwODYwMzY4YjgzZDBkMWFjOTdlNjYwZTgzMmFmY2ViM2Y1Li45MjRmN2U1
YjM1MjUyYjQzODFhNmIyMjgyMTZiOGQ3NjA3OGQ4MTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQ4Nyw4ICs0ODcsOCBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fc3RyaW5nKQogI2lmIEVOQUJMRShKSVQpCiBz
dGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AoT3BOZWdhdGU6Ok1l
dGFkYXRhJiBtZXRhZGF0YSwgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUgb3BlcmFuZCkKIHsKLSAg
ICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwot
ICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKKyAgICBBcml0aFByb2ZpbGUmIHByb2Zp
bGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZTsKKyAgICBwcm9maWxlLm9ic2VydmVMSFMob3Bl
cmFuZCk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpIHx8IHJlc3VsdC5pc0JpZ0ludCgp
KTsKICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJ
bnQzMigpKSB7CkBAIC01NDYsNyArNTQ2LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25l
Z2F0ZSkKIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgcmVzdWx0LCBKU1Zh
bHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQpCiB7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKLSAgICBCaW5hcnlBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSAqY29k
ZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQXJpdGhQcm9maWxlJiBw
cm9maWxlID0gKmNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yUEMocGMpOwogCiAgICAgaWYgKHJl
c3VsdC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkgewpAQCAt
NjA3LDcgKzYwNyw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZGQpCiAgICAgSlNWYWx1
ZSB2MSA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSB2MiA9
IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBCaW5hcnlBcml0aFByb2Zp
bGUmIGFyaXRoUHJvZmlsZSA9ICpleGVjLT5jb2RlQmxvY2soKS0+YmluYXJ5QXJpdGhQcm9maWxl
Rm9yUEMocGMpOworICAgIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlID0gKmV4ZWMtPmNvZGVC
bG9jaygpLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CiAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVM
SFNBbmRSSFModjEsIHYyKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZXhlYywgdjEs
IHYyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>