<?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>157398</bug_id>
          
          <creation_ts>2016-05-05 16:45:47 -0700</creation_ts>
          <short_desc>Modern IDB (Workers): Get everything to the right threads</short_desc>
          <delta_ts>2016-05-05 20:40:11 -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>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>157394</dependson>
          <blocked>149953</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1190517</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-05 16:45:47 -0700</bug_when>
    <thetext>Modern IDB (Workers): Get everything to the right threads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190526</commentid>
    <comment_count>1</comment_count>
      <attachid>278205</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-05 16:59:55 -0700</bug_when>
    <thetext>Created attachment 278205
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190528</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-05 17:01:26 -0700</bug_when>
    <thetext>Attachment 278205 did not pass style-queue:


ERROR: Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190531</commentid>
    <comment_count>3</comment_count>
      <attachid>278207</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-05 17:14:48 -0700</bug_when>
    <thetext>Created attachment 278207
Patch for EWS and maybe landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190583</commentid>
    <comment_count>4</comment_count>
      <attachid>278207</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-05 19:32:41 -0700</bug_when>
    <thetext>Comment on attachment 278207
Patch for EWS and maybe landing

Clearing flags on attachment: 278207

Committed r200503: &lt;http://trac.webkit.org/changeset/200503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190602</commentid>
    <comment_count>5</comment_count>
      <attachid>278207</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-05 20:30:24 -0700</bug_when>
    <thetext>Comment on attachment 278207
Patch for EWS and maybe landing

Rejecting attachment 278207 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 278207, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
LED at 131.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp.rej
patching file Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h
Hunk #1 FAILED at 55.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h.rej

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/1274641</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278205</attachid>
            <date>2016-05-05 16:59:55 -0700</date>
            <delta_ts>2016-05-05 17:07:59 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34434</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMTY3ZDg1Li4wZGJkMzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzUg
QEAKIDIwMTYtMDUtMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIE1vZGVybiBJREIgKFdvcmtlcnMpOiBHZXQgZXZlcnl0aGluZyB0byB0aGUgcmlnaHQgdGhy
ZWFkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NzM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAoTm8gY3VycmVudCBjaGFuZ2UgaW4gYmVoYXZpb3IsIHdpbGwgYmUgdGVzdGVk
IGFzIGJ1ZyAxNDk5NTMgaXMgcmVzb2x2ZWQsIGVuYWJsaW5nIElEQiBpbiB3b3JrZXJzKS4KKwor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0Q3Jvc3NUaHJlYWRUYXNrKTogQWRkIGEgaGVs
cGVyIHRvIHBvc3QgYSBDcm9zc1RocmVhZFRhc2sgdG8gYSBjb250ZXh0LgorICAgICAgICAgICAg
ICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpwZXJmb3JtQ2FsbGJhY2tPbkNv
cnJlY3RUaHJlYWQpOiBIZWxwZXIgdG8gcGVyZm9ybSBhbiBJREIgY2FsbGJhY2sgb24gZWl0aGVy
IHRoZSBtYWluIHRocmVhZAorICAgICAgICAgIG9yIFdvcmtlciB0aHJlYWQgYXMgbmVjZXNzYXJ5
LgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6Om9wZW5E
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eTo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHk6OmNvbXBsZXRlT3BlbkRCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmRlbGV0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojpj
bGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Qcm94eTo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHk6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmdldENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjpkZWxldGVSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6Om9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6Oml0ZXJh
dGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHk6OmNvbXBsZXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5OjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjpmaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojpk
aWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6
SURCQ29ubmVjdGlvblByb3h5Ojpub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6ZXN0YWJsaXNoVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6
OmRpZFN0YXJ0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHk6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6YWJvcnRUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6
ZGlkQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eTo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmRhdGFi
YXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eTo6c2NoZWR1bGVNYWluVGhyZWFkVGFza3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmhhbmRsZU1haW5UaHJlYWRUYXNrcyk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmNhbGxD
b25uZWN0aW9uT25NYWluVGhyZWFkKTogSGVscGVyIHRvIG1hcnNoYWxsIElEQiBvcGVyYXRpb25z
IGZyb20gdGhlCisgICAgICAgICAgV29ya2VyIHRocmVhZCB0byB0aGUgbWFpbiB0aHJlYWQuCisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6cG9zdE1haW5U
aHJlYWRUYXNrKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvcmlnaW5UaHJlYWRJRCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAg
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6cHV0T3JBZGQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25u
ZWN0aW9uVG9TZXJ2ZXIuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlv
bi5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRl
bnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Q2xpZW50UmVzb3VyY2VOdW1iZXIp
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmg6
CisKKzIwMTYtMDUtMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAg
ICAgIE1vZGVybiBJREIgKFdvcmtlcnMpOiBSZW1vdmUgdGhlIG5lZWQgZm9yIElEQkNvbm5lY3Rp
b25Qcm94eSB0byBleHBvc2UgaXRzIElEQkNvbm5lY3Rpb25Ub1NlcnZlci4KICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzM5NAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXgg
YTMwMWVlMS4uN2RlMzgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTA2NCw2ICsxMDY0LDExIEBAIHZvaWQgSURC
VHJhbnNhY3Rpb246OmRlYWN0aXZhdGUoKQogICAgIHNjaGVkdWxlT3BlcmF0aW9uVGltZXIoKTsK
IH0KIAorVGhyZWFkSWRlbnRpZmllciBJREJUcmFuc2FjdGlvbjo6b3JpZ2luVGhyZWFkSUQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5oCmluZGV4IGE4YTMyOTEuLmNhMjE1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMTQzLDYgKzE0Myw4IEBAIHB1Ymxp
YzoKIAogICAgIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9uUHJveHko
KTsKIAorICAgIFRocmVhZElkZW50aWZpZXIgb3JpZ2luVGhyZWFkSUQoKSBjb25zdDsKKwogcHJp
dmF0ZToKICAgICBJREJUcmFuc2FjdGlvbihJREJEYXRhYmFzZSYsIGNvbnN0IElEQlRyYW5zYWN0
aW9uSW5mbyYsIElEQk9wZW5EQlJlcXVlc3QqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNw
cAppbmRleCA3YjY2MDIzLi5lM2QwMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcApA
QCAtMjgsMTYgKzI4LDM2IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2lu
Y2x1ZGUgIklEQkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1
ZGUgIklEQktleVJhbmdlRGF0YS5oIgogI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKICNp
bmNsdWRlICJJREJSZXF1ZXN0RGF0YS5oIgogI2luY2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gUGFyYW1ldGVycywgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgordm9pZCBwZXJmb3JtQ2FsbGJh
Y2tPbkNvcnJlY3RUaHJlYWQoVCYgb2JqZWN0LCB2b2lkIChUOjoqbWV0aG9kKShQYXJhbWV0ZXJz
Li4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBpZiAob2JqZWN0Lm9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVh
ZCgpKSB7CisgICAgICAgIChvYmplY3QuKm1ldGhvZCkoYXJndW1lbnRzLi4uKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBv
YmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY29udGV4dC0+cG9zdENyb3NzVGhyZWFkVGFzayhvYmplY3QsIG1l
dGhvZCwgYXJndW1lbnRzLi4uKTsKK30KKwogSURCQ29ubmVjdGlvblByb3h5OjpJREJDb25uZWN0
aW9uUHJveHkoSURCQ29ubmVjdGlvblRvU2VydmVyJiBjb25uZWN0aW9uKQogICAgIDogbV9jb25u
ZWN0aW9uVG9TZXJ2ZXIoY29ubmVjdGlvbikKICAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpCkBAIC01NywxMCArNzcsNiBAQCB2b2lkIElE
QkNvbm5lY3Rpb25Qcm94eTo6ZGVyZWYoKQogCiBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURC
Q29ubmVjdGlvblByb3h5OjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBkYXRhYmFzZUlkZW50aWZpZXIsIHVp
bnQ2NF90IHZlcnNpb24pCiB7Ci0gICAgLy8gRklYTUU6IEhhbmRsZSBXb3JrZXJzCi0gICAgaWYg
KCFpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdDsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBs
b2NrZXIobV9vcGVuREJSZXF1ZXN0TWFwTG9jayk7CkBAIC03MCwyMCArODYsMTMgQEAgUmVmUHRy
PElEQk9wZW5EQlJlcXVlc3Q+IElEQkNvbm5lY3Rpb25Qcm94eTo6b3BlbkRhdGFiYXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgbV9vcGVuREJSZXF1ZXN0TWFwLnNldChyZXF1ZXN0
LT5yZXNvdXJjZUlkZW50aWZpZXIoKSwgcmVxdWVzdC5nZXQoKSk7CiAgICAgfQogCi0gICAgSURC
UmVxdWVzdERhdGEgcmVxdWVzdERhdGEoKnRoaXMsICpyZXF1ZXN0KTsKLQotICAgIC8vIEZJWE1F
OiBGb3Igd29ya2VycywgbWFyc2hhbGwgdGhpcyB0byB0aGUgbWFpbiB0aHJlYWQgaWYgbmVjZXNz
YXJ5LgotICAgIG1fY29ubmVjdGlvblRvU2VydmVyLm9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSk7
CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
b3BlbkRhdGFiYXNlLCBJREJSZXF1ZXN0RGF0YSgqdGhpcywgKnJlcXVlc3QpKTsKIAogICAgIHJl
dHVybiByZXF1ZXN0OwogfQogCiBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCQ29ubmVjdGlv
blByb3h5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGRhdGFiYXNlSWRlbnRpZmllcikKIHsKLSAgICAv
LyBGSVhNRTogSGFuZGxlIFdvcmtlcnMKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQogICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0
OwogICAgIHsKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX29wZW5EQlJlcXVlc3RNYXBM
b2NrKTsKQEAgLTkzLDEwICsxMDIsNyBAQCBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCQ29u
bmVjdGlvblByb3h5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZQogICAgICAg
ICBtX29wZW5EQlJlcXVlc3RNYXAuc2V0KHJlcXVlc3QtPnJlc291cmNlSWRlbnRpZmllcigpLCBy
ZXF1ZXN0LmdldCgpKTsKICAgICB9CiAKLSAgICBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSgq
dGhpcywgKnJlcXVlc3QpOwotCi0gICAgLy8gRklYTUU6IEZvciB3b3JrZXJzLCBtYXJzaGFsbCB0
aGlzIHRvIHRoZSBtYWluIHRocmVhZCBpZiBuZWNlc3NhcnkuCi0gICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXIuZGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEpOworICAgIGNhbGxDb25uZWN0aW9uT25N
YWluVGhyZWFkKCZJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlLCBJREJSZXF1
ZXN0RGF0YSgqdGhpcywgKnJlcXVlc3QpKTsKIAogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAt
MTE4LDEyMSArMTI0LDEwMSBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Y29tcGxldGVPcGVu
REJSZXF1ZXN0KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgUmVmUHRyPElE
Qk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgewogICAgICAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKG1fb3BlbkRCUmVxdWVzdE1hcExvY2spOwotICAgICAgICByZXF1ZXN0ID0gbV9vcGVuREJS
ZXF1ZXN0TWFwLmdldChyZXN1bHREYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpOworICAgICAgICBy
ZXF1ZXN0ID0gbV9vcGVuREJSZXF1ZXN0TWFwLnRha2UocmVzdWx0RGF0YS5yZXF1ZXN0SWRlbnRp
ZmllcigpKTsKICAgICAgICAgQVNTRVJUKHJlcXVlc3QpOwogICAgIH0KIAotICAgIHJlcXVlc3Qt
PnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CisgICAgQVNTRVJUKHJlcXVlc3QpOworCisg
ICAgcGVyZm9ybUNhbGxiYWNrT25Db3JyZWN0VGhyZWFkKCpyZXF1ZXN0LCAmSURCT3BlbkRCUmVx
dWVzdDo6cmVxdWVzdENvbXBsZXRlZCwgcmVzdWx0RGF0YSk7CiB9CiAKIHZvaWQgSURCQ29ubmVj
dGlvblByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0
aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiB7Ci0gICAgSURCUmVxdWVzdERh
dGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKKyAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1
ZXN0RGF0YShvcGVyYXRpb24pOwogICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0aW9uKTsKIAotICAg
IC8vIEZJWE1FOiBIYW5kbGUgd29ya2VyIHRocmVhZCBtYXJzaGFsbGluZy4KLQotICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBpbmZvKTsKKyAg
ICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVh
dGVPYmplY3RTdG9yZSwgcmVxdWVzdERhdGEsIGluZm8pOwogfQogCiB2b2lkIElEQkNvbm5lY3Rp
b25Qcm94eTo6ZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7Ci0gICAgSURCUmVxdWVzdERhdGEg
cmVxdWVzdERhdGEob3BlcmF0aW9uKTsKKyAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0
RGF0YShvcGVyYXRpb24pOwogICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0aW9uKTsKIAotICAgIC8v
IEZJWE1FOiBIYW5kbGUgd29ya2VyIHRocmVhZCBtYXJzaGFsbGluZy4KLQotICAgIG1fY29ubmVj
dGlvblRvU2VydmVyLmRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5h
bWUpOworICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRlbGV0ZU9iamVjdFN0b3JlLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKIH0K
IAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmNsZWFyT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewot
ICAgIElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlvbik7CisgICAgY29uc3QgSURC
UmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKICAgICBzYXZlT3BlcmF0aW9uKG9w
ZXJhdGlvbik7CiAKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtlciB0aHJlYWQgbWFyc2hhbGxp
bmcuCi0KLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci5jbGVhck9iamVjdFN0b3JlKHJlcXVlc3RE
YXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhy
ZWFkKCZJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUsIHJlcXVlc3REYXRh
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6
Y3JlYXRlSW5kZXgoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCSW5k
ZXhJbmZvJiBpbmZvKQogewotICAgIElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlv
bik7CisgICAgY29uc3QgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKICAg
ICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CiAKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtl
ciB0aHJlYWQgbWFyc2hhbGxpbmcuCi0KLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci5jcmVhdGVJ
bmRleChyZXF1ZXN0RGF0YSwgaW5mbyk7CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQo
JklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlSW5kZXgsIHJlcXVlc3REYXRhLCBpbmZvKTsK
IH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRlbGV0ZUluZGV4KFRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiBvcGVyYXRpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBpbmRleE5hbWUpCiB7Ci0gICAgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3Bl
cmF0aW9uKTsKKyAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRpb24p
OwogICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0aW9uKTsKIAotICAgIC8vIEZJWE1FOiBIYW5kbGUg
d29ya2VyIHRocmVhZCBtYXJzaGFsbGluZy4KLQotICAgIG1fY29ubmVjdGlvblRvU2VydmVyLmRl
bGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7
CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
ZGVsZXRlSW5kZXgsIHJlcXVlc3REYXRhLCBXVEZNb3ZlKG9iamVjdFN0b3JlSWRlbnRpZmllciks
IGluZGV4TmFtZSk7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpwdXRPckFkZChUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBJREJLZXkqIGtleSwgY29uc3QgSURCVmFsdWUm
IHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBtb2RlKQog
ewotICAgIElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlvbik7CisgICAgY29uc3Qg
SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKICAgICBzYXZlT3BlcmF0aW9u
KG9wZXJhdGlvbik7CiAKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtlciB0aHJlYWQgbWFyc2hh
bGxpbmcuCi0KLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci5wdXRPckFkZChyZXF1ZXN0RGF0YSwg
a2V5LCB2YWx1ZSwgbW9kZSk7CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQsIHJlcXVlc3REYXRhLCBJREJLZXlEYXRhKGtleSks
IHZhbHVlLCBtb2RlKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmdldFJlY29yZChU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtl
eVJhbmdlKQogewotICAgIElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlvbik7Cisg
ICAgY29uc3QgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKICAgICBzYXZl
T3BlcmF0aW9uKG9wZXJhdGlvbik7CiAKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtlciB0aHJl
YWQgbWFyc2hhbGxpbmcuCi0KLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci5nZXRSZWNvcmQocmVx
dWVzdERhdGEsIGtleVJhbmdlKTsKKyAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURC
Q29ubmVjdGlvblRvU2VydmVyOjpnZXRSZWNvcmQsIHJlcXVlc3REYXRhLCBrZXlSYW5nZSk7CiB9
CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpnZXRDb3VudChUcmFuc2FjdGlvbk9wZXJhdGlv
biYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlKQogewotICAgIElE
QlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlvbik7CisgICAgY29uc3QgSURCUmVxdWVz
dERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKICAgICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlv
bik7CiAKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdvcmtlciB0aHJlYWQgbWFyc2hhbGxpbmcuCi0K
LSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2Up
OworICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmdldENvdW50LCByZXF1ZXN0RGF0YSwga2V5UmFuZ2UpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rp
b25Qcm94eTo6ZGVsZXRlUmVjb3JkKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNv
bnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2UpCiB7Ci0gICAgSURCUmVxdWVzdERhdGEgcmVx
dWVzdERhdGEob3BlcmF0aW9uKTsKKyAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0
YShvcGVyYXRpb24pOwogICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0aW9uKTsKIAotICAgIC8vIEZJ
WE1FOiBIYW5kbGUgd29ya2VyIHRocmVhZCBtYXJzaGFsbGluZy4KLQotICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2UpOworICAgIGNhbGxD
b25uZWN0aW9uT25NYWluVGhyZWFkKCZJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZVJlY29y
ZCwgcmVxdWVzdERhdGEsIGtleVJhbmdlKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6
Om9wZW5DdXJzb3IoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCQ3Vy
c29ySW5mbyYgaW5mbykKIHsKLSAgICBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRp
b24pOworICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlvbik7CiAg
ICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCi0gICAgLy8gRklYTUU6IEhhbmRsZSB3b3Jr
ZXIgdGhyZWFkIG1hcnNoYWxsaW5nLgotCi0gICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIub3BlbkN1
cnNvcihyZXF1ZXN0RGF0YSwgaW5mbyk7CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQo
JklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvciwgcmVxdWVzdERhdGEsIGluZm8pOwog
fQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6aXRlcmF0ZUN1cnNvcihUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlEYXRhJiBrZXksIHVuc2lnbmVkIGxvbmcg
Y291bnQpCiB7Ci0gICAgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKKyAg
ICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRpb24pOwogICAgIHNhdmVP
cGVyYXRpb24ob3BlcmF0aW9uKTsKIAotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VyIHRocmVh
ZCBtYXJzaGFsbGluZy4KLQotICAgIG1fY29ubmVjdGlvblRvU2VydmVyLml0ZXJhdGVDdXJzb3Io
cmVxdWVzdERhdGEsIGtleSwgY291bnQpOworICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFk
KCZJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IsIHJlcXVlc3REYXRhLCBrZXks
IGNvdW50KTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OnNhdmVPcGVyYXRpb24oVHJh
bnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKQEAgLTI1MywyNCArMjM5LDE2IEBAIHZvaWQg
SURCQ29ubmVjdGlvblByb3h5Ojpjb21wbGV0ZU9wZXJhdGlvbihjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQogCiAgICAgQVNTRVJUKG9wZXJhdGlvbik7CiAKLSAgICAvLyBGSVhNRTog
SGFuZGxlIGdldHRpbmcgb3BlcmF0aW9uLT5jb21wbGV0ZWQoKSBvbnRvIHRoZSBjb3JyZWN0IHRo
cmVhZCB2aWEgdGhlIElEQlRyYW5zYWN0aW9uLgotICAgIAotICAgIG9wZXJhdGlvbi0+Y29tcGxl
dGVkKHJlc3VsdERhdGEpOworICAgIHBlcmZvcm1DYWxsYmFja09uQ29ycmVjdFRocmVhZCgqb3Bl
cmF0aW9uLCAmVHJhbnNhY3Rpb25PcGVyYXRpb246OmNvbXBsZXRlZCwgcmVzdWx0RGF0YSk7CiB9
CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVp
bnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIC8vIEZJWE1FOiBIYW5kbGUg
d29ya2VycwotICAgIGlmICghaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBjYWxsQ29u
bmVjdGlvbk9uTWFpblRocmVhZCgmSURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydE9wZW5BbmRV
cGdyYWRlTmVlZGVkLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6ZmlyZVZlcnNpb25DaGFu
Z2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRW
ZXJzaW9uKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KICAgICBSZWZQdHI8SURC
RGF0YWJhc2U+IGRhdGFiYXNlOwogICAgIHsKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlciht
X2RhdGFiYXNlQ29ubmVjdGlvbk1hcExvY2spOwpAQCAtMjgwLDE2ICsyNTgsMTIgQEAgdm9pZCBJ
REJDb25uZWN0aW9uUHJveHk6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnQKICAgICBpZiAoIWRhdGFiYXNlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBkYXRhYmFzZS0+ZmlyZVZlcnNpb25DaGFuZ2VFdmVudChyZXF1ZXN0SWRlbnRpZmllciwg
cmVxdWVzdGVkVmVyc2lvbik7CisgICAgcGVyZm9ybUNhbGxiYWNrT25Db3JyZWN0VGhyZWFkKCpk
YXRhYmFzZSwgJklEQkRhdGFiYXNlOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50LCByZXF1ZXN0SWRl
bnRpZmllciwgcmVxdWVzdGVkVmVyc2lvbik7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5
OjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIp
CiB7Ci0gICAgLy8gRklYTUU6IEhhbmRsZSBXb3JrZXJzCi0gICAgaWYgKCFpc01haW5UaHJlYWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIuZGlkRmlyZVZl
cnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRl
bnRpZmllcik7CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCwgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94
eTo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVy
c2lvbikKQEAgLTMwNCw3ICsyNzgsNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6bm90aWZ5
T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJgogCiAgICAg
QVNTRVJUKHJlcXVlc3QpOwogCi0gICAgcmVxdWVzdC0+cmVxdWVzdEJsb2NrZWQob2xkVmVyc2lv
biwgbmV3VmVyc2lvbik7CisgICAgcGVyZm9ybUNhbGxiYWNrT25Db3JyZWN0VGhyZWFkKCpyZXF1
ZXN0LCAmSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdEJsb2NrZWQsIG9sZFZlcnNpb24sIG5ld1Zl
cnNpb24pOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6ZXN0YWJsaXNoVHJhbnNhY3Rp
b24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQpAQCAtMzE1LDExICsyODksNyBAQCB2b2lk
IElEQkNvbm5lY3Rpb25Qcm94eTo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQogICAgICAgICBtX3BlbmRpbmdUcmFuc2FjdGlvbnMuc2V0KHRyYW5zYWN0
aW9uLmluZm8oKS5pZGVudGlmaWVyKCksICZ0cmFuc2FjdGlvbik7CiAgICAgfQogCi0gICAgLy8g
RklYTUU6IEhhbmRsZSBXb3JrZXJzCi0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIuZXN0YWJsaXNoVHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKCksIHRy
YW5zYWN0aW9uLmluZm8oKSk7CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uLmRhdGFi
YXNlKCkuZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcigpLCB0cmFuc2FjdGlvbi5pbmZvKCkp
OwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
RXJyb3ImIGVycm9yKQpAQCAtMzMyLDkgKzMwMiw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5
OjpkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
CiAKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwogCi0gICAgLy8gRklYTUU6IEhhbmRsZSBob3Bw
aW5nIHRvIHRoZSBXb3JrZXIgdGhyZWFkIGhlcmUgaWYgbmVjZXNzYXJ5LgotCi0gICAgdHJhbnNh
Y3Rpb24tPmRpZFN0YXJ0KGVycm9yKTsKKyAgICBwZXJmb3JtQ2FsbGJhY2tPbkNvcnJlY3RUaHJl
YWQoKnRyYW5zYWN0aW9uLCAmSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0LCBlcnJvcik7CiB9CiAK
IHZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojpjb21taXRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24pCkBAIC0zNDUsMTEgKzMxMyw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblBy
b3h5Ojpjb21taXRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAgICAg
ICAgIG1fY29tbWl0dGluZ1RyYW5zYWN0aW9ucy5zZXQodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50
aWZpZXIoKSwgJnRyYW5zYWN0aW9uKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogSGFuZGxlIFdv
cmtlcnMKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2Nvbm5lY3Rpb25Ub1NlcnZlci5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbi5pbmZvKCku
aWRlbnRpZmllcigpKTsKKyAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURCQ29ubmVj
dGlvblRvU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50
aWZpZXIoKSk7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpkaWRDb21taXRUcmFuc2Fj
dGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgSURCRXJyb3ImIGVycm9yKQpAQCAtMzYyLDkgKzMyNiw3IEBAIHZvaWQgSURCQ29ubmVj
dGlvblByb3h5OjpkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zCiAKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwogCi0gICAgLy8gRklYTUU6IEhh
bmRsZSBob3BwaW5nIHRvIHRoZSBXb3JrZXIgdGhyZWFkIGhlcmUgaWYgbmVjZXNzYXJ5LgotCi0g
ICAgdHJhbnNhY3Rpb24tPmRpZENvbW1pdChlcnJvcik7CisgICAgcGVyZm9ybUNhbGxiYWNrT25D
b3JyZWN0VGhyZWFkKCp0cmFuc2FjdGlvbiwgJklEQlRyYW5zYWN0aW9uOjpkaWRDb21taXQsIGVy
cm9yKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmFib3J0VHJhbnNhY3Rpb24oSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQpAQCAtMzc1LDExICszMzcsNyBAQCB2b2lkIElEQkNv
bm5lY3Rpb25Qcm94eTo6YWJvcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24pCiAgICAgICAgIG1fYWJvcnRpbmdUcmFuc2FjdGlvbnMuc2V0KHRyYW5zYWN0aW9uLmluZm8o
KS5pZGVudGlmaWVyKCksICZ0cmFuc2FjdGlvbik7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IEhh
bmRsZSBXb3JrZXJzCi0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIuYWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbi5p
bmZvKCkuaWRlbnRpZmllcigpKTsKKyAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURC
Q29ubmVjdGlvblRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbi5pbmZvKCku
aWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZEFib3J0VHJh
bnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKQEAgLTM5Miw5ICszNTAsNyBAQCB2b2lkIElEQkNv
bm5lY3Rpb25Qcm94eTo6ZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYQogCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uKTsKIAotICAgIC8vIEZJWE1F
OiBIYW5kbGUgaG9wcGluZyB0byB0aGUgV29ya2VyIHRocmVhZCBoZXJlIGlmIG5lY2Vzc2FyeS4K
LQotICAgIHRyYW5zYWN0aW9uLT5kaWRBYm9ydChlcnJvcik7CisgICAgcGVyZm9ybUNhbGxiYWNr
T25Db3JyZWN0VGhyZWFkKCp0cmFuc2FjdGlvbiwgJklEQlRyYW5zYWN0aW9uOjpkaWRBYm9ydCwg
ZXJyb3IpOwogfQogCiBib29sIElEQkNvbm5lY3Rpb25Qcm94eTo6aGFzUmVjb3JkT2ZUcmFuc2Fj
dGlvbihjb25zdCBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pIGNvbnN0CkBAIC00MDcsMjAg
KzM2MywzNyBAQCBib29sIElEQkNvbm5lY3Rpb25Qcm94eTo6aGFzUmVjb3JkT2ZUcmFuc2FjdGlv
bihjb25zdCBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3RpbwogCiB2b2lkIElEQkNvbm5lY3Rpb25Q
cm94eTo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIC8vIEZJWE1FOiBIYW5kbGUgV29ya2VycwotICAg
IGlmICghaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOworICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhy
ZWFkKCZJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsKIH0KIAogdm9p
ZCBJREJDb25uZWN0aW9uUHJveHk6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChJREJEYXRhYmFz
ZSYgZGF0YWJhc2UpCiB7Ci0gICAgLy8gRklYTUU6IEhhbmRsZSBXb3JrZXJzCi0gICAgaWYgKCFp
c01haW5UaHJlYWQoKSkKKyAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQsIGRhdGFiYXNlLmRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojpz
Y2hlZHVsZU1haW5UaHJlYWRUYXNrcygpCit7CisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX21h
aW5UaHJlYWRUYXNrTG9jayk7CisgICAgaWYgKG1fbWFpblRocmVhZFByb3RlY3RvcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIuZGF0YWJhc2VDb25uZWN0aW9u
Q2xvc2VkKGRhdGFiYXNlLmRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgbV9t
YWluVGhyZWFkUHJvdGVjdG9yID0gJm1fY29ubmVjdGlvblRvU2VydmVyOworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXNdIHsKKyAgICAgICAgaGFuZGxlTWFpblRocmVhZFRhc2tzKCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpoYW5kbGVNYWluVGhyZWFkVGFza3Mo
KQoreworICAgIFJlZlB0cjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IHByb3RlY3RvcjsKKyAgICB7
CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9tYWluVGhyZWFkVGFza0xvY2spOworICAg
ICAgICBBU1NFUlQobV9tYWluVGhyZWFkUHJvdGVjdG9yKTsKKyAgICAgICAgcHJvdGVjdG9yID0g
V1RGTW92ZShtX21haW5UaHJlYWRQcm90ZWN0b3IpOworICAgIH0KKworICAgIHdoaWxlIChhdXRv
IHRhc2sgPSBtX21haW5UaHJlYWRRdWV1ZS50cnlHZXRNZXNzYWdlKCkpCisgICAgICAgIHRhc2st
PnBlcmZvcm1UYXNrKCk7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpnZXRBbGxEYXRh
YmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcGVuaW5nT3JpZ2luLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+Jik+IGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oCmluZGV4IGJm
YWI2ZjQuLjllY2E4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmgKQEAgLTI3LDExICsyNywx
NCBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJDcm9zc1Ro
cmVhZFRhc2suaCIKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRl
ICJJREJSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUcmFuc2FjdGlvbk9wZXJhdGlv
bi5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTA5LDYgKzExMiwyNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzYXZlT3BlcmF0aW9uKFRyYW5zYWN0aW9uT3BlcmF0aW9uJik7CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbWV0ZXJzLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cisg
ICAgdm9pZCBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCh2b2lkIChJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OiptZXRob2QpKFBhcmFtZXRlcnMuLi4pLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMp
CisgICAgeworICAgICAgICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgICAgICAgICAobV9jb25u
ZWN0aW9uVG9TZXJ2ZXIuKm1ldGhvZCkoYXJndW1lbnRzLi4uKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKG1fY29ubmVjdGlvblRvU2VydmVyLCBtZXRob2Qs
IGFyZ3VtZW50cy4uLik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgorICAgIHZvaWQgcG9zdE1haW5UaHJlYWRUYXNrKEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKKyAgICB7CisgICAgICAgIGF1dG8gdGFzayA9IGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhhcmd1
bWVudHMuLi4pOworICAgICAgICBtX21haW5UaHJlYWRRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNr
KSk7CisKKyAgICAgICAgc2NoZWR1bGVNYWluVGhyZWFkVGFza3MoKTsKKyAgICB9CisKKyAgICB2
b2lkIHNjaGVkdWxlTWFpblRocmVhZFRhc2tzKCk7CisgICAgdm9pZCBoYW5kbGVNYWluVGhyZWFk
VGFza3MoKTsKKwogICAgIElEQkNvbm5lY3Rpb25Ub1NlcnZlciYgbV9jb25uZWN0aW9uVG9TZXJ2
ZXI7CiAgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKIApAQCAtMTI1
LDYgKzE0OSwxMCBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZp
ZXIsIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fYWN0aXZlT3BlcmF0aW9uczsKICAg
ICBMb2NrIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25Mb2NrOworCisgICAgTWVzc2FnZVF1ZXVlPENy
b3NzVGhyZWFkVGFzaz4gbV9tYWluVGhyZWFkUXVldWU7CisgICAgTG9jayBtX21haW5UaHJlYWRU
YXNrTG9jazsKKyAgICBSZWZQdHI8SURCQ29ubmVjdGlvblRvU2VydmVyPiBtX21haW5UaHJlYWRQ
cm90ZWN0b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggNDBlMGMxOC4uMmZlNzcyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNv
bm5lY3Rpb25Ub1NlcnZlci5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIElEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0
YSkKICAgICBtX3Byb3h5LT5jb21wbGV0ZU9wZXJhdGlvbihyZXN1bHREYXRhKTsKIH0KIAotdm9p
ZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgSURCS2V5KiBrZXksIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgY29uc3QgSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKK3ZvaWQgSURC
Q29ubmVjdGlvblRvU2VydmVyOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25z
dCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkIik7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaApp
bmRleCAyMzRmNzBjLi4wZGUwZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCkBA
IC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGluZGV4TmFtZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWREZWxldGVJbmRleChjb25z
dCBJREJSZXN1bHREYXRhJik7CiAKLSAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgSURCS2V5KiwgY29uc3QgSURCVmFsdWUmLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0
b3JlT3ZlcndyaXRlTW9kZSk7CisgICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFB1
dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oCmluZGV4IGJmOWYyYzIuLmFkYzViOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25u
ZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oCkBAIC0zNCw3ICsz
NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCQ3Vyc29ySW5mbzsKIGNsYXNz
IElEQkluZGV4SW5mbzsKLWNsYXNzIElEQktleTsKIGNsYXNzIElEQktleURhdGE7CiBjbGFzcyBJ
REJPYmplY3RTdG9yZUluZm87CiBjbGFzcyBJREJSZXF1ZXN0RGF0YTsKQEAgLTY3LDcgKzY2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5k
ZXhJbmZvJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bmRleE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBJREJLZXkqLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHB1dE9yQWRkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgY29u
c3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1Ry
YW5zYWN0aW9uT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKaW5kZXggYTZlYWQ3MS4uY2Y4YzMwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCkBAIC00NCw2ICs0NCwxMSBAQCBUcmFu
c2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBJREJSZXF1ZQogICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRpZmll
cigpKTsKIH0KIAorU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogVHJhbnNhY3Rpb25PcGVyYXRpb246
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3RyYW5zYWN0
aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQkNs
aWVudAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5o
CmluZGV4IDQzMDc3YTQuLmI1Zjk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBA
IC03Myw2ICs3Myw4IEBAIHB1YmxpYzoKIAogICAgIFRocmVhZElkZW50aWZpZXIgb3JpZ2luVGhy
ZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX29yaWdpblRocmVhZElEOyB9CiAKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKIHByb3Rl
Y3RlZDoKICAgICBUcmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24pCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291
cmNlSWRlbnRpZmllci5jcHAKaW5kZXggOGM0MzJiNi4uMWNhMDZhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
c291cmNlSWRlbnRpZmllci5jcHAKQEAgLTM3LDggKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgdWludDY0X3QgbmV4dENsaWVudFJlc291cmNlTnVtYmVyKCkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyB1aW50NjRfdCBjdXJyZW50TnVtYmVy
ID0gMTsKKyAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbnROdW1iZXIoMSk7
CiAgICAgcmV0dXJuIGN1cnJlbnROdW1iZXIgKz0gMjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcAppbmRleCAzYTA4MjQ5Li4wZmY0MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVy
LmNwcApAQCAtMjg5LDExICsyODksOSBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRl
SW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdAogICAgIH0p
OwogfQogCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBJREJLZXkqIGtleSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBj
b25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQor
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZh
bHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVN
b2RlKQogewogICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAg
SURCS2V5RGF0YSBrZXlEYXRhKGtleSk7Ci0KICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9k
ZV0gewogICAgICAgICBtX3NlcnZlci0+cHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZh
bHVlLCBvdmVyd3JpdGVNb2RlKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAppbmRl
eCAyZWRiMjEwLi5kZjM0MzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVz
dERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQg
Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJbmRleEluZm8mKSBm
aW5hbDsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkgZmluYWw7
Ci0gICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIElEQktleSosIGNvbnN0
IElEQlZhbHVlJiwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpIGZp
bmFsOworICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJL
ZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zl
cndyaXRlTW9kZSkgZmluYWw7CiAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBmaW5hbDsKICAgICB2b2lkIGdldENvdW50KGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgZmluYWw7CiAgICAg
dm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCmluZGV4IGU5MmMwZGYuLjRhZDAwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMjgsNiArMjgsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIK
ICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgpAQCAtMTY3LDYgKzE2OCwxNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soVGFzaykgPSAwOyAvLyBFeGVjdXRlcyB0aGUgdGFz
ayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHZvaWQgcG9zdENyb3NzVGhyZWFkVGFzayhBcmd1bWVu
dHMmJi4uLiBhcmd1bWVudHMpCisgICAgeworICAgICAgICBhdXRvIGNyb3NzVGhyZWFkVGFzayA9
IGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhhcmd1bWVudHMuLi4pOworICAgICAgICBhdXRvKiByYXdU
YXNrID0gY3Jvc3NUaHJlYWRUYXNrLnJlbGVhc2UoKTsKKyAgICAgICAgcG9zdFRhc2soWz1dKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRUYXNrPiB0YXNrKHJhd1Rhc2spOworICAgICAgICAgICAgdGFzay0+cGVyZm9ybVRh
c2soKTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgLy8gR2V0cyB0aGUgbmV4dCBpZCBpbiBh
IGNpcmN1bGFyIHNlcXVlbmNlIGZyb20gMSB0byAyXjMxLTEuCiAgICAgaW50IGNpcmN1bGFyU2Vx
dWVudGlhbElEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2NDJkYjBkLi4wMGY0ZjEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDUtMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIE1vZGVybiBJREIgKFdvcmtlcnMpOiBHZXQgZXZlcnl0aGluZyB0
byB0aGUgcmlnaHQgdGhyZWFkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NzM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6cHV0T3JBZGQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaDoKKwogMjAxNi0wNS0wNSAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNZWRpYSBjb250cm9scyBkb24n
dCB1cGRhdGUgaWYgY29udHJvbGxlciBpcyBjcmVhdGVkIGFmdGVyIHRoZSBpbnRlcmZhY2UgaXMg
Y3JlYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNw
cAppbmRleCBlYzEwMzhiLi5mZTBhOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtMTMxLDkgKzEzMSw4IEBAIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIHVpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpE
ZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUp
KTsKIH0KIAotdm9pZCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgSURCS2V5KiBrZXksIGNvbnN0IElEQlZhbHVlJiB2
YWx1ZSwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgbW9kZSkKK3Zv
aWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVl
JiB2YWx1ZSwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgbW9kZSkK
IHsKLSAgICBJREJLZXlEYXRhIGtleURhdGEoa2V5KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OlB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1
ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1vZGUpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaAppbmRleCA1ZWEwYzRjLi4yNWQxMDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCkBAIC01NSw3ICs1
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpIGZpbmFsOwog
ICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25z
dCBXZWJDb3JlOjpJREJJbmRleEluZm8mKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkgZmluYWw7Ci0gICAgdm9pZCBwdXRPckFkZChj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIFdlYkNvcmU6OklEQktleSosIGNvbnN0IFdl
YkNvcmU6OklEQlZhbHVlJiwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUpIGZpbmFsOworICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCVmFsdWUmLCBjb25zdCBXZWJDb3JlOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRl
TW9kZSkgZmluYWw7CiAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKSBmaW5hbDsKICAgICB2b2lk
IGdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCS2V5UmFuZ2VEYXRhJikgZmluYWw7CiAgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKSBm
aW5hbDsK
</data>
<flag name="review"
          id="302329"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278207</attachid>
            <date>2016-05-05 17:14:48 -0700</date>
            <delta_ts>2016-05-05 20:30:24 -0700</delta_ts>
            <desc>Patch for EWS and maybe landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34438</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMTY3ZDg1Li43ZDlkZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzUg
QEAKIDIwMTYtMDUtMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIE1vZGVybiBJREIgKFdvcmtlcnMpOiBHZXQgZXZlcnl0aGluZyB0byB0aGUgcmlnaHQgdGhy
ZWFkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NzM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIChObyBjdXJyZW50IGNoYW5nZSBpbiBiZWhhdmlvciwgd2lsbCBiZSB0ZXN0
ZWQgYXMgYnVnIDE0OTk1MyBpcyByZXNvbHZlZCwgZW5hYmxpbmcgSURCIGluIHdvcmtlcnMpLgor
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RDcm9zc1RocmVhZFRhc2spOiBBZGQgYSBo
ZWxwZXIgdG8gcG9zdCBhIENyb3NzVGhyZWFkVGFzayB0byBhIGNvbnRleHQuCisgICAgICAgICAg
ICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Q
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OnBlcmZvcm1DYWxsYmFja09u
Q29ycmVjdFRocmVhZCk6IEhlbHBlciB0byBwZXJmb3JtIGFuIElEQiBjYWxsYmFjayBvbiBlaXRo
ZXIgdGhlIG1haW4gdGhyZWFkCisgICAgICAgICAgb3IgV29ya2VyIHRocmVhZCBhcyBuZWNlc3Nh
cnkuCisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6b3Bl
bkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eTo6Y29tcGxldGVPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6ZGVsZXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6
OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHk6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6
SURCQ29ubmVjdGlvblByb3h5OjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0Q291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmRlbGV0ZVJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6b3BlbkN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6aXRl
cmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Q
cm94eTo6Y29tcGxldGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHk6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmZpcmVWZXJzaW9uQ2hhbmdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6
OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHk6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojplc3RhYmxpc2hUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eTo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Qcm94eTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmRpZENvbW1pdFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjphYm9ydFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5
OjpkaWRBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5OjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6ZGF0
YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5OjpzY2hlZHVsZU1haW5UaHJlYWRUYXNrcyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6aGFuZGxlTWFpblRocmVhZFRhc2tz
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6Y2Fs
bENvbm5lY3Rpb25Pbk1haW5UaHJlYWQpOiBIZWxwZXIgdG8gbWFyc2hhbGwgSURCIG9wZXJhdGlv
bnMgZnJvbSB0aGUKKyAgICAgICAgICBXb3JrZXIgdGhyZWFkIHRvIHRoZSBtYWluIHRocmVhZC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojpwb3N0TWFp
blRocmVhZFRhc2spOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9yaWdpblRocmVhZElE
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAg
ICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpwdXRPckFkZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJ
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRDbGllbnRSZXNvdXJjZU51bWJl
cik6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
aDoKKworMjAxNi0wNS0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAg
ICAgICAgTW9kZXJuIElEQiAoV29ya2Vycyk6IFJlbW92ZSB0aGUgbmVlZCBmb3IgSURCQ29ubmVj
dGlvblByb3h5IHRvIGV4cG9zZSBpdHMgSURCQ29ubmVjdGlvblRvU2VydmVyLgogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Mzk0CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRl
eCBhMzAxZWUxLi43ZGUzODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0xMDY0LDYgKzEwNjQsMTEgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6ZGVhY3RpdmF0ZSgpCiAgICAgc2NoZWR1bGVPcGVyYXRpb25UaW1lcigp
OwogfQogCitUaHJlYWRJZGVudGlmaWVyIElEQlRyYW5zYWN0aW9uOjpvcmlnaW5UaHJlYWRJRCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmgKaW5kZXggYThhMzI5MS4uY2EyMTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC0xNDMsNiArMTQzLDggQEAgcHVi
bGljOgogCiAgICAgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5lY3Rpb25Qcm94
eSgpOwogCisgICAgVGhyZWFkSWRlbnRpZmllciBvcmlnaW5UaHJlYWRJRCgpIGNvbnN0OworCiBw
cml2YXRlOgogICAgIElEQlRyYW5zYWN0aW9uKElEQkRhdGFiYXNlJiwgY29uc3QgSURCVHJhbnNh
Y3Rpb25JbmZvJiwgSURCT3BlbkRCUmVxdWVzdCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHku
Y3BwCmluZGV4IDdiNjYwMjMuLmEyM2Y1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3Bw
CkBAIC0yOCwxNiArMjgsMzYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisj
aW5jbHVkZSAiSURCQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisjaW5j
bHVkZSAiSURCS2V5UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgog
I2luY2x1ZGUgIklEQlJlcXVlc3REYXRhLmgiCiAjaW5jbHVkZSAiSURCUmVzdWx0RGF0YS5oIgor
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBJREJDbGllbnQgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZS4uLiBQYXJhbWV0ZXJzLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cit2b2lkIHBlcmZvcm1DYWxs
YmFja09uQ29ycmVjdFRocmVhZChUJiBvYmplY3QsIHZvaWQgKFQ6OiptZXRob2QpKFBhcmFtZXRl
cnMuLi4pLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIGlmIChvYmplY3Qub3JpZ2luVGhyZWFkSUQoKSA9PSBjdXJyZW50VGhy
ZWFkKCkpIHsKKyAgICAgICAgKG9iamVjdC4qbWV0aG9kKShhcmd1bWVudHMuLi4pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9
IG9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAg
ICAgICByZXR1cm47CisKKyAgICBjb250ZXh0LT5wb3N0Q3Jvc3NUaHJlYWRUYXNrKG9iamVjdCwg
bWV0aG9kLCBhcmd1bWVudHMuLi4pOworfQorCiBJREJDb25uZWN0aW9uUHJveHk6OklEQkNvbm5l
Y3Rpb25Qcm94eShJREJDb25uZWN0aW9uVG9TZXJ2ZXImIGNvbm5lY3Rpb24pCiAgICAgOiBtX2Nv
bm5lY3Rpb25Ub1NlcnZlcihjb25uZWN0aW9uKQogICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkKQEAgLTU3LDEwICs3Nyw2IEBAIHZvaWQg
SURCQ29ubmVjdGlvblByb3h5OjpkZXJlZigpCiAKIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJ
REJDb25uZWN0aW9uUHJveHk6Om9wZW5EYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGRhdGFiYXNlSWRlbnRpZmllciwg
dWludDY0X3QgdmVyc2lvbikKIHsKLSAgICAvLyBGSVhNRTogSGFuZGxlIFdvcmtlcnMKLSAgICBp
ZiAoIWlzTWFpblRocmVhZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIFJlZlB0
cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0OwogICAgIHsKICAgICAgICAgTG9ja2VyPExvY2s+
IGxvY2tlcihtX29wZW5EQlJlcXVlc3RNYXBMb2NrKTsKQEAgLTcwLDIwICs4NiwxMyBAQCBSZWZQ
dHI8SURCT3BlbkRCUmVxdWVzdD4gSURCQ29ubmVjdGlvblByb3h5OjpvcGVuRGF0YWJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dAogICAgICAgICBtX29wZW5EQlJlcXVlc3RNYXAuc2V0KHJlcXVl
c3QtPnJlc291cmNlSWRlbnRpZmllcigpLCByZXF1ZXN0LmdldCgpKTsKICAgICB9CiAKLSAgICBJ
REJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSgqdGhpcywgKnJlcXVlc3QpOwotCi0gICAgLy8gRklY
TUU6IEZvciB3b3JrZXJzLCBtYXJzaGFsbCB0aGlzIHRvIHRoZSBtYWluIHRocmVhZCBpZiBuZWNl
c3NhcnkuCi0gICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIub3BlbkRhdGFiYXNlKHJlcXVlc3REYXRh
KTsKKyAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURCQ29ubmVjdGlvblRvU2VydmVy
OjpvcGVuRGF0YWJhc2UsIElEQlJlcXVlc3REYXRhKCp0aGlzLCAqcmVxdWVzdCkpOwogCiAgICAg
cmV0dXJuIHJlcXVlc3Q7CiB9CiAKIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJDb25uZWN0
aW9uUHJveHk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgZGF0YWJhc2VJZGVudGlmaWVyKQogewotICAg
IC8vIEZJWE1FOiBIYW5kbGUgV29ya2VycwotICAgIGlmICghaXNNYWluVGhyZWFkKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCiAgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVl
c3Q7CiAgICAgewogICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fb3BlbkRCUmVxdWVzdE1h
cExvY2spOwpAQCAtOTMsMTAgKzEwMiw3IEBAIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJD
b25uZWN0aW9uUHJveHk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAgICAg
ICAgIG1fb3BlbkRCUmVxdWVzdE1hcC5zZXQocmVxdWVzdC0+cmVzb3VyY2VJZGVudGlmaWVyKCks
IHJlcXVlc3QuZ2V0KCkpOwogICAgIH0KIAotICAgIElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRh
KCp0aGlzLCAqcmVxdWVzdCk7Ci0KLSAgICAvLyBGSVhNRTogRm9yIHdvcmtlcnMsIG1hcnNoYWxs
IHRoaXMgdG8gdGhlIG1haW4gdGhyZWFkIGlmIG5lY2Vzc2FyeS4KLSAgICBtX2Nvbm5lY3Rpb25U
b1NlcnZlci5kZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSk7CisgICAgY2FsbENvbm5lY3Rpb25P
bk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlRGF0YWJhc2UsIElEQlJl
cXVlc3REYXRhKCp0aGlzLCAqcmVxdWVzdCkpOwogCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CkBA
IC0xMTgsMTIxICsxMjQsMTAxIEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojpjb21wbGV0ZU9w
ZW5EQlJlcXVlc3QoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKICAgICBSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdDsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBs
b2NrZXIobV9vcGVuREJSZXF1ZXN0TWFwTG9jayk7Ci0gICAgICAgIHJlcXVlc3QgPSBtX29wZW5E
QlJlcXVlc3RNYXAuZ2V0KHJlc3VsdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSk7CisgICAgICAg
IHJlcXVlc3QgPSBtX29wZW5EQlJlcXVlc3RNYXAudGFrZShyZXN1bHREYXRhLnJlcXVlc3RJZGVu
dGlmaWVyKCkpOwogICAgICAgICBBU1NFUlQocmVxdWVzdCk7CiAgICAgfQogCi0gICAgcmVxdWVz
dC0+cmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRhKTsKKyAgICBBU1NFUlQocmVxdWVzdCk7CisK
KyAgICBwZXJmb3JtQ2FsbGJhY2tPbkNvcnJlY3RUaHJlYWQoKnJlcXVlc3QsICZJREJPcGVuREJS
ZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkLCByZXN1bHREYXRhKTsKIH0KIAogdm9pZCBJREJDb25u
ZWN0aW9uUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVy
YXRpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICBJREJSZXF1ZXN0
RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRpb24pOworICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJl
cXVlc3REYXRhKG9wZXJhdGlvbik7CiAgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCi0g
ICAgLy8gRklYTUU6IEhhbmRsZSB3b3JrZXIgdGhyZWFkIG1hcnNoYWxsaW5nLgotCi0gICAgbV9j
b25uZWN0aW9uVG9TZXJ2ZXIuY3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIGluZm8pOwor
ICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNy
ZWF0ZU9iamVjdFN0b3JlLCByZXF1ZXN0RGF0YSwgaW5mbyk7CiB9CiAKIHZvaWQgSURCQ29ubmVj
dGlvblByb3h5OjpkZWxldGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0
aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKLSAgICBJREJSZXF1ZXN0RGF0
YSByZXF1ZXN0RGF0YShvcGVyYXRpb24pOworICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVl
c3REYXRhKG9wZXJhdGlvbik7CiAgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCi0gICAg
Ly8gRklYTUU6IEhhbmRsZSB3b3JrZXIgdGhyZWFkIG1hcnNoYWxsaW5nLgotCi0gICAgbV9jb25u
ZWN0aW9uVG9TZXJ2ZXIuZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3Jl
TmFtZSk7CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUsIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpOwog
fQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Y2xlYXJPYmplY3RTdG9yZShUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3BlcmF0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCiB7
Ci0gICAgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKKyAgICBjb25zdCBJ
REJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRpb24pOwogICAgIHNhdmVPcGVyYXRpb24o
b3BlcmF0aW9uKTsKIAotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VyIHRocmVhZCBtYXJzaGFs
bGluZy4KLQotICAgIG1fY29ubmVjdGlvblRvU2VydmVyLmNsZWFyT2JqZWN0U3RvcmUocmVxdWVz
dERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5U
aHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSwgcmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5
OjpjcmVhdGVJbmRleChUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJ
bmRleEluZm8mIGluZm8pCiB7Ci0gICAgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0
aW9uKTsKKyAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRpb24pOwog
ICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0aW9uKTsKIAotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29y
a2VyIHRocmVhZCBtYXJzaGFsbGluZy4KLQotICAgIG1fY29ubmVjdGlvblRvU2VydmVyLmNyZWF0
ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKTsKKyAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVh
ZCgmSURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGVJbmRleCwgcmVxdWVzdERhdGEsIGluZm8p
OwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6ZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKLSAgICBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShv
cGVyYXRpb24pOworICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlv
bik7CiAgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCi0gICAgLy8gRklYTUU6IEhhbmRs
ZSB3b3JrZXIgdGhyZWFkIG1hcnNoYWxsaW5nLgotCi0gICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIu
ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1l
KTsKKyAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURCQ29ubmVjdGlvblRvU2VydmVy
OjpkZWxldGVJbmRleCwgcmVxdWVzdERhdGEsIFdURk1vdmUob2JqZWN0U3RvcmVJZGVudGlmaWVy
KSwgaW5kZXhOYW1lKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OnB1dE9yQWRkKFRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIElEQktleSoga2V5LCBjb25zdCBJREJWYWx1
ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG1vZGUp
CiB7Ci0gICAgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKKyAgICBjb25z
dCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRpb24pOwogICAgIHNhdmVPcGVyYXRp
b24ob3BlcmF0aW9uKTsKIAotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VyIHRocmVhZCBtYXJz
aGFsbGluZy4KLQotICAgIG1fY29ubmVjdGlvblRvU2VydmVyLnB1dE9yQWRkKHJlcXVlc3REYXRh
LCBrZXksIHZhbHVlLCBtb2RlKTsKKyAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURC
Q29ubmVjdGlvblRvU2VydmVyOjpwdXRPckFkZCwgcmVxdWVzdERhdGEsIElEQktleURhdGEoa2V5
KSwgdmFsdWUsIG1vZGUpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0UmVjb3Jk
KFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
a2V5UmFuZ2UpCiB7Ci0gICAgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsK
KyAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRpb24pOwogICAgIHNh
dmVPcGVyYXRpb24ob3BlcmF0aW9uKTsKIAotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VyIHRo
cmVhZCBtYXJzaGFsbGluZy4KLQotICAgIG1fY29ubmVjdGlvblRvU2VydmVyLmdldFJlY29yZChy
ZXF1ZXN0RGF0YSwga2V5UmFuZ2UpOworICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZCwgcmVxdWVzdERhdGEsIGtleVJhbmdlKTsK
IH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmdldENvdW50KFRyYW5zYWN0aW9uT3BlcmF0
aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2UpCiB7Ci0gICAg
SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKKyAgICBjb25zdCBJREJSZXF1
ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRpb24pOwogICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0
aW9uKTsKIAotICAgIC8vIEZJWE1FOiBIYW5kbGUgd29ya2VyIHRocmVhZCBtYXJzaGFsbGluZy4K
LQotICAgIG1fY29ubmVjdGlvblRvU2VydmVyLmdldENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5n
ZSk7CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Z2V0Q291bnQsIHJlcXVlc3REYXRhLCBrZXlSYW5nZSk7CiB9CiAKIHZvaWQgSURCQ29ubmVj
dGlvblByb3h5OjpkZWxldGVSZWNvcmQoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZSkKIHsKLSAgICBJREJSZXF1ZXN0RGF0YSBy
ZXF1ZXN0RGF0YShvcGVyYXRpb24pOworICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3RE
YXRhKG9wZXJhdGlvbik7CiAgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCi0gICAgLy8g
RklYTUU6IEhhbmRsZSB3b3JrZXIgdGhyZWFkIG1hcnNoYWxsaW5nLgotCi0gICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXIuZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZSk7CisgICAgY2Fs
bENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlUmVj
b3JkLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2UpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94
eTo6b3BlbkN1cnNvcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJD
dXJzb3JJbmZvJiBpbmZvKQogewotICAgIElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJh
dGlvbik7CisgICAgY29uc3QgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsK
ICAgICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CiAKLSAgICAvLyBGSVhNRTogSGFuZGxlIHdv
cmtlciB0aHJlYWQgbWFyc2hhbGxpbmcuCi0KLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci5vcGVu
Q3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKTsKKyAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVh
ZCgmSURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuQ3Vyc29yLCByZXF1ZXN0RGF0YSwgaW5mbyk7
CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjppdGVyYXRlQ3Vyc29yKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleURhdGEmIGtleSwgdW5zaWduZWQgbG9u
ZyBjb3VudCkKIHsKLSAgICBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRpb24pOwor
ICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlvbik7CiAgICAgc2F2
ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCi0gICAgLy8gRklYTUU6IEhhbmRsZSB3b3JrZXIgdGhy
ZWFkIG1hcnNoYWxsaW5nLgotCi0gICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIuaXRlcmF0ZUN1cnNv
cihyZXF1ZXN0RGF0YSwga2V5LCBjb3VudCk7CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJl
YWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1cnNvciwgcmVxdWVzdERhdGEsIGtl
eSwgY291bnQpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6c2F2ZU9wZXJhdGlvbihU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQpAQCAtMjUzLDI0ICsyMzksMTYgQEAgdm9p
ZCBJREJDb25uZWN0aW9uUHJveHk6OmNvbXBsZXRlT3BlcmF0aW9uKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiAKICAgICBBU1NFUlQob3BlcmF0aW9uKTsKIAotICAgIC8vIEZJWE1F
OiBIYW5kbGUgZ2V0dGluZyBvcGVyYXRpb24tPmNvbXBsZXRlZCgpIG9udG8gdGhlIGNvcnJlY3Qg
dGhyZWFkIHZpYSB0aGUgSURCVHJhbnNhY3Rpb24uCi0gICAgCi0gICAgb3BlcmF0aW9uLT5jb21w
bGV0ZWQocmVzdWx0RGF0YSk7CisgICAgcGVyZm9ybUNhbGxiYWNrT25Db3JyZWN0VGhyZWFkKCpv
cGVyYXRpb24sICZUcmFuc2FjdGlvbk9wZXJhdGlvbjo6Y29tcGxldGVkLCByZXN1bHREYXRhKTsK
IH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgLy8gRklYTUU6IEhhbmRs
ZSB3b3JrZXJzCi0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIuYWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIGNhbGxD
b25uZWN0aW9uT25NYWluVGhyZWFkKCZJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmFib3J0T3BlbkFu
ZFVwZ3JhZGVOZWVkZWQsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9u
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpmaXJlVmVyc2lvbkNo
YW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3Rl
ZFZlcnNpb24pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQogICAgIFJlZlB0cjxJ
REJEYXRhYmFzZT4gZGF0YWJhc2U7CiAgICAgewogICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwTG9jayk7CkBAIC0yODAsMTYgKzI1OCwxMiBAQCB2b2lk
IElEQkNvbm5lY3Rpb25Qcm94eTo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudAogICAgIGlmICghZGF0YWJhc2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGRhdGFiYXNlLT5maXJlVmVyc2lvbkNoYW5nZUV2ZW50KHJlcXVlc3RJZGVudGlmaWVy
LCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICBwZXJmb3JtQ2FsbGJhY2tPbkNvcnJlY3RUaHJlYWQo
KmRhdGFiYXNlLCAmSURCRGF0YWJhc2U6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQsIHJlcXVlc3RJ
ZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJv
eHk6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmll
cikKIHsKLSAgICAvLyBGSVhNRTogSGFuZGxlIFdvcmtlcnMKLSAgICBpZiAoIWlzTWFpblRocmVh
ZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci5kaWRGaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJ
ZGVudGlmaWVyKTsKKyAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURCQ29ubmVjdGlv
blRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50LCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblBy
b3h5Ojpub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdW
ZXJzaW9uKQpAQCAtMzA0LDcgKzI3OCw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojpub3Rp
ZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImCiAKICAg
ICBBU1NFUlQocmVxdWVzdCk7CiAKLSAgICByZXF1ZXN0LT5yZXF1ZXN0QmxvY2tlZChvbGRWZXJz
aW9uLCBuZXdWZXJzaW9uKTsKKyAgICBwZXJmb3JtQ2FsbGJhY2tPbkNvcnJlY3RUaHJlYWQoKnJl
cXVlc3QsICZJREJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0QmxvY2tlZCwgb2xkVmVyc2lvbiwgbmV3
VmVyc2lvbik7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojplc3RhYmxpc2hUcmFuc2Fj
dGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCkBAIC0zMTUsMTEgKzI4OSw3IEBAIHZv
aWQgSURCQ29ubmVjdGlvblByb3h5Ojplc3RhYmxpc2hUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24pCiAgICAgICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9ucy5zZXQodHJhbnNh
Y3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgJnRyYW5zYWN0aW9uKTsKICAgICB9CiAKLSAgICAv
LyBGSVhNRTogSGFuZGxlIFdvcmtlcnMKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci5lc3RhYmxpc2hUcmFuc2FjdGlv
bih0cmFuc2FjdGlvbi5kYXRhYmFzZSgpLmRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIoKSwg
dHJhbnNhY3Rpb24uaW5mbygpKTsKKyAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURC
Q29ubmVjdGlvblRvU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKCksIHRyYW5zYWN0aW9uLmluZm8o
KSk7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpkaWRTdGFydFRyYW5zYWN0aW9uKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJFcnJvciYgZXJyb3IpCkBAIC0zMzIsOSArMzAyLDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJv
eHk6OmRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2EKIAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7CiAKLSAgICAvLyBGSVhNRTogSGFuZGxlIGhv
cHBpbmcgdG8gdGhlIFdvcmtlciB0aHJlYWQgaGVyZSBpZiBuZWNlc3NhcnkuCi0KLSAgICB0cmFu
c2FjdGlvbi0+ZGlkU3RhcnQoZXJyb3IpOworICAgIHBlcmZvcm1DYWxsYmFja09uQ29ycmVjdFRo
cmVhZCgqdHJhbnNhY3Rpb24sICZJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQsIGVycm9yKTsKIH0K
IAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmNvbW1pdFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbikKQEAgLTM0NSwxMSArMzEzLDcgQEAgdm9pZCBJREJDb25uZWN0aW9u
UHJveHk6OmNvbW1pdFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKICAg
ICAgICAgbV9jb21taXR0aW5nVHJhbnNhY3Rpb25zLnNldCh0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpLCAmdHJhbnNhY3Rpb24pOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBIYW5kbGUg
V29ya2VycwotICAgIGlmICghaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLmNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLmluZm8o
KS5pZGVudGlmaWVyKCkpOworICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZENvbW1pdFRyYW5z
YWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJFcnJvciYgZXJyb3IpCkBAIC0zNjIsOSArMzI2LDcgQEAgdm9pZCBJREJDb25u
ZWN0aW9uUHJveHk6OmRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnMKIAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7CiAKLSAgICAvLyBGSVhNRTog
SGFuZGxlIGhvcHBpbmcgdG8gdGhlIFdvcmtlciB0aHJlYWQgaGVyZSBpZiBuZWNlc3NhcnkuCi0K
LSAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tbWl0KGVycm9yKTsKKyAgICBwZXJmb3JtQ2FsbGJhY2tP
bkNvcnJlY3RUaHJlYWQoKnRyYW5zYWN0aW9uLCAmSURCVHJhbnNhY3Rpb246OmRpZENvbW1pdCwg
ZXJyb3IpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6YWJvcnRUcmFuc2FjdGlvbihJ
REJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCkBAIC0zNzUsMTEgKzMzNyw3IEBAIHZvaWQgSURC
Q29ubmVjdGlvblByb3h5OjphYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbikKICAgICAgICAgbV9hYm9ydGluZ1RyYW5zYWN0aW9ucy5zZXQodHJhbnNhY3Rpb24uaW5m
bygpLmlkZW50aWZpZXIoKSwgJnRyYW5zYWN0aW9uKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTog
SGFuZGxlIFdvcmtlcnMKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
LmluZm8oKS5pZGVudGlmaWVyKCkpOworICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uLmluZm8o
KS5pZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6ZGlkQWJvcnRU
cmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQpAQCAtMzkyLDkgKzM1MCw3IEBAIHZvaWQgSURC
Q29ubmVjdGlvblByb3h5OjpkaWRBYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhCiAKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwogCi0gICAgLy8gRklY
TUU6IEhhbmRsZSBob3BwaW5nIHRvIHRoZSBXb3JrZXIgdGhyZWFkIGhlcmUgaWYgbmVjZXNzYXJ5
LgotCi0gICAgdHJhbnNhY3Rpb24tPmRpZEFib3J0KGVycm9yKTsKKyAgICBwZXJmb3JtQ2FsbGJh
Y2tPbkNvcnJlY3RUaHJlYWQoKnRyYW5zYWN0aW9uLCAmSURCVHJhbnNhY3Rpb246OmRpZEFib3J0
LCBlcnJvcik7CiB9CiAKIGJvb2wgSURCQ29ubmVjdGlvblByb3h5OjpoYXNSZWNvcmRPZlRyYW5z
YWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikgY29uc3QKQEAgLTQwNywy
MCArMzYzLDM3IEBAIGJvb2wgSURCQ29ubmVjdGlvblByb3h5OjpoYXNSZWNvcmRPZlRyYW5zYWN0
aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvCiAKIHZvaWQgSURCQ29ubmVjdGlv
blByb3h5OjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0gICAgLy8gRklYTUU6IEhhbmRsZSBXb3JrZXJzCi0g
ICAgaWYgKCFpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXIuZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odHJh
bnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5U
aHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwogfQogCiB2
b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKElEQkRhdGFi
YXNlJiBkYXRhYmFzZSkKIHsKLSAgICAvLyBGSVhNRTogSGFuZGxlIFdvcmtlcnMKLSAgICBpZiAo
IWlzTWFpblRocmVhZCgpKQorICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCwgZGF0YWJhc2UuZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcigpKTsKK30KKwordm9pZCBJREJDb25uZWN0aW9uUHJveHk6
OnNjaGVkdWxlTWFpblRocmVhZFRhc2tzKCkKK3sKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1f
bWFpblRocmVhZFRhc2tMb2NrKTsKKyAgICBpZiAobV9tYWluVGhyZWFkUHJvdGVjdG9yKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci5kYXRhYmFzZUNvbm5lY3Rp
b25DbG9zZWQoZGF0YWJhc2UuZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBt
X21haW5UaHJlYWRQcm90ZWN0b3IgPSAmbV9jb25uZWN0aW9uVG9TZXJ2ZXI7CisgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpc10geworICAgICAgICBoYW5kbGVNYWluVGhyZWFkVGFza3MoKTsKKyAg
ICB9KTsKK30KKwordm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmhhbmRsZU1haW5UaHJlYWRUYXNr
cygpCit7CisgICAgUmVmUHRyPElEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gcHJvdGVjdG9yOworICAg
IHsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX21haW5UaHJlYWRUYXNrTG9jayk7Cisg
ICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRQcm90ZWN0b3IpOworICAgICAgICBwcm90ZWN0b3Ig
PSBXVEZNb3ZlKG1fbWFpblRocmVhZFByb3RlY3Rvcik7CisgICAgfQorCisgICAgd2hpbGUgKGF1
dG8gdGFzayA9IG1fbWFpblRocmVhZFF1ZXVlLnRyeUdldE1lc3NhZ2UoKSkKKyAgICAgICAgdGFz
ay0+cGVyZm9ybVRhc2soKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmdldEFsbERh
dGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG1haW5GcmFtZU9yaWdpbiwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKT4gY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmgKaW5kZXgg
YmZhYjZmNC4uOWVjYThlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaApAQCAtMjcsMTEgKzI3
LDE0IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkNyb3Nz
VGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1
ZGUgIklEQlJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRyYW5zYWN0aW9uT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMDksNiArMTEyLDI3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHNhdmVPcGVyYXRpb24oVHJhbnNhY3Rpb25PcGVyYXRpb24mKTsKIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtZXRlcnMsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
KyAgICB2b2lkIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKHZvaWQgKElEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6Km1ldGhvZCkoUGFyYW1ldGVycy4uLiksIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKKyAgICB7CisgICAgICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAgICAgICAgICAgIChtX2Nv
bm5lY3Rpb25Ub1NlcnZlci4qbWV0aG9kKShhcmd1bWVudHMuLi4pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2sobV9jb25uZWN0aW9uVG9TZXJ2ZXIsIG1ldGhv
ZCwgYXJndW1lbnRzLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1
bWVudHM+CisgICAgdm9pZCBwb3N0TWFpblRocmVhZFRhc2soQXJndW1lbnRzJiYuLi4gYXJndW1l
bnRzKQorICAgIHsKKyAgICAgICAgYXV0byB0YXNrID0gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKGFy
Z3VtZW50cy4uLik7CisgICAgICAgIG1fbWFpblRocmVhZFF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRh
c2spKTsKKworICAgICAgICBzY2hlZHVsZU1haW5UaHJlYWRUYXNrcygpOworICAgIH0KKworICAg
IHZvaWQgc2NoZWR1bGVNYWluVGhyZWFkVGFza3MoKTsKKyAgICB2b2lkIGhhbmRsZU1haW5UaHJl
YWRUYXNrcygpOworCiAgICAgSURCQ29ubmVjdGlvblRvU2VydmVyJiBtX2Nvbm5lY3Rpb25Ub1Nl
cnZlcjsKICAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOwogCkBAIC0x
MjUsNiArMTQ5LDEwIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRp
ZmllciwgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gbV9hY3RpdmVPcGVyYXRpb25zOwog
ICAgIExvY2sgbV90cmFuc2FjdGlvbk9wZXJhdGlvbkxvY2s7CisKKyAgICBNZXNzYWdlUXVldWU8
Q3Jvc3NUaHJlYWRUYXNrPiBtX21haW5UaHJlYWRRdWV1ZTsKKyAgICBMb2NrIG1fbWFpblRocmVh
ZFRhc2tMb2NrOworICAgIFJlZlB0cjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IG1fbWFpblRocmVh
ZFByb3RlY3RvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA0MGUwYzE4Li4yZmU3NzIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkaWREZWxldGVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQogICAgIG1fcHJveHktPmNvbXBsZXRlT3BlcmF0aW9uKHJlc3VsdERhdGEpOwogfQogCi12
b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBJREJLZXkqIGtleSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25zdCBJ
bmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQordm9pZCBJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNv
bnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQiKTsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5o
CmluZGV4IDIzNGY3MGMuLjBkZTBmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgK
QEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgSURC
UmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgaW5kZXhOYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERlbGV0ZUluZGV4KGNv
bnN0IElEQlJlc3VsdERhdGEmKTsKIAotICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBJREJLZXkqLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgY29uc3QgSW5kZXhlZERC
OjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
UHV0T3JBZGQoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCiAgICAgdm9pZCBnZXRSZWNvcmQoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9T
ZXJ2ZXJEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmgKaW5kZXggYmY5ZjJjMi4uYWRjNWI4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNv
bm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmgKQEAgLTM0LDcg
KzM0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJDdXJzb3JJbmZvOwogY2xh
c3MgSURCSW5kZXhJbmZvOwotY2xhc3MgSURCS2V5OwogY2xhc3MgSURCS2V5RGF0YTsKIGNsYXNz
IElEQk9iamVjdFN0b3JlSW5mbzsKIGNsYXNzIElEQlJlcXVlc3REYXRhOwpAQCAtNjcsNyArNjYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJ
bmRleEluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGluZGV4TmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIElEQktleSosIGNvbnN0IElEQlZhbHVlJiwgY29uc3QgSW5kZXhlZERCOjpPYmpl
Y3RTdG9yZU92ZXJ3cml0ZU1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0T3JBZGQoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBj
b25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
VHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCBhNmVhZDcxLi5jZjhjMzAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJh
bnNhY3Rpb25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKQEAgLTQ0LDYgKzQ0LDExIEBAIFRy
YW5zYWN0aW9uT3BlcmF0aW9uOjpUcmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIElEQlJlcXVlCiAgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlm
aWVyKCkpOwogfQogCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBUcmFuc2FjdGlvbk9wZXJhdGlv
bjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNh
Y3Rpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSURC
Q2xpZW50CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
LmgKaW5kZXggNDMwNzdhNC4uYjVmOTk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgK
QEAgLTczLDYgKzczLDggQEAgcHVibGljOgogCiAgICAgVGhyZWFkSWRlbnRpZmllciBvcmlnaW5U
aHJlYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVGhyZWFkSUQ7IH0KIAorICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKwogcHJv
dGVjdGVkOgogICAgIFRyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbikKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVz
b3VyY2VJZGVudGlmaWVyLmNwcAppbmRleCA4YzQzMmI2Li4xY2EwNmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlm
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
UmVzb3VyY2VJZGVudGlmaWVyLmNwcApAQCAtMzcsOCArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyB1aW50NjRfdCBuZXh0Q2xpZW50UmVzb3VyY2VOdW1iZXIoKQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgc3RhdGljIHVpbnQ2NF90IGN1cnJlbnROdW1i
ZXIgPSAxOworICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudE51bWJlcigx
KTsKICAgICByZXR1cm4gY3VycmVudE51bWJlciArPSAyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwCmluZGV4IDNhMDgyNDkuLjBmZjQxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCkBAIC0yODksMTEgKzI4OSw5IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxl
dGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90CiAgICAg
fSk7CiB9CiAKLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIElEQktleSoga2V5LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUs
IGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUp
Cit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYg
dmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0
ZU1vZGUpCiB7CiAgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAg
ICBJREJLZXlEYXRhIGtleURhdGEoa2V5KTsKLQogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVN
b2RlXSB7CiAgICAgICAgIG1fc2VydmVyLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwg
dmFsdWUsIG92ZXJ3cml0ZU1vZGUpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCmlu
ZGV4IDJlZGIyMTAuLmRmMzQzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9p
ZCBjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5mbyYp
IGZpbmFsOwogICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKSBmaW5h
bDsKLSAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgSURCS2V5KiwgY29u
c3QgSURCVmFsdWUmLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSkg
ZmluYWw7CisgICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVP
dmVyd3JpdGVNb2RlKSBmaW5hbDsKICAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZ2V0Q291bnQo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBmaW5hbDsKICAg
ICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKaW5kZXggZTkyYzBkZi4uNGFkMDBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5o
IgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCkBAIC0xNjcsNiArMTY4LDE3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhUYXNrKSA9IDA7IC8vIEV4ZWN1dGVzIHRoZSB0
YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgdm9pZCBwb3N0Q3Jvc3NUaHJlYWRUYXNrKEFyZ3Vt
ZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIGF1dG8gY3Jvc3NUaHJlYWRUYXNr
ID0gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKGFyZ3VtZW50cy4uLik7CisgICAgICAgIGF1dG8qIHJh
d1Rhc2sgPSBjcm9zc1RocmVhZFRhc2sucmVsZWFzZSgpOworICAgICAgICBwb3N0VGFzayhbPV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxD
cm9zc1RocmVhZFRhc2s+IHRhc2socmF3VGFzayk7CisgICAgICAgICAgICB0YXNrLT5wZXJmb3Jt
VGFzaygpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICAvLyBHZXRzIHRoZSBuZXh0IGlkIGlu
IGEgY2lyY3VsYXIgc2VxdWVuY2UgZnJvbSAxIHRvIDJeMzEtMS4KICAgICBpbnQgY2lyY3VsYXJT
ZXF1ZW50aWFsSUQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDY0MmRiMGQuLjFjYmUyMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wNS0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQiAoV29ya2Vycyk6IEdldCBldmVyeXRoaW5n
IHRvIHRoZSByaWdodCB0aHJlYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU3Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3Rl
bnNlbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmg6CisKIDIwMTYtMDUtMDUgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTWVkaWEgY29udHJvbHMg
ZG9uJ3QgdXBkYXRlIGlmIGNvbnRyb2xsZXIgaXMgY3JlYXRlZCBhZnRlciB0aGUgaW50ZXJmYWNl
IGlzIGNyZWF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5jcHAKaW5kZXggZWMxMDM4Yi4uZmUwYThmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKQEAgLTEzMSw5ICsxMzEsOCBAQCB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCB1aQogICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVu
dDo6RGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhO
YW1lKSk7CiB9CiAKLXZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpwdXRPckFkZChjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIElEQktleSoga2V5LCBjb25zdCBJREJWYWx1
ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG1vZGUp
Cit2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJW
YWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG1v
ZGUpCiB7Ci0gICAgSURCS2V5RGF0YSBrZXlEYXRhKGtleSk7CiAgICAgc2VuZChNZXNzYWdlczo6
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpQdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwg
dmFsdWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtb2RlKSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmgKaW5kZXggNWVhMGM0Yy4uMjVkMTAyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaApAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwg
Y29uc3QgV2ViQ29yZTo6SURCSW5kZXhJbmZvJikgZmluYWw7CiAgICAgdm9pZCBkZWxldGVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpIGZpbmFsOwotICAgIHZvaWQgcHV0T3JB
ZGQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBXZWJDb3JlOjpJREJLZXkqLCBjb25z
dCBXZWJDb3JlOjpJREJWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3Rv
cmVPdmVyd3JpdGVNb2RlKSBmaW5hbDsKKyAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFdlYkNv
cmU6OklEQlZhbHVlJiwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3
cml0ZU1vZGUpIGZpbmFsOwogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJikgZmluYWw7CiAgICAg
dm9pZCBnZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNv
cmU6OklEQktleVJhbmdlRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRh
JikgZmluYWw7Cg==
</data>
<flag name="commit-queue"
          id="302347"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>