<?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>169756</bug_id>
          
          <creation_ts>2017-03-16 08:41:11 -0700</creation_ts>
          <short_desc>Add a reload policy where only expired subresources are revalidated</short_desc>
          <delta_ts>2017-03-17 12:52:58 -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>Page Loading</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288559</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-03-16 08:41:11 -0700</bug_when>
    <thetext>Currently a reload will revalidate all subresources on the page (except those with Cache-Control: immutable). Add a weaker policy where only expired subresources are revalidated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288985</commentid>
    <comment_count>1</comment_count>
      <attachid>304772</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-03-17 06:29:47 -0700</bug_when>
    <thetext>Created attachment 304772
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288988</commentid>
    <comment_count>2</comment_count>
      <attachid>304774</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-03-17 06:54:20 -0700</bug_when>
    <thetext>Created attachment 304774
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288992</commentid>
    <comment_count>3</comment_count>
      <attachid>304775</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-03-17 07:16:01 -0700</bug_when>
    <thetext>Created attachment 304775
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288993</commentid>
    <comment_count>4</comment_count>
      <attachid>304776</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-03-17 07:18:45 -0700</bug_when>
    <thetext>Created attachment 304776
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288994</commentid>
    <comment_count>5</comment_count>
      <attachid>304775</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-03-17 07:47:01 -0700</bug_when>
    <thetext>Comment on attachment 304775
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288996</commentid>
    <comment_count>6</comment_count>
      <attachid>304777</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-03-17 07:54:45 -0700</bug_when>
    <thetext>Created attachment 304777
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288997</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-17 07:55:50 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289103</commentid>
    <comment_count>8</comment_count>
      <attachid>304777</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-17 12:52:53 -0700</bug_when>
    <thetext>Comment on attachment 304777
patch

Clearing flags on attachment: 304777

Committed r214113: &lt;http://trac.webkit.org/changeset/214113&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289104</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-17 12:52:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304772</attachid>
            <date>2017-03-17 06:29:47 -0700</date>
            <delta_ts>2017-03-17 06:54:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>reload-revalidation-policy-9.patch</filename>
            <type>text/plain</type>
            <size>40568</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE3LTAzLTE3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5
IHdoZXJlIG9ubHkgZXhwaXJlZCBzdWJyZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3Rz
L2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHkuaHRtbAorCisgICAgICAgIFRoZSBkZWZhdWx0IHJl
bG9hZCBiZWhhdmlvciByZXZhbGlkYXRlcyBhbGwgcmVzb3VyY2VzIG9uIHRoZSBwYWdlLiBUaGlz
IHBhdGNoIGFkZHMKKyAgICAgICAgYSBuZXcgcG9saWN5IHRoYXQgcmV2YWxpZGF0ZXMgZXhwaXJl
ZCAoYW5kIHVuY2FjaGVhYmxlKSByZXNvdXJjZXMgb25seS4gVXNpbmcgdGhpcworICAgICAgICBw
b2xpY3kgY2FuIHNwZWVkIHVwIHJlbG9hZHMgc2lnbmlmaWNhbnRseSBhbmQgYWxzbyByZWR1Y2Ug
bmV0d29yayB0cmFmZmljIGFuZCBzZXJ2ZXIKKyAgICAgICAgbG9hZC4KKworICAgICAgICAqIGhp
c3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkNhY2hlUGFnZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQmFja0ZvcndhcmRMb2FkVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1JlbG9hZCk6CisKKyAgICAgICAgICAgIEFkZCBhIGhlbHBlciBm
dW5jdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6bG9nTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVsb2FkKToKKworICAgICAgICAgICAgUmVwbGFjZSBib29sIGFyZ3VtZW50cyB3aXRo
IE9wdGlvblNldDxSZWxvYWRPcHRpb24+LiBNb3N0IG9mIHRoZSBwYXRjaCBpcyBhYm91dCBhZGFw
dGluZyB0byB0aGlzLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJyZXNvdXJj
ZUNhY2hlUG9saWN5KToKKworICAgICAgICAgICAgUmV0dXJuIENhY2hlUG9saWN5VmVyaWZ5IGZv
ciAnUmVsb2FkRXhwaXJlZE9ubHknIGZyYW1lIGxvYWQgdHlwZS4gVGhpcyBpcyB0aGUgc3Vic3Rh
bnRpdmUKKyAgICAgICAgICAgIGNoYW5nZSB0aGF0IGNhdXNlcyB0aGUgYmVoYXZpb3IgZGlmZmVy
ZW5jZS4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRl
Rm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0UmVx
dWVzdENhY2hpbmdQb2xpY3kpOgorCisgICAgICAgICAgICBGbGlwIHRoZSBpc01haW5SZXNvdXJj
ZSBjb25kaXRpb24gZm9yIGJldHRlciByZWFkYWJpbGl0eS4KKworICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAg
KiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1bWVudFN0YXRlKToKKyAgICAgICAgKiBwYWdlL0RpYWdu
b3N0aWNMb2dnaW5nS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJlbG9hZFJldmFsaWRhdGluZ0V4cGlyZWRLZXkpOgorICAgICAgICAqIHBhZ2UvRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmg6CisgICAgICAgICogcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKToKKyAg
ICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpmb3JjZVJlbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlbG9hZEV4cGlyZWRPbmx5KToKKworICAgICAg
ICAgICAgVGVzdGluZyBzdXBwb3J0LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTctMDMtMTQgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTGliXSBVc2UgVVNFKEdM
SUIpIGd1YXJkcyBpbiBXZWJDb3JlL3dvcmtlcnMvCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9Q
YWdlQ2FjaGUuY3BwCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw2ICsyNDksMTMgQEAgc3RhdGlj
IGJvb2wgY2FuQ2FjaGVQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgICAgIGlzQ2FjaGVhYmxlID0gZmFs
c2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZEV4cGlyZWRPbmx5OiB7CisgICAgICAgIC8vIE5vIHBvaW50IHdyaXRpbmcgdG8gdGhlIGNhY2hl
IG9uIGEgcmVsb2FkLCBzaW5jZSB3ZSB3aWxsIGp1c3Qgd3JpdGUgb3ZlciBpdCBhZ2FpbiB3aGVu
IHdlIGxlYXZlIHRoYXQgcGFnZS4KKyAgICAgICAgUENMT0coIiAgIC1Mb2FkIHR5cGUgaXM6IFJl
bG9hZFJldmFsaWRhdGluZ0V4cGlyZWQiKTsKKyAgICAgICAgbG9nUGFnZUNhY2hlRmFpbHVyZURp
YWdub3N0aWNNZXNzYWdlKGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LCBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJlbG9hZFJldmFsaWRhdGluZ0V4cGlyZWRLZXkoKSk7CisgICAgICAgIGlzQ2FjaGVh
YmxlID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIEZyYW1lTG9hZFR5
cGU6OlN0YW5kYXJkOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6QmFjazoKICAgICBjYXNlIEZy
YW1lTG9hZFR5cGU6OkZvcndhcmQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyMyw3ICs0MjMsMTEgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbW92ZVNjcmlwdFRv
RQogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyYsIGNvbnN0IGJv
b2wqIGNvbnN0IG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3Jp
cHRUb0V2YWx1YXRlT25Mb2FkKQogewogICAgIG1fcGVuZGluZ1NjcmlwdFRvRXZhbHVhdGVPbkxv
YWRPbmNlID0gb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkID8gKm9wdGlvbmFsU2NyaXB0
VG9FdmFsdWF0ZU9uTG9hZCA6IGVtcHR5U3RyaW5nKCk7Ci0gICAgbV9wYWdlLm1haW5GcmFtZSgp
LmxvYWRlcigpLnJlbG9hZChvcHRpb25hbElnbm9yZUNhY2hlID8gKm9wdGlvbmFsSWdub3JlQ2Fj
aGUgOiBmYWxzZSk7CisKKyAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25z
OworICAgIGlmIChvcHRpb25hbElnbm9yZUNhY2hlICYmICpvcHRpb25hbElnbm9yZUNhY2hlKQor
ICAgICAgICByZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbjsKKyAgICBt
X3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQogCiB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNp
b24gMjEzODk1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw3IEBAIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBl
KEZyYW1lTG9hZFR5cGUKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkOgogICAgIGNh
c2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
RnJvbU9yaWdpbjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5Ogog
ICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJl
ZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6
OlJlcGxhY2U6CkBAIC0xNjcsNiArMTY4LDI2IEBAIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBl
KEZyYW1lTG9hZFR5cGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgaXNSZWxvYWQoRnJh
bWVMb2FkVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRnJhbWVM
b2FkVHlwZTo6UmVsb2FkOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdp
bjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkOgorICAgIGNhc2Ug
RnJhbWVMb2FkVHlwZTo6U2FtZToKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0
aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlcGxhY2U6
CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpCYWNrOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6
Rm9yd2FyZDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIFRoaXMgaXMgbm90IGluIHRoZSBGcmFtZUxvYWRlciBj
bGFzcyB0byBlbXBoYXNpemUgdGhhdCBpdCBkb2VzIG5vdCBkZXBlbmQgb24KIC8vIHByaXZhdGUg
RnJhbWVMb2FkZXIgZGF0YSwgYW5kIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBw
dWJsaWMgZnVuY3Rpb25zCiAvLyB3aXRoIGFjY2VzcyB0byBwcml2YXRlIGRhdGEuICBTaW5jZSBv
bmx5IHRoaXMgLmNwcCBmaWxlIG5lZWRzIGl0LCBtYWtpbmcgaXQKQEAgLTEyMDksNyArMTIzMCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2EKICAgICAgICAgcmVx
dWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihtX2ZyYW1lLnRyZWUoKS50b3AoKS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwogCiAg
ICAgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QocmVxdWVzdCwgbmV3TG9hZFR5cGUsIHRydWUpOwot
ICAgIGlmIChuZXdMb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQgfHwgbmV3TG9hZFR5
cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbikKKyAgICBpZiAoaXNSZWxvYWQo
bmV3TG9hZFR5cGUpKQogICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9y
aW5nQ2FjaGVEYXRhKTsKIAogICAgIEFTU0VSVChuZXdMb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBl
OjpTYW1lKTsKQEAgLTEyNjIsNyArMTI4Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwo
Y29uc3QgRnJhbWVMb2EKICAgICAgICAgbV9xdWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAg
ICAgICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCiAgICAgICAgICAgICBtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnNldElzQ2xpZW50UmVkaXJlY3QodHJ1ZSk7Ci0gICAg
fSBlbHNlIGlmIChzYW1lVVJMICYmIG5ld0xvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZCAmJiBuZXdMb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luKSB7Cisg
ICAgfSBlbHNlIGlmIChzYW1lVVJMICYmICFpc1JlbG9hZChuZXdMb2FkVHlwZSkpIHsKICAgICAg
ICAgLy8gRXhhbXBsZSBvZiB0aGlzIGNhc2UgYXJlIHNpdGVzIHRoYXQgcmVsb2FkIHRoZSBzYW1l
IFVSTCB3aXRoIGEgZGlmZmVyZW50IGNvb2tpZQogICAgICAgICAvLyBkcml2aW5nIHRoZSBnZW5l
cmF0ZWQgY29udGVudCwgb3IgYSBtYXN0ZXIgZnJhbWUgd2l0aCBsaW5rcyB0aGF0IGRyaXZlIGEg
dGFyZ2V0CiAgICAgICAgIC8vIGZyYW1lLCB3aGVyZSB0aGUgdXNlciBoYXMgY2xpY2tlZCBvbiB0
aGUgc2FtZSBsaW5rIHJlcGVhdGVkbHkuCkBAIC0xNDAwLDYgKzE0MjEsOSBAQCBzdGF0aWMgdm9p
ZCBsb2dOYXZpZ2F0aW9uKE1haW5GcmFtZSYgZnJhCiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWRGcm9tT3JpZ2luOgogICAgICAgICBuYXZpZ2F0aW9uRGVzY3JpcHRpb24gPSBBU0NJSUxp
dGVyYWwoInJlbG9hZEZyb21PcmlnaW4iKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGcmFt
ZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKKyAgICAgICAgbmF2aWdhdGlvbkRlc2NyaXB0
aW9uID0gQVNDSUlMaXRlcmFsKCJyZWxvYWRSZXZhbGlkYXRpbmdFeHBpcmVkIik7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKICAgICBjYXNlIEZyYW1l
TG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKICAgICAgICAgLy8g
Tm90IGxvZ2dpbmcgdGhvc2UgZm9yIG5vdy4KQEAgLTE1NzIsNyArMTU5Niw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9h
ZGVyKGxvYWRlci5wdHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6Olllcyk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29s
IGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCit2b2lkIEZyYW1l
TG9hZGVyOjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIHsKICAgICBp
ZiAoIW1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTE1OTMsNyArMTYxNyw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAgICBSZWY8RG9j
dW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRp
YWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJs
KCkpKTsKICAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50
TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeVRvUHJvcGFnYXRlKCkpOwogCi0gICAgbG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lv
bnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGxvYWRlci0+c2V0VXNlckNv
bnRlbnRFeHRlbnNpb25zRW5hYmxlZCghb3B0aW9ucy5jb250YWlucyhSZWxvYWRPcHRpb246OkRp
c2FibGVDb250ZW50QmxvY2tlcnMpKTsKICAgICAKICAgICBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QgPSBsb2FkZXItPnJlcXVlc3QoKTsKIApAQCAtMTYwNSw4ICsxNjI5LDE2IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAgICAgICAgbG9hZGVyLT5zZXRUcmln
Z2VyaW5nQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6OkZv
cm1SZXN1Ym1pdHRlZCkpOwogCiAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9j
dW1lbnRMb2FkZXItPm92ZXJyaWRlRW5jb2RpbmcoKSk7CisKKyAgICBhdXRvIGZyYW1lTG9hZFR5
cGVGb3JSZWxvYWRPcHRpb25zID0gW10gKGF1dG8gb3B0aW9ucykgeworICAgICAgICBpZiAob3B0
aW9ucy5jb250YWlucyhSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pKQorICAgICAgICAgICAgcmV0
dXJuIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW47CisgICAgICAgIGlmIChvcHRpb25z
LmNvbnRhaW5zKFJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpKQorICAgICAgICAgICAgcmV0dXJu
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OworICAgICAgICByZXR1cm4gRnJhbWVM
b2FkVHlwZTo6UmVsb2FkOworICAgIH07CiAgICAgCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRl
cihsb2FkZXIucHRyKCksIGVuZFRvRW5kUmVsb2FkID8gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJv
bU9yaWdpbiA6IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMOjpZZXMpOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBm
cmFtZUxvYWRUeXBlRm9yUmVsb2FkT3B0aW9ucyhvcHRpb25zKSwgMCwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMOjpZZXMpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVy
cyhDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSkK
QEAgLTE5NTksNiArMTk5MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1p
dHRlZCgKIAogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgIGNhc2UgRnJhbWVM
b2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZEV4cGlyZWRPbmx5OgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAgICBjYXNlIEZy
YW1lTG9hZFR5cGU6OlJlcGxhY2U6CiAgICAgICAgIGhpc3RvcnkoKS51cGRhdGVGb3JSZWxvYWQo
KTsKQEAgLTE5NzYsMTEgKzIwMDksNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9D
b21taXR0ZWQoCiAgICAgICAgIGhpc3RvcnkoKS51cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRC
YWNrRm9yd2FyZExpc3QoKTsKICAgICAgICAgbV9jbGllbnQudHJhbnNpdGlvblRvQ29tbWl0dGVk
Rm9yTmV3UGFnZSgpOwogICAgICAgICBicmVhazsKLQotICAgIC8vIEZJWE1FIFJlbW92ZSB0aGlz
IGNoZWNrIHdoZW4gZHVtbXkgZHMgaXMgcmVtb3ZlZCAod2hhdGV2ZXIgImR1bW15IGRzIiBpcyku
Ci0gICAgLy8gQW4gZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gaWYgd2UncmUgaW4gdGhlIEZy
YW1lTG9hZFR5cGVVbmluaXRpYWxpemVkIHN0YXRlLgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIG1fZG9jdW1lbnRMb2FkZXItPndyaXRl
cigpLnNldE1JTUVUeXBlKGRsLT5yZXNwb25zZU1JTUVUeXBlKCkpOwpAQCAtMjE5MSw2ICsyMjE5
LDcgQEAgQ2FjaGVQb2xpY3kgRnJhbWVMb2FkZXI6OnN1YnJlc291cmNlQ2FjaAogICAgIGNhc2Ug
RnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlNhbWU6CiAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6
OlJlbG9hZEV4cGlyZWRPbmx5OgogICAgICAgICByZXR1cm4gQ2FjaGVQb2xpY3lWZXJpZnk7CiAg
ICAgfQogCkBAIC0yMjc3LDcgKzIzMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRD
b21wbGV0ZUZvclRoCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBo
YWQgYSBzY3JvbGwgcG9pbnQsIHNjcm9sbCB0byBpdCwgb3ZlcnJpZGluZyB0aGUgYW5jaG9yIHBv
aW50IGlmIGFueS4KICAgICAgICAgICAgIGlmIChtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICAg
ICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkgfHwgbV9sb2FkVHlw
ZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQgfHwgbV9sb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBl
OjpSZWxvYWRGcm9tT3JpZ2luKQorICAgICAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUobV9sb2FkVHlwZSkgfHwgaXNSZWxvYWQobV9sb2FkVHlwZSkpCiAgICAgICAgICAgICAg
ICAgICAgIGhpc3RvcnkoKS5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsKICAg
ICAgICAgICAgIH0KIApAQCAtMjU3MywyNyArMjYwMiwzMSBAQCBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeSBGcmFtZUxvYWRlcjo6CiB7CiAgICAgaWYgKG1fb3ZlcnJpZGVDYWNoZVBvbGljeUZv
clRlc3RpbmcpCiAgICAgICAgIHJldHVybiBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5n
LnZhbHVlKCk7Ci0gICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewotICAgICAgICBpZiAocmVxdWVz
dC5pc0NvbmRpdGlvbmFsKCkpCisKKyAgICBpZiAoaXNNYWluUmVzb3VyY2UpIHsKKyAgICAgICAg
aWYgKGlzUmVsb2FkKGxvYWRUeXBlKSB8fCByZXF1ZXN0LmlzQ29uZGl0aW9uYWwoKSkKICAgICAg
ICAgICAgIHJldHVybiBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YTsKLSAgICAgICAgaWYgKGRvY3Vt
ZW50TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSkgewotICAgICAgICAgICAgLy8gSWYg
d2UgaW5oZXJpdCBjYWNoZSBwb2xpY3kgZnJvbSBhIG1haW4gcmVzb3VyY2UsIHdlIHVzZSB0aGUg
RG9jdW1lbnRMb2FkZXIncwotICAgICAgICAgICAgLy8gb3JpZ2luYWwgcmVxdWVzdCBjYWNoZSBw
b2xpY3kgZm9yIHR3byByZWFzb25zOgotICAgICAgICAgICAgLy8gMS4gRm9yIFBPU1QgcmVxdWVz
dHMsIHdlIG11dGF0ZSB0aGUgY2FjaGUgcG9saWN5IGZvciB0aGUgbWFpbiByZXNvdXJjZSwKLSAg
ICAgICAgICAgIC8vICAgIGJ1dCB3ZSBkbyBub3Qgd2FudCB0aGlzIHRvIGFwcGx5IHRvIHN1YnJl
c291cmNlcwotICAgICAgICAgICAgLy8gMi4gRGVsZWdhdGVzIHRoYXQgbW9kaWZ5IHRoZSBjYWNo
ZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBzaG91bGQKLSAgICAgICAgICAgIC8vICAg
IG5vdCBhZmZlY3QgYW55IG90aGVyIHJlc291cmNlcy4gU3VjaCBjaGFuZ2VzIG5lZWQgdG8gYmUg
ZG9uZQotICAgICAgICAgICAgLy8gICAgcGVyIHJlcXVlc3QuCi0gICAgICAgICAgICBSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeSBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5ID0gZG9j
dW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKTsKLSAgICAgICAg
ICAgIC8vIEJhY2stZm9yd2FyZCBuYXZpZ2F0aW9ucyB0cnkgdG8gbG9hZCBtYWluIHJlc291cmNl
IGZyb20gY2FjaGUgb25seSB0byBhdm9pZCByZS1zdWJtaXR0aW5nIGZvcm0gZGF0YSwgYW5kIHN0
YXJ0IG92ZXIgKHdpdGggYSB3YXJuaW5nIGRpYWxvZykgaWYgdGhhdCBmYWlscy4KLSAgICAgICAg
ICAgIC8vIFRoaXMgcG9saWN5IGlzIHNldCBvbiBpbml0aWFsIHJlcXVlc3QgdG9vLCBidXQgc2hv
dWxkIG5vdCBiZSBpbmhlcml0ZWQuCi0gICAgICAgICAgICByZXR1cm4gKG1haW5Eb2N1bWVudE9y
aWdpbmFsQ2FjaGVQb2xpY3kgPT0gUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpID8gUmV0dXJuQ2Fj
aGVEYXRhRWxzZUxvYWQgOiBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5OwotICAgICAg
ICB9Ci0gICAgLy8gRklYTUU6IE90aGVyIEZyYW1lTG9hZGVyIGZ1bmN0aW9ucyBoYXZlIGR1cGxp
Y2F0ZWQgY29kZSBmb3Igc2V0dGluZyBjYWNoZSBwb2xpY3kgb2YgbWFpbiByZXF1ZXN0IHdoZW4g
cmVsb2FkaW5nLgotICAgIC8vIEl0IHNlZW1zIGJldHRlciB0byBtYW5hZ2UgaXQgZXhwbGljaXRs
eSB0aGFuIHRvIGhpZGUgdGhlIGxvZ2ljIGluc2lkZSBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCgp
LgotICAgIH0gZWxzZSBpZiAobG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkIHx8IGxv
YWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4gfHwgcmVxdWVzdC5pc0Nv
bmRpdGlvbmFsKCkpCisKKyAgICAgICAgcmV0dXJuIFVzZVByb3RvY29sQ2FjaGVQb2xpY3k7Cisg
ICAgfQorCisgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpKQogICAgICAgICByZXR1cm4g
UmVsb2FkSWdub3JpbmdDYWNoZURhdGE7CiAKKyAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+aXNM
b2FkaW5nSW5BUElTZW5zZSgpKSB7CisgICAgICAgIC8vIElmIHdlIGluaGVyaXQgY2FjaGUgcG9s
aWN5IGZyb20gYSBtYWluIHJlc291cmNlLCB3ZSB1c2UgdGhlIERvY3VtZW50TG9hZGVyJ3MKKyAg
ICAgICAgLy8gb3JpZ2luYWwgcmVxdWVzdCBjYWNoZSBwb2xpY3kgZm9yIHR3byByZWFzb25zOgor
ICAgICAgICAvLyAxLiBGb3IgUE9TVCByZXF1ZXN0cywgd2UgbXV0YXRlIHRoZSBjYWNoZSBwb2xp
Y3kgZm9yIHRoZSBtYWluIHJlc291cmNlLAorICAgICAgICAvLyAgICBidXQgd2UgZG8gbm90IHdh
bnQgdGhpcyB0byBhcHBseSB0byBzdWJyZXNvdXJjZXMKKyAgICAgICAgLy8gMi4gRGVsZWdhdGVz
IHRoYXQgbW9kaWZ5IHRoZSBjYWNoZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBzaG91
bGQKKyAgICAgICAgLy8gICAgbm90IGFmZmVjdCBhbnkgb3RoZXIgcmVzb3VyY2VzLiBTdWNoIGNo
YW5nZXMgbmVlZCB0byBiZSBkb25lCisgICAgICAgIC8vICAgIHBlciByZXF1ZXN0LgorICAgICAg
ICBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9s
aWN5ID0gZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKTsK
KyAgICAgICAgLy8gQmFjay1mb3J3YXJkIG5hdmlnYXRpb25zIHRyeSB0byBsb2FkIG1haW4gcmVz
b3VyY2UgZnJvbSBjYWNoZSBvbmx5IHRvIGF2b2lkIHJlLXN1Ym1pdHRpbmcgZm9ybSBkYXRhLCBh
bmQgc3RhcnQgb3ZlciAod2l0aCBhIHdhcm5pbmcgZGlhbG9nKSBpZiB0aGF0IGZhaWxzLgorICAg
ICAgICAvLyBUaGlzIHBvbGljeSBpcyBzZXQgb24gaW5pdGlhbCByZXF1ZXN0IHRvbywgYnV0IHNo
b3VsZCBub3QgYmUgaW5oZXJpdGVkLgorICAgICAgICByZXR1cm4gKG1haW5Eb2N1bWVudE9yaWdp
bmFsQ2FjaGVQb2xpY3kgPT0gUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpID8gUmV0dXJuQ2FjaGVE
YXRhRWxzZUxvYWQgOiBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5OworICAgIH0KKwog
ICAgIHJldHVybiBVc2VQcm90b2NvbENhY2hlUG9saWN5OwogfQogCkBAIC0yODU5LDggKzI4OTIs
NyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRQZXJmb3JtRnJhZ21lbnROCiAgICAgLy8gRklY
TUU6IFdoYXQgYWJvdXQgbG9hZCB0eXBlcyBvdGhlciB0aGFuIFN0YW5kYXJkIGFuZCBSZWxvYWQ/
CiAKICAgICByZXR1cm4gKCFpc0Zvcm1TdWJtaXNzaW9uIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGh0dHBNZXRob2QsICJnZXQiKSkKLSAgICAgICAgJiYgbG9hZFR5cGUgIT0gRnJh
bWVMb2FkVHlwZTo6UmVsb2FkCi0gICAgICAgICYmIGxvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGU6
OlJlbG9hZEZyb21PcmlnaW4KKyAgICAgICAgJiYgIWlzUmVsb2FkKGxvYWRUeXBlKQogICAgICAg
ICAmJiBsb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlOjpTYW1lCiAgICAgICAgICYmICFzaG91bGRS
ZWxvYWQobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSwgdXJsKQogICAgICAgICAvLyBXZSBkb24n
dCB3YW50IHRvIGp1c3Qgc2Nyb2xsIGlmIGEgbGluayBmcm9tIHdpdGhpbiBhCkBAIC0zNDA3LDYg
KzM0MzksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJCiAgICAg
ICAgIHN3aXRjaCAobG9hZFR5cGUpIHsKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxv
YWQ6CiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKKyAgICAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKICAgICAgICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6QmFjazoKQEAgLTM0MjYsNyAr
MzQ1OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEkKICAgICAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTYW1lOgot
ICAgICAgICBkZWZhdWx0OgorICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlcGxhY2U6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcg
QEAgc3RydWN0IEZyYW1lTG9hZFJlcXVlc3Q7CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiAKIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBlKEZyYW1lTG9hZFR5cGUpOwor
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFtZUxvYWRUeXBlKTsKIAogY2xhc3MgRnJh
bWVMb2FkZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYW1lTG9hZGVyKTsKQEAgLTEx
OSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cmxTZWxlY3Rl
ZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBMb2NrSGlzdG9yeSwg
TG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6
bnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9t
KTsKICAgICB2b2lkIHN1Ym1pdEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSwgYm9v
bCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBvdmVycmlk
ZUVuY29kaW5nKTsKIAogICAgIHZvaWQgb3BlbihDYWNoZWRGcmFtZUJhc2UmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24gMjEzODk1KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIEZyYW1lU3RhdGUgewpAQCAt
NDQsNiArNDYsMTIgQEAgZW51bSBQb2xpY3lBY3Rpb24gewogICAgIFBvbGljeUlnbm9yZQogfTsK
IAorZW51bSBjbGFzcyBSZWxvYWRPcHRpb24geworICAgIEV4cGlyZWRPbmx5ID0gMSA8PCAwLAor
ICAgIEZyb21PcmlnaW4gID0gMSA8PCAxLAorICAgIERpc2FibGVDb250ZW50QmxvY2tlcnMgPSAx
IDw8IDIsCit9OworCiBlbnVtIGNsYXNzIEZyYW1lTG9hZFR5cGUgewogICAgIFN0YW5kYXJkLAog
ICAgIEJhY2ssCkBAIC01NCw2ICs2Miw3IEBAIGVudW0gY2xhc3MgRnJhbWVMb2FkVHlwZSB7CiAg
ICAgUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCAvLyBGSVhNRTogTWVyZ2UgImxv
Y2tCYWNrRm9yd2FyZExpc3QiLCAibG9ja0hpc3RvcnkiLCAicXVpY2tSZWRpcmVjdCIgYW5kICJj
bGllbnRSZWRpcmVjdCIgaW50byBhIHNpbmdsZSBjb25jZXB0IG9mIHJlZGlyZWN0LgogICAgIFJl
cGxhY2UsCiAgICAgUmVsb2FkRnJvbU9yaWdpbiwKKyAgICBFeHBpcmVkT25seQogfTsKIAogZW51
bSBjbGFzcyBOZXdGcmFtZU9wZW5lclBvbGljeSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
OSw2ICsyMjksNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlRG9jdW1lbnRTCiAg
ICAgc3dpdGNoIChtX2ZyYW1lLmxvYWRlcigpLmxvYWRUeXBlKCkpIHsKICAgICBjYXNlIEZyYW1l
TG9hZFR5cGU6OlJlbG9hZDoKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21Pcmln
aW46CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKICAgICBjYXNl
IEZyYW1lTG9hZFR5cGU6OlNhbWU6CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZXBsYWNlOgog
ICAgICAgICAvLyBOb3QgcmVzdG9yaW5nIHRoZSBkb2N1bWVudCBzdGF0ZS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAJKHJldmlzaW9uIDIx
Mzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCwxMSBAQCBTdHJpbmcgRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjpyZWxvYWRGcm9tCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgicmVsb2FkRnJvbU9y
aWdpbiIpOwogfQogCitTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZWxvYWRSZXZhbGlk
YXRpbmdFeHBpcmVkS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJyZWxvYWRSZXZh
bGlkYXRpbmdFeHBpcmVkIik7Cit9CisKIFN0cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnNh
bWVMb2FkS2V5KCkKIHsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzYW1lTG9hZCIpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCShyZXZpc2lv
biAyMTM4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBT
dHJpbmcgcmVkaXJlY3RLZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIHJlbG9hZEZyb21PcmlnaW5L
ZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIHJlbG9hZEtleSgpOworICAgIHN0YXRpYyBTdHJpbmcg
cmVsb2FkUmV2YWxpZGF0aW5nRXhwaXJlZEtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgcmVwbGFj
ZUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VMb2FkZWRLZXkoKTsKICAgICBzdGF0
aWMgU3RyaW5nIHJlc291cmNlUmVzcG9uc2VTb3VyY2VLZXkoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQyLDkgKzI0Miw5IEBAIHZvaWQgVXNlcklucHV0QnJpZGdlOjpsb2FkUmVxdWVzdChjb25zdCAK
ICAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChyZXF1ZXN0KTsKIH0KIAotdm9p
ZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKEZyYW1lKiBmcmFtZSwgYm9vbCBlbmRUb0Vu
ZFJlbG9hZCwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBJbnB1dFNvdXJjZSkKK3ZvaWQg
VXNlcklucHV0QnJpZGdlOjpyZWxvYWRGcmFtZShGcmFtZSogZnJhbWUsIE9wdGlvblNldDxSZWxv
YWRPcHRpb24+IG9wdGlvbnMsIElucHV0U291cmNlKQogewotICAgIGZyYW1lLT5sb2FkZXIoKS5y
ZWxvYWQoZW5kVG9FbmRSZWxvYWQsIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGZyYW1l
LT5sb2FkZXIoKS5yZWxvYWQob3B0aW9ucyk7CiB9CiAKIHZvaWQgVXNlcklucHV0QnJpZGdlOjpz
dG9wTG9hZGluZ0ZyYW1lKEZyYW1lKiBmcmFtZSwgSW5wdXRTb3VyY2UpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVz
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KIApAQCAtODgsNyArODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOYXZpZ2F0aW9uIEFQSXMu
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1
ZXN0JiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVsb2FkLCBi
b29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIElucHV0U291cmNlID0gSW5wdXRTb3VyY2U6OlVz
ZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBPcHRpb25T
ZXQ8UmVsb2FkT3B0aW9uPiwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wTG9hZGluZ0ZyYW1lKEZyYW1lKiwgSW5wdXRTb3VyY2Ug
c291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdHJ5
Q2xvc2VQYWdlKElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjEzODk1KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODIwLDcgKzI4MjAsMTYgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFVzZXNNb2NrU2Nyb2xsQW5pbWF0
bwogCiB2b2lkIEludGVybmFsczo6Zm9yY2VSZWxvYWQoYm9vbCBlbmRUb0VuZCkKIHsKLSAgICBm
cmFtZSgpLT5sb2FkZXIoKS5yZWxvYWQoZW5kVG9FbmQpOworICAgIE9wdGlvblNldDxSZWxvYWRP
cHRpb24+IHJlbG9hZE9wdGlvbnM7CisgICAgaWYgKGVuZFRvRW5kKQorICAgICAgICByZWxvYWRP
cHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbjsKKworICAgIGZyYW1lKCktPmxvYWRl
cigpLnJlbG9hZChyZWxvYWRPcHRpb25zKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnJlbG9hZEV4
cGlyZWRPbmx5KCkKK3sKKyAgICBmcmFtZSgpLT5sb2FkZXIoKS5yZWxvYWQoUmVsb2FkT3B0aW9u
OjpFeHBpcmVkT25seSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbmFibGVBdXRvU2l6ZU1vZGUo
Ym9vbCBlbmFibGVkLCBpbnQgbWluaW11bVdpZHRoLCBpbnQgbWluaW11bUhlaWdodCwgaW50IG1h
eGltdW1XaWR0aCwgaW50IG1heGltdW1IZWlnaHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsNyBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIHRvb2xUaXBGcm9tRWxlbWVudChFbGVtZW50JikgY29uc3Q7CiAKICAgICB2b2lkIGZv
cmNlUmVsb2FkKGJvb2wgZW5kVG9FbmQpOworICAgIHZvaWQgcmVsb2FkRXhwaXJlZE9ubHkoKTsK
IAogICAgIHZvaWQgZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wgZW5hYmxlZCwgaW50IG1pbmltdW1X
aWR0aCwgaW50IG1pbmltdW1IZWlnaHQsIGludCBtYXhpbXVtV2lkdGgsIGludCBtYXhpbXVtSGVp
Z2h0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24g
MjEzODk1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTEsNiArMzkxLDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7
CiAgICAgdm9pZCBzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGJvb2xlYW4gZW5hYmxlZCk7CiAK
ICAgICB2b2lkIGZvcmNlUmVsb2FkKGJvb2xlYW4gZW5kVG9FbmQpOworICAgIHZvaWQgcmVsb2Fk
RXhwaXJlZE9ubHkoKTsKIAogICAgIHZvaWQgZW5hYmxlQXV0b1NpemVNb2RlKGJvb2xlYW4gZW5h
YmxlZCwgbG9uZyBtaW5pbXVtV2lkdGgsIGxvbmcgbWluaW11bUhlaWdodCwgbG9uZyBtYXhpbXVt
V2lkdGgsIGxvbmcgbWF4aW11bUhlaWdodCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIx
Mzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM4IEBACisyMDE3LTAzLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5IHdoZXJlIG9ubHkgZXhwaXJlZCBzdWJyZXNv
dXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQ
YWdlUmVsb2FkKToKKyAgICAgICAgKFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMp
OgorICAgICAgICAoV0tQYWdlUmVsb2FkRnJvbU9yaWdpbik6CisgICAgICAgIChXS1BhZ2VSZWxv
YWRFeHBpcmVkT25seSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVsb2FkXSk6CisgICAg
ICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWxvYWRGcm9tT3JpZ2luXSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyByZWxvYWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZEZyb21PcmlnaW5d
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkRXhwaXJlZE9ubHldKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luZ0NvbnRleHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQ
cm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZWxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZFJldXNlQ29tbWl0dGVkU2Fu
ZGJveEV4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAx
Ny0wMy0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4gRml4IHN5bnRheCBlcnJvciBpbiBHVEsrIEFQSSBkb2NzLgpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAkocmV2aXNpb24g
MjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDgsMTEgKzI0OCw4IEBAIGJvb2wgV2ViRnJhbWVQcm94eTo6ZGlk
SGFuZGxlQ29udGVudEZpbHQKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlIHsgbV9wYWdl
IH07CiAgICAgQVNTRVJUKHBhZ2UpOwogICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
LnJlcXVlc3RVbmJsb2NrQXN5bmMoW3BhZ2VdKGJvb2wgdW5ibG9ja2VkKSB7Ci0gICAgICAgIGlm
ICh1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9
IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIHBhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50
QmxvY2tlcnNFbmFibGVkKTsKLSAgICAgICAgfQorICAgICAgICBpZiAodW5ibG9ja2VkKQorICAg
ICAgICAgICAgcGFnZS0+cmVsb2FkKHsgfSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNp
b24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNjMsNyArMTE2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
dG9wTG9hZGluZygpCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQo
KTsKIH0KIAotUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoYm9v
bCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCitSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6
UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogCkBAIC0xMTg2LDcgKzExODYsOSBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlCiAgICAgCiAgICAgYXV0byBuYXZpZ2F0aW9u
ID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpLCByZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIFdURlJlcG9ydEJhY2t0cmFjZSgp
OworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5z
dGFydCgpOwogCiAgICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
NCw3ICs0MDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11
bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQ
b2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCiAgICAgdm9pZCBzdG9wTG9h
ZGluZygpOwotICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlbG9hZChib29sIHJlbG9hZEZy
b21PcmlnaW4sIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gcmVsb2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+KTsKIAog
ICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGdvRm9yd2FyZCgpOwogICAgIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IGdvQmFjaygpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsMjMgKzI0MiwyMiBA
QCB2b2lkIFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVJlZiBwYWdlUmVmCiAKIHZvaWQgV0tQYWdl
UmVsb2FkKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9y
aWdpbiA9IGZhbHNlOwotICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRy
dWU7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQoV2ViQ29yZTo6
UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2FkV2l0aG91
dENvbnRlbnRCbG9ja2VycyhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICBjb25zdCBib29sIHJl
bG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0Vu
YWJsZWQgPSBmYWxzZTsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChyZWxvYWRGcm9tT3Jp
Z2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9h
ZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpOwogfQogCiB2
b2lkIFdLUGFnZVJlbG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgY29u
c3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gdHJ1ZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRC
bG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKHJlbG9h
ZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbik7Cit9CisKK3ZvaWQg
V0tQYWdlUmVsb2FkRXhwaXJlZE9ubHkoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiB9
CiAKIGJvb2wgV0tQYWdlVHJ5Q2xvc2UoV0tQYWdlUmVmIHBhZ2VSZWYpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDYgKzg0LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlU3RvcExvYWRpbmcoV0tQYWdlUgogV0tf
RVhQT1JUIHZvaWQgV0tQYWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lk
IFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMoV0tQYWdlUmVmIHBhZ2UpOwogV0tf
RVhQT1JUIHZvaWQgV0tQYWdlUmVsb2FkRnJvbU9yaWdpbihXS1BhZ2VSZWYgcGFnZSk7CitXS19F
WFBPUlQgdm9pZCBXS1BhZ2VSZWxvYWRFeHBpcmVkT25seShXS1BhZ2VSZWYgcGFnZSk7CiAKIFdL
X0VYUE9SVCBib29sIFdLUGFnZVRyeUNsb3NlKFdLUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2
b2lkIFdLUGFnZUNsb3NlKFdLUGFnZVJlZiBwYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTg3LDE2ICsxODcsMTIgQEAgLSAodm9pZClzdG9wTG9hZGluZwogCiAtICh2b2lk
KXJlbG9hZAogewotICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IGZhbHNlOwotICAg
IGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Ci0gICAgX3BhZ2UtPnJl
bG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBfcGFn
ZS0+cmVsb2FkKHsgfSk7CiB9CiAKIC0gKHZvaWQpcmVsb2FkRnJvbU9yaWdpbgogewotICAgIGNv
bnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IHRydWU7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21Pcmln
aW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6
UmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luKTsKIH0KIAogLSAoTlNTdHJpbmcgKilhcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtODQ0
LDkgKzg0NCw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWdvRm9yd2FyZAogCiAtIChXS05hdmlnYXRp
b24gKilyZWxvYWQKIHsKLSAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsK
LSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIGF1dG8g
bmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2Nr
ZXJzRW5hYmxlZCk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZCh7IH0pOwog
ICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtODU1LDkgKzg1
Myw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZAogCiAtIChXS05hdmlnYXRpb24gKilyZWxv
YWRGcm9tT3JpZ2luCiB7Ci0gICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gdHJ1ZTsK
LSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIGF1dG8g
bmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2Nr
ZXJzRW5hYmxlZCk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChXZWJDb3Jl
OjpSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pOwogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAg
ICAgcmV0dXJuIG5pbDsKIApAQCAtMzY5Miw5ICszNjg4LDE2IEBAIC0gKHZvaWQpX2tpbGxXZWJD
b250ZW50UHJvY2VzcwogCiAtIChXS05hdmlnYXRpb24gKilfcmVsb2FkV2l0aG91dENvbnRlbnRC
bG9ja2VycwogewotICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IGZhbHNlOwotICAg
IGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IGZhbHNlOwotICAgIGF1dG8gbmF2
aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJz
RW5hYmxlZCk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChXZWJDb3JlOjpS
ZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpOworICAgIGlmICghbmF2aWdhdGlv
bikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmln
YXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKFdLTmF2aWdhdGlvbiAqKV9y
ZWxvYWRFeHBpcmVkT25seQoreworICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQo
V2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAgICAgaWYgKCFuYXZpZ2F0aW9u
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDIx
Mzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDcgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQQogI2VuZGlmCiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9y
ZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEy
KSwgaW9zKDEwLjApKTsKKy0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRFeHBpcmVkT25seSBXS19B
UElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiAKIC0gKHZvaWQpX2tpbGxX
ZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDgg
KzM0MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlbG9hZEJyb3dzaW4KICAgICAg
ICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1F
KFRpbWVvdXQpKTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxs
YmFja3NQZXJQYWdlLnNldChwYWdlLT5wYWdlSUQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0g
ICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgcGFnZS0+cmVsb2Fk
KHJlbG9hZEZyb21PcmlnaW4sIHsgfSk7CisgICAgcGFnZS0+cmVsb2FkKHsgfSk7CiB9CiAKIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246Om5hdmlnYXRpb25PY2N1cnJlZEZvclBhZ2UoY29uc3Qg
V2ViUGFnZVByb3h5JiBwYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjk3LDcg
KzEyOTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlCiAgICAg
bV9wYWdlLT5zZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpOwogfQogCi12b2lkIFdlYlBh
Z2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwg
Ym9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIFdlYlBhZ2U6OnJlbG9hZCh1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIGNvbnN0IFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICAgICBTZW5kU3RvcFJl
c3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcih0aGlzKTsKIApAQCAtMTMwNSw3ICsxMzA1LDcgQEAg
dm9pZCBXZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbgogICAgIG1fcGVuZGluZ05h
dmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKIAogICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNr
ZXIuYmVnaW5Mb2FkKG1fbWFpbkZyYW1lLmdldCgpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsK
LSAgICBjb3JlUGFnZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5yZWxvYWRGcmFtZShtX21haW5GcmFt
ZS0+Y29yZUZyYW1lKCksIHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQp
OworICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLnJlbG9hZEZyYW1lKG1fbWFpbkZy
YW1lLT5jb3JlRnJhbWUoKSwgT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj46OmZyb21SYXcocmVsb2Fk
T3B0aW9ucykpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdvRm9yd2FyZCh1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIHVpbnQ2NF90IGJhY2tGb3J3YXJkSXRlbUlEKQpAQCAtNDEwMyw3ICs0MTAzLDcgQEAg
c3RhdGljIGJvb2wgc2hvdWxkUmV1c2VDb21taXR0ZWRTYW5kYm94RQogICAgIEZyYW1lTG9hZFR5
cGUgZnJhbWVMb2FkVHlwZSA9IGZyYW1lTG9hZGVyLmxvYWRUeXBlKCk7CiAKICAgICAvLyBJZiB0
aGUgcGFnZSBpcyBiZWluZyByZWxvYWRlZCwgaXQgc2hvdWxkIHJldXNlIHdoYXRldmVyIGV4dGVu
c2lvbiBpcyBjb21taXR0ZWQuCi0gICAgaWYgKGZyYW1lTG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlw
ZTo6UmVsb2FkIHx8IGZyYW1lTG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9y
aWdpbikKKyAgICBpZiAoaXNSZWxvYWQoZnJhbWVMb2FkVHlwZSkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWVMb2FkZXIu
ZG9jdW1lbnRMb2FkZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0Nyw3ICsxMDQ3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsK
ICAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7
CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJp
bmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9p
bnQgc2NyZWVuUG9pbnQpOwotICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Ym9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgdWludDMyX3QgcmVsb2FkT3B0aW9ucywgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJik7CiAgICAgdm9pZCBnb0ZvcndhcmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1
aW50NjRfdCk7CiAgICAgdm9pZCBnb0JhY2sodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRf
dCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
dWludDY0X3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDAsNyArMTQwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAKICAgICBOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhTdHJpbmcgdXJs
LCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3Jl
ZW5Qb2ludCkKIAotICAgIFJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2Fk
RnJvbU9yaWdpbiwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAgIFJlbG9hZCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgU3RvcExvYWRp
bmcoKQogCiAgICAgU3RvcExvYWRpbmdGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjE0MTA0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDMtMTcgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHJlbG9hZCBwb2xpY3kg
d2hlcmUgb25seSBleHBpcmVkIHN1YnJlc291cmNlcyBhcmUgcmV2YWxpZGF0ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc1NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFt
ZS5tbToKKyAgICAgICAgKHRvV2ViRnJhbWVMb2FkVHlwZSk6CisgICAgICAgICgtW1dlYkZyYW1l
IHJlbG9hZF0pOgorICAgICAgICAoLVtXZWJGcmFtZSByZWxvYWRGcm9tT3JpZ2luXSk6CisKIDIw
MTctMDMtMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wcm92ZSB0aGUgc3lzdGVtIHRyYWNpbmcgcG9pbnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNTksNiArMTA1OSw5
IEBAIHN0YXRpYyBXZWJGcmFtZUxvYWRUeXBlIHRvV2ViRnJhbWVMb2FkVHkKICAgICAgICAgcmV0
dXJuIFdlYkZyYW1lTG9hZFR5cGVSZXBsYWNlOwogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVs
b2FkRnJvbU9yaWdpbjoKICAgICAgICAgcmV0dXJuIFdlYkZyYW1lTG9hZFR5cGVSZWxvYWRGcm9t
T3JpZ2luOworICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkUmV2YWxpZGF0aW5nRXhwaXJl
ZDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXZWJGcmFt
ZUxvYWRUeXBlUmVsb2FkOwogICAgIH0KIH0KIApAQCAtMjUzOSwxMiArMjU0MiwxMiBAQCAtICh2
b2lkKXN0b3BMb2FkaW5nCiAKIC0gKHZvaWQpcmVsb2FkCiB7Ci0gICAgX3ByaXZhdGUtPmNvcmVG
cmFtZS0+bG9hZGVyKCkucmVsb2FkKGZhbHNlKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5s
b2FkZXIoKS5yZWxvYWQoeyB9KTsKIH0KIAogLSAodm9pZClyZWxvYWRGcm9tT3JpZ2luCiB7Ci0g
ICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkucmVsb2FkKHRydWUpOworICAgIF9wcml2
YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLnJlbG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkZy
b21PcmlnaW4pOwogfQogCiAtIChXZWJGcmFtZSAqKWZpbmRGcmFtZU5hbWVkOihOU1N0cmluZyAq
KW5hbWUKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzg5NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAzLTE3ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5IHdo
ZXJlIG9ubHkgZXhwaXJlZCBzdWJyZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUv
cmVsb2FkLWV4cGlyZWQtb25seS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvY2FjaGUvcmVsb2FkLWV4cGlyZWQtb25seS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9kb2N1bWVudC13aXRoLWNhY2hlZC11bmlxdWUtc2Ny
aXB0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3Jh
bmRvbS1jYWNoZWQuY2dpOgorCiAyMDE3LTAzLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBTeW5jIHdlYi1wbGF0Zm9ybS10ZXN0cyB1cCB0byByZXZpc2lv
biBhNWI5NWNiMzE5MTQ1MDcwODhhNGVkYTE2Zjc2NzRiYmM2ZjMzMTNmCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHktZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVsb2FkLWV4cGlyZWQt
b25seS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS9yZWxvYWQtZXhwaXJlZC1vbmx5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jl
bG9hZC1leHBpcmVkLW9ubHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHkuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHkuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8Ym9keT4KKzxzY3JpcHQ+CitpZiAodGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0Q2Fu
T3BlbldpbmRvd3MoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KK2NvbnN0
IHRlc3RXaW5kb3cgPSB3aW5kb3cub3BlbignaHR0cDovLzEyNy4wLjAuMTo4MDAwL2NhY2hlL3Jl
c291cmNlcy9kb2N1bWVudC13aXRoLWNhY2hlZC11bmlxdWUtc2NyaXB0Lmh0bWwnKTsKKwordmFy
IGZpcnN0TnVtYmVyOword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQp
ID0+IHsKKyAgICBpZiAoZmlyc3ROdW1iZXIpIHsKKyAgICAgICAgY29uc3Qgc2Vjb25kTnVtYmVy
ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgaWYgKGZpcnN0TnVtYmVyID09IHNlY29uZE51bWJlcikK
KyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlBBU1MiOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IGBGQUlMOiBmaXJzdE51
bWJlcj17JGZpcnN0TnVtYmVyfSBzZWNvbmROdW1iZXI9eyRzZWNvbmROdW1iZXJ9YDsKKyAgICAg
ICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmaXJzdE51bWJlciA9IGV2ZW50LmRhdGE7Cisg
ICAgaWYgKHRlc3RXaW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB0ZXN0V2luZG93LmludGVybmFs
cy5yZWxvYWRFeHBpcmVkT25seSgpOworfSk7CisKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvZG9jdW1lbnQtd2l0aC1jYWNoZWQtdW5pcXVl
LXNjcmlwdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUv
cmVzb3VyY2VzL2RvY3VtZW50LXdpdGgtY2FjaGVkLXVuaXF1ZS1zY3JpcHQuaHRtbAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9kb2N1bWVu
dC13aXRoLWNhY2hlZC11bmlxdWUtc2NyaXB0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1IEBACis8aDE+PC9oMT4KKzxzY3JpcHQgc3JjPSdyYW5kb20tY2FjaGVkLmNnaSc+PC9zY3Jp
cHQ+Cis8c2NyaXB0Pgord2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShyYW5kb21OdW1iZXIsICcq
Jyk7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3Vy
Y2VzL3JhbmRvbS1jYWNoZWQuY2dpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FjaGUvcmVzb3VyY2VzL3JhbmRvbS1jYWNoZWQuY2dpCShyZXZpc2lvbiAyMTM4OTUpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9yYW5kb20tY2FjaGVkLmNn
aQkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDYgQEAKIAogcHJpbnQgIkNvbnRlbnQtdHlwZTog
dGV4dC9qYXZhc2NyaXB0XG4iOwogcHJpbnQgIkNhY2hlLWNvbnRyb2w6IG1heC1hZ2U9NjAwMDBc
biI7Ci1wcmludCAiRVRhZzogXCIxMjM0NTY3ODlcIlxuIjsKIHByaW50ICJcbiI7CiAKIG15ICRy
YW5kb21fbnVtYmVyID0gaW50KHJhbmQoMTAwMDAwMDAwMDAwMCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304774</attachid>
            <date>2017-03-17 06:54:20 -0700</date>
            <delta_ts>2017-03-17 07:16:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>reload-revalidation-policy-10.patch</filename>
            <type>text/plain</type>
            <size>40545</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE3LTAzLTE3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5
IHdoZXJlIG9ubHkgZXhwaXJlZCBzdWJyZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3Rz
L2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHkuaHRtbAorCisgICAgICAgIFRoZSBkZWZhdWx0IHJl
bG9hZCBiZWhhdmlvciByZXZhbGlkYXRlcyBhbGwgcmVzb3VyY2VzIG9uIHRoZSBwYWdlLiBUaGlz
IHBhdGNoIGFkZHMKKyAgICAgICAgYSBuZXcgcG9saWN5IHRoYXQgcmV2YWxpZGF0ZXMgZXhwaXJl
ZCAoYW5kIHVuY2FjaGVhYmxlKSByZXNvdXJjZXMgb25seS4gVXNpbmcgdGhpcworICAgICAgICBw
b2xpY3kgY2FuIHNwZWVkIHVwIHJlbG9hZHMgc2lnbmlmaWNhbnRseSBhbmQgYWxzbyByZWR1Y2Ug
bmV0d29yayB0cmFmZmljIGFuZCBzZXJ2ZXIKKyAgICAgICAgbG9hZC4KKworICAgICAgICAqIGhp
c3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkNhY2hlUGFnZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQmFja0ZvcndhcmRMb2FkVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1JlbG9hZCk6CisKKyAgICAgICAgICAgIEFkZCBhIGhlbHBlciBm
dW5jdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6bG9nTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVsb2FkKToKKworICAgICAgICAgICAgUmVwbGFjZSBib29sIGFyZ3VtZW50cyB3aXRo
IE9wdGlvblNldDxSZWxvYWRPcHRpb24+LiBNb3N0IG9mIHRoZSBwYXRjaCBpcyBhYm91dCBhZGFw
dGluZyB0byB0aGlzLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJyZXNvdXJj
ZUNhY2hlUG9saWN5KToKKworICAgICAgICAgICAgUmV0dXJuIENhY2hlUG9saWN5VmVyaWZ5IGZv
ciAnUmVsb2FkRXhwaXJlZE9ubHknIGZyYW1lIGxvYWQgdHlwZS4gVGhpcyBpcyB0aGUgc3Vic3Rh
bnRpdmUKKyAgICAgICAgICAgIGNoYW5nZSB0aGF0IGNhdXNlcyB0aGUgYmVoYXZpb3IgZGlmZmVy
ZW5jZS4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRl
Rm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0UmVx
dWVzdENhY2hpbmdQb2xpY3kpOgorCisgICAgICAgICAgICBGbGlwIHRoZSBpc01haW5SZXNvdXJj
ZSBjb25kaXRpb24gZm9yIGJldHRlciByZWFkYWJpbGl0eS4KKworICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAg
KiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1bWVudFN0YXRlKToKKyAgICAgICAgKiBwYWdlL0RpYWdu
b3N0aWNMb2dnaW5nS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJlbG9hZFJldmFsaWRhdGluZ0V4cGlyZWRLZXkpOgorICAgICAgICAqIHBhZ2UvRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmg6CisgICAgICAgICogcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKToKKyAg
ICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpmb3JjZVJlbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlbG9hZEV4cGlyZWRPbmx5KToKKworICAgICAg
ICAgICAgVGVzdGluZyBzdXBwb3J0LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTctMDMtMTQgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTGliXSBVc2UgVVNFKEdM
SUIpIGd1YXJkcyBpbiBXZWJDb3JlL3dvcmtlcnMvCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9Q
YWdlQ2FjaGUuY3BwCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw2ICsyNDksMTMgQEAgc3RhdGlj
IGJvb2wgY2FuQ2FjaGVQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgICAgIGlzQ2FjaGVhYmxlID0gZmFs
c2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZEV4cGlyZWRPbmx5OiB7CisgICAgICAgIC8vIE5vIHBvaW50IHdyaXRpbmcgdG8gdGhlIGNhY2hl
IG9uIGEgcmVsb2FkLCBzaW5jZSB3ZSB3aWxsIGp1c3Qgd3JpdGUgb3ZlciBpdCBhZ2FpbiB3aGVu
IHdlIGxlYXZlIHRoYXQgcGFnZS4KKyAgICAgICAgUENMT0coIiAgIC1Mb2FkIHR5cGUgaXM6IFJl
bG9hZFJldmFsaWRhdGluZ0V4cGlyZWQiKTsKKyAgICAgICAgbG9nUGFnZUNhY2hlRmFpbHVyZURp
YWdub3N0aWNNZXNzYWdlKGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LCBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJlbG9hZFJldmFsaWRhdGluZ0V4cGlyZWRLZXkoKSk7CisgICAgICAgIGlzQ2FjaGVh
YmxlID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIEZyYW1lTG9hZFR5
cGU6OlN0YW5kYXJkOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6QmFjazoKICAgICBjYXNlIEZy
YW1lTG9hZFR5cGU6OkZvcndhcmQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyMyw3ICs0MjMsMTEgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbW92ZVNjcmlwdFRv
RQogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyYsIGNvbnN0IGJv
b2wqIGNvbnN0IG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3Jp
cHRUb0V2YWx1YXRlT25Mb2FkKQogewogICAgIG1fcGVuZGluZ1NjcmlwdFRvRXZhbHVhdGVPbkxv
YWRPbmNlID0gb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkID8gKm9wdGlvbmFsU2NyaXB0
VG9FdmFsdWF0ZU9uTG9hZCA6IGVtcHR5U3RyaW5nKCk7Ci0gICAgbV9wYWdlLm1haW5GcmFtZSgp
LmxvYWRlcigpLnJlbG9hZChvcHRpb25hbElnbm9yZUNhY2hlID8gKm9wdGlvbmFsSWdub3JlQ2Fj
aGUgOiBmYWxzZSk7CisKKyAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25z
OworICAgIGlmIChvcHRpb25hbElnbm9yZUNhY2hlICYmICpvcHRpb25hbElnbm9yZUNhY2hlKQor
ICAgICAgICByZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbjsKKyAgICBt
X3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQogCiB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNp
b24gMjEzODk1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw3IEBAIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBl
KEZyYW1lTG9hZFR5cGUKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkOgogICAgIGNh
c2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
RnJvbU9yaWdpbjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5Ogog
ICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJl
ZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6
OlJlcGxhY2U6CkBAIC0xNjcsNiArMTY4LDI2IEBAIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBl
KEZyYW1lTG9hZFR5cGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgaXNSZWxvYWQoRnJh
bWVMb2FkVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRnJhbWVM
b2FkVHlwZTo6UmVsb2FkOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdp
bjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkOgorICAgIGNhc2Ug
RnJhbWVMb2FkVHlwZTo6U2FtZToKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0
aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlcGxhY2U6
CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpCYWNrOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6
Rm9yd2FyZDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIFRoaXMgaXMgbm90IGluIHRoZSBGcmFtZUxvYWRlciBj
bGFzcyB0byBlbXBoYXNpemUgdGhhdCBpdCBkb2VzIG5vdCBkZXBlbmQgb24KIC8vIHByaXZhdGUg
RnJhbWVMb2FkZXIgZGF0YSwgYW5kIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBw
dWJsaWMgZnVuY3Rpb25zCiAvLyB3aXRoIGFjY2VzcyB0byBwcml2YXRlIGRhdGEuICBTaW5jZSBv
bmx5IHRoaXMgLmNwcCBmaWxlIG5lZWRzIGl0LCBtYWtpbmcgaXQKQEAgLTEyMDksNyArMTIzMCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2EKICAgICAgICAgcmVx
dWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihtX2ZyYW1lLnRyZWUoKS50b3AoKS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwogCiAg
ICAgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QocmVxdWVzdCwgbmV3TG9hZFR5cGUsIHRydWUpOwot
ICAgIGlmIChuZXdMb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQgfHwgbmV3TG9hZFR5
cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbikKKyAgICBpZiAoaXNSZWxvYWQo
bmV3TG9hZFR5cGUpKQogICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9y
aW5nQ2FjaGVEYXRhKTsKIAogICAgIEFTU0VSVChuZXdMb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBl
OjpTYW1lKTsKQEAgLTEyNjIsNyArMTI4Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwo
Y29uc3QgRnJhbWVMb2EKICAgICAgICAgbV9xdWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAg
ICAgICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCiAgICAgICAgICAgICBtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnNldElzQ2xpZW50UmVkaXJlY3QodHJ1ZSk7Ci0gICAg
fSBlbHNlIGlmIChzYW1lVVJMICYmIG5ld0xvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZCAmJiBuZXdMb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luKSB7Cisg
ICAgfSBlbHNlIGlmIChzYW1lVVJMICYmICFpc1JlbG9hZChuZXdMb2FkVHlwZSkpIHsKICAgICAg
ICAgLy8gRXhhbXBsZSBvZiB0aGlzIGNhc2UgYXJlIHNpdGVzIHRoYXQgcmVsb2FkIHRoZSBzYW1l
IFVSTCB3aXRoIGEgZGlmZmVyZW50IGNvb2tpZQogICAgICAgICAvLyBkcml2aW5nIHRoZSBnZW5l
cmF0ZWQgY29udGVudCwgb3IgYSBtYXN0ZXIgZnJhbWUgd2l0aCBsaW5rcyB0aGF0IGRyaXZlIGEg
dGFyZ2V0CiAgICAgICAgIC8vIGZyYW1lLCB3aGVyZSB0aGUgdXNlciBoYXMgY2xpY2tlZCBvbiB0
aGUgc2FtZSBsaW5rIHJlcGVhdGVkbHkuCkBAIC0xNDAwLDYgKzE0MjEsOSBAQCBzdGF0aWMgdm9p
ZCBsb2dOYXZpZ2F0aW9uKE1haW5GcmFtZSYgZnJhCiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWRGcm9tT3JpZ2luOgogICAgICAgICBuYXZpZ2F0aW9uRGVzY3JpcHRpb24gPSBBU0NJSUxp
dGVyYWwoInJlbG9hZEZyb21PcmlnaW4iKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGcmFt
ZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKKyAgICAgICAgbmF2aWdhdGlvbkRlc2NyaXB0
aW9uID0gQVNDSUlMaXRlcmFsKCJyZWxvYWRSZXZhbGlkYXRpbmdFeHBpcmVkIik7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKICAgICBjYXNlIEZyYW1l
TG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKICAgICAgICAgLy8g
Tm90IGxvZ2dpbmcgdGhvc2UgZm9yIG5vdy4KQEAgLTE1NzIsNyArMTU5Niw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9h
ZGVyKGxvYWRlci5wdHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6Olllcyk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29s
IGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCit2b2lkIEZyYW1l
TG9hZGVyOjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIHsKICAgICBp
ZiAoIW1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTE1OTMsNyArMTYxNyw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAgICBSZWY8RG9j
dW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRp
YWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJs
KCkpKTsKICAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50
TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeVRvUHJvcGFnYXRlKCkpOwogCi0gICAgbG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lv
bnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGxvYWRlci0+c2V0VXNlckNv
bnRlbnRFeHRlbnNpb25zRW5hYmxlZCghb3B0aW9ucy5jb250YWlucyhSZWxvYWRPcHRpb246OkRp
c2FibGVDb250ZW50QmxvY2tlcnMpKTsKICAgICAKICAgICBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QgPSBsb2FkZXItPnJlcXVlc3QoKTsKIApAQCAtMTYwNSw4ICsxNjI5LDE2IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAgICAgICAgbG9hZGVyLT5zZXRUcmln
Z2VyaW5nQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6OkZv
cm1SZXN1Ym1pdHRlZCkpOwogCiAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9j
dW1lbnRMb2FkZXItPm92ZXJyaWRlRW5jb2RpbmcoKSk7CisKKyAgICBhdXRvIGZyYW1lTG9hZFR5
cGVGb3JSZWxvYWRPcHRpb25zID0gW10gKGF1dG8gb3B0aW9ucykgeworICAgICAgICBpZiAob3B0
aW9ucy5jb250YWlucyhSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pKQorICAgICAgICAgICAgcmV0
dXJuIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW47CisgICAgICAgIGlmIChvcHRpb25z
LmNvbnRhaW5zKFJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpKQorICAgICAgICAgICAgcmV0dXJu
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OworICAgICAgICByZXR1cm4gRnJhbWVM
b2FkVHlwZTo6UmVsb2FkOworICAgIH07CiAgICAgCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRl
cihsb2FkZXIucHRyKCksIGVuZFRvRW5kUmVsb2FkID8gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJv
bU9yaWdpbiA6IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMOjpZZXMpOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBm
cmFtZUxvYWRUeXBlRm9yUmVsb2FkT3B0aW9ucyhvcHRpb25zKSwgMCwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMOjpZZXMpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVy
cyhDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSkK
QEAgLTE5NTksNiArMTk5MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1p
dHRlZCgKIAogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgIGNhc2UgRnJhbWVM
b2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZEV4cGlyZWRPbmx5OgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAgICBjYXNlIEZy
YW1lTG9hZFR5cGU6OlJlcGxhY2U6CiAgICAgICAgIGhpc3RvcnkoKS51cGRhdGVGb3JSZWxvYWQo
KTsKQEAgLTE5NzYsMTEgKzIwMDksNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9D
b21taXR0ZWQoCiAgICAgICAgIGhpc3RvcnkoKS51cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRC
YWNrRm9yd2FyZExpc3QoKTsKICAgICAgICAgbV9jbGllbnQudHJhbnNpdGlvblRvQ29tbWl0dGVk
Rm9yTmV3UGFnZSgpOwogICAgICAgICBicmVhazsKLQotICAgIC8vIEZJWE1FIFJlbW92ZSB0aGlz
IGNoZWNrIHdoZW4gZHVtbXkgZHMgaXMgcmVtb3ZlZCAod2hhdGV2ZXIgImR1bW15IGRzIiBpcyku
Ci0gICAgLy8gQW4gZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gaWYgd2UncmUgaW4gdGhlIEZy
YW1lTG9hZFR5cGVVbmluaXRpYWxpemVkIHN0YXRlLgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIG1fZG9jdW1lbnRMb2FkZXItPndyaXRl
cigpLnNldE1JTUVUeXBlKGRsLT5yZXNwb25zZU1JTUVUeXBlKCkpOwpAQCAtMjE5MSw2ICsyMjE5
LDcgQEAgQ2FjaGVQb2xpY3kgRnJhbWVMb2FkZXI6OnN1YnJlc291cmNlQ2FjaAogICAgIGNhc2Ug
RnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlNhbWU6CiAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6
OlJlbG9hZEV4cGlyZWRPbmx5OgogICAgICAgICByZXR1cm4gQ2FjaGVQb2xpY3lWZXJpZnk7CiAg
ICAgfQogCkBAIC0yMjc3LDcgKzIzMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRD
b21wbGV0ZUZvclRoCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBo
YWQgYSBzY3JvbGwgcG9pbnQsIHNjcm9sbCB0byBpdCwgb3ZlcnJpZGluZyB0aGUgYW5jaG9yIHBv
aW50IGlmIGFueS4KICAgICAgICAgICAgIGlmIChtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICAg
ICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkgfHwgbV9sb2FkVHlw
ZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQgfHwgbV9sb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBl
OjpSZWxvYWRGcm9tT3JpZ2luKQorICAgICAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUobV9sb2FkVHlwZSkgfHwgaXNSZWxvYWQobV9sb2FkVHlwZSkpCiAgICAgICAgICAgICAg
ICAgICAgIGhpc3RvcnkoKS5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsKICAg
ICAgICAgICAgIH0KIApAQCAtMjU3MywyNyArMjYwMiwzMSBAQCBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeSBGcmFtZUxvYWRlcjo6CiB7CiAgICAgaWYgKG1fb3ZlcnJpZGVDYWNoZVBvbGljeUZv
clRlc3RpbmcpCiAgICAgICAgIHJldHVybiBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5n
LnZhbHVlKCk7Ci0gICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewotICAgICAgICBpZiAocmVxdWVz
dC5pc0NvbmRpdGlvbmFsKCkpCisKKyAgICBpZiAoaXNNYWluUmVzb3VyY2UpIHsKKyAgICAgICAg
aWYgKGlzUmVsb2FkKGxvYWRUeXBlKSB8fCByZXF1ZXN0LmlzQ29uZGl0aW9uYWwoKSkKICAgICAg
ICAgICAgIHJldHVybiBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YTsKLSAgICAgICAgaWYgKGRvY3Vt
ZW50TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSkgewotICAgICAgICAgICAgLy8gSWYg
d2UgaW5oZXJpdCBjYWNoZSBwb2xpY3kgZnJvbSBhIG1haW4gcmVzb3VyY2UsIHdlIHVzZSB0aGUg
RG9jdW1lbnRMb2FkZXIncwotICAgICAgICAgICAgLy8gb3JpZ2luYWwgcmVxdWVzdCBjYWNoZSBw
b2xpY3kgZm9yIHR3byByZWFzb25zOgotICAgICAgICAgICAgLy8gMS4gRm9yIFBPU1QgcmVxdWVz
dHMsIHdlIG11dGF0ZSB0aGUgY2FjaGUgcG9saWN5IGZvciB0aGUgbWFpbiByZXNvdXJjZSwKLSAg
ICAgICAgICAgIC8vICAgIGJ1dCB3ZSBkbyBub3Qgd2FudCB0aGlzIHRvIGFwcGx5IHRvIHN1YnJl
c291cmNlcwotICAgICAgICAgICAgLy8gMi4gRGVsZWdhdGVzIHRoYXQgbW9kaWZ5IHRoZSBjYWNo
ZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBzaG91bGQKLSAgICAgICAgICAgIC8vICAg
IG5vdCBhZmZlY3QgYW55IG90aGVyIHJlc291cmNlcy4gU3VjaCBjaGFuZ2VzIG5lZWQgdG8gYmUg
ZG9uZQotICAgICAgICAgICAgLy8gICAgcGVyIHJlcXVlc3QuCi0gICAgICAgICAgICBSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeSBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5ID0gZG9j
dW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKTsKLSAgICAgICAg
ICAgIC8vIEJhY2stZm9yd2FyZCBuYXZpZ2F0aW9ucyB0cnkgdG8gbG9hZCBtYWluIHJlc291cmNl
IGZyb20gY2FjaGUgb25seSB0byBhdm9pZCByZS1zdWJtaXR0aW5nIGZvcm0gZGF0YSwgYW5kIHN0
YXJ0IG92ZXIgKHdpdGggYSB3YXJuaW5nIGRpYWxvZykgaWYgdGhhdCBmYWlscy4KLSAgICAgICAg
ICAgIC8vIFRoaXMgcG9saWN5IGlzIHNldCBvbiBpbml0aWFsIHJlcXVlc3QgdG9vLCBidXQgc2hv
dWxkIG5vdCBiZSBpbmhlcml0ZWQuCi0gICAgICAgICAgICByZXR1cm4gKG1haW5Eb2N1bWVudE9y
aWdpbmFsQ2FjaGVQb2xpY3kgPT0gUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpID8gUmV0dXJuQ2Fj
aGVEYXRhRWxzZUxvYWQgOiBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5OwotICAgICAg
ICB9Ci0gICAgLy8gRklYTUU6IE90aGVyIEZyYW1lTG9hZGVyIGZ1bmN0aW9ucyBoYXZlIGR1cGxp
Y2F0ZWQgY29kZSBmb3Igc2V0dGluZyBjYWNoZSBwb2xpY3kgb2YgbWFpbiByZXF1ZXN0IHdoZW4g
cmVsb2FkaW5nLgotICAgIC8vIEl0IHNlZW1zIGJldHRlciB0byBtYW5hZ2UgaXQgZXhwbGljaXRs
eSB0aGFuIHRvIGhpZGUgdGhlIGxvZ2ljIGluc2lkZSBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCgp
LgotICAgIH0gZWxzZSBpZiAobG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkIHx8IGxv
YWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4gfHwgcmVxdWVzdC5pc0Nv
bmRpdGlvbmFsKCkpCisKKyAgICAgICAgcmV0dXJuIFVzZVByb3RvY29sQ2FjaGVQb2xpY3k7Cisg
ICAgfQorCisgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpKQogICAgICAgICByZXR1cm4g
UmVsb2FkSWdub3JpbmdDYWNoZURhdGE7CiAKKyAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+aXNM
b2FkaW5nSW5BUElTZW5zZSgpKSB7CisgICAgICAgIC8vIElmIHdlIGluaGVyaXQgY2FjaGUgcG9s
aWN5IGZyb20gYSBtYWluIHJlc291cmNlLCB3ZSB1c2UgdGhlIERvY3VtZW50TG9hZGVyJ3MKKyAg
ICAgICAgLy8gb3JpZ2luYWwgcmVxdWVzdCBjYWNoZSBwb2xpY3kgZm9yIHR3byByZWFzb25zOgor
ICAgICAgICAvLyAxLiBGb3IgUE9TVCByZXF1ZXN0cywgd2UgbXV0YXRlIHRoZSBjYWNoZSBwb2xp
Y3kgZm9yIHRoZSBtYWluIHJlc291cmNlLAorICAgICAgICAvLyAgICBidXQgd2UgZG8gbm90IHdh
bnQgdGhpcyB0byBhcHBseSB0byBzdWJyZXNvdXJjZXMKKyAgICAgICAgLy8gMi4gRGVsZWdhdGVz
IHRoYXQgbW9kaWZ5IHRoZSBjYWNoZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBzaG91
bGQKKyAgICAgICAgLy8gICAgbm90IGFmZmVjdCBhbnkgb3RoZXIgcmVzb3VyY2VzLiBTdWNoIGNo
YW5nZXMgbmVlZCB0byBiZSBkb25lCisgICAgICAgIC8vICAgIHBlciByZXF1ZXN0LgorICAgICAg
ICBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9s
aWN5ID0gZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKTsK
KyAgICAgICAgLy8gQmFjay1mb3J3YXJkIG5hdmlnYXRpb25zIHRyeSB0byBsb2FkIG1haW4gcmVz
b3VyY2UgZnJvbSBjYWNoZSBvbmx5IHRvIGF2b2lkIHJlLXN1Ym1pdHRpbmcgZm9ybSBkYXRhLCBh
bmQgc3RhcnQgb3ZlciAod2l0aCBhIHdhcm5pbmcgZGlhbG9nKSBpZiB0aGF0IGZhaWxzLgorICAg
ICAgICAvLyBUaGlzIHBvbGljeSBpcyBzZXQgb24gaW5pdGlhbCByZXF1ZXN0IHRvbywgYnV0IHNo
b3VsZCBub3QgYmUgaW5oZXJpdGVkLgorICAgICAgICByZXR1cm4gKG1haW5Eb2N1bWVudE9yaWdp
bmFsQ2FjaGVQb2xpY3kgPT0gUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpID8gUmV0dXJuQ2FjaGVE
YXRhRWxzZUxvYWQgOiBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5OworICAgIH0KKwog
ICAgIHJldHVybiBVc2VQcm90b2NvbENhY2hlUG9saWN5OwogfQogCkBAIC0yODU5LDggKzI4OTIs
NyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRQZXJmb3JtRnJhZ21lbnROCiAgICAgLy8gRklY
TUU6IFdoYXQgYWJvdXQgbG9hZCB0eXBlcyBvdGhlciB0aGFuIFN0YW5kYXJkIGFuZCBSZWxvYWQ/
CiAKICAgICByZXR1cm4gKCFpc0Zvcm1TdWJtaXNzaW9uIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGh0dHBNZXRob2QsICJnZXQiKSkKLSAgICAgICAgJiYgbG9hZFR5cGUgIT0gRnJh
bWVMb2FkVHlwZTo6UmVsb2FkCi0gICAgICAgICYmIGxvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGU6
OlJlbG9hZEZyb21PcmlnaW4KKyAgICAgICAgJiYgIWlzUmVsb2FkKGxvYWRUeXBlKQogICAgICAg
ICAmJiBsb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlOjpTYW1lCiAgICAgICAgICYmICFzaG91bGRS
ZWxvYWQobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSwgdXJsKQogICAgICAgICAvLyBXZSBkb24n
dCB3YW50IHRvIGp1c3Qgc2Nyb2xsIGlmIGEgbGluayBmcm9tIHdpdGhpbiBhCkBAIC0zNDA3LDYg
KzM0MzksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJCiAgICAg
ICAgIHN3aXRjaCAobG9hZFR5cGUpIHsKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxv
YWQ6CiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKKyAgICAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKICAgICAgICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6QmFjazoKQEAgLTM0MjYsNyAr
MzQ1OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEkKICAgICAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTYW1lOgot
ICAgICAgICBkZWZhdWx0OgorICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlcGxhY2U6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcg
QEAgc3RydWN0IEZyYW1lTG9hZFJlcXVlc3Q7CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiAKIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBlKEZyYW1lTG9hZFR5cGUpOwor
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFtZUxvYWRUeXBlKTsKIAogY2xhc3MgRnJh
bWVMb2FkZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYW1lTG9hZGVyKTsKQEAgLTEx
OSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cmxTZWxlY3Rl
ZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBMb2NrSGlzdG9yeSwg
TG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6
bnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9t
KTsKICAgICB2b2lkIHN1Ym1pdEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSwgYm9v
bCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBvdmVycmlk
ZUVuY29kaW5nKTsKIAogICAgIHZvaWQgb3BlbihDYWNoZWRGcmFtZUJhc2UmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24gMjEzODk1KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIEZyYW1lU3RhdGUgewpAQCAt
NDQsNiArNDYsMTIgQEAgZW51bSBQb2xpY3lBY3Rpb24gewogICAgIFBvbGljeUlnbm9yZQogfTsK
IAorZW51bSBjbGFzcyBSZWxvYWRPcHRpb24geworICAgIEV4cGlyZWRPbmx5ID0gMSA8PCAwLAor
ICAgIEZyb21PcmlnaW4gID0gMSA8PCAxLAorICAgIERpc2FibGVDb250ZW50QmxvY2tlcnMgPSAx
IDw8IDIsCit9OworCiBlbnVtIGNsYXNzIEZyYW1lTG9hZFR5cGUgewogICAgIFN0YW5kYXJkLAog
ICAgIEJhY2ssCkBAIC01NCw2ICs2Miw3IEBAIGVudW0gY2xhc3MgRnJhbWVMb2FkVHlwZSB7CiAg
ICAgUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCAvLyBGSVhNRTogTWVyZ2UgImxv
Y2tCYWNrRm9yd2FyZExpc3QiLCAibG9ja0hpc3RvcnkiLCAicXVpY2tSZWRpcmVjdCIgYW5kICJj
bGllbnRSZWRpcmVjdCIgaW50byBhIHNpbmdsZSBjb25jZXB0IG9mIHJlZGlyZWN0LgogICAgIFJl
cGxhY2UsCiAgICAgUmVsb2FkRnJvbU9yaWdpbiwKKyAgICBSZWxvYWRFeHBpcmVkT25seQogfTsK
IAogZW51bSBjbGFzcyBOZXdGcmFtZU9wZW5lclBvbGljeSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyOSw2ICsyMjksNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlRG9jdW1l
bnRTCiAgICAgc3dpdGNoIChtX2ZyYW1lLmxvYWRlcigpLmxvYWRUeXBlKCkpIHsKICAgICBjYXNl
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDoKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZy
b21PcmlnaW46CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKICAg
ICBjYXNlIEZyYW1lTG9hZFR5cGU6OlNhbWU6CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZXBs
YWNlOgogICAgICAgICAvLyBOb3QgcmVzdG9yaW5nIHRoZSBkb2N1bWVudCBzdGF0ZS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAJKHJldmlz
aW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCwxMSBAQCBTdHJpbmcgRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpyZWxvYWRGcm9tCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgicmVsb2Fk
RnJvbU9yaWdpbiIpOwogfQogCitTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZWxvYWRS
ZXZhbGlkYXRpbmdFeHBpcmVkS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJyZWxv
YWRSZXZhbGlkYXRpbmdFeHBpcmVkIik7Cit9CisKIFN0cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6OnNhbWVMb2FkS2V5KCkKIHsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzYW1lTG9hZCIp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCShy
ZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5n
S2V5cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgcmVkaXJlY3RLZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIHJlbG9hZEZyb21P
cmlnaW5LZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIHJlbG9hZEtleSgpOworICAgIHN0YXRpYyBT
dHJpbmcgcmVsb2FkUmV2YWxpZGF0aW5nRXhwaXJlZEtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcg
cmVwbGFjZUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VMb2FkZWRLZXkoKTsKICAg
ICBzdGF0aWMgU3RyaW5nIHJlc291cmNlUmVzcG9uc2VTb3VyY2VLZXkoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCShyZXZpc2lvbiAyMTM4OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQyLDkgKzI0Miw5IEBAIHZvaWQgVXNlcklucHV0QnJpZGdlOjpsb2FkUmVxdWVzdChj
b25zdCAKICAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChyZXF1ZXN0KTsKIH0K
IAotdm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKEZyYW1lKiBmcmFtZSwgYm9vbCBl
bmRUb0VuZFJlbG9hZCwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBJbnB1dFNvdXJjZSkK
K3ZvaWQgVXNlcklucHV0QnJpZGdlOjpyZWxvYWRGcmFtZShGcmFtZSogZnJhbWUsIE9wdGlvblNl
dDxSZWxvYWRPcHRpb24+IG9wdGlvbnMsIElucHV0U291cmNlKQogewotICAgIGZyYW1lLT5sb2Fk
ZXIoKS5yZWxvYWQoZW5kVG9FbmRSZWxvYWQsIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAg
IGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQob3B0aW9ucyk7CiB9CiAKIHZvaWQgVXNlcklucHV0QnJp
ZGdlOjpzdG9wTG9hZGluZ0ZyYW1lKEZyYW1lKiBmcmFtZSwgSW5wdXRTb3VyY2UpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCShyZXZpc2lvbiAyMTM4OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIApAQCAtODgsNyArODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOYXZpZ2F0aW9u
IEFQSXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVs
b2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIElucHV0U291cmNlID0gSW5wdXRTb3Vy
Y2U6OlVzZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBP
cHRpb25TZXQ8UmVsb2FkT3B0aW9uPiwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wTG9hZGluZ0ZyYW1lKEZyYW1lKiwgSW5wdXRT
b3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgdHJ5Q2xvc2VQYWdlKElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjEzODk1
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yODIwLDcgKzI4MjAsMTYgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFVzZXNNb2NrU2Nyb2xs
QW5pbWF0bwogCiB2b2lkIEludGVybmFsczo6Zm9yY2VSZWxvYWQoYm9vbCBlbmRUb0VuZCkKIHsK
LSAgICBmcmFtZSgpLT5sb2FkZXIoKS5yZWxvYWQoZW5kVG9FbmQpOworICAgIE9wdGlvblNldDxS
ZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CisgICAgaWYgKGVuZFRvRW5kKQorICAgICAgICBy
ZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbjsKKworICAgIGZyYW1lKCkt
PmxvYWRlcigpLnJlbG9hZChyZWxvYWRPcHRpb25zKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnJl
bG9hZEV4cGlyZWRPbmx5KCkKK3sKKyAgICBmcmFtZSgpLT5sb2FkZXIoKS5yZWxvYWQoUmVsb2Fk
T3B0aW9uOjpFeHBpcmVkT25seSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbmFibGVBdXRvU2l6
ZU1vZGUoYm9vbCBlbmFibGVkLCBpbnQgbWluaW11bVdpZHRoLCBpbnQgbWluaW11bUhlaWdodCwg
aW50IG1heGltdW1XaWR0aCwgaW50IG1heGltdW1IZWlnaHQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIHRvb2xUaXBGcm9tRWxlbWVudChFbGVtZW50JikgY29uc3Q7CiAKICAgICB2
b2lkIGZvcmNlUmVsb2FkKGJvb2wgZW5kVG9FbmQpOworICAgIHZvaWQgcmVsb2FkRXhwaXJlZE9u
bHkoKTsKIAogICAgIHZvaWQgZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wgZW5hYmxlZCwgaW50IG1p
bmltdW1XaWR0aCwgaW50IG1pbmltdW1IZWlnaHQsIGludCBtYXhpbXVtV2lkdGgsIGludCBtYXhp
bXVtSGVpZ2h0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2
aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTEsNiArMzkxLDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhh
dmlvciB7CiAgICAgdm9pZCBzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGJvb2xlYW4gZW5hYmxl
ZCk7CiAKICAgICB2b2lkIGZvcmNlUmVsb2FkKGJvb2xlYW4gZW5kVG9FbmQpOworICAgIHZvaWQg
cmVsb2FkRXhwaXJlZE9ubHkoKTsKIAogICAgIHZvaWQgZW5hYmxlQXV0b1NpemVNb2RlKGJvb2xl
YW4gZW5hYmxlZCwgbG9uZyBtaW5pbXVtV2lkdGgsIGxvbmcgbWluaW11bUhlaWdodCwgbG9uZyBt
YXhpbXVtV2lkdGgsIGxvbmcgbWF4aW11bUhlaWdodCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM4IEBACisyMDE3LTAzLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5IHdoZXJlIG9ubHkgZXhwaXJlZCBz
dWJyZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAg
ICAoV0tQYWdlUmVsb2FkKToKKyAgICAgICAgKFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50Qmxv
Y2tlcnMpOgorICAgICAgICAoV0tQYWdlUmVsb2FkRnJvbU9yaWdpbik6CisgICAgICAgIChXS1Bh
Z2VSZWxvYWRFeHBpcmVkT25seSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVsb2FkXSk6
CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWxvYWRGcm9tT3JpZ2lu
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyByZWxvYWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZEZyb21P
cmlnaW5dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZWxvYWRXaXRob3V0Q29udGVudEJsb2Nr
ZXJzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkRXhwaXJlZE9ubHldKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luZ0NvbnRleHQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZWxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZFJldXNlQ29tbWl0
dGVkU2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAxNy0wMy0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IHN5bnRheCBlcnJvciBpbiBHVEsrIEFQSSBkb2Nz
LgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAkocmV2
aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsMTEgKzI0OCw4IEBAIGJvb2wgV2ViRnJhbWVQcm94
eTo6ZGlkSGFuZGxlQ29udGVudEZpbHQKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlIHsg
bV9wYWdlIH07CiAgICAgQVNTRVJUKHBhZ2UpOwogICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3BhZ2VdKGJvb2wgdW5ibG9ja2VkKSB7Ci0gICAg
ICAgIGlmICh1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9y
aWdpbiA9IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFi
bGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHBhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBj
b250ZW50QmxvY2tlcnNFbmFibGVkKTsKLSAgICAgICAgfQorICAgICAgICBpZiAodW5ibG9ja2Vk
KQorICAgICAgICAgICAgcGFnZS0+cmVsb2FkKHsgfSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
cmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjMsNyArMTE2Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdG9wTG9hZGluZygpCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIH0KIAotUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxv
YWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCitS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2Vi
Q29yZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogCkBAIC0xMTg2LDcgKzExODYsNyBAQCBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlCiAgICAgCiAgICAgYXV0byBuYXZp
Z2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpLCByZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVk
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBv
cHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7CiAgICAg
bV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBX
VEZNb3ZlKG5hdmlnYXRpb24pOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsNyArNDA0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5n
JiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50
IHNjcmVlblBvaW50KTsKIAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKLSAgICBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiByZWxvYWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRC
bG9ja2Vyc0VuYWJsZWQpOworICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlbG9hZChPcHRp
b25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPik7CiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBnb0ZvcndhcmQoKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBnb0JhY2soKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lv
biAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQyLDIzICsyNDIsMjIgQEAgdm9pZCBXS1BhZ2VTdG9wTG9hZGlu
ZyhXS1BhZ2VSZWYgcGFnZVJlZgogCiB2b2lkIFdLUGFnZVJlbG9hZChXS1BhZ2VSZWYgcGFnZVJl
ZikKIHsKLSAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICBjb25z
dCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIHRvSW1wbChwYWdlUmVm
KS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAg
IHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9u
bHkpOwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMoV0tQYWdl
UmVmIHBhZ2VSZWYpCiB7Ci0gICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7
Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gZmFsc2U7Ci0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5h
YmxlZCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9u
OjpEaXNhYmxlQ29udGVudEJsb2NrZXJzKTsKIH0KIAogdm9pZCBXS1BhZ2VSZWxvYWRGcm9tT3Jp
Z2luKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdp
biA9IHRydWU7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsK
LSAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChXZWJDb3JlOjpSZWxv
YWRPcHRpb246OkZyb21PcmlnaW4pOworfQorCit2b2lkIFdLUGFnZVJlbG9hZEV4cGlyZWRPbmx5
KFdLUGFnZVJlZiBwYWdlUmVmKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdlYkNv
cmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogfQogCiBib29sIFdLUGFnZVRyeUNsb3Nl
KFdLUGFnZVJlZiBwYWdlUmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBAIFdLX0VYUE9SVCB2
b2lkIFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVIKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJlbG9h
ZChXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZWxvYWRXaXRob3V0Q29u
dGVudEJsb2NrZXJzKFdLUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJlbG9h
ZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlUmVsb2Fk
RXhwaXJlZE9ubHkoV0tQYWdlUmVmIHBhZ2UpOwogCiBXS19FWFBPUlQgYm9vbCBXS1BhZ2VUcnlD
bG9zZShXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VDbG9zZShXS1BhZ2VS
ZWYgcGFnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkocmV2aXNp
b24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4NywxNiArMTg3LDEy
IEBAIC0gKHZvaWQpc3RvcExvYWRpbmcKIAogLSAodm9pZClyZWxvYWQKIHsKLSAgICBjb25zdCBi
b29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgX3BhZ2UtPnJlbG9hZCh7IH0pOwogfQogCiAt
ICh2b2lkKXJlbG9hZEZyb21PcmlnaW4KIHsKLSAgICBjb25zdCBib29sIHJlbG9hZEZyb21Pcmln
aW4gPSB0cnVlOwotICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7
Ci0gICAgX3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFi
bGVkKTsKKyAgICBfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RnJvbU9yaWdp
bik7CiB9CiAKIC0gKE5TU3RyaW5nICopYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQko
cmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTg0NCw5ICs4NDQsNyBAQCAtIChXS05hdmln
YXRpb24gKilnb0ZvcndhcmQKIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkCiB7Ci0gICAgY29u
c3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVs
b2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGF1dG8g
bmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQoeyB9KTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTg1NSw5ICs4NTMsNyBAQCAtIChXS05hdmlnYXRpb24g
KilyZWxvYWQKIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkRnJvbU9yaWdpbgogewotICAgIGNv
bnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IHRydWU7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVs
b2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGF1dG8g
bmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3Jp
Z2luKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTM2
OTIsOSArMzY4OCwxNiBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3MKIAogLSAoV0tO
YXZpZ2F0aW9uICopX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMKIHsKLSAgICBjb25zdCBi
b29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2Fk
KHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGF1dG8gbmF2
aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29u
dGVudEJsb2NrZXJzKTsKKyAgICBpZiAoIW5hdmlnYXRpb24pCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgCisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3Jl
bGVhc2VdOworfQorCistIChXS05hdmlnYXRpb24gKilfcmVsb2FkRXhwaXJlZE9ubHkKK3sKKyAg
ICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6
RXhwaXJlZE9ubHkpOwogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjI4LDYgKzIyOCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0ltbWVkaWF0
ZUEKICNlbmRpZgogCiAtIChXS05hdmlnYXRpb24gKilfcmVsb2FkV2l0aG91dENvbnRlbnRCbG9j
a2VycyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CistIChXS05h
dmlnYXRpb24gKilfcmVsb2FkRXhwaXJlZE9ubHkgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTMpLCBpb3MoMTEuMCkpOwogCiAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3NBbmRSZXNl
dFN0YXRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCShyZXZpc2lvbiAyMTM4OTUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MSw4ICszNDEsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luCiAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVy
ZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShUaW1lb3V0KSk7CiAgICAgbV9wZW5k
aW5nTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS5zZXQocGFnZS0+
cGFnZUlEKCksIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJv
bU9yaWdpbiA9IGZhbHNlOwotICAgIHBhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCB7IH0p
OworICAgIHBhZ2UtPnJlbG9hZCh7IH0pOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpuYXZpZ2F0aW9uT2NjdXJyZWRGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgdm9pZCBXZWJQYWdl
OjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZQogICAgIG1fcGFnZS0+c2V0RGVmZXJzTG9hZGlu
ZyhkZWZlcnNMb2FkaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2
aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJsb2NrZXJzRW5h
YmxlZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKQordm9pZCBXZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJf
dCByZWxvYWRPcHRpb25zLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3Bw
ZXIodGhpcyk7CiAKQEAgLTEzMDUsNyArMTMwNSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVsb2FkKHVp
bnQ2NF90IG5hdmlnYXRpb24KICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9u
SUQ7CiAKICAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21haW5GcmFt
ZS5nZXQoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgY29yZVBhZ2UoKS0+dXNlcklu
cHV0QnJpZGdlKCkucmVsb2FkRnJhbWUobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZWxvYWRG
cm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBjb3JlUGFnZSgpLT51c2Vy
SW5wdXRCcmlkZ2UoKS5yZWxvYWRGcmFtZShtX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIE9wdGlv
blNldDxSZWxvYWRPcHRpb24+Ojpmcm9tUmF3KHJlbG9hZE9wdGlvbnMpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpnb0ZvcndhcmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBiYWNrRm9y
d2FyZEl0ZW1JRCkKQEAgLTQxMDMsNyArNDEwMyw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJldXNl
Q29tbWl0dGVkU2FuZGJveEUKICAgICBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUgPSBmcmFt
ZUxvYWRlci5sb2FkVHlwZSgpOwogCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgYmVpbmcgcmVsb2Fk
ZWQsIGl0IHNob3VsZCByZXVzZSB3aGF0ZXZlciBleHRlbnNpb24gaXMgY29tbWl0dGVkLgotICAg
IGlmIChmcmFtZUxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCB8fCBmcmFtZUxvYWRU
eXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4pCisgICAgaWYgKGlzUmVsb2Fk
KGZyYW1lTG9hZFR5cGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9u
IDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBs
b2FkU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBsb2FkQWx0ZXJuYXRl
SFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOwogICAgIHZvaWQgbmF2aWdhdGVUb1BE
RkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBv
aW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKLSAgICB2
b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwg
Ym9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmKTsKKyAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJl
bG9hZE9wdGlvbnMsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQg
Z29Gb3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29C
YWNrKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29Ub0JhY2tG
b3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgTmF2aWdhdGVUb1BE
RkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soU3RyaW5nIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9j
dW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpCiAKLSAgICBSZWxvYWQo
dWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKKyAgICBSZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50
MzJfdCByZWxvYWRPcHRpb25zLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKQogICAgIFN0b3BMb2FkaW5nKCkKIAogICAgIFN0b3BMb2FkaW5n
RnJhbWUodWludDY0X3QgZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIx
NDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDE3LTAzLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5IHdoZXJlIG9ubHkgZXhwaXJlZCBzdWJy
ZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICh0b1dlYkZy
YW1lTG9hZFR5cGUpOgorICAgICAgICAoLVtXZWJGcmFtZSByZWxvYWRdKToKKyAgICAgICAgKC1b
V2ViRnJhbWUgcmVsb2FkRnJvbU9yaWdpbl0pOgorCiAyMDE3LTAzLTE2ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgdGhlIHN5c3RlbSB0
cmFjaW5nIHBvaW50cwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShy
ZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDU5LDYgKzEwNTksOSBAQCBzdGF0aWMgV2ViRnJhbWVMb2Fk
VHlwZSB0b1dlYkZyYW1lTG9hZFR5CiAgICAgICAgIHJldHVybiBXZWJGcmFtZUxvYWRUeXBlUmVw
bGFjZTsKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW46CiAgICAgICAg
IHJldHVybiBXZWJGcmFtZUxvYWRUeXBlUmVsb2FkRnJvbU9yaWdpbjsKKyAgICBjYXNlIEZyYW1l
TG9hZFR5cGU6OlJlbG9hZFJldmFsaWRhdGluZ0V4cGlyZWQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gV2ViRnJhbWVMb2FkVHlwZVJlbG9hZDsKICAgICB9
CiB9CiAKQEAgLTI1MzksMTIgKzI1NDIsMTIgQEAgLSAodm9pZClzdG9wTG9hZGluZwogCiAtICh2
b2lkKXJlbG9hZAogewotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLnJlbG9hZChm
YWxzZSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkucmVsb2FkKHsgfSk7CiB9
CiAKIC0gKHZvaWQpcmVsb2FkRnJvbU9yaWdpbgogewotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUt
PmxvYWRlcigpLnJlbG9hZCh0cnVlKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIo
KS5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luKTsKIH0KIAogLSAoV2Vi
RnJhbWUgKilmaW5kRnJhbWVOYW1lZDooTlNTdHJpbmcgKiluYW1lCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMTM4OTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxNy0wMy0xNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIGEgcmVsb2FkIHBvbGljeSB3aGVyZSBvbmx5IGV4cGlyZWQgc3VicmVz
b3VyY2VzIGFyZSByZXZhbGlkYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY5NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3JlbG9hZC1leHBp
cmVkLW9ubHkuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJj
ZXMvZG9jdW1lbnQtd2l0aC1jYWNoZWQtdW5pcXVlLXNjcmlwdC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9yYW5kb20tY2FjaGVkLmNnaToKKwogMjAx
Ny0wMy0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU3lu
YyB3ZWItcGxhdGZvcm0tdGVzdHMgdXAgdG8gcmV2aXNpb24gYTViOTVjYjMxOTE0NTA3MDg4YTRl
ZGExNmY3Njc0YmJjNmYzMzEzZgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9y
ZWxvYWQtZXhwaXJlZC1vbmx5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHktZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVsb2FkLWV4cGlyZWQt
b25seS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBAQAorUEFTUwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZWxvYWQtZXhwaXJlZC1vbmx5Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZWxvYWQtZXhwaXJl
ZC1vbmx5Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNo
ZS9yZWxvYWQtZXhwaXJlZC1vbmx5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNyBA
QAorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9Citjb25zdCB0ZXN0V2luZG93ID0gd2luZG93Lm9w
ZW4oJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jYWNoZS9yZXNvdXJjZXMvZG9jdW1lbnQtd2l0aC1j
YWNoZWQtdW5pcXVlLXNjcmlwdC5odG1sJyk7CisKK3ZhciBmaXJzdE51bWJlcjsKK3dpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CisgICAgaWYgKGZpcnN0TnVt
YmVyKSB7CisgICAgICAgIGNvbnN0IHNlY29uZE51bWJlciA9IGV2ZW50LmRhdGE7CisgICAgICAg
IGlmIChmaXJzdE51bWJlciA9PSBzZWNvbmROdW1iZXIpCisgICAgICAgICAgICBkb2N1bWVudC5i
b2R5LmlubmVySFRNTCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5pbm5lckhUTUwgPSBgRkFJTDogZmlyc3ROdW1iZXI9eyRmaXJzdE51bWJlcn0gc2Vj
b25kTnVtYmVyPXskc2Vjb25kTnVtYmVyfWA7CisgICAgICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgZmlyc3ROdW1iZXIgPSBldmVudC5kYXRhOworICAgIGlmICh0ZXN0V2luZG93LmludGVy
bmFscykKKyAgICAgICAgdGVzdFdpbmRvdy5pbnRlcm5hbHMucmVsb2FkRXhwaXJlZE9ubHkoKTsK
K30pOworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVz
b3VyY2VzL2RvY3VtZW50LXdpdGgtY2FjaGVkLXVuaXF1ZS1zY3JpcHQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9kb2N1bWVudC13aXRo
LWNhY2hlZC11bmlxdWUtc2NyaXB0Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvZG9jdW1lbnQtd2l0aC1jYWNoZWQtdW5pcXVlLXNj
cmlwdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorPGgxPjwvaDE+Cis8c2Ny
aXB0IHNyYz0ncmFuZG9tLWNhY2hlZC5jZ2knPjwvc2NyaXB0PgorPHNjcmlwdD4KK3dpbmRvdy5v
cGVuZXIucG9zdE1lc3NhZ2UocmFuZG9tTnVtYmVyLCAnKicpOworPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9yYW5kb20tY2FjaGVkLmNnaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9yYW5k
b20tY2FjaGVkLmNnaQkocmV2aXNpb24gMjEzODk1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5jZ2kJKHdvcmtpbmcgY29weSkKQEAgLTIs
NyArMiw2IEBACiAKIHByaW50ICJDb250ZW50LXR5cGU6IHRleHQvamF2YXNjcmlwdFxuIjsKIHBy
aW50ICJDYWNoZS1jb250cm9sOiBtYXgtYWdlPTYwMDAwXG4iOwotcHJpbnQgIkVUYWc6IFwiMTIz
NDU2Nzg5XCJcbiI7CiBwcmludCAiXG4iOwogCiBteSAkcmFuZG9tX251bWJlciA9IGludChyYW5k
KDEwMDAwMDAwMDAwMDApKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304775</attachid>
            <date>2017-03-17 07:16:01 -0700</date>
            <delta_ts>2017-03-17 07:47:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>reload-revalidation-policy-11.patch</filename>
            <type>text/plain</type>
            <size>40537</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE3LTAzLTE3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5
IHdoZXJlIG9ubHkgZXhwaXJlZCBzdWJyZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3Rz
L2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHkuaHRtbAorCisgICAgICAgIFRoZSBkZWZhdWx0IHJl
bG9hZCBiZWhhdmlvciByZXZhbGlkYXRlcyBhbGwgcmVzb3VyY2VzIG9uIHRoZSBwYWdlLiBUaGlz
IHBhdGNoIGFkZHMKKyAgICAgICAgYSBuZXcgcG9saWN5IHRoYXQgcmV2YWxpZGF0ZXMgZXhwaXJl
ZCAoYW5kIHVuY2FjaGVhYmxlKSByZXNvdXJjZXMgb25seS4gVXNpbmcgdGhpcworICAgICAgICBw
b2xpY3kgY2FuIHNwZWVkIHVwIHJlbG9hZHMgc2lnbmlmaWNhbnRseSBhbmQgYWxzbyByZWR1Y2Ug
bmV0d29yayB0cmFmZmljIGFuZCBzZXJ2ZXIKKyAgICAgICAgbG9hZC4KKworICAgICAgICAqIGhp
c3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkNhY2hlUGFnZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQmFja0ZvcndhcmRMb2FkVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1JlbG9hZCk6CisKKyAgICAgICAgICAgIEFkZCBhIGhlbHBlciBm
dW5jdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6bG9nTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVsb2FkKToKKworICAgICAgICAgICAgUmVwbGFjZSBib29sIGFyZ3VtZW50cyB3aXRo
IE9wdGlvblNldDxSZWxvYWRPcHRpb24+LiBNb3N0IG9mIHRoZSBwYXRjaCBpcyBhYm91dCBhZGFw
dGluZyB0byB0aGlzLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJyZXNvdXJj
ZUNhY2hlUG9saWN5KToKKworICAgICAgICAgICAgUmV0dXJuIENhY2hlUG9saWN5VmVyaWZ5IGZv
ciAnUmVsb2FkRXhwaXJlZE9ubHknIGZyYW1lIGxvYWQgdHlwZS4gVGhpcyBpcyB0aGUgc3Vic3Rh
bnRpdmUKKyAgICAgICAgICAgIGNoYW5nZSB0aGF0IGNhdXNlcyB0aGUgYmVoYXZpb3IgZGlmZmVy
ZW5jZS4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRl
Rm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0UmVx
dWVzdENhY2hpbmdQb2xpY3kpOgorCisgICAgICAgICAgICBGbGlwIHRoZSBpc01haW5SZXNvdXJj
ZSBjb25kaXRpb24gZm9yIGJldHRlciByZWFkYWJpbGl0eS4KKworICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAg
KiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1bWVudFN0YXRlKToKKyAgICAgICAgKiBwYWdlL0RpYWdu
b3N0aWNMb2dnaW5nS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJlbG9hZFJldmFsaWRhdGluZ0V4cGlyZWRLZXkpOgorICAgICAgICAqIHBhZ2UvRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmg6CisgICAgICAgICogcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKToKKyAg
ICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpmb3JjZVJlbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlbG9hZEV4cGlyZWRPbmx5KToKKworICAgICAg
ICAgICAgVGVzdGluZyBzdXBwb3J0LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTctMDMtMTQgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTGliXSBVc2UgVVNFKEdM
SUIpIGd1YXJkcyBpbiBXZWJDb3JlL3dvcmtlcnMvCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9Q
YWdlQ2FjaGUuY3BwCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw2ICsyNDksMTMgQEAgc3RhdGlj
IGJvb2wgY2FuQ2FjaGVQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgICAgIGlzQ2FjaGVhYmxlID0gZmFs
c2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZEV4cGlyZWRPbmx5OiB7CisgICAgICAgIC8vIE5vIHBvaW50IHdyaXRpbmcgdG8gdGhlIGNhY2hl
IG9uIGEgcmVsb2FkLCBzaW5jZSB3ZSB3aWxsIGp1c3Qgd3JpdGUgb3ZlciBpdCBhZ2FpbiB3aGVu
IHdlIGxlYXZlIHRoYXQgcGFnZS4KKyAgICAgICAgUENMT0coIiAgIC1Mb2FkIHR5cGUgaXM6IFJl
bG9hZFJldmFsaWRhdGluZ0V4cGlyZWQiKTsKKyAgICAgICAgbG9nUGFnZUNhY2hlRmFpbHVyZURp
YWdub3N0aWNNZXNzYWdlKGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LCBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJlbG9hZFJldmFsaWRhdGluZ0V4cGlyZWRLZXkoKSk7CisgICAgICAgIGlzQ2FjaGVh
YmxlID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIEZyYW1lTG9hZFR5
cGU6OlN0YW5kYXJkOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6QmFjazoKICAgICBjYXNlIEZy
YW1lTG9hZFR5cGU6OkZvcndhcmQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyMyw3ICs0MjMsMTEgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbW92ZVNjcmlwdFRv
RQogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyYsIGNvbnN0IGJv
b2wqIGNvbnN0IG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3Jp
cHRUb0V2YWx1YXRlT25Mb2FkKQogewogICAgIG1fcGVuZGluZ1NjcmlwdFRvRXZhbHVhdGVPbkxv
YWRPbmNlID0gb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkID8gKm9wdGlvbmFsU2NyaXB0
VG9FdmFsdWF0ZU9uTG9hZCA6IGVtcHR5U3RyaW5nKCk7Ci0gICAgbV9wYWdlLm1haW5GcmFtZSgp
LmxvYWRlcigpLnJlbG9hZChvcHRpb25hbElnbm9yZUNhY2hlID8gKm9wdGlvbmFsSWdub3JlQ2Fj
aGUgOiBmYWxzZSk7CisKKyAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25z
OworICAgIGlmIChvcHRpb25hbElnbm9yZUNhY2hlICYmICpvcHRpb25hbElnbm9yZUNhY2hlKQor
ICAgICAgICByZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbjsKKyAgICBt
X3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQogCiB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNp
b24gMjEzODk1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw3IEBAIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBl
KEZyYW1lTG9hZFR5cGUKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkOgogICAgIGNh
c2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
RnJvbU9yaWdpbjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5Ogog
ICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJl
ZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6
OlJlcGxhY2U6CkBAIC0xNjcsNiArMTY4LDI2IEBAIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBl
KEZyYW1lTG9hZFR5cGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgaXNSZWxvYWQoRnJh
bWVMb2FkVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRnJhbWVM
b2FkVHlwZTo6UmVsb2FkOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdp
bjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkOgorICAgIGNhc2Ug
RnJhbWVMb2FkVHlwZTo6U2FtZToKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0
aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlcGxhY2U6
CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpCYWNrOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6
Rm9yd2FyZDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIFRoaXMgaXMgbm90IGluIHRoZSBGcmFtZUxvYWRlciBj
bGFzcyB0byBlbXBoYXNpemUgdGhhdCBpdCBkb2VzIG5vdCBkZXBlbmQgb24KIC8vIHByaXZhdGUg
RnJhbWVMb2FkZXIgZGF0YSwgYW5kIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBw
dWJsaWMgZnVuY3Rpb25zCiAvLyB3aXRoIGFjY2VzcyB0byBwcml2YXRlIGRhdGEuICBTaW5jZSBv
bmx5IHRoaXMgLmNwcCBmaWxlIG5lZWRzIGl0LCBtYWtpbmcgaXQKQEAgLTEyMDksNyArMTIzMCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2EKICAgICAgICAgcmVx
dWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihtX2ZyYW1lLnRyZWUoKS50b3AoKS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwogCiAg
ICAgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QocmVxdWVzdCwgbmV3TG9hZFR5cGUsIHRydWUpOwot
ICAgIGlmIChuZXdMb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQgfHwgbmV3TG9hZFR5
cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbikKKyAgICBpZiAoaXNSZWxvYWQo
bmV3TG9hZFR5cGUpKQogICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9y
aW5nQ2FjaGVEYXRhKTsKIAogICAgIEFTU0VSVChuZXdMb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBl
OjpTYW1lKTsKQEAgLTEyNjIsNyArMTI4Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwo
Y29uc3QgRnJhbWVMb2EKICAgICAgICAgbV9xdWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAg
ICAgICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCiAgICAgICAgICAgICBtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnNldElzQ2xpZW50UmVkaXJlY3QodHJ1ZSk7Ci0gICAg
fSBlbHNlIGlmIChzYW1lVVJMICYmIG5ld0xvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZCAmJiBuZXdMb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luKSB7Cisg
ICAgfSBlbHNlIGlmIChzYW1lVVJMICYmICFpc1JlbG9hZChuZXdMb2FkVHlwZSkpIHsKICAgICAg
ICAgLy8gRXhhbXBsZSBvZiB0aGlzIGNhc2UgYXJlIHNpdGVzIHRoYXQgcmVsb2FkIHRoZSBzYW1l
IFVSTCB3aXRoIGEgZGlmZmVyZW50IGNvb2tpZQogICAgICAgICAvLyBkcml2aW5nIHRoZSBnZW5l
cmF0ZWQgY29udGVudCwgb3IgYSBtYXN0ZXIgZnJhbWUgd2l0aCBsaW5rcyB0aGF0IGRyaXZlIGEg
dGFyZ2V0CiAgICAgICAgIC8vIGZyYW1lLCB3aGVyZSB0aGUgdXNlciBoYXMgY2xpY2tlZCBvbiB0
aGUgc2FtZSBsaW5rIHJlcGVhdGVkbHkuCkBAIC0xNDAwLDYgKzE0MjEsOSBAQCBzdGF0aWMgdm9p
ZCBsb2dOYXZpZ2F0aW9uKE1haW5GcmFtZSYgZnJhCiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWRGcm9tT3JpZ2luOgogICAgICAgICBuYXZpZ2F0aW9uRGVzY3JpcHRpb24gPSBBU0NJSUxp
dGVyYWwoInJlbG9hZEZyb21PcmlnaW4iKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGcmFt
ZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKKyAgICAgICAgbmF2aWdhdGlvbkRlc2NyaXB0
aW9uID0gQVNDSUlMaXRlcmFsKCJyZWxvYWRSZXZhbGlkYXRpbmdFeHBpcmVkIik7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKICAgICBjYXNlIEZyYW1l
TG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKICAgICAgICAgLy8g
Tm90IGxvZ2dpbmcgdGhvc2UgZm9yIG5vdy4KQEAgLTE1NzIsNyArMTU5Niw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9h
ZGVyKGxvYWRlci5wdHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6Olllcyk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29s
IGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCit2b2lkIEZyYW1l
TG9hZGVyOjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIHsKICAgICBp
ZiAoIW1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTE1OTMsNyArMTYxNyw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAgICBSZWY8RG9j
dW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRp
YWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJs
KCkpKTsKICAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50
TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeVRvUHJvcGFnYXRlKCkpOwogCi0gICAgbG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lv
bnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGxvYWRlci0+c2V0VXNlckNv
bnRlbnRFeHRlbnNpb25zRW5hYmxlZCghb3B0aW9ucy5jb250YWlucyhSZWxvYWRPcHRpb246OkRp
c2FibGVDb250ZW50QmxvY2tlcnMpKTsKICAgICAKICAgICBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QgPSBsb2FkZXItPnJlcXVlc3QoKTsKIApAQCAtMTYwNSw4ICsxNjI5LDE2IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAgICAgICAgbG9hZGVyLT5zZXRUcmln
Z2VyaW5nQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6OkZv
cm1SZXN1Ym1pdHRlZCkpOwogCiAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9j
dW1lbnRMb2FkZXItPm92ZXJyaWRlRW5jb2RpbmcoKSk7CisKKyAgICBhdXRvIGZyYW1lTG9hZFR5
cGVGb3JSZWxvYWRPcHRpb25zID0gW10gKGF1dG8gb3B0aW9ucykgeworICAgICAgICBpZiAob3B0
aW9ucy5jb250YWlucyhSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pKQorICAgICAgICAgICAgcmV0
dXJuIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW47CisgICAgICAgIGlmIChvcHRpb25z
LmNvbnRhaW5zKFJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpKQorICAgICAgICAgICAgcmV0dXJu
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OworICAgICAgICByZXR1cm4gRnJhbWVM
b2FkVHlwZTo6UmVsb2FkOworICAgIH07CiAgICAgCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRl
cihsb2FkZXIucHRyKCksIGVuZFRvRW5kUmVsb2FkID8gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJv
bU9yaWdpbiA6IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMOjpZZXMpOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBm
cmFtZUxvYWRUeXBlRm9yUmVsb2FkT3B0aW9ucyhvcHRpb25zKSwgMCwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMOjpZZXMpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVy
cyhDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSkK
QEAgLTE5NTksNiArMTk5MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1p
dHRlZCgKIAogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgIGNhc2UgRnJhbWVM
b2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZEV4cGlyZWRPbmx5OgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAgICBjYXNlIEZy
YW1lTG9hZFR5cGU6OlJlcGxhY2U6CiAgICAgICAgIGhpc3RvcnkoKS51cGRhdGVGb3JSZWxvYWQo
KTsKQEAgLTE5NzYsMTEgKzIwMDksNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9D
b21taXR0ZWQoCiAgICAgICAgIGhpc3RvcnkoKS51cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRC
YWNrRm9yd2FyZExpc3QoKTsKICAgICAgICAgbV9jbGllbnQudHJhbnNpdGlvblRvQ29tbWl0dGVk
Rm9yTmV3UGFnZSgpOwogICAgICAgICBicmVhazsKLQotICAgIC8vIEZJWE1FIFJlbW92ZSB0aGlz
IGNoZWNrIHdoZW4gZHVtbXkgZHMgaXMgcmVtb3ZlZCAod2hhdGV2ZXIgImR1bW15IGRzIiBpcyku
Ci0gICAgLy8gQW4gZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gaWYgd2UncmUgaW4gdGhlIEZy
YW1lTG9hZFR5cGVVbmluaXRpYWxpemVkIHN0YXRlLgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIG1fZG9jdW1lbnRMb2FkZXItPndyaXRl
cigpLnNldE1JTUVUeXBlKGRsLT5yZXNwb25zZU1JTUVUeXBlKCkpOwpAQCAtMjE5MSw2ICsyMjE5
LDcgQEAgQ2FjaGVQb2xpY3kgRnJhbWVMb2FkZXI6OnN1YnJlc291cmNlQ2FjaAogICAgIGNhc2Ug
RnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlNhbWU6CiAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6
OlJlbG9hZEV4cGlyZWRPbmx5OgogICAgICAgICByZXR1cm4gQ2FjaGVQb2xpY3lWZXJpZnk7CiAg
ICAgfQogCkBAIC0yMjc3LDcgKzIzMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRD
b21wbGV0ZUZvclRoCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBo
YWQgYSBzY3JvbGwgcG9pbnQsIHNjcm9sbCB0byBpdCwgb3ZlcnJpZGluZyB0aGUgYW5jaG9yIHBv
aW50IGlmIGFueS4KICAgICAgICAgICAgIGlmIChtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICAg
ICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkgfHwgbV9sb2FkVHlw
ZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQgfHwgbV9sb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBl
OjpSZWxvYWRGcm9tT3JpZ2luKQorICAgICAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUobV9sb2FkVHlwZSkgfHwgaXNSZWxvYWQobV9sb2FkVHlwZSkpCiAgICAgICAgICAgICAg
ICAgICAgIGhpc3RvcnkoKS5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsKICAg
ICAgICAgICAgIH0KIApAQCAtMjU3MywyNyArMjYwMiwzMSBAQCBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeSBGcmFtZUxvYWRlcjo6CiB7CiAgICAgaWYgKG1fb3ZlcnJpZGVDYWNoZVBvbGljeUZv
clRlc3RpbmcpCiAgICAgICAgIHJldHVybiBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5n
LnZhbHVlKCk7Ci0gICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewotICAgICAgICBpZiAocmVxdWVz
dC5pc0NvbmRpdGlvbmFsKCkpCisKKyAgICBpZiAoaXNNYWluUmVzb3VyY2UpIHsKKyAgICAgICAg
aWYgKGlzUmVsb2FkKGxvYWRUeXBlKSB8fCByZXF1ZXN0LmlzQ29uZGl0aW9uYWwoKSkKICAgICAg
ICAgICAgIHJldHVybiBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YTsKLSAgICAgICAgaWYgKGRvY3Vt
ZW50TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSkgewotICAgICAgICAgICAgLy8gSWYg
d2UgaW5oZXJpdCBjYWNoZSBwb2xpY3kgZnJvbSBhIG1haW4gcmVzb3VyY2UsIHdlIHVzZSB0aGUg
RG9jdW1lbnRMb2FkZXIncwotICAgICAgICAgICAgLy8gb3JpZ2luYWwgcmVxdWVzdCBjYWNoZSBw
b2xpY3kgZm9yIHR3byByZWFzb25zOgotICAgICAgICAgICAgLy8gMS4gRm9yIFBPU1QgcmVxdWVz
dHMsIHdlIG11dGF0ZSB0aGUgY2FjaGUgcG9saWN5IGZvciB0aGUgbWFpbiByZXNvdXJjZSwKLSAg
ICAgICAgICAgIC8vICAgIGJ1dCB3ZSBkbyBub3Qgd2FudCB0aGlzIHRvIGFwcGx5IHRvIHN1YnJl
c291cmNlcwotICAgICAgICAgICAgLy8gMi4gRGVsZWdhdGVzIHRoYXQgbW9kaWZ5IHRoZSBjYWNo
ZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBzaG91bGQKLSAgICAgICAgICAgIC8vICAg
IG5vdCBhZmZlY3QgYW55IG90aGVyIHJlc291cmNlcy4gU3VjaCBjaGFuZ2VzIG5lZWQgdG8gYmUg
ZG9uZQotICAgICAgICAgICAgLy8gICAgcGVyIHJlcXVlc3QuCi0gICAgICAgICAgICBSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeSBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5ID0gZG9j
dW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKTsKLSAgICAgICAg
ICAgIC8vIEJhY2stZm9yd2FyZCBuYXZpZ2F0aW9ucyB0cnkgdG8gbG9hZCBtYWluIHJlc291cmNl
IGZyb20gY2FjaGUgb25seSB0byBhdm9pZCByZS1zdWJtaXR0aW5nIGZvcm0gZGF0YSwgYW5kIHN0
YXJ0IG92ZXIgKHdpdGggYSB3YXJuaW5nIGRpYWxvZykgaWYgdGhhdCBmYWlscy4KLSAgICAgICAg
ICAgIC8vIFRoaXMgcG9saWN5IGlzIHNldCBvbiBpbml0aWFsIHJlcXVlc3QgdG9vLCBidXQgc2hv
dWxkIG5vdCBiZSBpbmhlcml0ZWQuCi0gICAgICAgICAgICByZXR1cm4gKG1haW5Eb2N1bWVudE9y
aWdpbmFsQ2FjaGVQb2xpY3kgPT0gUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpID8gUmV0dXJuQ2Fj
aGVEYXRhRWxzZUxvYWQgOiBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5OwotICAgICAg
ICB9Ci0gICAgLy8gRklYTUU6IE90aGVyIEZyYW1lTG9hZGVyIGZ1bmN0aW9ucyBoYXZlIGR1cGxp
Y2F0ZWQgY29kZSBmb3Igc2V0dGluZyBjYWNoZSBwb2xpY3kgb2YgbWFpbiByZXF1ZXN0IHdoZW4g
cmVsb2FkaW5nLgotICAgIC8vIEl0IHNlZW1zIGJldHRlciB0byBtYW5hZ2UgaXQgZXhwbGljaXRs
eSB0aGFuIHRvIGhpZGUgdGhlIGxvZ2ljIGluc2lkZSBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCgp
LgotICAgIH0gZWxzZSBpZiAobG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkIHx8IGxv
YWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4gfHwgcmVxdWVzdC5pc0Nv
bmRpdGlvbmFsKCkpCisKKyAgICAgICAgcmV0dXJuIFVzZVByb3RvY29sQ2FjaGVQb2xpY3k7Cisg
ICAgfQorCisgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpKQogICAgICAgICByZXR1cm4g
UmVsb2FkSWdub3JpbmdDYWNoZURhdGE7CiAKKyAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+aXNM
b2FkaW5nSW5BUElTZW5zZSgpKSB7CisgICAgICAgIC8vIElmIHdlIGluaGVyaXQgY2FjaGUgcG9s
aWN5IGZyb20gYSBtYWluIHJlc291cmNlLCB3ZSB1c2UgdGhlIERvY3VtZW50TG9hZGVyJ3MKKyAg
ICAgICAgLy8gb3JpZ2luYWwgcmVxdWVzdCBjYWNoZSBwb2xpY3kgZm9yIHR3byByZWFzb25zOgor
ICAgICAgICAvLyAxLiBGb3IgUE9TVCByZXF1ZXN0cywgd2UgbXV0YXRlIHRoZSBjYWNoZSBwb2xp
Y3kgZm9yIHRoZSBtYWluIHJlc291cmNlLAorICAgICAgICAvLyAgICBidXQgd2UgZG8gbm90IHdh
bnQgdGhpcyB0byBhcHBseSB0byBzdWJyZXNvdXJjZXMKKyAgICAgICAgLy8gMi4gRGVsZWdhdGVz
IHRoYXQgbW9kaWZ5IHRoZSBjYWNoZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBzaG91
bGQKKyAgICAgICAgLy8gICAgbm90IGFmZmVjdCBhbnkgb3RoZXIgcmVzb3VyY2VzLiBTdWNoIGNo
YW5nZXMgbmVlZCB0byBiZSBkb25lCisgICAgICAgIC8vICAgIHBlciByZXF1ZXN0LgorICAgICAg
ICBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9s
aWN5ID0gZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKTsK
KyAgICAgICAgLy8gQmFjay1mb3J3YXJkIG5hdmlnYXRpb25zIHRyeSB0byBsb2FkIG1haW4gcmVz
b3VyY2UgZnJvbSBjYWNoZSBvbmx5IHRvIGF2b2lkIHJlLXN1Ym1pdHRpbmcgZm9ybSBkYXRhLCBh
bmQgc3RhcnQgb3ZlciAod2l0aCBhIHdhcm5pbmcgZGlhbG9nKSBpZiB0aGF0IGZhaWxzLgorICAg
ICAgICAvLyBUaGlzIHBvbGljeSBpcyBzZXQgb24gaW5pdGlhbCByZXF1ZXN0IHRvbywgYnV0IHNo
b3VsZCBub3QgYmUgaW5oZXJpdGVkLgorICAgICAgICByZXR1cm4gKG1haW5Eb2N1bWVudE9yaWdp
bmFsQ2FjaGVQb2xpY3kgPT0gUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpID8gUmV0dXJuQ2FjaGVE
YXRhRWxzZUxvYWQgOiBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5OworICAgIH0KKwog
ICAgIHJldHVybiBVc2VQcm90b2NvbENhY2hlUG9saWN5OwogfQogCkBAIC0yODU5LDggKzI4OTIs
NyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRQZXJmb3JtRnJhZ21lbnROCiAgICAgLy8gRklY
TUU6IFdoYXQgYWJvdXQgbG9hZCB0eXBlcyBvdGhlciB0aGFuIFN0YW5kYXJkIGFuZCBSZWxvYWQ/
CiAKICAgICByZXR1cm4gKCFpc0Zvcm1TdWJtaXNzaW9uIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGh0dHBNZXRob2QsICJnZXQiKSkKLSAgICAgICAgJiYgbG9hZFR5cGUgIT0gRnJh
bWVMb2FkVHlwZTo6UmVsb2FkCi0gICAgICAgICYmIGxvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGU6
OlJlbG9hZEZyb21PcmlnaW4KKyAgICAgICAgJiYgIWlzUmVsb2FkKGxvYWRUeXBlKQogICAgICAg
ICAmJiBsb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlOjpTYW1lCiAgICAgICAgICYmICFzaG91bGRS
ZWxvYWQobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSwgdXJsKQogICAgICAgICAvLyBXZSBkb24n
dCB3YW50IHRvIGp1c3Qgc2Nyb2xsIGlmIGEgbGluayBmcm9tIHdpdGhpbiBhCkBAIC0zNDA3LDYg
KzM0MzksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJCiAgICAg
ICAgIHN3aXRjaCAobG9hZFR5cGUpIHsKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxv
YWQ6CiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKKyAgICAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKICAgICAgICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6QmFjazoKQEAgLTM0MjYsNyAr
MzQ1OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEkKICAgICAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTYW1lOgot
ICAgICAgICBkZWZhdWx0OgorICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlcGxhY2U6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcg
QEAgc3RydWN0IEZyYW1lTG9hZFJlcXVlc3Q7CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiAKIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBlKEZyYW1lTG9hZFR5cGUpOwor
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFtZUxvYWRUeXBlKTsKIAogY2xhc3MgRnJh
bWVMb2FkZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYW1lTG9hZGVyKTsKQEAgLTEx
OSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cmxTZWxlY3Rl
ZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBMb2NrSGlzdG9yeSwg
TG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6
bnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9t
KTsKICAgICB2b2lkIHN1Ym1pdEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSwgYm9v
bCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBvdmVycmlk
ZUVuY29kaW5nKTsKIAogICAgIHZvaWQgb3BlbihDYWNoZWRGcmFtZUJhc2UmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24gMjEzODk1KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIEZyYW1lU3RhdGUgewpAQCAt
NDQsNiArNDYsMTIgQEAgZW51bSBQb2xpY3lBY3Rpb24gewogICAgIFBvbGljeUlnbm9yZQogfTsK
IAorZW51bSBjbGFzcyBSZWxvYWRPcHRpb24geworICAgIEV4cGlyZWRPbmx5ID0gMSA8PCAwLAor
ICAgIEZyb21PcmlnaW4gID0gMSA8PCAxLAorICAgIERpc2FibGVDb250ZW50QmxvY2tlcnMgPSAx
IDw8IDIsCit9OworCiBlbnVtIGNsYXNzIEZyYW1lTG9hZFR5cGUgewogICAgIFN0YW5kYXJkLAog
ICAgIEJhY2ssCkBAIC01NCw2ICs2Miw3IEBAIGVudW0gY2xhc3MgRnJhbWVMb2FkVHlwZSB7CiAg
ICAgUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCAvLyBGSVhNRTogTWVyZ2UgImxv
Y2tCYWNrRm9yd2FyZExpc3QiLCAibG9ja0hpc3RvcnkiLCAicXVpY2tSZWRpcmVjdCIgYW5kICJj
bGllbnRSZWRpcmVjdCIgaW50byBhIHNpbmdsZSBjb25jZXB0IG9mIHJlZGlyZWN0LgogICAgIFJl
cGxhY2UsCiAgICAgUmVsb2FkRnJvbU9yaWdpbiwKKyAgICBSZWxvYWRFeHBpcmVkT25seQogfTsK
IAogZW51bSBjbGFzcyBOZXdGcmFtZU9wZW5lclBvbGljeSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyOSw2ICsyMjksNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlRG9jdW1l
bnRTCiAgICAgc3dpdGNoIChtX2ZyYW1lLmxvYWRlcigpLmxvYWRUeXBlKCkpIHsKICAgICBjYXNl
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDoKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZy
b21PcmlnaW46CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKICAg
ICBjYXNlIEZyYW1lTG9hZFR5cGU6OlNhbWU6CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZXBs
YWNlOgogICAgICAgICAvLyBOb3QgcmVzdG9yaW5nIHRoZSBkb2N1bWVudCBzdGF0ZS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAJKHJldmlz
aW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCwxMSBAQCBTdHJpbmcgRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpyZWxvYWRGcm9tCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgicmVsb2Fk
RnJvbU9yaWdpbiIpOwogfQogCitTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZWxvYWRS
ZXZhbGlkYXRpbmdFeHBpcmVkS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJyZWxv
YWRSZXZhbGlkYXRpbmdFeHBpcmVkIik7Cit9CisKIFN0cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6OnNhbWVMb2FkS2V5KCkKIHsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzYW1lTG9hZCIp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCShy
ZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5n
S2V5cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgcmVkaXJlY3RLZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIHJlbG9hZEZyb21P
cmlnaW5LZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIHJlbG9hZEtleSgpOworICAgIHN0YXRpYyBT
dHJpbmcgcmVsb2FkUmV2YWxpZGF0aW5nRXhwaXJlZEtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcg
cmVwbGFjZUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VMb2FkZWRLZXkoKTsKICAg
ICBzdGF0aWMgU3RyaW5nIHJlc291cmNlUmVzcG9uc2VTb3VyY2VLZXkoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCShyZXZpc2lvbiAyMTM4OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQyLDkgKzI0Miw5IEBAIHZvaWQgVXNlcklucHV0QnJpZGdlOjpsb2FkUmVxdWVzdChj
b25zdCAKICAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChyZXF1ZXN0KTsKIH0K
IAotdm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKEZyYW1lKiBmcmFtZSwgYm9vbCBl
bmRUb0VuZFJlbG9hZCwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBJbnB1dFNvdXJjZSkK
K3ZvaWQgVXNlcklucHV0QnJpZGdlOjpyZWxvYWRGcmFtZShGcmFtZSogZnJhbWUsIE9wdGlvblNl
dDxSZWxvYWRPcHRpb24+IG9wdGlvbnMsIElucHV0U291cmNlKQogewotICAgIGZyYW1lLT5sb2Fk
ZXIoKS5yZWxvYWQoZW5kVG9FbmRSZWxvYWQsIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAg
IGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQob3B0aW9ucyk7CiB9CiAKIHZvaWQgVXNlcklucHV0QnJp
ZGdlOjpzdG9wTG9hZGluZ0ZyYW1lKEZyYW1lKiBmcmFtZSwgSW5wdXRTb3VyY2UpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCShyZXZpc2lvbiAyMTM4OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIApAQCAtODgsNyArODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOYXZpZ2F0aW9u
IEFQSXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVs
b2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIElucHV0U291cmNlID0gSW5wdXRTb3Vy
Y2U6OlVzZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBP
cHRpb25TZXQ8UmVsb2FkT3B0aW9uPiwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wTG9hZGluZ0ZyYW1lKEZyYW1lKiwgSW5wdXRT
b3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgdHJ5Q2xvc2VQYWdlKElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjEzODk1
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yODIwLDcgKzI4MjAsMTYgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFVzZXNNb2NrU2Nyb2xs
QW5pbWF0bwogCiB2b2lkIEludGVybmFsczo6Zm9yY2VSZWxvYWQoYm9vbCBlbmRUb0VuZCkKIHsK
LSAgICBmcmFtZSgpLT5sb2FkZXIoKS5yZWxvYWQoZW5kVG9FbmQpOworICAgIE9wdGlvblNldDxS
ZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CisgICAgaWYgKGVuZFRvRW5kKQorICAgICAgICBy
ZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbjsKKworICAgIGZyYW1lKCkt
PmxvYWRlcigpLnJlbG9hZChyZWxvYWRPcHRpb25zKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnJl
bG9hZEV4cGlyZWRPbmx5KCkKK3sKKyAgICBmcmFtZSgpLT5sb2FkZXIoKS5yZWxvYWQoUmVsb2Fk
T3B0aW9uOjpFeHBpcmVkT25seSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbmFibGVBdXRvU2l6
ZU1vZGUoYm9vbCBlbmFibGVkLCBpbnQgbWluaW11bVdpZHRoLCBpbnQgbWluaW11bUhlaWdodCwg
aW50IG1heGltdW1XaWR0aCwgaW50IG1heGltdW1IZWlnaHQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIHRvb2xUaXBGcm9tRWxlbWVudChFbGVtZW50JikgY29uc3Q7CiAKICAgICB2
b2lkIGZvcmNlUmVsb2FkKGJvb2wgZW5kVG9FbmQpOworICAgIHZvaWQgcmVsb2FkRXhwaXJlZE9u
bHkoKTsKIAogICAgIHZvaWQgZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wgZW5hYmxlZCwgaW50IG1p
bmltdW1XaWR0aCwgaW50IG1pbmltdW1IZWlnaHQsIGludCBtYXhpbXVtV2lkdGgsIGludCBtYXhp
bXVtSGVpZ2h0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2
aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTEsNiArMzkxLDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhh
dmlvciB7CiAgICAgdm9pZCBzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGJvb2xlYW4gZW5hYmxl
ZCk7CiAKICAgICB2b2lkIGZvcmNlUmVsb2FkKGJvb2xlYW4gZW5kVG9FbmQpOworICAgIHZvaWQg
cmVsb2FkRXhwaXJlZE9ubHkoKTsKIAogICAgIHZvaWQgZW5hYmxlQXV0b1NpemVNb2RlKGJvb2xl
YW4gZW5hYmxlZCwgbG9uZyBtaW5pbXVtV2lkdGgsIGxvbmcgbWluaW11bUhlaWdodCwgbG9uZyBt
YXhpbXVtV2lkdGgsIGxvbmcgbWF4aW11bUhlaWdodCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM4IEBACisyMDE3LTAzLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5IHdoZXJlIG9ubHkgZXhwaXJlZCBz
dWJyZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAg
ICAoV0tQYWdlUmVsb2FkKToKKyAgICAgICAgKFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50Qmxv
Y2tlcnMpOgorICAgICAgICAoV0tQYWdlUmVsb2FkRnJvbU9yaWdpbik6CisgICAgICAgIChXS1Bh
Z2VSZWxvYWRFeHBpcmVkT25seSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVsb2FkXSk6
CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWxvYWRGcm9tT3JpZ2lu
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyByZWxvYWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZEZyb21P
cmlnaW5dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZWxvYWRXaXRob3V0Q29udGVudEJsb2Nr
ZXJzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkRXhwaXJlZE9ubHldKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luZ0NvbnRleHQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZWxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZFJldXNlQ29tbWl0
dGVkU2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAxNy0wMy0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IHN5bnRheCBlcnJvciBpbiBHVEsrIEFQSSBkb2Nz
LgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAkocmV2
aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsMTEgKzI0OCw4IEBAIGJvb2wgV2ViRnJhbWVQcm94
eTo6ZGlkSGFuZGxlQ29udGVudEZpbHQKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlIHsg
bV9wYWdlIH07CiAgICAgQVNTRVJUKHBhZ2UpOwogICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3BhZ2VdKGJvb2wgdW5ibG9ja2VkKSB7Ci0gICAg
ICAgIGlmICh1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9y
aWdpbiA9IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFi
bGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHBhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBj
b250ZW50QmxvY2tlcnNFbmFibGVkKTsKLSAgICAgICAgfQorICAgICAgICBpZiAodW5ibG9ja2Vk
KQorICAgICAgICAgICAgcGFnZS0+cmVsb2FkKHsgfSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
cmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjMsNyArMTE2Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdG9wTG9hZGluZygpCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIH0KIAotUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxv
YWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCitS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2Vi
Q29yZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogCkBAIC0xMTg2LDcgKzExODYsNyBAQCBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlCiAgICAgCiAgICAgYXV0byBuYXZp
Z2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpLCByZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVk
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBv
cHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7CiAgICAg
bV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBX
VEZNb3ZlKG5hdmlnYXRpb24pOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsNyArNDA0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5n
JiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50
IHNjcmVlblBvaW50KTsKIAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKLSAgICBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiByZWxvYWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRC
bG9ja2Vyc0VuYWJsZWQpOworICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlbG9hZChPcHRp
b25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPik7CiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBnb0ZvcndhcmQoKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBnb0JhY2soKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lv
biAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQyLDIzICsyNDIsMjIgQEAgdm9pZCBXS1BhZ2VTdG9wTG9hZGlu
ZyhXS1BhZ2VSZWYgcGFnZVJlZgogCiB2b2lkIFdLUGFnZVJlbG9hZChXS1BhZ2VSZWYgcGFnZVJl
ZikKIHsKLSAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICBjb25z
dCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIHRvSW1wbChwYWdlUmVm
KS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAg
IHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9u
bHkpOwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMoV0tQYWdl
UmVmIHBhZ2VSZWYpCiB7Ci0gICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7
Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gZmFsc2U7Ci0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5h
YmxlZCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9u
OjpEaXNhYmxlQ29udGVudEJsb2NrZXJzKTsKIH0KIAogdm9pZCBXS1BhZ2VSZWxvYWRGcm9tT3Jp
Z2luKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdp
biA9IHRydWU7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsK
LSAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChXZWJDb3JlOjpSZWxv
YWRPcHRpb246OkZyb21PcmlnaW4pOworfQorCit2b2lkIFdLUGFnZVJlbG9hZEV4cGlyZWRPbmx5
KFdLUGFnZVJlZiBwYWdlUmVmKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKFdlYkNv
cmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogfQogCiBib29sIFdLUGFnZVRyeUNsb3Nl
KFdLUGFnZVJlZiBwYWdlUmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBAIFdLX0VYUE9SVCB2
b2lkIFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVIKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJlbG9h
ZChXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZWxvYWRXaXRob3V0Q29u
dGVudEJsb2NrZXJzKFdLUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJlbG9h
ZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlUmVsb2Fk
RXhwaXJlZE9ubHkoV0tQYWdlUmVmIHBhZ2UpOwogCiBXS19FWFBPUlQgYm9vbCBXS1BhZ2VUcnlD
bG9zZShXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VDbG9zZShXS1BhZ2VS
ZWYgcGFnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkocmV2aXNp
b24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4NywxNiArMTg3LDEy
IEBAIC0gKHZvaWQpc3RvcExvYWRpbmcKIAogLSAodm9pZClyZWxvYWQKIHsKLSAgICBjb25zdCBi
b29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgX3BhZ2UtPnJlbG9hZCh7IH0pOwogfQogCiAt
ICh2b2lkKXJlbG9hZEZyb21PcmlnaW4KIHsKLSAgICBjb25zdCBib29sIHJlbG9hZEZyb21Pcmln
aW4gPSB0cnVlOwotICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7
Ci0gICAgX3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFi
bGVkKTsKKyAgICBfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RnJvbU9yaWdp
bik7CiB9CiAKIC0gKE5TU3RyaW5nICopYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQko
cmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTg0NCw5ICs4NDQsNyBAQCAtIChXS05hdmln
YXRpb24gKilnb0ZvcndhcmQKIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkCiB7Ci0gICAgY29u
c3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVs
b2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGF1dG8g
bmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQoeyB9KTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTg1NSw5ICs4NTMsNyBAQCAtIChXS05hdmlnYXRpb24g
KilyZWxvYWQKIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkRnJvbU9yaWdpbgogewotICAgIGNv
bnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IHRydWU7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVs
b2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGF1dG8g
bmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3Jp
Z2luKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTM2
OTIsOSArMzY4OCwxNiBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3MKIAogLSAoV0tO
YXZpZ2F0aW9uICopX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMKIHsKLSAgICBjb25zdCBi
b29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2Fk
KHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGF1dG8gbmF2
aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29u
dGVudEJsb2NrZXJzKTsKKyAgICBpZiAoIW5hdmlnYXRpb24pCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgCisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3Jl
bGVhc2VdOworfQorCistIChXS05hdmlnYXRpb24gKilfcmVsb2FkRXhwaXJlZE9ubHkKK3sKKyAg
ICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6
RXhwaXJlZE9ubHkpOwogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjI4LDYgKzIyOCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0ltbWVkaWF0
ZUEKICNlbmRpZgogCiAtIChXS05hdmlnYXRpb24gKilfcmVsb2FkV2l0aG91dENvbnRlbnRCbG9j
a2VycyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CistIChXS05h
dmlnYXRpb24gKilfcmVsb2FkRXhwaXJlZE9ubHkgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTMpLCBpb3MoMTEuMCkpOwogCiAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3NBbmRSZXNl
dFN0YXRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCShyZXZpc2lvbiAyMTM4OTUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MSw4ICszNDEsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luCiAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVy
ZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShUaW1lb3V0KSk7CiAgICAgbV9wZW5k
aW5nTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS5zZXQocGFnZS0+
cGFnZUlEKCksIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJv
bU9yaWdpbiA9IGZhbHNlOwotICAgIHBhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCB7IH0p
OworICAgIHBhZ2UtPnJlbG9hZCh7IH0pOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpuYXZpZ2F0aW9uT2NjdXJyZWRGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgdm9pZCBXZWJQYWdl
OjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZQogICAgIG1fcGFnZS0+c2V0RGVmZXJzTG9hZGlu
ZyhkZWZlcnNMb2FkaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2
aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJsb2NrZXJzRW5h
YmxlZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKQordm9pZCBXZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJf
dCByZWxvYWRPcHRpb25zLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3Bw
ZXIodGhpcyk7CiAKQEAgLTEzMDUsNyArMTMwNSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVsb2FkKHVp
bnQ2NF90IG5hdmlnYXRpb24KICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9u
SUQ7CiAKICAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21haW5GcmFt
ZS5nZXQoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgY29yZVBhZ2UoKS0+dXNlcklu
cHV0QnJpZGdlKCkucmVsb2FkRnJhbWUobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZWxvYWRG
cm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBjb3JlUGFnZSgpLT51c2Vy
SW5wdXRCcmlkZ2UoKS5yZWxvYWRGcmFtZShtX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIE9wdGlv
blNldDxSZWxvYWRPcHRpb24+Ojpmcm9tUmF3KHJlbG9hZE9wdGlvbnMpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpnb0ZvcndhcmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBiYWNrRm9y
d2FyZEl0ZW1JRCkKQEAgLTQxMDMsNyArNDEwMyw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJldXNl
Q29tbWl0dGVkU2FuZGJveEUKICAgICBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUgPSBmcmFt
ZUxvYWRlci5sb2FkVHlwZSgpOwogCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgYmVpbmcgcmVsb2Fk
ZWQsIGl0IHNob3VsZCByZXVzZSB3aGF0ZXZlciBleHRlbnNpb24gaXMgY29tbWl0dGVkLgotICAg
IGlmIChmcmFtZUxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCB8fCBmcmFtZUxvYWRU
eXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4pCisgICAgaWYgKGlzUmVsb2Fk
KGZyYW1lTG9hZFR5cGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9u
IDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBs
b2FkU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBsb2FkQWx0ZXJuYXRl
SFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOwogICAgIHZvaWQgbmF2aWdhdGVUb1BE
RkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBv
aW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKLSAgICB2
b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwg
Ym9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmKTsKKyAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJl
bG9hZE9wdGlvbnMsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQg
Z29Gb3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29C
YWNrKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29Ub0JhY2tG
b3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgTmF2aWdhdGVUb1BE
RkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soU3RyaW5nIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9j
dW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpCiAKLSAgICBSZWxvYWQo
dWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKKyAgICBSZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50
MzJfdCByZWxvYWRPcHRpb25zLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKQogICAgIFN0b3BMb2FkaW5nKCkKIAogICAgIFN0b3BMb2FkaW5n
RnJhbWUodWludDY0X3QgZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIx
NDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDE3LTAzLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5IHdoZXJlIG9ubHkgZXhwaXJlZCBzdWJy
ZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICh0b1dlYkZy
YW1lTG9hZFR5cGUpOgorICAgICAgICAoLVtXZWJGcmFtZSByZWxvYWRdKToKKyAgICAgICAgKC1b
V2ViRnJhbWUgcmVsb2FkRnJvbU9yaWdpbl0pOgorCiAyMDE3LTAzLTE2ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgdGhlIHN5c3RlbSB0
cmFjaW5nIHBvaW50cwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShy
ZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDU5LDYgKzEwNTksOSBAQCBzdGF0aWMgV2ViRnJhbWVMb2Fk
VHlwZSB0b1dlYkZyYW1lTG9hZFR5CiAgICAgICAgIHJldHVybiBXZWJGcmFtZUxvYWRUeXBlUmVw
bGFjZTsKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW46CiAgICAgICAg
IHJldHVybiBXZWJGcmFtZUxvYWRUeXBlUmVsb2FkRnJvbU9yaWdpbjsKKyAgICBjYXNlIEZyYW1l
TG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIFdlYkZyYW1lTG9hZFR5cGVSZWxvYWQ7CiAgICAgfQogfQogCkBA
IC0yNTM5LDEyICsyNTQyLDEyIEBAIC0gKHZvaWQpc3RvcExvYWRpbmcKIAogLSAodm9pZClyZWxv
YWQKIHsKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5yZWxvYWQoZmFsc2UpOwor
ICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLnJlbG9hZCh7IH0pOwogfQogCiAtICh2
b2lkKXJlbG9hZEZyb21PcmlnaW4KIHsKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIo
KS5yZWxvYWQodHJ1ZSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkucmVsb2Fk
KFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbik7CiB9CiAKIC0gKFdlYkZyYW1lICop
ZmluZEZyYW1lTmFtZWQ6KE5TU3RyaW5nICopbmFtZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzODk1
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTctMDMtMTcgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhIHJlbG9hZCBwb2xpY3kgd2hlcmUgb25seSBleHBpcmVkIHN1YnJlc291cmNlcyBh
cmUgcmV2YWxpZGF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2OTc1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZWxvYWQtZXhwaXJlZC1vbmx5LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZWxvYWQtZXhwaXJlZC1vbmx5
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2RvY3Vt
ZW50LXdpdGgtY2FjaGVkLXVuaXF1ZS1zY3JpcHQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5jZ2k6CisKIDIwMTctMDMtMTMg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFN5bmMgd2ViLXBs
YXRmb3JtLXRlc3RzIHVwIHRvIHJldmlzaW9uIGE1Yjk1Y2IzMTkxNDUwNzA4OGE0ZWRhMTZmNzY3
NGJiYzZmMzMxM2YKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVsb2FkLWV4
cGlyZWQtb25seS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS9yZWxvYWQtZXhwaXJlZC1vbmx5LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHktZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKK1BBU1MKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVsb2FkLWV4cGlyZWQtb25seS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVsb2FkLWV4cGlyZWQtb25seS5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVsb2Fk
LWV4cGlyZWQtb25seS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKKzxib2R5
PgorPHNjcmlwdD4KK2lmICh0ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworfQorY29uc3QgdGVzdFdpbmRvdyA9IHdpbmRvdy5vcGVuKCdodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvY2FjaGUvcmVzb3VyY2VzL2RvY3VtZW50LXdpdGgtY2FjaGVkLXVu
aXF1ZS1zY3JpcHQuaHRtbCcpOworCit2YXIgZmlyc3ROdW1iZXI7Cit3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4geworICAgIGlmIChmaXJzdE51bWJlcikgewor
ICAgICAgICBjb25zdCBzZWNvbmROdW1iZXIgPSBldmVudC5kYXRhOworICAgICAgICBpZiAoZmly
c3ROdW1iZXIgPT0gc2Vjb25kTnVtYmVyKQorICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5l
ckhUTUwgPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHku
aW5uZXJIVE1MID0gYEZBSUw6IGZpcnN0TnVtYmVyPXskZmlyc3ROdW1iZXJ9IHNlY29uZE51bWJl
cj17JHNlY29uZE51bWJlcn1gOworICAgICAgICBpZiAodGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZp
cnN0TnVtYmVyID0gZXZlbnQuZGF0YTsKKyAgICBpZiAodGVzdFdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIHRlc3RXaW5kb3cuaW50ZXJuYWxzLnJlbG9hZEV4cGlyZWRPbmx5KCk7Cit9KTsKKwor
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9k
b2N1bWVudC13aXRoLWNhY2hlZC11bmlxdWUtc2NyaXB0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvZG9jdW1lbnQtd2l0aC1jYWNoZWQt
dW5pcXVlLXNjcmlwdC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FjaGUvcmVzb3VyY2VzL2RvY3VtZW50LXdpdGgtY2FjaGVkLXVuaXF1ZS1zY3JpcHQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKzxoMT48L2gxPgorPHNjcmlwdCBzcmM9
J3JhbmRvbS1jYWNoZWQuY2dpJz48L3NjcmlwdD4KKzxzY3JpcHQ+Cit3aW5kb3cub3BlbmVyLnBv
c3RNZXNzYWdlKHJhbmRvbU51bWJlciwgJyonKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5jZ2kKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLWNhY2hl
ZC5jZ2kJKHJldmlzaW9uIDIxMzg5NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUv
cmVzb3VyY2VzL3JhbmRvbS1jYWNoZWQuY2dpCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNiBA
QAogCiBwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2phdmFzY3JpcHRcbiI7CiBwcmludCAiQ2Fj
aGUtY29udHJvbDogbWF4LWFnZT02MDAwMFxuIjsKLXByaW50ICJFVGFnOiBcIjEyMzQ1Njc4OVwi
XG4iOwogcHJpbnQgIlxuIjsKIAogbXkgJHJhbmRvbV9udW1iZXIgPSBpbnQocmFuZCgxMDAwMDAw
MDAwMDAwKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304776</attachid>
            <date>2017-03-17 07:18:45 -0700</date>
            <delta_ts>2017-03-17 07:54:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>reload-revalidation-policy-12.patch</filename>
            <type>text/plain</type>
            <size>40506</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE3LTAzLTE3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5
IHdoZXJlIG9ubHkgZXhwaXJlZCBzdWJyZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3Rz
L2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHkuaHRtbAorCisgICAgICAgIFRoZSBkZWZhdWx0IHJl
bG9hZCBiZWhhdmlvciByZXZhbGlkYXRlcyBhbGwgcmVzb3VyY2VzIG9uIHRoZSBwYWdlLiBUaGlz
IHBhdGNoIGFkZHMKKyAgICAgICAgYSBuZXcgcG9saWN5IHRoYXQgcmV2YWxpZGF0ZXMgZXhwaXJl
ZCAoYW5kIHVuY2FjaGVhYmxlKSByZXNvdXJjZXMgb25seS4gVXNpbmcgdGhpcworICAgICAgICBw
b2xpY3kgY2FuIHNwZWVkIHVwIHJlbG9hZHMgc2lnbmlmaWNhbnRseSBhbmQgYWxzbyByZWR1Y2Ug
bmV0d29yayB0cmFmZmljIGFuZCBzZXJ2ZXIKKyAgICAgICAgbG9hZC4KKworICAgICAgICAqIGhp
c3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkNhY2hlUGFnZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQmFja0ZvcndhcmRMb2FkVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1JlbG9hZCk6CisKKyAgICAgICAgICAgIEFkZCBhIGhlbHBlciBm
dW5jdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6bG9nTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVsb2FkKToKKworICAgICAgICAgICAgUmVwbGFjZSBib29sIGFyZ3VtZW50cyB3aXRo
IE9wdGlvblNldDxSZWxvYWRPcHRpb24+LiBNb3N0IG9mIHRoZSBwYXRjaCBpcyBhYm91dCBhZGFw
dGluZyB0byB0aGlzLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJyZXNvdXJj
ZUNhY2hlUG9saWN5KToKKworICAgICAgICAgICAgUmV0dXJuIENhY2hlUG9saWN5VmVyaWZ5IGZv
ciAnUmVsb2FkRXhwaXJlZE9ubHknIGZyYW1lIGxvYWQgdHlwZS4gVGhpcyBpcyB0aGUgc3Vic3Rh
bnRpdmUKKyAgICAgICAgICAgIGNoYW5nZSB0aGF0IGNhdXNlcyB0aGUgYmVoYXZpb3IgZGlmZmVy
ZW5jZS4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRl
Rm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0UmVx
dWVzdENhY2hpbmdQb2xpY3kpOgorCisgICAgICAgICAgICBGbGlwIHRoZSBpc01haW5SZXNvdXJj
ZSBjb25kaXRpb24gZm9yIGJldHRlciByZWFkYWJpbGl0eS4KKworICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnJlbG9hZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAg
KiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1bWVudFN0YXRlKToKKyAgICAgICAgKiBwYWdlL0RpYWdu
b3N0aWNMb2dnaW5nS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJlbG9hZFJldmFsaWRhdGluZ0V4cGlyZWRLZXkpOgorICAgICAgICAqIHBhZ2UvRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmg6CisgICAgICAgICogcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKToKKyAg
ICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpmb3JjZVJlbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlbG9hZEV4cGlyZWRPbmx5KToKKworICAgICAg
ICAgICAgVGVzdGluZyBzdXBwb3J0LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTctMDMtMTQgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTGliXSBVc2UgVVNFKEdM
SUIpIGd1YXJkcyBpbiBXZWJDb3JlL3dvcmtlcnMvCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9Q
YWdlQ2FjaGUuY3BwCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw2ICsyNDksMTMgQEAgc3RhdGlj
IGJvb2wgY2FuQ2FjaGVQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgICAgIGlzQ2FjaGVhYmxlID0gZmFs
c2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZEV4cGlyZWRPbmx5OiB7CisgICAgICAgIC8vIE5vIHBvaW50IHdyaXRpbmcgdG8gdGhlIGNhY2hl
IG9uIGEgcmVsb2FkLCBzaW5jZSB3ZSB3aWxsIGp1c3Qgd3JpdGUgb3ZlciBpdCBhZ2FpbiB3aGVu
IHdlIGxlYXZlIHRoYXQgcGFnZS4KKyAgICAgICAgUENMT0coIiAgIC1Mb2FkIHR5cGUgaXM6IFJl
bG9hZFJldmFsaWRhdGluZ0V4cGlyZWQiKTsKKyAgICAgICAgbG9nUGFnZUNhY2hlRmFpbHVyZURp
YWdub3N0aWNNZXNzYWdlKGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LCBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJlbG9hZFJldmFsaWRhdGluZ0V4cGlyZWRLZXkoKSk7CisgICAgICAgIGlzQ2FjaGVh
YmxlID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIEZyYW1lTG9hZFR5
cGU6OlN0YW5kYXJkOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6QmFjazoKICAgICBjYXNlIEZy
YW1lTG9hZFR5cGU6OkZvcndhcmQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyMyw3ICs0MjMsMTEgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbW92ZVNjcmlwdFRv
RQogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyYsIGNvbnN0IGJv
b2wqIGNvbnN0IG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3Jp
cHRUb0V2YWx1YXRlT25Mb2FkKQogewogICAgIG1fcGVuZGluZ1NjcmlwdFRvRXZhbHVhdGVPbkxv
YWRPbmNlID0gb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkID8gKm9wdGlvbmFsU2NyaXB0
VG9FdmFsdWF0ZU9uTG9hZCA6IGVtcHR5U3RyaW5nKCk7Ci0gICAgbV9wYWdlLm1haW5GcmFtZSgp
LmxvYWRlcigpLnJlbG9hZChvcHRpb25hbElnbm9yZUNhY2hlID8gKm9wdGlvbmFsSWdub3JlQ2Fj
aGUgOiBmYWxzZSk7CisKKyAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25z
OworICAgIGlmIChvcHRpb25hbElnbm9yZUNhY2hlICYmICpvcHRpb25hbElnbm9yZUNhY2hlKQor
ICAgICAgICByZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbjsKKyAgICBt
X3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQogCiB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNp
b24gMjEzODk1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw3IEBAIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBl
KEZyYW1lTG9hZFR5cGUKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkOgogICAgIGNh
c2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
RnJvbU9yaWdpbjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5Ogog
ICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJl
ZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6
OlJlcGxhY2U6CkBAIC0xNjcsNiArMTY4LDI2IEBAIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBl
KEZyYW1lTG9hZFR5cGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgaXNSZWxvYWQoRnJh
bWVMb2FkVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRnJhbWVM
b2FkVHlwZTo6UmVsb2FkOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdp
bjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkOgorICAgIGNhc2Ug
RnJhbWVMb2FkVHlwZTo6U2FtZToKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0
aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlcGxhY2U6
CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpCYWNrOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6
Rm9yd2FyZDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIFRoaXMgaXMgbm90IGluIHRoZSBGcmFtZUxvYWRlciBj
bGFzcyB0byBlbXBoYXNpemUgdGhhdCBpdCBkb2VzIG5vdCBkZXBlbmQgb24KIC8vIHByaXZhdGUg
RnJhbWVMb2FkZXIgZGF0YSwgYW5kIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBw
dWJsaWMgZnVuY3Rpb25zCiAvLyB3aXRoIGFjY2VzcyB0byBwcml2YXRlIGRhdGEuICBTaW5jZSBv
bmx5IHRoaXMgLmNwcCBmaWxlIG5lZWRzIGl0LCBtYWtpbmcgaXQKQEAgLTEyMDksNyArMTIzMCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2EKICAgICAgICAgcmVx
dWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihtX2ZyYW1lLnRyZWUoKS50b3AoKS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwogCiAg
ICAgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QocmVxdWVzdCwgbmV3TG9hZFR5cGUsIHRydWUpOwot
ICAgIGlmIChuZXdMb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQgfHwgbmV3TG9hZFR5
cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbikKKyAgICBpZiAoaXNSZWxvYWQo
bmV3TG9hZFR5cGUpKQogICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9y
aW5nQ2FjaGVEYXRhKTsKIAogICAgIEFTU0VSVChuZXdMb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBl
OjpTYW1lKTsKQEAgLTEyNjIsNyArMTI4Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwo
Y29uc3QgRnJhbWVMb2EKICAgICAgICAgbV9xdWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAg
ICAgICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCiAgICAgICAgICAgICBtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnNldElzQ2xpZW50UmVkaXJlY3QodHJ1ZSk7Ci0gICAg
fSBlbHNlIGlmIChzYW1lVVJMICYmIG5ld0xvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZCAmJiBuZXdMb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luKSB7Cisg
ICAgfSBlbHNlIGlmIChzYW1lVVJMICYmICFpc1JlbG9hZChuZXdMb2FkVHlwZSkpIHsKICAgICAg
ICAgLy8gRXhhbXBsZSBvZiB0aGlzIGNhc2UgYXJlIHNpdGVzIHRoYXQgcmVsb2FkIHRoZSBzYW1l
IFVSTCB3aXRoIGEgZGlmZmVyZW50IGNvb2tpZQogICAgICAgICAvLyBkcml2aW5nIHRoZSBnZW5l
cmF0ZWQgY29udGVudCwgb3IgYSBtYXN0ZXIgZnJhbWUgd2l0aCBsaW5rcyB0aGF0IGRyaXZlIGEg
dGFyZ2V0CiAgICAgICAgIC8vIGZyYW1lLCB3aGVyZSB0aGUgdXNlciBoYXMgY2xpY2tlZCBvbiB0
aGUgc2FtZSBsaW5rIHJlcGVhdGVkbHkuCkBAIC0xNDAwLDYgKzE0MjEsOSBAQCBzdGF0aWMgdm9p
ZCBsb2dOYXZpZ2F0aW9uKE1haW5GcmFtZSYgZnJhCiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWRGcm9tT3JpZ2luOgogICAgICAgICBuYXZpZ2F0aW9uRGVzY3JpcHRpb24gPSBBU0NJSUxp
dGVyYWwoInJlbG9hZEZyb21PcmlnaW4iKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGcmFt
ZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKKyAgICAgICAgbmF2aWdhdGlvbkRlc2NyaXB0
aW9uID0gQVNDSUlMaXRlcmFsKCJyZWxvYWRSZXZhbGlkYXRpbmdFeHBpcmVkIik7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKICAgICBjYXNlIEZyYW1l
TG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKICAgICAgICAgLy8g
Tm90IGxvZ2dpbmcgdGhvc2UgZm9yIG5vdy4KQEAgLTE1NzIsNyArMTU5Niw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9h
ZGVyKGxvYWRlci5wdHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6Olllcyk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29s
IGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCit2b2lkIEZyYW1l
TG9hZGVyOjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIHsKICAgICBp
ZiAoIW1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTE1OTMsNyArMTYxNyw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAgICBSZWY8RG9j
dW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRp
YWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoaW5pdGlhbFJlcXVlc3QudXJs
KCkpKTsKICAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50
TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeVRvUHJvcGFnYXRlKCkpOwogCi0gICAgbG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lv
bnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGxvYWRlci0+c2V0VXNlckNv
bnRlbnRFeHRlbnNpb25zRW5hYmxlZCghb3B0aW9ucy5jb250YWlucyhSZWxvYWRPcHRpb246OkRp
c2FibGVDb250ZW50QmxvY2tlcnMpKTsKICAgICAKICAgICBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QgPSBsb2FkZXItPnJlcXVlc3QoKTsKIApAQCAtMTYwNSw4ICsxNjI5LDE2IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAgICAgICAgbG9hZGVyLT5zZXRUcmln
Z2VyaW5nQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6OkZv
cm1SZXN1Ym1pdHRlZCkpOwogCiAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9j
dW1lbnRMb2FkZXItPm92ZXJyaWRlRW5jb2RpbmcoKSk7CisKKyAgICBhdXRvIGZyYW1lTG9hZFR5
cGVGb3JSZWxvYWRPcHRpb25zID0gW10gKGF1dG8gb3B0aW9ucykgeworICAgICAgICBpZiAob3B0
aW9ucy5jb250YWlucyhSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pKQorICAgICAgICAgICAgcmV0
dXJuIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW47CisgICAgICAgIGlmIChvcHRpb25z
LmNvbnRhaW5zKFJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpKQorICAgICAgICAgICAgcmV0dXJu
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OworICAgICAgICByZXR1cm4gRnJhbWVM
b2FkVHlwZTo6UmVsb2FkOworICAgIH07CiAgICAgCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRl
cihsb2FkZXIucHRyKCksIGVuZFRvRW5kUmVsb2FkID8gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJv
bU9yaWdpbiA6IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMOjpZZXMpOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBm
cmFtZUxvYWRUeXBlRm9yUmVsb2FkT3B0aW9ucyhvcHRpb25zKSwgMCwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMOjpZZXMpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVy
cyhDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSkK
QEAgLTE5NTksNiArMTk5MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1p
dHRlZCgKIAogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgIGNhc2UgRnJhbWVM
b2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZEV4cGlyZWRPbmx5OgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAgICBjYXNlIEZy
YW1lTG9hZFR5cGU6OlJlcGxhY2U6CiAgICAgICAgIGhpc3RvcnkoKS51cGRhdGVGb3JSZWxvYWQo
KTsKQEAgLTE5NzYsMTEgKzIwMDksNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9D
b21taXR0ZWQoCiAgICAgICAgIGhpc3RvcnkoKS51cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRC
YWNrRm9yd2FyZExpc3QoKTsKICAgICAgICAgbV9jbGllbnQudHJhbnNpdGlvblRvQ29tbWl0dGVk
Rm9yTmV3UGFnZSgpOwogICAgICAgICBicmVhazsKLQotICAgIC8vIEZJWE1FIFJlbW92ZSB0aGlz
IGNoZWNrIHdoZW4gZHVtbXkgZHMgaXMgcmVtb3ZlZCAod2hhdGV2ZXIgImR1bW15IGRzIiBpcyku
Ci0gICAgLy8gQW4gZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gaWYgd2UncmUgaW4gdGhlIEZy
YW1lTG9hZFR5cGVVbmluaXRpYWxpemVkIHN0YXRlLgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIG1fZG9jdW1lbnRMb2FkZXItPndyaXRl
cigpLnNldE1JTUVUeXBlKGRsLT5yZXNwb25zZU1JTUVUeXBlKCkpOwpAQCAtMjE5MSw2ICsyMjE5
LDcgQEAgQ2FjaGVQb2xpY3kgRnJhbWVMb2FkZXI6OnN1YnJlc291cmNlQ2FjaAogICAgIGNhc2Ug
RnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlNhbWU6CiAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZDoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6
OlJlbG9hZEV4cGlyZWRPbmx5OgogICAgICAgICByZXR1cm4gQ2FjaGVQb2xpY3lWZXJpZnk7CiAg
ICAgfQogCkBAIC0yMjc3LDcgKzIzMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRD
b21wbGV0ZUZvclRoCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBo
YWQgYSBzY3JvbGwgcG9pbnQsIHNjcm9sbCB0byBpdCwgb3ZlcnJpZGluZyB0aGUgYW5jaG9yIHBv
aW50IGlmIGFueS4KICAgICAgICAgICAgIGlmIChtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICAg
ICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkgfHwgbV9sb2FkVHlw
ZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQgfHwgbV9sb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBl
OjpSZWxvYWRGcm9tT3JpZ2luKQorICAgICAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUobV9sb2FkVHlwZSkgfHwgaXNSZWxvYWQobV9sb2FkVHlwZSkpCiAgICAgICAgICAgICAg
ICAgICAgIGhpc3RvcnkoKS5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsKICAg
ICAgICAgICAgIH0KIApAQCAtMjU3MywyNyArMjYwMiwzMSBAQCBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeSBGcmFtZUxvYWRlcjo6CiB7CiAgICAgaWYgKG1fb3ZlcnJpZGVDYWNoZVBvbGljeUZv
clRlc3RpbmcpCiAgICAgICAgIHJldHVybiBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5n
LnZhbHVlKCk7Ci0gICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewotICAgICAgICBpZiAocmVxdWVz
dC5pc0NvbmRpdGlvbmFsKCkpCisKKyAgICBpZiAoaXNNYWluUmVzb3VyY2UpIHsKKyAgICAgICAg
aWYgKGlzUmVsb2FkKGxvYWRUeXBlKSB8fCByZXF1ZXN0LmlzQ29uZGl0aW9uYWwoKSkKICAgICAg
ICAgICAgIHJldHVybiBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YTsKLSAgICAgICAgaWYgKGRvY3Vt
ZW50TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSkgewotICAgICAgICAgICAgLy8gSWYg
d2UgaW5oZXJpdCBjYWNoZSBwb2xpY3kgZnJvbSBhIG1haW4gcmVzb3VyY2UsIHdlIHVzZSB0aGUg
RG9jdW1lbnRMb2FkZXIncwotICAgICAgICAgICAgLy8gb3JpZ2luYWwgcmVxdWVzdCBjYWNoZSBw
b2xpY3kgZm9yIHR3byByZWFzb25zOgotICAgICAgICAgICAgLy8gMS4gRm9yIFBPU1QgcmVxdWVz
dHMsIHdlIG11dGF0ZSB0aGUgY2FjaGUgcG9saWN5IGZvciB0aGUgbWFpbiByZXNvdXJjZSwKLSAg
ICAgICAgICAgIC8vICAgIGJ1dCB3ZSBkbyBub3Qgd2FudCB0aGlzIHRvIGFwcGx5IHRvIHN1YnJl
c291cmNlcwotICAgICAgICAgICAgLy8gMi4gRGVsZWdhdGVzIHRoYXQgbW9kaWZ5IHRoZSBjYWNo
ZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBzaG91bGQKLSAgICAgICAgICAgIC8vICAg
IG5vdCBhZmZlY3QgYW55IG90aGVyIHJlc291cmNlcy4gU3VjaCBjaGFuZ2VzIG5lZWQgdG8gYmUg
ZG9uZQotICAgICAgICAgICAgLy8gICAgcGVyIHJlcXVlc3QuCi0gICAgICAgICAgICBSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeSBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5ID0gZG9j
dW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKTsKLSAgICAgICAg
ICAgIC8vIEJhY2stZm9yd2FyZCBuYXZpZ2F0aW9ucyB0cnkgdG8gbG9hZCBtYWluIHJlc291cmNl
IGZyb20gY2FjaGUgb25seSB0byBhdm9pZCByZS1zdWJtaXR0aW5nIGZvcm0gZGF0YSwgYW5kIHN0
YXJ0IG92ZXIgKHdpdGggYSB3YXJuaW5nIGRpYWxvZykgaWYgdGhhdCBmYWlscy4KLSAgICAgICAg
ICAgIC8vIFRoaXMgcG9saWN5IGlzIHNldCBvbiBpbml0aWFsIHJlcXVlc3QgdG9vLCBidXQgc2hv
dWxkIG5vdCBiZSBpbmhlcml0ZWQuCi0gICAgICAgICAgICByZXR1cm4gKG1haW5Eb2N1bWVudE9y
aWdpbmFsQ2FjaGVQb2xpY3kgPT0gUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpID8gUmV0dXJuQ2Fj
aGVEYXRhRWxzZUxvYWQgOiBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5OwotICAgICAg
ICB9Ci0gICAgLy8gRklYTUU6IE90aGVyIEZyYW1lTG9hZGVyIGZ1bmN0aW9ucyBoYXZlIGR1cGxp
Y2F0ZWQgY29kZSBmb3Igc2V0dGluZyBjYWNoZSBwb2xpY3kgb2YgbWFpbiByZXF1ZXN0IHdoZW4g
cmVsb2FkaW5nLgotICAgIC8vIEl0IHNlZW1zIGJldHRlciB0byBtYW5hZ2UgaXQgZXhwbGljaXRs
eSB0aGFuIHRvIGhpZGUgdGhlIGxvZ2ljIGluc2lkZSBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCgp
LgotICAgIH0gZWxzZSBpZiAobG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkIHx8IGxv
YWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4gfHwgcmVxdWVzdC5pc0Nv
bmRpdGlvbmFsKCkpCisKKyAgICAgICAgcmV0dXJuIFVzZVByb3RvY29sQ2FjaGVQb2xpY3k7Cisg
ICAgfQorCisgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpKQogICAgICAgICByZXR1cm4g
UmVsb2FkSWdub3JpbmdDYWNoZURhdGE7CiAKKyAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+aXNM
b2FkaW5nSW5BUElTZW5zZSgpKSB7CisgICAgICAgIC8vIElmIHdlIGluaGVyaXQgY2FjaGUgcG9s
aWN5IGZyb20gYSBtYWluIHJlc291cmNlLCB3ZSB1c2UgdGhlIERvY3VtZW50TG9hZGVyJ3MKKyAg
ICAgICAgLy8gb3JpZ2luYWwgcmVxdWVzdCBjYWNoZSBwb2xpY3kgZm9yIHR3byByZWFzb25zOgor
ICAgICAgICAvLyAxLiBGb3IgUE9TVCByZXF1ZXN0cywgd2UgbXV0YXRlIHRoZSBjYWNoZSBwb2xp
Y3kgZm9yIHRoZSBtYWluIHJlc291cmNlLAorICAgICAgICAvLyAgICBidXQgd2UgZG8gbm90IHdh
bnQgdGhpcyB0byBhcHBseSB0byBzdWJyZXNvdXJjZXMKKyAgICAgICAgLy8gMi4gRGVsZWdhdGVz
IHRoYXQgbW9kaWZ5IHRoZSBjYWNoZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBzaG91
bGQKKyAgICAgICAgLy8gICAgbm90IGFmZmVjdCBhbnkgb3RoZXIgcmVzb3VyY2VzLiBTdWNoIGNo
YW5nZXMgbmVlZCB0byBiZSBkb25lCisgICAgICAgIC8vICAgIHBlciByZXF1ZXN0LgorICAgICAg
ICBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9s
aWN5ID0gZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKTsK
KyAgICAgICAgLy8gQmFjay1mb3J3YXJkIG5hdmlnYXRpb25zIHRyeSB0byBsb2FkIG1haW4gcmVz
b3VyY2UgZnJvbSBjYWNoZSBvbmx5IHRvIGF2b2lkIHJlLXN1Ym1pdHRpbmcgZm9ybSBkYXRhLCBh
bmQgc3RhcnQgb3ZlciAod2l0aCBhIHdhcm5pbmcgZGlhbG9nKSBpZiB0aGF0IGZhaWxzLgorICAg
ICAgICAvLyBUaGlzIHBvbGljeSBpcyBzZXQgb24gaW5pdGlhbCByZXF1ZXN0IHRvbywgYnV0IHNo
b3VsZCBub3QgYmUgaW5oZXJpdGVkLgorICAgICAgICByZXR1cm4gKG1haW5Eb2N1bWVudE9yaWdp
bmFsQ2FjaGVQb2xpY3kgPT0gUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpID8gUmV0dXJuQ2FjaGVE
YXRhRWxzZUxvYWQgOiBtYWluRG9jdW1lbnRPcmlnaW5hbENhY2hlUG9saWN5OworICAgIH0KKwog
ICAgIHJldHVybiBVc2VQcm90b2NvbENhY2hlUG9saWN5OwogfQogCkBAIC0yODU5LDggKzI4OTIs
NyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRQZXJmb3JtRnJhZ21lbnROCiAgICAgLy8gRklY
TUU6IFdoYXQgYWJvdXQgbG9hZCB0eXBlcyBvdGhlciB0aGFuIFN0YW5kYXJkIGFuZCBSZWxvYWQ/
CiAKICAgICByZXR1cm4gKCFpc0Zvcm1TdWJtaXNzaW9uIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGh0dHBNZXRob2QsICJnZXQiKSkKLSAgICAgICAgJiYgbG9hZFR5cGUgIT0gRnJh
bWVMb2FkVHlwZTo6UmVsb2FkCi0gICAgICAgICYmIGxvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGU6
OlJlbG9hZEZyb21PcmlnaW4KKyAgICAgICAgJiYgIWlzUmVsb2FkKGxvYWRUeXBlKQogICAgICAg
ICAmJiBsb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlOjpTYW1lCiAgICAgICAgICYmICFzaG91bGRS
ZWxvYWQobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSwgdXJsKQogICAgICAgICAvLyBXZSBkb24n
dCB3YW50IHRvIGp1c3Qgc2Nyb2xsIGlmIGEgbGluayBmcm9tIHdpdGhpbiBhCkBAIC0zNDA3LDYg
KzM0MzksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJCiAgICAg
ICAgIHN3aXRjaCAobG9hZFR5cGUpIHsKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxv
YWQ6CiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoKKyAgICAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKICAgICAgICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6QmFjazoKQEAgLTM0MjYsNyAr
MzQ1OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEkKICAgICAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTYW1lOgot
ICAgICAgICBkZWZhdWx0OgorICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlcGxhY2U6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcg
QEAgc3RydWN0IEZyYW1lTG9hZFJlcXVlc3Q7CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiAKIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBlKEZyYW1lTG9hZFR5cGUpOwor
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFtZUxvYWRUeXBlKTsKIAogY2xhc3MgRnJh
bWVMb2FkZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYW1lTG9hZGVyKTsKQEAgLTEx
OSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cmxTZWxlY3Rl
ZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBMb2NrSGlzdG9yeSwg
TG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6
bnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9t
KTsKICAgICB2b2lkIHN1Ym1pdEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSwgYm9v
bCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBvdmVycmlk
ZUVuY29kaW5nKTsKIAogICAgIHZvaWQgb3BlbihDYWNoZWRGcmFtZUJhc2UmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24gMjEzODk1KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIEZyYW1lU3RhdGUgewpAQCAt
NDQsNiArNDYsMTIgQEAgZW51bSBQb2xpY3lBY3Rpb24gewogICAgIFBvbGljeUlnbm9yZQogfTsK
IAorZW51bSBjbGFzcyBSZWxvYWRPcHRpb24geworICAgIEV4cGlyZWRPbmx5ID0gMSA8PCAwLAor
ICAgIEZyb21PcmlnaW4gID0gMSA8PCAxLAorICAgIERpc2FibGVDb250ZW50QmxvY2tlcnMgPSAx
IDw8IDIsCit9OworCiBlbnVtIGNsYXNzIEZyYW1lTG9hZFR5cGUgewogICAgIFN0YW5kYXJkLAog
ICAgIEJhY2ssCkBAIC01NCw2ICs2Miw3IEBAIGVudW0gY2xhc3MgRnJhbWVMb2FkVHlwZSB7CiAg
ICAgUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCAvLyBGSVhNRTogTWVyZ2UgImxv
Y2tCYWNrRm9yd2FyZExpc3QiLCAibG9ja0hpc3RvcnkiLCAicXVpY2tSZWRpcmVjdCIgYW5kICJj
bGllbnRSZWRpcmVjdCIgaW50byBhIHNpbmdsZSBjb25jZXB0IG9mIHJlZGlyZWN0LgogICAgIFJl
cGxhY2UsCiAgICAgUmVsb2FkRnJvbU9yaWdpbiwKKyAgICBSZWxvYWRFeHBpcmVkT25seQogfTsK
IAogZW51bSBjbGFzcyBOZXdGcmFtZU9wZW5lclBvbGljeSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyOSw2ICsyMjksNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlRG9jdW1l
bnRTCiAgICAgc3dpdGNoIChtX2ZyYW1lLmxvYWRlcigpLmxvYWRUeXBlKCkpIHsKICAgICBjYXNl
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDoKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZy
b21PcmlnaW46CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRFeHBpcmVkT25seToKICAg
ICBjYXNlIEZyYW1lTG9hZFR5cGU6OlNhbWU6CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZXBs
YWNlOgogICAgICAgICAvLyBOb3QgcmVzdG9yaW5nIHRoZSBkb2N1bWVudCBzdGF0ZS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAJKHJldmlz
aW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCwxMSBAQCBTdHJpbmcgRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpyZWxvYWRGcm9tCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgicmVsb2Fk
RnJvbU9yaWdpbiIpOwogfQogCitTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZWxvYWRS
ZXZhbGlkYXRpbmdFeHBpcmVkS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJyZWxv
YWRSZXZhbGlkYXRpbmdFeHBpcmVkIik7Cit9CisKIFN0cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6OnNhbWVMb2FkS2V5KCkKIHsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzYW1lTG9hZCIp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCShy
ZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5n
S2V5cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgcmVkaXJlY3RLZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIHJlbG9hZEZyb21P
cmlnaW5LZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIHJlbG9hZEtleSgpOworICAgIHN0YXRpYyBT
dHJpbmcgcmVsb2FkUmV2YWxpZGF0aW5nRXhwaXJlZEtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcg
cmVwbGFjZUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VMb2FkZWRLZXkoKTsKICAg
ICBzdGF0aWMgU3RyaW5nIHJlc291cmNlUmVzcG9uc2VTb3VyY2VLZXkoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCShyZXZpc2lvbiAyMTM4OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQyLDkgKzI0Miw5IEBAIHZvaWQgVXNlcklucHV0QnJpZGdlOjpsb2FkUmVxdWVzdChj
b25zdCAKICAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChyZXF1ZXN0KTsKIH0K
IAotdm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKEZyYW1lKiBmcmFtZSwgYm9vbCBl
bmRUb0VuZFJlbG9hZCwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBJbnB1dFNvdXJjZSkK
K3ZvaWQgVXNlcklucHV0QnJpZGdlOjpyZWxvYWRGcmFtZShGcmFtZSogZnJhbWUsIE9wdGlvblNl
dDxSZWxvYWRPcHRpb24+IG9wdGlvbnMsIElucHV0U291cmNlKQogewotICAgIGZyYW1lLT5sb2Fk
ZXIoKS5yZWxvYWQoZW5kVG9FbmRSZWxvYWQsIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAg
IGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQob3B0aW9ucyk7CiB9CiAKIHZvaWQgVXNlcklucHV0QnJp
ZGdlOjpzdG9wTG9hZGluZ0ZyYW1lKEZyYW1lKiBmcmFtZSwgSW5wdXRTb3VyY2UpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCShyZXZpc2lvbiAyMTM4OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIApAQCAtODgsNyArODksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOYXZpZ2F0aW9u
IEFQSXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVs
b2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIElucHV0U291cmNlID0gSW5wdXRTb3Vy
Y2U6OlVzZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBP
cHRpb25TZXQ8UmVsb2FkT3B0aW9uPiwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wTG9hZGluZ0ZyYW1lKEZyYW1lKiwgSW5wdXRT
b3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgdHJ5Q2xvc2VQYWdlKElucHV0U291cmNlIHNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjEzODk1
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yODIwLDcgKzI4MjAsMTYgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFVzZXNNb2NrU2Nyb2xs
QW5pbWF0bwogCiB2b2lkIEludGVybmFsczo6Zm9yY2VSZWxvYWQoYm9vbCBlbmRUb0VuZCkKIHsK
LSAgICBmcmFtZSgpLT5sb2FkZXIoKS5yZWxvYWQoZW5kVG9FbmQpOworICAgIE9wdGlvblNldDxS
ZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CisgICAgaWYgKGVuZFRvRW5kKQorICAgICAgICBy
ZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbjsKKworICAgIGZyYW1lKCkt
PmxvYWRlcigpLnJlbG9hZChyZWxvYWRPcHRpb25zKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnJl
bG9hZEV4cGlyZWRPbmx5KCkKK3sKKyAgICBmcmFtZSgpLT5sb2FkZXIoKS5yZWxvYWQoUmVsb2Fk
T3B0aW9uOjpFeHBpcmVkT25seSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbmFibGVBdXRvU2l6
ZU1vZGUoYm9vbCBlbmFibGVkLCBpbnQgbWluaW11bVdpZHRoLCBpbnQgbWluaW11bUhlaWdodCwg
aW50IG1heGltdW1XaWR0aCwgaW50IG1heGltdW1IZWlnaHQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIHRvb2xUaXBGcm9tRWxlbWVudChFbGVtZW50JikgY29uc3Q7CiAKICAgICB2
b2lkIGZvcmNlUmVsb2FkKGJvb2wgZW5kVG9FbmQpOworICAgIHZvaWQgcmVsb2FkRXhwaXJlZE9u
bHkoKTsKIAogICAgIHZvaWQgZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wgZW5hYmxlZCwgaW50IG1p
bmltdW1XaWR0aCwgaW50IG1pbmltdW1IZWlnaHQsIGludCBtYXhpbXVtV2lkdGgsIGludCBtYXhp
bXVtSGVpZ2h0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2
aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTEsNiArMzkxLDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhh
dmlvciB7CiAgICAgdm9pZCBzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGJvb2xlYW4gZW5hYmxl
ZCk7CiAKICAgICB2b2lkIGZvcmNlUmVsb2FkKGJvb2xlYW4gZW5kVG9FbmQpOworICAgIHZvaWQg
cmVsb2FkRXhwaXJlZE9ubHkoKTsKIAogICAgIHZvaWQgZW5hYmxlQXV0b1NpemVNb2RlKGJvb2xl
YW4gZW5hYmxlZCwgbG9uZyBtaW5pbXVtV2lkdGgsIGxvbmcgbWluaW11bUhlaWdodCwgbG9uZyBt
YXhpbXVtV2lkdGgsIGxvbmcgbWF4aW11bUhlaWdodCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM4IEBACisyMDE3LTAzLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5IHdoZXJlIG9ubHkgZXhwaXJlZCBz
dWJyZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAg
ICAoV0tQYWdlUmVsb2FkKToKKyAgICAgICAgKFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50Qmxv
Y2tlcnMpOgorICAgICAgICAoV0tQYWdlUmVsb2FkRnJvbU9yaWdpbik6CisgICAgICAgIChXS1Bh
Z2VSZWxvYWRFeHBpcmVkT25seSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVsb2FkXSk6
CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWxvYWRGcm9tT3JpZ2lu
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyByZWxvYWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZEZyb21P
cmlnaW5dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZWxvYWRXaXRob3V0Q29udGVudEJsb2Nr
ZXJzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkRXhwaXJlZE9ubHldKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luZ0NvbnRleHQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZWxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZFJldXNlQ29tbWl0
dGVkU2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAxNy0wMy0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IHN5bnRheCBlcnJvciBpbiBHVEsrIEFQSSBkb2Nz
LgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAkocmV2
aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsMTEgKzI0OCw4IEBAIGJvb2wgV2ViRnJhbWVQcm94
eTo6ZGlkSGFuZGxlQ29udGVudEZpbHQKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlIHsg
bV9wYWdlIH07CiAgICAgQVNTRVJUKHBhZ2UpOwogICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3BhZ2VdKGJvb2wgdW5ibG9ja2VkKSB7Ci0gICAg
ICAgIGlmICh1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9y
aWdpbiA9IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFi
bGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHBhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBj
b250ZW50QmxvY2tlcnNFbmFibGVkKTsKLSAgICAgICAgfQorICAgICAgICBpZiAodW5ibG9ja2Vk
KQorICAgICAgICAgICAgcGFnZS0+cmVsb2FkKHsgfSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
cmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjMsNyArMTE2Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdG9wTG9hZGluZygpCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIH0KIAotUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxv
YWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCitS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2Vi
Q29yZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogCkBAIC0xMTg2LDcgKzExODYsNyBAQCBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlCiAgICAgCiAgICAgYXV0byBuYXZp
Z2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpLCByZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVk
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBv
cHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7CiAgICAg
bV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBX
VEZNb3ZlKG5hdmlnYXRpb24pOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsNyArNDA0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5n
JiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50
IHNjcmVlblBvaW50KTsKIAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKLSAgICBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiByZWxvYWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRC
bG9ja2Vyc0VuYWJsZWQpOworICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlbG9hZChPcHRp
b25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPik7CiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBnb0ZvcndhcmQoKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBnb0JhY2soKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lv
biAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQyLDIzICsyNDIsMjIgQEAgdm9pZCBXS1BhZ2VTdG9wTG9hZGlu
ZyhXS1BhZ2VSZWYgcGFnZVJlZgogCiB2b2lkIFdLUGFnZVJlbG9hZChXS1BhZ2VSZWYgcGFnZVJl
ZikKIHsKLSAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICBjb25z
dCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIHRvSW1wbChwYWdlUmVm
KS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAg
IHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKHsgfSk7CiB9CiAKIHZvaWQgV0tQYWdlUmVsb2FkV2l0
aG91dENvbnRlbnRCbG9ja2VycyhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICBjb25zdCBib29s
IHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQgPSBmYWxzZTsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChyZWxvYWRGcm9t
T3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJl
bG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpOwogfQog
CiB2b2lkIFdLUGFnZVJlbG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAg
Y29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gdHJ1ZTsKLSAgICBjb25zdCBib29sIGNvbnRl
bnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKHJl
bG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIHRvSW1wbChwYWdl
UmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbik7Cit9CisKK3Zv
aWQgV0tQYWdlUmVsb2FkRXhwaXJlZE9ubHkoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7
CiB9CiAKIGJvb2wgV0tQYWdlVHJ5Q2xvc2UoV0tQYWdlUmVmIHBhZ2VSZWYpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiAyMTM4OTUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg0LDYgKzg0LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlU3RvcExvYWRpbmcoV0tQYWdlUgog
V0tfRVhQT1JUIHZvaWQgV0tQYWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2
b2lkIFdLUGFnZVJlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMoV0tQYWdlUmVmIHBhZ2UpOwog
V0tfRVhQT1JUIHZvaWQgV0tQYWdlUmVsb2FkRnJvbU9yaWdpbihXS1BhZ2VSZWYgcGFnZSk7CitX
S19FWFBPUlQgdm9pZCBXS1BhZ2VSZWxvYWRFeHBpcmVkT25seShXS1BhZ2VSZWYgcGFnZSk7CiAK
IFdLX0VYUE9SVCBib29sIFdLUGFnZVRyeUNsb3NlKFdLUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9S
VCB2b2lkIFdLUGFnZUNsb3NlKFdLUGFnZVJlZiBwYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTg3LDE2ICsxODcsMTIgQEAgLSAodm9pZClzdG9wTG9hZGluZwogCiAtICh2
b2lkKXJlbG9hZAogewotICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IGZhbHNlOwot
ICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Ci0gICAgX3BhZ2Ut
PnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBf
cGFnZS0+cmVsb2FkKHsgfSk7CiB9CiAKIC0gKHZvaWQpcmVsb2FkRnJvbU9yaWdpbgogewotICAg
IGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IHRydWU7Ci0gICAgY29uc3QgYm9vbCBjb250
ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21P
cmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIF9wYWdlLT5yZWxvYWQoV2ViQ29y
ZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luKTsKIH0KIAogLSAoTlNTdHJpbmcgKilhcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODQ0LDkgKzg0NCw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWdvRm9yd2FyZAogCiAtIChXS05hdmln
YXRpb24gKilyZWxvYWQKIHsKLSAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxz
ZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIGF1
dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJs
b2NrZXJzRW5hYmxlZCk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZCh7IH0p
OwogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtODU1LDkg
Kzg1Myw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZAogCiAtIChXS05hdmlnYXRpb24gKily
ZWxvYWRGcm9tT3JpZ2luCiB7Ci0gICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gdHJ1
ZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIGF1
dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJs
b2NrZXJzRW5hYmxlZCk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChXZWJD
b3JlOjpSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pOwogICAgIGlmICghbmF2aWdhdGlvbikKICAg
ICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzY5Miw5ICszNjg4LDE2IEBAIC0gKHZvaWQpX2tpbGxX
ZWJDb250ZW50UHJvY2VzcwogCiAtIChXS05hdmlnYXRpb24gKilfcmVsb2FkV2l0aG91dENvbnRl
bnRCbG9ja2VycwogewotICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IGZhbHNlOwot
ICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IGZhbHNlOwotICAgIGF1dG8g
bmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2Nr
ZXJzRW5hYmxlZCk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChXZWJDb3Jl
OjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpOworICAgIGlmICghbmF2aWdh
dGlvbikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5h
dmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKFdLTmF2aWdhdGlvbiAq
KV9yZWxvYWRFeHBpcmVkT25seQoreworICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxv
YWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAgICAgaWYgKCFuYXZpZ2F0
aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9u
IDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDcgQEAgdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQQogI2VuZGlmCiAKIC0gKFdLTmF2aWdhdGlvbiAq
KV9yZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjEyKSwgaW9zKDEwLjApKTsKKy0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRFeHBpcmVkT25seSBX
S19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiAKIC0gKHZvaWQpX2tp
bGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQx
LDggKzM0MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlbG9hZEJyb3dzaW4KICAg
ICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9O
QU1FKFRpbWVvdXQpKTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRD
YWxsYmFja3NQZXJQYWdlLnNldChwYWdlLT5wYWdlSUQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwog
Ci0gICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgcGFnZS0+cmVs
b2FkKHJlbG9hZEZyb21PcmlnaW4sIHsgfSk7CisgICAgcGFnZS0+cmVsb2FkKHsgfSk7CiB9CiAK
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om5hdmlnYXRpb25PY2N1cnJlZEZvclBhZ2UoY29u
c3QgV2ViUGFnZVByb3h5JiBwYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjk3
LDcgKzEyOTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlCiAg
ICAgbV9wYWdlLT5zZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpOwogfQogCi12b2lkIFdl
YlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdp
biwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIFdlYlBhZ2U6OnJlbG9hZCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICAgICBTZW5kU3Rv
cFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcih0aGlzKTsKIApAQCAtMTMwNSw3ICsxMzA1LDcg
QEAgdm9pZCBXZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbgogICAgIG1fcGVuZGlu
Z05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKIAogICAgIG1fc2FuZGJveEV4dGVuc2lvblRy
YWNrZXIuYmVnaW5Mb2FkKG1fbWFpbkZyYW1lLmdldCgpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KTsKLSAgICBjb3JlUGFnZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5yZWxvYWRGcmFtZShtX21haW5G
cmFtZS0+Y29yZUZyYW1lKCksIHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJs
ZWQpOworICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLnJlbG9hZEZyYW1lKG1fbWFp
bkZyYW1lLT5jb3JlRnJhbWUoKSwgT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj46OmZyb21SYXcocmVs
b2FkT3B0aW9ucykpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdvRm9yd2FyZCh1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIHVpbnQ2NF90IGJhY2tGb3J3YXJkSXRlbUlEKQpAQCAtNDEwMyw3ICs0MTAzLDcg
QEAgc3RhdGljIGJvb2wgc2hvdWxkUmV1c2VDb21taXR0ZWRTYW5kYm94RQogICAgIEZyYW1lTG9h
ZFR5cGUgZnJhbWVMb2FkVHlwZSA9IGZyYW1lTG9hZGVyLmxvYWRUeXBlKCk7CiAKICAgICAvLyBJ
ZiB0aGUgcGFnZSBpcyBiZWluZyByZWxvYWRlZCwgaXQgc2hvdWxkIHJldXNlIHdoYXRldmVyIGV4
dGVuc2lvbiBpcyBjb21taXR0ZWQuCi0gICAgaWYgKGZyYW1lTG9hZFR5cGUgPT0gRnJhbWVMb2Fk
VHlwZTo6UmVsb2FkIHx8IGZyYW1lTG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJv
bU9yaWdpbikKKyAgICBpZiAoaXNSZWxvYWQoZnJhbWVMb2FkVHlwZSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWVMb2Fk
ZXIuZG9jdW1lbnRMb2FkZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0Nyw3ICsxMDQ3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMm
KTsKICAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJz
Jik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBT
dHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50
UG9pbnQgc2NyZWVuUG9pbnQpOwotICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgdWludDMyX3QgcmVsb2FkT3B0aW9ucywgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBnb0ZvcndhcmQodWludDY0X3QgbmF2aWdhdGlvbklE
LCB1aW50NjRfdCk7CiAgICAgdm9pZCBnb0JhY2sodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50
NjRfdCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgdWludDY0X3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsNyArMTQwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNl
aXZlciB7CiAKICAgICBOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhTdHJpbmcg
dXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBz
Y3JlZW5Qb2ludCkKIAotICAgIFJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVs
b2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAgIFJlbG9hZCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgU3RvcExv
YWRpbmcoKQogCiAgICAgU3RvcExvYWRpbmdGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0MTA0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDMtMTcgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHJlbG9hZCBwb2xp
Y3kgd2hlcmUgb25seSBleHBpcmVkIHN1YnJlc291cmNlcyBhcmUgcmV2YWxpZGF0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJG
cmFtZS5tbToKKyAgICAgICAgKHRvV2ViRnJhbWVMb2FkVHlwZSk6CisgICAgICAgICgtW1dlYkZy
YW1lIHJlbG9hZF0pOgorICAgICAgICAoLVtXZWJGcmFtZSByZWxvYWRGcm9tT3JpZ2luXSk6CisK
IDIwMTctMDMtMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW1wcm92ZSB0aGUgc3lzdGVtIHRyYWNpbmcgcG9pbnRzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNTksNiArMTA1
OSw5IEBAIHN0YXRpYyBXZWJGcmFtZUxvYWRUeXBlIHRvV2ViRnJhbWVMb2FkVHkKICAgICAgICAg
cmV0dXJuIFdlYkZyYW1lTG9hZFR5cGVSZXBsYWNlOwogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6
UmVsb2FkRnJvbU9yaWdpbjoKICAgICAgICAgcmV0dXJuIFdlYkZyYW1lTG9hZFR5cGVSZWxvYWRG
cm9tT3JpZ2luOworICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRXhwaXJlZE9ubHk6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gV2ViRnJhbWVMb2Fk
VHlwZVJlbG9hZDsKICAgICB9CiB9CiAKQEAgLTI1MzksMTIgKzI1NDIsMTIgQEAgLSAodm9pZClz
dG9wTG9hZGluZwogCiAtICh2b2lkKXJlbG9hZAogewotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUt
PmxvYWRlcigpLnJlbG9hZChmYWxzZSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVy
KCkucmVsb2FkKHsgfSk7CiB9CiAKIC0gKHZvaWQpcmVsb2FkRnJvbU9yaWdpbgogewotICAgIF9w
cml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLnJlbG9hZCh0cnVlKTsKKyAgICBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5sb2FkZXIoKS5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3Jp
Z2luKTsKIH0KIAogLSAoV2ViRnJhbWUgKilmaW5kRnJhbWVOYW1lZDooTlNTdHJpbmcgKiluYW1l
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMTM4OTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wMy0xNyAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgcmVsb2FkIHBvbGljeSB3aGVyZSBv
bmx5IGV4cGlyZWQgc3VicmVzb3VyY2VzIGFyZSByZXZhbGlkYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzU2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3JlbG9h
ZC1leHBpcmVkLW9ubHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHkuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9jYWNoZS9yZXNvdXJjZXMvZG9jdW1lbnQtd2l0aC1jYWNoZWQtdW5pcXVlLXNjcmlwdC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9yYW5kb20t
Y2FjaGVkLmNnaToKKwogMjAxNy0wMy0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgU3luYyB3ZWItcGxhdGZvcm0tdGVzdHMgdXAgdG8gcmV2aXNpb24gYTVi
OTVjYjMxOTE0NTA3MDg4YTRlZGExNmY3Njc0YmJjNmYzMzEzZgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS9yZWxvYWQtZXhwaXJlZC1vbmx5LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHkt
ZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUvcmVsb2FkLWV4cGlyZWQtb25seS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSBAQAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZWxvYWQt
ZXhwaXJlZC1vbmx5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS9yZWxvYWQtZXhwaXJlZC1vbmx5Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZWxvYWQtZXhwaXJlZC1vbmx5Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyNyBAQAorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5X
aW5kb3dzKCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9Citjb25zdCB0ZXN0
V2luZG93ID0gd2luZG93Lm9wZW4oJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jYWNoZS9yZXNvdXJj
ZXMvZG9jdW1lbnQtd2l0aC1jYWNoZWQtdW5pcXVlLXNjcmlwdC5odG1sJyk7CisKK3ZhciBmaXJz
dE51bWJlcjsKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7
CisgICAgaWYgKGZpcnN0TnVtYmVyKSB7CisgICAgICAgIGNvbnN0IHNlY29uZE51bWJlciA9IGV2
ZW50LmRhdGE7CisgICAgICAgIGlmIChmaXJzdE51bWJlciA9PSBzZWNvbmROdW1iZXIpCisgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBgRkFJTDogZmlyc3ROdW1iZXI9
eyRmaXJzdE51bWJlcn0gc2Vjb25kTnVtYmVyPXskc2Vjb25kTnVtYmVyfWA7CisgICAgICAgIGlm
ICh0ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgZmlyc3ROdW1iZXIgPSBldmVudC5kYXRhOworICAgIGlm
ICh0ZXN0V2luZG93LmludGVybmFscykKKyAgICAgICAgdGVzdFdpbmRvdy5pbnRlcm5hbHMucmVs
b2FkRXhwaXJlZE9ubHkoKTsKK30pOworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2RvY3VtZW50LXdpdGgtY2FjaGVkLXVuaXF1ZS1zY3Jp
cHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291
cmNlcy9kb2N1bWVudC13aXRoLWNhY2hlZC11bmlxdWUtc2NyaXB0Lmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvZG9jdW1lbnQtd2l0
aC1jYWNoZWQtdW5pcXVlLXNjcmlwdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBA
QAorPGgxPjwvaDE+Cis8c2NyaXB0IHNyYz0ncmFuZG9tLWNhY2hlZC5jZ2knPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK3dpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UocmFuZG9tTnVtYmVyLCAnKicpOwor
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9y
YW5kb20tY2FjaGVkLmNnaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlL3Jlc291cmNlcy9yYW5kb20tY2FjaGVkLmNnaQkocmV2aXNpb24gMjEzODk1KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5jZ2kJKHdv
cmtpbmcgY29weSkKQEAgLTIsNyArMiw2IEBACiAKIHByaW50ICJDb250ZW50LXR5cGU6IHRleHQv
amF2YXNjcmlwdFxuIjsKIHByaW50ICJDYWNoZS1jb250cm9sOiBtYXgtYWdlPTYwMDAwXG4iOwot
cHJpbnQgIkVUYWc6IFwiMTIzNDU2Nzg5XCJcbiI7CiBwcmludCAiXG4iOwogCiBteSAkcmFuZG9t
X251bWJlciA9IGludChyYW5kKDEwMDAwMDAwMDAwMDApKTsK
</data>
<flag name="review"
          id="326274"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304777</attachid>
            <date>2017-03-17 07:54:45 -0700</date>
            <delta_ts>2017-03-17 12:52:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>reload-revalidation-policy-14.patch</filename>
            <type>text/plain</type>
            <size>41905</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE3LTAzLTE3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5
IHdoZXJlIG9ubHkgZXhwaXJlZCBzdWJyZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMv
Y2FjaGUvcmVsb2FkLWV4cGlyZWQtb25seS5odG1sCisKKyAgICAgICAgVGhlIGRlZmF1bHQgcmVs
b2FkIGJlaGF2aW9yIHJldmFsaWRhdGVzIGFsbCByZXNvdXJjZXMgb24gdGhlIHBhZ2UuIFRoaXMg
cGF0Y2ggYWRkcworICAgICAgICBhIG5ldyBwb2xpY3kgdGhhdCByZXZhbGlkYXRlcyBleHBpcmVk
IChhbmQgdW5jYWNoZWFibGUpIHJlc291cmNlcyBvbmx5LiBVc2luZyB0aGlzCisgICAgICAgIHBv
bGljeSBjYW4gc3BlZWQgdXAgcmVsb2FkcyBzaWduaWZpY2FudGx5IGFuZCBhbHNvIHJlZHVjZSBu
ZXR3b3JrIHRyYWZmaWMgYW5kIHNlcnZlcgorICAgICAgICBsb2FkLgorCisgICAgICAgICogaGlz
dG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FuQ2FjaGVQYWdlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNCYWNrRm9yd2FyZExvYWRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzUmVsb2FkKToKKworICAgICAgICAgICAgQWRkIGEgaGVscGVyIGZ1
bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpsb2dOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpyZWxvYWQpOgorCisgICAgICAgICAgICBSZXBsYWNlIGJvb2wgYXJndW1lbnRzIHdpdGgg
T3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4uIE1vc3Qgb2YgdGhlIHBhdGNoIGlzIGFib3V0IGFkYXB0
aW5nIHRvIHRoaXMuCisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp0cmFuc2l0aW9u
VG9Db21taXR0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1YnJlc291cmNl
Q2FjaGVQb2xpY3kpOgorCisgICAgICAgICAgICBSZXR1cm4gQ2FjaGVQb2xpY3lWZXJpZnkgZm9y
ICdSZWxvYWRFeHBpcmVkT25seScgZnJhbWUgbG9hZCB0eXBlLiBUaGlzIGlzIHRoZSBzdWJzdGFu
dGl2ZQorICAgICAgICAgICAgY2hhbmdlIHRoYXQgY2F1c2VzIHRoZSBiZWhhdmlvciBkaWZmZXJl
bmNlLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVG
b3JUaGlzRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRlZmF1bHRSZXF1
ZXN0Q2FjaGluZ1BvbGljeSk6CisKKyAgICAgICAgICAgIEZsaXAgdGhlIGlzTWFpblJlc291cmNl
IGNvbmRpdGlvbiBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5LgorCisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6c2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2aWdhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
cmVsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oOgorICAgICAgICAq
IGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
Q29udHJvbGxlcjo6cmVzdG9yZURvY3VtZW50U3RhdGUpOgorICAgICAgICAqIHBhZ2UvRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5n
S2V5czo6cmVsb2FkUmV2YWxpZGF0aW5nRXhwaXJlZEtleSk6CisgICAgICAgICogcGFnZS9EaWFn
bm9zdGljTG9nZ2luZ0tleXMuaDoKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1dEJyaWRnZTo6cmVsb2FkRnJhbWUpOgorICAg
ICAgICAqIHJlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmZvcmNlUmVsb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVsb2FkRXhwaXJlZE9ubHkpOgorCisgICAgICAg
ICAgICBUZXN0aW5nIHN1cHBvcnQuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNy0wMy0xNCAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMaWJdIFVzZSBVU0UoR0xJ
QikgZ3VhcmRzIGluIFdlYkNvcmUvd29ya2Vycy8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvUGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDYgKzI0OSwxMyBAQCBzdGF0aWMg
Ym9vbCBjYW5DYWNoZVBhZ2UoUGFnZSYgcGFnZSkKICAgICAgICAgaXNDYWNoZWFibGUgPSBmYWxz
ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
RXhwaXJlZE9ubHk6IHsKKyAgICAgICAgLy8gTm8gcG9pbnQgd3JpdGluZyB0byB0aGUgY2FjaGUg
b24gYSByZWxvYWQsIHNpbmNlIHdlIHdpbGwganVzdCB3cml0ZSBvdmVyIGl0IGFnYWluIHdoZW4g
d2UgbGVhdmUgdGhhdCBwYWdlLgorICAgICAgICBQQ0xPRygiICAgLUxvYWQgdHlwZSBpczogUmVs
b2FkUmV2YWxpZGF0aW5nRXhwaXJlZCIpOworICAgICAgICBsb2dQYWdlQ2FjaGVGYWlsdXJlRGlh
Z25vc3RpY01lc3NhZ2UoZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQsIERpYWdub3N0aWNMb2dnaW5n
S2V5czo6cmVsb2FkUmV2YWxpZGF0aW5nRXhwaXJlZEtleSgpKTsKKyAgICAgICAgaXNDYWNoZWFi
bGUgPSBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgRnJhbWVMb2FkVHlw
ZTo6U3RhbmRhcmQ6CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpCYWNrOgogICAgIGNhc2UgRnJh
bWVMb2FkVHlwZTo6Rm9yd2FyZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIzLDcgKzQyMywxMSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVtb3ZlU2NyaXB0VG9F
CiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9v
bCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlw
dFRvRXZhbHVhdGVPbkxvYWQpCiB7CiAgICAgbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9h
ZE9uY2UgPSBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQgPyAqb3B0aW9uYWxTY3JpcHRU
b0V2YWx1YXRlT25Mb2FkIDogZW1wdHlTdHJpbmcoKTsKLSAgICBtX3BhZ2UubWFpbkZyYW1lKCku
bG9hZGVyKCkucmVsb2FkKG9wdGlvbmFsSWdub3JlQ2FjaGUgPyAqb3B0aW9uYWxJZ25vcmVDYWNo
ZSA6IGZhbHNlKTsKKworICAgIE9wdGlvblNldDxSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7
CisgICAgaWYgKG9wdGlvbmFsSWdub3JlQ2FjaGUgJiYgKm9wdGlvbmFsSWdub3JlQ2FjaGUpCisg
ICAgICAgIHJlbG9hZE9wdGlvbnMgfD0gUmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luOworICAgIG1f
cGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5yZWxvYWQocmVsb2FkT3B0aW9ucyk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgdXJsKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lv
biAyMTM4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDcgQEAgYm9vbCBpc0JhY2tGb3J3YXJkTG9hZFR5cGUo
RnJhbWVMb2FkVHlwZQogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ6CiAgICAgY2Fz
ZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ6CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRG
cm9tT3JpZ2luOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRXhwaXJlZE9ubHk6CiAg
ICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTYW1lOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVk
aXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0OgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6
UmVwbGFjZToKQEAgLTE2Nyw2ICsxNjgsMjYgQEAgYm9vbCBpc0JhY2tGb3J3YXJkTG9hZFR5cGUo
RnJhbWVMb2FkVHlwZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBpc1JlbG9hZChGcmFt
ZUxvYWRUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBGcmFtZUxv
YWRUeXBlOjpSZWxvYWQ6CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2lu
OgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRXhwaXJlZE9ubHk6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ6CisgICAgY2FzZSBG
cmFtZUxvYWRUeXBlOjpTYW1lOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRo
TG9ja2VkQmFja0ZvcndhcmRMaXN0OgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVwbGFjZToK
KyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OkJhY2s6CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpG
b3J3YXJkOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkOgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKwogLy8gVGhpcyBpcyBub3QgaW4gdGhlIEZyYW1lTG9hZGVyIGNs
YXNzIHRvIGVtcGhhc2l6ZSB0aGF0IGl0IGRvZXMgbm90IGRlcGVuZCBvbgogLy8gcHJpdmF0ZSBG
cmFtZUxvYWRlciBkYXRhLCBhbmQgdG8gYXZvaWQgaW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mIHB1
YmxpYyBmdW5jdGlvbnMKIC8vIHdpdGggYWNjZXNzIHRvIHByaXZhdGUgZGF0YS4gIFNpbmNlIG9u
bHkgdGhpcyAuY3BwIGZpbGUgbmVlZHMgaXQsIG1ha2luZyBpdApAQCAtMTIwOSw3ICsxMjMwLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChjb25zdCBGcmFtZUxvYQogICAgICAgICByZXF1
ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKG1fZnJhbWUudHJlZSgpLnRvcCgpLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAKICAg
ICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChyZXF1ZXN0LCBuZXdMb2FkVHlwZSwgdHJ1ZSk7Ci0g
ICAgaWYgKG5ld0xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCB8fCBuZXdMb2FkVHlw
ZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luKQorICAgIGlmIChpc1JlbG9hZChu
ZXdMb2FkVHlwZSkpCiAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3Jp
bmdDYWNoZURhdGEpOwogCiAgICAgQVNTRVJUKG5ld0xvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGU6
OlNhbWUpOwpAQCAtMTI2Miw3ICsxMjgzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChj
b25zdCBGcmFtZUxvYQogICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAg
ICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKICAgICAgICAgICAgIG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci0+c2V0SXNDbGllbnRSZWRpcmVjdCh0cnVlKTsKLSAgICB9
IGVsc2UgaWYgKHNhbWVVUkwgJiYgbmV3TG9hZFR5cGUgIT0gRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
ICYmIG5ld0xvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4pIHsKKyAg
ICB9IGVsc2UgaWYgKHNhbWVVUkwgJiYgIWlzUmVsb2FkKG5ld0xvYWRUeXBlKSkgewogICAgICAg
ICAvLyBFeGFtcGxlIG9mIHRoaXMgY2FzZSBhcmUgc2l0ZXMgdGhhdCByZWxvYWQgdGhlIHNhbWUg
VVJMIHdpdGggYSBkaWZmZXJlbnQgY29va2llCiAgICAgICAgIC8vIGRyaXZpbmcgdGhlIGdlbmVy
YXRlZCBjb250ZW50LCBvciBhIG1hc3RlciBmcmFtZSB3aXRoIGxpbmtzIHRoYXQgZHJpdmUgYSB0
YXJnZXQKICAgICAgICAgLy8gZnJhbWUsIHdoZXJlIHRoZSB1c2VyIGhhcyBjbGlja2VkIG9uIHRo
ZSBzYW1lIGxpbmsgcmVwZWF0ZWRseS4KQEAgLTE0MDAsNiArMTQyMSw5IEBAIHN0YXRpYyB2b2lk
IGxvZ05hdmlnYXRpb24oTWFpbkZyYW1lJiBmcmEKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJl
bG9hZEZyb21PcmlnaW46CiAgICAgICAgIG5hdmlnYXRpb25EZXNjcmlwdGlvbiA9IEFTQ0lJTGl0
ZXJhbCgicmVsb2FkRnJvbU9yaWdpbiIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEZyYW1l
TG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OgorICAgICAgICBuYXZpZ2F0aW9uRGVzY3JpcHRp
b24gPSBBU0NJSUxpdGVyYWwoInJlbG9hZFJldmFsaWRhdGluZ0V4cGlyZWQiKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZXBsYWNlOgogICAgIGNhc2UgRnJhbWVM
b2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0OgogICAgICAgICAvLyBO
b3QgbG9nZ2luZyB0aG9zZSBmb3Igbm93LgpAQCAtMTU3Miw3ICsxNTk2LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jbwogICAgIGxvYWRXaXRoRG9jdW1lbnRMb2Fk
ZXIobG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpSZWxvYWQsIDAsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTDo6WWVzKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKGJvb2wg
ZW5kVG9FbmRSZWxvYWQsIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCkKK3ZvaWQgRnJhbWVM
b2FkZXI6OnJlbG9hZChPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewogICAgIGlm
ICghbV9kb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTU5Myw3ICsxNjE3LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZQogICAgIFJlZjxEb2N1
bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoaW5pdGlh
bFJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChpbml0aWFsUmVxdWVzdC51cmwo
KSkpOwogICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRM
b2FkZXIobG9hZGVyLCBtX2RvY3VtZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5VG9Qcm9wYWdhdGUoKSk7CiAKLSAgICBsb2FkZXItPnNldFVzZXJDb250ZW50RXh0ZW5zaW9u
c0VuYWJsZWQoY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgbG9hZGVyLT5zZXRVc2VyQ29u
dGVudEV4dGVuc2lvbnNFbmFibGVkKCFvcHRpb25zLmNvbnRhaW5zKFJlbG9hZE9wdGlvbjo6RGlz
YWJsZUNvbnRlbnRCbG9ja2VycykpOwogICAgIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCA9IGxvYWRlci0+cmVxdWVzdCgpOwogCkBAIC0xNjA1LDggKzE2MjksMTYgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZQogICAgICAgICBsb2FkZXItPnNldFRyaWdn
ZXJpbmdBY3Rpb24oTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZTo6Rm9y
bVJlc3VibWl0dGVkKSk7CiAKICAgICBsb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcobV9kb2N1
bWVudExvYWRlci0+b3ZlcnJpZGVFbmNvZGluZygpKTsKKworICAgIGF1dG8gZnJhbWVMb2FkVHlw
ZUZvclJlbG9hZE9wdGlvbnMgPSBbXSAoYXV0byBvcHRpb25zKSB7CisgICAgICAgIGlmIChvcHRp
b25zLmNvbnRhaW5zKFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbikpCisgICAgICAgICAgICByZXR1
cm4gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjsKKyAgICAgICAgaWYgKG9wdGlvbnMu
Y29udGFpbnMoUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSkpCisgICAgICAgICAgICByZXR1cm4g
RnJhbWVMb2FkVHlwZTo6UmVsb2FkRXhwaXJlZE9ubHk7CisgICAgICAgIHJldHVybiBGcmFtZUxv
YWRUeXBlOjpSZWxvYWQ7CisgICAgfTsKICAgICAKLSAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVy
KGxvYWRlci5wdHIoKSwgZW5kVG9FbmRSZWxvYWQgPyBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9t
T3JpZ2luIDogRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6Olllcyk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCksIGZy
YW1lTG9hZFR5cGVGb3JSZWxvYWRPcHRpb25zKG9wdGlvbnMpLCAwLCBBbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkw6Olllcyk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2FkZXJz
KENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KQpA
QCAtMTk1OSw2ICsxOTkxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkKAogCiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ6CiAgICAgY2FzZSBGcmFtZUxv
YWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
RXhwaXJlZE9ubHk6CiAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpTYW1lOgogICAgIGNhc2UgRnJh
bWVMb2FkVHlwZTo6UmVwbGFjZToKICAgICAgICAgaGlzdG9yeSgpLnVwZGF0ZUZvclJlbG9hZCgp
OwpAQCAtMTk3NiwxMSArMjAwOSw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0Nv
bW1pdHRlZCgKICAgICAgICAgaGlzdG9yeSgpLnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJh
Y2tGb3J3YXJkTGlzdCgpOwogICAgICAgICBtX2NsaWVudC50cmFuc2l0aW9uVG9Db21taXR0ZWRG
b3JOZXdQYWdlKCk7CiAgICAgICAgIGJyZWFrOwotCi0gICAgLy8gRklYTUUgUmVtb3ZlIHRoaXMg
Y2hlY2sgd2hlbiBkdW1teSBkcyBpcyByZW1vdmVkICh3aGF0ZXZlciAiZHVtbXkgZHMiIGlzKS4K
LSAgICAvLyBBbiBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBpZiB3ZSdyZSBpbiB0aGUgRnJh
bWVMb2FkVHlwZVVuaW5pdGlhbGl6ZWQgc3RhdGUuCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAgICAgbV9kb2N1bWVudExvYWRlci0+d3JpdGVy
KCkuc2V0TUlNRVR5cGUoZGwtPnJlc3BvbnNlTUlNRVR5cGUoKSk7CkBAIC0yMTkxLDYgKzIyMTks
NyBAQCBDYWNoZVBvbGljeSBGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VDYWNoCiAgICAgY2FzZSBG
cmFtZUxvYWRUeXBlOjpSZXBsYWNlOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAg
ICBjYXNlIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkOgorICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6
UmVsb2FkRXhwaXJlZE9ubHk6CiAgICAgICAgIHJldHVybiBDYWNoZVBvbGljeVZlcmlmeTsKICAg
ICB9CiAKQEAgLTIyNzcsNyArMjMwNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENv
bXBsZXRlRm9yVGgKICAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIElmIHRoZSB1c2VyIGhh
ZCBhIHNjcm9sbCBwb2ludCwgc2Nyb2xsIHRvIGl0LCBvdmVycmlkaW5nIHRoZSBhbmNob3IgcG9p
bnQgaWYgYW55LgogICAgICAgICAgICAgaWYgKG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShtX2xvYWRUeXBlKSB8fCBtX2xvYWRUeXBl
ID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCB8fCBtX2xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGU6
OlJlbG9hZEZyb21PcmlnaW4pCisgICAgICAgICAgICAgICAgaWYgKGlzQmFja0ZvcndhcmRMb2Fk
VHlwZShtX2xvYWRUeXBlKSB8fCBpc1JlbG9hZChtX2xvYWRUeXBlKSkKICAgICAgICAgICAgICAg
ICAgICAgaGlzdG9yeSgpLnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpOwogICAg
ICAgICAgICAgfQogCkBAIC0yNTczLDI3ICsyNjAyLDMxIEBAIFJlc291cmNlUmVxdWVzdENhY2hl
UG9saWN5IEZyYW1lTG9hZGVyOjoKIHsKICAgICBpZiAobV9vdmVycmlkZUNhY2hlUG9saWN5Rm9y
VGVzdGluZykKICAgICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVDYWNoZVBvbGljeUZvclRlc3Rpbmcu
dmFsdWUoKTsKLSAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7Ci0gICAgICAgIGlmIChyZXF1ZXN0
LmlzQ29uZGl0aW9uYWwoKSkKKworICAgIGlmIChpc01haW5SZXNvdXJjZSkgeworICAgICAgICBp
ZiAoaXNSZWxvYWQobG9hZFR5cGUpIHx8IHJlcXVlc3QuaXNDb25kaXRpb25hbCgpKQogICAgICAg
ICAgICAgcmV0dXJuIFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhOwotICAgICAgICBpZiAoZG9jdW1l
bnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB3
ZSBpbmhlcml0IGNhY2hlIHBvbGljeSBmcm9tIGEgbWFpbiByZXNvdXJjZSwgd2UgdXNlIHRoZSBE
b2N1bWVudExvYWRlcidzCi0gICAgICAgICAgICAvLyBvcmlnaW5hbCByZXF1ZXN0IGNhY2hlIHBv
bGljeSBmb3IgdHdvIHJlYXNvbnM6Ci0gICAgICAgICAgICAvLyAxLiBGb3IgUE9TVCByZXF1ZXN0
cywgd2UgbXV0YXRlIHRoZSBjYWNoZSBwb2xpY3kgZm9yIHRoZSBtYWluIHJlc291cmNlLAotICAg
ICAgICAgICAgLy8gICAgYnV0IHdlIGRvIG5vdCB3YW50IHRoaXMgdG8gYXBwbHkgdG8gc3VicmVz
b3VyY2VzCi0gICAgICAgICAgICAvLyAyLiBEZWxlZ2F0ZXMgdGhhdCBtb2RpZnkgdGhlIGNhY2hl
IHBvbGljeSB1c2luZyB3aWxsU2VuZFJlcXVlc3Q6IHNob3VsZAotICAgICAgICAgICAgLy8gICAg
bm90IGFmZmVjdCBhbnkgb3RoZXIgcmVzb3VyY2VzLiBTdWNoIGNoYW5nZXMgbmVlZCB0byBiZSBk
b25lCi0gICAgICAgICAgICAvLyAgICBwZXIgcmVxdWVzdC4KLSAgICAgICAgICAgIFJlc291cmNl
UmVxdWVzdENhY2hlUG9saWN5IG1haW5Eb2N1bWVudE9yaWdpbmFsQ2FjaGVQb2xpY3kgPSBkb2N1
bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS5jYWNoZVBvbGljeSgpOwotICAgICAgICAg
ICAgLy8gQmFjay1mb3J3YXJkIG5hdmlnYXRpb25zIHRyeSB0byBsb2FkIG1haW4gcmVzb3VyY2Ug
ZnJvbSBjYWNoZSBvbmx5IHRvIGF2b2lkIHJlLXN1Ym1pdHRpbmcgZm9ybSBkYXRhLCBhbmQgc3Rh
cnQgb3ZlciAod2l0aCBhIHdhcm5pbmcgZGlhbG9nKSBpZiB0aGF0IGZhaWxzLgotICAgICAgICAg
ICAgLy8gVGhpcyBwb2xpY3kgaXMgc2V0IG9uIGluaXRpYWwgcmVxdWVzdCB0b28sIGJ1dCBzaG91
bGQgbm90IGJlIGluaGVyaXRlZC4KLSAgICAgICAgICAgIHJldHVybiAobWFpbkRvY3VtZW50T3Jp
Z2luYWxDYWNoZVBvbGljeSA9PSBSZXR1cm5DYWNoZURhdGFEb250TG9hZCkgPyBSZXR1cm5DYWNo
ZURhdGFFbHNlTG9hZCA6IG1haW5Eb2N1bWVudE9yaWdpbmFsQ2FjaGVQb2xpY3k7Ci0gICAgICAg
IH0KLSAgICAvLyBGSVhNRTogT3RoZXIgRnJhbWVMb2FkZXIgZnVuY3Rpb25zIGhhdmUgZHVwbGlj
YXRlZCBjb2RlIGZvciBzZXR0aW5nIGNhY2hlIHBvbGljeSBvZiBtYWluIHJlcXVlc3Qgd2hlbiBy
ZWxvYWRpbmcuCi0gICAgLy8gSXQgc2VlbXMgYmV0dGVyIHRvIG1hbmFnZSBpdCBleHBsaWNpdGx5
IHRoYW4gdG8gaGlkZSB0aGUgbG9naWMgaW5zaWRlIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KCku
Ci0gICAgfSBlbHNlIGlmIChsb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQgfHwgbG9h
ZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbiB8fCByZXF1ZXN0LmlzQ29u
ZGl0aW9uYWwoKSkKKworICAgICAgICByZXR1cm4gVXNlUHJvdG9jb2xDYWNoZVBvbGljeTsKKyAg
ICB9CisKKyAgICBpZiAocmVxdWVzdC5pc0NvbmRpdGlvbmFsKCkpCiAgICAgICAgIHJldHVybiBS
ZWxvYWRJZ25vcmluZ0NhY2hlRGF0YTsKIAorICAgIGlmIChkb2N1bWVudExvYWRlcigpLT5pc0xv
YWRpbmdJbkFQSVNlbnNlKCkpIHsKKyAgICAgICAgLy8gSWYgd2UgaW5oZXJpdCBjYWNoZSBwb2xp
Y3kgZnJvbSBhIG1haW4gcmVzb3VyY2UsIHdlIHVzZSB0aGUgRG9jdW1lbnRMb2FkZXIncworICAg
ICAgICAvLyBvcmlnaW5hbCByZXF1ZXN0IGNhY2hlIHBvbGljeSBmb3IgdHdvIHJlYXNvbnM6Cisg
ICAgICAgIC8vIDEuIEZvciBQT1NUIHJlcXVlc3RzLCB3ZSBtdXRhdGUgdGhlIGNhY2hlIHBvbGlj
eSBmb3IgdGhlIG1haW4gcmVzb3VyY2UsCisgICAgICAgIC8vICAgIGJ1dCB3ZSBkbyBub3Qgd2Fu
dCB0aGlzIHRvIGFwcGx5IHRvIHN1YnJlc291cmNlcworICAgICAgICAvLyAyLiBEZWxlZ2F0ZXMg
dGhhdCBtb2RpZnkgdGhlIGNhY2hlIHBvbGljeSB1c2luZyB3aWxsU2VuZFJlcXVlc3Q6IHNob3Vs
ZAorICAgICAgICAvLyAgICBub3QgYWZmZWN0IGFueSBvdGhlciByZXNvdXJjZXMuIFN1Y2ggY2hh
bmdlcyBuZWVkIHRvIGJlIGRvbmUKKyAgICAgICAgLy8gICAgcGVyIHJlcXVlc3QuCisgICAgICAg
IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IG1haW5Eb2N1bWVudE9yaWdpbmFsQ2FjaGVQb2xp
Y3kgPSBkb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS5jYWNoZVBvbGljeSgpOwor
ICAgICAgICAvLyBCYWNrLWZvcndhcmQgbmF2aWdhdGlvbnMgdHJ5IHRvIGxvYWQgbWFpbiByZXNv
dXJjZSBmcm9tIGNhY2hlIG9ubHkgdG8gYXZvaWQgcmUtc3VibWl0dGluZyBmb3JtIGRhdGEsIGFu
ZCBzdGFydCBvdmVyICh3aXRoIGEgd2FybmluZyBkaWFsb2cpIGlmIHRoYXQgZmFpbHMuCisgICAg
ICAgIC8vIFRoaXMgcG9saWN5IGlzIHNldCBvbiBpbml0aWFsIHJlcXVlc3QgdG9vLCBidXQgc2hv
dWxkIG5vdCBiZSBpbmhlcml0ZWQuCisgICAgICAgIHJldHVybiAobWFpbkRvY3VtZW50T3JpZ2lu
YWxDYWNoZVBvbGljeSA9PSBSZXR1cm5DYWNoZURhdGFEb250TG9hZCkgPyBSZXR1cm5DYWNoZURh
dGFFbHNlTG9hZCA6IG1haW5Eb2N1bWVudE9yaWdpbmFsQ2FjaGVQb2xpY3k7CisgICAgfQorCiAg
ICAgcmV0dXJuIFVzZVByb3RvY29sQ2FjaGVQb2xpY3k7CiB9CiAKQEAgLTI4NTksOCArMjg5Miw3
IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFBlcmZvcm1GcmFnbWVudE4KICAgICAvLyBGSVhN
RTogV2hhdCBhYm91dCBsb2FkIHR5cGVzIG90aGVyIHRoYW4gU3RhbmRhcmQgYW5kIFJlbG9hZD8K
IAogICAgIHJldHVybiAoIWlzRm9ybVN1Ym1pc3Npb24gfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoaHR0cE1ldGhvZCwgImdldCIpKQotICAgICAgICAmJiBsb2FkVHlwZSAhPSBGcmFt
ZUxvYWRUeXBlOjpSZWxvYWQKLSAgICAgICAgJiYgbG9hZFR5cGUgIT0gRnJhbWVMb2FkVHlwZTo6
UmVsb2FkRnJvbU9yaWdpbgorICAgICAgICAmJiAhaXNSZWxvYWQobG9hZFR5cGUpCiAgICAgICAg
ICYmIGxvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGU6OlNhbWUKICAgICAgICAgJiYgIXNob3VsZFJl
bG9hZChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLCB1cmwpCiAgICAgICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8ganVzdCBzY3JvbGwgaWYgYSBsaW5rIGZyb20gd2l0aGluIGEKQEAgLTM0MDcsNiAr
MzQzOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEkKICAgICAg
ICAgc3dpdGNoIChsb2FkVHlwZSkgewogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZDoKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luOgorICAgICAg
ICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OgogICAgICAgICAgICAgcmVx
dWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlOjpCYWNrOgpAQCAtMzQyNiw3ICsz
NDU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SQogICAgICAg
ICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlNhbWU6Ci0g
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVwbGFjZToKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBA
QCBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIAogV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0JhY2tGb3J3YXJkTG9hZFR5cGUoRnJhbWVMb2FkVHlwZSk7CitX
RUJDT1JFX0VYUE9SVCBib29sIGlzUmVsb2FkKEZyYW1lTG9hZFR5cGUpOwogCiBjbGFzcyBGcmFt
ZUxvYWRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhbWVMb2FkZXIpOwpAQCAtMTE5
LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVybFNlbGVjdGVk
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIExvY2tIaXN0b3J5LCBM
b2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpu
dWxsb3B0LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20p
OwogICAgIHZvaWQgc3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Npb24+JiYpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCA9IGZhbHNlLCBib29s
IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbG9hZChPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIG92ZXJyaWRl
RW5jb2RpbmcpOwogCiAgICAgdm9pZCBvcGVuKENhY2hlZEZyYW1lQmFzZSYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCShyZXZpc2lvbiAyMTM4OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL09wdGlv
blNldC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gRnJhbWVTdGF0ZSB7CkBAIC00
NCw2ICs0NiwxMiBAQCBlbnVtIFBvbGljeUFjdGlvbiB7CiAgICAgUG9saWN5SWdub3JlCiB9Owog
CitlbnVtIGNsYXNzIFJlbG9hZE9wdGlvbiB7CisgICAgRXhwaXJlZE9ubHkgPSAxIDw8IDAsCisg
ICAgRnJvbU9yaWdpbiAgPSAxIDw8IDEsCisgICAgRGlzYWJsZUNvbnRlbnRCbG9ja2VycyA9IDEg
PDwgMiwKK307CisKIGVudW0gY2xhc3MgRnJhbWVMb2FkVHlwZSB7CiAgICAgU3RhbmRhcmQsCiAg
ICAgQmFjaywKQEAgLTU0LDYgKzYyLDcgQEAgZW51bSBjbGFzcyBGcmFtZUxvYWRUeXBlIHsKICAg
ICBSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QsIC8vIEZJWE1FOiBNZXJnZSAibG9j
a0JhY2tGb3J3YXJkTGlzdCIsICJsb2NrSGlzdG9yeSIsICJxdWlja1JlZGlyZWN0IiBhbmQgImNs
aWVudFJlZGlyZWN0IiBpbnRvIGEgc2luZ2xlIGNvbmNlcHQgb2YgcmVkaXJlY3QuCiAgICAgUmVw
bGFjZSwKICAgICBSZWxvYWRGcm9tT3JpZ2luLAorICAgIFJlbG9hZEV4cGlyZWRPbmx5CiB9Owog
CiBlbnVtIGNsYXNzIE5ld0ZyYW1lT3BlbmVyUG9saWN5IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjEzODk1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjI5LDYgKzIyOSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1bWVu
dFMKICAgICBzd2l0Y2ggKG1fZnJhbWUubG9hZGVyKCkubG9hZFR5cGUoKSkgewogICAgIGNhc2Ug
RnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJv
bU9yaWdpbjoKKyAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZEV4cGlyZWRPbmx5OgogICAg
IGNhc2UgRnJhbWVMb2FkVHlwZTo6U2FtZToKICAgICBjYXNlIEZyYW1lTG9hZFR5cGU6OlJlcGxh
Y2U6CiAgICAgICAgIC8vIE5vdCByZXN0b3JpbmcgdGhlIGRvY3VtZW50IHN0YXRlLgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcAkocmV2aXNp
b24gMjEzODk1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsNiArNDg4LDExIEBAIFN0cmluZyBEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OnJlbG9hZEZyb20KICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJyZWxvYWRG
cm9tT3JpZ2luIik7CiB9CiAKK1N0cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlbG9hZFJl
dmFsaWRhdGluZ0V4cGlyZWRLZXkoKQoreworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInJlbG9h
ZFJldmFsaWRhdGluZ0V4cGlyZWQiKTsKK30KKwogU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5
czo6c2FtZUxvYWRLZXkoKQogewogICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInNhbWVMb2FkIik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgJKHJl
dmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFN0cmluZyByZWRpcmVjdEtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgcmVsb2FkRnJvbU9y
aWdpbktleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgcmVsb2FkS2V5KCk7CisgICAgc3RhdGljIFN0
cmluZyByZWxvYWRSZXZhbGlkYXRpbmdFeHBpcmVkS2V5KCk7CiAgICAgc3RhdGljIFN0cmluZyBy
ZXBsYWNlS2V5KCk7CiAgICAgc3RhdGljIFN0cmluZyByZXNvdXJjZUxvYWRlZEtleSgpOwogICAg
IHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VSZXNwb25zZVNvdXJjZUtleSgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAJKHJldmlzaW9uIDIxMzg5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDIsOSArMjQyLDkgQEAgdm9pZCBVc2VySW5wdXRCcmlkZ2U6OmxvYWRSZXF1ZXN0KGNv
bnN0IAogICAgIG1fcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5sb2FkKHJlcXVlc3QpOwogfQog
Ci12b2lkIFVzZXJJbnB1dEJyaWRnZTo6cmVsb2FkRnJhbWUoRnJhbWUqIGZyYW1lLCBib29sIGVu
ZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIElucHV0U291cmNlKQor
dm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKEZyYW1lKiBmcmFtZSwgT3B0aW9uU2V0
PFJlbG9hZE9wdGlvbj4gb3B0aW9ucywgSW5wdXRTb3VyY2UpCiB7Ci0gICAgZnJhbWUtPmxvYWRl
cigpLnJlbG9hZChlbmRUb0VuZFJlbG9hZCwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAg
ZnJhbWUtPmxvYWRlcigpLnJlbG9hZChvcHRpb25zKTsKIH0KIAogdm9pZCBVc2VySW5wdXRCcmlk
Z2U6OnN0b3BMb2FkaW5nRnJhbWUoRnJhbWUqIGZyYW1lLCBJbnB1dFNvdXJjZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgJKHJldmlzaW9uIDIxMzg5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkZyYW1lTG9hZGVy
VHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCkBAIC04OCw3ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE5hdmlnYXRpb24g
QVBJcy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWRGcmFtZShGcmFtZSosIGJvb2wgZW5kVG9FbmRSZWxv
YWQsIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJj
ZTo6VXNlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWRGcmFtZShGcmFtZSosIE9w
dGlvblNldDxSZWxvYWRPcHRpb24+LCBJbnB1dFNvdXJjZSA9IElucHV0U291cmNlOjpVc2VyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BMb2FkaW5nRnJhbWUoRnJhbWUqLCBJbnB1dFNv
dXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCB0cnlDbG9zZVBhZ2UoSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyMTM4OTUp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4MjAsNyArMjgyMCwxNiBAQCB2b2lkIEludGVybmFsczo6c2V0VXNlc01vY2tTY3JvbGxB
bmltYXRvCiAKIHZvaWQgSW50ZXJuYWxzOjpmb3JjZVJlbG9hZChib29sIGVuZFRvRW5kKQogewot
ICAgIGZyYW1lKCktPmxvYWRlcigpLnJlbG9hZChlbmRUb0VuZCk7CisgICAgT3B0aW9uU2V0PFJl
bG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKKyAgICBpZiAoZW5kVG9FbmQpCisgICAgICAgIHJl
bG9hZE9wdGlvbnMgfD0gUmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luOworCisgICAgZnJhbWUoKS0+
bG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOworfQorCit2b2lkIEludGVybmFsczo6cmVs
b2FkRXhwaXJlZE9ubHkoKQoreworICAgIGZyYW1lKCktPmxvYWRlcigpLnJlbG9hZChSZWxvYWRP
cHRpb246OkV4cGlyZWRPbmx5KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OmVuYWJsZUF1dG9TaXpl
TW9kZShib29sIGVuYWJsZWQsIGludCBtaW5pbXVtV2lkdGgsIGludCBtaW5pbXVtSGVpZ2h0LCBp
bnQgbWF4aW11bVdpZHRoLCBpbnQgbWF4aW11bUhlaWdodCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDYgKzM4MSw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgdG9vbFRpcEZyb21FbGVtZW50KEVsZW1lbnQmKSBjb25zdDsKIAogICAgIHZv
aWQgZm9yY2VSZWxvYWQoYm9vbCBlbmRUb0VuZCk7CisgICAgdm9pZCByZWxvYWRFeHBpcmVkT25s
eSgpOwogCiAgICAgdm9pZCBlbmFibGVBdXRvU2l6ZU1vZGUoYm9vbCBlbmFibGVkLCBpbnQgbWlu
aW11bVdpZHRoLCBpbnQgbWluaW11bUhlaWdodCwgaW50IG1heGltdW1XaWR0aCwgaW50IG1heGlt
dW1IZWlnaHQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZp
c2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTM5MSw2ICszOTEsNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2
aW9yIHsKICAgICB2b2lkIHNldFVzZXNNb2NrU2Nyb2xsQW5pbWF0b3IoYm9vbGVhbiBlbmFibGVk
KTsKIAogICAgIHZvaWQgZm9yY2VSZWxvYWQoYm9vbGVhbiBlbmRUb0VuZCk7CisgICAgdm9pZCBy
ZWxvYWRFeHBpcmVkT25seSgpOwogCiAgICAgdm9pZCBlbmFibGVBdXRvU2l6ZU1vZGUoYm9vbGVh
biBlbmFibGVkLCBsb25nIG1pbmltdW1XaWR0aCwgbG9uZyBtaW5pbXVtSGVpZ2h0LCBsb25nIG1h
eGltdW1XaWR0aCwgbG9uZyBtYXhpbXVtSGVpZ2h0KTsKIApJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTctMDMtMTcgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBhIHJlbG9hZCBwb2xpY3kgd2hlcmUgb25seSBleHBpcmVkIHN1
YnJlc291cmNlcyBhcmUgcmV2YWxpZGF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2OTc1NgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAg
KFdLUGFnZVJlbG9hZCk6CisgICAgICAgIChXS1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2Nr
ZXJzKToKKyAgICAgICAgKFdLUGFnZVJlbG9hZEZyb21PcmlnaW4pOgorICAgICAgICAoV0tQYWdl
UmVsb2FkRXhwaXJlZE9ubHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ci5tbToKKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHJlbG9hZF0pOgor
ICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVsb2FkRnJvbU9yaWdpbl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgcmVsb2FkXSk6CisgICAgICAgICgtW1dLV2ViVmlldyByZWxvYWRGcm9tT3Jp
Z2luXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2Vy
c10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbG9hZEV4cGlyZWRPbmx5XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVsb2FkQnJvd3NpbmdDb250ZXh0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lUHJveHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVsb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0OjpzaG91bGRSZXVzZUNvbW1pdHRl
ZFNhbmRib3hFeHRlbnNpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisK
IDIwMTctMDMtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBzeW50YXggZXJyb3IgaW4gR1RLKyBBUEkgZG9jcy4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHJldmlz
aW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDExICsyNDgsOCBAQCBib29sIFdlYkZyYW1lUHJveHk6
OmRpZEhhbmRsZUNvbnRlbnRGaWx0CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gcGFnZSB7IG1f
cGFnZSB9OwogICAgIEFTU0VSVChwYWdlKTsKICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFtwYWdlXShib29sIHVuYmxvY2tlZCkgewotICAgICAg
ICBpZiAodW5ibG9ja2VkKSB7Ci0gICAgICAgICAgICBjb25zdCBib29sIHJlbG9hZEZyb21Pcmln
aW4gPSBmYWxzZTsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxl
ZCA9IHRydWU7Ci0gICAgICAgICAgICBwYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29u
dGVudEJsb2NrZXJzRW5hYmxlZCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHVuYmxvY2tlZCkK
KyAgICAgICAgICAgIHBhZ2UtPnJlbG9hZCh7IH0pOwogICAgIH0pOwogICAgIHJldHVybiB0cnVl
OwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYzLDcgKzExNjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3RvcExvYWRpbmcoKQogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0
YXJ0KCk7CiB9CiAKLVJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2Fk
KGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkKQorUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNv
cmU6OlJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKIApAQCAtMTE4Niw3ICsxMTg2LDcgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZQogICAgIAogICAgIGF1dG8gbmF2aWdh
dGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVSZWxvYWROYXZpZ2F0aW9uKCk7CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbG9hZChuYXZpZ2F0aW9uLT5u
YXZpZ2F0aW9uSUQoKSwgcmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlbG9hZChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgb3B0
aW9ucy50b1JhdygpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOwogICAgIG1f
cHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gV1RG
TW92ZShuYXZpZ2F0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDA0LDcgKzQwNCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYg
dXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBz
Y3JlZW5Qb2ludCk7CiAKICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7Ci0gICAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gcmVsb2FkKGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiByZWxvYWQoT3B0aW9u
U2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4pOwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gZ29Gb3J3YXJkKCk7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29CYWNrKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24g
MjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0MiwyMyArMjQyLDIyIEBAIHZvaWQgV0tQYWdlU3RvcExvYWRpbmco
V0tQYWdlUmVmIHBhZ2VSZWYKIAogdm9pZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2VSZWYp
CiB7Ci0gICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3Qg
Ym9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICB0b0ltcGwocGFnZVJlZikt
PnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICB0
b0ltcGwocGFnZVJlZiktPnJlbG9hZCh7IH0pOwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZFdpdGhv
dXRDb250ZW50QmxvY2tlcnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgY29uc3QgYm9vbCBy
ZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNF
bmFibGVkID0gZmFsc2U7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQocmVsb2FkRnJvbU9y
aWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxv
YWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29udGVudEJsb2NrZXJzKTsKIH0KIAog
dm9pZCBXS1BhZ2VSZWxvYWRGcm9tT3JpZ2luKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIGNv
bnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IHRydWU7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChyZWxv
YWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPnJlbG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pOworfQorCit2b2lk
IFdLUGFnZVJlbG9hZEV4cGlyZWRPbmx5KFdLUGFnZVJlZiBwYWdlUmVmKQoreworICAgIHRvSW1w
bChwYWdlUmVmKS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwog
fQogCiBib29sIFdLUGFnZVRyeUNsb3NlKFdLUGFnZVJlZiBwYWdlUmVmKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gMjEzODk1KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw2ICs4NCw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVIKIFdL
X0VYUE9SVCB2b2lkIFdLUGFnZVJlbG9hZChXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9p
ZCBXS1BhZ2VSZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzKFdLUGFnZVJlZiBwYWdlKTsKIFdL
X0VYUE9SVCB2b2lkIFdLUGFnZVJlbG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2UpOworV0tf
RVhQT1JUIHZvaWQgV0tQYWdlUmVsb2FkRXhwaXJlZE9ubHkoV0tQYWdlUmVmIHBhZ2UpOwogCiBX
S19FWFBPUlQgYm9vbCBXS1BhZ2VUcnlDbG9zZShXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQg
dm9pZCBXS1BhZ2VDbG9zZShXS1BhZ2VSZWYgcGFnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE4NywxNiArMTg3LDEyIEBAIC0gKHZvaWQpc3RvcExvYWRpbmcKIAogLSAodm9p
ZClyZWxvYWQKIHsKLSAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAg
ICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIF9wYWdlLT5y
ZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgX3Bh
Z2UtPnJlbG9hZCh7IH0pOwogfQogCiAtICh2b2lkKXJlbG9hZEZyb21PcmlnaW4KIHsKLSAgICBj
b25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSB0cnVlOwotICAgIGNvbnN0IGJvb2wgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Ci0gICAgX3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3Jp
Z2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBfcGFnZS0+cmVsb2FkKFdlYkNvcmU6
OlJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbik7CiB9CiAKIC0gKE5TU3RyaW5nICopYXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjEzODk1KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTg0
NCw5ICs4NDQsNyBAQCAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQKIAogLSAoV0tOYXZpZ2F0
aW9uICopcmVsb2FkCiB7Ci0gICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7
Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICBhdXRv
IG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQoeyB9KTsK
ICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTg1NSw5ICs4
NTMsNyBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKIAogLSAoV0tOYXZpZ2F0aW9uICopcmVs
b2FkRnJvbU9yaWdpbgogewotICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdpbiA9IHRydWU7
Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICBhdXRv
IG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQoV2ViQ29y
ZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKQEAgLTM2OTIsOSArMzY4OCwxNiBAQCAtICh2b2lkKV9raWxsV2Vi
Q29udGVudFByb2Nlc3MKIAogLSAoV0tOYXZpZ2F0aW9uICopX3JlbG9hZFdpdGhvdXRDb250ZW50
QmxvY2tlcnMKIHsKLSAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAg
ICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBhdXRvIG5h
dmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQoV2ViQ29yZTo6
UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29udGVudEJsb2NrZXJzKTsKKyAgICBpZiAoIW5hdmlnYXRp
b24pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZp
Z2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworfQorCistIChXS05hdmlnYXRpb24gKilf
cmVsb2FkRXhwaXJlZE9ubHkKK3sKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2Fk
KFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogICAgIGlmICghbmF2aWdhdGlv
bikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAy
MTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDYgKzIyOCw3IEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUEKICNlbmRpZgogCiAtIChXS05hdmlnYXRpb24gKilf
cmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2VycyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CistIChXS05hdmlnYXRpb24gKilfcmVsb2FkRXhwaXJlZE9ubHkgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwogCiAtICh2b2lkKV9raWxs
V2ViQ29udGVudFByb2Nlc3NBbmRSZXNldFN0YXRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAkocmV2aXNpb24gMjEz
ODk1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MzksOSArMjUzOSw3IEBAIHZvaWQgd2Via2l0X3dlYl92
aWV3X3JlbG9hZChXZWJLaXRXZWJWaWUKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFVyh3ZWJWaWV3KSk7CiAKLSAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4g
PSBmYWxzZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwot
ICAgIGdldFBhZ2Uod2ViVmlldyktPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLT5yZWxvYWQoeyB9KTsKIH0KIAog
LyoqCkBAIC0yNTU1LDkgKzI1NTMsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWxvYWRfYnlw
YXNzX2NhY2hlCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2Vi
VmlldykpOwogCi0gICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gdHJ1ZTsKLSAgICBj
b25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIGdldFBhZ2Uod2Vi
VmlldyktPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsK
KyAgICBnZXRQYWdlKHdlYlZpZXcpLT5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpGcm9t
T3JpZ2luKTsKIH0KIAogLyoqCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCShyZXZpc2lv
biAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MSw4ICszNDEsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luCiAgICAgICAgIGNhbGxiYWNrLT5z
ZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShUaW1lb3V0KSk7CiAg
ICAgbV9wZW5kaW5nTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZS5z
ZXQocGFnZS0+cGFnZUlEKCksIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIGNvbnN0IGJvb2wg
cmVsb2FkRnJvbU9yaWdpbiA9IGZhbHNlOwotICAgIHBhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3Jp
Z2luLCB7IH0pOworICAgIHBhZ2UtPnJlbG9hZCh7IH0pOwogfQogCiB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpuYXZpZ2F0aW9uT2NjdXJyZWRGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYg
cGFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZQogICAgIG1fcGFnZS0+c2V0RGVm
ZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZWxvYWQodWlu
dDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJvb2wgY29udGVudEJs
b2NrZXJzRW5hYmxlZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKQordm9pZCBXZWJQYWdlOjpyZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklE
LCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1Rp
bWVyIHN0b3BwZXIodGhpcyk7CiAKQEAgLTEzMDUsNyArMTMwNSw3IEBAIHZvaWQgV2ViUGFnZTo6
cmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb24KICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBu
YXZpZ2F0aW9uSUQ7CiAKICAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLmJlZ2luTG9hZCht
X21haW5GcmFtZS5nZXQoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgY29yZVBhZ2Uo
KS0+dXNlcklucHV0QnJpZGdlKCkucmVsb2FkRnJhbWUobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgp
LCByZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBjb3JlUGFn
ZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5yZWxvYWRGcmFtZShtX21haW5GcmFtZS0+Y29yZUZyYW1l
KCksIE9wdGlvblNldDxSZWxvYWRPcHRpb24+Ojpmcm9tUmF3KHJlbG9hZE9wdGlvbnMpKTsKIH0K
IAogdm9pZCBXZWJQYWdlOjpnb0ZvcndhcmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRf
dCBiYWNrRm9yd2FyZEl0ZW1JRCkKQEAgLTQxMDMsNyArNDEwMyw3IEBAIHN0YXRpYyBib29sIHNo
b3VsZFJldXNlQ29tbWl0dGVkU2FuZGJveEUKICAgICBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5
cGUgPSBmcmFtZUxvYWRlci5sb2FkVHlwZSgpOwogCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgYmVp
bmcgcmVsb2FkZWQsIGl0IHNob3VsZCByZXVzZSB3aGF0ZXZlciBleHRlbnNpb24gaXMgY29tbWl0
dGVkLgotICAgIGlmIChmcmFtZUxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCB8fCBm
cmFtZUxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZEZyb21PcmlnaW4pCisgICAgaWYg
KGlzUmVsb2FkKGZyYW1lTG9hZFR5cGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIERv
Y3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVy
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJ
KHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBsb2FkU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBsb2Fk
QWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOwogICAgIHZvaWQgbmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNv
cmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50
KTsKLSAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJv
bU9yaWdpbiwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVp
bnQzMl90IHJlbG9hZE9wdGlvbnMsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwog
ICAgIHZvaWQgZ29Gb3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAg
IHZvaWQgZ29CYWNrKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQg
Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90KTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcg
KzE0MCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgTmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soU3RyaW5nIHVybCwgV2ViQ29yZTo6SW50
UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpCiAKLSAg
ICBSZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHJlbG9hZEZyb21PcmlnaW4sIGJv
b2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAgICBSZWxvYWQodWludDY0X3QgbmF2aWdhdGlv
bklELCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogICAgIFN0b3BMb2FkaW5nKCkKIAogICAgIFN0
b3BMb2FkaW5nRnJhbWUodWludDY0X3QgZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxNDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAzLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSByZWxvYWQgcG9saWN5IHdoZXJlIG9ubHkgZXhw
aXJlZCBzdWJyZXNvdXJjZXMgYXJlIHJldmFsaWRhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAg
KHRvV2ViRnJhbWVMb2FkVHlwZSk6CisgICAgICAgICgtW1dlYkZyYW1lIHJlbG9hZF0pOgorICAg
ICAgICAoLVtXZWJGcmFtZSByZWxvYWRGcm9tT3JpZ2luXSk6CisKIDIwMTctMDMtMTYgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSB0aGUg
c3lzdGVtIHRyYWNpbmcgcG9pbnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0JKHJldmlzaW9uIDIxMzg5NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNTksNiArMTA1OSw5IEBAIHN0YXRpYyBXZWJG
cmFtZUxvYWRUeXBlIHRvV2ViRnJhbWVMb2FkVHkKICAgICAgICAgcmV0dXJuIFdlYkZyYW1lTG9h
ZFR5cGVSZXBsYWNlOwogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbjoK
ICAgICAgICAgcmV0dXJuIFdlYkZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luOworICAgIGNh
c2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkRXhwaXJlZE9ubHk6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gV2ViRnJhbWVMb2FkVHlwZVJlbG9hZDsKICAgICB9
CiB9CiAKQEAgLTI1MzksMTIgKzI1NDIsMTIgQEAgLSAodm9pZClzdG9wTG9hZGluZwogCiAtICh2
b2lkKXJlbG9hZAogewotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLnJlbG9hZChm
YWxzZSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkucmVsb2FkKHsgfSk7CiB9
CiAKIC0gKHZvaWQpcmVsb2FkRnJvbU9yaWdpbgogewotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUt
PmxvYWRlcigpLnJlbG9hZCh0cnVlKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIo
KS5yZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luKTsKIH0KIAogLSAoV2Vi
RnJhbWUgKilmaW5kRnJhbWVOYW1lZDooTlNTdHJpbmcgKiluYW1lCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2Vi
RnJhbWUuY3BwCShyZXZpc2lvbiAyMTM4OTUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFt
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxUIFdlYkZyYW1l
OjpyZWxvYWRGcm9tT3JpZ2luKCkKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJu
IEVfVU5FWFBFQ1RFRDsKIAotICAgIGNvcmVGcmFtZS0+bG9hZGVyKCkucmVsb2FkKHRydWUpOwor
ICAgIGNvcmVGcmFtZS0+bG9hZGVyKCkucmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RnJv
bU9yaWdpbik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzg5
NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDE3LTAzLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgYSByZWxvYWQgcG9saWN5IHdoZXJlIG9ubHkgZXhwaXJlZCBzdWJyZXNvdXJjZXMg
YXJlIHJldmFsaWRhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjk3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZWxvYWQtZXhwaXJlZC1vbmx5LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZWxvYWQtZXhwaXJlZC1vbmx5
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2RvY3Vt
ZW50LXdpdGgtY2FjaGVkLXVuaXF1ZS1zY3JpcHQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5jZ2k6CisKIDIwMTctMDMtMTMg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFN5bmMgd2ViLXBs
YXRmb3JtLXRlc3RzIHVwIHRvIHJldmlzaW9uIGE1Yjk1Y2IzMTkxNDUwNzA4OGE0ZWRhMTZmNzY3
NGJiYzZmMzMxM2YKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVsb2FkLWV4
cGlyZWQtb25seS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS9yZWxvYWQtZXhwaXJlZC1vbmx5LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3JlbG9hZC1leHBpcmVkLW9ubHktZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKK1BBU1MKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVsb2FkLWV4cGlyZWQtb25seS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVsb2FkLWV4cGlyZWQtb25seS5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVsb2Fk
LWV4cGlyZWQtb25seS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKKzxib2R5
PgorPHNjcmlwdD4KK2lmICh0ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworfQorY29uc3QgdGVzdFdpbmRvdyA9IHdpbmRvdy5vcGVuKCdodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvY2FjaGUvcmVzb3VyY2VzL2RvY3VtZW50LXdpdGgtY2FjaGVkLXVu
aXF1ZS1zY3JpcHQuaHRtbCcpOworCit2YXIgZmlyc3ROdW1iZXI7Cit3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4geworICAgIGlmIChmaXJzdE51bWJlcikgewor
ICAgICAgICBjb25zdCBzZWNvbmROdW1iZXIgPSBldmVudC5kYXRhOworICAgICAgICBpZiAoZmly
c3ROdW1iZXIgPT0gc2Vjb25kTnVtYmVyKQorICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5l
ckhUTUwgPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHku
aW5uZXJIVE1MID0gYEZBSUw6IGZpcnN0TnVtYmVyPXskZmlyc3ROdW1iZXJ9IHNlY29uZE51bWJl
cj17JHNlY29uZE51bWJlcn1gOworICAgICAgICBpZiAodGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZp
cnN0TnVtYmVyID0gZXZlbnQuZGF0YTsKKyAgICBpZiAodGVzdFdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIHRlc3RXaW5kb3cuaW50ZXJuYWxzLnJlbG9hZEV4cGlyZWRPbmx5KCk7Cit9KTsKKwor
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9k
b2N1bWVudC13aXRoLWNhY2hlZC11bmlxdWUtc2NyaXB0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvZG9jdW1lbnQtd2l0aC1jYWNoZWQt
dW5pcXVlLXNjcmlwdC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FjaGUvcmVzb3VyY2VzL2RvY3VtZW50LXdpdGgtY2FjaGVkLXVuaXF1ZS1zY3JpcHQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKzxoMT48L2gxPgorPHNjcmlwdCBzcmM9
J3JhbmRvbS1jYWNoZWQuY2dpJz48L3NjcmlwdD4KKzxzY3JpcHQ+Cit3aW5kb3cub3BlbmVyLnBv
c3RNZXNzYWdlKHJhbmRvbU51bWJlciwgJyonKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5jZ2kKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcmFuZG9tLWNhY2hl
ZC5jZ2kJKHJldmlzaW9uIDIxMzg5NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUv
cmVzb3VyY2VzL3JhbmRvbS1jYWNoZWQuY2dpCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNiBA
QAogCiBwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2phdmFzY3JpcHRcbiI7CiBwcmludCAiQ2Fj
aGUtY29udHJvbDogbWF4LWFnZT02MDAwMFxuIjsKLXByaW50ICJFVGFnOiBcIjEyMzQ1Njc4OVwi
XG4iOwogcHJpbnQgIlxuIjsKIAogbXkgJHJhbmRvbV9udW1iZXIgPSBpbnQocmFuZCgxMDAwMDAw
MDAwMDAwKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>