<?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>180847</bug_id>
          
          <creation_ts>2017-12-14 16:36:17 -0800</creation_ts>
          <short_desc>Serialize WebsitePoliciesData instead of WebsitePolicies</short_desc>
          <delta_ts>2017-12-14 18:09:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1381905</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-14 16:36:17 -0800</bug_when>
    <thetext>Serialize WebsitePoliciesData instead of WebsitePolicies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381907</commentid>
    <comment_count>1</comment_count>
      <attachid>329420</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-14 16:41:54 -0800</bug_when>
    <thetext>Created attachment 329420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381957</commentid>
    <comment_count>2</comment_count>
      <attachid>329420</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-14 17:51:46 -0800</bug_when>
    <thetext>Comment on attachment 329420
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381965</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-14 18:08:36 -0800</bug_when>
    <thetext>http://trac.webkit.org/r225954</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381966</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-14 18:09:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/36064545&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329420</attachid>
            <date>2017-12-14 16:41:54 -0800</date>
            <delta_ts>2017-12-14 17:51:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180847-20171214164153.patch</filename>
            <type>text/plain</type>
            <size>93483</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU5NDMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDE3LTEyLTE0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VyaWFsaXplIFdl
YnNpdGVQb2xpY2llc0RhdGEgaW5zdGVhZCBvZiBXZWJzaXRlUG9saWNpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDg0NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlv
ci4gIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhZGQgdGhpbmdzIHRvIFdlYnNpdGVQb2xpY2llcyB0
aGF0IGhhdmUgCisgICAgICAgIGEgZGlmZmVyZW50IGZvcm0gd2hlbiBzZXJpYWxpemVkIHRvIGFu
b3RoZXIgcHJvY2Vzcy4KKyAgICAgICAgCisgICAgICAgIEFsc28sIHJlbW92ZSBBUEk6OldlYnNp
dGVQb2xpY2llcyBiZWNhdXNlIHRoZSB3cmFwcGVyIGlzbid0IG5lY2Vzc2FyeS4KKyAgICAgICAg
V2Vic2l0ZVBvbGljaWVzIGlzIG5vdyB0aGUgQVBJIHR5cGUgdGhhdCBvbmx5IGV4aXN0cyBpbiB0
aGUgVUlQcm9jZXNzLgorCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVQb2xpY2llcy5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlUG9saWNpZXM6OmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXM6OnNldENvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXM6OmFs
bG93ZWRBdXRvcGxheVF1aXJrcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVQb2xpY2llczo6c2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzOjphdXRvcGxheVBvbGljeSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQb2xpY2llczo6c2V0QXV0b3BsYXlQb2xpY3kp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXM6OmN1c3RvbUhlYWRl
ckZpZWxkcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQb2xpY2llczo6dGFr
ZUN1c3RvbUhlYWRlckZpZWxkcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQ
b2xpY2llczo6c2V0Q3VzdG9tSGVhZGVyRmllbGRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFy
ZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVQb2xpY2llcy5jcHAuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQb2xpY2ll
c0RhdGE6OmZyb21XZWJzaXRlUG9saWNpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9s
aWNpZXNEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNp
ZXNEYXRhOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhOjph
cHBseVRvRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXM6
OldlYnNpdGVQb2xpY2llcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQb2xp
Y2llczo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZVBv
bGljaWVzOjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNp
ZXM6OmFwcGx5VG9Eb2N1bWVudExvYWRlcik6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dl
YnNpdGVQb2xpY2llc0RhdGEuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OlBvbGljeUNsaWVudDo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChBUEk6OlBvbGljeUNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKEFQSTo6UG9s
aWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9s
aWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAoV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlKToKKyAg
ICAgICAgKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VVcGRhdGVXZWJzaXRl
UG9saWNpZXMpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCk6CisgICAgICAg
IChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZVBvbGljaWVzR2V0
VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZVBvbGljaWVzQ3JlYXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91
cGRhdGVXZWJzaXRlUG9saWNpZXM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBkZWFs
bG9jXSk6CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBpbml0XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oOgorICAgICAg
ICAoV2ViS2l0Ojp3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25D
bGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQcm94eTo6cmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OnVzZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6ZG93bmxvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6Omlnbm9yZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVXZWJzaXRlUG9saWNp
ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlV2Vic2l0ZVBv
bGljaWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE3LTEyLTE0
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgc2VsZi5pbXBvcnRT
Y3JpcHRzKCkgc2hvdWxkIG9iZXkgdXBkYXRlVmlhQ2FjaGUgaW5zaWRlIHNlcnZpY2Ugd29ya2Vy
cwpJbmRleDogU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjU5MjUpCisrKyBTb3VyY2UvV2Vi
S2l0L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAgc2V0
KFdlYktpdF9TT1VSQ0VTCiAgICAgU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5jcHAKICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAKICAgICBTaGFyZWQvV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCi0gICAgU2hhcmVkL1dlYnNpdGVQb2xpY2llcy5jcHAK
KyAgICBTaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKIAogICAgIFNoYXJlZC9BUEkvQVBJ
QXJyYXkuY3BwCiAgICAgU2hhcmVkL0FQSS9BUElEYXRhLmNwcApAQCAtMzU4LDcgKzM1OCw2IEBA
IHNldChXZWJLaXRfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQ
b2xpY2llcy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVdpbmRvd0ZlYXR1cmVzLmNwcAogCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDIyNTkyNSkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llcy5jcHAJKG5vbmV4aXN0ZW50
KQpAQCAtMSwxMTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJzaXRlUG9saWNpZXMuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tl
cnNFbmFibGVkLCBPcHRpb25TZXQ8V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxh
eVF1aXJrcywgV2Vic2l0ZUF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5LCBWZWN0b3I8V2Vi
Q29yZTo6SFRUUEhlYWRlckZpZWxkPiYmIGN1c3RvbUhlYWRlckZpZWxkcykKLSAgICA6IG1fY29u
dGVudEJsb2NrZXJzRW5hYmxlZChjb250ZW50QmxvY2tlcnNFbmFibGVkKQotICAgICwgbV9hbGxv
d2VkQXV0b3BsYXlRdWlya3MoYWxsb3dlZEF1dG9wbGF5UXVpcmtzKQotICAgICwgbV9hdXRvcGxh
eVBvbGljeShhdXRvcGxheVBvbGljeSkKLSAgICAsIG1fY3VzdG9tSGVhZGVyRmllbGRzKFdURk1v
dmUoY3VzdG9tSGVhZGVyRmllbGRzKSkKLXsKLX0KLQotdm9pZCBXZWJzaXRlUG9saWNpZXM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX2Nv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQ7Ci0gICAgZW5jb2RlciA8PCBtX2F1dG9wbGF5UG9saWN5Owot
ICAgIGVuY29kZXIgPDwgbV9hbGxvd2VkQXV0b3BsYXlRdWlya3M7Ci0gICAgZW5jb2RlciA8PCBt
X2N1c3RvbUhlYWRlckZpZWxkczsKLX0KLQotc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXM+
IFdlYnNpdGVQb2xpY2llczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7Ci0gICAgZGVjb2RlciA+
PiBjb250ZW50QmxvY2tlcnNFbmFibGVkOwotICAgIGlmICghY29udGVudEJsb2NrZXJzRW5hYmxl
ZCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKLSAgICBzdGQ6Om9wdGlvbmFs
PFdlYnNpdGVBdXRvcGxheVBvbGljeT4gYXV0b3BsYXlQb2xpY3k7Ci0gICAgZGVjb2RlciA+PiBh
dXRvcGxheVBvbGljeTsKLSAgICBpZiAoIWF1dG9wbGF5UG9saWN5KQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PFdlYnNpdGVB
dXRvcGxheVF1aXJrPj4gYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwotICAgIGRlY29kZXIgPj4gYWxs
b3dlZEF1dG9wbGF5UXVpcmtzOwotICAgIGlmICghYWxsb3dlZEF1dG9wbGF5UXVpcmtzKQotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4+IGN1c3RvbUhlYWRlckZpZWxkczsKLSAgICBkZWNv
ZGVyID4+IGN1c3RvbUhlYWRlckZpZWxkczsKLSAgICBpZiAoIWN1c3RvbUhlYWRlckZpZWxkcykK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKLSAgICByZXR1cm4geyB7Ci0gICAg
ICAgIFdURk1vdmUoKmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpLAotICAgICAgICBXVEZNb3ZlKCph
bGxvd2VkQXV0b3BsYXlRdWlya3MpLAotICAgICAgICBXVEZNb3ZlKCphdXRvcGxheVBvbGljeSks
Ci0gICAgICAgIFdURk1vdmUoKmN1c3RvbUhlYWRlckZpZWxkcyksCi0gICAgfSB9OwotfQotCi12
b2lkIFdlYnNpdGVQb2xpY2llczo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2ll
cyYmIHdlYnNpdGVQb2xpY2llcywgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9h
ZGVyKQotewotICAgIGRvY3VtZW50TG9hZGVyLnNldEN1c3RvbUhlYWRlckZpZWxkcyh3ZWJzaXRl
UG9saWNpZXMudGFrZUN1c3RvbUhlYWRlckZpZWxkcygpKTsKLSAgICAKLSAgICAvLyBPbmx5IHNl
dFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBk
aXNhYmxlZCBieSByZWxvYWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgotICAgIGlmIChk
b2N1bWVudExvYWRlci51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkpCi0gICAgICAgIGRv
Y3VtZW50TG9hZGVyLnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQod2Vic2l0ZVBvbGlj
aWVzLmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoKSk7Ci0KLSAgICBPcHRpb25TZXQ8V2ViQ29yZTo6
QXV0b3BsYXlRdWlyaz4gcXVpcmtzOwotICAgIGF1dG8gYWxsb3dlZFF1aXJrcyA9IHdlYnNpdGVQ
b2xpY2llcy5hbGxvd2VkQXV0b3BsYXlRdWlya3MoKTsKLSAgICAKLSAgICBpZiAoYWxsb3dlZFF1
aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVz
KSkKLSAgICAgICAgcXVpcmtzIHw9IFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVz
ZXJHZXN0dXJlczsKLSAgICAKLSAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhXZWJzaXRl
QXV0b3BsYXlRdWlyazo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50cykpCi0gICAgICAgIHF1aXJrcyB8
PSBXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOwotICAgIAot
ICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJp
dHJhcnlVc2VyR2VzdHVyZXMpKQotICAgICAgICBxdWlya3MgfD0gV2ViQ29yZTo6QXV0b3BsYXlR
dWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzOwotCi0gICAgZG9jdW1lbnRMb2FkZXIuc2V0QWxs
b3dlZEF1dG9wbGF5UXVpcmtzKHF1aXJrcyk7Ci0KLSAgICBzd2l0Y2ggKHdlYnNpdGVQb2xpY2ll
cy5hdXRvcGxheVBvbGljeSgpKSB7Ci0gICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRl
ZmF1bHQ6Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLnNldEF1dG9wbGF5UG9saWN5KFdlYkNvcmU6
OkF1dG9wbGF5UG9saWN5OjpEZWZhdWx0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJz
aXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93OgotICAgICAgICBkb2N1bWVudExvYWRlci5zZXRBdXRv
cGxheVBvbGljeShXZWJDb3JlOjpBdXRvcGxheVBvbGljeTo6QWxsb3cpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ6Ci0g
ICAgICAgIGRvY3VtZW50TG9hZGVyLnNldEF1dG9wbGF5UG9saWN5KFdlYkNvcmU6OkF1dG9wbGF5
UG9saWN5OjpBbGxvd1dpdGhvdXRTb3VuZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2Vi
c2l0ZUF1dG9wbGF5UG9saWN5OjpEZW55OgotICAgICAgICBkb2N1bWVudExvYWRlci5zZXRBdXRv
cGxheVBvbGljeShXZWJDb3JlOjpBdXRvcGxheVBvbGljeTo6RGVueSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLX0KLQotfQotCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9s
aWNpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNp
ZXMuaAkocmV2aXNpb24gMjI1OTI1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBv
bGljaWVzLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSA8V2ViQ29yZS9IVFRQSGVhZGVyRmllbGQuaD4KLSNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFj
ZSBJUEMgewotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIERvY3VtZW50TG9hZGVyOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotZW51bSBjbGFzcyBXZWJzaXRlQXV0b3BsYXlQb2xpY3kgewotICAgIERlZmF1bHQsCi0gICAg
QWxsb3csCi0gICAgQWxsb3dXaXRob3V0U291bmQsCi0gICAgRGVueQotfTsKLQotZW51bSBjbGFz
cyBXZWJzaXRlQXV0b3BsYXlRdWlyayB7Ci0gICAgU3ludGhlc2l6ZWRQYXVzZUV2ZW50cyA9IDEg
PDwgMCwKLSAgICBJbmhlcml0ZWRVc2VyR2VzdHVyZXMgPSAxIDw8IDEsCi0gICAgQXJiaXRyYXJ5
VXNlckdlc3R1cmVzID0gMSA8PCAyLAotfTsKLQotY2xhc3MgV2Vic2l0ZVBvbGljaWVzIHsKLXB1
YmxpYzoKLSAgICBXZWJzaXRlUG9saWNpZXMoKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIGNvbnRl
bnRCbG9ja2Vyc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRCbG9ja2Vyc0VuYWJs
ZWQ7IH0KLSAgICB2b2lkIHNldENvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7
IG1fY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAKLSAgICBPcHRpb25T
ZXQ8V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcygpIGNvbnN0IHsg
cmV0dXJuIG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOyB9Ci0gICAgdm9pZCBzZXRBbGxvd2VkQXV0
b3BsYXlRdWlya3MoT3B0aW9uU2V0PFdlYnNpdGVBdXRvcGxheVF1aXJrPiBxdWlya3MpIHsgbV9h
bGxvd2VkQXV0b3BsYXlRdWlya3MgPSBxdWlya3M7IH0KLSAgICAKLSAgICBXZWJzaXRlQXV0b3Bs
YXlQb2xpY3kgYXV0b3BsYXlQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2F1dG9wbGF5UG9saWN5
OyB9Ci0gICAgdm9pZCBzZXRBdXRvcGxheVBvbGljeShXZWJzaXRlQXV0b3BsYXlQb2xpY3kgcG9s
aWN5KSB7IG1fYXV0b3BsYXlQb2xpY3kgPSBwb2xpY3k7IH0KLSAgICAKLSAgICBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYgY3VzdG9tSGVhZGVyRmllbGRzKCkgeyByZXR1
cm4gbV9jdXN0b21IZWFkZXJGaWVsZHM7IH0KLSAgICBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRl
ckZpZWxkPiYmIHRha2VDdXN0b21IZWFkZXJGaWVsZHMoKSB7IHJldHVybiBXVEZNb3ZlKG1fY3Vz
dG9tSGVhZGVyRmllbGRzKTsgfQotICAgIHZvaWQgc2V0Q3VzdG9tSGVhZGVyRmllbGRzKFZlY3Rv
cjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYgZmllbGRzKSB7IG1fY3VzdG9tSGVhZGVyRmll
bGRzID0gV1RGTW92ZShmaWVsZHMpOyB9Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgYXBwbHlUb0Rv
Y3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llcyYmLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciYp
OwotICAgIAotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llcz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwot
Ci1wcml2YXRlOgotICAgIFdlYnNpdGVQb2xpY2llcyhib29sLCBPcHRpb25TZXQ8V2Vic2l0ZUF1
dG9wbGF5UXVpcms+LCBXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQ
SGVhZGVyRmllbGQ+JiYpOwotCi0gICAgYm9vbCBtX2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgeyB0
cnVlIH07Ci0gICAgT3B0aW9uU2V0PFdlYnNpdGVBdXRvcGxheVF1aXJrPiBtX2FsbG93ZWRBdXRv
cGxheVF1aXJrczsKLSAgICBXZWJzaXRlQXV0b3BsYXlQb2xpY3kgbV9hdXRvcGxheVBvbGljeSB7
IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdCB9OwotICAgIFZlY3RvcjxXZWJDb3JlOjpI
VFRQSGVhZGVyRmllbGQ+IG1fY3VzdG9tSGVhZGVyRmllbGRzOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKLSAgICAgICAgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksCi0gICAg
ICAgIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZhdWx0LAotICAgICAgICBXZWJL
aXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3csCi0gICAgICAgIFdlYktpdDo6V2Vic2l0
ZUF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhvdXRTb3VuZCwKLSAgICAgICAgV2ViS2l0OjpXZWJz
aXRlQXV0b3BsYXlQb2xpY3k6OkRlbnkKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RG
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAko
cmV2aXNpb24gMjI1OTI1KQkoZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNp
ZXMuY3BwOjIyNTkyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0Rh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgorCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2ll
cyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJzaXRlQXV0b3BsYXlR
dWlyaz4gYWxsb3dlZEF1dG9wbGF5UXVpcmtzLCBXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0b3Bs
YXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYgY3VzdG9tSGVhZGVy
RmllbGRzKQorICAgIDogbV9jb250ZW50QmxvY2tlcnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0Vu
YWJsZWQpCisgICAgLCBtX2FsbG93ZWRBdXRvcGxheVF1aXJrcyhhbGxvd2VkQXV0b3BsYXlRdWly
a3MpCisgICAgLCBtX2F1dG9wbGF5UG9saWN5KGF1dG9wbGF5UG9saWN5KQorICAgICwgbV9jdXN0
b21IZWFkZXJGaWVsZHMoV1RGTW92ZShjdXN0b21IZWFkZXJGaWVsZHMpKQoreworfQorCit2b2lk
IFdlYnNpdGVQb2xpY2llczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IG1fY29udGVudEJsb2NrZXJzRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8
IG1fYXV0b3BsYXlQb2xpY3k7CisgICAgZW5jb2RlciA8PCBtX2FsbG93ZWRBdXRvcGxheVF1aXJr
czsKKyAgICBlbmNvZGVyIDw8IG1fY3VzdG9tSGVhZGVyRmllbGRzOworfQorCitzdGQ6Om9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llcz4gV2Vic2l0ZVBvbGljaWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGVudEJsb2NrZXJzRW5h
YmxlZDsKKyAgICBkZWNvZGVyID4+IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7CisgICAgaWYgKCFj
b250ZW50QmxvY2tlcnNFbmFibGVkKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IAorICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZUF1dG9wbGF5UG9saWN5PiBhdXRvcGxheVBvbGlj
eTsKKyAgICBkZWNvZGVyID4+IGF1dG9wbGF5UG9saWN5OworICAgIGlmICghYXV0b3BsYXlQb2xp
Y3kpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25h
bDxPcHRpb25TZXQ8V2Vic2l0ZUF1dG9wbGF5UXVpcms+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7
CisgICAgZGVjb2RlciA+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7CisgICAgaWYgKCFhbGxvd2Vk
QXV0b3BsYXlRdWlya3MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPj4gY3VzdG9tSGVh
ZGVyRmllbGRzOworICAgIGRlY29kZXIgPj4gY3VzdG9tSGVhZGVyRmllbGRzOworICAgIGlmICgh
Y3VzdG9tSGVhZGVyRmllbGRzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAor
ICAgIHJldHVybiB7IHsKKyAgICAgICAgV1RGTW92ZSgqY29udGVudEJsb2NrZXJzRW5hYmxlZCks
CisgICAgICAgIFdURk1vdmUoKmFsbG93ZWRBdXRvcGxheVF1aXJrcyksCisgICAgICAgIFdURk1v
dmUoKmF1dG9wbGF5UG9saWN5KSwKKyAgICAgICAgV1RGTW92ZSgqY3VzdG9tSGVhZGVyRmllbGRz
KSwKKyAgICB9IH07Cit9CisKK3ZvaWQgV2Vic2l0ZVBvbGljaWVzOjphcHBseVRvRG9jdW1lbnRM
b2FkZXIoV2Vic2l0ZVBvbGljaWVzJiYgd2Vic2l0ZVBvbGljaWVzLCBXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCit7CisgICAgZG9jdW1lbnRMb2FkZXIuc2V0Q3VzdG9t
SGVhZGVyRmllbGRzKHdlYnNpdGVQb2xpY2llcy50YWtlQ3VzdG9tSGVhZGVyRmllbGRzKCkpOwor
ICAgIAorICAgIC8vIE9ubHkgc2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCBpZiBpdCBo
YXNuJ3QgYWxyZWFkeSBiZWVuIGRpc2FibGVkIGJ5IHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQg
YmxvY2tlcnMuCisgICAgaWYgKGRvY3VtZW50TG9hZGVyLnVzZXJDb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQoKSkKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0VXNlckNvbnRlbnRFeHRlbnNpb25z
RW5hYmxlZCh3ZWJzaXRlUG9saWNpZXMuY29udGVudEJsb2NrZXJzRW5hYmxlZCgpKTsKKworICAg
IE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheVF1aXJrPiBxdWlya3M7CisgICAgYXV0byBhbGxv
d2VkUXVpcmtzID0gd2Vic2l0ZVBvbGljaWVzLmFsbG93ZWRBdXRvcGxheVF1aXJrcygpOworICAg
IAorICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJ
bmhlcml0ZWRVc2VyR2VzdHVyZXMpKQorICAgICAgICBxdWlya3MgfD0gV2ViQ29yZTo6QXV0b3Bs
YXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzOworICAgIAorICAgIGlmIChhbGxvd2VkUXVp
cmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRz
KSkKKyAgICAgICAgcXVpcmtzIHw9IFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVk
UGF1c2VFdmVudHM7CisgICAgCisgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0
ZUF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlcykpCisgICAgICAgIHF1aXJrcyB8
PSBXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXM7CisKKyAgICBk
b2N1bWVudExvYWRlci5zZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MocXVpcmtzKTsKKworICAgIHN3
aXRjaCAod2Vic2l0ZVBvbGljaWVzLmF1dG9wbGF5UG9saWN5KCkpIHsKKyAgICBjYXNlIFdlYnNp
dGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdDoKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0QXV0
b3BsYXlQb2xpY3koV2ViQ29yZTo6QXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3c6CisgICAgICAgIGRv
Y3VtZW50TG9hZGVyLnNldEF1dG9wbGF5UG9saWN5KFdlYkNvcmU6OkF1dG9wbGF5UG9saWN5OjpB
bGxvdyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpB
bGxvd1dpdGhvdXRTb3VuZDoKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0QXV0b3BsYXlQb2xp
Y3koV2ViQ29yZTo6QXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlbnk6CisgICAgICAgIGRv
Y3VtZW50TG9hZGVyLnNldEF1dG9wbGF5UG9saWN5KFdlYkNvcmU6OkF1dG9wbGF5UG9saWN5OjpE
ZW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit9CisKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCShyZXZpc2lvbiAyMjU5MjUpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQsMzAgKzI0LDI3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEu
aCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1
bWVudExvYWRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2Vic2l0ZVBvbGljaWVzOjpX
ZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2Vi
c2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcywgV2Vic2l0ZUF1dG9wbGF5
UG9saWN5IGF1dG9wbGF5UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYm
IGN1c3RvbUhlYWRlckZpZWxkcykKLSAgICA6IG1fY29udGVudEJsb2NrZXJzRW5hYmxlZChjb250
ZW50QmxvY2tlcnNFbmFibGVkKQotICAgICwgbV9hbGxvd2VkQXV0b3BsYXlRdWlya3MoYWxsb3dl
ZEF1dG9wbGF5UXVpcmtzKQotICAgICwgbV9hdXRvcGxheVBvbGljeShhdXRvcGxheVBvbGljeSkK
LSAgICAsIG1fY3VzdG9tSGVhZGVyRmllbGRzKFdURk1vdmUoY3VzdG9tSGVhZGVyRmllbGRzKSkK
K1dlYnNpdGVQb2xpY2llc0RhdGEgV2Vic2l0ZVBvbGljaWVzRGF0YTo6ZnJvbVdlYnNpdGVQb2xp
Y2llcyhjb25zdCBXZWJzaXRlUG9saWNpZXMmIHBvbGljaWVzKQogeworICAgIHJldHVybiB7IHBv
bGljaWVzLmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoKSwgcG9saWNpZXMuYWxsb3dlZEF1dG9wbGF5
UXVpcmtzKCksIHBvbGljaWVzLmF1dG9wbGF5UG9saWN5KCksIHBvbGljaWVzLmN1c3RvbUhlYWRl
ckZpZWxkcygpIH07CiB9CiAKLXZvaWQgV2Vic2l0ZVBvbGljaWVzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAordm9pZCBXZWJzaXRlUG9saWNpZXNEYXRhOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9jb250ZW50Qmxv
Y2tlcnNFbmFibGVkOwotICAgIGVuY29kZXIgPDwgbV9hdXRvcGxheVBvbGljeTsKLSAgICBlbmNv
ZGVyIDw8IG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwotICAgIGVuY29kZXIgPDwgbV9jdXN0b21I
ZWFkZXJGaWVsZHM7CisgICAgZW5jb2RlciA8PCBjb250ZW50QmxvY2tlcnNFbmFibGVkOworICAg
IGVuY29kZXIgPDwgYXV0b3BsYXlQb2xpY3k7CisgICAgZW5jb2RlciA8PCBhbGxvd2VkQXV0b3Bs
YXlRdWlya3M7CisgICAgZW5jb2RlciA8PCBjdXN0b21IZWFkZXJGaWVsZHM7CiB9CiAKLXN0ZDo6
b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzPiBXZWJzaXRlUG9saWNpZXM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IFdlYnNp
dGVQb2xpY2llc0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBjb250ZW50QmxvY2tlcnNFbmFibGVkOwogICAgIGRlY29kZXIgPj4g
Y29udGVudEJsb2NrZXJzRW5hYmxlZDsKQEAgLTc3LDE2ICs3NCwxNiBAQCBzdGQ6Om9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llcz4gV2Vic2l0ZVBvCiAgICAgfSB9OwogfQogCi12b2lkIFdlYnNpdGVQ
b2xpY2llczo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llcyYmIHdlYnNpdGVQ
b2xpY2llcywgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQordm9pZCBX
ZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVz
RGF0YSYmIHdlYnNpdGVQb2xpY2llcywgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImIGRvY3VtZW50
TG9hZGVyKQogewotICAgIGRvY3VtZW50TG9hZGVyLnNldEN1c3RvbUhlYWRlckZpZWxkcyh3ZWJz
aXRlUG9saWNpZXMudGFrZUN1c3RvbUhlYWRlckZpZWxkcygpKTsKKyAgICBkb2N1bWVudExvYWRl
ci5zZXRDdXN0b21IZWFkZXJGaWVsZHMoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMuY3VzdG9tSGVh
ZGVyRmllbGRzKSk7CiAgICAgCiAgICAgLy8gT25seSBzZXRVc2VyQ29udGVudEV4dGVuc2lvbnNF
bmFibGVkIGlmIGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gZGlzYWJsZWQgYnkgcmVsb2FkaW5nIHdp
dGhvdXQgY29udGVudCBibG9ja2Vycy4KICAgICBpZiAoZG9jdW1lbnRMb2FkZXIudXNlckNvbnRl
bnRFeHRlbnNpb25zRW5hYmxlZCgpKQotICAgICAgICBkb2N1bWVudExvYWRlci5zZXRVc2VyQ29u
dGVudEV4dGVuc2lvbnNFbmFibGVkKHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNFbmFi
bGVkKCkpOworICAgICAgICBkb2N1bWVudExvYWRlci5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNF
bmFibGVkKHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNFbmFibGVkKTsKIAogICAgIE9w
dGlvblNldDxXZWJDb3JlOjpBdXRvcGxheVF1aXJrPiBxdWlya3M7Ci0gICAgYXV0byBhbGxvd2Vk
UXVpcmtzID0gd2Vic2l0ZVBvbGljaWVzLmFsbG93ZWRBdXRvcGxheVF1aXJrcygpOworICAgIGNv
bnN0IGF1dG8mIGFsbG93ZWRRdWlya3MgPSB3ZWJzaXRlUG9saWNpZXMuYWxsb3dlZEF1dG9wbGF5
UXVpcmtzOwogICAgIAogICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRv
cGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpKQogICAgICAgICBxdWlya3MgfD0gV2Vi
Q29yZTo6QXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzOwpAQCAtOTksNyArOTYs
NyBAQCB2b2lkIFdlYnNpdGVQb2xpY2llczo6YXBwbHlUb0RvY3VtZW50TG9hCiAKICAgICBkb2N1
bWVudExvYWRlci5zZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MocXVpcmtzKTsKIAotICAgIHN3aXRj
aCAod2Vic2l0ZVBvbGljaWVzLmF1dG9wbGF5UG9saWN5KCkpIHsKKyAgICBzd2l0Y2ggKHdlYnNp
dGVQb2xpY2llcy5hdXRvcGxheVBvbGljeSkgewogICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9s
aWN5OjpEZWZhdWx0OgogICAgICAgICBkb2N1bWVudExvYWRlci5zZXRBdXRvcGxheVBvbGljeShX
ZWJDb3JlOjpBdXRvcGxheVBvbGljeTo6RGVmYXVsdCk7CiAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiV2Vic2l0ZVBvbGljaWVzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3Qg
V2Vic2l0ZVBvbGljaWVzRGF0YSB7CisgICAgc3RhdGljIFdlYnNpdGVQb2xpY2llc0RhdGEgZnJv
bVdlYnNpdGVQb2xpY2llcyhjb25zdCBXZWJzaXRlUG9saWNpZXMmKTsKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmLCBXZWJDb3JlOjpE
b2N1bWVudExvYWRlciYpOworCisgICAgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkIHsgdHJ1
ZSB9OworICAgIE9wdGlvblNldDxXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9wbGF5
UXVpcmtzOworICAgIFdlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGljeSB7IFdlYnNp
dGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdCB9OworICAgIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVh
ZGVyRmllbGQ+IGN1c3RvbUhlYWRlckZpZWxkczsKKyAgICAKKyAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5l
clByb3h5LmNwcAkocmV2aXNpb24gMjI1OTI0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBA
QAogI2luY2x1ZGUgIldlYkZyYW1lTGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVkZSAiV2ViRnJh
bWVQcm94eS5oIgotI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgorI2luY2x1ZGUgIldlYnNp
dGVQb2xpY2llc0RhdGEuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ2LDEyICs0Niwx
MiBAQCB2b2lkIFdlYkZyYW1lTGlzdGVuZXJQcm94eTo6aW52YWxpZGF0ZSgpCiAgICAgbV9mcmFt
ZSA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViRnJhbWVMaXN0ZW5lclByb3h5OjpyZWNlaXZlZFBv
bGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2ViRnJhbWVMaXN0ZW5l
clByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rp
b24sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiBkYXRhKQogewogICAgIGlm
ICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcmFtZS0+cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihhY3Rpb24sIG1fbGlzdGVuZXJJRCwgbV9uYXZpZ2F0aW9uLmdldCgpLCBXVEZN
b3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIG1fZnJhbWUtPnJlY2VpdmVkUG9saWN5RGVjaXNp
b24oYWN0aW9uLCBtX2xpc3RlbmVySUQsIG1fbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShkYXRh
KSk7CiAgICAgbV9mcmFtZSA9IG51bGxwdHI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCShyZXZpc2lvbiAyMjU5MjQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YkZyYW1lUHJveHk7Ci1jbGFzcyBXZWJzaXRlUG9saWNpZXM7CitzdHJ1Y3QgV2Vic2l0ZVBvbGlj
aWVzRGF0YTsKIAogY2xhc3MgV2ViRnJhbWVMaXN0ZW5lclByb3h5IDogcHVibGljIEFQSTo6T2Jq
ZWN0IHsKIHB1YmxpYzoKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IFdlYkZyYW1lTGlzdGVuZXJQcm94eShXZWJGcmFtZVByb3h5KiwgdWludDY0X3QgbGlzdGVuZXJJ
RCk7CiAKLSAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0
aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llcz4mJik7CisgICAgdm9pZCByZWNlaXZl
ZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgc3RkOjpvcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmKTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94
eT4gbV9mcmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkocmV2aXNpb24gMjI1OTI0KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eS5oIgogCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgotI2luY2x1ZGUgIldl
YnNpdGVQb2xpY2llcy5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM2LDE5ICszNiwxOSBAQCBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHk6OldlYkZyYW1lUG9sCiB7CiB9CiAKLXZvaWQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5Ojp1c2Uoc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGlj
aWVzKQordm9pZCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OnVzZShzdGQ6Om9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgZGF0YSkKIHsKLSAgICByZWNlaXZlZFBvbGljeURlY2lz
aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNlLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykp
OworICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpVc2Us
IFdURk1vdmUoZGF0YSkpOwogfQogCiB2b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6
ZG93bmxvYWQoKQogewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5
QWN0aW9uOjpEb3dubG9hZCwgeyB9KTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OlBvbGljeUFjdGlvbjo6RG93bmxvYWQsIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjppZ25vcmUoKQogewotICAgIHJlY2VpdmVkUG9saWN5
RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUsIHsgfSk7CisgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZSwgc3RkOjpudWxs
b3B0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaAkocmV2aXNp
b24gMjI1OTI0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkoZnJh
bWUsIGxpc3RlbmVySUQpKTsKICAgICB9CiAKLSAgICB2b2lkIHVzZShzdGQ6Om9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llcz4mJik7CisgICAgdm9pZCB1c2Uoc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmKTsKICAgICB2b2lkIGRvd25sb2FkKCk7CiAgICAgdm9pZCBpZ25vcmUoKTsK
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHJldmlz
aW9uIDIyNTkyNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CkBAIC0xNzUsMTQgKzE3NiwxNCBAQCB2b2lkIFdlYkZyYW1lUHJveHk6
OmRpZENoYW5nZVRpdGxlKGNvbnN0CiAgICAgbV90aXRsZSA9IHRpdGxlOwogfQogCi12b2lkIFdl
YkZyYW1lUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwg
dWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBzdGQ6Om9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYkZyYW1l
UHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0
X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBzdGQ6Om9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fYWN0aXZlTGlzdGVuZXIpOwogICAgIEFTU0VSVCht
X2FjdGl2ZUxpc3RlbmVyLT5saXN0ZW5lcklEKCkgPT0gbGlzdGVuZXJJRCk7Ci0gICAgbV9wYWdl
LT5yZWNlaXZlZFBvbGljeURlY2lzaW9uKGFjdGlvbiwgKnRoaXMsIGxpc3RlbmVySUQsIG5hdmln
YXRpb24sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgbV9wYWdlLT5yZWNlaXZlZFBv
bGljeURlY2lzaW9uKGFjdGlvbiwgKnRoaXMsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24sIFdURk1v
dmUoZGF0YSkpOwogfQogCiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIFdlYkZyYW1lUHJv
eHk6OnNldFVwUG9saWN5TGlzdGVuZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkocmV2aXNpb24gMjI1OTI0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ2VydGlmaWNh
dGVJbmZvOwogY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViUGFn
ZVByb3h5OwotY2xhc3MgV2Vic2l0ZVBvbGljaWVzOworc3RydWN0IFdlYnNpdGVQb2xpY2llc0Rh
dGE7CiAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsK
IApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgLy8gUG9saWN5IG9wZXJhdGlvbnMuCi0gICAgdm9pZCByZWNl
aXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXM+JiYp
OworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24s
IHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlvbiosIHN0ZDo6b3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJik7CiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBz
ZXRVcFBvbGljeUxpc3RlbmVyUHJveHkodWludDY0X3QgbGlzdGVuZXJJRCk7CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAJKHJldmlzaW9uIDIyNTkyNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzUsNyArMjI3NSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25JblZpc2kKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKSwgbV9w
YWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQ
b2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwg
dWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBzdGQ6Om9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIGlm
ICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzE3LDcgKzIzMTcsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAgICAgICAgIG1fc3luY05hdmln
YXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAgbV9zeW5jTmF2
aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbiA9IGFjdGlvbjsKICAgICAgICAgbV9zeW5jTmF2aWdh
dGlvbkFjdGlvblBvbGljeURvd25sb2FkSUQgPSBkb3dubG9hZElEOwotICAgICAgICBtX3N5bmNO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzID0gd2Vic2l0ZVBvbGljaWVzOwor
ICAgICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzID0gV1RG
TW92ZSh3ZWJzaXRlUG9saWNpZXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAt
MzY4NSw3ICszNjg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVT
ZQogICAgICAgICBtX2ZyYW1lU2V0TGFyZ2VzdEZyYW1lID0gdmFsdWUgPyBtX21haW5GcmFtZSA6
IDA7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiBy
ZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmlnYXRpb25JRCwgV2ViQ29yZTo6
UG9saWN5QWN0aW9uJiBwb2xpY3lBY3Rpb24sIERvd25sb2FkSUQmIGRvd25sb2FkSUQsIHN0ZDo6
b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzPiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1
aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24mIHBvbGljeUFj
dGlvbiwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKQEAgLTM3NTQsNyArMzc1NCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICBpZiAobV9zeW5jTmF2aWdhdGlvbkFj
dGlvblBvbGljeUFjdGlvbklzVmFsaWQpIHsKICAgICAgICAgcG9saWN5QWN0aW9uID0gbV9zeW5j
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbjsKICAgICAgICAgZG93bmxvYWRJRCA9IG1fc3lu
Y05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEOwotICAgICAgICB3ZWJzaXRlUG9saWNp
ZXMgPSBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzOworICAgICAg
ICB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lX
ZWJzaXRlUG9saWNpZXMpOwogICAgIH0KIH0KIApAQCAtNjE1MSw3ICs2MTUxLDcgQEAgYm9vbCBX
ZWJQYWdlUHJveHk6OndpbGxIYW5kbGVIb3Jpem9udGFsUwogICAgIHJldHVybiAhbV9jYW5TaG9y
dENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHM7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1
cGRhdGVXZWJzaXRlUG9saWNpZXMoY29uc3QgV2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNp
ZXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xp
Y2llc0RhdGEmJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVcGRhdGVXZWJzaXRlUG9saWNpZXMod2Vic2l0ZVBvbGljaWVzKSwgbV9w
YWdlSUQpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDIyNTkyNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NMaWZldGltZVRyYWNrZXIuaCIKLSNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXMuaCIK
KyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rp
dml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRvcGxheUV2ZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db2xvci5oPgpAQCAtNDMzLDcgKzQzMyw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgd2lsbEhhbmRsZUhvcml6b250YWxTY3JvbGxFdmVudHMoKSBjb25zdDsKIAotICAgIHZvaWQg
dXBkYXRlV2Vic2l0ZVBvbGljaWVzKGNvbnN0IFdlYnNpdGVQb2xpY2llcyYpOworICAgIHZvaWQg
dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llc0RhdGEmJik7CiAKICAgICBib29s
IGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIApAQCAtODQzLDcgKzg0
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50
U2VsZWN0aW9uKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24sIFdlYkZyYW1lUHJveHkmLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb25JRCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXM+JiYpOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24sIFdlYkZyYW1lUHJveHkmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBBUEk6Ok5hdmln
YXRpb24qIG5hdmlnYXRpb25JRCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
KTsKIAogICAgIHZvaWQgYmFja0ZvcndhcmRSZW1vdmVkSXRlbSh1aW50NjRfdCBpdGVtSUQpOwog
CkBAIC0xMzI2LDcgKzEzMjYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWREZXN0cm95TmF2
aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgY29uc3QgVXNlckRhdGEmLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3Qm
IG5ld05hdmlnYXRpb25JRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uJiwgRG93bmxvYWRJRCYsIHN0
ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzPiYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBu
ZXdOYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiYsIERvd25sb2FkSUQmLCBzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+Jik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlN
RVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgYm9vbCYgcmVjZWl2
ZWRQb2xpY3lBY3Rpb24sIFdlYkNvcmU6OlBvbGljeUFjdGlvbiYsIERvd25sb2FkSUQmKTsKQEAg
LTE4NjcsNyArMTg2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWN0aW9uSXNWYWxpZCB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UG9saWN5QWN0
aW9uIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb24geyBXZWJDb3JlOjpQb2xpY3lB
Y3Rpb246OlVzZSB9OwogICAgIERvd25sb2FkSUQgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGlj
eURvd25sb2FkSUQgeyAwIH07Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXM+IG1f
c3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lXZWJzaXRlUG9saWNpZXM7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vi
c2l0ZVBvbGljaWVzOwogCiAgICAgYm9vbCBtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24geyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjU5
MjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCiAgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VT
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpIC0+IChib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uLCBlbnVtIFdlYkNvcmU6
OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElE
KQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwg
c3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdp
bmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklE
LCBlbnVtIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxv
YWRJRCBkb3dubG9hZElELCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzPiB3
ZWJzaXRlUG9saWNpZXMpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpIC0+IChib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCBu
ZXdOYXZpZ2F0aW9uSUQsIGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
V2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJz
aXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFj
dGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZy
YW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVQb2xpY2llcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVQb2xpY2llcy5o
CShyZXZpc2lvbiAyMjU5MjUpCShmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xp
Y2llcy5oOjIyNTkyNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVQb2xpY2ll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJGaWVsZC5oPgorI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIElQ
QyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgRG9jdW1lbnRMb2FkZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitl
bnVtIGNsYXNzIFdlYnNpdGVBdXRvcGxheVBvbGljeSB7CisgICAgRGVmYXVsdCwKKyAgICBBbGxv
dywKKyAgICBBbGxvd1dpdGhvdXRTb3VuZCwKKyAgICBEZW55Cit9OworCitlbnVtIGNsYXNzIFdl
YnNpdGVBdXRvcGxheVF1aXJrIHsKKyAgICBTeW50aGVzaXplZFBhdXNlRXZlbnRzID0gMSA8PCAw
LAorICAgIEluaGVyaXRlZFVzZXJHZXN0dXJlcyA9IDEgPDwgMSwKKyAgICBBcmJpdHJhcnlVc2Vy
R2VzdHVyZXMgPSAxIDw8IDIsCit9OworCitjbGFzcyBXZWJzaXRlUG9saWNpZXMgeworcHVibGlj
OgorICAgIFdlYnNpdGVQb2xpY2llcygpID0gZGVmYXVsdDsKKworICAgIGJvb2wgY29udGVudEJs
b2NrZXJzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEJsb2NrZXJzRW5hYmxlZDsg
fQorICAgIHZvaWQgc2V0Q29udGVudEJsb2NrZXJzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9j
b250ZW50QmxvY2tlcnNFbmFibGVkID0gZW5hYmxlZDsgfQorICAgIAorICAgIE9wdGlvblNldDxX
ZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9wbGF5UXVpcmtzKCkgY29uc3QgeyByZXR1
cm4gbV9hbGxvd2VkQXV0b3BsYXlRdWlya3M7IH0KKyAgICB2b2lkIHNldEFsbG93ZWRBdXRvcGxh
eVF1aXJrcyhPcHRpb25TZXQ8V2Vic2l0ZUF1dG9wbGF5UXVpcms+IHF1aXJrcykgeyBtX2FsbG93
ZWRBdXRvcGxheVF1aXJrcyA9IHF1aXJrczsgfQorICAgIAorICAgIFdlYnNpdGVBdXRvcGxheVBv
bGljeSBhdXRvcGxheVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b3BsYXlQb2xpY3k7IH0K
KyAgICB2b2lkIHNldEF1dG9wbGF5UG9saWN5KFdlYnNpdGVBdXRvcGxheVBvbGljeSBwb2xpY3kp
IHsgbV9hdXRvcGxheVBvbGljeSA9IHBvbGljeTsgfQorICAgIAorICAgIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiBjdXN0b21IZWFkZXJGaWVsZHMoKSB7IHJldHVybiBt
X2N1c3RvbUhlYWRlckZpZWxkczsgfQorICAgIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmll
bGQ+JiYgdGFrZUN1c3RvbUhlYWRlckZpZWxkcygpIHsgcmV0dXJuIFdURk1vdmUobV9jdXN0b21I
ZWFkZXJGaWVsZHMpOyB9CisgICAgdm9pZCBzZXRDdXN0b21IZWFkZXJGaWVsZHMoVmVjdG9yPFdl
YkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBmaWVsZHMpIHsgbV9jdXN0b21IZWFkZXJGaWVsZHMg
PSBXVEZNb3ZlKGZpZWxkcyk7IH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCBhcHBseVRvRG9jdW1l
bnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzJiYsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJik7Cisg
ICAgCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CisKK3By
aXZhdGU6CisgICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wsIE9wdGlvblNldDxXZWJzaXRlQXV0b3Bs
YXlRdWlyaz4sIFdlYnNpdGVBdXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFk
ZXJGaWVsZD4mJik7CisKKyAgICBib29sIG1fY29udGVudEJsb2NrZXJzRW5hYmxlZCB7IHRydWUg
fTsKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZUF1dG9wbGF5UXVpcms+IG1fYWxsb3dlZEF1dG9wbGF5
UXVpcmtzOworICAgIFdlYnNpdGVBdXRvcGxheVBvbGljeSBtX2F1dG9wbGF5UG9saWN5IHsgV2Vi
c2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZhdWx0IH07CisgICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBI
ZWFkZXJGaWVsZD4gbV9jdXN0b21IZWFkZXJGaWVsZHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAorICAgICAgICBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSwKKyAgICAgICAg
V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQsCisgICAgICAgIFdlYktpdDo6
V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvdywKKyAgICAgICAgV2ViS2l0OjpXZWJzaXRlQXV0
b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kLAorICAgICAgICBXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVBvbGljeTo6RGVueQorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVQb2xpY2llcy5oCShyZXZpc2lvbiAy
MjU5MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlUG9saWNpZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmg+CiAjaW5j
bHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC01
NSw4ICs1Niw5IEBAIGVudW0gY2xhc3MgV2Vic2l0ZUF1dG9wbGF5UXVpcmsgewogICAgIEFyYml0
cmFyeVVzZXJHZXN0dXJlcyA9IDEgPDwgMiwKIH07CiAKLWNsYXNzIFdlYnNpdGVQb2xpY2llcyB7
CitjbGFzcyBXZWJzaXRlUG9saWNpZXMgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpXZWJzaXRlUG9saWNpZXM+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFdlYnNpdGVQb2xpY2llcz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJz
aXRlUG9saWNpZXMpOyB9CiAgICAgV2Vic2l0ZVBvbGljaWVzKCkgPSBkZWZhdWx0OwogCiAgICAg
Ym9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50Qmxv
Y2tlcnNFbmFibGVkOyB9CkBAIC02OCwxNyArNzAsMTcgQEAgcHVibGljOgogICAgIFdlYnNpdGVB
dXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b3BsYXlQ
b2xpY3k7IH0KICAgICB2b2lkIHNldEF1dG9wbGF5UG9saWN5KFdlYnNpdGVBdXRvcGxheVBvbGlj
eSBwb2xpY3kpIHsgbV9hdXRvcGxheVBvbGljeSA9IHBvbGljeTsgfQogICAgIAotICAgIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiBjdXN0b21IZWFkZXJGaWVsZHMoKSB7
IHJldHVybiBtX2N1c3RvbUhlYWRlckZpZWxkczsgfQorICAgIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpIVFRQSGVhZGVyRmllbGQ+JiBjdXN0b21IZWFkZXJGaWVsZHMoKSBjb25zdCB7IHJldHVybiBt
X2N1c3RvbUhlYWRlckZpZWxkczsgfQogICAgIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmll
bGQ+JiYgdGFrZUN1c3RvbUhlYWRlckZpZWxkcygpIHsgcmV0dXJuIFdURk1vdmUobV9jdXN0b21I
ZWFkZXJGaWVsZHMpOyB9CiAgICAgdm9pZCBzZXRDdXN0b21IZWFkZXJGaWVsZHMoVmVjdG9yPFdl
YkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBmaWVsZHMpIHsgbV9jdXN0b21IZWFkZXJGaWVsZHMg
PSBXVEZNb3ZlKGZpZWxkcyk7IH0KLSAgICAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVRvRG9jdW1l
bnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzJiYsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJik7Ci0g
ICAgCi0gICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKIHBy
aXZhdGU6Ci0gICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wsIE9wdGlvblNldDxXZWJzaXRlQXV0b3Bs
YXlRdWlyaz4sIFdlYnNpdGVBdXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFk
ZXJGaWVsZD4mJik7CisgICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5h
YmxlZCwgT3B0aW9uU2V0PFdlYnNpdGVBdXRvcGxheVF1aXJrPiBhbGxvd2VkQXV0b3BsYXlRdWly
a3MsIFdlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6
OkhUVFBIZWFkZXJGaWVsZD4mJiBjdXN0b21IZWFkZXJGaWVsZHMpCisgICAgICAgIDogbV9jb250
ZW50QmxvY2tlcnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCisgICAgICAgICwgbV9h
bGxvd2VkQXV0b3BsYXlRdWlya3MoYWxsb3dlZEF1dG9wbGF5UXVpcmtzKQorICAgICAgICAsIG1f
YXV0b3BsYXlQb2xpY3koYXV0b3BsYXlQb2xpY3kpCisgICAgICAgICwgbV9jdXN0b21IZWFkZXJG
aWVsZHMoV1RGTW92ZShjdXN0b21IZWFkZXJGaWVsZHMpKQorICAgIHsgfQogCiAgICAgYm9vbCBt
X2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgT3B0aW9uU2V0PFdlYnNpdGVB
dXRvcGxheVF1aXJrPiBtX2FsbG93ZWRBdXRvcGxheVF1aXJrczsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAkocmV2aXNpb24g
MjI1OTI0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlNhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXMu
aCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTEwMSwxMiArMTAxLDEyIEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgUmVmPE5hdmlnYXRpb25BY3Rpb24+JiYsIFJlZjxXZWJLaXQ6Oldl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgT2JqZWN0KikKICAgICB7Ci0g
ICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKKyAgICAgICAgbGlzdGVuZXItPnVzZShzdGQ6Om51
bGxvcHQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdhdGlvblJlc3BvbnNl
PiYmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIs
IE9iamVjdCopCiAgICAgewotICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CisgICAgICAgIGxp
c3RlbmVyLT51c2Uoc3RkOjpudWxsb3B0KTsKICAgICB9CiAgICAgCiAgICAgdmlydHVhbCB2b2lk
IGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNv
cmU6OlVSTCYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mJikg
eyB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGll
bnQuaAkocmV2aXNpb24gMjI1OTI0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBvbGljeUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNs
dWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5o
IgotI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVM
b2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTUzLDE1ICs1Miwx
NSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNv
bnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlz
dGVuZXIsIEFQSTo6T2JqZWN0KikKICAgICB7Ci0gICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsK
KyAgICAgICAgbGlzdGVuZXItPnVzZShzdGQ6Om51bGxvcHQpOwogICAgIH0KICAgICB2aXJ0dWFs
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBB
UEk6Ok9iamVjdCopCiAgICAgewotICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CisgICAgICAg
IGxpc3RlbmVyLT51c2Uoc3RkOjpudWxsb3B0KTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIGRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKLSAgICAgICAgbGlz
dGVuZXItPnVzZSh7IH0pOworICAgICAgICBsaXN0ZW5lci0+dXNlKHN0ZDo6bnVsbG9wdCk7CiAg
ICAgfQogICAgIHZpcnR1YWwgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIHsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCShyZXZpc2lvbiAyMjU5
MjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNw
cAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCi0KLW5hbWVzcGFjZSBB
UEkgewotCi1SZWY8V2Vic2l0ZVBvbGljaWVzPiBXZWJzaXRlUG9saWNpZXM6OmNyZWF0ZSgpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZVBvbGljaWVzKCkpOwotfQotCi1XZWJz
aXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcygpCi17Ci19Ci0KLVdlYnNpdGVQb2xpY2llczo6
fldlYnNpdGVQb2xpY2llcygpCi17Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgJKHJldmlzaW9uIDIyNTkyNSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgotI2luY2x1
ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci0KLWNsYXNzIFdlYnNpdGVQ
b2xpY2llcyBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0ZVBv
bGljaWVzPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJzaXRlUG9saWNpZXM+IGNyZWF0
ZSgpOwotICAgIGV4cGxpY2l0IFdlYnNpdGVQb2xpY2llcygpOwotICAgIHZpcnR1YWwgfldlYnNp
dGVQb2xpY2llcygpOwotCi0gICAgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV93ZWJzaXRlUG9saWNpZXMuY29udGVudEJsb2NrZXJzRW5hYmxlZCgpOyB9Ci0g
ICAgdm9pZCBzZXRDb250ZW50QmxvY2tlcnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3dlYnNp
dGVQb2xpY2llcy5zZXRDb250ZW50QmxvY2tlcnNFbmFibGVkKGVuYWJsZWQpOyB9Ci0KLSAgICBP
cHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9wbGF5UXVp
cmtzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlUG9saWNpZXMuYWxsb3dlZEF1dG9wbGF5UXVp
cmtzKCk7IH0KLSAgICB2b2lkIHNldEFsbG93ZWRBdXRvcGxheVF1aXJrcyhPcHRpb25TZXQ8V2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZFF1aXJrcykgeyBtX3dlYnNpdGVQb2xp
Y2llcy5zZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MoYWxsb3dlZFF1aXJrcyk7IH0KLQotICAgIFdl
YktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5KCkgY29uc3QgeyByZXR1
cm4gbV93ZWJzaXRlUG9saWNpZXMuYXV0b3BsYXlQb2xpY3koKTsgfQotICAgIHZvaWQgc2V0QXV0
b3BsYXlQb2xpY3koV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgcG9saWN5KSB7IG1fd2Vi
c2l0ZVBvbGljaWVzLnNldEF1dG9wbGF5UG9saWN5KHBvbGljeSk7IH0KLQotICAgIHZvaWQgc2V0
Q3VzdG9tSGVhZGVyRmllbGRzKFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYgY3Vz
dG9tSGVhZGVyRmllbGRzKSB7IG1fd2Vic2l0ZVBvbGljaWVzLnNldEN1c3RvbUhlYWRlckZpZWxk
cyhXVEZNb3ZlKGN1c3RvbUhlYWRlckZpZWxkcykpOyB9OwotICAgIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpIVFRQSGVhZGVyRmllbGQ+IGN1c3RvbUhlYWRlckZpZWxkcygpIHsgcmV0dXJuIG1fd2Vi
c2l0ZVBvbGljaWVzLmN1c3RvbUhlYWRlckZpZWxkcygpOyB9Ci0KLSAgICBjb25zdCBXZWJLaXQ6
OldlYnNpdGVQb2xpY2llcyYgd2Vic2l0ZVBvbGljaWVzKCkgeyByZXR1cm4gbV93ZWJzaXRlUG9s
aWNpZXM7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXMgbV93
ZWJzaXRlUG9saWNpZXM7Ci19OwotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gMjI1OTI0KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDYgQEAg
Y2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOwogY2xhc3MgU2Vzc2lvblN0YXRlOwogY2xh
c3MgVXNlclNjcmlwdDsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7Ci1jbGFzcyBXZWJzaXRlUG9s
aWNpZXM7CiBjbGFzcyBXaW5kb3dGZWF0dXJlczsKIH0KIApAQCAtMTY2LDcgKzE2NSw3IEBAIFdL
X0FERF9BUElfTUFQUElORyhXS1VzZXJNZWRpYVBlcm1pc3Npb24KIFdLX0FERF9BUElfTUFQUElO
RyhXS1VzZXJTY3JpcHRSZWYsIEFQSTo6VXNlclNjcmlwdCkKIFdLX0FERF9BUElfTUFQUElORyhX
S1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgV2ViVmlld3BvcnRBdHRyaWJ1dGVzKQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKQot
V0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZVBvbGljaWVzUmVmLCBBUEk6OldlYnNpdGVQb2xp
Y2llcykKK1dLX0FERF9BUElfTUFQUElORyhXS1dlYnNpdGVQb2xpY2llc1JlZiwgV2Vic2l0ZVBv
bGljaWVzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2luZG93RmVhdHVyZXNSZWYsIEFQSTo6V2lu
ZG93RmVhdHVyZXMpCiAKIC8qIEVudW0gY29udmVyc2lvbnMgKi8KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNw
cAkocmV2aXNpb24gMjI1OTI0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tG
cmFtZVBvbGljeUxpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tGcmFtZVBvbGljeUxpc3RlbmVyLmgi
CiAKLSNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZVByb3h5LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAi
V2Vic2l0ZVBvbGljaWVzRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00
MSwxMiArNDAsMTIgQEAgV0tUeXBlSUQgV0tGcmFtZVBvbGljeUxpc3RlbmVyR2V0VHlwZUlEKAog
CiB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYg
cG9saWN5TGlzdGVuZXJSZWYpCiB7Ci0gICAgdG9JbXBsKHBvbGljeUxpc3RlbmVyUmVmKS0+dXNl
KHsgfSk7CisgICAgdG9JbXBsKHBvbGljeUxpc3RlbmVyUmVmKS0+dXNlKHN0ZDo6bnVsbG9wdCk7
CiB9CiAKIHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzKFdLRnJhbWVQ
b2xpY3lMaXN0ZW5lclJlZiBwb2xpY3lMaXN0ZW5lclJlZiwgV0tXZWJzaXRlUG9saWNpZXNSZWYg
d2Vic2l0ZVBvbGljaWVzKQogewotICAgIHRvSW1wbChwb2xpY3lMaXN0ZW5lclJlZiktPnVzZSh0
b0ltcGwod2Vic2l0ZVBvbGljaWVzKS0+d2Vic2l0ZVBvbGljaWVzKCkpOworICAgIHRvSW1wbChw
b2xpY3lMaXN0ZW5lclJlZiktPnVzZShXZWJzaXRlUG9saWNpZXNEYXRhOjpmcm9tV2Vic2l0ZVBv
bGljaWVzKCp0b0ltcGwod2Vic2l0ZVBvbGljaWVzKSkpOwogfQogCiB2b2lkIFdLRnJhbWVQb2xp
Y3lMaXN0ZW5lckRvd25sb2FkKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBwb2xpY3lMaXN0ZW5l
clJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2
aXNpb24gMjI1OTI0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkFQSVBvbGljeUNs
aWVudC5oIgogI2luY2x1ZGUgIkFQSVNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIkFQSVVJQ2xp
ZW50LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiQVBJV2lu
ZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Lmgi
CiAjaW5jbHVkZSAiTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmgiCkBAIC03MSw2ICs3MCw3IEBA
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9s
aWNpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tl
eVdyYXAuaD4KQEAgLTMyNSw3ICszMjUsNyBAQCBib29sIFdLUGFnZVdpbGxIYW5kbGVIb3Jpem9u
dGFsU2Nyb2xsRXZlCiAKIHZvaWQgV0tQYWdlVXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS1dlYnNpdGVQb2xpY2llc1JlZiB3ZWJzaXRlUG9saWNpZXNSZWYpCiB7Ci0g
ICAgdG9JbXBsKHBhZ2VSZWYpLT51cGRhdGVXZWJzaXRlUG9saWNpZXModG9JbXBsKHdlYnNpdGVQ
b2xpY2llc1JlZiktPndlYnNpdGVQb2xpY2llcygpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnVw
ZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRhOjpmcm9tV2Vic2l0ZVBvbGlj
aWVzKCp0b0ltcGwod2Vic2l0ZVBvbGljaWVzUmVmKSkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1Bh
Z2VDb3B5VGl0bGUoV0tQYWdlUmVmIHBhZ2VSZWYpCkBAIC0xMzUxLDcgKzEzNTEsNyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICYmICFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgJiYgIW1fY2xpZW50LmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+
dXNlKHsgfSk7CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZShzdGQ6Om51bGxvcHQpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMTM2OSw3ICsxMzY5
LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZgogICAgICAgICB2
b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdl
YkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBs
aXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbikgewot
ICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKKyAgICAgICAgICAgICAgICBsaXN0
ZW5lci0+dXNlKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogCkBAIC0xMzgxLDcgKzEzODEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lD
bGllbnQoV0tQYWdlUmVmCiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2Vi
UGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzb3VyY2VSZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMCAmJiAhbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Up
IHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CisgICAgICAgICAgICAgICAg
bGlzdGVuZXItPnVzZShzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIApAQCAtMjE0Myw3ICsyMTQzLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2
aWdhdGlvbkNsaWVudChXS1BhZwogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYm
IG5hdmlnYXRpb25BY3Rpb24sIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBmaW5hbAogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24p
IHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CisgICAgICAgICAgICAgICAg
bGlzdGVuZXItPnVzZShzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLnB0cigpKSwgdG9B
UEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CkBAIC0yMTUyLDcgKzIxNTIsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9u
Q2xpZW50KFdLUGFnCiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiYmIG5h
dmlnYXRpb25SZXNwb25zZSwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlKSB7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOworICAgICAgICAgICAg
ICAgIGxpc3RlbmVyLT51c2Uoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UodG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uUmVzcG9uc2UucHRy
KCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDIyNTkyNCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIldLV2Vic2l0ZVBvbGljaWVzLmgiCiAKICNp
bmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgi
CiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUg
IldLRGljdGlvbmFyeS5oIgpAQCAtMzgsMTIgKzM3LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZVBvbGljaWVzR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1
cm4gdG9BUEkoQVBJOjpXZWJzaXRlUG9saWNpZXM6OkFQSVR5cGUpOworICAgIHJldHVybiB0b0FQ
SShXZWJzaXRlUG9saWNpZXM6OkFQSVR5cGUpOwogfQogCiBXS1dlYnNpdGVQb2xpY2llc1JlZiBX
S1dlYnNpdGVQb2xpY2llc0NyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OldlYnNp
dGVQb2xpY2llczo6Y3JlYXRlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoJldlYnNp
dGVQb2xpY2llczo6Y3JlYXRlKCkubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVQb2xp
Y2llc1NldENvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoV0tXZWJzaXRlUG9saWNpZXNSZWYgd2Vic2l0
ZVBvbGljaWVzLCBib29sIGVuYWJsZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIyNTkyNCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQyMzMsNyArNDIzMyw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2Vy
R2UKIAogLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOihfV0tXZWJzaXRlUG9saWNpZXMg
Kil3ZWJzaXRlUG9saWNpZXMKIHsKLSAgICBfcGFnZS0+dXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdl
YnNpdGVQb2xpY2llcy0+X3dlYnNpdGVQb2xpY2llcy0+d2Vic2l0ZVBvbGljaWVzKCkpOworICAg
IF9wYWdlLT51cGRhdGVXZWJzaXRlUG9saWNpZXMoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRh
Ojpmcm9tV2Vic2l0ZVBvbGljaWVzKCp3ZWJzaXRlUG9saWNpZXMtPl93ZWJzaXRlUG9saWNpZXMp
KTsKIH0KIAogLSAoQk9PTClfYWxsb3dzUmVtb3RlSW5zcGVjdGlvbgpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVz
Lm1tCShyZXZpc2lvbiAyMjU5MjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIF93ZWJzaXRlUG9saWNpZXMtPkFQSTo6V2Vic2l0
ZVBvbGljaWVzOjp+V2Vic2l0ZVBvbGljaWVzKCk7CisgICAgX3dlYnNpdGVQb2xpY2llcy0+V2Vi
S2l0OjpXZWJzaXRlUG9saWNpZXM6On5XZWJzaXRlUG9saWNpZXMoKTsKICAgICAKICAgICBbc3Vw
ZXIgZGVhbGxvY107CiB9CkBAIC00Miw3ICs0Miw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
Ci0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNpdGVQb2xpY2ll
cz4oc2VsZik7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxXZWJLaXQ6Oldl
YnNpdGVQb2xpY2llcz4oc2VsZik7CiAgICAgCiAgICAgcmV0dXJuIHNlbGY7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJu
YWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaAkocmV2aXNpb24gMjI1OTI0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAot
I2ltcG9ydCAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgorI2lt
cG9ydCAiV2Vic2l0ZVBvbGljaWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1pbmxpbmUg
X1dLV2Vic2l0ZVBvbGljaWVzICp3cmFwcGVyKEFQSTo6V2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRl
UG9saWNpZXMpCitpbmxpbmUgX1dLV2Vic2l0ZVBvbGljaWVzICp3cmFwcGVyKFdlYnNpdGVQb2xp
Y2llcyYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIEFTU0VSVChbd2Vic2l0ZVBvbGljaWVzLndy
YXBwZXIoKSBpc0tpbmRPZkNsYXNzOltfV0tXZWJzaXRlUG9saWNpZXMgY2xhc3NdXSk7CiAgICAg
cmV0dXJuIChfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMud3JhcHBlcigpOwpA
QCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgX1dLV2Vic2l0ZVBvbGljaWVzICp3cmFwcGVyKEFQSTo6
CiAKIEBpbnRlcmZhY2UgX1dLV2Vic2l0ZVBvbGljaWVzICgpIDxXS09iamVjdD4gewogQHBhY2th
Z2UKLSAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpXZWJzaXRlUG9saWNpZXM+IF93ZWJzaXRl
UG9saWNpZXM7CisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVz
PiBfd2Vic2l0ZVBvbGljaWVzOwogfQogQGVuZAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAyMjU5MjQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghbmF2aWdhdGlv
bkFjdGlvbi0+dGFyZ2V0RnJhbWUoKSkgewotICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2Uo
eyB9KTsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC00MzYsNyArNDM2LDcgQEAg
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OgogICAgICAgICAgICAgICAg
IGlmIChuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKSkKICAgICAgICAg
ICAgICAgICAgICAgbGlzdGVuZXItPmRvd25sb2FkKCk7CiAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CisgICAgICAgICAgICAgICAg
ICAgIGxpc3RlbmVyLT51c2Uoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKQEAgLTQ2NSwxOSArNDY1LDE5IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICAgICAgc3RkOjpvcHRpb25h
bDxXZWJzaXRlUG9saWNpZXM+IHBvbGljaWVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+IGRhdGE7CiAgICAgICAgIGlmICh3ZWJzaXRlUG9saWNpZXMpCi0gICAg
ICAgICAgICBwb2xpY2llcyA9IHdlYnNpdGVQb2xpY2llcy0+X3dlYnNpdGVQb2xpY2llcy0+d2Vi
c2l0ZVBvbGljaWVzKCk7CisgICAgICAgICAgICBkYXRhID0gV2Vic2l0ZVBvbGljaWVzRGF0YTo6
ZnJvbVdlYnNpdGVQb2xpY2llcygqd2Vic2l0ZVBvbGljaWVzLT5fd2Vic2l0ZVBvbGljaWVzKTsK
IAogICAgICAgICBzd2l0Y2ggKGFjdGlvblBvbGljeSkgewogICAgICAgICBjYXNlIFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFsbG93OgotICAgICAgICAgICAgdHJ5QXBwTGluayhXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb24pLCBtYWluRnJhbWVVUkxTdHJpbmcsIFtsb2NhbExpc3RlbmVyID0gV1RG
TW92ZShsb2NhbExpc3RlbmVyKSwgcG9saWNpZXMgPSBXVEZNb3ZlKHBvbGljaWVzKV0oYm9vbCBm
b2xsb3dlZExpbmtUb0FwcCkgbXV0YWJsZSB7CisgICAgICAgICAgICB0cnlBcHBMaW5rKFdURk1v
dmUobmF2aWdhdGlvbkFjdGlvbiksIG1haW5GcmFtZVVSTFN0cmluZywgW2xvY2FsTGlzdGVuZXIg
PSBXVEZNb3ZlKGxvY2FsTGlzdGVuZXIpLCBkYXRhID0gV1RGTW92ZShkYXRhKV0oYm9vbCBmb2xs
b3dlZExpbmtUb0FwcCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKGZvbGxvd2VkTGlu
a1RvQXBwKSB7CiAgICAgICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKFdURk1vdmUocG9saWNpZXMpKTsKKyAgICAgICAg
ICAgICAgICBsb2NhbExpc3RlbmVyLT51c2UoV1RGTW92ZShkYXRhKSk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5n
QXBwTGluazoKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgICAgICAgIGxvY2Fs
TGlzdGVuZXItPnVzZShXVEZNb3ZlKHBvbGljaWVzKSk7CisgICAgICAgICAgICBsb2NhbExpc3Rl
bmVyLT51c2UoV1RGTW92ZShkYXRhKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH07CkBAIC01NDQsMTQgKzU0NCwxNCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6CiAgICAgICAgICAgICBCT09MIGV4aXN0cyA9IFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDp1cmwucGF0aCBpc0RpcmVjdG9yeTomaXNE
aXJlY3RvcnldOwogCiAgICAgICAgICAgICBpZiAoZXhpc3RzICYmICFpc0RpcmVjdG9yeSAmJiBu
YXZpZ2F0aW9uUmVzcG9uc2UtPmNhblNob3dNSU1FVHlwZSgpKQotICAgICAgICAgICAgICAgIGxp
c3RlbmVyLT51c2UoeyB9KTsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmlnbm9y
ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG5hdmln
YXRpb25SZXNwb25zZS0+Y2FuU2hvd01JTUVUeXBlKCkpCi0gICAgICAgICAgICBsaXN0ZW5lci0+
dXNlKHsgfSk7CisgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGxpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjoKIAogICAgICAgICBzd2l0Y2ggKHJlc3BvbnNlUG9saWN5KSB7CiAgICAgICAgIGNhc2Ug
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdzoKLSAgICAgICAgICAgIGxvY2FsTGlzdGVu
ZXItPnVzZSh7IH0pOworICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5Q2FuY2VsOgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjU5MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg0LDYg
KzExODQsNyBAQAogCQk1QzBCMTc3OTFFN0M4ODIxMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFt
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1QzBCMTc3QzFFN0M4ODU0MDBFOTEyM0MgLyogV2Vi
U29ja2V0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDMEIxNzdBMUU3Qzg4NEYwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW0uY3BwICov
OyB9OwogCQk1QzBCMTc4MTFFN0M4QzI2MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBCMTc3
RDFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgKi87IH07CisJCTVD
MTMwMjRDMUZFMzUxNTQwMDBEOUIzMSAvKiBXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTMwMjRCMUZFMzUxNDIwMDBEOUIz
MSAvKiBXZWJzaXRlUG9saWNpZXMuaCAqLzsgfTsKIAkJNUMxNDI2RUMxQzIzRjgwOTAwRDQxMTgz
IC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkUyMUMyM0Y4MDUwMEQ0MTE4MyAv
KiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCTVDMTQyNkVE
MUMyM0Y4MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2RTMxQzIz
RjgwNTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi87IH07
CiAJCTVDMTQyNkVFMUMyM0Y4MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkU0
MUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCAqLzsgfTsKQEAg
LTEyMDQsNyArMTIwNSw3IEBACiAJCTVDMjBDQjlEMUJCMERDRkEwMDg5NUJCMSAvKiBOZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMyMENCOUIxQkIwRENEMjAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0g
Ki87IH07CiAJCTVDMjBDQkEwMUJCMUVDRDgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyMENCOUUxQkIw
REQxODAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uLmggKi87IH07CiAJCTVDMjk4REEwMUMzREYw
MjEwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjk4RDlFMUMzREVGMjkwMDQ3MEFGRSAvKiBQZW5kaW5n
RG93bmxvYWQuaCAqLzsgfTsKLQkJNUMzQUVBOEYxRkUxRjIxRjAwMjMxOEQzIC8qIFdlYnNpdGVQ
b2xpY2llcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzNBRUE4RTFGRTFGMURGMDAyMzE4RDMgLyogV2Vic2l0ZVBvbGljaWVzLmNwcCAqLzsgfTsK
KwkJNUMzQUVBOEYxRkUxRjIxRjAwMjMxOEQzIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzQUVBOEUxRkUx
RjFERjAwMjMxOEQzIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwICovOyB9OwogCQk1QzYyRkRG
OTFFRkMyNzFDMDBDRTA3MkUgLyogV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2MkZERjgxRUZDMjYzQzAwQ0Uw
NzJFIC8qIFdLVVJMU2NoZW1lVGFza1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzZDRTZEMTFGNTlCQzdBMDAwN0M2Q0IgLyogUGFn
ZUNsaWVudEltcGxDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDNkNFNkQwMUY1OUJDNDYwMDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29h
Lm1tICovOyB9OwogCQk1Qzc3MDY3NDFEMTEzODM4MDAxMjcwMEYgLyogV2ViU29ja2V0UHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3
NzA2NzMxRDExMUQ4QjAwMTI3MDBGIC8qIFdlYlNvY2tldFByb3ZpZGVyLmNwcCAqLzsgfTsKQEAg
LTEyMTQsOCArMTIxNSw2IEBACiAJCTVDQjIzNzhCMURGMERFNTMwMDExN0FBMyAvKiBfV0tXZWJz
aXRlUG9saWNpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0IyMzc4QTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLm1tICov
OyB9OwogCQk1Q0IyMzc4QzFERjBERTZFMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4OTFE
RjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNCMjM3OEUxREYwRTBEMzAwMTE3QUEz
IC8qIF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vi
c2l0ZVBvbGljaWVzSW50ZXJuYWwuaCAqLzsgfTsKLQkJNUNCMjM3OTExREYwRTJFNjAwMTE3QUEz
IC8qIEFQSVdlYnNpdGVQb2xpY2llcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc5MDFERjBFMUREMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBv
bGljaWVzLmNwcCAqLzsgfTsKLQkJNUNCMjM3OTIxREYwRTJFRTAwMTE3QUEzIC8qIEFQSVdlYnNp
dGVQb2xpY2llcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNCMjM3OEYxREYwRTFCODAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5oICovOyB9
OwogCQk1Q0JDOUI4RDFDNjUyNzlDMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4QjFD
NjUyNTczMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi87IH07CiAJCTVDQkM5
QjhFMUM2NTJDQTAwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAv
KiBOZXR3b3JrRGF0YVRhc2suaCAqLzsgfTsKIAkJNUNEMjg2NTExRTcyMzU5OTAwOTRGREM4IC8q
IFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDRDI4NjREMUU3MjJGNDQwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxl
TGlzdFN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9
OwpAQCAtMzU3Myw2ICszNTcyLDggQEAKIAkJNUMwQjE3N0UxRTdDODg2NzAwRTkxMjNDIC8qIE5l
dHdvcmtTb2NrZXRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0
d29ya1NvY2tldFN0cmVhbS5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0
cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzBCMTc3RjFFN0M4ODY3MDBF
OTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBOZXR3b3JrU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUMwQjE3ODAxRTdDODg4MDAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJTb2NrZXRTdHJlYW0ubWVzc2Fn
ZXMuaW47IHBhdGggPSBOZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMxMzAyNEExRkUzNDFBNzAwMEQ5QjMxIC8qIFdlYnNp
dGVQb2xpY2llc0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0
ZVBvbGljaWVzRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzEzMDI0QjFG
RTM1MTQyMDAwRDlCMzEgLyogV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzE0MjZFMjFDMjNGODA1MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzE0MjZFMzFDMjNGODA1MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDMTQyNkU0MUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1OTQsNyArMzU5NSw3IEBACiAJCTVDMjBDQjlC
MUJCMERDRDIwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTmV0d29ya1Nlc3Npb25Db2NvYS5tbTsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDMjBDQjlFMUJCMEREMTgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vz
c2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrU2Vzc2lvbi5o
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUMyOThEOUUxQzNERUYyOTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9h
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQZW5kaW5nRG93bmxvYWQuaDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMzQUVBOEUxRkUxRjFERjAwMjMxOEQzIC8qIFdlYnNp
dGVQb2xpY2llcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJz
aXRlUG9saWNpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzNBRUE4RTFG
RTFGMURGMDAyMzE4RDMgLyogV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJzaXRlUG9saWNpZXNEYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2MkZERjgxRUZDMjYzQzAwQ0UwNzJFIC8qIFdLVVJMU2No
ZW1lVGFza1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzZDRTZEMDFGNTlCQzQ2MDAwN0M2Q0Ig
LyogUGFnZUNsaWVudEltcGxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFBhZ2VDbGllbnRJbXBsQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNkNFNkQzMUY1OUVBMzUwMDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VDbGllbnRJbXBsQ29jb2EuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2MDIsMTQgKzM2MDMsMTEgQEAKIAkJNUM3
Qzg4REMxRDBGNDFBMDAwOUQyRjZEIC8qIFdlYlNvY2tldFByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNvY2tldFByb3ZpZGVyLmg7IHBhdGggPSBOZXR3b3Jr
L1dlYlNvY2tldFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDODRD
RjkwMUY5NkFDNEUwMEI2NzA1QSAvKiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4NUM3ODYxQzNG
MjNDNTAwNjFBNEZBIC8qIFBlbmRpbmdEb3dubG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBQZW5kaW5nRG93bmxvYWQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTVDOUU1NjdGMURGNzkzMDkwMEM5RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZVBvbGljaWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1NjgwMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNp
dGVQb2xpY2llcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1dl
YnNpdGVQb2xpY2llcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1Njgx
MURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Q0IyMzc4OTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVQb2xpY2llcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IyMzc4QTFERjBERDQzMDAxMTdBQTMg
LyogX1dLV2Vic2l0ZVBvbGljaWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gX1dLV2Vic2l0ZVBvbGljaWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZVBvbGljaWVz
SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMjM3OEYxREYwRTFC
ODAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElXZWJzaXRlUG9saWNpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNUNCMjM3OTAxREYwRTFERDAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElXZWJzaXRlUG9saWNpZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZE
Q0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IE5ldHdvcmtEYXRhVGFzay5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5QjhCMUM2NTI1NzMwMEE4RkRD
RiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IE5ldHdvcmtEYXRhVGFza0NvY29hLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDRDI4NjQ5MUU3MjJGNDQwMDk0RkRDOCAvKiBfV0tVc2VyQ29udGVudEZpbHRlclBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVXNlckNvbnRlbnRG
aWx0ZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjE2LDggKzUy
MTQsOCBAQAogCQkJCTM3NjA4ODFEMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3Qu
aCAqLywKIAkJCQk1MTFGN0QzRjFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuY3BwICovLAogCQkJCTUxMUY3RDQwMUVCMUJDRUUwMEU0N0I4MyAvKiBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5oICovLAotCQkJCTVDM0FFQThFMUZFMUYxREYwMDIzMThEMyAv
KiBXZWJzaXRlUG9saWNpZXMuY3BwICovLAotCQkJCTVDOUU1NjdGMURGNzkzMDkwMEM5RUUzMyAv
KiBXZWJzaXRlUG9saWNpZXMuaCAqLywKKwkJCQk1QzNBRUE4RTFGRTFGMURGMDAyMzE4RDMgLyog
V2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAgKi8sCisJCQkJNUMxMzAyNEExRkUzNDFBNzAwMEQ5QjMx
IC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuaCAqLywKIAkJCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1
NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJCQk4MzYwMzQ5RTFBQ0Iz
NEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggKi8sCiAJCQkJQzAzMzdE
RDcxMjdBNTFCNjAwOEZGNEY0IC8qIFdlYlRvdWNoRXZlbnQuY3BwICovLApAQCAtNzE5NSw2ICs3
MTkzLDcgQEAKIAkJCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluICovLAogCQkJCTZCODIxRERCMUVFRjA1REQwMEQ3
QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLywKIAkJCQk2
QjgyMUREQTFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVt
ZXRyeS5oICovLAorCQkJCTVDMTMwMjRCMUZFMzUxNDIwMDBEOUIzMSAvKiBXZWJzaXRlUG9saWNp
ZXMuaCAqLywKIAkJCQk1MUQxMjQyNDFFNkQzQ0MzMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFu
ZGxlci5jcHAgKi8sCiAJCQkJNTFEMTI0MjUxRTZEM0NDMzAwMkIyODIwIC8qIFdlYlVSTFNjaGVt
ZUhhbmRsZXIuaCAqLywKIAkJCQk1MUU4QjY4RDFFNzEyODczMDAxQjcxMzIgLyogV2ViVVJMU2No
ZW1lVGFzay5jcHAgKi8sCkBAIC03Mjc1LDggKzcyNzQsNiBAQAogCQkJCTFBRTI4NjgyMUM3Rjkz
ODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5oICovLAogCQkJCTFBMzYzNUE3MUEz
MTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKIAkJCQkxQTM2MzVB
ODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovLAotCQkJCTVDQjIz
NzkwMURGMEUxREQwMDExN0FBMyAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwICovLAotCQkJCTVD
QjIzNzhGMURGMEUxQjgwMDExN0FBMyAvKiBBUElXZWJzaXRlUG9saWNpZXMuaCAqLywKIAkJCQkx
QTY1NjNFMjFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuY3BwICovLAogCQkJ
CTFBNjU2M0UzMUI3QThDNTAwMDlDRjc4NyAvKiBBUElXaW5kb3dGZWF0dXJlcy5oICovLAogCQkJ
KTsKQEAgLTg2MjAsNyArODYxNyw2IEBACiAJCQkJQzVFMUFGRUYxNkIyMTAyOTAwNkNDMUYyIC8q
IEFQSVdlYkFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2ODQxQzdG
OTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTM2MzVBQTFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNUNCMjM3OTIxREYwRTJFRTAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xp
Y2llcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2NTYzRTUxQjdBOEM1MDAwOUNGNzg3IC8qIEFQ
SVdpbmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ0QzE5MzFCMzlGMzMyMDBB
QkMyOEUgLyogQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RUZEMjc5MTFEMTZDODEwMDgyMTlEMyAvKiBBcmd1bWVudENvZGVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTkxNjcsNiArOTE2Myw3IEBACiAJCQkJMUE0ODMyRDExQTlCREMyRjAwOEI0REZFIC8qIFdl
YnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTUzQzJBQTFBMzI1NzMwMDA0
RThDNzAgLyogV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRjdENDEx
RUIxQkNGNTAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1QzEzMDI0QzFGRTM1MTU0MDAwRDlCMzEgLyogV2Vic2l0ZVBvbGljaWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4MzYwMzRBMDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTUyQzBGODFBMzhDREM3MDAx
NjE2MEEgLyogV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTdBNTMwNTFGNDc5M0M2MDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTEwMjAyLDcgKzEwMTk5LDYgQEAKIAkJCQkxQUUyODY4MzFDN0Y5Mzg2
MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUEzNjM1QTkxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUEzNjM1QUQxQTMxNDVFNTAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTVDQjIzNzkxMURGMEUyRTYwMDExN0FB
MyAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2NTYzRTQx
QjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBRDRDMTkyMUIzOUYzMzIwMEFCQzI4RSAvKiBBcHBsaWNhdGlvblN0YXRlVHJhY2tlci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFBM0Q2MTA1MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVu
dENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwODM1LDcgKzEwODMxLDcgQEAKIAkJCQkx
QTUzQzJBOTFBMzI1NzJCMDA0RThDNzAgLyogV2Vic2l0ZURhdGFTdG9yZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTQ4MzJDMzFBOTY1QTNDMDA4QjRERkUgLyogV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTExRjdENDIxRUIxQkNGODAwRTQ3QjgzIC8qIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDM0FFQThG
MUZFMUYyMUYwMDIzMThEMyAvKiBXZWJzaXRlUG9saWNpZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNUMzQUVBOEYxRkUxRjIxRjAwMjMxOEQzIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUM3NzA2NzQxRDExMzgzODAwMTI3MDBGIC8qIFdlYlNvY2tldFBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMEIxNzdDMUU3Qzg4NTQwMEU5MTIzQyAv
KiBXZWJTb2NrZXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMwQjE3NzkxRTdDODgy
MTAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjI1
OTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQAogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJzaXRlUG9saWNp
ZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRGcmFtZS5oPgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICB3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbiht
X2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFt
ZSksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUsIGxpc3RlbmVySUQs
IFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzJiYgd2Vic2l0ZVBvbGlj
aWVzKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdl
YnNpdGVQb2xpY2llc0RhdGEmJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICByZXR1cm47CkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6YXBwbHlUb0RvY3VtZQogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYnNpdGVQb2xpY2llczo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgKmRvY3VtZW50TG9hZGVyKTsKKyAgICBXZWJzaXRlUG9s
aWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMp
LCAqZG9jdW1lbnRMb2FkZXIpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29s
IGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgRnJhbWVQ
b2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9j
ZXNzLgogICAgIFJlZjxXZWJGcmFtZT4gcHJvdGVjdCgqbV9mcmFtZSk7Ci0gICAgc3RkOjpvcHRp
b25hbDxXZWJzaXRlUG9saWNpZXM+IHdlYnNpdGVQb2xpY2llczsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llczsKICAgICBpZiAoIXdlYlBhZ2Ut
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFt
ZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nRnJhbWUgJiYg
b3JpZ2luYXRpbmdGcmFtZS0+cGFnZSgpID8gb3JpZ2luYXRpbmdGcmFtZS0+cGFnZSgpLT5wYWdl
SUQoKSA6IDAsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIGxp
c3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246OlJlcGx5KHJlY2VpdmVkUG9saWN5
QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCwgd2Vic2l0
ZVBvbGljaWVzKSkpIHsKICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMjU5
MjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgUGx1Z2luVmlldzsKIGNsYXNzIFdlYkZyYW1lOwotY2xhc3MgV2Vi
c2l0ZVBvbGljaWVzOworc3RydWN0IFdlYnNpdGVQb2xpY2llc0RhdGE7CiAgICAgCiBjbGFzcyBX
ZWJGcmFtZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudCB7CiBwdWJsaWM6CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1c2VJY29uTG9hZGluZ0NsaWVudCkgeyBtX3VzZUlj
b25Mb2FkaW5nQ2xpZW50ID0gdXNlSWNvbkxvYWRpbmdDbGllbnQ7IH0KIAotICAgIHZvaWQgYXBw
bHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llcyYmKTsKKyAgICB2b2lkIGFwcGx5VG9E
b2N1bWVudExvYWRlcihXZWJzaXRlUG9saWNpZXNEYXRhJiYpOwogCiAgICAgdWludDY0X3QgcGFn
ZUlEKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAko
cmV2aXNpb24gMjI1OTI0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiV2Vi
UGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250
ZXh0UmVmLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC0yNTEsNyAr
MjUyLDcgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKAogICAgIG1f
d2lsbFN1Ym1pdEZvcm1Db21wbGV0aW9uSGFuZGxlcnMuY2xlYXIoKTsKIH0KIAotdm9pZCBXZWJG
cmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGlj
eUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCBkb3dubG9h
ZElELCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCit2
b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJ
RCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElE
IGRvd25sb2FkSUQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRl
UG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCShyZXZpc2lv
biAyMjU5MjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2Myw4IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU7CiBjbGFzcyBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViUGFnZTsKLWNsYXNzIFdlYnNpdGVQb2xpY2ll
czsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOworc3RydWN0IFdlYnNpdGVQb2xpY2llc0RhdGE7CiAK
IGNsYXNzIFdlYkZyYW1lIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6QnVuZGxlRnJhbWU+IHsKIHB1YmxpYzoKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAg
IGVudW0gY2xhc3MgRm9yTmF2aWdhdGlvbkFjdGlvbiB7IE5vLCBZZXMgfTsKICAgICB1aW50NjRf
dCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJiwgRm9y
TmF2aWdhdGlvbkFjdGlvbik7CiAgICAgdm9pZCBpbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXM+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElELCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYpOwogCiAgICAgdWludDY0X3Qgc2V0VXBXaWxsU3VibWl0Rm9ybUxpc3Rl
bmVyKFdURjo6RnVuY3Rpb248dm9pZCh2b2lkKT4mJik7CiAgICAgdm9pZCBjb250aW51ZVdpbGxT
dWJtaXRGb3JtKHVpbnQ2NF90KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMjU5MjYpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NiBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElHZW9tZXRyeS5oIgot
I2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIkFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRyYWdD
b250cm9sbGVyQWN0aW9uLmgiCkBAIC0xMjIsNiArMTIxLDcgQEAKICNpbmNsdWRlICJXZWJVc2Vy
TWVkaWFDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oIgog
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2Vic2l0
ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0FyY2hpdmVSZXNvdXJjZS5oPgpAQCAtMjc0Niw3ICsyNzQ2LDcgQEAgdm9pZCBXZWJQYWdlOjpz
ZXRTZXNzaW9uSUQoUEFMOjpTZXNzaW9uSQogICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Np
b25JRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBX
ZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBEb3dubG9hZElEJiBkb3dubG9hZElELCBzdGQ6Om9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIFdlYkZyYW1lKiBmcmFt
ZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIGlmICgh
ZnJhbWUpCkBAIC01NDM4LDcgKzU0MzgsNyBAQCB2b2lkIFdlYlBhZ2U6OmZsdXNoUGVuZGluZ0Vk
aXRvclN0YXRlVXBkCiAgICAgc2VuZEVkaXRvclN0YXRlVXBkYXRlKCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llcyYmIHdlYnNpdGVQb2xp
Y2llcykKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2ll
c0RhdGEmJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybjsKQEAgLTU0NDcsNyArNTQ0Nyw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlV2Vic2l0ZVBv
bGljaWVzKFdlYnMKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBXZWJzaXRlUG9saWNpZXM6OmFwcGx5VG9Eb2N1bWVudExvYWRlcihXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llcyksICpkb2N1bWVudExvYWRlcik7CisgICAgV2Vic2l0ZVBvbGljaWVzRGF0YTo6
YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgKmRvY3VtZW50
TG9hZGVyKTsKICAgICAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgbV9wYWdlLT51cGRhdGVNZWRp
YUVsZW1lbnRSYXRlQ2hhbmdlUmVzdHJpY3Rpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMjU5MjYpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIx
MCw3ICsyMTAsNiBAQCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI7CiBjbGFzcyBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOwogY2xhc3MgV2ViV2hlZWxFdmVudDsKIGNsYXNzIFdlYlRvdWNo
RXZlbnQ7Ci1jbGFzcyBXZWJzaXRlUG9saWNpZXM7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjsKIAogc3RydWN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOwpAQCAtMjI0LDYgKzIy
Myw3IEBAIHN0cnVjdCBQcmludEluZm87CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czsKIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogc3RydWN0IFdlYlNlbGVjdGlvbkRhdGE7
CitzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0YTsKIAogZW51bSBjbGFzcyBEcmFnQ29udHJvbGxl
ckFjdGlvbjsKIGVudW0gRmluZE9wdGlvbnMgOiB1aW50MTZfdDsKQEAgLTExODksNyArMTE4OSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZChjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYsIHN0ZDo6b3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYsIHN0ZDo6
b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CiAgICAgdm9pZCBjb250aW51ZVdpbGxT
dWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZv
aWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVu
Y29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKQEAgLTEyOTgsNyArMTI5OCw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHJlcG9ydFVzZWRGZWF0dXJlcygpOwogCi0gICAgdm9pZCB1cGRhdGVXZWJz
aXRlUG9saWNpZXMoV2Vic2l0ZVBvbGljaWVzJiYpOworICAgIHZvaWQgdXBkYXRlV2Vic2l0ZVBv
bGljaWVzKFdlYnNpdGVQb2xpY2llc0RhdGEmJik7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAg
dm9pZCBwZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6Rmxv
YXRQb2ludCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyNTkyNCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTE1MCw4ICsxNTAsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsK
IAogICAgIERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1J
RCkKIAotICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJLaXQ6OldlYnNpdGVQb2xpY2llcyB3
ZWJzaXRlUG9saWNpZXMpCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBv
bGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llcz4gd2Vic2l0ZVBv
bGljaWVzKQorICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2llcyhzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRl
UG9saWNpZXNEYXRhIHdlYnNpdGVQb2xpY2llcykKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgZW51bSBXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGlj
aWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKQogICAgIENvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCkKIAogICAgIENsZWFyU2VsZWN0aW9u
KCkK
</data>
<flag name="review"
          id="348513"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>