<?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>121778</bug_id>
          
          <creation_ts>2013-09-22 23:25:27 -0700</creation_ts>
          <short_desc>REGRESSION(r156253): Caused &gt;20 tests to crash with assertion failures (Requested by ap on #webkit).</short_desc>
          <delta_ts>2013-09-22 23:32:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          <blocked>121462</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>932027</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-22 23:25:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/156253 broke the build:
Caused &gt;20 tests to crash with assertion failures (Requested by ap on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932029</commentid>
    <comment_count>1</comment_count>
      <attachid>212326</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-22 23:25:58 -0700</bug_when>
    <thetext>Created attachment 212326
ROLLOUT of r156253

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932038</commentid>
    <comment_count>2</comment_count>
      <attachid>212326</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-22 23:32:05 -0700</bug_when>
    <thetext>Comment on attachment 212326
ROLLOUT of r156253

Clearing flags on attachment: 212326

Committed r156260: &lt;http://trac.webkit.org/changeset/156260&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932039</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-22 23:32:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212326</attachid>
            <date>2013-09-22 23:25:58 -0700</date>
            <delta_ts>2013-09-22 23:32:05 -0700</delta_ts>
            <desc>ROLLOUT of r156253</desc>
            <filename>bug-121778-20130922232557.patch</filename>
            <type>text/plain</type>
            <size>121933</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2MjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTc5ODYwODA0MDQ1ZDFi
NmY0NTAyMDU1NmRjYTE1ZDI4OTQxMTQ0OS4uNmIyODRkZDI4NDJlNmZkMTdhZjNjNTI5NWNkZjVm
ZjkzOGVlYTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MSBAQAorMjAxMy0wOS0yMiAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjE1NjI1My4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMTU2MjUzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjE3NzgKKworICAgICAgICBDYXVzZWQgPjIwIHRlc3RzIHRvIGNyYXNoIHdpdGgg
YXNzZXJ0aW9uIGZhaWx1cmVzIChSZXF1ZXN0ZWQKKyAgICAgICAgYnkgYXAgb24gI3dlYmtpdCku
CisKKyAgICAgICAgKiBjc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oOgorICAgICAgICAqIGNzcy9D
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXI6
OnBhcnNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1Ymlt
YWdlS25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvQ1NTQ3Jvc3NmYWRlVmFsdWUpOgorICAgICAgICAqIGNzcy9D
U1NDdXJzb3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdl
VmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNv
ckltYWdlVmFsdWU6OnVwZGF0ZUlmU1ZHQ3Vyc29ySXNVc2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1cnNvckltYWdlVmFsdWU6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0N1cnNvckltYWdlVmFsdWU6OmNhY2hlZE9yUGVuZGluZ0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmlzU1ZHQ3Vyc29yKToKKyAgICAgICAgKiBjc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmg6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0ZpbHRlckltYWdlVmFsdWUpOgorICAgICAgICAqIGNz
cy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9y
OjphZGRGb250RmFjZVJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0lt
YWdlR2VuZXJhdG9yVmFsdWU6OmxvYWRTdWJpbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c3ViaW1hZ2VJc1BlbmRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VGb3JDU1NWYWx1ZSk6CisgICAg
ICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW1h
Z2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpmaWxs
SW1hZ2VTZXQpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmg6CisgICAgICAgICog
Y3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaDoK
KyAgICAgICAgKiBjc3MvQ1NTSW5pdGlhbFZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0xpbmVC
b3hDb250YWluVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OmFkZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2Uz
VmFsdWVzRmlsbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VG
aWxsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxSZXBl
YXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZURlcHJlY2F0ZWRSYWRpYWxH
cmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGll
bnQpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAqIGNzcy9D
U1NSZWZsZWN0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsQXR0YWNobWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsQ2xpcCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1RvU3R5bGVNYXA6Om1hcEZpbGxCbGVuZE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9T
dHlsZU1hcDo6bWFwRmlsbE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBGaWxsUmVwZWF0WCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBG
aWxsUmVwZWF0WSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxZUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbE1hc2tTb3VyY2VUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRlbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRpcmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25GaWxsTW9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25JdGVyYXRpb25Db3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25OYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblBsYXlTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25Qcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVNs
aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdl
UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFn
ZVJlcGVhdCk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ZhbHVlOjpkZXN0cm95KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhbHVlOjppc0NTU0xpbmVCb3hDb250YWluVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVmFsdWU6OmlzQ2FsY3VsYXRpb25WYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1ZhbHVlTGlzdC5oOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZVZhbHVlLmg6CisgICAgICAg
ICogY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eURlZmF1bHQ6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQ
cm9wZXJ0eU51bWJlcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5QXV0bzo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q2xp
cDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q29sb3I6OmFw
cGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUxlbmd0aDo6YXBwbHlW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5U3RyaW5nOjphcHBseVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJSYWRpdXM6OmFwcGx5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg6OmFwcGx5
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnQ6OmFwcGx5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRGYW1pbHk6OmFwcGx5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRTaXplOjphcHBseVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250V2VpZ2h0OjphcHBseVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlczo6YXBw
bHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q291bnRlcjo6YXBwbHlW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q3Vyc29yOjphcHBseVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0QWxpZ246OmFwcGx5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVRleHREZWNvcmF0aW9uOjphcHBseVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlNYXJxdWVlSW5jcmVtZW50Ojph
cHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlNYXJxdWVlUmVwZXRp
dGlvbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TWFycXVl
ZVNwZWVkOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0
VW5kZXJsaW5lUG9zaXRpb246OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQ
cm9wZXJ0eUxpbmVIZWlnaHQ6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQ
cm9wZXJ0eUxpbmVIZWlnaHRGb3JJT1NUZXh0QXV0b3NpemluZzo6YXBwbHlWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5UGFnZVNpemU6OmFwcGx5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVRleHRFbXBoYXNpc1N0eWxlOjphcHBseVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlSZXNpemU6OmFwcGx5VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVZlcnRpY2FsQWxpZ246OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjphcHBseVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlab29tOjphcHBseVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5OjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0aDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBseVByb3BlcnR5U2hhcGU6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUltYWdlUmVzb2x1dGlvbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEluZGVudDo6YXBwbHlWYWx1ZSk6CisgICAgICAgICog
Y3NzL0ZvbnRGZWF0dXJlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvRm9udFZhbHVlLmg6CisgICAg
ICAgICogY3NzL01lZGlhTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRNZWRpYVF1
ZXJ5V2FybmluZ0lmTmVlZGVkKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlQXNwZWN0UmF0aW9WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpudW1iZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpvcmllbnRhdGlvbk1l
ZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXZhbFJlc29sdXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6ZGV2aWNlX3BpeGVsX3JhdGlvTWVkaWFGZWF0dXJlRXZhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpyZXNvbHV0aW9uTWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpjb21wdXRlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZpZXdfbW9kZU1lZGlhRmVh
dHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRlck1lZGlhRmVhdHVyZUV2YWwpOgor
ICAgICAgICAqIGNzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZHUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9TaGFkb3dW
YWx1ZS5oOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSk6CisgICAg
ICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR3Jp
ZFRyYWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmlkVHJhY2tMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpo
YXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjph
cHBseVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Z2VuZXJhdGVkT3JQZW5kaW5n
RnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3VzdG9tRmlsdGVyQXJy
YXlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0
b21GaWx0ZXJDb2xvclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjpwYXJzZUN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
V2l0aElubGluZVN5bnRheCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVh
dGVGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAgICAgKiBjc3MvVHJhbnNmb3JtRnVuY3Rpb25zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybXNGb3JWYWx1ZSk6CisgICAgICAgICogY3Nz
L1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydFN0
eWxlUmVzb2x2ZXI6OmdldFZpZXdwb3J0QXJndW1lbnRWYWx1ZSk6CisgICAgICAgICogY3NzL1dl
YktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNl
dE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRTaXplKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
ZGVudGlmaWVyRm9yU3R5bGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dEVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpj
c3NWYWx1ZVRvUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmV4dHJhY3RG
b250U2l6ZURlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERpcmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9y
U2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmxlZ2FjeUZv
bnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbkZv
clNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNoYW5nZTo6ZXh0cmFjdFRleHRT
dHlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udFdlaWdodElzQm9sZCk6CisgICAgICAgIChX
ZWJDb3JlOjppc1RyYW5zcGFyZW50Q29sb3JWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9tYXJr
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZSk6
CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlU2VyaWFsaXplcjo6cmV0cmlldmVSZXNvdXJjZXNGb3JQcm9wZXJ0aWVzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUGVuZGluZ0ltYWdlOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGlu
Z0ltYWdlOjpjc3NJbWFnZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0lt
YWdlOjpjc3NJbWFnZUdlbmVyYXRvclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVu
ZGluZ0ltYWdlOjpjc3NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UGVuZGluZ0ltYWdlOjpjc3NJbWFnZVNldFZhbHVlKToKKwogMjAxMy0wOS0yMiAgQW50b25pbyBH
b21lcyAgPGExLmdvbWVzQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgaWZyYW1lIGFuZCBz
Y3JvbGxiYXIgd2l0aCAib3ZlcmZsb3c6YXV0byIgc2hvdWxkIHN1cHBvcnQgYXV0b3Njcm9sbCB3
aXRoIG1vdXNlZHJhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJh
dGlvVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKaW5k
ZXggZDhhMzlhZjg0OTQ1M2M2MmY5YjM2NGM3N2M5MTMxMDY0NzFjY2U0YS4uOWZjNzhjYmEyZWU3
NGVmYTllOWNlYmZmMDNmYjliYWM3Njg3YTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNw
ZWN0UmF0aW9WYWx1ZS5oCkBAIC02MCw4ICs2MCw2IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9k
ZW5vbWluYXRvclZhbHVlOwogfTsKIAotQ1NTX1ZBTFVFX1RZUEVfQ0FTVFMoQXNwZWN0UmF0aW9W
YWx1ZSkKLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NC
b3JkZXJJbWFnZVNsaWNlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUuaAppbmRleCA0YjhhMzRiMGFjZGM1ZTkxNzU4ZmJhZjc4ZjBiYTg1MzMyMDcx
NGI3Li40MTEyYmQ5Y2E1NzYwMDg5M2M1NzY3YzExNTQzZDMyNWM2ZDRhMzk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCkBAIC01Niw4ICs1Niw2
IEBAIHByaXZhdGU6CiAgICAgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHNsaWNlcywgYm9vbCBmaWxsKTsKIH07CiAKLUNTU19WQUxVRV9UWVBF
X0NBU1RTKEJvcmRlckltYWdlU2xpY2VWYWx1ZSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCAzZmM4OWI0ZjQyYmFkMjBlYTA4ZmZkNTQ3
MzYzYWRmNGY1NWJhZjYzLi4yZDFhM2ZlZjY3OTkxYjM0ODJkZjcyZWE2OTUxODM1Njk2YTE5MDY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC00NDks
NyArNDQ5LDggQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXN1
bHQtPnZhbHVlID0gQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodG9DU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZS5nZXQoKSksIHBhcnNlclZhbHVlLT5pc0ludCk7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUuZ2V0KCkpOworICAgICAgICByZXN1bHQtPnZhbHVlID0gQ1NTQ2FsY1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUocHJpbWl0aXZlVmFsdWUsIHBhcnNlclZhbHVlLT5pc0ludCk7CiAKICAg
ICAgICAgKysqaW5kZXg7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmgKaW5kZXggNzVkMTUxNzg1NTRkYzMzOGJiYTUyZmI2NDVlMzQw
ZGUwOTc0Y2U1My4uYmVmY2UxNjQxNDkyOTk5ZTYyNzIxYTVlYjRiNzlmNDA4NTNhMjdhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC0xMjcsOCArMTI3LDYg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBtX2V4
cHJlc3Npb247CiAgICAgY29uc3QgYm9vbCBtX25vbk5lZ2F0aXZlOwogfTsKLQotQ1NTX1ZBTFVF
X1RZUEVfQ0FTVFMoQ2FsY1ZhbHVlKQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAppbmRleCBhMjg1ZTQ2YTk3Yjc3
ZmYxZTdkNGVmNTNiYTFlMjBmNTE4YWZlMzE4Li5hZWY2MGExYzRlN2UzMzBkMTlhMWM2OGVkMzAz
OGQ4ODRmMzY3NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAK
QEAgLTQ3LDEwICs0NywxMCBAQCBzdGF0aWMgaW5saW5lIGRvdWJsZSBibGVuZEZ1bmMoZG91Ymxl
IGZyb20sIGRvdWJsZSB0bywgZG91YmxlIHByb2dyZXNzKQogc3RhdGljIGJvb2wgc3ViaW1hZ2VL
bm93blRvQmVPcGFxdWUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKQogewogICAgIGlmICh2YWx1ZS0+aXNJbWFnZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiB0
b0NTU0ltYWdlVmFsdWUodmFsdWUpLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KHZhbHVlKS0+a25vd25Ub0JlT3Bh
cXVlKHJlbmRlcmVyKTsKIAogICAgIGlmICh2YWx1ZS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkp
Ci0gICAgICAgIHJldHVybiB0b0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUodmFsdWUpLT5rbm93blRv
QmVPcGFxdWUocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZSo+KHZhbHVlKS0+a25vd25Ub0JlT3BhcXVlKHJlbmRlcmVyKTsKIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5oCmluZGV4IDViNzkzZTkxYzY2YmE4MjcxMzVmNWViM2E2OGI3OWZmMzAwNDJiODQuLmY5ZGJi
YWMxOWQzOGEyZWFhY2EzMzA2ZWI5MjJlMTE3ZTg4NjA2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC0xMTAsNyArMTEwLDExIEBAIHByaXZhdGU6CiAgICAgQ3Jv
c3NmYWRlU3ViaW1hZ2VPYnNlcnZlclByb3h5IG1fY3Jvc3NmYWRlU3ViaW1hZ2VPYnNlcnZlcjsK
IH07CiAKLUNTU19WQUxVRV9UWVBFX0NBU1RTKENyb3NzZmFkZVZhbHVlKQoraW5saW5lIENTU0Ny
b3NzZmFkZVZhbHVlKiB0b0NTU0Nyb3NzZmFkZVZhbHVlKENTU0ltYWdlR2VuZXJhdG9yVmFsdWUq
IHZhbHVlKQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCF2YWx1ZSB8
fCB2YWx1ZS0+aXNDcm9zc2ZhZGVWYWx1ZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NT
Q3Jvc3NmYWRlVmFsdWUqPih2YWx1ZSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDc4MmNhNGI1
Zjk1NGUyYmZlMDQxMmNjYWIzMzFkNmQ1Zjc3YjE5MzMuLjIwNDA2NzA4YjdkZDUwNDZhYTI1ZjBk
MzhlMjZhMzUzZTlmZThhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6fkNTU0N1cnNv
ckltYWdlVmFsdWUoKQogCiAgICAgSGFzaFNldDxTVkdFbGVtZW50Kj46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9yZWZlcmVuY2VkRWxlbWVudHMuYmVnaW4oKTsKICAgICBIYXNoU2V0PFNWR0VsZW1l
bnQqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yZWZlcmVuY2VkRWxlbWVudHMuZW5kKCk7Ci0g
ICAgU3RyaW5nIHVybCA9IHRvQ1NTSW1hZ2VWYWx1ZShtX2ltYWdlVmFsdWUuZ2V0KCkpLT51cmwo
KTsKKyAgICBTdHJpbmcgdXJsID0gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KG1faW1hZ2VW
YWx1ZS5nZXQoKSktPnVybCgpOwogCiAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICBTVkdFbGVtZW50KiByZWZlcmVuY2VkRWxlbWVudCA9ICppdDsKQEAgLTExMCw3ICsxMTAs
NyBAQCBib29sIENTU0N1cnNvckltYWdlVmFsdWU6OnVwZGF0ZUlmU1ZHQ3Vyc29ySXNVc2VkKEVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFpc1NWR0N1cnNvcigpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBTdHJpbmcgdXJsID0gdG9DU1NJbWFnZVZhbHVlKG1faW1hZ2VWYWx1ZS5n
ZXQoKSktPnVybCgpOworICAgIFN0cmluZyB1cmwgPSBzdGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVl
Kj4obV9pbWFnZVZhbHVlLmdldCgpKS0+dXJsKCk7CiAgICAgaWYgKFNWR0N1cnNvckVsZW1lbnQq
IGN1cnNvckVsZW1lbnQgPSByZXNvdXJjZVJlZmVyZW5jZWRCeUN1cnNvckVsZW1lbnQodXJsLCAm
ZWxlbWVudC0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBvdmVy
cmlkZSBob3Qgc3BvdCBzcGVjaWZpZWQgaW4gQ1NTLCB3aGljaCBpcyBwcm9iYWJseSBpbmNvcnJl
Y3QuCiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCgwKTsKQEAgLTEzOSw3
ICsxMzksNyBAQCBTdHlsZUltYWdlKiBDU1NDdXJzb3JJbWFnZVZhbHVlOjpjYWNoZWRJbWFnZShD
YWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyKQogewogI2lmIEVOQUJMRShDU1NfSU1BR0VfU0VU
KQogICAgIGlmIChtX2ltYWdlVmFsdWUtPmlzSW1hZ2VTZXRWYWx1ZSgpKQotICAgICAgICByZXR1
cm4gdG9DU1NJbWFnZVNldFZhbHVlKG1faW1hZ2VWYWx1ZS5nZXQoKSktPmNhY2hlZEltYWdlU2V0
KGxvYWRlcik7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NJbWFnZVNldFZhbHVlKj4o
bV9pbWFnZVZhbHVlLmdldCgpKS0+Y2FjaGVkSW1hZ2VTZXQobG9hZGVyKTsKICNlbmRpZgogCiAg
ICAgaWYgKCFtX2FjY2Vzc2VkSW1hZ2UpIHsKQEAgLTE1MCw3ICsxNTAsNyBAQCBTdHlsZUltYWdl
KiBDU1NDdXJzb3JJbWFnZVZhbHVlOjpjYWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciog
bG9hZGVyKQogICAgICAgICAvLyB0byBjaGFuZ2UgdGhlIFVSTCBvZiB0aGUgQ1NTSW1hZ2VWYWx1
ZSAod2hpY2ggd291bGQgdGhlbiBjaGFuZ2UgYmVoYXZpb3IgbGlrZSBjc3NUZXh0KSwKICAgICAg
ICAgLy8gd2UgY3JlYXRlIGFuIGFsdGVybmF0ZSBDU1NJbWFnZVZhbHVlIHRvIHVzZS4KICAgICAg
ICAgaWYgKGlzU1ZHQ3Vyc29yKCkgJiYgbG9hZGVyICYmIGxvYWRlci0+ZG9jdW1lbnQoKSkgewot
ICAgICAgICAgICAgUmVmUHRyPENTU0ltYWdlVmFsdWU+IGltYWdlVmFsdWUgPSB0b0NTU0ltYWdl
VmFsdWUobV9pbWFnZVZhbHVlLmdldCgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NJbWFnZVZh
bHVlPiBpbWFnZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KG1faW1hZ2VWYWx1
ZS5nZXQoKSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIGZhaWwgaWYgdGhlIDxj
dXJzb3I+IGVsZW1lbnQgaXMgaW4gYSBzaGFkb3cgRE9NIChidWcgNTk4MjcpCiAgICAgICAgICAg
ICBpZiAoU1ZHQ3Vyc29yRWxlbWVudCogY3Vyc29yRWxlbWVudCA9IHJlc291cmNlUmVmZXJlbmNl
ZEJ5Q3Vyc29yRWxlbWVudChpbWFnZVZhbHVlLT51cmwoKSwgbG9hZGVyLT5kb2N1bWVudCgpKSkg
ewogICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NJbWFnZVZhbHVlPiBzdmdJbWFnZVZhbHVlID0g
Q1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGN1cnNvckVsZW1lbnQtPmhyZWYoKSk7CkBAIC0xNjIsNyAr
MTYyLDcgQEAgU3R5bGVJbWFnZSogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2UoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKICNlbmRpZgogCiAgICAgICAgIGlmIChtX2ltYWdl
VmFsdWUtPmlzSW1hZ2VWYWx1ZSgpKQotICAgICAgICAgICAgbV9pbWFnZSA9IHRvQ1NTSW1hZ2VW
YWx1ZShtX2ltYWdlVmFsdWUuZ2V0KCkpLT5jYWNoZWRJbWFnZShsb2FkZXIpOworICAgICAgICAg
ICAgbV9pbWFnZSA9IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPihtX2ltYWdlVmFsdWUuZ2V0
KCkpLT5jYWNoZWRJbWFnZShsb2FkZXIpOwogICAgIH0KIAogICAgIGlmIChtX2ltYWdlICYmIG1f
aW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBTdHlsZUltYWdlKiBD
U1NDdXJzb3JJbWFnZVZhbHVlOjpjYWNoZWRPclBlbmRpbmdJbWFnZShEb2N1bWVudCogZG9jdW1l
bnQpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCiAgICAgLy8gTmVlZCB0byBkZWxlZ2F0ZSBj
b21wbGV0ZWx5IHNvIHRoYXQgY2hhbmdlcyBpbiBkZXZpY2Ugc2NhbGUgZmFjdG9yIGNhbiBiZSBo
YW5kbGVkIGFwcHJvcHJpYXRlbHkuCiAgICAgaWYgKG1faW1hZ2VWYWx1ZS0+aXNJbWFnZVNldFZh
bHVlKCkpCi0gICAgICAgIHJldHVybiB0b0NTU0ltYWdlU2V0VmFsdWUobV9pbWFnZVZhbHVlLmdl
dCgpKS0+Y2FjaGVkT3JQZW5kaW5nSW1hZ2VTZXQoZG9jdW1lbnQpOworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q1NTSW1hZ2VTZXRWYWx1ZSo+KG1faW1hZ2VWYWx1ZS5nZXQoKSktPmNhY2hl
ZE9yUGVuZGluZ0ltYWdlU2V0KGRvY3VtZW50KTsKICNlbmRpZgogCiAgICAgaWYgKCFtX2ltYWdl
KQpAQCAtMTg5LDcgKzE4OSw3IEBAIFN0eWxlSW1hZ2UqIENTU0N1cnNvckltYWdlVmFsdWU6OmNh
Y2hlZE9yUGVuZGluZ0ltYWdlKERvY3VtZW50KiBkb2N1bWVudCkKIGJvb2wgQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZTo6aXNTVkdDdXJzb3IoKSBjb25zdAogewogICAgIGlmIChtX2ltYWdlVmFsdWUtPmlz
SW1hZ2VWYWx1ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NJbWFnZVZhbHVlPiBpbWFnZVZhbHVl
ID0gdG9DU1NJbWFnZVZhbHVlKG1faW1hZ2VWYWx1ZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxD
U1NJbWFnZVZhbHVlPiBpbWFnZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KG1f
aW1hZ2VWYWx1ZS5nZXQoKSk7CiAgICAgICAgIEtVUkwga3VybChQYXJzZWRVUkxTdHJpbmcsIGlt
YWdlVmFsdWUtPnVybCgpKTsKICAgICAgICAgcmV0dXJuIGt1cmwuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvcklt
YWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKaW5k
ZXggY2NiZjYxNGE4NGNkNmVkMmNiYWM0ZmQyODNmNTIxZWQyY2IxNDUxOC4uNGI2YjBlYzE0ODc1
ZjNjN2FiZjJkMGRhZmJiNzJiMGJmNzFiMWZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5oCkBAIC04Miw4ICs4Miw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAK
LUNTU19WQUxVRV9UWVBFX0NBU1RTKEN1cnNvckltYWdlVmFsdWUpCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIENTU0N1cnNvckltYWdlVmFsdWVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKaW5kZXggYTU0OTEwODU2ZGNkODdjZjI0OWIwNTYx
YmE4ZjllMzI1YTkxZjk5ZC4uOWE1YmYwZWQ2MzgzMjM5Y2NlYjgxNmFiMTVlOWE1NmFlYjQ0YmU5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCkBAIC0xMTksNyAr
MTE5LDExIEBAIHByaXZhdGU6CiAgICAgRmlsdGVyU3ViaW1hZ2VPYnNlcnZlclByb3h5IG1fZmls
dGVyU3ViaW1hZ2VPYnNlcnZlcjsKIH07CiAKLUNTU19WQUxVRV9UWVBFX0NBU1RTKEZpbHRlcklt
YWdlVmFsdWUpCitpbmxpbmUgQ1NTRmlsdGVySW1hZ2VWYWx1ZSogdG9DU1NGaWx0ZXJJbWFnZVZh
bHVlKENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqIHZhbHVlKQoreworICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKCF2YWx1ZSB8fCB2YWx1ZS0+aXNGaWx0ZXJJbWFnZVZhbHVlKCkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NGaWx0ZXJJbWFnZVZhbHVlKj4odmFsdWUpOwor
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHAKaW5kZXggM2FlOWJjNmU2ZGQ4YmQ3ZGZlYzY2NWNjY2RhNjY5ZmYwMzA4MDc0NS4u
ZjIzMWFkODYyNmExZjIxMTFhYTY1ZTVlOTJiMzM5OWI4ZGM2ZDlhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIENTU0ZvbnRT
ZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKGNvbnN0IFN0eWxlUnVsZUZvbnRGYWNlKiBmb250RmFj
ZVJ1bGUpCiAgICAgICAgIGlmICghZm9udFN0eWxlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgc3dpdGNoICh0b0NTU1ByaW1pdGl2ZVZhbHVlKGZv
bnRTdHlsZS5nZXQoKSktPmdldFZhbHVlSUQoKSkgeworICAgICAgICBzd2l0Y2ggKHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZm9udFN0eWxlLmdldCgpKS0+Z2V0VmFsdWVJRCgpKSB7
CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CiAgICAgICAgICAgICB0cmFpdHNNYXNrIHw9
IEZvbnRTdHlsZU5vcm1hbE1hc2s7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzNCw3ICsxMzQs
NyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKGNvbnN0IFN0eWxlUnVs
ZUZvbnRGYWNlKiBmb250RmFjZVJ1bGUpCiAgICAgICAgIGlmICghZm9udFdlaWdodC0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHN3aXRjaCAodG9D
U1NQcmltaXRpdmVWYWx1ZShmb250V2VpZ2h0LmdldCgpKS0+Z2V0VmFsdWVJRCgpKSB7CisgICAg
ICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmb250V2VpZ2h0Lmdl
dCgpKS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVCb2xkOgogICAgICAg
ICBjYXNlIENTU1ZhbHVlNzAwOgogICAgICAgICAgICAgdHJhaXRzTWFzayB8PSBGb250V2VpZ2h0
NzAwTWFzazsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9u
dEZhY2VSdWxlKGNvbnN0IFN0eWxlUnVsZUZvbnRGYWNlKiBmb250RmFjZVJ1bGUpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVZhcmlh
bnRzOyArK2kpIHsKLSAgICAgICAgICAgIHN3aXRjaCAodG9DU1NQcmltaXRpdmVWYWx1ZSh2YXJp
YW50TGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSktPmdldFZhbHVlSUQoKSkgeworICAg
ICAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhcmlhbnRM
aXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKICAgICAgICAgICAgICAgICAgICAgdHJhaXRz
TWFzayB8PSBGb250VmFyaWFudE5vcm1hbE1hc2s7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1
bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAgICAvLyBIYXNoIHVu
ZGVyIGV2ZXJ5IHNpbmdsZSBmYW1pbHkgbmFtZS4KICAgICBpbnQgZmFtaWx5TGVuZ3RoID0gZmFt
aWx5TGlzdC0+bGVuZ3RoKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmYW1pbHlMZW5ndGg7
IGkrKykgewotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogaXRlbSA9IHRvQ1NTUHJpbWl0aXZl
VmFsdWUoZmFtaWx5TGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBpdGVtID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihm
YW1pbHlMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKICAgICAgICAgU3RyaW5nIGZh
bWlseU5hbWU7CiAgICAgICAgIGlmIChpdGVtLT5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICBm
YW1pbHlOYW1lID0gaXRlbS0+Z2V0U3RyaW5nVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5oCmluZGV4IDhmMWYzOGNlNGNlNzczYzQ1OTBkYzFmMDY5MDAxZGRhZjg2MWRk
NGEuLjNmMWVjMDQ4MGQ3NmQ3MTNhZGViMGE4YzgyZmQ1MmIzOTc3ZWM5ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaApAQCAtMjMyLDggKzIzMiw2IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2VuZFZlcnRpY2FsU2l6ZTsKIH07CiAKLUNT
U19WQUxVRV9UWVBFX0NBU1RTKEdyYWRpZW50VmFsdWUpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIENTU0dyYWRpZW50VmFsdWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCmluZGV4IDJhYTNkMzYxNTZmOGVlYmZlMjQzYjQ0
MTY2MzA3NDE2YzFiMWVjOTQuLmU1YTRmNTk0MDM1YzBiNTA0MGJhMmE3MTZlMGM2YWMzNDMxMjgy
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAK
QEAgLTExMCwxMCArMTEwLDEwIEBAIFBhc3NSZWZQdHI8SW1hZ2U+IENTU0ltYWdlR2VuZXJhdG9y
VmFsdWU6OmltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEluCiAgICAgY2FzZSBD
YW52YXNDbGFzczoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0NhbnZhc1ZhbHVlKj4o
dGhpcyktPmltYWdlKHJlbmRlcmVyLCBzaXplKTsKICAgICBjYXNlIENyb3NzZmFkZUNsYXNzOgot
ICAgICAgICByZXR1cm4gdG9DU1NDcm9zc2ZhZGVWYWx1ZSh0aGlzKS0+aW1hZ2UocmVuZGVyZXIs
IHNpemUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTQ3Jvc3NmYWRlVmFsdWUqPih0
aGlzKS0+aW1hZ2UocmVuZGVyZXIsIHNpemUpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAg
ICBjYXNlIEZpbHRlckltYWdlQ2xhc3M6Ci0gICAgICAgIHJldHVybiB0b0NTU0ZpbHRlckltYWdl
VmFsdWUodGhpcyktPmltYWdlKHJlbmRlcmVyLCBzaXplKTsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENTU0ZpbHRlckltYWdlVmFsdWUqPih0aGlzKS0+aW1hZ2UocmVuZGVyZXIsIHNpemUp
OwogI2VuZGlmCiAgICAgY2FzZSBMaW5lYXJHcmFkaWVudENsYXNzOgogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZSo+KHRoaXMpLT5pbWFnZShyZW5kZXJl
ciwgc2l6ZSk7CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCBJbnRTaXplIENTU0ltYWdlR2VuZXJhdG9y
VmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIGNhc2Ug
Q2FudmFzQ2xhc3M6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NDYW52YXNWYWx1ZSo+
KHRoaXMpLT5maXhlZFNpemUocmVuZGVyZXIpOwogICAgIGNhc2UgQ3Jvc3NmYWRlQ2xhc3M6Ci0g
ICAgICAgIHJldHVybiB0b0NTU0Nyb3NzZmFkZVZhbHVlKHRoaXMpLT5maXhlZFNpemUocmVuZGVy
ZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTQ3Jvc3NmYWRlVmFsdWUqPih0aGlz
KS0+Zml4ZWRTaXplKHJlbmRlcmVyKTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgY2Fz
ZSBGaWx0ZXJJbWFnZUNsYXNzOgotICAgICAgICByZXR1cm4gdG9DU1NGaWx0ZXJJbWFnZVZhbHVl
KHRoaXMpLT5maXhlZFNpemUocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q1NTRmlsdGVySW1hZ2VWYWx1ZSo+KHRoaXMpLT5maXhlZFNpemUocmVuZGVyZXIpOwogI2VuZGlm
CiAgICAgY2FzZSBMaW5lYXJHcmFkaWVudENsYXNzOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZSo+KHRoaXMpLT5maXhlZFNpemUocmVuZGVyZXIpOwpA
QCAtMjEzLDE0ICsyMTMsMTQgQEAgdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpsb2FkU3Vi
aW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUwKIHsKICAgICBzd2l0
Y2ggKGNsYXNzVHlwZSgpKSB7CiAgICAgY2FzZSBDcm9zc2ZhZGVDbGFzczoKLSAgICAgICAgdG9D
U1NDcm9zc2ZhZGVWYWx1ZSh0aGlzKS0+bG9hZFN1YmltYWdlcyhjYWNoZWRSZXNvdXJjZUxvYWRl
cik7CisgICAgICAgIHN0YXRpY19jYXN0PENTU0Nyb3NzZmFkZVZhbHVlKj4odGhpcyktPmxvYWRT
dWJpbWFnZXMoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENhbnZhc0NsYXNzOgogICAgICAgICBzdGF0aWNfY2FzdDxDU1NDYW52YXNWYWx1ZSo+KHRoaXMp
LT5sb2FkU3ViaW1hZ2VzKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICAgICAgYnJlYWs7CiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGNhc2UgRmlsdGVySW1hZ2VDbGFzczoKLSAgICAg
ICAgdG9DU1NGaWx0ZXJJbWFnZVZhbHVlKHRoaXMpLT5sb2FkU3ViaW1hZ2VzKGNhY2hlZFJlc291
cmNlTG9hZGVyKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTRmlsdGVySW1hZ2VWYWx1ZSo+KHRo
aXMpLT5sb2FkU3ViaW1hZ2VzKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICAgICAgYnJlYWs7
CiAjZW5kaWYKICAgICBjYXNlIExpbmVhckdyYWRpZW50Q2xhc3M6CkBAIC0yMzcsMTIgKzIzNywx
MiBAQCB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTAogYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
OjpzdWJpbWFnZUlzUGVuZGluZyhDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5p
c0ltYWdlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIHRvQ1NTSW1hZ2VWYWx1ZSh2YWx1ZSktPmNh
Y2hlZE9yUGVuZGluZ0ltYWdlKCktPmlzUGVuZGluZ0ltYWdlKCk7CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4odmFsdWUpLT5jYWNoZWRPclBlbmRpbmdJbWFnZSgp
LT5pc1BlbmRpbmdJbWFnZSgpOwogICAgIAogICAgIGlmICh2YWx1ZS0+aXNJbWFnZUdlbmVyYXRv
clZhbHVlKCkpCi0gICAgICAgIHJldHVybiB0b0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUodmFsdWUp
LT5pc1BlbmRpbmcoKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdlR2VuZXJh
dG9yVmFsdWUqPih2YWx1ZSktPmlzUGVuZGluZygpOwogCi0gICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZU5vbmUpCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMjU2LDcgKzI1Niw3IEBAIENhY2hlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZh
bHVlOjpjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgQ2FjCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgaWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUoKSkgewotICAgICAgICBT
dHlsZUNhY2hlZEltYWdlKiBzdHlsZUNhY2hlZEltYWdlID0gdG9DU1NJbWFnZVZhbHVlKHZhbHVl
KS0+Y2FjaGVkSW1hZ2UoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAgICAgICBTdHlsZUNhY2hl
ZEltYWdlKiBzdHlsZUNhY2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KHZh
bHVlKS0+Y2FjaGVkSW1hZ2UoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAgICAgICBpZiAoIXN0
eWxlQ2FjaGVkSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gMDsKIApAQCAtMjY0LDEzICsyNjQs
MTIgQEAgQ2FjaGVkSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNhY2hlZEltYWdlRm9y
Q1NTVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBDYWMKICAgICB9CiAgICAgCiAgICAgaWYgKHZhbHVl
LT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSkgewotICAgICAgICB0b0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUodmFsdWUpLT5sb2FkU3ViaW1hZ2VzKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+KHZhbHVlKS0+bG9hZFN1Ymlt
YWdlcyhjYWNoZWRSZXNvdXJjZUxvYWRlcik7CiAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZSAoYW5kIHRodXMgY3Jvc3MtZmFkZXMgd2l0aCBncmFkaWVudHMg
YW5kIGNhbnZhcykuCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmICh2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpICYmIHRvQ1NTUHJpbWl0aXZlVmFsdWUKLSAgICAgICAgKHZhbHVl
KS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Z2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZUdlbmVyYXRvclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZS5oCmluZGV4IDhlY2Y3NDQxODUzNGZhZGYyM2E1OGYyN2ZkYzAxODY5MTk0OTE4YTEuLjY4
ZThhODI3ZGFlMGI5ZTQ3ZmUwMGEyYzE4ODVmMTRlM2ZmZDg3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaApAQCAtOTIsOCArOTIsNiBAQCBwcml2YXRl
OgogICAgIEhhc2hNYXA8SW50U2l6ZSwgT3duUHRyPENhY2hlZEdlbmVyYXRlZEltYWdlPiA+IG1f
aW1hZ2VzOwogfTsKIAotQ1NTX1ZBTFVFX1RZUEVfQ0FTVFMoSW1hZ2VHZW5lcmF0b3JWYWx1ZSkK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggYWVkM2Vl
MTQ1ZTU2M2U3N2IwMGU3ZjBhZjFkMTI5ZWZkZTllMTlhMS4uY2Q4ODU0ZjcwOWM2ZWUzZmE3NTRm
ZTg5YmE4NmYwYzQ3ZjBlYmE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlU2V0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVl
LmNwcApAQCAtNjIsMTYgKzYyLDE3IEBAIHZvaWQgQ1NTSW1hZ2VTZXRWYWx1ZTo6ZmlsbEltYWdl
U2V0KCkKICAgICB3aGlsZSAoaSA8IGxlbmd0aCkgewogICAgICAgICBDU1NWYWx1ZSogaW1hZ2VW
YWx1ZSA9IGl0ZW0oaSk7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGltYWdlVmFsdWUtPmlzSW1hZ2VWYWx1ZSgpKTsKLSAgICAgICAgU3RyaW5nIGltYWdlVVJMID0g
dG9DU1NJbWFnZVZhbHVlKGltYWdlVmFsdWUpLT51cmwoKTsKKyAgICAgICAgU3RyaW5nIGltYWdl
VVJMID0gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KGltYWdlVmFsdWUpLT51cmwoKTsKIAog
ICAgICAgICArK2k7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkg
PCBsZW5ndGgpOwogICAgICAgICBDU1NWYWx1ZSogc2NhbGVGYWN0b3JWYWx1ZSA9IGl0ZW0oaSk7
CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjYWxlRmFjdG9yVmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSk7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihzY2FsZUZhY3RvclZhbHVlKS0+Z2V0RmxvYXRW
YWx1ZSgpOwogCiAgICAgICAgIEltYWdlV2l0aFNjYWxlIGltYWdlOwogICAgICAgICBpbWFnZS5p
bWFnZVVSTCA9IGltYWdlVVJMOwotICAgICAgICBpbWFnZS5zY2FsZUZhY3RvciA9IHRvQ1NTUHJp
bWl0aXZlVmFsdWUoc2NhbGVGYWN0b3JWYWx1ZSktPmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAg
aW1hZ2Uuc2NhbGVGYWN0b3IgPSBzY2FsZUZhY3RvcjsKICAgICAgICAgbV9pbWFnZXNJblNldC5h
cHBlbmQoaW1hZ2UpOwogICAgICAgICArK2k7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZVNldFZhbHVlLmgKaW5kZXggMDJmZjI2YzM3Y2VhYTQwMmI3OGE3N2NlMDAwOGMwMTBkMTZiNTZl
MC4uYjE0MGYzYTk4OWQ0Y2IwYzMzNjY3MDIyYmQxNzc5ZGQ1ZTM5ODkwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCkBAIC04NCw4ICs4NCw2IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPEltYWdlV2l0aFNjYWxlPiBtX2ltYWdlc0luU2V0OwogfTsKIAotQ1NTX1ZBTFVFX1RZ
UEVfQ0FTVFMoSW1hZ2VTZXRWYWx1ZSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKENTU19JTUFHRV9TRVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaApp
bmRleCA5OWIwYzZjYzNlNzA4NTYzNDg1MGRhOWYzN2EyMmQzMjk3MGJhOTA5Li45MTE4N2Q4ODRl
NzE4NzhkOWM1NjY4NTZhNWYyODgxZTZmMDEyY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZh
bHVlLmgKQEAgLTY4LDggKzY4LDYgQEAgcHJpdmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV9pbml0
aWF0b3JOYW1lOwogfTsKIAotQ1NTX1ZBTFVFX1RZUEVfQ0FTVFMoSW1hZ2VWYWx1ZSkKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQ1NTSW1hZ2VWYWx1ZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCmluZGV4IGFhZjYxNTE5Nzc2YzIzYTJhNWQxNTFj
YTVhN2E0Nzk3NzVmOTljMjkuLjg4NmFhMGNmYWY1YTRmMGMzYjYxMWEzM2M3MDZjZGNlYjRlMDU3
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCkBAIC00NCw4ICs0NCw2
IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotQ1NTX1ZBTFVFX1RZUEVfQ0FTVFMoSW5oZXJpdGVk
VmFsdWUpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENTU0luaGVyaXRl
ZFZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaAppbmRleCAwMzVlYTU1OWNh
NjU1YTk3YzU4ODFiNTc1YjdkMDEwY2M4MDdkNzcxLi42ZTY5NTg4Y2YxMzk0MDA5YTAwOWFkM2U0
YjVhYTFlNzQ2NTBmZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlh
bFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCkBAIC01
Myw4ICs1Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW1wbGljaXQ7CiB9OwogCi1DU1Nf
VkFMVUVfVFlQRV9DQVNUUyhJbml0aWFsVmFsdWUpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIENTU0luaXRpYWxWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xp
bmVCb3hDb250YWluVmFsdWUuaAppbmRleCAxM2U4OGQ4MTgwZDRkOTg5MmZjNGVjNDNmZDc3MWVk
ZDlhZDI1NTY1Li5hM2M5Mjk4ZGJkYjQ1ZTM2NWQ1YTc0MTgwNDNjNzIyYzAyODM3MjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKQEAgLTU3LDggKzU3
LDYgQEAgcHJpdmF0ZToKICAgICBDU1NMaW5lQm94Q29udGFpblZhbHVlKExpbmVCb3hDb250YWlu
KTsKIH07CiAKLUNTU19WQUxVRV9UWVBFX0NBU1RTKExpbmVCb3hDb250YWluVmFsdWUpCi0KIH0g
Ly8gbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBkNzU2
MTQ0MTgyYjAwNTI0OTFkNGE5MDRiODdmZGJhMjdjYzE1NjBjLi5kMTc5MzFlOGQwODA1NWVjOGNm
ZWJkMmU1Y2NmN2E0YzY4YWQwY2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTM4
OSw3ICsxMzg5LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQogICAgIGlmICghdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZS0+aXNSR0JDb2xvcigp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1ODcsNyArMTU4Nyw3IEBAIHZvaWQgQ1NT
UGFyc2VyOjphZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUsIGJvCiAgICAgLy8gVGhpcyBwcm9wZXJ0eSBkb2Vzbid0IGJlbG9uZyB0byBh
IHNob3J0aGFuZCBvciBpcyBhIENTUyB2YXJpYWJsZSAod2hpY2ggd2lsbCBiZSByZXNvbHZlZCBs
YXRlcikuCiAgICAgaWYgKCFtX2N1cnJlbnRTaG9ydGhhbmQKICNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKLSAgICAgICAgfHwgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgdG9DU1NQcmlt
aXRpdmVWYWx1ZSh2YWx1ZS5nZXQoKSktPmlzVmFyaWFibGVOYW1lKCkpCisgICAgICAgIHx8ICh2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUuZ2V0KCkpLT5pc1ZhcmlhYmxlTmFtZSgpKQogI2VuZGlmCiAgICAgICAgICkgewog
ICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMuYXBwZW5kKENTU1Byb3BlcnR5KHByb3BJZCwgdmFs
dWUsIGltcG9ydGFudCwgZmFsc2UsIENTU1Byb3BlcnR5SW52YWxpZCwgbV9pbXBsaWNpdFNob3J0
aGFuZCB8fCBpbXBsaWNpdCkpOwpAQCAtNDExOCw4ICs0MTE4LDggQEAgdm9pZCBDU1NQYXJzZXI6
OnBhcnNlM1ZhbHVlc0ZpbGxQb3NpdGlvbihDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCwg
UmVmUHRyPEMKICAgICAgICAgdmFsdWUxLnN3YXAodmFsdWUyKTsKIAogI2lmbmRlZiBOREVCVUcK
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3QgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
MS5nZXQoKSk7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZCA9IHRvQ1NTUHJpbWl0aXZl
VmFsdWUodmFsdWUyLmdldCgpKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3QgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlMS5nZXQoKSk7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHNlY29uZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUy
LmdldCgpKTsKICAgICBpZGVudDEgPSBmaXJzdC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdl
dFZhbHVlSUQoKTsKICAgICBpZGVudDIgPSBzZWNvbmQtPmdldFBhaXJWYWx1ZSgpLT5maXJzdCgp
LT5nZXRWYWx1ZUlEKCk7CiAgICAgQVNTRVJUKGlkZW50MSA9PSBDU1NWYWx1ZUxlZnQgfHwgaWRl
bnQxID09IENTU1ZhbHVlUmlnaHQpOwpAQCAtNDE3OSw4ICs0MTc5LDggQEAgdm9pZCBDU1NQYXJz
ZXI6OnBhcnNlRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBSZWZQ
dHI8Q1NTVmFsdWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUxID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZTEuZ2V0
KCkpOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUyID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZSh2YWx1ZTIuZ2V0KCkpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gcGFyc2VkVmFsdWUxID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZTEu
Z2V0KCkpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUyID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZTIuZ2V0KCkpOwogCiAgICAgdmFsdWUx
LmNsZWFyKCk7CiAgICAgdmFsdWUyLmNsZWFyKCk7CkBAIC00Mjc3LDcgKzQyNzcsNyBAQCB2b2lk
IENTU1BhcnNlcjo6cGFyc2VGaWxsUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVm
UHRyPENTU1ZhbHVlPiYgdmFsdQogCiAgICAgLy8gSWYgb25seSBvbmUgdmFsdWUgd2FzIHNwZWNp
ZmllZCwgdmFsdWUyIGlzIHRoZSBzYW1lIGFzIHZhbHVlMS4KICAgICBtX2ltcGxpY2l0U2hvcnRo
YW5kID0gdHJ1ZTsKLSAgICB2YWx1ZTIgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUodG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZTEuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpOwor
ICAgIHZhbHVlMiA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlMS5nZXQoKSktPmdldFZhbHVlSUQoKSk7CiB9
CiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZShDU1NQcm9w
ZXJ0eUlEIHByb3BJZCwgYm9vbCYgYWxsb3dDb21tYSkKQEAgLTc3MDIsMTEgKzc3MDIsMTEgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclZh
bHVlTGlzdCogdmFsdWVMaXN0LCBSZWYKICAgICBBU1NFUlQoIWNlbnRlclggfHwgY2VudGVyWC0+
aXNQcmltaXRpdmVWYWx1ZSgpKTsKICAgICBBU1NFUlQoIWNlbnRlclkgfHwgY2VudGVyWS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKTsKIAotICAgIHJlc3VsdC0+c2V0Rmlyc3RYKHRvQ1NTUHJpbWl0aXZl
VmFsdWUoY2VudGVyWC5nZXQoKSkpOwotICAgIHJlc3VsdC0+c2V0U2Vjb25kWCh0b0NTU1ByaW1p
dGl2ZVZhbHVlKGNlbnRlclguZ2V0KCkpKTsKKyAgICByZXN1bHQtPnNldEZpcnN0WChzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNlbnRlclguZ2V0KCkpKTsKKyAgICByZXN1bHQtPnNl
dFNlY29uZFgoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjZW50ZXJYLmdldCgpKSk7
CiAgICAgLy8gQ1NTMyByYWRpYWwgZ3JhZGllbnRzIGFsd2F5cyBzaGFyZSB0aGUgc2FtZSBzdGFy
dCBhbmQgZW5kIHBvaW50LgotICAgIHJlc3VsdC0+c2V0Rmlyc3RZKHRvQ1NTUHJpbWl0aXZlVmFs
dWUoY2VudGVyWS5nZXQoKSkpOwotICAgIHJlc3VsdC0+c2V0U2Vjb25kWSh0b0NTU1ByaW1pdGl2
ZVZhbHVlKGNlbnRlclkuZ2V0KCkpKTsKKyAgICByZXN1bHQtPnNldEZpcnN0WShzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNlbnRlclkuZ2V0KCkpKTsKKyAgICByZXN1bHQtPnNldFNl
Y29uZFkoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjZW50ZXJZLmdldCgpKSk7CiAK
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNoYXBlVmFsdWU7CiAgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBzaXplVmFsdWU7CkBAIC03OTY2LDExICs3OTY2LDExIEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVM
aXN0LCBSZWZQdHI8Q1NTVmFsCiAgICAgICAgIGEgPSBhcmdzLT5jdXJyZW50KCk7CiAgICAgICAg
IGlmICghYSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0LT5zZXRG
aXJzdFgodG9DU1NQcmltaXRpdmVWYWx1ZShjZW50ZXJYLmdldCgpKSk7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0Rmlyc3RZKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWS5nZXQoKSkpOworICAgICAg
ICByZXN1bHQtPnNldEZpcnN0WChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNlbnRl
clguZ2V0KCkpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFkoc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihjZW50ZXJZLmdldCgpKSk7CiAgICAgICAgIC8vIFJpZ2h0IG5vdywgQ1NT
IHJhZGlhbCBncmFkaWVudHMgaGF2ZSB0aGUgc2FtZSBzdGFydCBhbmQgZW5kIGNlbnRlcnMuCi0g
ICAgICAgIHJlc3VsdC0+c2V0U2Vjb25kWCh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclguZ2V0
KCkpKTsKLSAgICAgICAgcmVzdWx0LT5zZXRTZWNvbmRZKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2Vu
dGVyWS5nZXQoKSkpOworICAgICAgICByZXN1bHQtPnNldFNlY29uZFgoc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihjZW50ZXJYLmdldCgpKSk7CisgICAgICAgIHJlc3VsdC0+c2V0U2Vj
b25kWShzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNlbnRlclkuZ2V0KCkpKTsKICAg
ICB9CiAKICAgICBpZiAoc2hhcGVWYWx1ZSB8fCBzaXplVmFsdWUgfHwgaG9yaXpvbnRhbFNpemUg
fHwgY2VudGVyWCB8fCBjZW50ZXJZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aAppbmRleCA2MzZjNjRiMDdmN2I4MTE1Y2Q1MWU2ZWIzMjIyYjIzZjFhN2VjOTFhLi42NDIwNmY4
Yzk0MWEyY2Q1NTBhMzZjNTZjYTA0ZjZiZDI4N2NiOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuaApAQCAtMzk2LDggKzM5Niw2IEBAIHByaXZhdGU6CiAgICAgfSBtX3Zh
bHVlOwogfTsKIAotQ1NTX1ZBTFVFX1RZUEVfQ0FTVFMoUHJpbWl0aXZlVmFsdWUpCi0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENTU1ByaW1pdGl2ZVZhbHVlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAppbmRleCAwZWYxMWNlNGIxNGFlODIzZWQzZTE4MTk2
NjRlZTZjMmY1NzIwN2JkLi44MmExYWYzOTljOTJiYzk2NWFmMWEzOGQwZjZhODU3NWEwZjI3YTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCkBAIC03MCw4ICs3MCw2IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBtX21hc2s7CiB9OwogCi1DU1NfVkFMVUVfVFlQ
RV9DQVNUUyhSZWZsZWN0VmFsdWUpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIENTU1JlZmxlY3RWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VG9TdHlsZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKaW5k
ZXggMjZlM2U5ODU4NWU1Y2JmODgwNTE1ZTA4NmMzMzE0OGZhNjAzYTQyNi4uNzJmYjk4NDE4M2Qx
YTE2YTA3MDBiNTFkNzg0MTJiYmM5Y2I5ODNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1RvU3R5bGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxl
TWFwLmNwcApAQCAtNzEsNyArNzEsOCBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxBdHRh
Y2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKgogICAgIGlm
ICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3dp
dGNoICh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpKSB7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgp
KSB7CiAgICAgY2FzZSBDU1NWYWx1ZUZpeGVkOgogICAgICAgICBsYXllci0+c2V0QXR0YWNobWVu
dChGaXhlZEJhY2tncm91bmRBdHRhY2htZW50KTsKICAgICAgICAgYnJlYWs7CkBAIC05Niw3ICs5
Nyw4IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENsaXAoQ1NTUHJvcGVydHlJRCwgRmls
bExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsYXllci0+c2V0Q2xpcCgqdG9DU1NQ
cmltaXRpdmVWYWx1ZSh2YWx1ZSkpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIGxheWVy
LT5zZXRDbGlwKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFw
RmlsbENvbXBvc2l0ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSog
dmFsdWUpCkBAIC0xMDksNyArMTExLDggQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsQ29t
cG9zaXRlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKgogICAgIGlm
ICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbGF5
ZXItPnNldENvbXBvc2l0ZSgqdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSkpOworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgIGxheWVyLT5zZXRDb21wb3NpdGUoKnByaW1pdGl2ZVZhbHVlKTsK
IH0KIAogdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsQmxlbmRNb2RlKENTU1Byb3BlcnR5SUQs
IEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKQEAgLTEyMiw3ICsxMjUsNyBAQCB2
b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxCbGVuZE1vZGUoQ1NTUHJvcGVydHlJRCwgRmlsbExh
eWVyKiBsYXllciwgQ1NTVmFsdWUqCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsK
ICAgICBsYXllci0+c2V0QmxlbmRNb2RlKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKQEAgLTEzNiw3
ICsxMzksOCBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxPcmlnaW4oQ1NTUHJvcGVydHlJ
RCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbAogICAgIGlmICghdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbGF5ZXItPnNldE9yaWdpbigq
dG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSkpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAg
IGxheWVyLT5zZXRPcmlnaW4oKnByaW1pdGl2ZVZhbHVlKTsKIH0KIAogCkBAIC0xNjAsNyArMTY0
LDggQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0WChDU1NQcm9wZXJ0eUlELCBG
aWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmEKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxheWVyLT5zZXRSZXBlYXRYKCp0b0NT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgbGF5
ZXItPnNldFJlcGVhdFgoKnByaW1pdGl2ZVZhbHVlKTsKIH0KIAogdm9pZCBDU1NUb1N0eWxlTWFw
OjptYXBGaWxsUmVwZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1
ZSogdmFsdWUpCkBAIC0xNzMsNyArMTc4LDggQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxs
UmVwZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmEKICAg
ICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGxheWVyLT5zZXRSZXBlYXRZKCp0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSk7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgbGF5ZXItPnNldFJlcGVhdFkoKnByaW1pdGl2ZVZhbHVlKTsK
IH0KIAogdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlELCBGaWxs
TGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCkBAIC0xODMsNyArMTg5LDcgQEAgdm9pZCBD
U1NUb1N0eWxlTWFwOjptYXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVy
LCBDU1NWYWx1ZSogdmFsdWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlQ29udGFpbikKICAgICAgICAgbGF5ZXItPnNldFNpemVUeXBlKENvbnRh
aW4pOwogICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFs
dWVDb3ZlcikKQEAgLTIzMyw3ICsyMzksNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxY
UG9zaXRpb24oQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLAogCiAg
ICAgZmxvYXQgem9vbUZhY3RvciA9IHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKIAotICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFs
dWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVW
YWx1ZS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgaWYgKHBhaXIpIHsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChwcm9wZXJ0eUlELCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCk7CkBA
IC0yNjksNyArMjc1LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwKIAogICAgIGZsb2F0IHpv
b21GYWN0b3IgPSBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CiAKLSAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlKTsKICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPmdldFBh
aXJWYWx1ZSgpOwogICAgIGlmIChwYWlyKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVy
dHlJRCwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgfHwgcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkpOwpAQCAtMzA0LDcgKzMx
MCw4IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbE1hc2tTb3VyY2VUeXBlKENTU1Byb3Bl
cnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzd2l0Y2ggKHRvQ1NTUHJpbWl0aXZl
VmFsdWUodmFsdWUpLT5nZXRWYWx1ZUlEKCkpIHsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1Zh
bHVlQWxwaGE6CiAgICAgICAgIHR5cGUgPSBFTWFza1NvdXJjZVR5cGU6Ok1hc2tBbHBoYTsKICAg
ICAgICAgYnJlYWs7CkBAIC0zMzAsNyArMzM3LDggQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBB
bmltYXRpb25EZWxheShBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQogICAg
IGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YW5pbWF0aW9uLT5zZXREZWxheSh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Y29tcHV0ZVRp
bWU8ZG91YmxlLCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CisgICAgYW5pbWF0aW9uLT5zZXREZWxheShwcmltaXRpdmVWYWx1ZS0+Y29tcHV0
ZVRpbWU8ZG91YmxlLCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7CiB9CiAKIHZvaWQg
Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uKEFuaW1hdGlvbiogbGF5ZXIsIENT
U1ZhbHVlKiB2YWx1ZSkKQEAgLTM0Myw3ICszNTEsOCBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1h
cEFuaW1hdGlvbkRpcmVjdGlvbihBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAg
ICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzd2l0Y2ggKHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5nZXRWYWx1ZUlEKCkpIHsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1
ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgogICAgICAgICBsYXllci0+c2V0RGly
ZWN0aW9uKEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsKTsKICAgICAgICAgYnJl
YWs7CkBAIC0zNzEsNyArMzgwLDggQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25E
dXJhdGlvbihBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYW5pbWF0
aW9uLT5zZXREdXJhdGlvbih0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Y29tcHV0ZVRpbWU8
ZG91YmxlLCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0
ZVRpbWU8ZG91YmxlLCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7CiB9CiAKIHZvaWQg
Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0aW9uKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQpAQCAtMzg0LDcgKzM5NCw4IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFw
QW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogICAg
IGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c3dpdGNoICh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpKSB7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJ
RCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CiAgICAgICAgIGxheWVyLT5zZXRGaWxsTW9k
ZShBbmltYXRpb25GaWxsTW9kZU5vbmUpOwogICAgICAgICBicmVhazsKQEAgLTQxMiw3ICs0MjMs
NyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KEFuaW1h
dGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdgogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVJ
bmZpbml0ZSkKICAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRpb25Db3VudChBbmltYXRpb246
Okl0ZXJhdGlvbkNvdW50SW5maW5pdGUpOwogICAgIGVsc2UKQEAgLTQyOSw3ICs0NDAsNyBAQCB2
b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbk5hbWUoQW5pbWF0aW9uKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9D
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICBs
YXllci0+c2V0SXNOb25lQW5pbWF0aW9uKHRydWUpOwogICAgIGVsc2UKQEAgLTQ0Niw3ICs0NTcs
OCBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblBsYXlTdGF0ZShBbmltYXRpb24q
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFQW5pbVBsYXlTdGF0ZSBwbGF5U3RhdGUgPSAo
dG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVBhdXNl
ZCkgPyBBbmltUGxheVN0YXRlUGF1c2VkIDogQW5pbVBsYXlTdGF0ZVBsYXlpbmc7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgRUFuaW1QbGF5U3RhdGUgcGxheVN0YXRlID0gKHByaW1pdGl2
ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVQYXVzZWQpID8gQW5pbVBsYXlTdGF0ZVBh
dXNlZCA6IEFuaW1QbGF5U3RhdGVQbGF5aW5nOwogICAgIGxheWVyLT5zZXRQbGF5U3RhdGUocGxh
eVN0YXRlKTsKIH0KIApAQCAtNDYxLDcgKzQ3Myw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFw
QW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkK
ICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFs
dWUodmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQWxsKSB7CiAgICAgICAgIGFuaW1hdGlvbi0+c2V0
QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFuaW1hdGVBbGwpOwogICAgICAgICBhbmltYXRpb24t
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxpZCk7CkBAIC00ODIsNyArNDk0LDggQEAgdm9p
ZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmltYXRpb24qIGFu
aW1hdGlvbiwgQ1NTVmFsdWUqIHYKICAgICB9CiAKICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkgewotICAgICAgICBzd2l0Y2ggKHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5n
ZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIHN3aXRj
aCAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkgewogICAgICAgICBjYXNlIENTU1ZhbHVl
TGluZWFyOgogICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihMaW5lYXJU
aW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01ODgsNyAr
NjAxLDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKENTU1Zh
bHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWcKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gUmV0cmlldmUgdGhlIGJvcmRlciBpbWFnZSB2YWx1ZS4KLSAgICBDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWUqIGJvcmRlckltYWdlU2xpY2UgPSB0b0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZSh2
YWx1ZSk7CisgICAgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKiBib3JkZXJJbWFnZVNsaWNlID0g
c3RhdGljX2Nhc3Q8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKj4odmFsdWUpOwogCiAgICAgLy8g
U2V0IHVwIGEgbGVuZ3RoIGJveCB0byByZXByZXNlbnQgb3VyIGltYWdlIHNsaWNlcy4KICAgICBM
ZW5ndGhCb3ggYm94OwpAQCAtNjI0LDcgKzYzNyw3IEBAIExlbmd0aEJveCBDU1NUb1N0eWxlTWFw
OjptYXBOaW5lUGllY2VJbWFnZVF1YWQoQ1NTVmFsdWUqIHZhbHVlKQogICAgIGZsb2F0IHpvb20g
PSB1c2VTVkdab29tUnVsZXMoKSA/IDEuMGYgOiBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CiAK
ICAgICAvLyBSZXRyaWV2ZSB0aGUgcHJpbWl0aXZlIHZhbHVlLgotICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBib3JkZXJXaWR0aHMgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogYm9yZGVyV2lkdGhzID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CiAKICAgICAvLyBTZXQgdXAgYSBsZW5ndGggYm94IHRvIHJlcHJlc2VudCBv
dXIgaW1hZ2Ugc2xpY2VzLgogICAgIExlbmd0aEJveCBib3g7IC8vIERlZmF1bHRzIHRvICdhdXRv
JyBzbyB3ZSBkb24ndCBoYXZlIHRvIGhhbmRsZSB0aGF0IGV4cGxpY2l0bHkgYmVsb3cuCkBAIC02
NjUsNyArNjc4LDggQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJlcGVh
dChDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWEKICAgICBpZiAoIXZhbHVlIHx8
ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBQYWly
KiBwYWlyID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmdldFBhaXJWYWx1ZSgpOworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0
UGFpclZhbHVlKCk7CiAgICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5z
ZWNvbmQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCA4
ZjVhOWZjNzc5NThiNDIzYjEwN2YzMTU1NTQxODQ4ZjM5ZTU1Mzg3Li5iNDI4ZjkxMDQzZTNiYzE1
OWQ1OWYwNTMyNzViYTJmODYxY2JkYmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTM4
MywxNiArMzgzLDE2IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogCiAgICAgc3dpdGNoIChj
bGFzc1R5cGUoKSkgewogICAgIGNhc2UgQXNwZWN0UmF0aW9DbGFzczoKLSAgICAgICAgZGVsZXRl
IHRvQ1NTQXNwZWN0UmF0aW9WYWx1ZSh0aGlzKTsKKyAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0
PENTU0FzcGVjdFJhdGlvVmFsdWUqPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
Qm9yZGVySW1hZ2VTbGljZUNsYXNzOgotICAgICAgICBkZWxldGUgdG9DU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWUodGhpcyk7CisgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUqPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ2FudmFzQ2xh
c3M6CiAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxDU1NDYW52YXNWYWx1ZSo+KHRoaXMpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDdXJzb3JJbWFnZUNsYXNzOgotICAgICAgICBkZWxl
dGUgdG9DU1NDdXJzb3JJbWFnZVZhbHVlKHRoaXMpOworICAgICAgICBkZWxldGUgc3RhdGljX2Nh
c3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+KHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBGb250Q2xhc3M6CiAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxGb250VmFsdWUqPih0aGlz
KTsKQEAgLTQxMywxOSArNDEzLDE5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgICAg
ICBkZWxldGUgc3RhdGljX2Nhc3Q8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZSo+KHRoaXMpOwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBDcm9zc2ZhZGVDbGFzczoKLSAgICAgICAgZGVsZXRlIHRv
Q1NTQ3Jvc3NmYWRlVmFsdWUodGhpcyk7CisgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxDU1ND
cm9zc2ZhZGVWYWx1ZSo+KHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJbWFnZUNs
YXNzOgotICAgICAgICBkZWxldGUgdG9DU1NJbWFnZVZhbHVlKHRoaXMpOworICAgICAgICBkZWxl
dGUgc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KHRoaXMpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBJbmhlcml0ZWRDbGFzczoKLSAgICAgICAgZGVsZXRlIHRvQ1NTSW5oZXJpdGVkVmFs
dWUodGhpcyk7CisgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxDU1NJbmhlcml0ZWRWYWx1ZSo+
KHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJbml0aWFsQ2xhc3M6Ci0gICAgICAg
IGRlbGV0ZSB0b0NTU0luaXRpYWxWYWx1ZSh0aGlzKTsKKyAgICAgICAgZGVsZXRlIHN0YXRpY19j
YXN0PENTU0luaXRpYWxWYWx1ZSo+KHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBQ
cmltaXRpdmVDbGFzczoKLSAgICAgICAgZGVsZXRlIHRvQ1NTUHJpbWl0aXZlVmFsdWUodGhpcyk7
CisgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRoaXMpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBSZWZsZWN0Q2xhc3M6CiAgICAgICAgIGRlbGV0ZSBz
dGF0aWNfY2FzdDxDU1NSZWZsZWN0VmFsdWUqPih0aGlzKTsKQEAgLTQ0OSwxOSArNDQ5LDE5IEBA
IHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8V2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUqPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
TGluZUJveENvbnRhaW5DbGFzczoKLSAgICAgICAgZGVsZXRlIHRvQ1NTTGluZUJveENvbnRhaW5W
YWx1ZSh0aGlzKTsKKyAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PENTU0xpbmVCb3hDb250YWlu
VmFsdWUqPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ2FsY3VsYXRpb25DbGFz
czoKLSAgICAgICAgZGVsZXRlIHRvQ1NTQ2FsY1ZhbHVlKHRoaXMpOworICAgICAgICBkZWxldGUg
c3RhdGljX2Nhc3Q8Q1NTQ2FsY1ZhbHVlKj4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICNpZiBF
TkFCTEUoQ1NTX0lNQUdFX1NFVCkKICAgICBjYXNlIEltYWdlU2V0Q2xhc3M6Ci0gICAgICAgIGRl
bGV0ZSB0b0NTU0ltYWdlU2V0VmFsdWUodGhpcyk7CisgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2Fz
dDxDU1NJbWFnZVNldFZhbHVlKj4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogI2lm
IEVOQUJMRShDU1NfRklMVEVSUykKICAgICBjYXNlIEZpbHRlckltYWdlQ2xhc3M6Ci0gICAgICAg
IGRlbGV0ZSB0b0NTU0ZpbHRlckltYWdlVmFsdWUodGhpcyk7CisgICAgICAgIGRlbGV0ZSBzdGF0
aWNfY2FzdDxDU1NGaWx0ZXJJbWFnZVZhbHVlKj4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFdlYktpdENTU0ZpbHRlckNsYXNzOgogICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8
V2ViS2l0Q1NTRmlsdGVyVmFsdWUqPih0aGlzKTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIENT
U1ZhbHVlOjpkZXN0cm95KCkKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFdlYktpdENTU01p
eEZ1bmN0aW9uVmFsdWUqPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgV2ViS2l0
Q1NTU2hhZGVyQ2xhc3M6Ci0gICAgICAgIGRlbGV0ZSB0b1dlYktpdENTU1NoYWRlclZhbHVlKHRo
aXMpOworICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTU2hhZGVyVmFsdWUqPih0
aGlzKTsKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgK
aW5kZXggMGQ5ODhhM2NmZjdkOGNlMDM4MDU0N2NlOGE1YjIyY2MyYjg5ZjIzZS4uODFhMmUwZmY2
MmU2YTk5MmRhYTY5NDU4MDcxZDczNjQzMDc0YjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAg
LTg5LDggKzg5LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uQ2xhc3M7IH0KICAgICBib29sIGlzU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gU3RlcHNUaW1pbmdGdW5jdGlvbkNsYXNzOyB9
CiAgICAgYm9vbCBpc1dlYktpdENTU1RyYW5zZm9ybVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc1R5cGUgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtQ2xhc3M7IH0KLSAgICBib29sIGlzTGluZUJv
eENvbnRhaW5WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IExpbmVCb3hDb250
YWluQ2xhc3M7IH0KLSAgICBib29sIGlzQ2FsY1ZhbHVlKCkgY29uc3Qge3JldHVybiBtX2NsYXNz
VHlwZSA9PSBDYWxjdWxhdGlvbkNsYXNzOyB9CisgICAgYm9vbCBpc0NTU0xpbmVCb3hDb250YWlu
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBMaW5lQm94Q29udGFpbkNsYXNz
OyB9CisgICAgYm9vbCBpc0NhbGN1bGF0aW9uVmFsdWUoKSBjb25zdCB7cmV0dXJuIG1fY2xhc3NU
eXBlID09IENhbGN1bGF0aW9uQ2xhc3M7IH0KICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAg
Ym9vbCBpc0ZpbHRlckltYWdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBG
aWx0ZXJJbWFnZUNsYXNzOyB9CiAgICAgYm9vbCBpc1dlYktpdENTU0ZpbHRlclZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gV2ViS2l0Q1NTRmlsdGVyQ2xhc3M7IH0KQEAgLTI2
NCwyMCArMjY0LDYgQEAgaW5saW5lIGJvb2wgY29tcGFyZUNTU1ZhbHVlUHRyKGNvbnN0IFJlZlB0
cjxDU1NWYWx1ZVR5cGU+JiBmaXJzdCwgY29uc3QgUmVmUHRyPEMKICAgICByZXR1cm4gZmlyc3Qg
PyBzZWNvbmQgJiYgZmlyc3QtPmVxdWFscygqc2Vjb25kKSA6ICFzZWNvbmQ7CiB9CiAKLSNkZWZp
bmUgQ1NTX1ZBTFVFX1RZUEVfQ0FTVFMoVmFsdWVUeXBlTmFtZSkgXAotaW5saW5lIGNvbnN0IENT
UyMjVmFsdWVUeXBlTmFtZSogdG9DU1MjI1ZhbHVlVHlwZU5hbWUoY29uc3QgQ1NTVmFsdWUqIHZh
bHVlKSBcCi17IFwKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighdmFsdWUg
fHwgdmFsdWUtPmlzIyNWYWx1ZVR5cGVOYW1lKCkpOyBcCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IENTUyMjVmFsdWVUeXBlTmFtZSo+KHZhbHVlKTsgXAotfSBcCi1pbmxpbmUgQ1NTIyNW
YWx1ZVR5cGVOYW1lKiB0b0NTUyMjVmFsdWVUeXBlTmFtZShDU1NWYWx1ZSogdmFsdWUpIFwKLXsg
XAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCF2YWx1ZSB8fCB2YWx1ZS0+
aXMjI1ZhbHVlVHlwZU5hbWUoKSk7IFwKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTIyNWYWx1
ZVR5cGVOYW1lKj4odmFsdWUpOyBcCi19IFwKLXZvaWQgdG9DU1MjI1ZhbHVlVHlwZU5hbWUoY29u
c3QgQ1NTIyNWYWx1ZVR5cGVOYW1lKik7IFwKLXZvaWQgdG9DU1MjI1ZhbHVlVHlwZU5hbWUoY29u
c3QgQ1NTIyNWYWx1ZVR5cGVOYW1lJik7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIENTU1ZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAppbmRleCA3ZTYyN2Ez
ZTY4NzI3ZWFmZDMzMDA2NzhmNWY5ZDA4Zjg0MTYwMDdjLi45ZWUxYWZhOTI5YTc1ODAxMTY5ZTI5
MjdiMjY3M2Q2ZjlmMGJiZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC05Niw4
ICs5Niw2IEBAIHByaXZhdGU6CiAgICAgQ1NTVmFsdWVMaXN0KiBtX2xpc3Q7CiB9OwogCi1DU1Nf
VkFMVUVfVFlQRV9DQVNUUyhWYWx1ZUxpc3QpCi0KIC8vIFdyYXBwZXIgdGhhdCBjYW4gYmUgdXNl
ZCB0byBpdGVyYXRlIG92ZXIgYW55IENTU1ZhbHVlLiBOb24tbGlzdCB2YWx1ZXMgYW5kIDAgYmVo
YXZlIGFzIHplcm8tbGVuZ3RoIGxpc3RzLgogLy8gT2JqZWN0cyBvZiB0aGlzIGNsYXNzIGFyZSBp
bnRlbmRlZCB0byBiZSBzdGFjay1hbGxvY2F0ZWQgYW5kIHNjb3BlZCB0byBhIHNpbmdsZSBmdW5j
dGlvbi4KIC8vIFBsZWFzZSB0YWtlIGNhcmUgbm90IHRvIHBhc3MgdGhlc2UgYXJvdW5kIGFzIHRo
ZXkgZG8gaG9sZCBvbnRvIGEgcmF3IHBvaW50ZXIuCkBAIC0xMTMsNyArMTExLDYgQEAgcHJpdmF0
ZToKICAgICBDU1NWYWx1ZUxpc3RJbnNwZWN0b3IgbV9pbnNwZWN0b3I7CiAgICAgc2l6ZV90IG1f
cG9zaXRpb247CiB9OwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBDU1NW
YWx1ZUxpc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZhbHVlLmgKaW5kZXggZTk0MTAz
YThkNzBkZmNlZjM4ZDJmYzhiODExNzA1NjI2ZGM1M2VhOC4uYzgzYzZhYmMwMTY3NjE1ZmNlYmQ3
NDQwNmU4MzU3MmI4ZGI1ZGM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
cmlhYmxlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5o
CkBAIC02MSw4ICs2MSw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fdmFsdWU7CiB9
OwogCi1DU1NfVkFMVUVfVFlQRV9DQVNUUyhWYXJpYWJsZVZhbHVlKQotCiB9CiAKICNlbmRpZiAv
KiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNh
dGVkU3R5bGVCdWlsZGVyLmNwcAppbmRleCA0YTI5MjdlYmY1ZjFiMThiNzE1NGJmMGU0Y2IxZTI2
NzMyZDE1NjkwLi5mZjU4NTIwNTdmMjkxMzgzMGM1MWE4OWY0ZWYzZTRhNDVlNjQwZTdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCkBAIC0xNTAs
NyArMTUwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTUHJvcGVy
dHlJRCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAg
IHsKICAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICBz
ZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCAqdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSkpOworICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgKnN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpKTsKICAgICB9CiAgICAgc3RhdGljIFBy
b3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKICAgICB7CkBAIC0xNjgsNyArMTY4LDcgQEAg
cHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBpZE1hcHNUb01p
bnVzT25lKQogICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgLTEp
OwogICAgICAgICBlbHNlCkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogICAgICAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1
ZSh2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBhdXRvSWRlbnRpdHkpCiAgICAgICAgICAgICBzZXRB
dXRvKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkpOwogICAgICAgICBlbHNlIGlmICh2YWx1ZVR5cGUg
PT0gTnVtYmVyKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFs
dWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKIAogICAgICAgICBpZiAoUmVjdCogcmVj
dCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRSZWN0VmFsdWUoKSkgewogICAgICAgICAgICAgTGVuZ3Ro
IHRvcCA9IGNvbnZlcnRUb0xlbmd0aChzdHlsZVJlc29sdmVyLCByZWN0LT50b3AoKSk7CkBAIC0z
MDEsNyArMzAxLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICBpZiAoaW5oZXJpdENvbG9yRnJvbVBhcmVudCAmJiBw
cmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9yKQogICAg
ICAgICAgICAgYXBwbHlJbmhlcml0VmFsdWUocHJvcGVydHlJRCwgc3R5bGVSZXNvbHZlcik7CiAg
ICAgICAgIGVsc2UgewpAQCAtMzYyLDcgKzM2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUo
dmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKICAgICAgICAgaWYgKG5vbmVFbmFi
bGVkICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSB7CiAg
ICAgICAgICAgICBpZiAobm9uZVVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICBzZXRWYWx1ZShz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLCBMZW5ndGgoVW5kZWZpbmVkKSk7CkBAIC00MTYsNyArNDE2
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CiAgICAgICAgIGlmICgoaWRlbnRCZWhhdmlvciA9PSBNYXBOb25lVG9OdWxs
ICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAg
ICAgICAgfHwgKGlkZW50QmVoYXZpb3IgPT0gTWFwQXV0b1RvTnVsbCAmJiBwcmltaXRpdmVWYWx1
ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykpCiAgICAgICAgICAgICBzZXRWYWx1ZShz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLCBudWxsQXRvbSk7CkBAIC00MzksNyArNDM5LDggQEAgcHVi
bGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgUGFpciogcGFpciA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFs
dWUpLT5nZXRQYWlyVmFsdWUoKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAg
IFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgICAgIGlm
ICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTYwMSw3ICs2MDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZh
bHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAKICAgICAgICAgQ1NTVmFsdWVJRCBp
ZGVudCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCk7CiAgICAgICAgIFQgbGVuZ3RoOwpA
QCAtNjcxLDggKzY3Miw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CiAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdHls
ZVJlc29sdmVyLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgKGZvbnREZXNjcmlwdGlvbi4q
c2V0dGVyRnVuY3Rpb24pKCp0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSk7CisgICAgICAgIChm
b250RGVzY3JpcHRpb24uKnNldHRlckZ1bmN0aW9uKSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAg
ICBzdHlsZVJlc29sdmVyLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAg
ICB9CiAKQEAgLTcyNCw3ICs3MjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBDU1NWYWx1ZSog
aXRlbSA9IGkudmFsdWUoKTsKICAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlbSk7CisgICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihpdGVtKTsKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBmYWNlOwogICAg
ICAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS0+aXNTdHJpbmcoKSkKICAgICAgICAgICAgICAgICBm
YWNlID0gY29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOwpAQCAtODM0LDcgKzgzNiw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKIAogICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNv
bHZlci0+c3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7CiAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRLZXl3b3JkU2l6ZSgwKTsKQEAgLTg0Nyw3ICs4NDksNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBwYXJlbnRJc0Fic29sdXRlU2l6ZSA9IHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCkt
PmZvbnREZXNjcmlwdGlvbigpLmlzQWJzb2x1dGVTaXplKCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoQ1NTVmFsdWVJRCBpZGVudCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5nZXRW
YWx1ZUlEKCkpIHsKKyAgICAgICAgaWYgKENTU1ZhbHVlSUQgaWRlbnQgPSBwcmltaXRpdmVWYWx1
ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgICAgICAgICAvLyBLZXl3b3JkcyBhcmUgYmVpbmcgdXNl
ZC4KICAgICAgICAgICAgIHN3aXRjaCAoaWRlbnQpIHsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVYeFNtYWxsOgpAQCAtOTA4LDcgKzkxMCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlm
ICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1
ZSh2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICBGb250RGVzY3Jp
cHRpb24gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci0+Zm9udERlc2NyaXB0aW9uKCk7
CiAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkgewogICAgICAg
ICBjYXNlIENTU1ZhbHVlSW52YWxpZDoKQEAgLTk2OSw3ICs5NzEsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soaSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlbSktPmdldFZh
bHVlSUQoKSkgeworICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vQ29tbW9uTGlnYXR1cmVzOgogICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbW9uTGlnYXR1cmVzU3RhdGUgPSBGb250RGVzY3JpcHRpb246
OkRpc2FibGVkTGlnYXR1cmVzU3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTk5OCw3ICsxMDAxLDcgQEAgcHVibGljOgogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTih2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgIEFTU0VSVCh0b0NTU1ByaW1p
dGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKKyAgICAg
ICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Z2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTEx
NDYsNyArMTE0OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSog
dmFsdWUpCiAgICAgewotICAgICAgICBib29sIHNldENvdW50ZXJJbmNyZW1lbnRUb05vbmUgPSBj
b3VudGVyQmVoYXZpb3IgPT0gSW5jcmVtZW50ICYmIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkg
JiYgdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmU7CisgICAgICAgIGJvb2wgc2V0Q291bnRlckluY3JlbWVudFRvTm9uZSA9IGNvdW50ZXJCZWhh
dmlvciA9PSBJbmNyZW1lbnQgJiYgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
Tm9uZTsKIAogICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpICYmICFzZXRDb3VudGVy
SW5jcmVtZW50VG9Ob25lKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE3MSw3ICsxMTc0LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgUGFpciogcGFpciA9
IHRvQ1NTUHJpbWl0aXZlVmFsdWUoY3VyclZhbHVlKS0+Z2V0UGFpclZhbHVlKCk7CisgICAgICAg
ICAgICBQYWlyKiBwYWlyID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjdXJyVmFs
dWUpLT5nZXRQYWlyVmFsdWUoKTsKICAgICAgICAgICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmly
c3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAg
LTEyMTMsMTggKzEyMTYsMTggQEAgcHVibGljOgogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKICAgICAgICAgICAgICAgICBpZiAoaXRlbS0+aXND
dXJzb3JJbWFnZVZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZSogaW1hZ2UgPSB0b0NTU0N1cnNvckltYWdlVmFsdWUoaXRlbSk7CisgICAgICAgICAgICAg
ICAgICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29y
SW1hZ2VWYWx1ZSo+KGl0ZW0pOwogICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnVwZGF0
ZUlmU1ZHQ3Vyc29ySXNVc2VkKHN0eWxlUmVzb2x2ZXItPmVsZW1lbnQoKSkpIC8vIEVsZW1lbnRz
IHdpdGggU1ZHIGN1cnNvcnMgYXJlIG5vdCBhbGxvd2VkIHRvIHNoYXJlIHN0eWxlLgogICAgICAg
ICAgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VW5pcXVlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmFkZEN1cnNvcihzdHls
ZVJlc29sdmVyLT5zdHlsZUltYWdlKENTU1Byb3BlcnR5Q3Vyc29yLCBpbWFnZSksIGltYWdlLT5o
b3RTcG90KCkpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlbSk7CisgICAgICAgICAgICAgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4oaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+aXNWYWx1ZUlEKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5z
dHlsZSgpLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgewotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9D
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsK
ICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNWYWx1ZUlEKCkgJiYgc3R5bGVSZXNv
bHZlci0+c3R5bGUoKS0+Y3Vyc29yKCkgIT0gRUN1cnNvcigqcHJpbWl0aXZlVmFsdWUpKQogICAg
ICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEN1cnNvcigqcHJpbWl0aXZl
VmFsdWUpOwogICAgICAgICB9CkBAIC0xMjQwLDcgKzEyNDMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2
ZVZhbHVlKHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgICAgIEFTU0VS
VChwcmltaXRpdmVWYWx1ZS0+aXNWYWx1ZUlEKCkpOwogCiAgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlV2Via2l0TWF0Y2hQYXJlbnQpCkBAIC0xMjY3
LDcgKzEyNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3Ig
aSh2YWx1ZSk7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewogICAgICAgICAgICAgQ1NTVmFs
dWUqIGl0ZW0gPSBpLnZhbHVlKCk7CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICAgICAgdCB8PSAq
dG9DU1NQcmltaXRpdmVWYWx1ZShpdGVtKTsKKyAgICAgICAgICAgIHQgfD0gKnN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CiAgICAgICAgIH0KICAgICAgICAgc3R5bGVSZXNv
bHZlci0+c3R5bGUoKS0+c2V0VGV4dERlY29yYXRpb24odCk7CiAgICAgfQpAQCAtMTI4NSw3ICsx
Mjg4LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkgewog
ICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGw6CkBAIC0xMzIwLDcgKzEzMjMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlSW5maW5pdGUp
CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRNYXJxdWVlTG9vcENvdW50
KC0xKTsgLy8gLTEgbWVhbnMgcmVwZWF0IGZvcmV2ZXIuCiAgICAgICAgIGVsc2UgaWYgKHByaW1p
dGl2ZVZhbHVlLT5pc051bWJlcigpKQpAQCAtMTM0MCw3ICsxMzQzLDcgQEAgcHVibGljOgogICAg
ICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmlt
aXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICBp
ZiAoQ1NTVmFsdWVJRCBpZGVudCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAg
ICAgICAgICAgIHN3aXRjaCAoaWRlbnQpIHsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTbG93
OgpAQCAtMTM3NCw3ICsxMzc3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gVGhpcyBp
cyB0cnVlIGlmIHZhbHVlIGlzICdhdXRvJyBvciAnYWxwaGFiZXRpYycuCiAgICAgICAgIGlmICh2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBUZXh0VW5kZXJsaW5lUG9z
aXRpb24gdCA9ICp0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIFRleHRV
bmRlcmxpbmVQb3NpdGlvbiB0ID0gKnN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOwogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dFVuZGVybGlu
ZVBvc2l0aW9uKHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNDAzLDcg
KzE0MDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CiAgICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0OwogCiAgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQpAQCAtMTQ0MSw3
ICsxNDQ0LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOwogICAgICAgICBMZW5ndGggbGluZUhlaWdodDsKIAogICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC0xNTgzLDgg
KzE1ODYsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfSB8IDxwYWdlLXNp
emU+IDxvcmllbnRhdGlvbj4KICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yLmZpcnN0KCktPmlz
UHJpbWl0aXZlVmFsdWUoKSB8fCAhaW5zcGVjdG9yLnNlY29uZCgpLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGZpcnN0ID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpbnNwZWN0b3IuZmlyc3QoKSk7Ci0gICAg
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gdG9DU1NQcmltaXRpdmVWYWx1ZShp
bnNwZWN0b3Iuc2Vjb25kKCkpOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3IuZmlyc3QoKSk7Cisg
ICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihpbnNwZWN0b3Iuc2Vjb25kKCkpOwogICAgICAgICAgICAgaWYgKGZpcnN0
LT5pc0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0KICAgICAgICAg
ICAgICAgICBpZiAoIXNlY29uZC0+aXNMZW5ndGgoKSkKQEAgLTE2MDQsNyArMTYwNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNpemU+IHwgWyBw
b3J0cmFpdCB8IGxhbmRzY2FwZV0KICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yLmZpcnN0KCkt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KGluc3BlY3Rvci5maXJzdCgpKTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaW5zcGVjdG9yLmZp
cnN0KCkpOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gPGxlbmd0aD4KICAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUg
PSBQQUdFX1NJWkVfUkVTT0xWRUQ7CkBAIC0xNjY4LDcgKzE2NzEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVtKTsKKyAgICAgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogdmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0p
OwogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRmls
bGVkIHx8IHZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVPcGVuKQogICAgICAgICAgICAg
ICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKCp2YWx1
ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMTY4MCw3ICsxNjgzLDcgQEAgcHVibGljOgog
CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogCiAgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNTdHJpbmcoKSkgewogICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmls
bGVkKTsKQEAgLTE4MDksNyArMTgxMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUp
OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKIAogICAgICAgICBFUmVzaXplIHIgPSBSRVNJ
WkVfTk9ORTsKICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7
CkBAIC0xODM5LDcgKzE4NDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRWYWx1ZUlEKCkpCiAgICAgICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+
c2V0VmVydGljYWxBbGlnbigqcHJpbWl0aXZlVmFsdWUpOwpAQCAtMTg3OCw3ICsxODgxLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0
UmF0aW8oZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIENT
U0FzcGVjdFJhdGlvVmFsdWUqIGFzcGVjdFJhdGlvVmFsdWUgPSB0b0NTU0FzcGVjdFJhdGlvVmFs
dWUodmFsdWUpOworICAgICAgICBDU1NBc3BlY3RSYXRpb1ZhbHVlKiBhc3BlY3RSYXRpb1ZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTQXNwZWN0UmF0aW9WYWx1ZSo+KHZhbHVlKTsKICAgICAgICAgc3R5
bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8odHJ1ZSk7CiAgICAgICAgIHN0
eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3IoYXNwZWN0UmF0
aW9WYWx1ZS0+ZGVub21pbmF0b3JWYWx1ZSgpKTsKICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5
bGUoKS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoYXNwZWN0UmF0aW9WYWx1ZS0+bnVtZXJhdG9y
VmFsdWUoKSk7CkBAIC0xOTE0LDcgKzE5MTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
YXBwbHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBD
U1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTih2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogCiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKSB7CiAgICAgICAgICAgICByZXNldEVmZmVjdGl2
ZVpvb20oc3R5bGVSZXNvbHZlcik7CkBAIC0xOTc1LDcgKzE5NzgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBFRGlzcGxheSBkaXNwbGF5ID0gKnRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUp
OworICAgICAgICBFRGlzcGxheSBkaXNwbGF5ID0gKnN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOwogCiAgICAgICAgIGlmICghaXNWYWxpZERpc3BsYXlWYWx1ZShzdHlsZVJl
c29sdmVyLCBkaXNwbGF5KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5OTYsNyArMTk5OSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1Byb3BlcnR5SUQsIFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsK
KyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIHNl
dFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIDApOwogICAgICAgICAgICAgZWxzZSBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzU2hhcGUoKSkgewpAQCAtMjAyNyw3ICsyMDMwLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAg
ICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwor
ICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgICAgICAgICAgc2V0
VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgMCk7CiAgICAgICAgICAgICAvLyBGSVhNRSBC
dWcgMTAyNTcxOiBMYXlvdXQgZm9yIHRoZSB2YWx1ZSAnb3V0c2lkZS1zaGFwZScgaXMgbm90IHll
dCBpbXBsZW1lbnRlZApAQCAtMjA4MCw3ICsyMDgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
Q1NTVmFsdWUqIGl0ZW0gPSB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CiAg
ICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlbSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0
ZW0pOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVGcm9tSW1hZ2UpCiAgICAgICAgICAgICAgICAgc291cmNlID0gSW1hZ2VSZXNvbHV0aW9u
RnJvbUltYWdlOwogICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZVNuYXApCkBAIC0yMTM2LDcgKzIxMzksNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVtKTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRl
bSk7CiAgICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpCiAgICAg
ICAgICAgICAgICAgbGVuZ3RoT3JQZXJjZW50YWdlVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS0+Y29u
dmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8
IENhbGN1bGF0ZWRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdlQ29udmVyc2lvbj4oc3R5
bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwogI2lmIEVOQUJMRShDU1Mz
X1RFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaAppbmRleCA2MzdmNTAwYzZj
YjJmYTIzOTEyNWVjZjdlMTVkZWM4NWU3ODdlNjZjLi5kZDNjMzVjNjZiM2I4YTNlYjc1NzE0ODkw
YWM5ZGZiYjViYWNjNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1
cmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmgKQEAg
LTUxLDEyICs1MSw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgaW50IG1fdmFsdWU7CiB9OwogCi1p
bmxpbmUgRm9udEZlYXR1cmVWYWx1ZSogdG9Gb250RmVhdHVyZVZhbHVlKENTU1ZhbHVlKiB2YWx1
ZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighdmFsdWUgfHwgdmFs
dWUtPmlzRm9udEZlYXR1cmVWYWx1ZSgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udEZl
YXR1cmVWYWx1ZSo+KHZhbHVlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udFZhbHVlLmgKaW5kZXggZjkyMTk2OTdmNTc2ZjNhYmNmMzA4MWUwOTg5MDk2ZGYwZTlj
YzU3Ni4uN2M3NTMzOTM5NmNkNWE2MzliMjM1ZjlkMGM1NjM0MjNjMTk3NGQ3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250VmFsdWUuaApAQCAtNTUsMTIgKzU1LDYgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1p
bmxpbmUgRm9udFZhbHVlKiB0b0ZvbnRWYWx1ZShDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXZhbHVlIHx8IHZhbHVlLT5pc0ZvbnRWYWx1
ZSgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFZhbHVlKj4odmFsdWUpOwotfQotCiB9
IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggOWU0
ZTAxMjE4ODE5OTlmYzJhNTE5MjNiMjZiZjVjNTE2NTg3OGUxNS4uZTc3NTA5OTlmMTc2ZWNmNmQ4
Zjk4ZDhmZmNiOTc5MjUwMDU4ZjljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTMz
NCw3ICszMzQsNyBAQCB2b2lkIHJlcG9ydE1lZGlhUXVlcnlXYXJuaW5nSWZOZWVkZWQoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBNZWRpYVF1ZXJ5U2V0KiBtZQogICAgICAgICAgICAgICAgIGlm
IChleHAtPm1lZGlhRmVhdHVyZSgpID09IE1lZGlhRmVhdHVyZU5hbWVzOjpyZXNvbHV0aW9uTWVk
aWFGZWF0dXJlIHx8IGV4cC0+bWVkaWFGZWF0dXJlKCkgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1h
eF9yZXNvbHV0aW9uTWVkaWFGZWF0dXJlIHx8IGV4cC0+bWVkaWFGZWF0dXJlKCkgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6Om1pbl9yZXNvbHV0aW9uTWVkaWFGZWF0dXJlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIENTU1ZhbHVlKiBjc3NWYWx1ZSA9ICBleHAtPnZhbHVlKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChjc3NWYWx1ZSAmJiBjc3NWYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGNzc1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4oY3NzVmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5pc0RvdHNQZXJJbmNoKCkgfHwgcHJpbWl0aXZlVmFsdWUtPmlzRG90c1BlckNl
bnRpbWV0ZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRSZXNvbHV0aW9uV2Fy
bmluZ01lc3NhZ2VUb0NvbnNvbGUoZG9jdW1lbnQsIG1lZGlhUXVlcnlTZXQtPm1lZGlhVGV4dCgp
LCBwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCAwYzMwOGIxZjU0YzY3MzFmNjE1Yjgw
NGE4N2M2MGMyYTJiMTIyZTEyLi43Yzc2NmM0MjM1ZjI4NjRiNTViODI2ODE1YmY0NDA0MjczYjFm
Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0x
ODIsNyArMTgyLDcgQEAgYm9vbCBjb21wYXJlVmFsdWUoVCBhLCBUIGIsIE1lZGlhRmVhdHVyZVBy
ZWZpeCBvcCkKIHN0YXRpYyBib29sIGNvbXBhcmVBc3BlY3RSYXRpb1ZhbHVlKENTU1ZhbHVlKiB2
YWx1ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCiB7CiAg
ICAgaWYgKHZhbHVlLT5pc0FzcGVjdFJhdGlvVmFsdWUoKSkgewotICAgICAgICBDU1NBc3BlY3RS
YXRpb1ZhbHVlKiBhc3BlY3RSYXRpbyA9IHRvQ1NTQXNwZWN0UmF0aW9WYWx1ZSh2YWx1ZSk7Cisg
ICAgICAgIENTU0FzcGVjdFJhdGlvVmFsdWUqIGFzcGVjdFJhdGlvID0gc3RhdGljX2Nhc3Q8Q1NT
QXNwZWN0UmF0aW9WYWx1ZSo+KHZhbHVlKTsKICAgICAgICAgcmV0dXJuIGNvbXBhcmVWYWx1ZSh3
aWR0aCAqIHN0YXRpY19jYXN0PGludD4oYXNwZWN0UmF0aW8tPmRlbm9taW5hdG9yVmFsdWUoKSks
IGhlaWdodCAqIHN0YXRpY19jYXN0PGludD4oYXNwZWN0UmF0aW8tPm51bWVyYXRvclZhbHVlKCkp
LCBvcCk7CiAgICAgfQogCkBAIC0xOTIsOCArMTkyLDggQEAgc3RhdGljIGJvb2wgY29tcGFyZUFz
cGVjdFJhdGlvVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIE1l
ZGkKIHN0YXRpYyBib29sIG51bWJlclZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgZmxvYXQmIHJlc3Vs
dCkKIHsKICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKQotICAgICAgICAmJiB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+aXNOdW1iZXIoKSkgewotICAgICAgICByZXN1bHQgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpLT5pc051bWJlcigpKSB7CisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgYm9vbCBvcmllbnRhdGlvbk1lZGlhRmVh
dHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSosIEZyYW1lKiBmcgogICAgIGlu
dCB3aWR0aCA9IHZpZXctPmxheW91dFdpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHZpZXctPmxh
eW91dEhlaWdodCgpOwogICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7Ci0gICAgICAgIGNvbnN0IENTU1ZhbHVlSUQgaWQgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZh
bHVlKS0+Z2V0VmFsdWVJRCgpOworICAgICAgICBjb25zdCBDU1NWYWx1ZUlEIGlkID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQoKTsKICAgICAgICAg
aWYgKHdpZHRoID4gaGVpZ2h0KSAvLyBTcXVhcmUgdmlld3BvcnQgaXMgcG9ydHJhaXQuCiAgICAg
ICAgICAgICByZXR1cm4gQ1NTVmFsdWVMYW5kc2NhcGUgPT0gaWQ7CiAgICAgICAgIHJldHVybiBD
U1NWYWx1ZVBvcnRyYWl0ID09IGlkOwpAQCAtMzA2LDE5ICszMDYsMTkgQEAgc3RhdGljIGJvb2wg
ZXZhbFJlc29sdXRpb24oQ1NTVmFsdWUqIHZhbHVlLCBGcmFtZSogZnJhbWUsIE1lZGlhRmVhdHVy
ZVByZWZpeCBvcCkKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByZXNvbHV0aW9uID0gdG9D
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJlc29sdXRp
b24gPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKICAgICByZXR1cm4g
Y29tcGFyZVZhbHVlKGRldmljZVNjYWxlRmFjdG9yLCByZXNvbHV0aW9uLT5pc051bWJlcigpID8g
cmVzb2x1dGlvbi0+Z2V0RmxvYXRWYWx1ZSgpIDogcmVzb2x1dGlvbi0+Z2V0RmxvYXRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQUFgpLCBvcCk7CiB9CiAKIHN0YXRpYyBib29sIGRldmlj
ZV9waXhlbF9yYXRpb01lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUgKnZhbHVlLCBSZW5kZXJTdHls
ZSosIEZyYW1lKiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQogewotICAgIHJldHVybiAo
IXZhbHVlIHx8IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5pc051bWJlcigpKSAmJiBldmFs
UmVzb2x1dGlvbih2YWx1ZSwgZnJhbWUsIG9wKTsKKyAgICByZXR1cm4gKCF2YWx1ZSB8fCBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+aXNOdW1iZXIoKSkgJiYgZXZhbFJl
c29sdXRpb24odmFsdWUsIGZyYW1lLCBvcCk7CiB9CiAKIHN0YXRpYyBib29sIHJlc29sdXRpb25N
ZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqLCBGcmFtZSogZnJh
bWUsIE1lZGlhRmVhdHVyZVByZWZpeCBvcCkKIHsKICNpZiBFTkFCTEUoUkVTT0xVVElPTl9NRURJ
QV9RVUVSWSkKLSAgICByZXR1cm4gKCF2YWx1ZSB8fCB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KS0+aXNSZXNvbHV0aW9uKCkpICYmIGV2YWxSZXNvbHV0aW9uKHZhbHVlLCBmcmFtZSwgb3ApOwor
ICAgIHJldHVybiAoIXZhbHVlIHx8IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpLT5pc1Jlc29sdXRpb24oKSkgJiYgZXZhbFJlc29sdXRpb24odmFsdWUsIGZyYW1lLCBvcCk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1l
KTsKQEAgLTM0Miw3ICszNDIsNyBAQCBzdGF0aWMgYm9vbCBjb21wdXRlTGVuZ3RoKENTU1ZhbHVl
KiB2YWx1ZSwgYm9vbCBzdHJpY3QsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZAogICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2
YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmlzTnVtYmVyKCkpIHsKICAgICAgICAgcmVzdWx0ID0gcHJpbWl0aXZlVmFsdWUtPmdldEludFZh
bHVlKCk7CkBAIC01OTYsNyArNTk2LDcgQEAgc3RhdGljIGJvb2wgdmlld19tb2RlTWVkaWFGZWF0
dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiwgRnJhbWUqIGZyYW0KICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNvbnN0IGludCB2aWV3TW9k
ZUNTU0tleXdvcmRJRCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5nZXRWYWx1ZUlEKCk7
CisgICAgY29uc3QgaW50IHZpZXdNb2RlQ1NTS2V5d29yZElEID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQoKTsKICAgICBjb25zdCBQYWdlOjpWaWV3
TW9kZSB2aWV3TW9kZSA9IGZyYW1lLT5wYWdlKCktPnZpZXdNb2RlKCk7CiAgICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKICAgICBzd2l0Y2ggKHZpZXdNb2RlKSB7CkBAIC02NzgsNyArNjc4LDcgQEAg
c3RhdGljIGJvb2wgcG9pbnRlck1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5k
ZXJTdHlsZSosIEZyYW1lKiBmcmFtZSwKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IENTU1ZhbHVlSUQgaWQgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpOworICAgIGNvbnN0IENTU1Zh
bHVlSUQgaWQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Z2V0VmFs
dWVJRCgpOwogICAgIHJldHVybiAocG9pbnRlciA9PSBOb1BvaW50ZXIgJiYgaWQgPT0gQ1NTVmFs
dWVOb25lKQogICAgICAgICB8fCAocG9pbnRlciA9PSBUb3VjaFBvaW50ZXIgJiYgaWQgPT0gQ1NT
VmFsdWVDb2Fyc2UpCiAgICAgICAgIHx8IChwb2ludGVyID09IE1vdXNlUG9pbnRlciAmJiBpZCA9
PSBDU1NWYWx1ZUZpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0
eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCmluZGV4IDlhOWMyYjJjYzZmMWM4YmZjYThmYjJhZGNmNzkwOGQ0Yjk2MzkxYzYuLmJkMzQw
Yzg5NzY3N2E5Yzc0MzNkNDQzZjZlNDEyMDhjMGUxMWU3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmFwcGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZh
bHVlKQogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gMDsKICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAg
cHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICAgICAgcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKIAog
ICAgIGNvbnN0IFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAgICAgU1ZHUmVuZGVyU3R5bGUqIHN2
Z3N0eWxlID0gc3RhdGUuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKQEAgLTI4NSw3ICsyODUs
NyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBp
ZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICAgICAgICAgIGlmICghY3VyclZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGRhc2ggPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGRh
c2hlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7CisgICAgICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIGRhc2ggPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGRhc2hl
cy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7CiAgICAgICAgICAgICAgICAgYXJyYXkuYXBw
ZW5kKFNWR0xlbmd0aDo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKGRhc2gpKTsKICAgICAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaAppbmRleCA3YjcwYTEzNjE0Y2JjMmM3ZTdhZTRi
NjhkNmNlMmU4N2JkZTAzMTNmLi5kNGQ1OWYwZGQ5YzRlYmJkMjQ4YzAxMGM2NjUxOWJhYzZjN2U4
NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaApAQCAtNjIsMTIgKzYyLDYgQEAgcHJpdmF0
ZToKICAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29sb3IpOwogfTsKIAot
aW5saW5lIFNoYWRvd1ZhbHVlKiB0b1NoYWRvd1ZhbHVlKENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighdmFsdWUgfHwgdmFsdWUtPmlzU2hh
ZG93VmFsdWUoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYWRvd1ZhbHVlKj4odmFsdWUp
OwotfQotCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnR5U2V0LmNwcAppbmRleCBiY2YwOWI3ZDIxZTU1ZmQ3MjNkY2Q2NTJkMmJjODQ4ZGMzZWU4
Y2NiLi41ZjcxMDMyMjEzNTZkZjg2YWNiYjYyOTMyMTI4YzIwOTM5ZDA3MDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC00MTYsOCArNDE2LDggQEAgU3RyaW5n
IFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJgogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgICAgICB5VmFsdWUgPSBuZXh0VmFsdWU7CiAKLSAgICAgICAgICAgICAgICAgICAgQ1NT
VmFsdWVJRCB4SWQgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdldCgpKS0+Z2V0VmFsdWVJ
RCgpOwotICAgICAgICAgICAgICAgICAgICBDU1NWYWx1ZUlEIHlJZCA9IHRvQ1NTUHJpbWl0aXZl
VmFsdWUoeVZhbHVlLmdldCgpKS0+Z2V0VmFsdWVJRCgpOworICAgICAgICAgICAgICAgICAgICBD
U1NWYWx1ZUlEIHhJZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUuZ2V0
KCkpLT5nZXRWYWx1ZUlEKCk7CisgICAgICAgICAgICAgICAgICAgIENTU1ZhbHVlSUQgeUlkID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih5VmFsdWUuZ2V0KCkpLT5nZXRWYWx1ZUlE
KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh4SWQgIT0geUlkKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoeElkID09IENTU1ZhbHVlUmVwZWF0ICYmIHlJZCA9PSBDU1NWYWx1ZU5v
UmVwZWF0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlUmVwZWF0WFNob3J0aGFu
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZjllMDFjMWY0
NjdmNTM4YzBmYmUyMDNjNjg5ODg2NGIwNzI2ZTk4NS4uMzBlZjFjNjFkOWIwOGVjZGM0MDgzMTU1
OTZlNGY0YzhiNTIyNDE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAt
MTkyNSw3ICsxOTI1LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrU2l6ZShDU1NWYWx1
ZSogdmFsdWUsIEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSwgY29uc3QKICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUp
OworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgIFBhaXIqIG1pbk1heFRyYWNrQnJlYWR0aCA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKICAgICBpZiAoIW1pbk1heFRyYWNrQnJl
YWR0aCkgewogICAgICAgICBMZW5ndGggd29ya2luZ0xlbmd0aDsKQEAgLTE5NDksNyArMTk0OSw3
IEBAIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6CiB7CiAgICAgLy8gSGFuZGxlICdub25lJy4KICAg
ICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS0+Z2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsKICAgICB9CiAKQEAgLTE5NjAsNyArMTk2MCw3IEBA
IHN0YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8
R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6CiAgICAgZm9yIChDU1NWYWx1ZUxpc3RJdGVyYXRvciBp
ID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewogICAgICAgICBDU1NWYWx1ZSog
Y3VyclZhbHVlID0gaS52YWx1ZSgpOwogICAgICAgICBpZiAoY3VyclZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoY3VyclZhbHVlKTsKKyAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4oY3VyclZhbHVlKTsKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNTdHJpbmco
KSkgewogICAgICAgICAgICAgICAgIE5hbWVkR3JpZExpbmVzTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gbmFtZWRHcmlkTGluZXMuYWRkKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLCBW
ZWN0b3I8c2l6ZV90PigpKTsKICAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LmFwcGVuZChjdXJyZW50TmFtZWRHcmlkTGluZSk7CkBAIC0xOTg4LDcgKzE5ODgsOCBAQCBzdGF0
aWMgYm9vbCBjcmVhdGVHcmlkUG9zaXRpb24oQ1NTVmFsdWUqIHZhbHVlLCBHcmlkUG9zaXRpb24m
IHBvc2l0aW9uKQogICAgIC8vIEZvciBub3csIHdlIG9ubHkgYWNjZXB0OiAnYXV0bycgfCBbIDxp
bnRlZ2VyPiB8fCA8c3RyaW5nPiBdIHwgc3BhbiAmJiA8aW50ZWdlcj4/CiAgICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIEFT
U0VSVCh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
QXV0byk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBBU1NFUlQocHJpbWl0
aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pOwogI2VuZGlmCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIwMDMsMTcgKzIwMDQsMTcgQEAgc3RhdGljIGJvb2wg
Y3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVlKiB2YWx1ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlv
bikKICAgICBTdHJpbmcgZ3JpZExpbmVOYW1lOwogCiAgICAgQ1NTVmFsdWVMaXN0SXRlcmF0b3Ig
aXQgPSB2YWx1ZXM7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHRvQ1NT
UHJpbWl0aXZlVmFsdWUoaXQudmFsdWUoKSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJl
bnRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXQudmFsdWUoKSk7CiAg
ICAgaWYgKGN1cnJlbnRWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlU3BhbikgewogICAg
ICAgICBpc1NwYW5Qb3NpdGlvbiA9IHRydWU7CiAgICAgICAgIGl0LmFkdmFuY2UoKTsKLSAgICAg
ICAgY3VycmVudFZhbHVlID0gaXQuaGFzTW9yZSgpID8gdG9DU1NQcmltaXRpdmVWYWx1ZShpdC52
YWx1ZSgpKSA6IDA7CisgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGl0Lmhhc01vcmUoKSA/IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXQudmFsdWUoKSkgOiAwOwogICAgIH0KIAogICAg
IGlmIChjdXJyZW50VmFsdWUgJiYgY3VycmVudFZhbHVlLT5pc051bWJlcigpKSB7CiAgICAgICAg
IGdyaWRMaW5lTnVtYmVyID0gY3VycmVudFZhbHVlLT5nZXRJbnRWYWx1ZSgpOwogICAgICAgICBp
dC5hZHZhbmNlKCk7Ci0gICAgICAgIGN1cnJlbnRWYWx1ZSA9IGl0Lmhhc01vcmUoKSA/IHRvQ1NT
UHJpbWl0aXZlVmFsdWUoaXQudmFsdWUoKSkgOiAwOworICAgICAgICBjdXJyZW50VmFsdWUgPSBp
dC5oYXNNb3JlKCkgPyBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0LnZhbHVlKCkp
IDogMDsKICAgICB9CiAKICAgICBpZiAoY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1ZS0+aXNT
dHJpbmcoKSkgewpAQCAtMjAzMywxMSArMjAzNCwxMyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVHcmlk
UG9zaXRpb24oQ1NTVmFsdWUqIHZhbHVlLCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uKQogI2lmIEVO
QUJMRShDU1NfVkFSSUFCTEVTKQogc3RhdGljIGJvb2wgaGFzVmFyaWFibGVSZWZlcmVuY2UoQ1NT
VmFsdWUqIHZhbHVlKQogewotICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAg
ICAgICByZXR1cm4gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmhhc1ZhcmlhYmxlUmVmZXJl
bmNlKCk7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS0+aGFzVmFyaWFi
bGVSZWZlcmVuY2UoKTsKKyAgICB9CiAKLSAgICBpZiAodmFsdWUtPmlzQ2FsY1ZhbHVlKCkpCi0g
ICAgICAgIHJldHVybiB0b0NTU0NhbGNWYWx1ZSh2YWx1ZSktPmhhc1ZhcmlhYmxlUmVmZXJlbmNl
KCk7CisgICAgaWYgKHZhbHVlLT5pc0NhbGN1bGF0aW9uVmFsdWUoKSkKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PENTU0NhbGNWYWx1ZSo+KHZhbHVlKS0+aGFzVmFyaWFibGVSZWZlcmVuY2Uo
KTsKIAogICAgIGlmICh2YWx1ZS0+aXNSZWZsZWN0VmFsdWUoKSkgewogICAgICAgICBDU1NSZWZs
ZWN0VmFsdWUqIHJlZmxlY3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1JlZmxlY3RWYWx1ZSo+KHZh
bHVlKTsKQEAgLTIxMzAsNyArMjEzMyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpID8gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSkgOiAwOworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkgPyBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKSA6IDA7CiAKICAg
ICBmbG9hdCB6b29tRmFjdG9yID0gc3RhdGUuc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwogCkBA
IC0yMTU3LDE5ICsyMTYwLDE5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgICAgICAgICAgQ1NTVmFs
dWUqIGl0ZW0gPSBpLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGl0ZW0tPmlzSW1hZ2VH
ZW5lcmF0b3JWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLT5pc0dyYWRp
ZW50VmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENv
bnRlbnQoU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKHRvQ1NTR3JhZGllbnRWYWx1ZShpdGVt
KS0+Z3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQodGhpcykuZ2V0KCkpLCBkaWRTZXQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChTdHlsZUdlbmVy
YXRlZEltYWdlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Q1NTR3JhZGllbnRWYWx1ZSo+KGl0ZW0pLT5n
cmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZCh0aGlzKS5nZXQoKSksIGRpZFNldCk7CiAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldENvbnRlbnQoU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKHRvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZShpdGVtKSksIGRpZFNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRDb250ZW50KFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlKj4oaXRlbSkpLCBkaWRTZXQpOwogICAgICAgICAgICAg
ICAgICAgICBkaWRTZXQgPSB0cnVlOwogI2lmIEVOQUJMRShDU1NfSU1BR0VfU0VUKQogICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS0+aXNJbWFnZVNldFZhbHVlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChzZXRPclBlbmRpbmdGcm9tVmFs
dWUoQ1NTUHJvcGVydHlDb250ZW50LCB0b0NTU0ltYWdlU2V0VmFsdWUoaXRlbSkpLCBkaWRTZXQp
OworICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KHNldE9yUGVu
ZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUNvbnRlbnQsIHN0YXRpY19jYXN0PENTU0ltYWdlU2V0
VmFsdWUqPihpdGVtKSksIGRpZFNldCk7CiAgICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRy
dWU7CiAjZW5kaWYKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoaXRl
bS0+aXNJbWFnZVZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+
c2V0Q29udGVudChjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlDb250ZW50LCB0
b0NTU0ltYWdlVmFsdWUoaXRlbSkpLCBkaWRTZXQpOworICAgICAgICAgICAgICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXRDb250ZW50KGNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0
eUNvbnRlbnQsIHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPihpdGVtKSksIGRpZFNldCk7CiAg
ICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTIxNzcsNyArMjE4MCw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFs
dWUpCiAgICAgICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlbSk7CisgICAgICAg
ICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CiAKICAgICAgICAgICAgICAgICBpZiAoY29udGVudFZh
bHVlLT5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNl
dENvbnRlbnQoY29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwgZGlkU2V0KTsK
QEAgLTIyNTEsOCArMjI1NCw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGZpcnN0LT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNlY29uZC0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAg
ICAgICAgICAgICBTdHJpbmcgc3RhcnRRdW90ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoZmlyc3Qp
LT5nZXRTdHJpbmdWYWx1ZSgpOwotICAgICAgICAgICAgICAgIFN0cmluZyBlbmRRdW90ZSA9IHRv
Q1NTUHJpbWl0aXZlVmFsdWUoc2Vjb25kKS0+Z2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAg
ICAgICBTdHJpbmcgc3RhcnRRdW90ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
Zmlyc3QpLT5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgICAgIFN0cmluZyBlbmRRdW90
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oc2Vjb25kKS0+Z2V0U3RyaW5nVmFs
dWUoKTsKICAgICAgICAgICAgICAgICBxdW90ZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHN0YXJ0
UXVvdGUsIGVuZFF1b3RlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdGF0ZS5zdHls
ZSgpLT5zZXRRdW90ZXMoUXVvdGVzRGF0YTo6Y3JlYXRlKHF1b3RlcykpOwpAQCAtMjY3MywxMCAr
MjY3NiwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKCF2YWx1ZS0+aXNMaW5lQm94Q29udGFpblZhbHVlKCkpCisgICAgICAgIGlm
ICghdmFsdWUtPmlzQ1NTTGluZUJveENvbnRhaW5WYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIENTU0xpbmVCb3hDb250YWluVmFsdWUqIGxpbmVCb3hDb250YWluVmFsdWUg
PSB0b0NTU0xpbmVCb3hDb250YWluVmFsdWUodmFsdWUpOworICAgICAgICBDU1NMaW5lQm94Q29u
dGFpblZhbHVlKiBsaW5lQm94Q29udGFpblZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTTGluZUJveENv
bnRhaW5WYWx1ZSo+KHZhbHVlKTsKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TGluZUJveENv
bnRhaW4obGluZUJveENvbnRhaW5WYWx1ZS0+dmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0zMDcyLDIxICszMDc1LDIxIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiBQYXNzUmVmUHRyPFN0eWxl
SW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwg
Q1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNJbWFnZVZhbHVlKCkpCi0gICAg
ICAgIHJldHVybiBjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUocHJvcGVydHksIHRvQ1NTSW1hZ2VW
YWx1ZSh2YWx1ZSkpOworICAgICAgICByZXR1cm4gY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKHBy
b3BlcnR5LCBzdGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4odmFsdWUpKTsKIAogICAgIGlmICh2
YWx1ZS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkpIHsKICAgICAgICAgaWYgKHZhbHVlLT5pc0dy
YWRpZW50VmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZWRPclBlbmRpbmdGcm9t
VmFsdWUocHJvcGVydHksIHRvQ1NTR3JhZGllbnRWYWx1ZSh2YWx1ZSktPmdyYWRpZW50V2l0aFN0
eWxlc1Jlc29sdmVkKHRoaXMpLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRlZE9yUGVu
ZGluZ0Zyb21WYWx1ZShwcm9wZXJ0eSwgdG9DU1NJbWFnZUdlbmVyYXRvclZhbHVlKHZhbHVlKSk7
CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVkT3JQZW5kaW5nRnJvbVZhbHVlKHByb3BlcnR5
LCBzdGF0aWNfY2FzdDxDU1NHcmFkaWVudFZhbHVlKj4odmFsdWUpLT5ncmFkaWVudFdpdGhTdHls
ZXNSZXNvbHZlZCh0aGlzKS5nZXQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0ZWRPclBlbmRp
bmdGcm9tVmFsdWUocHJvcGVydHksIHN0YXRpY19jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUq
Pih2YWx1ZSkpOwogICAgIH0KIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfU0VUKQogICAgIGlmICh2
YWx1ZS0+aXNJbWFnZVNldFZhbHVlKCkpCi0gICAgICAgIHJldHVybiBzZXRPclBlbmRpbmdGcm9t
VmFsdWUocHJvcGVydHksIHRvQ1NTSW1hZ2VTZXRWYWx1ZSh2YWx1ZSkpOworICAgICAgICByZXR1
cm4gc2V0T3JQZW5kaW5nRnJvbVZhbHVlKHByb3BlcnR5LCBzdGF0aWNfY2FzdDxDU1NJbWFnZVNl
dFZhbHVlKj4odmFsdWUpKTsKICNlbmRpZgogCiAgICAgaWYgKHZhbHVlLT5pc0N1cnNvckltYWdl
VmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIGN1cnNvck9yUGVuZGluZ0Zyb21WYWx1ZShwcm9wZXJ0
eSwgdG9DU1NDdXJzb3JJbWFnZVZhbHVlKHZhbHVlKSk7CisgICAgICAgIHJldHVybiBjdXJzb3JP
clBlbmRpbmdGcm9tVmFsdWUocHJvcGVydHksIHN0YXRpY19jYXN0PENTU0N1cnNvckltYWdlVmFs
dWUqPih2YWx1ZSkpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zMTA0LDcgKzMxMDcsNyBAQCBQ
YXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlUmVzb2x2ZXI6OmdlbmVyYXRlZE9yUGVuZGluZ0Zy
b21WYWx1ZShDU1NQcm9wZXJ0eUlECiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGlmICh2
YWx1ZS0+aXNGaWx0ZXJJbWFnZVZhbHVlKCkpIHsKICAgICAgICAgLy8gRmlsdGVySW1hZ2UgbmVl
ZHMgdG8gY2FsY3VsYXRlIEZpbHRlck9wZXJhdGlvbnMuCi0gICAgICAgIHRvQ1NTRmlsdGVySW1h
Z2VWYWx1ZSh2YWx1ZSktPmNyZWF0ZUZpbHRlck9wZXJhdGlvbnModGhpcyk7CisgICAgICAgIHN0
YXRpY19jYXN0PENTU0ZpbHRlckltYWdlVmFsdWUqPih2YWx1ZSktPmNyZWF0ZUZpbHRlck9wZXJh
dGlvbnModGhpcyk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKHZhbHVlLT5pc1BlbmRpbmcoKSkg
ewpAQCAtMzM4Myw3ICszMzg2LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ1NW
R0RvY3VtZW50cygpCiBTdHlsZVNoYWRlciogU3R5bGVSZXNvbHZlcjo6c3R5bGVTaGFkZXIoQ1NT
VmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNXZWJLaXRDU1NTaGFkZXJWYWx1ZSgp
KQotICAgICAgICByZXR1cm4gY2FjaGVkT3JQZW5kaW5nU3R5bGVTaGFkZXJGcm9tVmFsdWUodG9X
ZWJLaXRDU1NTaGFkZXJWYWx1ZSh2YWx1ZSkpOworICAgICAgICByZXR1cm4gY2FjaGVkT3JQZW5k
aW5nU3R5bGVTaGFkZXJGcm9tVmFsdWUoc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTU2hhZGVyVmFsdWUq
Pih2YWx1ZSkpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNDY2LDcgKzM0NjksNyBAQCBQYXNz
UmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0b21G
aWx0ZXJBcnJheVBhcmFtZXRlcgogICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSB2YWx1ZXMtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIGFycmF5UGFyYW1ldGVyLT5hZGRWYWx1ZShwcmltaXRpdmVWYWx1ZS0+
Z2V0RG91YmxlVmFsdWUoKSk7CkBAIC0zNDc3LDcgKzM0ODAsNyBAQCBQYXNzUmVmUHRyPEN1c3Rv
bUZpbHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0b21GaWx0ZXJBcnJheVBh
cmFtZXRlcgogUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IFN0eWxlUmVzb2x2ZXI6
OnBhcnNlQ3VzdG9tRmlsdGVyQ29sb3JQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBDU1NW
YWx1ZUxpc3QqIHZhbHVlcykKIHsKICAgICBBU1NFUlQodmFsdWVzLT5sZW5ndGgoKSk7Ci0gICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZh
bHVlKHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7CiAgICAgUmVmUHRyPEN1c3Rv
bUZpbHRlckNvbG9yUGFyYW1ldGVyPiBjb2xvclBhcmFtZXRlciA9IEN1c3RvbUZpbHRlckNvbG9y
UGFyYW1ldGVyOjpjcmVhdGUobmFtZSk7CiAgICAgY29sb3JQYXJhbWV0ZXItPnNldENvbG9yKENv
bG9yKGZpcnN0UHJpbWl0aXZlVmFsdWUtPmdldFJHQkEzMlZhbHVlKCkpKTsKICAgICByZXR1cm4g
Y29sb3JQYXJhbWV0ZXIucmVsZWFzZSgpOwpAQCAtMzQ5MCw3ICszNDkzLDcgQEAgUGFzc1JlZlB0
cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IFN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3VzdG9tRmlsdGVy
TnVtYmVyUGFyYW1ldGUKICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gdmFsdWVzLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKGkpOwogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUo
KSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICBudW1iZXJQYXJhbWV0ZXItPmFkZFZhbHVlKHByaW1pdGl2ZVZhbHVlLT5nZXRE
b3VibGVWYWx1ZSgpKTsKQEAgLTM1MzksNyArMzU0Miw3IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmls
dGVyUGFyYW1ldGVyPiBTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlcihj
b25zCiAgICAgaWYgKCF2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCktPmlzUHJpbWl0
aXZlVmFsdWUoKSB8fCB2YWx1ZXMtPmxlbmd0aCgpID4gNCkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7CiAgICAgaWYg
KGZpcnN0UHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUikKICAgICAgICAgcmV0dXJuIHBhcnNlQ3VzdG9tRmlsdGVyTnVtYmVyUGFy
YW1ldGVyKG5hbWUsIHZhbHVlcyk7CiAKQEAgLTM1NTksNyArMzU2Miw3IEBAIGJvb2wgU3R5bGVS
ZXNvbHZlcjo6cGFyc2VDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0KENTU1ZhbHVlKiBwYXJhbWV0
ZXJzVmFsdWUsIEN1CiAgICAgICAgIENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGl0ZXJhdG9yKHBhcmFt
ZXRlckl0ZXJhdG9yLnZhbHVlKCkpOwogICAgICAgICBpZiAoIWl0ZXJhdG9yLmlzUHJpbWl0aXZl
VmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVyYXRvci52YWx1
ZSgpKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVyYXRvci52YWx1ZSgpKTsKICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMzYxOSw3
ICszNjIyLDcgQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJPcGVyYXRpb24+IFN0eWxlUmVzb2x2
ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJhdGlvbldpdGgKIAogICAgICAgICAgICAgQVNTRVJU
KG1peEZ1bmN0aW9uLT5sZW5ndGgoKSA8PSAzKTsKICAgICAgICAgICAgIHdoaWxlIChpdGVyYXRv
ci5oYXNNb3JlKCkpIHsKLSAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZXJhdG9yLnZhbHVlKCkpOworICAgICAg
ICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlcmF0b3IudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAg
aWYgKENTU1BhcnNlcjo6aXNCbGVuZE1vZGUocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkp
CiAgICAgICAgICAgICAgICAgICAgIG1peFNldHRpbmdzLmJsZW5kTW9kZSA9ICpwcmltaXRpdmVW
YWx1ZTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDU1NQYXJzZXI6OmlzQ29tcG9zaXRlT3Bl
cmF0b3IocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkpCkBAIC0zNjUxLDcgKzM2NTQsNyBA
QCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRl
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0aAogICAgICAgICAvLyB0aGUgbWVzaC1ib3ggbGlzdCwg
aWYgbm90IGl0IG1lYW5zIGl0IGlzIHRoZSBwYXJhbWV0ZXJzIGxpc3QuCiAKICAgICAgICAgaWYg
KGl0ZXJhdG9yLmhhc01vcmUoKSAmJiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAg
ICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0
aXZlVmFsdWUoaXRlcmF0b3IudmFsdWUoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZXJh
dG9yLnZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc051bWJlcigp
KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgb25seSBvbmUgaW50ZWdlciB2YWx1ZSBpcyBzcGVj
aWZpZWQsIGl0IHdpbGwgc2V0IGJvdGgKICAgICAgICAgICAgICAgICAvLyB0aGUgcm93cyBhbmQg
dGhlIGNvbHVtbnMuCkBAIC0zNjYwLDcgKzM2NjMsNyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRl
ck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0
aAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFRyeSB0byBtYXRjaCBhbm90
aGVyIG51bWJlciBmb3IgdGhlIHJvd3MuCiAgICAgICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmhh
c01vcmUoKSAmJiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVW
YWx1ZShpdGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihp
dGVyYXRvci52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtZXNoUm93cyA9IHByaW1p
dGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0
b3IuYWR2YW5jZSgpOwpAQCAtMzY3MCw3ICszNjczLDggQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0
ZXJPcGVyYXRpb24+IFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJhdGlvbldp
dGgKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGl0ZXJhdG9yLmhhc01vcmUoKSAm
JiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgIGlmICh0b0NTU1By
aW1pdGl2ZVZhbHVlKGl0ZXJhdG9yLnZhbHVlKCkpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVE
ZXRhY2hlZCkgeworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVyYXRvci52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRGV0
YWNoZWQpIHsKICAgICAgICAgICAgICAgICBtZXNoVHlwZSA9IE1lc2hUeXBlRGV0YWNoZWQ7CiAg
ICAgICAgICAgICAgICAgaXRlcmF0b3IuYWR2YW5jZSgpOwogICAgICAgICAgICAgfQpAQCAtMzcx
NSw3ICszNzE5LDggQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25z
KENTU1ZhbHVlKiBpblZhbHVlLCBGaWx0ZXJPcGVyYXRpb25zJgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCiAgICAgaWYgKGluVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAg
ICBpZiAodG9DU1NQcmltaXRpdmVWYWx1ZShpblZhbHVlKS0+Z2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlTm9uZSkKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpblZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtMzc4NSw3ICszNzkwLDcgQEAgYm9vbCBTdHlsZVJl
c29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKENTU1ZhbHVlKiBpblZhbHVlLCBGaWx0ZXJP
cGVyYXRpb25zJgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFsdWUgPSBmaWx0ZXJWYWx1ZS0+bGVuZ3RoKCkg
PyB0b0NTU1ByaW1pdGl2ZVZhbHVlKGZpbHRlclZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDApKSA6IDA7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJzdFZhbHVlID0gZmlsdGVy
VmFsdWUtPmxlbmd0aCgpID8gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmaWx0ZXJW
YWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSkgOiAwOwogICAgICAgICBzd2l0Y2ggKGZp
bHRlclZhbHVlLT5vcGVyYXRpb25UeXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJLaXRDU1NGaWx0
ZXJWYWx1ZTo6R3JheXNjYWxlRmlsdGVyT3BlcmF0aW9uOgogICAgICAgICBjYXNlIFdlYktpdENT
U0ZpbHRlclZhbHVlOjpTZXBpYUZpbHRlck9wZXJhdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Ry
YW5zZm9ybUZ1bmN0aW9ucy5jcHAKaW5kZXggZDlkYzc1ZmZiNTc2OWMxNmRhMTQwZTZlZGZkZjZh
ZjY5ZWVkZTliNC4uNDcyNWY4NjJhMDhkMWMzMDg1NGE4OWE4OWMwY2I2NzUzZDgzNTM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAKQEAgLTExMCw3ICsxMTAs
NyBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlKiByb290U3R5bGUsCiAgICAgICAgIGlmIChoYXZlTm9uUHJpbWl0aXZl
VmFsdWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogZmlyc3RWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMCkpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3RW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpOwogCiAgICAgICAgIHN3aXRjaCAodHJhbnNmb3JtVmFs
dWUtPm9wZXJhdGlvblR5cGUoKSkgewogICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjoKQEAgLTEyNCw3ICsxMjQsNyBAQCBib29sIHRy
YW5zZm9ybXNGb3JWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiByb290U3R5bGUsCiAgICAgICAgICAgICAgICAgc3ggPSBmaXJzdFZhbHVlLT5nZXREb3Vi
bGVWYWx1ZSgpOwogICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9u
VHlwZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVhUcmFuc2Zvcm1PcGVyYXRp
b24pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+
IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRW
YWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1W
YWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzeSA9IHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0gc3g7CkBAIC0xNDYsMTEgKzE0
NiwxMSBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiByb290U3R5bGUsCiAgICAgICAgICAgICAgICAgc3ggPSBmaXJz
dFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1W
YWx1ZS0+b3BlcmF0aW9uVHlwZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVhU
cmFuc2Zvcm1PcGVyYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZh
bHVlLT5sZW5ndGgoKSA+IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiB0aGlyZFZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgc3ogPSB0aGlyZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+
bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogc2Vjb25kVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgc3kgPSBzZWNvbmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHN4OwpAQCAt
MTcwLDcgKzE3MCw3IEBAIGJvb2wgdHJhbnNmb3Jtc0ZvclZhbHVlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwKICAgICAgICAgICAgICAgICB0
eCA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpv
b21GYWN0b3IpOwogICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9u
VHlwZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVYVHJhbnNmb3JtT3Bl
cmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3Ro
KCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vj
b25kVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNm
b3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RT
dHlsZSwgem9vbUZhY3Rvcik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CkBAIC0xOTUsMTEgKzE5NSwxMSBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiByb290U3R5bGUsCiAgICAgICAg
ICAgICAgICAgdHggPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9v
dFN0eWxlLCB6b29tRmFjdG9yKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUt
Pm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRy
YW5zZm9ybU9wZXJhdGlvbikgewogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFs
dWUtPmxlbmd0aCgpID4gMikgewotICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHRoaXJkVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKHRoaXJkVmFsdWUsIHN0eWxl
LCByb290U3R5bGUsIHpvb21GYWN0b3IpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0
VG9GbG9hdExlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0yMzYsOSArMjM2
LDkgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLAogICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpSb3RhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbjogewogICAgICAgICAgICAgaWYg
KHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA8IDQpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSB0b0NTU1ByaW1pdGl2
ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1
ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7Ci0gICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogZm91cnRoVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRy
YW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKTsKKyAgICAgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOworICAgICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsK
KyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb3VydGhWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMykpOwogICAgICAgICAgICAgZG91YmxlIHggPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1
ZSgpOwogICAgICAgICAgICAgZG91YmxlIHkgPSBzZWNvbmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUo
KTsKICAgICAgICAgICAgIGRvdWJsZSB6ID0gdGhpcmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsK
QEAgLTI1OCw3ICsyNTgsNyBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiByb290U3R5bGUsCiAgICAgICAgICAgICAg
ICAgYW5nbGVYID0gYW5nbGU7CiAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5v
cGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdUcmFuc2Zvcm1P
cGVyYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5n
dGgoKSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBz
ZWNvbmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFu
c2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZVkgPSBzZWNvbmRWYWx1ZS0+Y29tcHV0ZURlZ3JlZXMoKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTI3MCwzMyArMjcwLDMzIEBAIGJv
b2wgdHJhbnNmb3Jtc0ZvclZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwKICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVu
Z3RoKCkgPCA2KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZG91YmxlIGEg
PSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIGIgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDEpKS0+Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSBjID0gdG9DU1NQcmlt
aXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSktPmdl
dERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgZCA9IHRvQ1NTUHJpbWl0aXZlVmFs
dWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMykpLT5nZXREb3VibGVW
YWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIGUgPSB6b29tRmFjdG9yICogdG9DU1NQcmltaXRp
dmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg0KSktPmdldERv
dWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgZiA9IHpvb21GYWN0b3IgKiB0b0NTU1By
aW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKS0+
Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBiID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygx
KSktPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUgYyA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMikpLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgZG91YmxlIGQgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDMpKS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBlID0gem9v
bUZhY3RvciAqIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAg
ICAgZG91YmxlIGYgPSB6b29tRmFjdG9yICogc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg1KSktPmdldERvdWJsZVZh
bHVlKCk7CiAgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4
VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoYSwgYiwgYywgZCwgZSwgZikpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZTo6TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246IHsKICAgICAgICAgICAgIGlmICh0cmFuc2Zv
cm1WYWx1ZS0+bGVuZ3RoKCkgPCAxNikKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCh0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5z
Zm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKS0+Z2V0RG91YmxlVmFsdWUoKSwK
LSAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKDEpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAg
ICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDIpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2
ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKS0+Z2V0RG91
YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9y
bVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDQpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAg
ICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDUpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDYpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZh
bHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDcpKS0+Z2V0RG91Ymxl
VmFsdWUoKSwKLSAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZh
bHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDgpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAg
ICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDkpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEw
KSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1
ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMSkpLT5nZXREb3VibGVW
YWx1ZSgpLAotICAgICAgICAgICAgICAgIHpvb21GYWN0b3IgKiB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEyKSktPmdldERvdWJsZVZh
bHVlKCksCi0gICAgICAgICAgICAgICAgem9vbUZhY3RvciAqIHRvQ1NTUHJpbWl0aXZlVmFsdWUo
dHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTMpKS0+Z2V0RG91YmxlVmFs
dWUoKSwKLSAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVl
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDE0KSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAg
ICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygxNSkpLT5nZXREb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IG1hdHJpeChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5z
Zm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKS0+Z2V0RG91YmxlVmFsdWUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSktPmdldERv
dWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMikpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDMpKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1W
YWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg0KSktPmdldERvdWJsZVZhbHVlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNSkpLT5nZXREb3VibGVW
YWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDYp
KS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjayg3KSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soOCkpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRy
YW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDkpKS0+Z2V0RG91YmxlVmFsdWUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMCkpLT5n
ZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDExKSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHpvb21GYWN0b3IgKiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5z
Zm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEyKSktPmdldERvdWJsZVZhbHVlKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21GYWN0b3IgKiBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDEzKSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMTQpKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxNSkpLT5nZXREb3VibGVWYWx1ZSgpKTsK
ICAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1hdHJpeCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggNGUxZTUzYTc1MjNmYjI5YmRhOWZmN2VhYjhhYTQ2NzA3Y2Y3YTg4ZS4uZWE2NDcwYTg0Y2Fj
OGE5MDlkYjFjZjRkODA0ZjdlMzg4NjZkNDEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Zp
ZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBmbG9hdCBWaWV3cG9y
dFN0eWxlUmVzb2x2ZXI6OmdldFZpZXdwb3J0QXJndW1lbnRWYWx1ZShDU1NQcm9wZXJ0eUlEIGlk
KSBjb25zdAogICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdldCgpKTsKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlLmdldCgpKTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIo
KSB8fCBwcmltaXRpdmVWYWx1ZS0+aXNQeCgpKQogICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFs
dWUtPmdldEZsb2F0VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAK
aW5kZXggYjRkZDUwZDYxNGJlMmI2OTNlY2IwZTY3MzliODA1NTc0MDUwNjYwYy4uYTMzYjg5NWQ4
NzY5NmVjMzNlMGVjYmE2OWU1NzZmODRiMDVjOGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU01hdHJpeC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXZWJLaXRDU1NNYXRyaXg6OnNl
dE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb24tPmdldFByb3Bl
cnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwogCiAgICAgICAgIC8vIENo
ZWNrIGZvciBhICJub25lIiBvciBlbXB0eSB0cmFuc2Zvcm0uIEluIHRoZXNlIGNhc2VzIHdlIGNh
biB1c2UgdGhlIGRlZmF1bHQgaWRlbnRpdHkgbWF0cml4LgotICAgICAgICBpZiAoIXZhbHVlIHx8
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmICh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
LmdldCgpKSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpKQorICAgICAgICBpZiAoIXZh
bHVlIHx8ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIChzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgpKSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUp
KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3Bl
cmF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAK
aW5kZXggNWEyYTkyNGU4NmY1Yjg5MWZmNjZjYWY5OTA1ZGE1NmM0MTM2MmRmMy4uNjMyM2Y0NWM2
ZmFjZTQxMGQ1NTdmYWNhYWI1MjNkMTMzZWY4NDZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTE1MTYsNyArMTUxNiw3IEBAIGZsb2F0IEFw
cGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRTaXplKE5vZGUqIG5vZGUpCiAKICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcihub2RlKS5wcm9wZXJ0
eVZhbHVlKENTU1Byb3BlcnR5Rm9udFNpemUpOwogICAgIEFTU0VSVCh2YWx1ZSAmJiB2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICByZXR1cm4gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZS5nZXQoKSktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUuZ2V0KCkpLT5nZXRG
bG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogfQogCiB2b2lkIEFwcGx5U3R5
bGVDb21tYW5kOjpqb2luQ2hpbGRUZXh0Tm9kZXMoTm9kZSogbm9kZSwgY29uc3QgUG9zaXRpb24m
IHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCmluZGV4IDJmYjJmMmRiZTIxNDc0YTlhN2NmMjgwZjE0NGNiY2Q2ZWQzNzY0ODIu
LjJlMDQ4N2EzY2FmMzU5MmRiMzg2ZmQ4NWQwMGE3YWY2MDZkMGFlMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBpbnQgaWRlbnRp
ZmllckZvclN0eWxlUHJvcGVydHkoVCogc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkK
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZXh0cmFjdFByb3BlcnR5VmFsdWUoc3R5bGUs
IHByb3BlcnR5SUQpOwogICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZh
bHVlLmdldCgpKS0+Z2V0VmFsdWVJRCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgpKS0+Z2V0VmFsdWVJRCgpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBQYXNzUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBnZXRQcm9wZXJ0
aWVzTm90SW4oU3R5bGVQcm9wZXJ0eVNldCogc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcywg
VCogYmFzZVN0eWxlKTsKQEAgLTIwMSw3ICsyMDEsNyBAQCBIVE1MRWxlbWVudEVxdWl2YWxlbnQ6
OkhUTUxFbGVtZW50RXF1aXZhbGVudChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZUlEIHByaW1p
dAogYm9vbCBIVE1MRWxlbWVudEVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZShFbGVt
ZW50KiBlbGVtZW50LCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkgY29uc3QKIHsKICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUobV9wcm9wZXJ0
eUlEKTsKLSAgICByZXR1cm4gbWF0Y2hlcyhlbGVtZW50KSAmJiB2YWx1ZSAmJiB2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpICYmIHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUuZ2V0KCkpLT5nZXRW
YWx1ZUlEKCkgPT0gbV9wcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpOworICAgIHJldHVybiBt
YXRjaGVzKGVsZW1lbnQpICYmIHZhbHVlICYmIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYg
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQoKSktPmdldFZhbHVlSUQo
KSA9PSBtX3ByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCk7CiB9CiAKIHZvaWQgSFRNTEVsZW1l
bnRFcXVpdmFsZW50OjphZGRUb1N0eWxlKEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIHN0eWxlKSBj
b25zdApAQCAtMzc4LDcgKzM3OCw3IEBAIHN0YXRpYyBSR0JBMzIgY3NzVmFsdWVUb1JHQkEoQ1NT
VmFsdWUqIGNvbG9yVmFsdWUpCiAgICAgaWYgKCFjb2xvclZhbHVlIHx8ICFjb2xvclZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAg
ICAgCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZUNvbG9yID0gdG9DU1NQcmltaXRp
dmVWYWx1ZShjb2xvclZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlQ29s
b3IgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNvbG9yVmFsdWUpOwogICAgIGlm
IChwcmltaXRpdmVDb2xvci0+aXNSR0JDb2xvcigpKQogICAgICAgICByZXR1cm4gcHJpbWl0aXZl
Q29sb3ItPmdldFJHQkEzMlZhbHVlKCk7CiAgICAgCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBF
ZGl0aW5nU3R5bGU6OmV4dHJhY3RGb250U2l6ZURlbHRhKCkKICAgICBpZiAoIXZhbHVlIHx8ICF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdl
dCgpKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgpKTsKIAogICAgIC8vIE9ubHkgUFggaGFu
ZGxlZCBub3cuIElmIHdlIGhhbmRsZSBtb3JlIHR5cGVzIGluIHRoZSBmdXR1cmUsIHBlcmhhcHMK
ICAgICAvLyBhIHN3aXRjaCBzdGF0ZW1lbnQgaGVyZSB3b3VsZCBiZSBtb3JlIGFwcHJvcHJpYXRl
LgpAQCAtNTIzLDEzICs1MjMsMTMgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb24o
V3JpdGluZ0RpcmVjdGlvbiYgd3JpdGluZ0RpcmVjdGlvbikgY29uc3QKICAgICBpZiAoIXVuaWNv
ZGVCaWRpIHx8ICF1bmljb2RlQmlkaS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBDU1NWYWx1ZUlEIHVuaWNvZGVCaWRpVmFsdWUgPSB0b0NTU1ByaW1p
dGl2ZVZhbHVlKHVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0VmFsdWVJRCgpOworICAgIENTU1ZhbHVl
SUQgdW5pY29kZUJpZGlWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5p
Y29kZUJpZGkuZ2V0KCkpLT5nZXRWYWx1ZUlEKCk7CiAgICAgaWYgKHVuaWNvZGVCaWRpVmFsdWUg
PT0gQ1NTVmFsdWVFbWJlZCkgewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IGRpcmVjdGlvbiA9
IG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlyZWN0aW9u
KTsKICAgICAgICAgaWYgKCFkaXJlY3Rpb24gfHwgIWRpcmVjdGlvbi0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHdyaXRpbmdEaXJlY3Rp
b24gPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGRpcmVjdGlvbi5nZXQoKSktPmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUx0ciA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJpZ2h0VG9MZWZ0
V3JpdGluZ0RpcmVjdGlvbjsKKyAgICAgICAgd3JpdGluZ0RpcmVjdGlvbiA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGlyZWN0aW9uLmdldCgpKS0+Z2V0VmFsdWVJRCgpID09IENT
U1ZhbHVlTHRyID8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uIDogUmlnaHRUb0xlZnRXcml0
aW5nRGlyZWN0aW9uOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTk0OSw5ICs5
NDksOSBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24sIFNob3VsZFByZXNlcnZlV3JpdAogICAgICAgICBtX211dGFibGVTdHlsZS0+
cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKHVu
aWNvZGVCaWRpICYmIHVuaWNvZGVCaWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAg
bV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHN0YXRp
Y19jYXN0PENTU1ZhbHVlSUQ+KHRvQ1NTUHJpbWl0aXZlVmFsdWUodW5pY29kZUJpZGkuZ2V0KCkp
LT5nZXRWYWx1ZUlEKCkpKTsKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VW5pY29kZUJpZGksIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpKTsK
ICAgICAgICAgaWYgKGRpcmVjdGlvbiAmJiBkaXJlY3Rpb24tPmlzUHJpbWl0aXZlVmFsdWUoKSkK
LSAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVj
dGlvbiwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4odG9DU1NQcmltaXRpdmVWYWx1ZShkaXJlY3Rp
b24uZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpKTsKKyAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4o
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihkaXJlY3Rpb24uZ2V0KCkpLT5nZXRWYWx1
ZUlEKCkpKTsKICAgICB9CiB9CiAKQEAgLTExNDksNyArMTE0OSw3IEBAIHZvaWQgRWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50KiBl
bGVtZW50KQogICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gcHJvcGVydHkudmFsdWUoKTsK
ICAgICAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KS0+aXNQZXJjZW50YWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKS0+aXNQZXJjZW50YWdlKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoUmVmUHRyPENTU1ZhbHVlPiBjb21wdXRlZFByb3BlcnR5VmFsdWUgPSBjb21wdXRlZFN0eWxl
LnByb3BlcnR5VmFsdWUocHJvcGVydHkuaWQoKSkpCiAgICAgICAgICAgICAgICAgICAgIGZyb21D
b21wdXRlZFN0eWxlLT5hZGRQYXJzZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0eS5pZCgp
LCBjb21wdXRlZFByb3BlcnR5VmFsdWUucmVsZWFzZSgpKSk7CiAgICAgICAgICAgICB9CkBAIC0x
MjIyLDcgKzEyMjIsNyBAQCBpbnQgRWRpdGluZ1N0eWxlOjpsZWdhY3lGb250U2l6ZShEb2N1bWVu
dCogZG9jdW1lbnQpIGNvbnN0CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSA9IG1fbXV0
YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFNpemUpOwogICAg
IGlmICghY3NzVmFsdWUgfHwgIWNzc1ZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1ZShkb2N1bWVu
dCwgdG9DU1NQcmltaXRpdmVWYWx1ZShjc3NWYWx1ZS5nZXQoKSksCisgICAgcmV0dXJuIGxlZ2Fj
eUZvbnRTaXplRnJvbUNTU1ZhbHVlKGRvY3VtZW50LCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KGNzc1ZhbHVlLmdldCgpKSwKICAgICAgICAgbV9zaG91bGRVc2VGaXhlZERlZmF1bHRG
b250U2l6ZSwgQWx3YXlzVXNlTGVnYWN5Rm9udFNpemUpOwogfQogCkBAIC0xMjg2LDcgKzEyODYs
NyBAQCBXcml0aW5nRGlyZWN0aW9uIEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbkZvclNlbGVj
dGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJgogICAgICAgICAgICAgaWYgKCF1bmljb2RlQmlk
aSB8fCAhdW5pY29kZUJpZGktPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICAgICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaVZhbHVlID0gdG9D
U1NQcmltaXRpdmVWYWx1ZSh1bmljb2RlQmlkaS5nZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICAg
ICAgICAgIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRWYWx1ZUlEKCk7CiAgICAgICAgICAg
ICBpZiAodW5pY29kZUJpZGlWYWx1ZSA9PSBDU1NWYWx1ZUVtYmVkIHx8IHVuaWNvZGVCaWRpVmFs
dWUgPT0gQ1NTVmFsdWVCaWRpT3ZlcnJpZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5hdHVy
YWxXcml0aW5nRGlyZWN0aW9uOwogICAgICAgICB9CkBAIC0xMzE1LDcgKzEzMTUsNyBAQCBXcml0
aW5nRGlyZWN0aW9uIEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJgogICAgICAgICBpZiAoIXVuaWNvZGVCaWRpIHx8ICF1bmljb2Rl
QmlkaS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh1bmlj
b2RlQmlkaS5nZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICAgICAgQ1NTVmFsdWVJRCB1bmljb2Rl
QmlkaVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih1bmljb2RlQmlkaS5n
ZXQoKSktPmdldFZhbHVlSUQoKTsKICAgICAgICAgaWYgKHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NT
VmFsdWVOb3JtYWwpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTMyNyw3ICsxMzI3LDcg
QEAgV3JpdGluZ0RpcmVjdGlvbiBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rp
b24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYKICAgICAgICAgaWYgKCFkaXJlY3Rpb24gfHwgIWRp
cmVjdGlvbi0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgQ1NTVmFsdWVJRCBkaXJlY3Rpb25WYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoZGly
ZWN0aW9uLmdldCgpKS0+Z2V0VmFsdWVJRCgpOworICAgICAgICBDU1NWYWx1ZUlEIGRpcmVjdGlv
blZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihkaXJlY3Rpb24uZ2V0KCkp
LT5nZXRWYWx1ZUlEKCk7CiAgICAgICAgIGlmIChkaXJlY3Rpb25WYWx1ZSAhPSBDU1NWYWx1ZUx0
ciAmJiBkaXJlY3Rpb25WYWx1ZSAhPSBDU1NWYWx1ZVJ0bCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCB2b2lkIFN0eWxlQ2hhbmdlOjpleHRyYWN0VGV4dFN0
eWxlcyhEb2N1bWVudCogZG9jdW1lbnQsIE11dGFibGVTdHlsZVByb3BlcnR5U2V0KgogICAgIGlm
IChSZWZQdHI8Q1NTVmFsdWU+IGZvbnRTaXplID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlGb250U2l6ZSkpIHsKICAgICAgICAgaWYgKCFmb250U2l6ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICAgICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFNpemUpOyAvLyBDYW4ndCBtYWtlIHNlbnNlIG9mIHRoZSBudW1iZXIuIFB1dCBubyBmb250
IHNpemUuCi0gICAgICAgIGVsc2UgaWYgKGludCBsZWdhY3lGb250U2l6ZSA9IGxlZ2FjeUZvbnRT
aXplRnJvbUNTU1ZhbHVlKGRvY3VtZW50LCB0b0NTU1ByaW1pdGl2ZVZhbHVlKGZvbnRTaXplLmdl
dCgpKSwKKyAgICAgICAgZWxzZSBpZiAoaW50IGxlZ2FjeUZvbnRTaXplID0gbGVnYWN5Rm9udFNp
emVGcm9tQ1NTVmFsdWUoZG9jdW1lbnQsIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
Zm9udFNpemUuZ2V0KCkpLAogICAgICAgICAgICAgICAgIHNob3VsZFVzZUZpeGVkRm9udERlZmF1
bHRTaXplLCBVc2VMZWdhY3lGb250U2l6ZU9ubHlJZlBpeGVsVmFsdWVzTWF0Y2gpKSB7CiAgICAg
ICAgICAgICBtX2FwcGx5Rm9udFNpemUgPSBTdHJpbmc6Om51bWJlcihsZWdhY3lGb250U2l6ZSk7
CiAgICAgICAgICAgICBzdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSk7
CkBAIC0xNDk5LDcgKzE0OTksNyBAQCBzdGF0aWMgYm9vbCBmb250V2VpZ2h0SXNCb2xkKENTU1Zh
bHVlKiBmb250V2VpZ2h0KQogCiAgICAgLy8gQmVjYXVzZSBiIHRhZyBjYW4gb25seSBib2xkIHRl
eHQsIHRoZXJlIGFyZSBvbmx5IHR3byBzdGF0ZXMgaW4gcGxhaW4gaHRtbDogYm9sZCBhbmQgbm90
IGJvbGQuCiAgICAgLy8gQ29sbGFwc2UgYWxsIG90aGVyIHZhbHVlcyB0byBlaXRoZXIgb25lIG9m
IHRoZXNlIHR3byBzdGF0ZXMgZm9yIGVkaXRpbmcgcHVycG9zZXMuCi0gICAgc3dpdGNoICh0b0NT
U1ByaW1pdGl2ZVZhbHVlKGZvbnRXZWlnaHQpLT5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2gg
KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZm9udFdlaWdodCktPmdldFZhbHVlSUQo
KSkgewogICAgICAgICBjYXNlIENTU1ZhbHVlMTAwOgogICAgICAgICBjYXNlIENTU1ZhbHVlMjAw
OgogICAgICAgICBjYXNlIENTU1ZhbHVlMzAwOgpAQCAtMTU5Myw3ICsxNTkzLDcgQEAgYm9vbCBp
c1RyYW5zcGFyZW50Q29sb3JWYWx1ZShDU1NWYWx1ZSogY3NzVmFsdWUpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGlmICghY3NzVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSA9IHRvQ1NTUHJpbWl0
aXZlVmFsdWUoY3NzVmFsdWUpOyAgICAKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNzc1ZhbHVlKTsgICAgCiAgICAgaWYgKHZh
bHVlLT5pc1JHQkNvbG9yKCkpCiAgICAgICAgIHJldHVybiAhYWxwaGFDaGFubmVsKHZhbHVlLT5n
ZXRSR0JBMzJWYWx1ZSgpKTsgICAgCiAgICAgcmV0dXJuIHZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVUcmFuc3BhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA5ZjQ3
OWNkNzkyZjdhMTI1Y2IxYjA2ODc4OTQ2ZjQzMGQ4NTU0N2Y3Li41YTgxNDI0OGFjNTcyNGUxMjhl
NDQxODhhMjEyNDE2ZWMwNTZiNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC00
NjcsNyArNDY3LDcgQEAgc3RhdGljIGJvb2wgcHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShT
dHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgQ1NTUHJvcGVydHlJRAogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZS5nZXQoKSktPmdldFZh
bHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOwog
fQogCiBzdGF0aWMgYm9vbCBuZWVkSW50ZXJjaGFuZ2VOZXdsaW5lQWZ0ZXIoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCBj
ZGI3YzNjN2QzOWIwZGUyYjVmMmI4MzI5ZmQ4MGU1NDYyNDg3MjczLi45YjkwZmNiNTUxOTM1ZjEw
YmI4M2YyZmE0NGI2ZjQ3NDAzOGY4MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnJldHJpZXZl
UmVzb3VyY2VzRm9yUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsCiAgICAg
ICAgIGlmICghY3NzVmFsdWUtPmlzSW1hZ2VWYWx1ZSgpKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgQ1NTSW1hZ2VWYWx1ZSogaW1hZ2VWYWx1ZSA9IHRvQ1NTSW1hZ2VWYWx1ZShj
c3NWYWx1ZS5nZXQoKSk7CisgICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4oY3NzVmFsdWUuZ2V0KCkpOwogICAgICAgICBTdHlsZUlt
YWdlKiBzdHlsZUltYWdlID0gaW1hZ2VWYWx1ZS0+Y2FjaGVkT3JQZW5kaW5nSW1hZ2UoKTsKICAg
ICAgICAgLy8gTm9uIGNhY2hlZC1pbWFnZXMgYXJlIGp1c3QgcGxhY2UtaG9sZGVycyBhbmQgZG8g
bm90IGNvbnRhaW4gZGF0YS4KICAgICAgICAgaWYgKCFzdHlsZUltYWdlIHx8ICFzdHlsZUltYWdl
LT5pc0NhY2hlZEltYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVBlbmRpbmdJbWFnZS5oCmluZGV4IGM5NTExYzBkMDNiNzVhNWY0MThhNGZiMmZhMDI0
MDBjNTZmNTViNGMuLmI2ODllZTc3OTZkMzJiMmJhOGFmOGYzMjFmZDY1MWVkMDRkZjJiNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFn
ZS5oCkBAIC00NSwxNCArNDUsMTQgQEAgY2xhc3MgU3R5bGVQZW5kaW5nSW1hZ2UgOiBwdWJsaWMg
U3R5bGVJbWFnZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQZW5kaW5n
SW1hZ2U+IGNyZWF0ZShDU1NWYWx1ZSogdmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHls
ZVBlbmRpbmdJbWFnZSh2YWx1ZSkpOyB9CiAKLSAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBk
YXRhKCkgY29uc3QgeyByZXR1cm4gdG9DU1NJbWFnZVZhbHVlKG1fdmFsdWUpOyB9CisgICAgdmly
dHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENT
U0ltYWdlVmFsdWUqPihtX3ZhbHVlKTsgfQogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBjc3NWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICBDU1NJbWFnZVZh
bHVlKiBjc3NJbWFnZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS0+aXNJbWFnZVZhbHVl
KCkgPyB0b0NTU0ltYWdlVmFsdWUobV92YWx1ZSkgOiAwOyB9Ci0gICAgQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZSogY3NzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUt
PmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpID8gdG9DU1NJbWFnZUdlbmVyYXRvclZhbHVlKG1fdmFs
dWUpIDogMDsgfQotICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGNzc0N1cnNvckltYWdlVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLT5pc0N1cnNvckltYWdlVmFsdWUoKSA/IHRvQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZShtX3ZhbHVlKSA6IDA7IH0KKyAgICBDU1NJbWFnZVZhbHVlKiBjc3NJbWFn
ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS0+aXNJbWFnZVZhbHVlKCkgPyBzdGF0aWNf
Y2FzdDxDU1NJbWFnZVZhbHVlKj4obV92YWx1ZSkgOiAwOyB9CisgICAgQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZSogY3NzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUt
PmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpID8gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZSo+KG1fdmFsdWUpIDogMDsgfQorICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGNzc0N1cnNv
ckltYWdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLT5pc0N1cnNvckltYWdlVmFsdWUo
KSA/IHN0YXRpY19jYXN0PENTU0N1cnNvckltYWdlVmFsdWUqPihtX3ZhbHVlKSA6IDA7IH0KICNp
ZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKLSAgICBDU1NJbWFnZVNldFZhbHVlKiBjc3NJbWFnZVNl
dFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS0+aXNJbWFnZVNldFZhbHVlKCkgPyB0b0NT
U0ltYWdlU2V0VmFsdWUobV92YWx1ZSkgOiAwOyB9CisgICAgQ1NTSW1hZ2VTZXRWYWx1ZSogY3Nz
SW1hZ2VTZXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUtPmlzSW1hZ2VTZXRWYWx1ZSgp
ID8gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VTZXRWYWx1ZSo+KG1fdmFsdWUpIDogMDsgfQogI2VuZGlm
CiAgICAgCiAgICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJPYmpl
Y3QqLCBmbG9hdCAvKm11bHRpcGxpZXIqLykgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTGF5b3V0
U2l6ZSgpOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>