<?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>139990</bug_id>
          
          <creation_ts>2014-12-29 10:35:26 -0800</creation_ts>
          <short_desc>Convert all variadic WebProcessProxy message over to UserData</short_desc>
          <delta_ts>2014-12-30 01:43:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>140000</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058108</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-29 10:35:26 -0800</bug_when>
    <thetext>Convert all variadic WebProcessProxy message over to UserData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058109</commentid>
    <comment_count>1</comment_count>
      <attachid>243800</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-29 10:35:44 -0800</bug_when>
    <thetext>Created attachment 243800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058110</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-29 10:38:08 -0800</bug_when>
    <thetext>Committed r177795: &lt;http://trac.webkit.org/changeset/177795&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243800</attachid>
            <date>2014-12-29 10:35:44 -0800</date>
            <delta_ts>2014-12-29 10:37:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139990-20141229103550.patch</filename>
            <type>text/plain</type>
            <size>83353</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTEyNmYwZmFjODI1MDhj
ZTAyYTBiOTBjYTBlZWJlN2E4NGMyMzRhNi4uODkzYTUyNDJhMDFmYTQ3ZGM4ZmU1YmMxYjEwMjAy
Mjk0MjNhNWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgxIEBACiAyMDE0LTEyLTI5ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQ29udmVydCBhbGwg
dmFyaWFkaWMgV2ViUHJvY2Vzc1Byb3h5IG1lc3NhZ2Ugb3ZlciB0byBVc2VyRGF0YQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5OTkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aWxsR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExv
YWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50
TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlVGl0bGVGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Rmlyc3RMYXlvdXRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1bmFibGVUb0ltcGxl
bWVudFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbFN1Ym1pdEZv
cm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRCZWdpblRyYWNraW5nUG90
ZW50aWFsTG9uZ01vdXNlUHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dTZWxlY3Rpb25TZXJ2aWNlTWVu
dSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpkaWRCZWdpblRyYWNr
aW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2hyb21lQ2xpZW50OjpkaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJv
bVBhcmVudDIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldp
dGhpblBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlz
aERvY3VtZW50TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3Jt
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0
b3J5SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb250ZXh0TWVudS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjpzaG93
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24p
OgorCisyMDE0LTEyLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisK
ICAgICAgICAgVXNlIFVzZXJEYXRhIGZvciBidW5kbGUgaW5pdGlhbGl6YXRpb24gZGF0YQogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5OTg5CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZDViMzc0M2ZmYzc5
ZjViY2VhYTliOTAyYjNkZjBjYTFmZDc2NjJmYS4uNzdlOWNkZmE3YTc2ZDBjNjZhMDRhYTFjOGM1
NGJiMDAzYTc4OTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTEwMTYsMTUgKzEwMTYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdChXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBhZGRlZCwgVmVjdG8KICAgICBt
X3BhZ2VMb2FkU3RhdGUuc2V0Q2FuR29Gb3J3YXJkKHRyYW5zYWN0aW9uLCBtX2JhY2tGb3J3YXJk
TGlzdC0+Zm9yd2FyZEl0ZW0oKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0odWludDY0X3QgaXRlbUlELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBk
ZWNvZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh1
aW50NjRfdCBpdGVtSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSZWZQdHI8
QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIg
bWVzc2FnZURlY29kZXIodXNlckRhdGEsIHByb2Nlc3MoKSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtZXNzYWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiBpdGVtID0gbV9wcm9jZXNzLT53ZWJCYWNrRm9yd2FyZEl0ZW0oaXRl
bUlEKSkKLSAgICAgICAgbV9sb2FkZXJDbGllbnQtPndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bSh0aGlzLCBpdGVtLCB1c2VyRGF0YS5nZXQoKSk7CisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT53
aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0odGhpcywgaXRlbSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIGJvb2wg
V2ViUGFnZVByb3h5OjpzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3Qo
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSkKQEAgLTI1NzQsMTcgKzI1NjksMTIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCkKICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRGVzdHJveU5hdmlnYXRpb24odGhpcywgbmF2aWdh
dGlvbklEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgSVBDOjpNZXNzYWdlRGVj
b2RlciYgZGVjb2RlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKIHsKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRy
YW5zYWN0aW9uKCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVz
dFVSTCh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwot
ICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEs
IHByb2Nlc3MoKSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53
ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdF
X0NIRUNLX1VSTCh1cmwpOwpAQCAtMjU5NiwxNiArMjU4NiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYQogICAgIGZyYW1lLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCh1cmwpOwogCiAgICAg
bV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgbmF2aWdhdGlvbklELCB1
c2VyRGF0YS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUodGhpcywgZnJhbWUsIG5hdmlnYXRpb25JRCwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgdXJsLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVz
ZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIo
dXNlckRhdGEsIHByb2Nlc3MoKSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVj
b2RlcikpCi0gICAgICAgIHJldHVybjsKLQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAg
ICBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpOwpAQCAtMjYxOCwxNiArMjYwMywxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZgogICAgIGZyYW1lLT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQodXJsKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2Vz
KCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKHRoaXMsIGZyYW1lLCBuYXZpZ2F0aW9uSUQsIHVzZXJEYXRhLmdl
dCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodGhpcywgZnJhbWUsIG5hdmlnYXRpb25JRCwgbV9wcm9jZXNz
LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQogewotICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7Ci0gICAg
V2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcHJv
Y2VzcygpKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZy
YW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCkBAIC0yNjM5LDcgKzI2
MTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdgogICAgIGZyYW1lLT5kaWRGYWlsUHJvdmlz
aW9uYWxMb2FkKCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAg
IG1fbG9hZGVyQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUo
dGhpcywgZnJhbWUsIG5hdmlnYXRpb25JRCwgZXJyb3IsIHVzZXJEYXRhLmdldCgpKTsKKyAgICBt
X2xvYWRlckNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKHRo
aXMsIGZyYW1lLCBuYXZpZ2F0aW9uSUQsIGVycm9yLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpCkBAIC0yNjU1LDEzICsyNjM1LDgg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpCiAgICAg
fQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8s
IElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29t
bWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRl
ciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHByb2Nlc3MoKSk7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsKLQogICAgIFdl
YkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBN
RVNTQUdFX0NIRUNLKGZyYW1lKTsKIApAQCAtMjcxMiwyOSArMjY4NywxOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRAogICAgICAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IDE7CiAKICAgICBtX3Bh
Z2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDb21t
aXRMb2FkRm9yRnJhbWUodGhpcywgZnJhbWUsIG5hdmlnYXRpb25JRCwgdXNlckRhdGEuZ2V0KCkp
OworICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDb21taXRMb2FkRm9yRnJhbWUodGhpcywgZnJhbWUs
IG5hdmlnYXRpb25JRCwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJE
YXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUmVmUHRyPEFQSTo6
T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3Nh
Z2VEZWNvZGVyKHVzZXJEYXRhLCBwcm9jZXNzKCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bWVzc2FnZURlY29kZXIpKQotICAgICAgICByZXR1cm47Ci0KICAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZSk7CiAKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUodGhpcywgZnJhbWUsIG5hdmlnYXRpb25JRCwgdXNlckRhdGEuZ2V0KCkpOworICAgIG1fbG9h
ZGVyQ2xpZW50LT5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgbmF2
aWdhdGlvbklELCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIElQQzo6TWVz
c2FnZURlY29kZXImIGRlY29kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7Ci0g
ICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwg
cHJvY2VzcygpKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKLSAg
ICAgICAgcmV0dXJuOwotCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndl
YkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCkBAIC0yNzQ3LDE5
ICsyNzEyLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAgICAgZnJhbWUtPmRpZEZpbmlz
aExvYWQoKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9s
b2FkZXJDbGllbnQtPmRpZEZpbmlzaExvYWRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgbmF2aWdhdGlv
bklELCB1c2VyRGF0YS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpbmlzaExvYWRG
b3JGcmFtZSh0aGlzLCBmcmFtZSwgbmF2aWdhdGlvbklELCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIGlmIChpc01h
aW5GcmFtZSkKICAgICAgICAgbV9wYWdlQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JNYWluRnJhbWUo
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
YWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
LSAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVz
c2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHByb2Nlc3MoKSk7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsKLQogICAg
IFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAg
ICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIApAQCAtMjc3MywxNiArMjczMywxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsCiAgICAgZnJhbWUtPmRpZEZhaWxMb2FkKCk7CiAKICAgICBtX3BhZ2VM
b2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGYWlsTG9h
ZFdpdGhFcnJvckZvckZyYW1lKHRoaXMsIGZyYW1lLCBuYXZpZ2F0aW9uSUQsIGVycm9yLCB1c2Vy
RGF0YS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUodGhpcywgZnJhbWUsIG5hdmlnYXRpb25JRCwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBJUEM6Ok1lc3NhZ2VEZWNvZGVy
JiBkZWNvZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25G
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90
IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRh
dGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2Vy
RGF0YSwgcHJvY2VzcygpKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVy
KSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nl
c3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1F
U1NBR0VfQ0hFQ0tfVVJMKHVybCk7CkBAIC0yNzk5LDE5ICsyNzU0LDE0IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwogCiAgICAg
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUgPSBzdGF0aWNfY2FzdDxT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZT4ob3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUodGhpcywgZnJhbWUsIG5hdmlnYXRpb25JRCwgbmF2aWdhdGlvblR5cGUsIHVzZXJEYXRhLmdl
dCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZy
YW1lKHRoaXMsIGZyYW1lLCBuYXZpZ2F0aW9uSUQsIG5hdmlnYXRpb25UeXBlLCBtX3Byb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAog
ICAgIGlmIChpc01haW5GcmFtZSkKICAgICAgICAgbV9wYWdlQ2xpZW50LmRpZFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25Gb3JNYWluRnJhbWUobmF2aWdhdGlvblR5cGUpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUmVmUHRyPEFQ
STo6T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1l
c3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwcm9jZXNzKCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobWVzc2FnZURlY29kZXIpKQotICAgICAgICByZXR1cm47Ci0KICAgICBXZWJGcmFtZVByb3h5
KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVD
SyhmcmFtZSk7CiAKQEAgLTI4MjMsNjggKzI3NzMsNDMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdGl0
bGUKICAgICBmcmFtZS0+ZGlkQ2hhbmdlVGl0bGUodGl0bGUpOwogICAgIAogICAgIG1fcGFnZUxv
YWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVU
aXRsZUZvckZyYW1lKHRoaXMsIHRpdGxlLCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOworICAgIG1f
bG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh0aGlzLCB0aXRsZSwgZnJhbWUs
IG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7
Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0
YSwgcHJvY2VzcygpKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3Mt
PndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgbV9s
b2FkZXJDbGllbnQtPmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRh
LmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh0aGlz
LCBmcmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKIHsKLSAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRV
c2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHByb2Nlc3MoKSk7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsK
LQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEu
Z2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkpCiAgICAgICAgIG1fcGFnZUNsaWVudC5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JNYWluRnJhbWUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZExheW91dCh1aW50
MzJfdCBsYXlvdXRNaWxlc3RvbmVzLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9p
ZCBXZWJQYWdlUHJveHk6OmRpZExheW91dCh1aW50MzJfdCBsYXlvdXRNaWxlc3RvbmVzLCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0
YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJE
YXRhLCBwcm9jZXNzKCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkTGF5b3V0KHRoaXMs
IHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpLCB1c2VyRGF0
YS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZExheW91dCh0aGlzLCBzdGF0aWNfY2Fz
dDxMYXlvdXRNaWxlc3RvbmVzPihsYXlvdXRNaWxlc3RvbmVzKSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJ
RCwgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewotICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7Ci0gICAgV2Vi
Q29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcHJvY2Vz
cygpKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1l
KGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgbV9sb2FkZXJDbGll
bnQtPmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh0aGlzLCBmcmFtZSwgdXNlckRhdGEuZ2V0
KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodGhp
cywgZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIElQQzo6TWVzc2FnZURlY29kZXIm
IGRlY29kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHByb2Nlc3MoKSk7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsKLQogICAgIFdl
YkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBN
RVNTQUdFX0NIRUNLKGZyYW1lKTsKIApAQCAtMjg5MiwxNiArMjgxNywxMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIElQQzo6TWVzcwogICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3Vy
ZUNvbnRlbnQodHJhbnNhY3Rpb24pOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5n
ZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZy
YW1lKHRoaXMsIGZyYW1lLCB1c2VyRGF0YS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPmRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRh
OwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRh
dGEsIHByb2Nlc3MoKSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2Rlcikp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNz
LT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIApAQCAtMjkw
OSwyMCArMjgyOSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgSVBDOjpNZXNzYWdlRAogICAgIG1fcGFnZUxvYWRT
dGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwogCiAgICAg
bV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlk
UnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsK
KyAgICBtX2xvYWRlckNsaWVudC0+ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodGhpcywg
ZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGV0ZWN0WFNTRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0
YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJE
YXRhLCBwcm9jZXNzKCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIp
KQotICAgICAgICByZXR1cm47Ci0KICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vz
cy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBt
X2xvYWRlckNsaWVudC0+ZGlkRGV0ZWN0WFNTRm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRh
LmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+ZGlkRGV0ZWN0WFNTRm9yRnJhbWUodGhpcywg
ZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVEaWRCZWNvbWVGcmFt
ZVNldCh1aW50NjRfdCBmcmFtZUlELCBib29sIHZhbHVlKQpAQCAtMjkzNSwxMyArMjg1MCw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2V0KHVpbnQ2NF90IGZyYW1l
SUQsIGJvb2wgdmFsdWUpCiAgICAgICAgIG1fZnJhbWVTZXRMYXJnZXN0RnJhbWUgPSB2YWx1ZSA/
IG1fbWFpbkZyYW1lIDogMDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlciwgYm9vbCYgcmVjZWl2ZWRQ
b2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBuZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90JiBwb2xpY3lB
Y3Rpb24sIHVpbnQ2NF90JiBkb3dubG9hZElEKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiByZWNlaXZl
ZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QmIHBvbGlj
eUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpCiB7Ci0gICAgUmVmUHRyPEFQSTo6T2JqZWN0
PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNv
ZGVyKHVzZXJEYXRhLCBwcm9jZXNzKCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2Fn
ZURlY29kZXIpKQotICAgICAgICByZXR1cm47Ci0KICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9w
YWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKICAgICBpZiAocmVxdWVzdC51cmwoKSAhPSBt
X3BhZ2VMb2FkU3RhdGUucGVuZGluZ0FQSVJlcXVlc3RVUkwoKSkKQEAgLTI5NzMsNyArMjg4Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hCiAgICAgbV9pbkRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24gPSB0cnVlOwogICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rp
b25Jc1ZhbGlkID0gZmFsc2U7CiAKLSAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbih0aGlzLCBmcmFtZSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdp
bmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgcmVxdWVzdCwgV1RGOjptb3ZlKGxpc3RlbmVy
KSwgdXNlckRhdGEuZ2V0KCkpOworICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKHRoaXMsIGZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2lu
YXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0LCByZXF1ZXN0LCBXVEY6Om1vdmUobGlzdGVuZXIp
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKIAogICAgIG1faW5EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gZmFs
c2U7CiAKQEAgLTI5ODUsMjkgKzI4OTUsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmEKICAg
ICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBk
ZWNvZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKIHsKLSAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRV
c2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHByb2Nlc3MoKSk7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsK
LQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChyZXF1
ZXN0LnVybCgpKTsKIAogICAgIFJlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxp
c3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5lcklEKTsKIAot
ICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odGhpcywg
ZnJhbWUsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUsIFdURjo6bW92
ZShsaXN0ZW5lciksIHVzZXJEYXRhLmdldCgpKTsKKyAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHRoaXMsIGZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBXVEY6Om1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01J
TUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
Ci0gICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1l
c3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwcm9jZXNzKCkpOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQotICAgICAgICByZXR1cm47Ci0KICAg
ICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAg
ICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocmVxdWVzdC51
cmwoKSk7CkBAIC0zMDE1LDEwICsyOTE1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZXNvdXJjZVJlc3BvCiAK
ICAgICBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBsaXN0ZW5lciA9IGZyYW1l
LT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkobGlzdGVuZXJJRCk7CiAKLSAgICBtX3BvbGljeUNs
aWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodGhpcywgZnJhbWUsIHJlc3BvbnNlLCByZXF1
ZXN0LCBjYW5TaG93TUlNRVR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZXJEYXRhLmdldCgp
KTsKKyAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodGhpcywgZnJh
bWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIFdURjo6bW92ZShsaXN0ZW5l
ciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBib29sJiBy
ZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRv
d25sb2FkSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2VpdmVkUG9s
aWN5QWN0aW9uLCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJRCkK
IHsKICAgICBBU1NFUlQoIW1faW5EZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMpOwogCkBAIC0z
MDI2LDcgKzI5MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlUgogICAgIG1fZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID0gJnJlcXVlc3Q7CiAgICAgbV9zeW5jTWltZVR5cGVQb2xp
Y3lBY3Rpb25Jc1ZhbGlkID0gZmFsc2U7CiAKLSAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShm
cmFtZUlELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBsaXN0ZW5lcklELCBk
ZWNvZGVyKTsKKyAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShmcmFtZUlELCByZXNwb25zZSwg
cmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiAKICAgICBt
X2luRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jID0gZmFsc2U7CiAgICAgbV9kZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVJlcXVlc3QgPSAwOwpAQCAtMzAzOSwyOCArMjkzOSwxOCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFJlc291cmNlUgogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVuYWJsZVRv
SW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnVu
YWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUmVmUHRyPEFQSTo6
T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3Nh
Z2VEZWNvZGVyKHVzZXJEYXRhLCBwcm9jZXNzKCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bWVzc2FnZURlY29kZXIpKQotICAgICAgICByZXR1cm47Ci0gICAgCiAgICAgV2ViRnJhbWVQcm94
eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hF
Q0soZnJhbWUpOwogCi0gICAgbV9wb2xpY3lDbGllbnQtPnVuYWJsZVRvSW1wbGVtZW50UG9saWN5
KHRoaXMsIGZyYW1lLCBlcnJvciwgdXNlckRhdGEuZ2V0KCkpOworICAgIG1fcG9saWN5Q2xpZW50
LT51bmFibGVUb0ltcGxlbWVudFBvbGljeSh0aGlzLCBmcmFtZSwgZXJyb3IsIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQog
CiAvLyBGb3JtQ2xpZW50CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsU3VibWl0Rm9ybSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJ
RCwgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3aWxs
U3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJlZlB0
cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rl
ciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcHJvY2VzcygpKTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgV2ViRnJhbWVQ
cm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0Vf
Q0hFQ0soZnJhbWUpOwogCkBAIC0zMDY4LDcgKzI5NTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
d2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwg
Y29ucwogICAgIE1FU1NBR0VfQ0hFQ0soc291cmNlRnJhbWUpOwogCiAgICAgUmVmUHRyPFdlYkZv
cm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBGb3JtU3Vi
bWlzc2lvbkxpc3RlbmVyUHJveHkobGlzdGVuZXJJRCk7Ci0gICAgaWYgKCFtX2Zvcm1DbGllbnQt
PndpbGxTdWJtaXRGb3JtKHRoaXMsIGZyYW1lLCBzb3VyY2VGcmFtZSwgdGV4dEZpZWxkVmFsdWVz
LCB1c2VyRGF0YS5nZXQoKSwgbGlzdGVuZXIuZ2V0KCkpKQorICAgIGlmICghbV9mb3JtQ2xpZW50
LT53aWxsU3VibWl0Rm9ybSh0aGlzLCBmcmFtZSwgc291cmNlRnJhbWUsIHRleHRGaWVsZFZhbHVl
cywgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSwgbGlzdGVuZXIuZ2V0KCkpKQogICAgICAgICBsaXN0ZW5lci0+Y29udGludWVTdWJt
aXNzaW9uKCk7CiB9CiAKQEAgLTMyMTksNDggKzMxMDksMjggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIG1fdWlDbGllbnQtPnNldFN0
YXR1c1RleHQodGhpcywgdGV4dCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojptb3VzZURpZE1v
dmVPdmVyRWxlbWVudChjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBoaXRUZXN0UmVzdWx0
RGF0YSwgdWludDMyX3Qgb3BhcXVlTW9kaWZpZXJzLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNv
ZGVyKQordm9pZCBXZWJQYWdlUHJveHk6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IFdl
YkhpdFRlc3RSZXN1bHQ6OkRhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCB1aW50MzJfdCBvcGFxdWVN
b2RpZmllcnMsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSZWZQdHI8QVBJOjpP
YmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2Fn
ZURlY29kZXIodXNlckRhdGEsIHByb2Nlc3MoKSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSht
ZXNzYWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsKLQogICAgIG1fbGFzdE1vdXNlTW92ZUhp
dFRlc3RSZXN1bHQgPSBXZWJIaXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdERhdGEp
OwogCiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMgPSBzdGF0aWNfY2FzdDxXZWJF
dmVudDo6TW9kaWZpZXJzPihvcGFxdWVNb2RpZmllcnMpOwogCi0gICAgbV91aUNsaWVudC0+bW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQodGhpcywgaGl0VGVzdFJlc3VsdERhdGEsIG1vZGlmaWVycywg
dXNlckRhdGEuZ2V0KCkpOworICAgIG1fdWlDbGllbnQtPm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
KHRoaXMsIGhpdFRlc3RSZXN1bHREYXRhLCBtb2RpZmllcnMsIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzKGNvbnN0
IEludFBvaW50JiBtb3VzZURvd25Qb3NpdGlvbiwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6RGF0
YSYgaGl0VGVzdFJlc3VsdERhdGEsIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzKGNv
bnN0IEludFBvaW50JiBtb3VzZURvd25Qb3NpdGlvbiwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6
RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHByb2Nlc3MoKSk7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
dWlDbGllbnQtPmRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcyh0aGlzLCBt
b3VzZURvd25Qb3NpdGlvbiwgaGl0VGVzdFJlc3VsdERhdGEsIHVzZXJEYXRhLmdldCgpKTsKKyAg
ICBtX3VpQ2xpZW50LT5kaWRCZWdpblRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3ModGhp
cywgbW91c2VEb3duUG9zaXRpb24sIGhpdFRlc3RSZXN1bHREYXRhLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKElQQzo6TWVzc2FnZURl
Y29kZXImIGRlY29kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjb2duaXplTG9uZ01vdXNl
UHJlc3MoY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJlZlB0cjxBUEk6Ok9iamVj
dD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVj
b2Rlcih1c2VyRGF0YSwgcHJvY2VzcygpKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3Nh
Z2VEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV91aUNsaWVudC0+ZGlkUmVjb2du
aXplTG9uZ01vdXNlUHJlc3ModGhpcywgdXNlckRhdGEuZ2V0KCkpOworICAgIG1fdWlDbGllbnQt
PmRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKHRoaXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcyhJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbFRyYWNr
aW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MoY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewot
ICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNz
YWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcHJvY2VzcygpKTsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV91aUNsaWVudC0+ZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcyh0aGlz
LCB1c2VyRGF0YS5nZXQoKSk7CisgICAgbV91aUNsaWVudC0+ZGlkQ2FuY2VsVHJhY2tpbmdQb3Rl
bnRpYWxMb25nTW91c2VQcmVzcyh0aGlzLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmNvbm5lY3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCkBAIC0zODc5
LDIxICszNzQ5LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlUG9wdXBNZW51KCkKIH0KIAog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0
TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDb250ZXh0TWVudUNvbnRl
eHREYXRhJiBjb250ZXh0TWVudUNvbnRleHREYXRhLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4mIHByb3Bvc2VkSXRlbXMsIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51
TG9jYXRpb24sIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHRNZW51Q29udGV4
dERhdGEsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRJdGVt
cywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGludGVybmFsU2hvd0NvbnRleHRN
ZW51KG1lbnVMb2NhdGlvbiwgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgcHJvcG9zZWRJdGVtcywg
Q29udGV4dE1lbnVDbGllbnRFbGlnaWJpbGl0eTo6RWxpZ2libGVGb3JDbGllbnQsICZkZWNvZGVy
KTsKKyAgICBpbnRlcm5hbFNob3dDb250ZXh0TWVudShtZW51TG9jYXRpb24sIGNvbnRleHRNZW51
Q29udGV4dERhdGEsIHByb3Bvc2VkSXRlbXMsIENvbnRleHRNZW51Q2xpZW50RWxpZ2liaWxpdHk6
OkVsaWdpYmxlRm9yQ2xpZW50LCB1c2VyRGF0YSk7CiAgICAgCiAgICAgLy8gTm8gbWF0dGVyIHRo
ZSByZXN1bHQgb2YgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUsIGFsd2F5cyBub3RpZnkgdGhlIFdl
YlByb2Nlc3MgdGhhdCB0aGUgbWVudSBpcyBoaWRkZW4gc28gaXQgc3RhcnRzIGhhbmRsaW5nIG1v
dXNlIGV2ZW50cyBhZ2Fpbi4KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNvbnRleHRNZW51SGlkZGVuKCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9jYXRpb24sIGNv
bnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmIGNvbnRleHRNZW51Q29udGV4dERhdGEsIGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRJdGVtcywgQ29udGV4dE1l
bnVDbGllbnRFbGlnaWJpbGl0eSBjbGllbnRFbGlnaWJpbGl0eSwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciogZGVjb2RlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShj
b25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRh
JiBjb250ZXh0TWVudUNvbnRleHREYXRhLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVt
RGF0YT4mIHByb3Bvc2VkSXRlbXMsIENvbnRleHRNZW51Q2xpZW50RWxpZ2liaWxpdHkgY2xpZW50
RWxpZ2liaWxpdHksIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSZWZQdHI8QVBJ
OjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVz
c2FnZURlY29kZXIodXNlckRhdGEsIHByb2Nlc3MoKSk7Ci0gICAgaWYgKGRlY29kZXIgJiYgIWRl
Y29kZXItPmRlY29kZShtZXNzYWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsKLQogICAgIG1f
YWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YSA9IGNvbnRleHRNZW51Q29udGV4dERhdGE7CiAK
ICAgICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQuaGlkZUNvbnRleHRNZW51KHRoaXMpICYmIG1f
YWN0aXZlQ29udGV4dE1lbnUpIHsKQEAgLTM5MTcsNyArMzc4Miw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9u
LCBjb25zdCBDCiAgICAgICAgIGFza0NsaWVudFRvQ2hhbmdlTWVudSA9IGZhbHNlOwogI2VuZGlm
CiAKLSAgICBpZiAoYXNrQ2xpZW50VG9DaGFuZ2VNZW51ICYmIG1fY29udGV4dE1lbnVDbGllbnQu
Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KHRoaXMsIHByb3Bvc2VkSXRlbXMsIGl0ZW1z
LCBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCksIHVzZXJEYXRh
LmdldCgpKSkKKyAgICBpZiAoYXNrQ2xpZW50VG9DaGFuZ2VNZW51ICYmIG1fY29udGV4dE1lbnVD
bGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KHRoaXMsIHByb3Bvc2VkSXRlbXMs
IGl0ZW1zLCBjb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCksIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpKQogICAgICAgICB1c2VQcm9wb3NlZEl0ZW1zID0gZmFsc2U7CiAKICAgICBjb25zdCBWZWN0
b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zVG9TaG93ID0gdXNlUHJvcG9zZWRJdGVt
cyA/IHByb3Bvc2VkSXRlbXMgOiBpdGVtczsKQEAgLTU0MjYsMTQgKzUyOTEsOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Zm9jdXNBbmRTZWxlY3RMYXN0QWN0aW9uTWVudUhpdFRlc3RSZXN1bHQoKQog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9jdXNBbmRTZWxlY3RMYXN0
QWN0aW9uTWVudUhpdFRlc3RSZXN1bHQoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0KGNvbnN0IEFjdGlvbk1lbnVIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1BY3Rpb25NZW51SGl0
VGVzdChjb25zdCBBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBib29sIGZvckltbWVk
aWF0ZUFjdGlvbiwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJlZlB0cjxBUEk6
Ok9iamVjdD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNz
YWdlRGVjb2Rlcih1c2VyRGF0YSwgcHJvY2VzcygpKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG1lc3NhZ2VEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wYWdlQ2xpZW50LmRp
ZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChyZXN1bHQsIGZvckltbWVkaWF0ZUFjdGlvbiwgdXNl
ckRhdGEuZ2V0KCkpOworICAgIG1fcGFnZUNsaWVudC5kaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRl
c3QocmVzdWx0LCBmb3JJbW1lZGlhdGVBY3Rpb24sIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKHZvaWQgKF5jb21w
bGV0aW9uSGFuZGxlcikoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCAwMzc4YzgyMjg3ZmFjYWE1NmI1NTM2ZGEwMjgzMTQxNGUxOTlmNTNkLi5kZGY0ZjQ5OThj
MzI5OWU3M2ExYTkzOTZhYmJlYzUwMzg5NDk4MjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0xNTcsNiArMTU3LDcgQEAgY2xhc3MgUGFnZUNsaWVudDsKIGNs
YXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eTsKIGNsYXNzIFN0cmluZ1BhaXJWZWN0b3I7CitjbGFzcyBVc2VyRGF0YTsK
IGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZpc2l0ZWRMaW5rUHJvdmlkZXI7CiBjbGFzcyBX
ZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0zMzMsNyArMzM0LDcgQEAgcHVibGljOgogICAgIHVpbnQ2
NF90IGdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSopOwogICAgIHZv
aWQgdHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VCYWNrRm9y
d2FyZExpc3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYWRkZWRJdGVtLCBWZWN0b3I8UmVmUHRy
PFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiByZW1vdmVkKTsKLSAgICB2b2lkIHdpbGxHb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbSh1aW50NjRfdCBpdGVtSUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsK
KyAgICB2b2lkIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh1aW50NjRfdCBpdGVtSUQsIGNv
bnN0IFVzZXJEYXRhJik7CiAKICAgICBib29sIHNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRM
aXN0SXRlbUluTGlzdChXZWJCYWNrRm9yd2FyZExpc3RJdGVtKik7CiAKQEAgLTk5NiwyMiArOTk3
LDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDcmVhdGVNYWluRnJhbWUodWludDY0X3QgZnJh
bWVJRCk7CiAgICAgdm9pZCBkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKIAot
ICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHVucmVhY2hhYmxlVVJMLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYsIElQQzo6TWVzc2FnZURl
Y29kZXImKTsKLSAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJf
dCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIElQQzo6TWVzc2FnZURlY29k
ZXImKTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2b2lkIGRp
ZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwot
ICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgc2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUsIGNvbnN0IFN0cmluZyYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2b2lkIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwotICAgIHZvaWQgZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgSVBDOjpNZXNz
YWdlRGVjb2RlciYpOwotICAgIHZvaWQgZGlkTGF5b3V0KHVpbnQzMl90IGxheW91dE1pbGVzdG9u
ZXMsIElQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhp
ZXJhcmNoeSh1aW50NjRfdCBmcmFtZUlELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgdm9p
ZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgSVBD
OjpNZXNzYWdlRGVjb2RlciYpOwotICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwotICAgIHZvaWQgZGlk
RGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgSVBDOjpNZXNzYWdlRGVjb2RlciYp
OworICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmLCBjb25zdCBVc2VyRGF0YSYp
OworICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRU
eXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBVc2VyRGF0YSYpOwor
ICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkRmlu
aXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQz
Ml90IHNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVc2Vy
RGF0YSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZpcnN0TGF5
b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lk
IGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRMYXlvdXQodWludDMyX3QgbGF5b3V0TWls
ZXN0b25lcywgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhp
ZXJhcmNoeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFVz
ZXJEYXRhJik7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGZyYW1lRGlk
QmVjb21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCk7CiAgICAgdm9pZCBkaWRTdGFy
dFByb2dyZXNzKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhkb3VibGUpOwpAQCAtMTAy
MCwxMyArMTAyMSwxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlv
bih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBuZXdOYXZpZ2F0
aW9uSUQsIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBkb3dubG9hZElEKTsKLSAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIElQQzo6TWVzc2FnZURlY29kZXImLCBib29sJiByZWNl
aXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25s
b2FkSUQpOwotICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIElQQzo6TWVzc2FnZURlY29kZXImKTsK
KyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rp
b24sIHVpbnQ2NF90JiBuZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIHVp
bnQ2NF90JiBkb3dubG9hZElEKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29s
IGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBi
b29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0
X3QmIGRvd25sb2FkSUQpOworICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRh
Jik7CiAKLSAgICB2b2lkIHdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHNvdXJjZUZyYW1lSUQsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYg
dGV4dEZpZWxkVmFsdWVzLCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jik7CisgICAgdm9pZCB3aWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBz
b3VyY2VGcmFtZUlELCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRl
eHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKIAog
ICAgIC8vIEhpc3RvcnkgY2xpZW50CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgdWludDY0X3QgZnJhbWVJRCk7CkBA
IC0xMDQzLDExICsxMDQ0LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJv
bXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZlB0
cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpEZWxheWVkUmVw
bHk+KTsKICAgICB2b2lkIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoYm9vbCYgcmVzdWx0KTsK
ICAgICB2b2lkIHNldFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBtb3VzZURp
ZE1vdmVPdmVyRWxlbWVudChjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBoaXRUZXN0UmVz
dWx0RGF0YSwgdWludDMyX3QgbW9kaWZpZXJzLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAg
dm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRh
JiBoaXRUZXN0UmVzdWx0RGF0YSwgdWludDMyX3QgbW9kaWZpZXJzLCBjb25zdCBVc2VyRGF0YSYp
OwogCi0gICAgdm9pZCBkaWRCZWdpblRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRG93blBvc2l0aW9uLCBjb25zdCBXZWJIaXRUZXN0
UmVzdWx0OjpEYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwot
ICAgIHZvaWQgZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MoSVBDOjpNZXNzYWdlRGVjb2RlciYp
OwotICAgIHZvaWQgZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcyhJUEM6
Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBkaWRCZWdpblRyYWNraW5nUG90ZW50aWFsTG9u
Z01vdXNlUHJlc3MoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRG93blBvc2l0aW9uLCBj
b25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgY29uc3QgVXNl
ckRhdGEmKTsKKyAgICB2b2lkIGRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKGNvbnN0IFVzZXJE
YXRhJik7CisgICAgdm9pZCBkaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNz
KGNvbnN0IFVzZXJEYXRhJik7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAg
ICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVn
aW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc1BhZ2VVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmlu
Zyk7CkBAIC0xMTYyLDggKzExNjMsOCBAQCBwcml2YXRlOgogICAgICAgICBFbGlnaWJsZUZvckNs
aWVudCwKICAgICAgICAgTm90RWxpZ2libGVGb3JDbGllbnQKICAgICB9OwotICAgIHZvaWQgc2hv
d0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0
IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVt
RGF0YT4mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgdm9pZCBpbnRlcm5hbFNob3dDb250
ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDb250
ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+
JiwgQ29udGV4dE1lbnVDbGllbnRFbGlnaWJpbGl0eSwgSVBDOjpNZXNzYWdlRGVjb2RlciopOwor
ICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9j
YXRpb24sIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YT4mLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgaW50ZXJuYWxT
aG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29u
c3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0
ZW1EYXRhPiYsIENvbnRleHRNZW51Q2xpZW50RWxpZ2liaWxpdHksIGNvbnN0IFVzZXJEYXRhJik7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKQEAgLTEy
ODAsNyArMTI4MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEdldFRhcEhpZ2hsaWdodEdl
b21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3Is
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBnZW9tZXRyaWVzLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BS
aWdodFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpOwogCi0gICAgdm9pZCBzdGFy
dEFzc2lzdGluZ05vZGUoY29uc3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mLCBib29sIHVzZXJJ
c0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91c05vZGUsIElQQzo6TWVzc2FnZURlY29kZXIm
KTsKKyAgICB2b2lkIHN0YXJ0QXNzaXN0aW5nTm9kZShjb25zdCBBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbiYsIGJvb2wgdXNlcklzSW50ZXJhY3RpbmcsIGJvb2wgYmx1clByZXZpb3VzTm9kZSwgY29u
c3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0b3BBc3Npc3RpbmdOb2RlKCk7CiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQpAQCAtMTMzOSw3ICsxMzQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZp
ZXdEaWRFbnRlcldpbmRvdygpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgZGlkUGVy
Zm9ybUFjdGlvbk1lbnVIaXRUZXN0KGNvbnN0IEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0JiwgYm9v
bCBmb3JJbW1lZGlhdGVBY3Rpb24sIElQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lkIGRp
ZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChjb25zdCBBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCYs
IGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uLCBjb25zdCBVc2VyRGF0YSYpOwogI2VuZGlmCiAKICAg
ICBQYWdlQ2xpZW50JiBtX3BhZ2VDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzMDNkZDAxM2U5OTZiNTJiNTFiNTkx
Y2RmYWJiZjZmZmNkNThlYmYwLi4zOGE1MjRlYzY4NzU1MzMyMDI3NDMyZDFkODk2YzVlZTE0ODU3
ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTI5LDExICsyOSwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIFJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBtZXNzYWdl
KSAtPiAoYm9vbCByZXN1bHQpIERlbGF5ZWQKICAgICBSdW5KYXZhU2NyaXB0UHJvbXB0KHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVmYXVsdFZhbHVlKSAtPiAoU3Ry
aW5nIHJlc3VsdCkgRGVsYXllZAogICAgIFNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKSAtPiAo
Ym9vbCBzaG91bGRJbnRlcnVwdCkKLSAgICBNb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJLaXQ6
OldlYkhpdFRlc3RSZXN1bHQ6OkRhdGEgaGl0VGVzdFJlc3VsdERhdGEsIHVpbnQzMl90IG1vZGlm
aWVycywgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkg
VmFyaWFkaWMKKyAgICBNb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJLaXQ6OldlYkhpdFRlc3RS
ZXN1bHQ6OkRhdGEgaGl0VGVzdFJlc3VsdERhdGEsIHVpbnQzMl90IG1vZGlmaWVycywgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAotICAgIERpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25n
TW91c2VQcmVzcyhXZWJDb3JlOjpJbnRQb2ludCBtb3VzZURvd25Qb3NpdGlvbiwgV2ViS2l0OjpX
ZWJIaXRUZXN0UmVzdWx0OjpEYXRhIGhpdFRlc3RSZXN1bHREYXRhLCBXZWJLaXQ6OkluamVjdGVk
QnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwotICAgIERpZFJlY29n
bml6ZUxvbmdNb3VzZVByZXNzKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29k
ZXIgdXNlckRhdGEpIFZhcmlhZGljCi0gICAgRGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25n
TW91c2VQcmVzcyhXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJE
YXRhKSBWYXJpYWRpYworICAgIERpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVz
cyhXZWJDb3JlOjpJbnRQb2ludCBtb3VzZURvd25Qb3NpdGlvbiwgV2ViS2l0OjpXZWJIaXRUZXN0
UmVzdWx0OjpEYXRhIGhpdFRlc3RSZXN1bHREYXRhLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQorICAgIERpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCisgICAgRGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcyhXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAg
ICAgVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IHBsdWdpblVuYXZhaWxh
YmlsaXR5UmVhc29uLCBTdHJpbmcgbWltZVR5cGUsIFN0cmluZyBwbHVnaW5VUkxTdHJpbmcsIFN0
cmluZyBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3RyaW5n
LCBTdHJpbmcgcGFnZVVSTFN0cmluZykKQEAgLTExNCwxMCArMTE0LDEwIEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBi
b29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkgVmFy
aWFkaWMKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIC0+IChib29sIHJlY2VpdmVkUG9saWN5
QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IHBvbGljeUFjdGlvbiwg
dWludDY0X3QgZG93bmxvYWRJRCkgVmFyaWFkaWMKLSAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OkluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwotICAgIFVuYWJs
ZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgZXJyb3IsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRh
dGEpICBWYXJpYWRpYworICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBm
cmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChib29sIHJlY2VpdmVkUG9saWN5
QWN0aW9uLCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpCisgICAg
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmln
YXRpb25BY3Rpb25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAt
PiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCB1
aW50NjRfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpCisgICAgRGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6Ok5h
dmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBVbmFibGVUb0ltcGxlbWVudFBvbGljeSh1
aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogCiAgICAgIyBQcm9ncmVzcyBtZXNzYWdlcwogICAgIERpZENoYW5n
ZVByb2dyZXNzKGRvdWJsZSB2YWx1ZSkKQEAgLTEzMSwyMiArMTMxLDIyIEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3QgZnJhbWVJRCkK
IAogICAgICMgRnJhbWUgbG9hZCBtZXNzYWdlcwotICAgIERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcg
dXJsLCBTdHJpbmcgdW5yZWFjaGFibGVVUkwsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVz
c2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCi0gICAgRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBTdHJpbmcgdXJsLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwotICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVu
Y29kZXIgdXNlckRhdGEpIFZhcmlhZGljCi0gICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29s
IGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCi0gICAgRGlkRmFpbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIg
dXNlckRhdGEpIFZhcmlhZGljCi0gICAgRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwotICAgIERpZEZpbmlzaExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCi0g
ICAgRGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwotICAgIERpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCi0g
ICAgRGlkTGF5b3V0KHVpbnQzMl90IHR5cGUsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVz
c2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCi0gICAgRGlkUmVtb3ZlRnJhbWVGcm9tSGll
cmFyY2h5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2Fn
ZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCi0gICAgRGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIHRpdGxlLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwotICAgIERpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwotICAgIERpZFJ1bkluc2VjdXJl
Q29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCi0gICAgRGlkRGV0ZWN0WFNTRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKLSAgICBEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJf
dCB0eXBlLCBTdHJpbmcgdXJsLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNv
ZGVyIHVzZXJEYXRhKSBWYXJpYWRpYworICAgIERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsLCBT
dHJpbmcgdW5yZWFjaGFibGVVUkwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsLCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKQorICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkQ29tbWl0TG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVU
eXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCisgICAgRGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQorICAgIERpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkRmly
c3RMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQorICAgIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkTGF5b3V0KHVpbnQz
Ml90IHR5cGUsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkUmVtb3ZlRnJhbWVG
cm9tSGllcmFyY2h5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEp
CisgICAgRGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIHRp
dGxlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQorICAgIERpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCB1aW50MzJfdCB0eXBlLCBTdHJpbmcgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKIAogICAg
IEZyYW1lRGlkQmVjb21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKQEAg
LTE2MSw3ICsxNjEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZEZpbmlz
aExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZSwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICAgICAjIEZvcm1zIG1lc3NhZ2VzCi0g
ICAgV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJ
RCwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHRleHRGaWVsZFZhbHVlcywgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rl
ciB1c2VyRGF0YSkgVmFyaWFkaWMKKyAgICBXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4gdGV4dEZpZWxkVmFsdWVzLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKQogCiAgICAgIyBDYWxsYmFjayBtZXNzYWdlcwogICAgIFZvaWRDYWxsYmFjayh1
aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtMjE4LDcgKzIxOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgQmFja0ZvcndhcmRCYWNrTGlzdENvdW50KCkgLT4gKGludDMyX3QgY291
bnQpCiAgICAgQmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KCkgLT4gKGludDMyX3QgY291bnQp
CiAgICAgQmFja0ZvcndhcmRDbGVhcigpCi0gICAgV2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KHVpbnQ2NF90IGl0ZW1JRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rl
ciB1c2VyRGF0YSkgVmFyaWFkaWMKKyAgICBXaWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0odWlu
dDY0X3QgaXRlbUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCiAgICAgIyBVbmRvL1Jl
ZG8gbWVzc2FnZXMKICAgICBSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyh1aW50NjRfdCBjb21t
YW5kSUQsIHVpbnQzMl90IGVkaXRBY3Rpb24pCkBAIC0yNDYsNyArMjQ2LDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgICMgQ29u
dGV4dE1lbnUgbWVzc2FnZXMKLSAgICBTaG93Q29udGV4dE1lbnUoV2ViQ29yZTo6SW50UG9pbnQg
bWVudUxvY2F0aW9uLCBXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGEgY29udGV4dE1lbnVD
b250ZXh0RGF0YSwgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gaXRlbXMs
IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlh
ZGljCisgICAgU2hvd0NvbnRleHRNZW51KFdlYkNvcmU6OkludFBvaW50IG1lbnVMb2NhdGlvbiwg
V2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhIGNvbnRleHRNZW51Q29udGV4dERhdGEsIFZl
Y3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+IGl0ZW1zLCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKQogI2VuZGlmCiAKICAgICAjIEF1dGhlbnRpY2F0aW9uIG1lc3NhZ2VzCkBA
IC0zNTcsNyArMzU3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBSZXN0b3Jl
UGFnZUNlbnRlckFuZFNjYWxlKFdlYkNvcmU6OkZsb2F0UG9pbnQgdW5vYnNjdXJlZENlbnRlciwg
ZG91YmxlIHNjYWxlKQogICAgIERpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3Qg
cmVxdWVzdElELCBXZWJDb3JlOjpDb2xvciBjb2xvciwgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVh
ZD4gZ2VvbWV0cmllcywgV2ViQ29yZTo6SW50U2l6ZSB0b3BMZWZ0UmFkaXVzLCBXZWJDb3JlOjpJ
bnRTaXplIHRvcFJpZ2h0UmFkaXVzLCBXZWJDb3JlOjpJbnRTaXplIGJvdHRvbUxlZnRSYWRpdXMs
IFdlYkNvcmU6OkludFNpemUgYm90dG9tUmlnaHRSYWRpdXMpCiAKLSAgICBTdGFydEFzc2lzdGlu
Z05vZGUoc3RydWN0IFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gaW5mb3JtYXRpb24s
IGJvb2wgdXNlcklzSW50ZXJhY3RpbmcsIGJvb2wgYmx1clByZXZpb3VzTm9kZSwgV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKKyAgICBT
dGFydEFzc2lzdGluZ05vZGUoc3RydWN0IFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24g
aW5mb3JtYXRpb24sIGJvb2wgdXNlcklzSW50ZXJhY3RpbmcsIGJvb2wgYmx1clByZXZpb3VzTm9k
ZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBTdG9wQXNzaXN0aW5nTm9kZSgpCiAg
ICAgTm90aWZ5UmV2ZWFsZWRTZWxlY3Rpb24oKQogCkBAIC00MjAsNiArNDIwLDYgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBJc1BsYXlpbmdBdWRpb0RpZENoYW5nZShib29sIG5l
d0lzUGxheWluZ0F1ZGlvKQogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIERpZFBlcmZvcm1BY3Rp
b25NZW51SGl0VGVzdChzdHJ1Y3QgV2ViS2l0OjpBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCByZXN1
bHQsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYworICAgIERpZFBlcmZvcm1BY3Rpb25NZW51
SGl0VGVzdChzdHJ1Y3QgV2ViS2l0OjpBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCByZXN1bHQsIGJv
b2wgZm9ySW1tZWRpYXRlQWN0aW9uLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CmluZGV4IDI4NWRiMTc0OTJmOGRmZDdkMjUxNmVlNjA5Njg3YjAwYzRhOTY5NzYuLjMzMmE5MzE3
YWVmYWYzNjRlYzc2ZjljMzkxNjRjMjE0ZTJkMWVhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC02NTIsNyArNjUyLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNob3dTZWxlY3Rpb25TZXJ2aWNlTWVudShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHNlbGVjdGlvbkEKICAgICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4g
aXRlbXM7CiAgICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YSBjb250ZXh0RGF0YShzZWxlY3Rpb25B
c1JURkQudmVjdG9yKCksIHRlbGVwaG9uZU51bWJlcnMsIGlzRWRpdGFibGUpOwogCi0gICAgaW50
ZXJuYWxTaG93Q29udGV4dE1lbnUocG9pbnQsIGNvbnRleHREYXRhLCBpdGVtcywgQ29udGV4dE1l
bnVDbGllbnRFbGlnaWJpbGl0eTo6Tm90RWxpZ2libGVGb3JDbGllbnQsIG51bGxwdHIpOworICAg
IGludGVybmFsU2hvd0NvbnRleHRNZW51KHBvaW50LCBjb250ZXh0RGF0YSwgaXRlbXMsIENvbnRl
eHRNZW51Q2xpZW50RWxpZ2liaWxpdHk6Ok5vdEVsaWdpYmxlRm9yQ2xpZW50LCBVc2VyRGF0YSgp
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNzRkYmRlN2Q5NDA0
OGU1YTU1YTExMmE2ODk0ZTU1ODdjYTcxZTJhYy4uYjM4YmY2MjZlMDA0YTcxMTBjNGE1NDFlMDA3
MGRmNDEwNDNiMDRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9u
RGF0YS5oIgogI2luY2x1ZGUgIlBhZ2VCYW5uZXIuaCIKKyNpbmNsdWRlICJVc2VyRGF0YS5oIgog
I2luY2x1ZGUgIldlYkNvbG9yQ2hvb3Nlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC01OTksNyArNjAwLDcgQEAgdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1
bHQmIGhpdFRlc3RSZXN1bHQKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIFdl
YkhpdFRlc3RSZXN1bHQ6OkRhdGEgd2ViSGl0VGVzdFJlc3VsdERhdGEoaGl0VGVzdFJlc3VsdCk7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50KHdlYkhpdFRlc3RSZXN1bHREYXRhLCBtb2RpZmllckZsYWdzLCBJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQod2ViSGl0
VGVzdFJlc3VsdERhdGEsIG1vZGlmaWVyRmxhZ3MsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwog
fQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdN
b3VzZVByZXNzKGNvbnN0IEludFBvaW50JiBtb3VzZURvd25Qb3NpdGlvbiwgY29uc3QgSGl0VGVz
dFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkKQEAgLTYxMSw3ICs2MTIsNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6ZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzKGNvbnN0IElu
dFBvaW50JiBtbwogICAgIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIFdlYkhp
dFRlc3RSZXN1bHQ6OkRhdGEgd2ViSGl0VGVzdFJlc3VsdERhdGEoaGl0VGVzdFJlc3VsdCk7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEJlZ2luVHJhY2tpbmdQ
b3RlbnRpYWxMb25nTW91c2VQcmVzcyhtb3VzZURvd25Qb3NpdGlvbiwgd2ViSGl0VGVzdFJlc3Vs
dERhdGEsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRCZWdpblRyYWNr
aW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MobW91c2VEb3duUG9zaXRpb24sIHdlYkhpdFRlc3RS
ZXN1bHREYXRhLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaGFyZWQoKS50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OmRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKCkKQEAgLTYyMiw3ICs2MjMsNyBAQCB2
b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MoKQogICAgIG1f
cGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNz
KG1fcGFnZSwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY29nbml6ZUxvbmdNb3Vz
ZVByZXNzKEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNvZ25pemVM
b25nTW91c2VQcmVzcyhVc2VyRGF0YShXZWJQcm9jZXNzOjpzaGFyZWQoKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OmRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MoKQpAQCAt
NjMzLDcgKzYzNCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRDYW5jZWxUcmFja2luZ1Bv
dGVudGlhbExvbmdNb3VzZVByZXNzKCkKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGll
bnQoKS5kaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzKG1fcGFnZSwgdXNl
ckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9uZ01v
dXNlUHJlc3MoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkp
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENhbmNlbFRy
YWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MoVXNlckRhdGEoV2ViUHJvY2Vzczo6c2hhcmVk
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9
CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRUb29sVGlwKGNvbnN0IFN0cmluZyYgdG9vbFRp
cCwgVGV4dERpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
NDU2MWEwMThhMjFlNDYzZjJjYmU2OWFiYTdhYTBiYzFiM2YyYzE2Ny4uY2MzOGM3NGI3ZGZjZjBi
MzIyYzc4OWI4Njk0ODVmMjY4ZjA5YTJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbmNsdWRl
ICJQbHVnaW5WaWV3LmgiCisjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJXS0J1bmRs
ZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtMTQ3LDggKzE0OCw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDIoKQogICAgIHdlYlBhZ2UtPmlu
amVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KHdl
YlBhZ2UsIG1fZnJhbWUsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNz
LgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVtb3ZlRnJh
bWVGcm9tSGllcmFyY2h5KG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVz
c2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7Ci0KKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShtX2ZyYW1lLT5m
cmFtZUlEKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRyYW5zZm9ybU9iamVjdHNU
b0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkZXRhY2hlZEZyb21QYXJlbnQzKCkKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZCgpCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGll
bnQoKS5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh3
ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vz
cy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQo
KSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIHVybCwgSW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRp
b25JRCgpLCB1cmwsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkKQEAgLTMyNyw3
ICszMjcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUxv
Y2F0aW9uV2l0aGluUGFnZSgpCiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICBX
ZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVu
dExvYWRlciY+KCptX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KSk7Ci0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRl
ci5uYXZpZ2F0aW9uSUQoKSwgU2FtZURvY3VtZW50TmF2aWdhdGlvbkFuY2hvck5hdmlnYXRpb24s
IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQo
KSwgU2FtZURvY3VtZW50TmF2aWdhdGlvbkFuY2hvck5hdmlnYXRpb24sIG1fZnJhbWUtPmNvcmVG
cmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2hhcmVkKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkp
KSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUHVzaFN0YXRl
V2l0aGluUGFnZSgpCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkKIAogICAgIC8vIE5vdGlmeSB0aGUg
VUlQcm9jZXNzLgogICAgIFdlYkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciA9IHN0YXRp
Y19jYXN0PFdlYkRvY3VtZW50TG9hZGVyJj4oKm1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpKTsKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlE
KCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
U2Vzc2lvblN0YXRlUHVzaCwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgp
LnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQo
KSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9h
ZGVyLm5hdmlnYXRpb25JRCgpLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUHVz
aCwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaGFyZWQoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2Uo
KQogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAgICAgV2ViRG9jdW1lbnRMb2FkZXIm
IGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFt
ZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpOwotICAgIHdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCks
IFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVSZXBsYWNlLCBtX2ZyYW1lLT5jb3Jl
RnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJh
bWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25TZXNzaW9uU3RhdGVSZXBsYWNlLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgp
CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRQb3BTdGF0ZVdpdGhpblBhZ2UoKQogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAg
ICAgV2ViRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9j
dW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCkpOwotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRM
b2FkZXIubmF2aWdhdGlvbklEKCksIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQ
b3AsIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9u
SUQoKSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcCwgbV9mcmFtZS0+Y29y
ZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCBVc2VyRGF0YShXZWJQcm9jZXNz
OjpzaGFyZWQoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQo
KSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2xvc2Uo
KQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIFN0cmluZyB1bnJlYWNoYWJsZVVSTCA9IHBy
b3Zpc2lvbmFsTG9hZGVyLnVucmVhY2hhYmxlVVJMKCkuc3RyaW5nKCk7CiAKICAgICAvLyBOb3Rp
ZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBw
cm92aXNpb25hbExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgdXJsLCB1bnJlYWNoYWJsZVVSTCwgSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgcHJvdmlzaW9uYWxMb2FkZXIubmF2aWdhdGlv
bklEKCksIHVybCwgdW5yZWFjaGFibGVVUkwsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQog
CiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdX
aXRoRGlyZWN0aW9uJiB0aQogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50
KCkuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUod2ViUGFnZSwgdGl0bGUuc3RyaW5nKCksIG1fZnJh
bWUsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUo
bV9mcmFtZS0+ZnJhbWVJRCgpLCB0aXRsZS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVz
c2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlE
KCksIHRpdGxlLnN0cmluZygpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaGFyZWQoKS50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAogdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29u
VHlwZSkKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENvbW1pdExvYWQoKQogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAKLSAg
ICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JG
cmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBk
b2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
bG9hZGVyKCkubG9hZFR5cGUoKSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNh
dGVJbmZvKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgp
KSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0
TG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlv
bklEKCksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1
c3RvbUNvbnRlbnRQcm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVG
cmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlwZSgpKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5j
ZXJ0aWZpY2F0ZUluZm8oKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2hhcmVkKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAgICAgd2ViUGFnZS0+
ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApAQCAtNDczLDcgKzQ3Myw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJiBlCiAgICAgd2ViUGFnZS0+c2FuZGJveEV4dGVuc2lvblRyYWNrZXIoKS5k
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVBy
b2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uSUQs
IGVycm9yLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkp
KTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgZXJy
b3IsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhIGxvYWQg
bGlzdGVuZXIsIG5vdGlmeSBpdC4KICAgICBpZiAoV2ViRnJhbWU6OkxvYWRMaXN0ZW5lciogbG9h
ZExpc3RlbmVyID0gbV9mcmFtZS0+bG9hZExpc3RlbmVyKCkpCkBAIC00OTMsNyArNDkzLDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIFdl
YkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50
TG9hZGVyJj4oKm1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
KTsKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxMb2Fk
Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQo
KSwgZXJyb3IsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgp
KSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbExv
YWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25J
RCgpLCBlcnJvciwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2hhcmVkKCkudHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAKICAgICAvLyBJZiB3ZSBoYXZl
IGEgbG9hZCBsaXN0ZW5lciwgbm90aWZ5IGl0LgogICAgIGlmIChXZWJGcmFtZTo6TG9hZExpc3Rl
bmVyKiBsb2FkTGlzdGVuZXIgPSBtX2ZyYW1lLT5sb2FkTGlzdGVuZXIoKSkKQEAgLTUxNCw3ICs1
MTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaERvY3Vt
ZW50TG9hZCgpCiAgICAgV2ViRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyID0gc3RhdGlj
X2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCkpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hEb2N1bWVudExv
YWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25J
RCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsK
KyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdh
dGlvbklEKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRyYW5zZm9ybU9iamVjdHNU
b0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWQoKQpAQCAtNTMxLDcgKzUzMSw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZCgpCiAgICAgV2Vi
RG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRM
b2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkp
OwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJ
RCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVz
c2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2hh
cmVkKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7
CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEgbG9hZCBsaXN0ZW5lciwgbm90aWZ5IGl0LgogICAgIGlm
IChXZWJGcmFtZTo6TG9hZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIgPSBtX2ZyYW1lLT5sb2FkTGlz
dGVuZXIoKSkKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiAgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgdGhlIG9sZCBkaWRGaXJzdExheW91
dCBBUEkgc2luY2UgdGhpcyBpcyBkb2luZyBkb3VibGUgZHV0eSB3aXRoIHRoZQogICAgICAgICAv
LyBuZXcgZGlkTGF5b3V0IEFQSS4KICAgICAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2Fk
ZXJDbGllbnQoKS5kaWRGaXJzdExheW91dEZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIHVzZXJE
YXRhKTsKLSAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRG
aXJzdExheW91dEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgICAgIHdlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmlyc3RMYXlvdXRGb3JGcmFtZShtX2ZyYW1lLT5m
cmFtZUlEKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRyYW5zZm9ybU9iamVjdHNU
b0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyBvbiBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQgd2hlbiBNYWMgU2FmYXJpIGlzIGFibGUgdG8gaGFuZGxlIGl0ICg8cmRhcjovL3Byb2JsZW0v
MTc1ODAwMjE+KQpAQCAtNTgzLDcgKzU4Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKIAogICAgIC8v
IFNlbmQgdGhpcyBhZnRlciBEaWRGaXJzdExheW91dC1zcGVjaWZpYyBjYWxscyBzaW5jZSBzb21l
IGNsaWVudHMgZXhwZWN0IHRvIGdldCB0aG9zZSBtZXNzYWdlcyBmaXJzdC4KICAgICB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZExheW91dCh3ZWJQYWdlLCBtaWxlc3Rv
bmVzLCB1c2VyRGF0YSk7Ci0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRMYXlvdXQobWlsZXN0b25lcywgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIo
dXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRMYXlvdXQobWlsZXN0b25lcywgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2hhcmVkKCku
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAKICAg
ICBpZiAobWlsZXN0b25lcyAmIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCkgewogICAg
ICAgICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSAmJiAhbV9kaWRDb21wbGV0ZVBhZ2VUcmFu
c2l0aW9uICYmICF3ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnN1cHByZXNzZXNJbmNy
ZW1lbnRhbFJlbmRlcmluZygpKSB7CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVz
KQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIHRoZSBvbGQg
ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgQVBJIHNpbmNlIHRoaXMgaXMg
ZG9pbmcKICAgICAgICAgLy8gZG91YmxlIGR1dHkgd2l0aCB0aGUgbmV3IGRpZExheW91dCBBUEku
CiAgICAgICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEp
OwotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBVc2VyRGF0YShXZWJQcm9jZXNz
OjpzaGFyZWQoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQo
KSkpKTsKICAgICB9CiB9CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9ucwogICAgIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSBJUEM6OkluZm9ybVBsYXRmb3JtUHJv
Y2Vzc1dpbGxTdXNwZW5kOwogICAgIGlmIChXZWJQYWdlOjpzeW5jaHJvbm91c01lc3NhZ2VzU2hv
dWxkU3BpblJ1bkxvb3AoKSkKICAgICAgICAgc3luY1NlbmRGbGFncyB8PSBJUEM6OlNwaW5SdW5M
b29wV2hpbGVXYWl0aW5nRm9yUmVwbHk7Ci0gICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMobV9mcmFtZS0+
ZnJhbWVJRCgpLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBsaXN0ZW5lcklE
LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmM6OlJlcGx5KHJl
Y2VpdmVkUG9saWN5QWN0aW9uLCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQpLCBzdGQ6OmNocm9u
bzo6bWlsbGlzZWNvbmRzOjptYXgoKSwgc3luY1NlbmRGbGFncykpCisgICAgaWYgKCF3ZWJQYWdl
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVU
eXBlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaGFyZWQoKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmM6OlJlcGx5KHJlY2VpdmVkUG9saWN5
QWN0aW9uLCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQpLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzOjptYXgoKSwgc3luY1NlbmRGbGFncykpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdl
IGNhbGwgdGhpcyBzeW5jaHJvbm91c2x5IGJlY2F1c2UgQ0ZOZXR3b3JrIGNhbiBvbmx5IGNvbnZl
cnQgYSBsb2FkaW5nIGNvbm5lY3Rpb24gdG8gYSBkb3dubG9hZCBmcm9tIGl0cyBkaWRSZWNlaXZl
UmVzcG9uc2UgY2FsbGJhY2suCkBAIC03MTEsNyArNzExLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2
aWdhdGkKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSA9
IG5hdmlnYXRpb25BY3Rpb24ucHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAgICAgbmF2aWdhdGlv
bkFjdGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9IHdlYlBhZ2UtPmNhbkhhbmRsZVJlcXVlc3Qo
cmVxdWVzdCk7CiAKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUsIGxpc3RlbmVySUQsIEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZyYW1l
TmFtZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2hhcmVkKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBwcnBGb3JtU3RhdGUsIEZy
YW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCkBAIC03NzgsNyArNzc4LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IE5hdmlnYXQKICAgICAgICAgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJE
b2N1bWVudExvYWRlcio+KGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSk7CiAK
ICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
bV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lID8gb3JpZ2luYXRpbmdGcmFtZS0+ZnJh
bWVJRCgpIDogMCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwg
bGlzdGVuZXJJRCwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0
KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjo6UmVwbHkocmVjZWl2ZWRQb2xpY3lBY3Rpb24sIG5ld05hdmlnYXRpb25JRCwgcG9saWN5
QWN0aW9uLCBkb3dubG9hZElEKSkpCisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUt
PmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZSA/IG9yaWdpbmF0aW5nRnJhbWUtPmZyYW1lSUQoKSA6
IDAsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIGxpc3RlbmVy
SUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246OlJlcGx5KHJlY2VpdmVkUG9saWN5QWN0aW9uLCBu
ZXdOYXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCkpKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBXZSBjYWxsIHRoaXMgc3luY2hyb25vdXNseSBiZWNhdXNlIFdlYkNvcmUg
Y2Fubm90IGdyYWNlZnVsbHkgaGFuZGxlIGEgZnJhbWUgbG9hZCB3aXRob3V0IGEgc3luY2hyb25v
dXMgbmF2aWdhdGlvbiBwb2xpY3kgcmVwbHkuCkBAIC04MDMsNyArODAzLDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBS
ZXNvdXJjZUVycm9yJgogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCku
dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kod2ViUGFnZSwgbV9mcmFtZSwgZXJyb3IsIHVzZXJEYXRh
KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6VW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kobV9mcmFtZS0+ZnJh
bWVJRCgpLCBlcnJvciwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEu
Z2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbmFi
bGVUb0ltcGxlbWVudFBvbGljeShtX2ZyYW1lLT5mcmFtZUlEKCksIGVycm9yLCBVc2VyRGF0YShX
ZWJQcm9jZXNzOjpzaGFyZWQoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdl
dCgpKS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hX
aWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBwcnBGb3JtU3RhdGUpCkBA
IC04NDMsNyArODQzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxs
U3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVMKIAogICAgIHVpbnQ2NF90
IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURjo6bW92ZShmdW5j
dGlvbikpOwogCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXaWxs
U3VibWl0Rm9ybShtX2ZyYW1lLT5mcmFtZUlEKCksIHNvdXJjZUZyYW1lLT5mcmFtZUlEKCksIHZh
bHVlcywgbGlzdGVuZXJJRCwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRh
dGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpX
aWxsU3VibWl0Rm9ybShtX2ZyYW1lLT5mcmFtZUlEKCksIHNvdXJjZUZyYW1lLT5mcmFtZUlEKCks
IHZhbHVlcywgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2hhcmVkKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExv
YWRlciopCkBAIC05OTksNyArOTk5LDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hv
dWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKSBjb25zdAogICAgIGlmICghc2hv
dWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2lsbEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtKGl0ZW1JRCwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRh
dGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpX
aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oaXRlbUlELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpz
aGFyZWQoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTAxMyw3ICsxMDEzLDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCiAKICAgICB3ZWJQ
YWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CiAKLSAgICB3ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVy
KHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQo
KSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2hhcmVkKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpCkBA
IC0xMDI2LDcgKzEwMjYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKQogCiAgICAgd2ViUGFnZS0+
aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CiAKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKG1fZnJhbWUt
PmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0
KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSdW5J
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIFVzZXJEYXRhKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkp
LmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1Mo
Y29uc3QgVVJMJiwgYm9vbCkKQEAgLTEwMzksNyArMTAzOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKQogCiAgICAgd2ViUGFnZS0+
aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWREZXRlY3RYU1NGb3JGcmFtZSh3ZWJQYWdl
LCBtX2ZyYW1lLCB1c2VyRGF0YSk7CiAKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZERldGVjdFhTU0ZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWREZXRlY3RYU1NGb3JGcmFtZShtX2Zy
YW1lLT5mcmFtZUlEKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiBSZXNvdXJjZUVy
cm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkNvbnRleHRNZW51LmNwcAppbmRleCAyOGNkMzRkMGNlNWNkMjQxYzM4ZjE3N2ZjMzdh
NGJjMGIwMzJmMzAyLi5jYWE4Nzc4ZDEyNGYxYmUyNjdiNWE2OGM1ZWU2Y2UxZmU2YTEzYmYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1l
bnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0
TWVudS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHRE
YXRhLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgorI2luY2x1ZGUgIlVzZXJEYXRh
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViSGl0
VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKQEAgLTY4LDcgKzY5LDcgQEAgdm9p
ZCBXZWJDb250ZXh0TWVudTo6c2hvdygpCiAKICAgICAvLyBNYXJrIHRoZSBXZWJQYWdlIGhhcyBo
YXZpbmcgYSBzaG93biBjb250ZXh0IG1lbnUgdGhlbiBub3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAg
ICBtX3BhZ2UtPmNvbnRleHRNZW51U2hvd2luZygpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUodmlldy0+Y29udGVudHNUb1dpbmRvdyhj
b250cm9sbGVyLmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkp
LCBjb250ZXh0TWVudUNvbnRleHREYXRhLCBtZW51SXRlbXMsIEluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUodmlldy0+Y29udGVudHNUb1dpbmRvdyhj
b250cm9sbGVyLmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkp
LCBjb250ZXh0TWVudUNvbnRleHREYXRhLCBtZW51SXRlbXMsIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgp
KSkpOwogfQogCiB2b2lkIFdlYkNvbnRleHRNZW51OjppdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA1NDgxOWM1ZjcyYzhiNDZlMTJjYmJk
ZGRjYmI4ODRmMjliYmM1NmIyLi4yYjIxMzliNzM0MWU3OGVjNzk4NTIzMzQzNDZlZTQ3MjUzZDM3
NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0ICJQYWdlQmFubmVyLmgiCiAj
aW1wb3J0ICJQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJQcmludEluZm8uaCIKKyNpbXBvcnQgIlVz
ZXJEYXRhLmgiCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLmgiCiAj
aW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIldlYkV2ZW50LmgiCkBA
IC05OTEsNyArOTkyLDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RB
dExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb25JblYKIAogICAgIE1haW5GcmFt
ZSYgbWFpbkZyYW1lID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgaWYgKCFtYWluRnJh
bWUudmlldygpIHx8ICFtYWluRnJhbWUudmlldygpLT5yZW5kZXJWaWV3KCkpIHsKLSAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3Qo
QWN0aW9uTWVudUhpdFRlc3RSZXN1bHQoKSwgZm9ySW1tZWRpYXRlQWN0aW9uLCBJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRW5jb2RlcihudWxscHRyKSkpOworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChBY3Rpb25NZW51SGl0
VGVzdFJlc3VsdCgpLCBmb3JJbW1lZGlhdGVBY3Rpb24sIFVzZXJEYXRhKCkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTA4Miw3ICsxMDgzLDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJm
b3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRp
b25JblYKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBpbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZSho
aXRUZXN0UmVzdWx0KTsKICAgICBpbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkucHJl
cGFyZUZvckFjdGlvbk1lbnUodGhpcywgaW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmdldCgp
LCB1c2VyRGF0YSk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZv
cm1BY3Rpb25NZW51SGl0VGVzdChhY3Rpb25NZW51UmVzdWx0LCBmb3JJbW1lZGlhdGVBY3Rpb24s
IEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0
KGFjdGlvbk1lbnVSZXN1bHQsIGZvckltbWVkaWF0ZUFjdGlvbiwgVXNlckRhdGEoV2ViUHJvY2Vz
czo6c2hhcmVkKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0
KCkpKSk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IFdlYlBhZ2U6Omxvb2t1cFRl
eHRBdExvY2F0aW9uKEZsb2F0UG9pbnQgbG9jYXRpb25JblZpZXdDb29vcmRpbmF0ZXMsIE5TRGlj
dGlvbmFyeSAqKm9wdGlvbnMpCg==
</data>
<flag name="review"
          id="268713"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>