<?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>157757</bug_id>
          
          <creation_ts>2016-05-16 14:27:53 -0700</creation_ts>
          <short_desc>Modern IDB: Give each UniqueIDBDatabase its own task queues</short_desc>
          <delta_ts>2016-05-16 16:48:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
    
    <blocked>157626</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1193529</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-16 14:27:53 -0700</bug_when>
    <thetext>Modern IDB: Give each UniqueIDBDatabase its own task queues

Right now all UniqueIBDDatabases rely on the shared task queues in the IDBServer.

This makes it difficult for a specific UniqueIDBDatabases to have a single entry point for both database thread tasks and main thread replies, which is needed for other work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193547</commentid>
    <comment_count>1</comment_count>
      <attachid>279051</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-16 15:10:59 -0700</bug_when>
    <thetext>Created attachment 279051
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193615</commentid>
    <comment_count>2</comment_count>
      <attachid>279051</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-16 16:48:55 -0700</bug_when>
    <thetext>Comment on attachment 279051
Patch v1

Clearing flags on attachment: 279051

Committed r200982: &lt;http://trac.webkit.org/changeset/200982&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193616</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-16 16:48:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279051</attachid>
            <date>2016-05-16 15:10:59 -0700</date>
            <delta_ts>2016-05-16 16:48:55 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>35040</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OGNlYTljLi4xOTIzNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTgg
QEAKKzIwMTYtMDUtMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybiBJREI6IEdpdmUgZWFjaCBVbmlxdWVJREJEYXRhYmFzZSBpdHMgb3duIHRhc2sg
cXVldWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIChSZWZhY3Rvciwgbm8gYmVoYXZpb3IgY2hhbmdlKS4KKworICAgICAgICBF
YWNoIFVuaXF1ZUlEQkRhdGFiYXNlIG5vdyBtYWludGFpbnMgaXRzIG93biBkYXRhYmFzZVRhc2sg
YW5kIGRhdGFiYXNlVGFza1JlcGx5IHF1ZXVlcy4KKyAgICAgICAgCisgICAgICAgIEluc3RlYWQg
b2YgcG9zdGluZyB0aGUgc3BlY2lmaWMgdGFzayhyZXBseSkgd2l0aCB0aGUgSURCU2VydmVyLCBp
dCBtZXJlbHkgcG9zdHMgYSB0YXNrKHJlcGx5KSB0aGF0IHNheXMKKyAgICAgICAgIkhhbmRsZSB5
b3VyIG5leHQgdGFzayhyZXBseSkiLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudERl
bGV0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpkZWxldGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybURlbGV0ZU9i
amVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZTo6cGVyZm9ybUNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1EZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpwdXRPckFkZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1HZXRSZWNvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUdldEluZGV4
UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OmdldENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnBlcmZvcm1HZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybURlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1PcGVuQ3Vyc29y
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJh
dGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZTo6cGVyZm9ybUl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZTo6cGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6YWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1B
Y3RpdmF0ZVRyYW5zYWN0aW9uSW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrUmVw
bHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZXhl
Y3V0ZU5leHREYXRhYmFzZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZTo6ZXhlY3V0ZU5leHREYXRhYmFzZVRhc2tSZXBseSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisKIDIwMTYtMDUt
MTYgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IENTU1BhcnNlci5jcHAgdHJpZ2dlcnMgLVd1bnVzZWQtcGFyYW1ldGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAppbmRleCA4Zjg2M2RiLi5lZGE4ZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
Q3VycmVudE9wZW5PcGVyYXRpb24oKQogICAgIGlmICghbV9kYXRhYmFzZUluZm8pIHsKICAgICAg
ICAgaWYgKCFtX2lzT3BlbmluZ0JhY2tpbmdTdG9yZSkgewogICAgICAgICAgICAgbV9pc09wZW5p
bmdCYWNraW5nU3RvcmUgPSB0cnVlOwotICAgICAgICAgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNl
VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6b3Bl
bkJhY2tpbmdTdG9yZSwgbV9pZGVudGlmaWVyKSk7CisgICAgICAgICAgICBwb3N0RGF0YWJhc2VU
YXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
QmFja2luZ1N0b3JlLCBtX2lkZW50aWZpZXIpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVy
bjsKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3Vy
cmVudERlbGV0ZU9wZXJhdGlvbigpCiAgICAgICAgICAgICBkaWREZWxldGVCYWNraW5nU3RvcmUo
MCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9kZWxldGVCYWNraW5nU3RvcmVJblBy
b2dyZXNzID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2soY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tp
bmdTdG9yZSwgbV9pZGVudGlmaWVyKSk7CisgICAgICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVCYWNr
aW5nU3RvcmUsIG1faWRlbnRpZmllcikpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjM4LDcg
KzIzOCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZShjb25z
dCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpCiAgICAgICAgIGJhY2tpbmdTdG9yZS0+
ZGVsZXRlQmFja2luZ1N0b3JlKCk7CiAgICAgfQogCi0gICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNl
VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWREZWxldGVCYWNraW5nU3RvcmUsIGRlbGV0ZWRWZXJzaW9uKSk7CisgICAgcG9zdERhdGFi
YXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWREZWxldGVCYWNraW5nU3RvcmUsIGRlbGV0ZWRWZXJzaW9uKSk7CiB9CiAKIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUJhY2tpbmdTdG9yZSh1aW50NjRfdCBkZWxldGVk
VmVyc2lvbikKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpzdGFy
dFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbigpCiAgICAgbV9kYXRhYmFzZUluZm8tPnNldFZlcnNp
b24ocmVxdWVzdGVkVmVyc2lvbik7CiAKICAgICBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMuc2V0
KG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5pbmZvKCkuaWRlbnRpZmllcigpLCBtX3ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbik7Ci0gICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFzayhjcmVh
dGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6YmVnaW5UcmFuc2Fj
dGlvbkluQmFja2luZ1N0b3JlLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+aW5mbygpKSk7
CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6YmVnaW5UcmFuc2FjdGlvbkluQmFja2luZ1N0b3JlLCBtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbi0+aW5mbygpKSk7CiAKICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3Vs
dERhdGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQob3BlcmF0aW9uLT5yZXF1ZXN0RGF0YSgp
LnJlcXVlc3RJZGVudGlmaWVyKCksICptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik7CiAgICAg
b3BlcmF0aW9uLT5jb25uZWN0aW9uKCkuZGlkT3BlbkRhdGFiYXNlKHJlc3VsdCk7CkBAIC01MTYs
NyArNTE2LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZShjb25z
dCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIKICAgICBJREJEYXRhYmFzZUluZm8g
ZGF0YWJhc2VJbmZvOwogICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0T3JFc3Rh
Ymxpc2hEYXRhYmFzZUluZm8oZGF0YWJhc2VJbmZvKTsKIAotICAgIG1fc2VydmVyLnBvc3REYXRh
YmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJbmZvLCBlcnJvcikpOworICAgIHBv
c3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJbmZvLCBlcnJvcikpOwog
fQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElE
QkRhdGFiYXNlSW5mbyYgaW5mbywgY29uc3QgSURCRXJyb3ImIGVycm9yKQpAQCAtNTM5LDcgKzUz
OSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWlu
KSBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKIAogICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBzdG9yZUNhbGxiYWNrKGNhbGxiYWNrKTsKLSAgICBtX3NlcnZlci5wb3N0
RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFi
YXNlOjpwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUsIGNhbGxiYWNrSUQsIHRyYW5zYWN0aW9uLmlu
Zm8oKS5pZGVudGlmaWVyKCksIGluZm8pKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlT2Jq
ZWN0U3RvcmUsIGNhbGxiYWNrSUQsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGlu
Zm8pKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZU9iamVjdFN0
b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5m
bykKQEAgLTU1MSw3ICs1NTEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3Jl
YXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjbwogICAgIG1fYmFj
a2luZ1N0b3JlLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIGluZm8p
OwogCiAgICAgSURCRXJyb3IgZXJyb3I7Ci0gICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFza1Jl
cGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQ
ZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUsIGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIGluZm8p
KTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1DcmVhdGVPYmplY3RTdG9yZSwgY2FsbGJh
Y2tJZGVudGlmaWVyLCBlcnJvciwgaW5mbykpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWRQZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVy
LCBjb25zdCBJREJFcnJvciYgZXJyb3IsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykK
QEAgLTU3OCw3ICs1NzgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RT
dG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybURlbGV0ZU9iamVjdFN0
b3JlLCBjYWxsYmFja0lELCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBpbmZvLT5p
ZGVudGlmaWVyKCkpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtRGVsZXRlT2JqZWN0U3RvcmUsIGNh
bGxiYWNrSUQsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8tPmlkZW50aWZp
ZXIoKSkpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtRGVsZXRlT2JqZWN0
U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyKQpAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1E
ZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvCiAgICAgbV9i
YWNraW5nU3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKTsKIAogICAgIElEQkVycm9yIGVycm9yOwotICAgIG1fc2VydmVy
LnBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybURlbGV0ZU9iamVjdFN0b3JlLCBjYWxsYmFja0lkZW50
aWZpZXIsIGVycm9yLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsKKyAgICBwb3N0RGF0YWJhc2VU
YXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmRpZFBlcmZvcm1EZWxldGVPYmplY3RTdG9yZSwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRp
ZFBlcmZvcm1EZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNv
bnN0IElEQkVycm9yJiBlcnJvciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQpAQCAt
NjEwLDcgKzYxMCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3RpCiAgICAgTE9HKEluZGV4ZWRE
QiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZSIpOwogCiAgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2soY2FsbGJhY2spOwotICAgIG1fc2Vy
dmVyLnBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OnBlcmZvcm1DbGVhck9iamVjdFN0b3JlLCBjYWxsYmFja0lELCB0cmFuc2Fj
dGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsKKyAgICBw
b3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRh
dGFiYXNlOjpwZXJmb3JtQ2xlYXJPYmplY3RTdG9yZSwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24u
aW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DbGVhck9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKQEAgLTYyMiw3ICs2MjIs
NyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ2xlYXJPYmplY3RTdG9yZSh1aW50
NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbgogICAgIG1fYmFja2luZ1N0b3JlLT5jbGVhck9i
amVjdFN0b3JlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsK
IAogICAgIElEQkVycm9yIGVycm9yOwotICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2tSZXBs
eShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVy
Zm9ybUNsZWFyT2JqZWN0U3RvcmUsIGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IpKTsKKyAgICBw
b3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OmRpZFBlcmZvcm1DbGVhck9iamVjdFN0b3JlLCBjYWxsYmFja0lkZW50aWZp
ZXIsIGVycm9yKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1DbGVh
ck9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3Im
IGVycm9yKQpAQCAtNjM5LDcgKzYzOSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0
ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjCiAgICAg
TE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgiKTsK
IAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdG9yZUNhbGxiYWNrKGNhbGxiYWNrKTsKLSAg
ICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywg
JlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlSW5kZXgsIGNhbGxiYWNrSUQsIHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNr
KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
Q3JlYXRlSW5kZXgsIGNhbGxiYWNrSUQsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCks
IGluZm8pKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZUluZGV4
KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKQEAgLTY1
MCw3ICs2NTAsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlSW5kZXgo
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJRAogICAgIEFTU0VSVChtX2JhY2tp
bmdTdG9yZSk7CiAgICAgSURCRXJyb3IgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5k
ZXgodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbmZvKTsKIAotICAgIG1fc2VydmVyLnBvc3REYXRh
YmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUGVyZm9ybUNyZWF0ZUluZGV4LCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCBp
bmZvKSk7CisgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygq
dGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQ3JlYXRlSW5kZXgsIGNhbGxiYWNr
SWRlbnRpZmllciwgZXJyb3IsIGluZm8pKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkUGVyZm9ybUNyZWF0ZUluZGV4KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3Qg
SURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCkBAIC02ODcsNyArNjg3
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1EZWxldGVJbmRleCwgY2FsbGJhY2tJRCwgdHJh
bnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRl
eEluZm8tPmlkZW50aWZpZXIoKSkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1EZWxldGVJbmRleCwg
Y2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBpbmRleEluZm8tPmlkZW50aWZpZXIoKSkpOwogfQogCiB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpwZXJmb3JtRGVsZXRlSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVy
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCB1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIpCkBAIC02OTksNyArNjk5LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybURl
bGV0ZUluZGV4KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSUQKICAgICBtX2Jh
Y2tpbmdTdG9yZS0+ZGVsZXRlSW5kZXgodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllcik7CiAKICAgICBJREJFcnJvciBlcnJvcjsKLSAg
ICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1EZWxldGVJbmRleCwgY2FsbGJhY2tJ
ZGVudGlmaWVyLCBlcnJvciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIp
KTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1EZWxldGVJbmRleCwgY2FsbGJhY2tJZGVu
dGlmaWVyLCBlcnJvciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIpKTsK
IH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybURlbGV0ZUluZGV4KHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllcikKQEAgLTcyMiw3
ICs3MjIsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogICAgIExPRyhJbmRleGVkREIsICIo
bWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkIik7CiAKICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gc3RvcmVDYWxsYmFjayhjYWxsYmFjayk7Ci0gICAgbV9zZXJ2ZXIucG9zdERhdGFi
YXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lELCByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50
aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIGtleURhdGEsIHZh
bHVlLCBvdmVyd3JpdGVNb2RlKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkLCBjYWxs
YmFja0lELCByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEu
b2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVNb2RlKSk7
CiB9CiAKIFZNJiBVbmlxdWVJREJEYXRhYmFzZTo6ZGF0YWJhc2VUaHJlYWRWTSgpCkBAIC03NTYs
NyArNzU2LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkKHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmUKICAgICBhdXRvKiBvYmplY3RTdG9y
ZUluZm8gPSBtX2JhY2tpbmdTdG9yZS0+aW5mb0Zvck9iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRl
bnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pIHsKICAgICAgICAgZXJyb3IgPSBJ
REJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiT2JqZWN0IHN0b3JlIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgYmFja2luZyBzdG9yZSIp
KTsKLSAgICAgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNh
bGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIHVzZWRLZXkpKTsKKyAgICAgICAgcG9zdERhdGFiYXNl
VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIHVzZWRLZXkp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzY2LDcgKzc2Niw3IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsIGNvbnN0IElEQlJlCiAgICAgICAgIHVpbnQ2NF90IGtleU51bWJlcjsKICAgICAgICAgZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2VuZXJhdGVLZXlOdW1iZXIodHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleU51bWJlcik7CiAgICAgICAgIGlmICghZXJy
b3IuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2tSZXBs
eShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVy
Zm9ybVB1dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCB1c2VkS2V5KSk7CisgICAg
ICAgICAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1QdXRPckFkZCwgY2FsbGJhY2tJZGVudGlm
aWVyLCBlcnJvciwgdXNlZEtleSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZv
cm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlCiAgICAg
ICAgICAgICBlcnJvciA9IElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qgc3Rv
cmUiKSk7CiAKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICAgICAgbV9z
ZXJ2ZXIucG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywg
JlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmll
ciwgZXJyb3IsIHVzZWRLZXkpKTsKKyAgICAgICAgICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9y
bVB1dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCB1c2VkS2V5KSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC03OTksMTggKzc5OSwxOCBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJhY2tJZGVu
dGlmaWVyLCBjb25zdCBJREJSZQogCiAgICAgICAgIGF1dG8gdmFsdWUgPSBkZXNlcmlhbGl6ZUlE
QlZhbHVlRGF0YVRvSlNWYWx1ZShkYXRhYmFzZVRocmVhZEV4ZWNTdGF0ZSgpLCBvcmlnaW5hbFJl
Y29yZFZhbHVlLmRhdGEoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0g
ICAgICAgICAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1QdXRPckFkZCwgY2Fs
bGJhY2tJZGVudGlmaWVyLCBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWlu
dEVycm9yLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSByZWNvcmQgdmFsdWUg
Zm9yIHJlY29yZCBrZXkgaW5qZWN0aW9uIikpLCB1c2VkS2V5KSk7CisgICAgICAgICAgICBwb3N0
RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6OmRpZFBlcmZvcm1QdXRPckFkZCwgY2FsbGJhY2tJZGVudGlmaWVyLCBJREJFcnJv
cihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yLCBBU0NJSUxpdGVyYWwoIlVu
YWJsZSB0byBkZXNlcmlhbGl6ZSByZWNvcmQgdmFsdWUgZm9yIHJlY29yZCBrZXkgaW5qZWN0aW9u
IikpLCB1c2VkS2V5KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIWluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShkYXRhYmFzZVRocmVhZEV4ZWNTdGF0
ZSgpLCB1c2VkS2V5LCB2YWx1ZSwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCkpKSB7Ci0gICAg
ICAgICAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1QdXRPckFkZCwgY2FsbGJh
Y2tJZGVudGlmaWVyLCBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVy
cm9yLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBpbmplY3QgcmVjb3JkIGtleSBpbnRvIHJlY29y
ZCB2YWx1ZSIpKSwgdXNlZEtleSkpOworICAgICAgICAgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5
KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJm
b3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgSURCRXJyb3IoSURCRGF0YWJhc2VFeGNl
cHRpb246OkNvbnN0cmFpbnRFcnJvciwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gaW5qZWN0IHJl
Y29yZCBrZXkgaW50byByZWNvcmQgdmFsdWUiKSksIHVzZWRLZXkpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJmRhdGFiYXNlVGhyZWFkRXhlY1N0YXRlKCksIHZhbHVl
LCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgaWYgKGRhdGFiYXNlVGhyZWFkRXhlY1N0YXRl
KCkuaGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRh
c2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkUGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIElEQkVycm9yKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIHNl
cmlhbGl6ZSByZWNvcmQgdmFsdWUgYWZ0ZXIgaW5qZWN0aW5nIHJlY29yZCBrZXkiKSksIHVzZWRL
ZXkpKTsKKyAgICAgICAgICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVh
ZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkLCBjYWxs
YmFja0lkZW50aWZpZXIsIElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIHNlcmlhbGl6ZSByZWNvcmQgdmFsdWUgYWZ0
ZXIgaW5qZWN0aW5nIHJlY29yZCBrZXkiKSksIHVzZWRLZXkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6cGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURC
UmUKICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGZvcm1hbGx5IGRlbGV0aW5nIGl0
IGZyb20gZnJvbSB0aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9tIHRoZSBhcHBy
b3ByaWF0ZSBpbmRleGVzLgogICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJhbmdl
KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1c2VkS2V5KTsK
ICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fc2VydmVyLnBvc3REYXRhYmFz
ZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkUGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCB1c2VkS2V5
KSk7CisgICAgICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2so
KnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lk
ZW50aWZpZXIsIGVycm9yLCB1c2VkS2V5KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTgzMyw3ICs4MzMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQo
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZQogICAgICAgICBlcnJvciA9
IG1fYmFja2luZ1N0b3JlLT5hZGRSZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCAqb2JqZWN0
U3RvcmVJbmZvLCB1c2VkS2V5LCBvcmlnaW5hbFJlY29yZFZhbHVlKTsKIAogICAgIGlmICghZXJy
b3IuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFza1JlcGx5KGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3Jt
UHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIHVzZWRLZXkpKTsKKyAgICAgICAg
cG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgZXJy
b3IsIHVzZWRLZXkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODQxLDcgKzg0MSw3
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlCiAgICAgICAgIGVycm9yID0gbV9iYWNraW5nU3Rv
cmUtPm1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBrZXlEYXRhLm51bWJlcigpKTsKIAogICAgIGdlbmVyYXRl
ZEtleVJlc2V0dGVyLmRpc2FibGUoKTsKLSAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrUmVw
bHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBl
cmZvcm1QdXRPckFkZCwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgdXNlZEtleSkpOworICAg
IHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIGVy
cm9yLCB1c2VkS2V5KSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1Q
dXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJv
ciwgY29uc3QgSURCS2V5RGF0YSYgcmVzdWx0S2V5KQpAQCAtODYwLDkgKzg2MCw5IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQktlCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJh
Y2soY2FsbGJhY2spOwogCiAgICAgaWYgKHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciA9IHJlcXVl
c3REYXRhLmluZGV4SWRlbnRpZmllcigpKQotICAgICAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VU
YXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJm
b3JtR2V0SW5kZXhSZWNvcmQsIGNhbGxiYWNrSUQsIHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRl
bnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwgaW5kZXhJZGVu
dGlmaWVyLCByZXF1ZXN0RGF0YS5pbmRleFJlY29yZFR5cGUoKSwgcmFuZ2UpKTsKKyAgICAgICAg
cG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybUdldEluZGV4UmVjb3JkLCBjYWxsYmFja0lELCByZXF1ZXN0RGF0YS50
cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVy
KCksIGluZGV4SWRlbnRpZmllciwgcmVxdWVzdERhdGEuaW5kZXhSZWNvcmRUeXBlKCksIHJhbmdl
KSk7CiAgICAgZWxzZQotICAgICAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtR2V0UmVjb3Jk
LCBjYWxsYmFja0lELCByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVz
dERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIHJhbmdlKSk7CisgICAgICAgIHBvc3REYXRh
YmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1HZXRSZWNvcmQsIGNhbGxiYWNrSUQsIHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRl
bnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwgcmFuZ2UpKTsK
IH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUdldFJlY29yZCh1aW50NjRfdCBj
YWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQpAQCAtODc1LDcgKzg3NSw3IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnBlcmZvcm1HZXRSZWNvcmQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVy
LCBjb25zdCBJREJSCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBJREJFcnJvciBlcnJv
ciA9IG1fYmFja2luZ1N0b3JlLT5nZXRSZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGtleVJhbmdlRGF0YSwgcmVzdWx0KTsKIAotICAgIG1fc2VydmVy
LnBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldFJlY29yZCwgY2FsbGJhY2tJZGVudGlmaWVyLCBl
cnJvciwgcmVzdWx0KSk7CisgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtR2V0UmVjb3JkLCBj
YWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCByZXN1bHQpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybUdldEluZGV4UmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBJ
bmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSByZWNvcmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIHJhbmdlKQpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBl
cmZvcm1HZXRJbmRleFJlY29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0CiAg
ICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBJREJFcnJvciBlcnJvciA9IG1fYmFja2luZ1N0
b3JlLT5nZXRJbmRleFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCByZWNvcmRUeXBlLCByYW5nZSwgcmVzdWx0KTsKIAot
ICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2so
KnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldFJlY29yZCwgY2FsbGJhY2tJ
ZGVudGlmaWVyLCBlcnJvciwgcmVzdWx0KSk7CisgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3Jt
R2V0UmVjb3JkLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCByZXN1bHQpKTsKIH0KIAogdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldFJlY29yZCh1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvciwgY29uc3QgSURCR2V0UmVzdWx0JiBy
ZXN1bHQpCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291
bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKICAgICBM
T0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudCIpOwogCiAg
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2soY2FsbGJhY2spOwotICAgIG1f
c2VydmVyLnBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OnBlcmZvcm1HZXRDb3VudCwgY2FsbGJhY2tJRCwgcmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmll
cigpLCByZXF1ZXN0RGF0YS5pbmRleElkZW50aWZpZXIoKSwgcmFuZ2UpKTsKKyAgICBwb3N0RGF0
YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjpwZXJmb3JtR2V0Q291bnQsIGNhbGxiYWNrSUQsIHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRl
bnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwgcmVxdWVzdERh
dGEuaW5kZXhJZGVudGlmaWVyKCksIHJhbmdlKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OnBlcmZvcm1HZXRDb3VudCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCkBAIC05MTksNyArOTE5LDcgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6cGVyZm9ybUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwg
Y29uc3QgSURCUmUKICAgICB1aW50NjRfdCBjb3VudDsKICAgICBJREJFcnJvciBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5nZXRDb3VudCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBrZXlSYW5nZURhdGEsIGNvdW50KTsKIAotICAg
IG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldENvdW50LCBjYWxsYmFja0lkZW50
aWZpZXIsIGVycm9yLCBjb3VudCkpOworICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldENv
dW50LCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCBjb3VudCkpOwogfQogCiB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtR2V0Q291bnQodWludDY0X3QgY2FsbGJhY2tJZGVudGlm
aWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IsIHVpbnQ2NF90IGNvdW50KQpAQCAtOTM2LDcgKzkz
Niw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElECiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWlu
KSBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkIik7CiAKICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gc3RvcmVDYWxsYmFjayhjYWxsYmFjayk7Ci0gICAgbV9zZXJ2ZXIucG9zdERhdGFi
YXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybURlbGV0ZVJlY29yZCwgY2FsbGJhY2tJRCwgcmVxdWVzdERhdGEudHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBrZXlSYW5n
ZURhdGEpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhp
cywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtRGVsZXRlUmVjb3JkLCBjYWxsYmFja0lELCBy
ZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3Rv
cmVJZGVudGlmaWVyKCksIGtleVJhbmdlRGF0YSkpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpwZXJmb3JtRGVsZXRlUmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKQEAg
LTk0Niw3ICs5NDYsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtRGVsZXRlUmVj
b3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSQogCiAgICAgSURCRXJyb3Ig
ZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmFuZ2UodHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHJhbmdlKTsKIAotICAgIG1fc2VydmVyLnBvc3REYXRh
YmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUGVyZm9ybURlbGV0ZVJlY29yZCwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvcikp
OworICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybURlbGV0ZVJlY29yZCwgY2FsbGJhY2tJZGVu
dGlmaWVyLCBlcnJvcikpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3Jt
RGVsZXRlUmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3Im
IGVycm9yKQpAQCAtOTYzLDcgKzk2Myw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5D
dXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDCiAgICAg
TE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvciIpOwog
CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2soY2FsbGJhY2spOwotICAg
IG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAm
VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1PcGVuQ3Vyc29yLCBjYWxsYmFja0lELCByZXF1ZXN0
RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgaW5mbykpOworICAgIHBvc3REYXRhYmFzZVRh
c2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZv
cm1PcGVuQ3Vyc29yLCBjYWxsYmFja0lELCByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKSwgaW5mbykpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtT3BlbkN1
cnNvcih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQpA
QCAtOTc0LDcgKzk3NCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1PcGVuQ3Vy
c29yKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCCiAgICAgSURCR2V0UmVz
dWx0IHJlc3VsdDsKICAgICBJREJFcnJvciBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuQ3Vy
c29yKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW5mbywgcmVzdWx0KTsKIAotICAgIG1fc2VydmVy
LnBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybU9wZW5DdXJzb3IsIGNhbGxiYWNrSWRlbnRpZmllciwg
ZXJyb3IsIHJlc3VsdCkpOworICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybU9wZW5DdXJzb3Is
IGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIHJlc3VsdCkpOwogfQogCiB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkaWRQZXJmb3JtT3BlbkN1cnNvcih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvciwgY29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQpCkBA
IC05OTEsNyArOTkxLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IEkKICAgICBMT0coSW5kZXhl
ZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yIik7CiAKICAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFjayhjYWxsYmFjayk7Ci0gICAgbV9zZXJ2
ZXIucG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6cGVyZm9ybUl0ZXJhdGVDdXJzb3IsIGNhbGxiYWNrSUQsIHJlcXVlc3REYXRh
LnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5jdXJzb3JJZGVudGlmaWVyKCks
IGtleSwgY291bnQpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtSXRlcmF0ZUN1cnNvciwgY2FsbGJh
Y2tJRCwgcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLmN1
cnNvcklkZW50aWZpZXIoKSwga2V5LCBjb3VudCkpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpwZXJmb3JtSXRlcmF0ZUN1cnNvcih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEm
IGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCkKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OnBlcmZvcm1JdGVyYXRlQ3Vyc29yKHVpbnQ2NF90IGNhbGxiYWNrSWRl
bnRpZmllciwgY29uc3QKICAgICBJREJHZXRSZXN1bHQgcmVzdWx0OwogICAgIElEQkVycm9yIGVy
cm9yID0gbV9iYWNraW5nU3RvcmUtPml0ZXJhdGVDdXJzb3IodHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjdXJzb3JJZGVudGlmaWVyLCBrZXksIGNvdW50LCByZXN1bHQpOwogCi0gICAgbV9zZXJ2ZXIu
cG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtSXRlcmF0ZUN1cnNvciwgY2FsbGJhY2tJZGVudGlmaWVy
LCBlcnJvciwgcmVzdWx0KSk7CisgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtSXRlcmF0ZUN1
cnNvciwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgcmVzdWx0KSk7CiB9CiAKIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1JdGVyYXRlQ3Vyc29yKHVpbnQ2NF90IGNhbGxiYWNr
SWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJHZXRSZXN1bHQmIHJl
c3VsdCkKQEAgLTEwNDUsNyArMTA0NSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1p
dFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrKGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ29tbWl0
VHJhbnNhY3Rpb24sIGNhbGxiYWNrSUQsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkp
KTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVu
aXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ29tbWl0VHJhbnNhY3Rpb24sIGNhbGxiYWNrSUQsIHRy
YW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCkBA
IC0xMDU0LDcgKzEwNTQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ29tbWl0
VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjbwogICAgIExPRyhJbmRl
eGVkREIsICIoZGIpIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ29tbWl0VHJhbnNhY3Rpb24g
LSAlcyIsIHRyYW5zYWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICBJREJFcnJvciBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5jb21taXRUcmFuc2Fj
dGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRh
c2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkUGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9uLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCB0
cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1Db21t
aXRUcmFuc2FjdGlvbiwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1Db21taXRU
cmFuc2FjdGlvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBl
cnJvciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIp
CkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5z
YWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9z
c1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUFib3J0VHJhbnNh
Y3Rpb24sIGNhbGxiYWNrSUQsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpKTsKKyAg
ICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlE
QkRhdGFiYXNlOjpwZXJmb3JtQWJvcnRUcmFuc2FjdGlvbiwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKSkpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2UoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikKQEAgLTExMTAsNyArMTExMCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBl
cmZvcm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uCiAg
ICAgTE9HKEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1BYm9ydFRy
YW5zYWN0aW9uIC0gJXMiLCB0cmFuc2FjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogCiAgICAgSURCRXJyb3IgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWJv
cnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIG1fc2VydmVyLnBvc3RE
YXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24sIGNhbGxiYWNrSWRlbnRpZmllciwg
ZXJyb3IsIHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIHBvc3REYXRhYmFzZVRhc2tSZXBs
eShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVy
Zm9ybUFib3J0VHJhbnNhY3Rpb24sIGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIHRyYW5zYWN0
aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3Jt
QWJvcnRUcmFuc2FjdGlvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQkVy
cm9yJiBlcnJvciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIpCkBAIC0xMjY5LDcgKzEyNjksNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphY3Rp
dmF0ZVRyYW5zYWN0aW9uSW5CYWNraW5nU3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFucwogICAg
IH07CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFjayhjYWxsYmFjayk7
Ci0gICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUFjdGl2YXRlVHJhbnNhY3Rpb25JbkJhY2tp
bmdTdG9yZSwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygpKSk7CisgICAgcG9zdERhdGFi
YXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybUFjdGl2YXRlVHJhbnNhY3Rpb25JbkJhY2tpbmdTdG9yZSwgY2FsbGJhY2tJRCwgdHJh
bnNhY3Rpb24uaW5mbygpKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1B
Y3RpdmF0ZVRyYW5zYWN0aW9uSW5CYWNraW5nU3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlm
aWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCkBAIC0xMjc3LDcgKzEyNzcsNyBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQWN0aXZhdGVUcmFuc2FjdGlvbkluQmFj
a2luZ1N0b3JlKHVpbnQ2NF90IGNhbGxiYQogICAgIExPRyhJbmRleGVkREIsICIoZGIpIFVuaXF1
ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0b3JlIik7
CiAKICAgICBJREJFcnJvciBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5iZWdpblRyYW5zYWN0aW9u
KGluZm8pOwotICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFjdGl2YXRlVHJh
bnNhY3Rpb25JbkJhY2tpbmdTdG9yZSwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvcikpOworICAg
IHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFjdGl2YXRlVHJhbnNhY3Rpb25JbkJhY2tpbmdTdG9y
ZSwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvcikpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWRQZXJmb3JtQWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0b3JlKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQpAQCAtMTM4OSw2ICsx
Mzg5LDQyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uQ29tcGxldGVkKFJl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uCiAgICAgaW52b2tlT3BlcmF0aW9uQW5k
VHJhbnNhY3Rpb25UaW1lcigpOwogfQogCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0RGF0
YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYgdGFzaykKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fZGF0YWJhc2VRdWV1ZS5hcHBlbmQoV1RG
TW92ZSh0YXNrKSk7CisKKyAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpleGVjdXRlTmV4dERhdGFiYXNl
VGFzaykpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrUmVw
bHkoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJiB0YXNrKQoreworICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fZGF0YWJhc2VSZXBseVF1ZXVlLmFwcGVuZChXVEZN
b3ZlKHRhc2spKTsKKworICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZXhlY3V0ZU5leHREYXRh
YmFzZVRhc2tSZXBseSkpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpleGVjdXRlTmV4
dERhdGFiYXNlVGFzaygpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBh
dXRvIHRhc2sgPSBtX2RhdGFiYXNlUXVldWUudHJ5R2V0TWVzc2FnZSgpOworICAgIEFTU0VSVCh0
YXNrKTsKKworICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmV4ZWN1dGVOZXh0RGF0YWJhc2VUYXNrUmVwbHkoKQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHRhc2sgPSBtX2RhdGFiYXNlUmVwbHlRdWV1ZS50cnlH
ZXRNZXNzYWdlKCk7CisgICAgQVNTRVJUKHRhc2spOworCisgICAgdGFzay0+cGVyZm9ybVRhc2so
KTsKK30KKwogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUVycm9yQ2FsbGJhY2sodWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCiB7CiAgICAg
YXV0byBjYWxsYmFjayA9IG1fZXJyb3JDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50aWZpZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCBiODM3ZTE5Li5hYzg0NjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2UuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAKKyNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJJREJCYWNr
aW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAi
SURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSA8d3Rm
L0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCkBA
IC0xODcsNiArMTg5LDExIEBAIHByaXZhdGU6CiAKICAgICBib29sIHByZXBhcmVUb0ZpbmlzaFRy
YW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKIAorICAgIHZvaWQgcG9z
dERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiYmKTsKKyAgICB2
b2lkIHBvc3REYXRhYmFzZVRhc2tSZXBseShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNr
PiYmKTsKKyAgICB2b2lkIGV4ZWN1dGVOZXh0RGF0YWJhc2VUYXNrKCk7CisgICAgdm9pZCBleGVj
dXRlTmV4dERhdGFiYXNlVGFza1JlcGx5KCk7CisKICAgICBJREJTZXJ2ZXImIG1fc2VydmVyOwog
ICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgCkBAIC0yMjUsNiAr
MjMyLDkgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PHVpbnQ2NF90PiBtX29iamVjdFN0b3JlV3Jp
dGVUcmFuc2FjdGlvbnM7CiAKICAgICBib29sIG1fZGVsZXRlQmFja2luZ1N0b3JlSW5Qcm9ncmVz
cyB7IGZhbHNlIH07CisKKyAgICBNZXNzYWdlUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFi
YXNlUXVldWU7CisgICAgTWVzc2FnZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVJl
cGx5UXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIK
</data>

          </attachment>
      

    </bug>

</bugzilla>