<?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>38761</bug_id>
          
          <creation_ts>2010-05-07 10:54:38 -0700</creation_ts>
          <short_desc>Style cleanups in WebGL</short_desc>
          <delta_ts>2010-08-05 12:20:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>222483</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-05-07 10:54:38 -0700</bug_when>
    <thetext>There are a bunch of style violations reported by check-webkit-style that should be cleaned up.

Also, JSWebGLArrayHelper.h is not included in the XCode project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260288</commentid>
    <comment_count>1</comment_count>
      <attachid>63515</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-04 17:19:52 -0700</bug_when>
    <thetext>Created attachment 63515
Patch

From the ChangeLog:

Cleaned up all style violations in WebGL-related files reported by check-webkit-style. No logic or other changes. Built WebKit and Chromium and ran WebGL layout tests.

Note to reviewers:

I apologize for the large size of this patch, but hopefully a quick visual inspection will show that the majority of the changes are white space adjustments to obey the indentation rules in namespaces. I can split it up if necessary, but this will prolong the pain of fixing these style violations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260351</commentid>
    <comment_count>2</comment_count>
      <attachid>63515</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-08-04 20:02:46 -0700</bug_when>
    <thetext>Comment on attachment 63515
Patch

Holy moly that&apos;s a lot of style violations! I gave it a scan, and it looks ok. A tiny nit comment:

on *Impl suffix, I think the convention in WebKit is to use *Internal or private* prefix. So technically there&apos;s no convention, but I thought I&apos;d mention it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260728</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-05 11:34:16 -0700</bug_when>
    <thetext>Committed r64767: &lt;http://trac.webkit.org/changeset/64767&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260764</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-05 12:20:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64767 might have broken Leopard Intel Release (Tests)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63515</attachid>
            <date>2010-08-04 17:19:52 -0700</date>
            <delta_ts>2010-08-04 20:02:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>style-cleanups.patch</filename>
            <type>text/plain</type>
            <size>167708</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDY4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA3IEBACisyMDEwLTA4LTA0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
dHlsZSBjbGVhbnVwcyBpbiBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzg3NjEKKworICAgICAgICBDbGVhbmVkIHVwIGFsbCBzdHlsZSB2aW9s
YXRpb25zIGluIFdlYkdMLXJlbGF0ZWQgZmlsZXMgcmVwb3J0ZWQgYnkKKyAgICAgICAgY2hlY2st
d2Via2l0LXN0eWxlLiBObyBsb2dpYyBvciBvdGhlciBjaGFuZ2VzLiBCdWlsdCBXZWJLaXQgYW5k
CisgICAgICAgIENocm9taXVtIGFuZCByYW4gV2ViR0wgbGF5b3V0IHRlc3RzLgorCisgICAgICAg
ICogaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlC
dWZmZXI6OkFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5QnVmZmVyOjpkYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OkFycmF5QnVmZmVyOjp+QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QXJyYXlCdWZmZXI6OnRyeUFsbG9jYXRlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9BcnJheUJ1
ZmZlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBs
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9UeXBlZEFycmF5QmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpkZWxldGVPYmplY3RJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjphc3NvY2lhdGVCdWZmZXJEYXRh
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xCdWZmZXI6On5XZWJHTEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1
ZmZlcjo6ZWxlbWVudEFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVy
OjpnZXRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmlzQnVmZmVyKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmRlbGV0ZU9iamVjdEltcGwpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJh
bWVidWZmZXI6On5XZWJHTEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJh
bWVidWZmZXI6OmlzRGVwdGhBdHRhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1l
YnVmZmVyOjppc1N0ZW5jaWxBdHRhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1l
YnVmZmVyOjppc0RlcHRoU3RlbmNpbEF0dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
RnJhbWVidWZmZXI6OmlzRnJhbWVidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
R2V0SW5mby5jcHA6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmg6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xPYmplY3Q6OmRlbGV0ZU9iamVjdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMT2JqZWN0OjpvYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xPYmplY3Q6OmRldGFjaENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xPYmplY3Q6OmNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xPYmplY3Q6Omlz
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMT2JqZWN0Ojppc0ZyYW1lYnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMT2JqZWN0Ojppc1Byb2dyYW0pOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xPYmplY3Q6OmlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMT2JqZWN0Ojppc1NoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTE9iamVjdDo6aXNU
ZXh0dXJlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xQcm9ncmFtOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3Jh
bTo6fldlYkdMUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmlzTGlu
a0ZhaWx1cmVGbGFnU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6c2V0TGlu
a0ZhaWx1cmVGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6aXNQcm9ncmFt
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyYnVmZmVyOjp+V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJidWZmZXI6OnNldEludGVybmFsRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyYnVmZmVyOjpnZXRJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmJ1ZmZlcjo6aXNJbml0aWFsaXplZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmJ1ZmZlcjo6c2V0SW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJidWZmZXI6OmlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpiZWdpblBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6YmxlbmRFcXVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJQ
b2ludGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXMzZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzQWNjZWxlcmF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpncmFwaGljc0NvbnRleHQzRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OlZlcnRl
eEF0dHJpYlN0YXRlOjpWZXJ0ZXhBdHRyaWJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OlZlcnRleEF0dHJpYlN0YXRlOjppbml0VmFsdWUpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
U2hhZGVyOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNo
YWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6On5XZWJHTFNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFNoYWRlcjo6Z2V0VHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFNoYWRlcjo6aXNTaGFkZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4
dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRleHR1cmU6OmRlbGV0ZU9iamVjdElt
cGwpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xUZXh0dXJlOjp+V2ViR0xUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMVGV4dHVyZTo6aXNDdWJlTWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xUZXh0dXJlOjpzZXRDdWJlTWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xUZXh0dXJlOjppc1RleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xUZXh0dXJlOjpMZXZlbEluZm86OkxldmVsSW5mbyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFRleHR1cmU6OkxldmVsSW5mbzo6c2V0SW5mbyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjopOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXM6OkF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnBsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cGxhdGZvcm1MYXllcik6CisKIDIwMTAtMDgtMDQgIFpoZW55YW8gTW8gIDx6bW9A
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5jcHAJKHJldmlzaW9uIDY0Njg1KQorKysgV2ViQ29yZS9o
dG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDI2ICs1Mywz
MiBAQCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlCiAKIEFycmF5QnVm
ZmVyOjpBcnJheUJ1ZmZlcih2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcykKICAgICA6
IG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCi0gICAgLCBtX2RhdGEoZGF0YSkgeworICAgICwg
bV9kYXRhKGRhdGEpCit7CiB9CiAKLXZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgewordm9pZCog
QXJyYXlCdWZmZXI6OmRhdGEoKQorewogICAgIHJldHVybiBtX2RhdGE7CiB9CiAKLWNvbnN0IHZv
aWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QgeworY29uc3Qgdm9pZCogQXJyYXlCdWZmZXI6
OmRhdGEoKSBjb25zdAorewogICAgIHJldHVybiBtX2RhdGE7CiB9CiAKLXVuc2lnbmVkIEFycmF5
QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QgewordW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVM
ZW5ndGgoKSBjb25zdAorewogICAgIHJldHVybiBtX3NpemVJbkJ5dGVzOwogfQogCi1BcnJheUJ1
ZmZlcjo6fkFycmF5QnVmZmVyKCkgeworQXJyYXlCdWZmZXI6On5BcnJheUJ1ZmZlcigpCit7CiAg
ICAgV1RGOjpmYXN0RnJlZShtX2RhdGEpOwogfQogCi12b2lkKiBBcnJheUJ1ZmZlcjo6dHJ5QWxs
b2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkgewor
dm9pZCogQXJyYXlCdWZmZXI6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNp
Z25lZCBlbGVtZW50Qnl0ZVNpemUpCit7CiAgICAgdm9pZCogcmVzdWx0OwogICAgIC8vIERvIG5v
dCBhbGxvdyAzMi1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFsIHNpemUKICAgICBpZiAobnVtRWxl
bWVudHMpIHsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5jcHAJKHJl
dmlzaW9uIDY0Njg1KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKDNEX0NBTlZBUykK
IAogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsOSArNDcsOSBAQCBBcnJheUJ1ZmZlclZp
ZXc6On5BcnJheUJ1ZmZlclZpZXcoKQogCiB2b2lkIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChB
cnJheUJ1ZmZlclZpZXcqIGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKSB8fAotICAgICAgICBi
eXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKSB8fAotICAgICAg
ICBieXRlT2Zmc2V0ICsgYXJyYXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQpIHsKKyAgICBp
ZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgYXJy
YXktPmJ5dGVMZW5ndGgoKSA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsg
YXJyYXktPmJ5dGVMZW5ndGgoKSA8IGJ5dGVPZmZzZXQpIHsKICAgICAgICAgLy8gT3V0IG9mIHJh
bmdlIG9mZnNldCBvciBvdmVyZmxvdwogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAg
ICAgICByZXR1cm47CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmgJKHJl
dmlzaW9uIDY0Njg1KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDE0IEBACiAjaWZuZGVmIEFycmF5QnVmZmVyVmll
d19oCiAjZGVmaW5lIEFycmF5QnVmZmVyVmlld19oCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisKKyNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvVHlwZWRBcnJheUJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1R5cGVkQXJyYXlCYXNlLmgJKHJldmlzaW9uIDY0Njg1
KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9UeXBlZEFycmF5QmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw4ICsyNyw4IEBACiAjaWZuZGVmIFR5cGVkQXJyYXlCYXNlX2gKICNkZWZpbmUgVHlw
ZWRBcnJheUJhc2VfaAogCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAi
QXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAkocmV2aXNp
b24gNjQ2ODUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAKICNpbmNs
dWRlICJXZWJHTEJ1ZmZlci5oIgorCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgV2ViR0xCdWZmZXI6Oldl
YkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQwogICAgIGNsZWFyQ2FjaGVkTWF4SW5kaWNlcygpOwog
fQogCi12b2lkIFdlYkdMQnVmZmVyOjpfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2Jq
ZWN0KQordm9pZCBXZWJHTEJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChQbGF0Zm9ybTNET2JqZWN0
IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmRlbGV0ZUJ1
ZmZlcihvYmplY3QpOwogfQpAQCAtNjYsNyArNjcsOSBAQCBib29sIFdlYkdMQnVmZmVyOjphc3Nv
Y2lhdGVCdWZmZXJEYXRhKGluCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSBlbHNlIGlmIChtX3RhcmdldCA9PSBHcmFwaGlj
c0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSKSB7CisgICAgfQorCisgICAgaWYgKG1fdGFyZ2V0ID09
IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIpIHsKICAgICAgICAgbV9ieXRlTGVuZ3Ro
ID0gc2l6ZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xCdWZmZXIuaAkocmV2aXNpb24gNjQ2ODUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcyICsyNiw3MiBAQAogI2lmbmRlZiBX
ZWJHTEJ1ZmZlcl9oCiAjZGVmaW5lIFdlYkdMQnVmZmVyX2gKIAotI2luY2x1ZGUgIldlYkdMT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTE9iamVjdC5o
IgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi0gICAgY2xhc3MgV2ViR0xCdWZmZXIg
OiBwdWJsaWMgV2ViR0xPYmplY3QgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+V2Vi
R0xCdWZmZXIoKSB7IGRlbGV0ZU9iamVjdCgpOyB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwot
Ci0gICAgICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YShpbnQgc2l6ZSk7Ci0gICAgICAgIGJv
b2wgYXNzb2NpYXRlQnVmZmVyRGF0YShBcnJheUJ1ZmZlciogYXJyYXkpOwotICAgICAgICBib29s
IGFzc29jaWF0ZUJ1ZmZlckRhdGEoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSk7Ci0gICAgICAgIGJv
b2wgYXNzb2NpYXRlQnVmZmVyU3ViRGF0YShsb25nIG9mZnNldCwgQXJyYXlCdWZmZXIqIGFycmF5
KTsKLSAgICAgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJTdWJEYXRhKGxvbmcgb2Zmc2V0LCBBcnJh
eUJ1ZmZlclZpZXcqIGFycmF5KTsKLSAgICAgICAgCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGgoKSBjb25zdDsKLSAgICAgICAgY29uc3QgQXJyYXlCdWZmZXIqIGVsZW1lbnRBcnJheUJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFycmF5QnVmZmVyLmdldCgpOyB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgLy8gR2V0cyB0aGUgY2FjaGVkIG1heCBpbmRleCBm
b3IgdGhlIGdpdmVuIHR5cGUuIFJldHVybnMgLTEgaWYKLSAgICAgICAgLy8gbm9uZSBoYXMgYmVl
biBzZXQuCi0gICAgICAgIGxvbmcgZ2V0Q2FjaGVkTWF4SW5kZXgodW5zaWduZWQgbG9uZyB0eXBl
KTsKLSAgICAgICAgLy8gU2V0cyB0aGUgY2FjaGVkIG1heCBpbmRleCBmb3IgdGhlIGdpdmVuIHR5
cGUuCi0gICAgICAgIHZvaWQgc2V0Q2FjaGVkTWF4SW5kZXgodW5zaWduZWQgbG9uZyB0eXBlLCBs
b25nIHZhbHVlKTsKLQotICAgICAgICB1bnNpZ25lZCBsb25nIGdldFRhcmdldCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGFyZ2V0OyB9Ci0gICAgICAgIHZvaWQgc2V0VGFyZ2V0KHVuc2lnbmVkIGxvbmcp
OwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNE
T2JqZWN0IG8pOwotICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0J1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgICAgICB1bnNpZ25lZCBsb25nIG1f
dGFyZ2V0OwotCi0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9lbGVtZW50QXJyYXlCdWZm
ZXI7Ci0gICAgICAgIHVuc2lnbmVkIG1fYnl0ZUxlbmd0aDsKLQotICAgICAgICAvLyBPcHRpbWl6
YXRpb24gZm9yIGluZGV4IHZhbGlkYXRpb24uIEZvciBlYWNoIHR5cGUgb2YgaW5kZXgKLSAgICAg
ICAgLy8gKGkuZS4sIFVOU0lHTkVEX1NIT1JUKSwgY2FjaGUgdGhlIG1heGltdW0gaW5kZXggaW4g
dGhlCi0gICAgICAgIC8vIGVudGlyZSBidWZmZXIuCi0gICAgICAgIC8vIAotICAgICAgICAvLyBU
aGlzIGlzIHN1ZmZpY2llbnQgdG8gZWxpbWluYXRlIGEgbG90IG9mIHdvcmsgdXBvbiBlYWNoCi0g
ICAgICAgIC8vIGRyYXcgY2FsbCBhcyBsb25nIGFzIGFsbCBib3VuZCBhcnJheSBidWZmZXJzIGFy
ZSBhdCBsZWFzdAotICAgICAgICAvLyB0aGF0IHNpemUuCi0gICAgICAgIHN0cnVjdCBNYXhJbmRl
eENhY2hlRW50cnkgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB0eXBlOwotICAgICAgICAg
ICAgbG9uZyBtYXhJbmRleDsKLSAgICAgICAgfTsKLSAgICAgICAgLy8gT3BlbkdMIEVTIDIuMCBv
bmx5IGhhcyB0d28gdmFsaWQgaW5kZXggdHlwZXMgKFVOU0lHTkVEX0JZVEUKLSAgICAgICAgLy8g
YW5kIFVOU0lHTkVEX1NIT1JUKSwgYnV0IG1pZ2h0IGFzIHdlbGwgbGVhdmUgb3BlbiB0aGUKLSAg
ICAgICAgLy8gcG9zc2liaWxpdHkgb2YgYWRkaW5nIG90aGVycy4KLSAgICAgICAgTWF4SW5kZXhD
YWNoZUVudHJ5IG1fbWF4SW5kZXhDYWNoZVs0XTsKLSAgICAgICAgdW5zaWduZWQgbV9uZXh0QXZh
aWxhYmxlQ2FjaGVFbnRyeTsKIAotICAgICAgICAvLyBDbGVhcnMgYWxsIG9mIHRoZSBjYWNoZWQg
bWF4IGluZGljZXMuCi0gICAgICAgIHZvaWQgY2xlYXJDYWNoZWRNYXhJbmRpY2VzKCk7CitjbGFz
cyBXZWJHTEJ1ZmZlciA6IHB1YmxpYyBXZWJHTE9iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+V2ViR0xCdWZmZXIoKSB7IGRlbGV0ZU9iamVjdCgpOyB9CisKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJHTEJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOworCisgICAg
Ym9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKGludCBzaXplKTsKKyAgICBib29sIGFzc29jaWF0ZUJ1
ZmZlckRhdGEoQXJyYXlCdWZmZXIqIGFycmF5KTsKKyAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRh
dGEoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSk7CisgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJTdWJE
YXRhKGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlciogYXJyYXkpOworICAgIGJvb2wgYXNzb2NpYXRl
QnVmZmVyU3ViRGF0YShsb25nIG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3KiBhcnJheSk7CisKKyAg
ICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisgICAgY29uc3QgQXJyYXlCdWZmZXIqIGVs
ZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFycmF5QnVmZmVyLmdl
dCgpOyB9CisKKyAgICAvLyBHZXRzIHRoZSBjYWNoZWQgbWF4IGluZGV4IGZvciB0aGUgZ2l2ZW4g
dHlwZS4gUmV0dXJucyAtMSBpZgorICAgIC8vIG5vbmUgaGFzIGJlZW4gc2V0LgorICAgIGxvbmcg
Z2V0Q2FjaGVkTWF4SW5kZXgodW5zaWduZWQgbG9uZyB0eXBlKTsKKyAgICAvLyBTZXRzIHRoZSBj
YWNoZWQgbWF4IGluZGV4IGZvciB0aGUgZ2l2ZW4gdHlwZS4KKyAgICB2b2lkIHNldENhY2hlZE1h
eEluZGV4KHVuc2lnbmVkIGxvbmcgdHlwZSwgbG9uZyB2YWx1ZSk7CisKKyAgICB1bnNpZ25lZCBs
b25nIGdldFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9CisgICAgdm9pZCBzZXRU
YXJnZXQodW5zaWduZWQgbG9uZyk7CisKK3Byb3RlY3RlZDoKKyAgICBXZWJHTEJ1ZmZlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RJbXBs
KFBsYXRmb3JtM0RPYmplY3Qgbyk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdW5zaWduZWQgbG9uZyBtX3Rhcmdl
dDsKKworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9lbGVtZW50QXJyYXlCdWZmZXI7CisgICAg
dW5zaWduZWQgbV9ieXRlTGVuZ3RoOworCisgICAgLy8gT3B0aW1pemF0aW9uIGZvciBpbmRleCB2
YWxpZGF0aW9uLiBGb3IgZWFjaCB0eXBlIG9mIGluZGV4CisgICAgLy8gKGkuZS4sIFVOU0lHTkVE
X1NIT1JUKSwgY2FjaGUgdGhlIG1heGltdW0gaW5kZXggaW4gdGhlCisgICAgLy8gZW50aXJlIGJ1
ZmZlci4KKyAgICAvLworICAgIC8vIFRoaXMgaXMgc3VmZmljaWVudCB0byBlbGltaW5hdGUgYSBs
b3Qgb2Ygd29yayB1cG9uIGVhY2gKKyAgICAvLyBkcmF3IGNhbGwgYXMgbG9uZyBhcyBhbGwgYm91
bmQgYXJyYXkgYnVmZmVycyBhcmUgYXQgbGVhc3QKKyAgICAvLyB0aGF0IHNpemUuCisgICAgc3Ry
dWN0IE1heEluZGV4Q2FjaGVFbnRyeSB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgdHlwZTsKKyAg
ICAgICAgbG9uZyBtYXhJbmRleDsKICAgICB9OwotICAgIAorICAgIC8vIE9wZW5HTCBFUyAyLjAg
b25seSBoYXMgdHdvIHZhbGlkIGluZGV4IHR5cGVzIChVTlNJR05FRF9CWVRFCisgICAgLy8gYW5k
IFVOU0lHTkVEX1NIT1JUKSwgYnV0IG1pZ2h0IGFzIHdlbGwgbGVhdmUgb3BlbiB0aGUKKyAgICAv
LyBwb3NzaWJpbGl0eSBvZiBhZGRpbmcgb3RoZXJzLgorICAgIE1heEluZGV4Q2FjaGVFbnRyeSBt
X21heEluZGV4Q2FjaGVbNF07CisgICAgdW5zaWduZWQgbV9uZXh0QXZhaWxhYmxlQ2FjaGVFbnRy
eTsKKworICAgIC8vIENsZWFycyBhbGwgb2YgdGhlIGNhY2hlZCBtYXggaW5kaWNlcy4KKyAgICB2
b2lkIGNsZWFyQ2FjaGVkTWF4SW5kaWNlcygpOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gV2ViR0xCdWZmZXJfaApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuY3BwCShyZXZpc2lvbiA2NDY4NSkKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpZiBFTkFCTEUoM0RfQ0FOVkFTKQogCiAjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgor
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTEwNSw3ICsxMDYsNyBAQCB1bnNpZ25lZCBsb25nIFdlYkdMRnJhbWVidWZmZXI6Omdl
dENvbG9yCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6X2RlbGV0
ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKK3ZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6
ZGVsZXRlT2JqZWN0SW1wbChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0
KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmRlbGV0ZUZyYW1lYnVmZmVyKG9iamVjdCk7CiB9Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkocmV2aXNpb24gNjQ2ODUp
CisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNTIgKzMzLDUyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNz
IFdlYkdMRnJhbWVidWZmZXIgOiBwdWJsaWMgV2ViR0xPYmplY3QgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgdmlydHVhbCB+V2ViR0xGcmFtZWJ1ZmZlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KLSAg
ICAgICAgCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IGNyZWF0
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKLQotICAgICAgICBib29sIGlzRGVwdGhBdHRhY2hl
ZCgpIGNvbnN0IHsgcmV0dXJuIChtX2RlcHRoQXR0YWNobWVudCAmJiBtX2RlcHRoQXR0YWNobWVu
dC0+b2JqZWN0KCkpOyB9Ci0gICAgICAgIGJvb2wgaXNTdGVuY2lsQXR0YWNoZWQoKSBjb25zdCB7
IHJldHVybiAobV9zdGVuY2lsQXR0YWNobWVudCAmJiBtX3N0ZW5jaWxBdHRhY2htZW50LT5vYmpl
Y3QoKSk7IH0KLSAgICAgICAgYm9vbCBpc0RlcHRoU3RlbmNpbEF0dGFjaGVkKCkgY29uc3QgeyBy
ZXR1cm4gKG1fZGVwdGhTdGVuY2lsQXR0YWNobWVudCAmJiBtX2RlcHRoU3RlbmNpbEF0dGFjaG1l
bnQtPm9iamVjdCgpKTsgfQotCi0gICAgICAgIHZvaWQgc2V0QXR0YWNobWVudCh1bnNpZ25lZCBs
b25nLCBXZWJHTE9iamVjdCopOwotCi0gICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk
IHJpZ2h0IGFmdGVyIGEgZnJhbWVidWZmZXIgaXMgYm91bmQuCi0gICAgICAgIC8vIEJlY2F1c2Ug
cmVuZGVyYnVmZmVycyBhbmQgdGV4dHVyZXMgYXR0YWNoZWQgdG8gdGhlIGZyYW1lYnVmZmVyIG1p
Z2h0Ci0gICAgICAgIC8vIGhhdmUgY2hhbmdlZCBhbmQgdGhlIGZyYW1lYnVmZmVyIG1pZ2h0IGhh
dmUgYmVjb21lIGNvbXBsZXRlIHdoZW4gaXQKLSAgICAgICAgLy8gaXNuJ3QgYm91bmQsIHNvIHdl
IG5lZWQgdG8gY2xlYXIgdW4taW5pdGlhbGl6ZWQgcmVuZGVyYnVmZmVycy4KLSAgICAgICAgdm9p
ZCBvbkJpbmQoKTsKLQotICAgICAgICAvLyBXaGVuIGEgdGV4dHVyZSBvciBhIHJlbmRlcmJ1ZmZl
ciBjaGFuZ2VzLCB3ZSBuZWVkIHRvIGNoZWNrIHRoZQotICAgICAgICAvLyBjdXJyZW50IGJvdW5k
IGZyYW1lYnVmZmVyOyBpZiB0aGUgbmV3bHkgY2hhbmdlZCBvYmplY3QgaXMgYXR0YWNoZWQKLSAg
ICAgICAgLy8gdG8gdGhlIGZyYW1lYnVmZmVyIGFuZCB0aGUgZnJhbWVidWZmZXIgYmVjb21lcyBj
b21wbGV0ZSwgd2UgbmVlZCB0bwotICAgICAgICAvLyBjbGVhciB1bi1pbml0aWFsaXplZCByZW5k
ZXJidWZmZXJzLgotICAgICAgICB2b2lkIG9uQXR0YWNoZWRPYmplY3RDaGFuZ2UoV2ViR0xPYmpl
Y3QqKTsKLQotICAgICAgICB1bnNpZ25lZCBsb25nIGdldENvbG9yQnVmZmVyRm9ybWF0KCk7Ci0K
LSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFdlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdD
b250ZXh0Kik7Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQ
bGF0Zm9ybTNET2JqZWN0KTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBp
c0ZyYW1lYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgICAgIGJvb2wgaXNV
bmluaXRpYWxpemVkKFdlYkdMT2JqZWN0Kik7Ci0gICAgICAgIHZvaWQgc2V0SW5pdGlhbGl6ZWQo
V2ViR0xPYmplY3QqKTsKLSAgICAgICAgdm9pZCBpbml0aWFsaXplUmVuZGVyYnVmZmVycygpOwot
Ci0gICAgICAgIC8vIFRoZXNlIG9iamVjdHMgYXJlIGtlcHQgYWxpdmUgYnkgdGhlIGdsb2JhbCB0
YWJsZSBpbgotICAgICAgICAvLyBXZWJHTFJlbmRlcmluZ0NvbnRleHQuCi0gICAgICAgIFdlYkdM
T2JqZWN0KiBtX2NvbG9yQXR0YWNobWVudDsKLSAgICAgICAgV2ViR0xPYmplY3QqIG1fZGVwdGhB
dHRhY2htZW50OwotICAgICAgICBXZWJHTE9iamVjdCogbV9zdGVuY2lsQXR0YWNobWVudDsKLSAg
ICAgICAgV2ViR0xPYmplY3QqIG1fZGVwdGhTdGVuY2lsQXR0YWNobWVudDsKLSAgICB9OwotICAg
IAorY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlciA6IHB1YmxpYyBXZWJHTE9iamVjdCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+V2ViR0xGcmFtZWJ1ZmZlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRl
cmluZ0NvbnRleHQqKTsKKworICAgIGJvb2wgaXNEZXB0aEF0dGFjaGVkKCkgY29uc3QgeyByZXR1
cm4gKG1fZGVwdGhBdHRhY2htZW50ICYmIG1fZGVwdGhBdHRhY2htZW50LT5vYmplY3QoKSk7IH0K
KyAgICBib29sIGlzU3RlbmNpbEF0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gKG1fc3RlbmNpbEF0
dGFjaG1lbnQgJiYgbV9zdGVuY2lsQXR0YWNobWVudC0+b2JqZWN0KCkpOyB9CisgICAgYm9vbCBp
c0RlcHRoU3RlbmNpbEF0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gKG1fZGVwdGhTdGVuY2lsQXR0
YWNobWVudCAmJiBtX2RlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPm9iamVjdCgpKTsgfQorCisgICAg
dm9pZCBzZXRBdHRhY2htZW50KHVuc2lnbmVkIGxvbmcsIFdlYkdMT2JqZWN0Kik7CisKKyAgICAv
LyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCByaWdodCBhZnRlciBhIGZyYW1lYnVmZmVyIGlzIGJv
dW5kLgorICAgIC8vIEJlY2F1c2UgcmVuZGVyYnVmZmVycyBhbmQgdGV4dHVyZXMgYXR0YWNoZWQg
dG8gdGhlIGZyYW1lYnVmZmVyIG1pZ2h0CisgICAgLy8gaGF2ZSBjaGFuZ2VkIGFuZCB0aGUgZnJh
bWVidWZmZXIgbWlnaHQgaGF2ZSBiZWNvbWUgY29tcGxldGUgd2hlbiBpdAorICAgIC8vIGlzbid0
IGJvdW5kLCBzbyB3ZSBuZWVkIHRvIGNsZWFyIHVuLWluaXRpYWxpemVkIHJlbmRlcmJ1ZmZlcnMu
CisgICAgdm9pZCBvbkJpbmQoKTsKKworICAgIC8vIFdoZW4gYSB0ZXh0dXJlIG9yIGEgcmVuZGVy
YnVmZmVyIGNoYW5nZXMsIHdlIG5lZWQgdG8gY2hlY2sgdGhlCisgICAgLy8gY3VycmVudCBib3Vu
ZCBmcmFtZWJ1ZmZlcjsgaWYgdGhlIG5ld2x5IGNoYW5nZWQgb2JqZWN0IGlzIGF0dGFjaGVkCisg
ICAgLy8gdG8gdGhlIGZyYW1lYnVmZmVyIGFuZCB0aGUgZnJhbWVidWZmZXIgYmVjb21lcyBjb21w
bGV0ZSwgd2UgbmVlZCB0bworICAgIC8vIGNsZWFyIHVuLWluaXRpYWxpemVkIHJlbmRlcmJ1ZmZl
cnMuCisgICAgdm9pZCBvbkF0dGFjaGVkT2JqZWN0Q2hhbmdlKFdlYkdMT2JqZWN0Kik7CisKKyAg
ICB1bnNpZ25lZCBsb25nIGdldENvbG9yQnVmZmVyRm9ybWF0KCk7CisKK3Byb3RlY3RlZDoKKyAg
ICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOworCisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZU9iamVjdEltcGwoUGxhdGZvcm0zRE9iamVjdCk7CisKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCBib29sIGlzRnJhbWVidWZmZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisK
KyAgICBib29sIGlzVW5pbml0aWFsaXplZChXZWJHTE9iamVjdCopOworICAgIHZvaWQgc2V0SW5p
dGlhbGl6ZWQoV2ViR0xPYmplY3QqKTsKKyAgICB2b2lkIGluaXRpYWxpemVSZW5kZXJidWZmZXJz
KCk7CisKKyAgICAvLyBUaGVzZSBvYmplY3RzIGFyZSBrZXB0IGFsaXZlIGJ5IHRoZSBnbG9iYWwg
dGFibGUgaW4KKyAgICAvLyBXZWJHTFJlbmRlcmluZ0NvbnRleHQuCisgICAgV2ViR0xPYmplY3Qq
IG1fY29sb3JBdHRhY2htZW50OworICAgIFdlYkdMT2JqZWN0KiBtX2RlcHRoQXR0YWNobWVudDsK
KyAgICBXZWJHTE9iamVjdCogbV9zdGVuY2lsQXR0YWNobWVudDsKKyAgICBXZWJHTE9iamVjdCog
bV9kZXB0aFN0ZW5jaWxBdHRhY2htZW50OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gV2ViR0xGcmFtZWJ1ZmZlcl9oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMR2V0SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEdldEluZm8uY3BwCShyZXZpc2lvbiA2NDY4NSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xHZXRJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTQgKzI5LDE1IEBACiAjaWYgRU5B
QkxFKDNEX0NBTlZBUykKIAogI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgotI2luY2x1ZGUgIldl
YkdMQnVmZmVyLmgiCisKICNpbmNsdWRlICJGbG9hdDMyQXJyYXkuaCIKLSNpbmNsdWRlICJXZWJH
TEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiSW50MzJBcnJheS5oIgorI2luY2x1ZGUgIlVpbnQ4
QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMRnJhbWVi
dWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJlbmRl
cmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgotI2luY2x1ZGUgIlVpbnQ4QXJy
YXkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMR2V0SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xH
ZXRJbmZvLmgJKHJldmlzaW9uIDY0Njg1KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdl
dEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDE4IEBACiAjaWZuZGVmIFdlYkdM
R2V0SW5mb19oCiAjZGVmaW5lIFdlYkdMR2V0SW5mb19oCiAKLSNpbmNsdWRlICJ3dGYvUGFzc1Jl
ZlB0ci5oIgotI2luY2x1ZGUgInd0Zi9SZWZQdHIuaCIKKyNpbmNsdWRlICJGbG9hdDMyQXJyYXku
aCIKKyNpbmNsdWRlICJJbnQzMkFycmF5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
LQorI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgotI2lu
Y2x1ZGUgIkZsb2F0MzJBcnJheS5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKLSNp
bmNsdWRlICJJbnQzMkFycmF5LmgiCi0vLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJy
YXkKLS8vI2luY2x1ZGUgIldlYkdMT2JqZWN0QXJyYXkuaCIKICNpbmNsdWRlICJXZWJHTFByb2dy
YW0uaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMVGV4
dHVyZS5oIgotI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTc0LDcgKzcyLDcgQEAgcHVibGljOgogICAgIFdlYkdMR2V0SW5mbyhjb25zdCBib29sKiB2
YWx1ZSwgaW50IHNpemUpOwogICAgIFdlYkdMR2V0SW5mbyhmbG9hdCB2YWx1ZSk7CiAgICAgV2Vi
R0xHZXRJbmZvKGxvbmcgdmFsdWUpOwotICAgIC8vIFJlcHJlc2VudHMgdGhlIE5VTEwgdmFsdWUg
YW5kIHR5cGUKKyAgICAvLyBSZXByZXNlbnRzIHRoZSBudWxsIHZhbHVlIGFuZCB0eXBlLgogICAg
IFdlYkdMR2V0SW5mbygpOwogICAgIFdlYkdMR2V0SW5mbyhjb25zdCBTdHJpbmcmIHZhbHVlKTsK
ICAgICBXZWJHTEdldEluZm8odW5zaWduZWQgbG9uZyB2YWx1ZSk7CkBAIC0xMzIsNCArMTMwLDQg
QEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgIC8vIFdlYkdM
R2V0SW5mb19oCisjZW5kaWYgLy8gV2ViR0xHZXRJbmZvX2gKSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuY3BwCShyZXZpc2lvbiA2NDY4NSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5B
QkxFKDNEX0NBTlZBUykKIAogI2luY2x1ZGUgIldlYkdMT2JqZWN0LmgiCisKICNpbmNsdWRlICJX
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjEsNyAr
NjIsNyBAQCB2b2lkIFdlYkdMT2JqZWN0OjpkZWxldGVPYmplY3QoKQogICAgICAgICBpZiAobV9z
aG91bGREZWxldGVPYmplY3QpCiAgICAgICAgICAgICBpZiAobV9jb250ZXh0KSB7CiAgICAgICAg
ICAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5tYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICAgICAgICAgICAgICBfZGVsZXRlT2JqZWN0KG1fb2JqZWN0KTsKKyAgICAgICAg
ICAgICAgICBkZWxldGVPYmplY3RJbXBsKG1fb2JqZWN0KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgbV9vYmplY3QgPSAwOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgJ
KHJldmlzaW9uIDY0Njg1KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw1NCArMjYsNTQgQEAKICNpZm5kZWYgV2ViR0xPYmplY3RfaAog
I2RlZmluZSBXZWJHTE9iamVjdF9oCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgor
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0gICAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OwotICAgIAotICAgIGNsYXNzIFdl
YkdMT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR0xPYmplY3Q+IHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIHZpcnR1YWwgfldlYkdMT2JqZWN0KCk7Ci0gICAgICAgIAotICAgICAgICBQbGF0
Zm9ybTNET2JqZWN0IG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9Ci0gICAgICAg
IHZvaWQgc2V0T2JqZWN0KFBsYXRmb3JtM0RPYmplY3QsIGJvb2wgc2hvdWxkRGVsZXRlT2JqZWN0
ID0gdHJ1ZSk7Ci0gICAgICAgIHZvaWQgZGVsZXRlT2JqZWN0KCk7Ci0gICAgICAgIAotICAgICAg
ICB2b2lkIGRldGFjaENvbnRleHQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWxldGVPYmpl
Y3QoKTsKLSAgICAgICAgICAgIG1fY29udGV4dCA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7
IH0KLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZWJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dyYW0oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJidWZmZXIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkZXIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0dXJlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgV2ViR0xPYmplY3Qo
V2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBfZGVsZXRlT2Jq
ZWN0KFBsYXRmb3JtM0RPYmplY3QpID0gMDsKLSAgICAKLSAgICBwcml2YXRlOgotICAgICAgICBQ
bGF0Zm9ybTNET2JqZWN0IG1fb2JqZWN0OwotICAgICAgICAvLyBUaGUgc2hvdWxkRGVsZXRlT2Jq
ZWN0IGZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyB3cmFwcGVyCi0gICAgICAgIC8vIG93bnMg
dGhlIHVuZGVybHlpbmcgcmVzb3VyY2UgYW5kIHNob3VsZCBkZWxldGUgaXQgd2hlbiB0aGUKLSAg
ICAgICAgLy8gd3JhcHBlciBpcyB1bnJlZmVyZW5jZWQgZm9yIHRoZSBsYXN0IHRpbWUgYW5kIGRl
bGV0ZWQuIEl0Ci0gICAgICAgIC8vIGlzIG9ubHkgc2V0IHRvIGZhbHNlIGZvciBjZXJ0YWluIG9i
amVjdHMgcmV0dXJuZWQgZnJvbSBnZXQKLSAgICAgICAgLy8gcXVlcmllcy4gRklYTUU6IHNob3Vs
ZCBjb25zaWRlciBjYW5vbmljYWxpemluZyBhbGwgb2YgdGhlc2UKLSAgICAgICAgLy8gb2JqZWN0
cyBpbiB0aGUgZnV0dXJlLgotICAgICAgICBib29sIG1fc2hvdWxkRGVsZXRlT2JqZWN0OwotICAg
ICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG1fY29udGV4dDsKLSAgICB9OwotICAgIAorY2xh
c3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OworCitjbGFzcyBXZWJHTE9iamVjdCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYkdMT2JqZWN0PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViR0xPYmpl
Y3QoKTsKKworICAgIFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9v
YmplY3Q7IH0KKyAgICB2b2lkIHNldE9iamVjdChQbGF0Zm9ybTNET2JqZWN0LCBib29sIHNob3Vs
ZERlbGV0ZU9iamVjdCA9IHRydWUpOworICAgIHZvaWQgZGVsZXRlT2JqZWN0KCk7CisKKyAgICB2
b2lkIGRldGFjaENvbnRleHQoKQorICAgIHsKKyAgICAgICAgZGVsZXRlT2JqZWN0KCk7CisgICAg
ICAgIG1fY29udGV4dCA9IDA7CisgICAgfQorCisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKKyAgICB2aXJ0dWFsIGJvb2wg
aXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Zy
YW1lYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNQ
cm9ncmFtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJidWZmZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1No
YWRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVGV4dHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXZWJHTE9iamVj
dChXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0
SW1wbChQbGF0Zm9ybTNET2JqZWN0KSA9IDA7CisKK3ByaXZhdGU6CisgICAgUGxhdGZvcm0zRE9i
amVjdCBtX29iamVjdDsKKyAgICAvLyBUaGUgc2hvdWxkRGVsZXRlT2JqZWN0IGZsYWcgaW5kaWNh
dGVzIHdoZXRoZXIgdGhpcyB3cmFwcGVyCisgICAgLy8gb3ducyB0aGUgdW5kZXJseWluZyByZXNv
dXJjZSBhbmQgc2hvdWxkIGRlbGV0ZSBpdCB3aGVuIHRoZQorICAgIC8vIHdyYXBwZXIgaXMgdW5y
ZWZlcmVuY2VkIGZvciB0aGUgbGFzdCB0aW1lIGFuZCBkZWxldGVkLiBJdAorICAgIC8vIGlzIG9u
bHkgc2V0IHRvIGZhbHNlIGZvciBjZXJ0YWluIG9iamVjdHMgcmV0dXJuZWQgZnJvbSBnZXQKKyAg
ICAvLyBxdWVyaWVzLiBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5nIGFsbCBv
ZiB0aGVzZQorICAgIC8vIG9iamVjdHMgaW4gdGhlIGZ1dHVyZS4KKyAgICBib29sIG1fc2hvdWxk
RGVsZXRlT2JqZWN0OworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogbV9jb250ZXh0OworfTsK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gV2ViR0xPYmplY3RfaApJbmRl
eDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAkocmV2aXNpb24gNjQ2ODUpCisrKyBX
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoM0RfQ0FOVkFTKQogCiAjaW5jbHVkZSAiV2ViR0xQcm9n
cmFtLmgiCisKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDQsNyArNDUsNyBAQCBXZWJHTFByb2dyYW06OldlYkdMUHJvZ3JhbShX
ZWJHTFJlbmRlcmluCiAgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0Qo
KS0+Y3JlYXRlUHJvZ3JhbSgpKTsKIH0KIAotdm9pZCBXZWJHTFByb2dyYW06Ol9kZWxldGVPYmpl
Y3QoUGxhdGZvcm0zRE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMUHJvZ3JhbTo6ZGVsZXRlT2Jq
ZWN0SW1wbChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCktPmdyYXBo
aWNzQ29udGV4dDNEKCktPmRlbGV0ZVByb2dyYW0ob2JqZWN0KTsKIH0KSW5kZXg6IFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFByb2dyYW0uaAkocmV2aXNpb24gNjQ2ODUpCisrKyBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUHJvZ3JhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0MCArMzMsNDAgQEAKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLSAgICBj
bGFzcyBXZWJHTFByb2dyYW0gOiBwdWJsaWMgV2ViR0xPYmplY3QgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgdmlydHVhbCB+V2ViR0xQcm9ncmFtKCkgeyBkZWxldGVPYmplY3QoKTsgfQotICAgICAg
ICAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xQcm9ncmFtPiBjcmVhdGUoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Kik7Ci0KLSAgICAgICAgLy8gY2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlv
bigpIGlzIG9ubHkgY2FsbGVkIG9uY2UgYWZ0ZXIgbGlua1Byb2dyYW0oKQotICAgICAgICAvLyBz
dWNjZWVkcy4KLSAgICAgICAgYm9vbCBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucygpOwotICAg
ICAgICBpbnQgbnVtQWN0aXZlQXR0cmliTG9jYXRpb25zKCkgY29uc3Q7Ci0gICAgICAgIGludCBn
ZXRBY3RpdmVBdHRyaWJMb2NhdGlvbihpbnQgaW5kZXgpIGNvbnN0OwotCi0gICAgICAgIGJvb2wg
aXNVc2luZ1ZlcnRleEF0dHJpYjAoKSBjb25zdDsKLQotICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBt
ZWFucyBnZXRQcm9ncmFtUGFyYW1ldGVyKExJTktfU1RBVFVTKSBzaG91bGQgcmV0dXJuCi0gICAg
ICAgIC8vIGZhbHNlOyByZXR1cm4gZmFsc2UgbWVhbnMgd2Ugc2hvdWxkIGFjdHVhbGx5IGNhbGwK
LSAgICAgICAgLy8gZ2V0UHJvZ3JhbVBhcmFtZXRlcihMSU5LX1NUQVRVUykgdG8gZmluZCBvdXQu
Ci0gICAgICAgIGJvb2wgaXNMaW5rRmFpbHVyZUZsYWdTZXQoKSBjb25zdCB7IHJldHVybiBtX2xp
bmtGYWlsdXJlOyB9Ci0gICAgICAgIHZvaWQgc2V0TGlua0ZhaWx1cmVGbGFnKGJvb2wgZmFpbGVk
KSB7IG1fbGlua0ZhaWx1cmUgPSBmYWlsZWQ7IH0KLQotICAgIHByb3RlY3RlZDoKLSAgICAgICAg
V2ViR0xQcm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwotICAgICAgICAKLSAgICAgICAg
dmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotCi0gICAgICAgIFZlY3RvcjxpbnQ+IG1fYWN0aXZlQXR0cmliTG9jYXRpb25zOwotCi0g
ICAgICAgIGJvb2wgbV9saW5rRmFpbHVyZTsKLSAgICB9OwotICAgIAorCitjbGFzcyBXZWJHTFBy
b2dyYW0gOiBwdWJsaWMgV2ViR0xPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdM
UHJvZ3JhbSgpIHsgZGVsZXRlT2JqZWN0KCk7IH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkdMUHJvZ3JhbT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOworCisgICAgLy8gY2Fj
aGVBY3RpdmVBdHRyaWJMb2NhdGlvbigpIGlzIG9ubHkgY2FsbGVkIG9uY2UgYWZ0ZXIgbGlua1By
b2dyYW0oKQorICAgIC8vIHN1Y2NlZWRzLgorICAgIGJvb2wgY2FjaGVBY3RpdmVBdHRyaWJMb2Nh
dGlvbnMoKTsKKyAgICBpbnQgbnVtQWN0aXZlQXR0cmliTG9jYXRpb25zKCkgY29uc3Q7CisgICAg
aW50IGdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uKGludCBpbmRleCkgY29uc3Q7CisKKyAgICBib29s
IGlzVXNpbmdWZXJ0ZXhBdHRyaWIwKCkgY29uc3Q7CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSBtZWFu
cyBnZXRQcm9ncmFtUGFyYW1ldGVyKExJTktfU1RBVFVTKSBzaG91bGQgcmV0dXJuCisgICAgLy8g
ZmFsc2U7IHJldHVybiBmYWxzZSBtZWFucyB3ZSBzaG91bGQgYWN0dWFsbHkgY2FsbAorICAgIC8v
IGdldFByb2dyYW1QYXJhbWV0ZXIoTElOS19TVEFUVVMpIHRvIGZpbmQgb3V0LgorICAgIGJvb2wg
aXNMaW5rRmFpbHVyZUZsYWdTZXQoKSBjb25zdCB7IHJldHVybiBtX2xpbmtGYWlsdXJlOyB9Cisg
ICAgdm9pZCBzZXRMaW5rRmFpbHVyZUZsYWcoYm9vbCBmYWlsZWQpIHsgbV9saW5rRmFpbHVyZSA9
IGZhaWxlZDsgfQorCitwcm90ZWN0ZWQ6CisgICAgV2ViR0xQcm9ncmFtKFdlYkdMUmVuZGVyaW5n
Q29udGV4dCopOworCisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdEltcGwoUGxhdGZvcm0z
RE9iamVjdCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzUHJvZ3JhbSgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFZlY3RvcjxpbnQ+IG1fYWN0aXZlQXR0cmliTG9jYXRp
b25zOworCisgICAgYm9vbCBtX2xpbmtGYWlsdXJlOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gV2ViR0xQcm9ncmFtX2gKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiA2NDY4NSkKKysrIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgRU5BQkxFKDNEX0NBTlZBUykKIAogI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVm
ZmVyLmgiCisKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDUsNyArNDYsNyBAQCBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5k
ZXJidWZmZXIoV2ViCiAgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0Qo
KS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyYnVmZmVyOjpf
ZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFJlbmRlcmJ1
ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBj
b250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmRlbGV0ZVJlbmRlcmJ1ZmZlcihvYmplY3Qp
OwogfQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAkocmV2aXNp
b24gNjQ2ODUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDMxICszMiwzMSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLSAgICBjbGFzcyBXZWJHTFJlbmRlcmJ1
ZmZlciA6IHB1YmxpYyBXZWJHTE9iamVjdCB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFs
IH5XZWJHTFJlbmRlcmJ1ZmZlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KLSAgICAgICAgCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Kik7Ci0KLSAgICAgICAgdm9pZCBzZXRJbnRlcm5hbEZvcm1hdCh1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0KSB7IG1faW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbGZvcm1h
dDsgfQotICAgICAgICB1bnNpZ25lZCBsb25nIGdldEludGVybmFsRm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnRlcm5hbEZvcm1hdDsgfQotCi0gICAgICAgIGJvb2wgaXNJbml0aWFsaXplZCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0KLSAgICAgICAgdm9pZCBzZXRJbml0aWFs
aXplZCgpIHsgbV9pbml0aWFsaXplZCA9IHRydWU7IH0KLQotICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgV2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Ci0gICAgICAgIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcmJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KLQotICAgICAgICB1bnNpZ25lZCBsb25nIG1faW50ZXJuYWxGb3Jt
YXQ7Ci0gICAgICAgIGJvb2wgbV9pbml0aWFsaXplZDsKLSAgICB9OwotICAgIAorCitjbGFzcyBX
ZWJHTFJlbmRlcmJ1ZmZlciA6IHB1YmxpYyBXZWJHTE9iamVjdCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+V2ViR0xSZW5kZXJidWZmZXIoKSB7IGRlbGV0ZU9iamVjdCgpOyB9CisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCopOworCisgICAgdm9pZCBzZXRJbnRlcm5hbEZvcm1hdCh1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0KSB7IG1faW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsgfQorICAgIHVu
c2lnbmVkIGxvbmcgZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFs
Rm9ybWF0OyB9CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lu
aXRpYWxpemVkOyB9CisgICAgdm9pZCBzZXRJbml0aWFsaXplZCgpIHsgbV9pbml0aWFsaXplZCA9
IHRydWU7IH0KKworcHJvdGVjdGVkOgorICAgIFdlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCopOworCisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdEltcGwoUGxhdGZv
cm0zRE9iamVjdCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdW5zaWduZWQgbG9uZyBtX2ludGVybmFs
Rm9ybWF0OworICAgIGJvb2wgbV9pbml0aWFsaXplZDsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFdlYkdMUmVuZGVyYnVmZmVyX2gKSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDY0Njg1KQor
KysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaCIKIAotI2luY2x1ZGUgIkNoZWNrZWRJbnQuaCIKICNpbmNsdWRlICJDYW52YXNQaXhlbEFy
cmF5LmgiCisjaW5jbHVkZSAiQ2hlY2tlZEludC5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNp
bmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTQxLDE1ICs0
MSwxNSBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKLSNpbmNsdWRlICJXZWJHTEFjdGl2ZUluZm8u
aCIKICNpbmNsdWRlICJVaW50MTZBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMQWN0aXZlSW5mby5o
IgogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFBy
b2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgotI2luY2x1ZGUgIldlYkdM
VGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCisjaW5jbHVkZSAiV2ViR0xUZXh0
dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKIAogI2luY2x1ZGUgPHd0
Zi9CeXRlQXJyYXkuaD4KQEAgLTE3MSw5ICsxNzEsOCBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6cGFpbnRSZW5kZXJpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiZWdpblBh
aW50KCkKIHsKLSAgICBpZiAobV9tYXJrZWRDYW52YXNEaXJ0eSkgeworICAgIGlmIChtX21hcmtl
ZENhbnZhc0RpcnR5KQogICAgICAgICBtX2NvbnRleHQtPmJlZ2luUGFpbnQodGhpcyk7Ci0gICAg
fQogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5kUGFpbnQoKQpAQCAtMzUwLDcg
KzM0OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpibGVuZENvbG9yKGQKICAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6YmxlbmRFcXVhdGlvbiggdW5zaWduZWQgbG9uZyBtb2RlICkKK3ZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpibGVuZEVxdWF0aW9uKHVuc2lnbmVkIGxvbmcgbW9kZSkKIHsKICAg
ICBpZiAoIWlzR0xFUzJDb21wbGlhbnQoKSkgewogICAgICAgICBpZiAoIXZhbGlkYXRlQmxlbmRF
cXVhdGlvbihtb2RlKSkKQEAgLTExNDMsOSArMTE0Miw4IEBAIFBhc3NSZWZQdHI8V2ViR0xBY3Rp
dmVJbmZvPiBXZWJHTFJlbmRlcmkKICAgICBBY3RpdmVJbmZvIGluZm87CiAgICAgaWYgKCF2YWxp
ZGF0ZVdlYkdMT2JqZWN0KHByb2dyYW0pKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIW1f
Y29udGV4dC0+Z2V0QWN0aXZlQXR0cmliKG9iamVjdE9yWmVybyhwcm9ncmFtKSwgaW5kZXgsIGlu
Zm8pKSB7CisgICAgaWYgKCFtX2NvbnRleHQtPmdldEFjdGl2ZUF0dHJpYihvYmplY3RPclplcm8o
cHJvZ3JhbSksIGluZGV4LCBpbmZvKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogICAgIHJl
dHVybiBXZWJHTEFjdGl2ZUluZm86OmNyZWF0ZShpbmZvLm5hbWUsIGluZm8udHlwZSwgaW5mby5z
aXplKTsKIH0KIApAQCAtMTE1NSwxMyArMTE1MywxMSBAQCBQYXNzUmVmUHRyPFdlYkdMQWN0aXZl
SW5mbz4gV2ViR0xSZW5kZXJpCiAgICAgQWN0aXZlSW5mbyBpbmZvOwogICAgIGlmICghdmFsaWRh
dGVXZWJHTE9iamVjdChwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBpbmRleCwgaW5m
bykpIHsKKyAgICBpZiAoIW1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShvYmplY3RPclplcm8o
cHJvZ3JhbSksIGluZGV4LCBpbmZvKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlm
ICghaXNHTEVTMkNvbXBsaWFudCgpKSB7CisgICAgaWYgKCFpc0dMRVMyQ29tcGxpYW50KCkpCiAg
ICAgICAgIGlmIChpbmZvLnNpemUgPiAxICYmICFpbmZvLm5hbWUuZW5kc1dpdGgoIlswXSIpKQog
ICAgICAgICAgICAgaW5mby5uYW1lLmFwcGVuZCgiWzBdIik7Ci0gICAgfQogICAgIHJldHVybiBX
ZWJHTEFjdGl2ZUluZm86OmNyZWF0ZShpbmZvLm5hbWUsIGluZm8udHlwZSwgaW5mby5zaXplKTsK
IH0KIApAQCAtMTIxNSw4ICsxMjExLDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0QgogICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBw
bmFtZSwgJnZhbHVlKTsKICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJVRkZF
Ul9TSVpFKQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZh
bHVlKSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmc+KHZhbHVlKSk7CisgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOwogfQogCiBQYXNzUmVmUHRyPFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXM+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMo
KQpAQCAtMTI1OCwyMyArMTI1MywyMiBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRGCiAgICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKICAgICAgICAgaWYg
KHBuYW1lID09IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVD
VF9UWVBFKQogICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPih2YWx1ZSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gV2Vi
R0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKLSAgICAgICAgaW50IHR5cGUgPSAw
OwotICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
KHRhcmdldCwgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfT0JKRUNUX1RZUEUsICZ0eXBlKTsKLSAgICAgICAgaW50IHZhbHVlID0gMDsKLSAgICAg
ICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQs
IGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9OQU1FLCAmdmFsdWUpOwotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSOgotICAgICAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPihmaW5kUmVuZGVyYnVmZmVy
KHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KHZhbHVlKSkpKTsKLSAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRToKLSAgICAgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+KGZpbmRUZXh0dXJlKHN0YXRpY19jYXN0PFBsYXRm
b3JtM0RPYmplY3Q+KHZhbHVlKSkpKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIC8v
IEZJWE1FOiByYWlzZSBleGNlcHRpb24/Ci0gICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KCk7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxs
b25nPih2YWx1ZSkpOworICAgIH0KKworICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxz
ZSk7CisgICAgaW50IHR5cGUgPSAwOworICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSwgJnR5cGUpOworICAgIGludCB2YWx1
ZSA9IDA7CisgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dih0YXJnZXQsIGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX09CSkVDVF9OQU1FLCAmdmFsdWUpOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUjoKKyAgICAgICAgcmV0dXJuIFdlYkdM
R2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPihmaW5kUmVuZGVyYnVmZmVyKHN0
YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KHZhbHVlKSkpKTsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQ
dHI8V2ViR0xUZXh0dXJlPihmaW5kVGV4dHVyZShzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0
Pih2YWx1ZSkpKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIGV4Y2Vw
dGlvbj8KKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIH0KIApAQCAtMzA1
MCw3ICszMDQ0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYgog
ICAgICAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLnJlc2l6ZShpbmRleCArIDEpOwogCiAgICAgbG9u
ZyB2YWxpZGF0ZWRTdHJpZGUgPSBieXRlc1BlckVsZW1lbnQ7Ci0gICAgaWYgKHN0cmlkZSAhPSAw
KSB7CisgICAgaWYgKHN0cmlkZSkgewogICAgICAgICBpZiAoKGxvbmcpIHN0cmlkZSA8IGJ5dGVz
UGVyRWxlbWVudCkgewogICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm47Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlz
aW9uIDY0Njg1KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDExIEBACiAjaW5jbHVkZSAiQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJG
bG9hdDMyQXJyYXkuaCIKLSNpbmNsdWRlICJXZWJHTEdldEluZm8uaCIKLSNpbmNsdWRlICJJbnQz
MkFycmF5LmgiCi0jaW5jbHVkZSAiVWludDhBcnJheS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCisjaW5jbHVkZSAiSW50MzJBcnJheS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCisjaW5jbHVkZSAiVWludDhBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMR2V0SW5mby5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDQ4MCArNTIsNDgwIEBAIGNsYXNzIEhU
TUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7
CiAKLSAgICBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJH
TFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCosIFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMqKTsKLSAgICAgICAgdmlydHVhbCB+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCk7
CitjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViR0xSZW5kZXJpbmdDb250
ZXh0PiBjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQqLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKik7
CisgICAgdmlydHVhbCB+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCk7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXMzZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
bGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIEhlbHBlciB0byByZXR1
cm4gdGhlIHNpemUgaW4gYnl0ZXMgb2YgT3BlbkdMIGRhdGEgdHlwZXMKKyAgICAvLyBsaWtlIEdM
X0ZMT0FULCBHTF9JTlQsIGV0Yy4KKyAgICBpbnQgc2l6ZUluQnl0ZXMoaW50IHR5cGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKTsKKworICAgIHZvaWQgYWN0aXZlVGV4dHVyZSh1bnNpZ25lZCBsb25nIHRl
eHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihXZWJHTFBy
b2dyYW0qLCBXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2b2lkIGJpbmRB
dHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0qLCB1bnNpZ25lZCBsb25nIGluZGV4LCBjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2b2lkIGJpbmRCdWZmZXIodW5z
aWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMQnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYgZWMpOworICAg
IHZvaWQgYmluZEZyYW1lYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEZyYW1lYnVm
ZmVyKiwgRXhjZXB0aW9uQ29kZSYgZWMpOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcih1bnNp
Z25lZCBsb25nIHRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqLCBFeGNlcHRpb25Db2RlJiBlYyk7
CisgICAgdm9pZCBiaW5kVGV4dHVyZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xUZXh0dXJl
KiwgRXhjZXB0aW9uQ29kZSYgZWMpOworICAgIHZvaWQgYmxlbmRDb2xvcihkb3VibGUgcmVkLCBk
b3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOworICAgIHZvaWQgYmxlbmRF
cXVhdGlvbih1bnNpZ25lZCBsb25nIG1vZGUpOworICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFy
YXRlKHVuc2lnbmVkIGxvbmcgbW9kZVJHQiwgdW5zaWduZWQgbG9uZyBtb2RlQWxwaGEpOworICAg
IHZvaWQgYmxlbmRGdW5jKHVuc2lnbmVkIGxvbmcgc2ZhY3RvciwgdW5zaWduZWQgbG9uZyBkZmFj
dG9yKTsKKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgc3JjUkdCLCB1
bnNpZ25lZCBsb25nIGRzdFJHQiwgdW5zaWduZWQgbG9uZyBzcmNBbHBoYSwgdW5zaWduZWQgbG9u
ZyBkc3RBbHBoYSk7CisKKyAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQs
IGludCBzaXplLCB1bnNpZ25lZCBsb25nIHVzYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBBcnJheUJ1ZmZlciogZGF0YSwgdW5z
aWduZWQgbG9uZyB1c2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYnVmZmVyRGF0YSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhLCB1bnNpZ25lZCBsb25n
IHVzYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgQXJyYXlCdWZmZXIqIGRhdGEsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcg
b2Zmc2V0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIHVu
c2lnbmVkIGxvbmcgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1bnNpZ25lZCBsb25nIHRhcmdldCk7
CisgICAgdm9pZCBjbGVhcih1bnNpZ25lZCBsb25nIG1hc2spOworICAgIHZvaWQgY2xlYXJDb2xv
cihkb3VibGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOwor
ICAgIHZvaWQgY2xlYXJEZXB0aChkb3VibGUpOworICAgIHZvaWQgY2xlYXJTdGVuY2lsKGxvbmcp
OworICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJv
b2wgYWxwaGEpOworICAgIHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciosIEV4Y2VwdGlv
bkNvZGUmIGVjKTsKKworICAgIC8vIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQodW5zaWduZWQg
bG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVu
c2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBsb25nIGJvcmRlciwgdW5z
aWduZWQgbG9uZyBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOworICAgIC8vIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIGxv
bmcgeG9mZnNldCwgbG9uZyB5b2Zmc2V0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCwgdW5zaWduZWQgbG9uZyBmb3JtYXQsIHVuc2lnbmVkIGxvbmcgaW1hZ2VTaXpl
LCBjb25zdCB2b2lkKiBkYXRhKTsKKworICAgIHZvaWQgY29weVRleEltYWdlMkQodW5zaWduZWQg
bG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIGxv
bmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwg
bG9uZyBib3JkZXIpOworICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQodW5zaWduZWQgbG9uZyB0
YXJnZXQsIGxvbmcgbGV2ZWwsIGxvbmcgeG9mZnNldCwgbG9uZyB5b2Zmc2V0LCBsb25nIHgsIGxv
bmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOworCisgICAg
UGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gY3JlYXRlQnVmZmVyKCk7CisgICAgUGFzc1JlZlB0cjxX
ZWJHTEZyYW1lYnVmZmVyPiBjcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIFBhc3NSZWZQdHI8V2Vi
R0xQcm9ncmFtPiBjcmVhdGVQcm9ncmFtKCk7CisgICAgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1
ZmZlcj4gY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgUGFzc1JlZlB0cjxXZWJHTFNoYWRlcj4g
Y3JlYXRlU2hhZGVyKHVuc2lnbmVkIGxvbmcgdHlwZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBh
c3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCk7CisKKyAgICB2b2lkIGN1bGxG
YWNlKHVuc2lnbmVkIGxvbmcgbW9kZSk7CisKKyAgICB2b2lkIGRlbGV0ZUJ1ZmZlcihXZWJHTEJ1
ZmZlciopOworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlciopOwor
ICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qKTsKKyAgICB2b2lkIGRlbGV0ZVJl
bmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlciopOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKFdl
YkdMU2hhZGVyKik7CisgICAgdm9pZCBkZWxldGVUZXh0dXJlKFdlYkdMVGV4dHVyZSopOworCisg
ICAgdm9pZCBkZXB0aEZ1bmModW5zaWduZWQgbG9uZyk7CisgICAgdm9pZCBkZXB0aE1hc2soYm9v
bCk7CisgICAgdm9pZCBkZXB0aFJhbmdlKGRvdWJsZSB6TmVhciwgZG91YmxlIHpGYXIpOworICAg
IHZvaWQgZGV0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbSosIFdlYkdMU2hhZGVyKiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgZGlzYWJsZSh1bnNpZ25lZCBsb25nIGNhcCk7CisgICAgdm9pZCBk
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgZHJhd0FycmF5cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxvbmcgZmlyc3Qs
IGxvbmcgY291bnQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyh1bnNp
Z25lZCBsb25nIG1vZGUsIGxvbmcgY291bnQsIHVuc2lnbmVkIGxvbmcgdHlwZSwgbG9uZyBvZmZz
ZXQsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIHZvaWQgZW5hYmxlKHVuc2lnbmVkIGxvbmcgY2Fw
KTsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGZpbmlzaCgpOworICAgIHZvaWQgZmx1c2goKTsK
KyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcmVuZGVyYnVmZmVydGFyZ2V0
LCBXZWJHTFJlbmRlcmJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2b2lkIGZyYW1l
YnVmZmVyVGV4dHVyZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFj
aG1lbnQsIHVuc2lnbmVkIGxvbmcgdGV4dGFyZ2V0LCBXZWJHTFRleHR1cmUqLCBsb25nIGxldmVs
LCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgdm9pZCBmcm9udEZhY2UodW5zaWduZWQgbG9uZyBt
b2RlKTsKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKHVuc2lnbmVkIGxvbmcgdGFyZ2V0KTsKKwor
ICAgIFBhc3NSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9n
cmFtKiwgdW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQ
dHI8V2ViR0xBY3RpdmVJbmZvPiBnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbSosIHVuc2ln
bmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIGJvb2wgZ2V0QXR0YWNoZWRT
aGFkZXJzKFdlYkdMUHJvZ3JhbSosIFZlY3RvcjxXZWJHTFNoYWRlcio+JiwgRXhjZXB0aW9uQ29k
ZSYpOworCisgICAgaW50IGdldEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIGNvbnN0IFN0
cmluZyYgbmFtZSk7CisKKyAgICBXZWJHTEdldEluZm8gZ2V0QnVmZmVyUGFyYW1ldGVyKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisK
KyAgICBQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IGdldENvbnRleHRBdHRyaWJ1
dGVzKCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGdldEVycm9yKCk7CisKKyAgICBXZWJHTEdldElu
Zm8gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKTsKKworICAgIFdlYkdMR2V0SW5mbyBnZXRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBw
bmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgV2ViR0xHZXRJbmZvIGdldFByb2dyYW1QYXJh
bWV0ZXIoV2ViR0xQcm9ncmFtKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYp
OworCisgICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFdlYkdMUHJvZ3JhbSosIEV4Y2VwdGlv
bkNvZGUmIGVjKTsKKworICAgIFdlYkdMR2V0SW5mbyBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKKworICAgIFdlYkdMR2V0SW5mbyBnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIqLCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7CisKKyAgICBTdHJpbmcgZ2V0
U2hhZGVySW5mb0xvZyhXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKworICAgIC8v
IFRCRAorICAgIC8vIHZvaWQgZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQgKEdMZW51bSBzaGFk
ZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwZSwgR0xpbnQqIHJhbmdlLCBHTGludCogcHJlY2lz
aW9uKTsKKworICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBFeGNlcHRp
b25Db2RlJik7CisgICAgU3RyaW5nIGdldFN0cmluZyh1bnNpZ25lZCBsb25nIG5hbWUpOworCisg
ICAgV2ViR0xHZXRJbmZvIGdldFRleFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5z
aWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgV2ViR0xHZXRJbmZvIGdl
dFVuaWZvcm0oV2ViR0xQcm9ncmFtKiwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBFeGNl
cHRpb25Db2RlJik7CisKKyAgICBQYXNzUmVmUHRyPFdlYkdMVW5pZm9ybUxvY2F0aW9uPiBnZXRV
bmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpOworCisgICAgV2ViR0xHZXRJbmZvIGdldFZlcnRleEF0dHJpYih1bnNpZ25lZCBsb25nIGlu
ZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBsb25nIGdl
dFZlcnRleEF0dHJpYk9mZnNldCh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBu
YW1lKTsKKworICAgIHZvaWQgaGludCh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBtb2RlKTsKKyAgICBib29sIGlzQnVmZmVyKFdlYkdMQnVmZmVyKik7CisgICAgYm9vbCBpc0Vu
YWJsZWQodW5zaWduZWQgbG9uZyBjYXApOworICAgIGJvb2wgaXNGcmFtZWJ1ZmZlcihXZWJHTEZy
YW1lYnVmZmVyKik7CisgICAgYm9vbCBpc1Byb2dyYW0oV2ViR0xQcm9ncmFtKik7CisgICAgYm9v
bCBpc1JlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlciopOworICAgIGJvb2wgaXNTaGFkZXIo
V2ViR0xTaGFkZXIqKTsKKyAgICBib29sIGlzVGV4dHVyZShXZWJHTFRleHR1cmUqKTsKKyAgICB2
b2lkIGxpbmVXaWR0aChkb3VibGUpOworICAgIHZvaWQgbGlua1Byb2dyYW0oV2ViR0xQcm9ncmFt
KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGl4ZWxTdG9yZWkodW5zaWduZWQgbG9uZyBw
bmFtZSwgbG9uZyBwYXJhbSk7CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGRvdWJsZSBmYWN0b3Is
IGRvdWJsZSB1bml0cyk7CisgICAgdm9pZCByZWFkUGl4ZWxzKGxvbmcgeCwgbG9uZyB5LCBsb25n
IHdpZHRoLCBsb25nIGhlaWdodCwgdW5zaWduZWQgbG9uZyBmb3JtYXQsIHVuc2lnbmVkIGxvbmcg
dHlwZSwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMpOworICAgIHZvaWQgcmVsZWFzZVNoYWRlckNv
bXBpbGVyKCk7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1
bnNpZ25lZCBsb25nIGhlaWdodCk7CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShkb3VibGUgdmFs
dWUsIGJvb2wgaW52ZXJ0KTsKKyAgICB2b2lkIHNjaXNzb3IobG9uZyB4LCBsb25nIHksIHVuc2ln
bmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKKyAgICB2b2lkIHNoYWRlclNv
dXJjZShXZWJHTFNoYWRlciosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHN0ZW5jaWxGdW5jKHVuc2lnbmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxv
bmcgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFj
ZSwgdW5zaWduZWQgbG9uZyBmdW5jLCBsb25nIHJlZiwgdW5zaWduZWQgbG9uZyBtYXNrKTsKKyAg
ICB2b2lkIHN0ZW5jaWxNYXNrKHVuc2lnbmVkIGxvbmcpOworICAgIHZvaWQgc3RlbmNpbE1hc2tT
ZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVuc2lnbmVkIGxvbmcgbWFzayk7CisgICAgdm9p
ZCBzdGVuY2lsT3AodW5zaWduZWQgbG9uZyBmYWlsLCB1bnNpZ25lZCBsb25nIHpmYWlsLCB1bnNp
Z25lZCBsb25nIHpwYXNzKTsKKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKHVuc2lnbmVkIGxv
bmcgZmFjZSwgdW5zaWduZWQgbG9uZyBmYWlsLCB1bnNpZ25lZCBsb25nIHpmYWlsLCB1bnNpZ25l
ZCBsb25nIHpwYXNzKTsKKworICAgIHZvaWQgdGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVu
c2lnbmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLAorICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIEFycmF5QnVm
ZmVyVmlldyogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0ZXhJbWFnZTJEKHVu
c2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIEltYWdl
RGF0YSogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0ZXhJbWFnZTJEKHVuc2ln
bmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIEhUTUxJbWFn
ZUVsZW1lbnQqIGltYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0ZXhJbWFnZTJEKHVu
c2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIEhUTUxD
YW52YXNFbGVtZW50KiBjYW52YXMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHRleEltYWdl
MkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxmb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwg
SFRNTFZpZGVvRWxlbWVudCogdmlkZW8sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAvLyBPYnNvbGV0
ZSBlbnRyeSBwb2ludHMgLS0gdG8gYmUgcmVtb3ZlZCBzaG9ydGx5LiAoRklYTUUpCisgICAgdm9p
ZCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEltYWdlRGF0YSog
cGl4ZWxzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRh
cmdldCwgdW5zaWduZWQgbGV2ZWwsIEltYWdlRGF0YSogcGl4ZWxzLCBib29sIGZsaXBZLCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWdu
ZWQgbGV2ZWwsIEltYWdlRGF0YSogcGl4ZWxzLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHRleEltYWdlMkQodW5zaWduZWQgdGFy
Z2V0LCB1bnNpZ25lZCBsZXZlbCwgSFRNTEltYWdlRWxlbWVudCogaW1hZ2UsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2b2lkIHRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZl
bCwgSFRNTEltYWdlRWxlbWVudCogaW1hZ2UsIGJvb2wgZmxpcFksIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgSFRN
TEltYWdlRWxlbWVudCogaW1hZ2UsIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVu
c2lnbmVkIGxldmVsLCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLCBFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEhU
TUxDYW52YXNFbGVtZW50KiBjYW52YXMsIGJvb2wgZmxpcFksIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIHRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgSFRNTENh
bnZhc0VsZW1lbnQqIGNhbnZhcywgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5z
aWduZWQgbGV2ZWwsIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEhUTUxW
aWRlb0VsZW1lbnQqIHZpZGVvLCBib29sIGZsaXBZLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEhUTUxWaWRlb0Vs
ZW1lbnQqIHZpZGVvLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlv
bkNvZGUmKTsKKworICAgIHZvaWQgdGV4UGFyYW1ldGVyZih1bnNpZ25lZCB0YXJnZXQsIHVuc2ln
bmVkIHBuYW1lLCBmbG9hdCBwYXJhbSk7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKHVuc2lnbmVk
IHRhcmdldCwgdW5zaWduZWQgcG5hbWUsIGludCBwYXJhbSk7CisKKyAgICB2b2lkIHRleFN1Yklt
YWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwg
dW5zaWduZWQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgd2lkdGgs
IHVuc2lnbmVkIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0
LCB1bnNpZ25lZCB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVs
LCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIEltYWdlRGF0YSogcGl4ZWxzLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwg
dW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgSFRNTElt
YWdlRWxlbWVudCogaW1hZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHRleFN1YkltYWdl
MkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5z
aWduZWQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1
bnNpZ25lZCB0eXBlLCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLCBFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWws
IHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgSFRNTFZpZGVvRWxlbWVudCogdmlk
ZW8sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAvLyBPYnNvbGV0ZSBlbnRyeSBwb2ludHMgLS0gdG8g
YmUgcmVtb3ZlZCBzaG9ydGx5LiAoRklYTUUpCisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2ln
bmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlv
ZmZzZXQsIEltYWdlRGF0YSogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0ZXhT
dWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZz
ZXQsIHVuc2lnbmVkIHlvZmZzZXQsIEltYWdlRGF0YSogcGl4ZWxzLCBib29sIGZsaXBZLCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5z
aWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsIEltYWdlRGF0
YSogcGl4ZWxzLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBs
ZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgSFRNTEltYWdlRWxlbWVu
dCogaW1hZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQodW5zaWdu
ZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9m
ZnNldCwgSFRNTEltYWdlRWxlbWVudCogaW1hZ2UsIGJvb2wgZmxpcFksIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZl
bCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgSFRNTEltYWdlRWxlbWVudCog
aW1hZ2UsIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgdGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVs
LCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LCBIVE1MQ2FudmFzRWxlbWVudCog
Y2FudmFzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVk
IHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZz
ZXQsIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIGJvb2wgZmxpcFksIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZl
bCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgSFRNTENhbnZhc0VsZW1lbnQq
IGNhbnZhcywgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2
ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsIEhUTUxWaWRlb0VsZW1lbnQq
IHZpZGVvLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVk
IHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZz
ZXQsIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBib29sIGZsaXBZLCBFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWws
IHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsIEhUTUxWaWRlb0VsZW1lbnQqIHZp
ZGVvLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmKTsK
KworICAgIHZvaWQgdW5pZm9ybTFmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgZmxvYXQgeCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTFmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSogdiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgdW5pZm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
dW5pZm9ybTFpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgaW50IHgsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCB1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgaW50KiB2
LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTJmKGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgdW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIEZsb2F0MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5p
Zm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZsb2F0KiB2LCBp
bnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTJpKGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgaW50IHgsIGludCB5LCBFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCB1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgSW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTJpdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCogdiwgaW50IHNpemUsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0zZihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0z
ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBmbG9hdCogdiwgaW50IHNp
emUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm0zaShjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCB4LCBpbnQgeSwgaW50IHosIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHVuaWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBJbnQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlmb3JtM2l2
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTRmKGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdywgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgdW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZsb2F0
KiB2LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybTRpKGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgaW50IHgsIGludCB5LCBpbnQgeiwgaW50
IHcsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCB1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
aW50KiB2LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5pZm9ybU1hdHJp
eDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBGbG9hdDMyQXJyYXkqIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIGZsb2F0KiB2YWx1ZSwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBi
b29sIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5KiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdmFsdWUsIGludCBzaXplLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSogdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSwg
RXhjZXB0aW9uQ29kZSYpOworCisgICAgdm9pZCB1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qLCBF
eGNlcHRpb25Db2RlJik7CisKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKHVuc2lnbmVkIGxvbmcg
aW5kZXgsIGZsb2F0IHgpOworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcg
aW5kZXgsIEZsb2F0MzJBcnJheSogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmdih1
bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCogdmFsdWVzLCBpbnQgc2l6ZSk7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIyZih1bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KTsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZGV4LCBGbG9hdDMyQXJyYXkq
IHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBpbmRleCwg
ZmxvYXQqIHZhbHVlcywgaW50IHNpemUpOworICAgIHZvaWQgdmVydGV4QXR0cmliM2YodW5zaWdu
ZWQgbG9uZyBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9uZyBpbmRleCwgRmxvYXQzMkFycmF5KiB2YWx1ZXMpOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIGZsb2F0KiB2YWx1
ZXMsIGludCBzaXplKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVuc2lnbmVkIGxvbmcgaW5k
ZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpOworICAgIHZvaWQgdmVydGV4
QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIEZsb2F0MzJBcnJheSogdmFsdWVzKTsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCogdmFsdWVz
LCBpbnQgc2l6ZSk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGxvbmcg
aW5kZXgsIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyB0eXBlLCBib29sIG5vcm1hbGl6ZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc3RyaWRlLCBsb25nIG9mZnNldCwgRXhj
ZXB0aW9uQ29kZSYpOworCisgICAgdm9pZCB2aWV3cG9ydChsb25nIHgsIGxvbmcgeSwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOworCisgICAgdmlydHVhbCBHcmFw
aGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHQuZ2V0KCk7IH0KKworICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwor
CisgICAgLy8gUmV0dXJuIHZhbHVlIHRydWUgaW5kaWNhdGVzIGNhbnZhcyBpcyB1cGRhdGVkIGR1
cmluZyB0aGUgY2FsbCwKKyAgICAvLyBmYWxzZSBpbmRpY2F0ZXMgbm8gdXBkYXRlcy4KKyAgICBi
b29sIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCk7CisKKyAgICAvLyBIZWxwZXJzIGZv
ciBub3RpZmljYXRpb24gYWJvdXQgcGFpbnQgZXZlbnRzLgorICAgIHZvaWQgYmVnaW5QYWludCgp
OworICAgIHZvaWQgZW5kUGFpbnQoKTsKKworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFdlYkdMT2Jq
ZWN0Kik7CisKKyAgcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CisKKyAg
ICBXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqLCBQYXNzT3duUHRyPEdy
YXBoaWNzQ29udGV4dDNEPik7CisKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHTE9iamVjdCopOwor
ICAgIHZvaWQgZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpOworICAgIFdlYkdMVGV4dHVyZSog
ZmluZFRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgV2ViR0xSZW5kZXJidWZmZXIqIGZp
bmRSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgV2ViR0xCdWZmZXIqIGZpbmRC
dWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgV2ViR0xTaGFkZXIqIGZpbmRTaGFkZXIoUGxh
dGZvcm0zRE9iamVjdCk7CisKKyAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOworICAgIHZv
aWQgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGJvb2wgY2hhbmdlZCkKKyAgICB7CisgICAgICAg
IGlmIChjaGFuZ2VkKQorICAgICAgICAgICAgbWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgfQor
CisgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCk7CisKKyAgICAvLyBCYXNpYyB2YWxpZGF0aW9u
IG9mIGNvdW50IGFuZCBvZmZzZXQgYWdhaW5zdCBudW1iZXIgb2YgZWxlbWVudHMgaW4gZWxlbWVu
dCBhcnJheSBidWZmZXIKKyAgICBib29sIHZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSh1bnNpZ25l
ZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHR5cGUsIGxvbmcgb2Zmc2V0KTsKKworICAgIC8v
IENvbnNlcnZhdGl2ZSBidXQgcXVpY2sgaW5kZXggdmFsaWRhdGlvbgorICAgIGJvb2wgdmFsaWRh
dGVJbmRleEFycmF5Q29uc2VydmF0aXZlKHVuc2lnbmVkIGxvbmcgdHlwZSwgbG9uZyYgbnVtRWxl
bWVudHNSZXF1aXJlZCk7CisKKyAgICAvLyBQcmVjaXNlIGJ1dCBzbG93IGluZGV4IHZhbGlkYXRp
b24gLS0gb25seSBkb25lIGlmIGNvbnNlcnZhdGl2ZSBjaGVja3MgZmFpbAorICAgIGJvb2wgdmFs
aWRhdGVJbmRleEFycmF5UHJlY2lzZSh1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25n
IHR5cGUsIGxvbmcgb2Zmc2V0LCBsb25nJiBudW1FbGVtZW50c1JlcXVpcmVkKTsKKyAgICBib29s
IHZhbGlkYXRlUmVuZGVyaW5nU3RhdGUobG9uZyBudW1FbGVtZW50cyk7CisKKyAgICBib29sIHZh
bGlkYXRlV2ViR0xPYmplY3QoV2ViR0xPYmplY3QqIG9iamVjdCk7CisKKyAgICBPd25QdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKKyAgICBib29sIG1fbmVlZHNVcGRhdGU7CisgICAg
Ym9vbCBtX21hcmtlZENhbnZhc0RpcnR5OworICAgIC8vIEZJWE1FOiBJIHRoaW5rIHRoaXMgaXMg
YnJva2VuIC0tIGl0IGRvZXMgbm90IGluY3JlbWVudCBhbnkKKyAgICAvLyByZWZlcmVuY2UgY291
bnRzLCBzbyBtYXkgcmVmZXIgdG8gZGVzdHJveWVkIG9iamVjdHMuCisgICAgSGFzaFNldDxSZWZQ
dHI8V2ViR0xPYmplY3Q+ID4gbV9jYW52YXNPYmplY3RzOworCisgICAgLy8gTGlzdCBvZiBib3Vu
ZCBWQk8ncy4gVXNlZCB0byBtYWludGFpbiBpbmZvIGFib3V0IHNpemVzIGZvciBBUlJBWV9CVUZG
RVIgYW5kIHN0b3JlZCB2YWx1ZXMgZm9yIEVMRU1FTlRfQVJSQVlfQlVGRkVSCisgICAgUmVmUHRy
PFdlYkdMQnVmZmVyPiBtX2JvdW5kQXJyYXlCdWZmZXI7CisgICAgUmVmUHRyPFdlYkdMQnVmZmVy
PiBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpczNk
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAvLyBDYWNoZWQgdmFsdWVzIGZvciB2
ZXJ0ZXggYXR0cmliIHJhbmdlIGNoZWNrcworICAgIGNsYXNzIFZlcnRleEF0dHJpYlN0YXRlIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIFZlcnRleEF0dHJpYlN0YXRlKCkKKyAgICAgICAgICAgIDog
ZW5hYmxlZChmYWxzZSkKKyAgICAgICAgICAgICwgYnl0ZXNQZXJFbGVtZW50KDApCisgICAgICAg
ICAgICAsIHNpemUoNCkKKyAgICAgICAgICAgICwgdHlwZShHcmFwaGljc0NvbnRleHQzRDo6RkxP
QVQpCisgICAgICAgICAgICAsIG5vcm1hbGl6ZWQoZmFsc2UpCisgICAgICAgICAgICAsIHN0cmlk
ZSgxNikKKyAgICAgICAgICAgICwgb3JpZ2luYWxTdHJpZGUoMCkKKyAgICAgICAgICAgICwgb2Zm
c2V0KDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRWYWx1ZSgpOworICAgICAgICB9CiAK
LSAgICAgICAgLy8gSGVscGVyIHRvIHJldHVybiB0aGUgc2l6ZSBpbiBieXRlcyBvZiBPcGVuR0wg
ZGF0YSB0eXBlcwotICAgICAgICAvLyBsaWtlIEdMX0ZMT0FULCBHTF9JTlQsIGV0Yy4KLSAgICAg
ICAgaW50IHNpemVJbkJ5dGVzKGludCB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0KLSAgICAg
ICAgdm9pZCBhY3RpdmVUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGV4dHVyZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpOwotICAgICAgICB2b2lkIGF0dGFjaFNoYWRlcihXZWJHTFByb2dyYW0qLCBXZWJHTFNo
YWRlciosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICAgICAgdm9pZCBiaW5kQXR0cmliTG9jYXRp
b24oV2ViR0xQcm9ncmFtKiwgdW5zaWduZWQgbG9uZyBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgICAgIHZvaWQgYmluZEJ1ZmZlcih1bnNpZ25lZCBs
b25nIHRhcmdldCwgV2ViR0xCdWZmZXIqLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgICAgIHZv
aWQgYmluZEZyYW1lYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVy
KiwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgICAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIodW5z
aWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYgZWMp
OwotICAgICAgICB2b2lkIGJpbmRUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBXZWJHTFRl
eHR1cmUqLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgICAgIHZvaWQgYmxlbmRDb2xvcihkb3Vi
bGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOwotICAgICAg
ICB2b2lkIGJsZW5kRXF1YXRpb24odW5zaWduZWQgbG9uZyBtb2RlKTsKLSAgICAgICAgdm9pZCBi
bGVuZEVxdWF0aW9uU2VwYXJhdGUodW5zaWduZWQgbG9uZyBtb2RlUkdCLCB1bnNpZ25lZCBsb25n
IG1vZGVBbHBoYSk7Ci0gICAgICAgIHZvaWQgYmxlbmRGdW5jKHVuc2lnbmVkIGxvbmcgc2ZhY3Rv
ciwgdW5zaWduZWQgbG9uZyBkZmFjdG9yKTsKLSAgICAgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0
ZSh1bnNpZ25lZCBsb25nIHNyY1JHQiwgdW5zaWduZWQgbG9uZyBkc3RSR0IsIHVuc2lnbmVkIGxv
bmcgc3JjQWxwaGEsIHVuc2lnbmVkIGxvbmcgZHN0QWxwaGEpOwotCi0gICAgICAgIHZvaWQgYnVm
ZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNh
Z2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCBBcnJheUJ1ZmZlciogZGF0YSwgdW5zaWduZWQgbG9uZyB1c2FnZSwgRXhjZXB0
aW9uQ29kZSYpOwotICAgICAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQs
IEFycmF5QnVmZmVyVmlldyogZGF0YSwgdW5zaWduZWQgbG9uZyB1c2FnZSwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgICAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxv
bmcgb2Zmc2V0LCBBcnJheUJ1ZmZlciogZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2
b2lkIGJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBBcnJh
eUJ1ZmZlclZpZXcqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgICAgICB1bnNpZ25lZCBs
b25nIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJnZXQpOwotICAgICAg
ICB2b2lkIGNsZWFyKHVuc2lnbmVkIGxvbmcgbWFzayk7Ci0gICAgICAgIHZvaWQgY2xlYXJDb2xv
cihkb3VibGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOwot
ICAgICAgICB2b2lkIGNsZWFyRGVwdGgoZG91YmxlKTsKLSAgICAgICAgdm9pZCBjbGVhclN0ZW5j
aWwobG9uZyk7Ci0gICAgICAgIHZvaWQgY29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBi
b29sIGJsdWUsIGJvb2wgYWxwaGEpOwotICAgICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoV2ViR0xT
aGFkZXIqLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgICAgIAotICAgICAgICAvL3ZvaWQgY29t
cHJlc3NlZFRleEltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0LCBsb25nIGJvcmRlciwgdW5zaWduZWQgbG9uZyBpbWFnZVNpemUsIGNvbnN0IHZv
aWQqIGRhdGEpOwotICAgICAgICAvL3ZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIGxvbmcgeG9mZnNldCwgbG9uZyB5b2Zmc2V0LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgdW5zaWduZWQgbG9uZyBm
b3JtYXQsIHVuc2lnbmVkIGxvbmcgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKLSAgICAg
ICAgCi0gICAgICAgIHZvaWQgY29weVRleEltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxv
bmcgbGV2ZWwsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIGxvbmcgeCwgbG9uZyB5LCB1
bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgbG9uZyBib3JkZXIpOwot
ICAgICAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25n
IGxldmVsLCBsb25nIHhvZmZzZXQsIGxvbmcgeW9mZnNldCwgbG9uZyB4LCBsb25nIHksIHVuc2ln
bmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKLQotICAgICAgICBQYXNzUmVm
UHRyPFdlYkdMQnVmZmVyPiBjcmVhdGVCdWZmZXIoKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJH
TEZyYW1lYnVmZmVyPiBjcmVhdGVGcmFtZWJ1ZmZlcigpOwotICAgICAgICBQYXNzUmVmUHRyPFdl
YkdMUHJvZ3JhbT4gY3JlYXRlUHJvZ3JhbSgpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMUmVu
ZGVyYnVmZmVyPiBjcmVhdGVSZW5kZXJidWZmZXIoKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJH
TFNoYWRlcj4gY3JlYXRlU2hhZGVyKHVuc2lnbmVkIGxvbmcgdHlwZSwgRXhjZXB0aW9uQ29kZSYp
OwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpOwotCi0g
ICAgICAgIHZvaWQgY3VsbEZhY2UodW5zaWduZWQgbG9uZyBtb2RlKTsKLQotICAgICAgICB2b2lk
IGRlbGV0ZUJ1ZmZlcihXZWJHTEJ1ZmZlciopOwotICAgICAgICB2b2lkIGRlbGV0ZUZyYW1lYnVm
ZmVyKFdlYkdMRnJhbWVidWZmZXIqKTsKLSAgICAgICAgdm9pZCBkZWxldGVQcm9ncmFtKFdlYkdM
UHJvZ3JhbSopOwotICAgICAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmJ1
ZmZlciopOwotICAgICAgICB2b2lkIGRlbGV0ZVNoYWRlcihXZWJHTFNoYWRlciopOwotICAgICAg
ICB2b2lkIGRlbGV0ZVRleHR1cmUoV2ViR0xUZXh0dXJlKik7Ci0gICAgICAgIAotICAgICAgICB2
b2lkIGRlcHRoRnVuYyh1bnNpZ25lZCBsb25nKTsKLSAgICAgICAgdm9pZCBkZXB0aE1hc2soYm9v
bCk7Ci0gICAgICAgIHZvaWQgZGVwdGhSYW5nZShkb3VibGUgek5lYXIsIGRvdWJsZSB6RmFyKTsK
LSAgICAgICAgdm9pZCBkZXRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtKiwgV2ViR0xTaGFkZXIqLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgZGlzYWJsZSh1bnNpZ25lZCBsb25nIGNhcCk7
Ci0gICAgICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBkcmF3QXJyYXlzKHVuc2lnbmVkIGxv
bmcgbW9kZSwgbG9uZyBmaXJzdCwgbG9uZyBjb3VudCwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAg
ICB2b2lkIGRyYXdFbGVtZW50cyh1bnNpZ25lZCBsb25nIG1vZGUsIGxvbmcgY291bnQsIHVuc2ln
bmVkIGxvbmcgdHlwZSwgbG9uZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgICAgICB2
b2lkIGVuYWJsZSh1bnNpZ25lZCBsb25nIGNhcCk7Ci0gICAgICAgIHZvaWQgZW5hYmxlVmVydGV4
QXR0cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAg
ICB2b2lkIGZpbmlzaCgpOwotICAgICAgICB2b2lkIGZsdXNoKCk7Ci0gICAgICAgIHZvaWQgZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyByZW5kZXJidWZmZXJ0YXJnZXQsIFdlYkdMUmVuZGVy
YnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4
dHVyZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgdGV4dGFyZ2V0LCBXZWJHTFRleHR1cmUqLCBsb25nIGxldmVsLCBFeGNlcHRp
b25Db2RlJiBlYyk7Ci0gICAgICAgIHZvaWQgZnJvbnRGYWNlKHVuc2lnbmVkIGxvbmcgbW9kZSk7
Ci0gICAgICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAodW5zaWduZWQgbG9uZyB0YXJnZXQpOwotCi0g
ICAgICAgIFBhc3NSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQ
cm9ncmFtKiwgdW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICBQ
YXNzUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gZ2V0QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0q
LCB1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25Db2RlJik7Ci0KLSAgICAgICAgYm9vbCBn
ZXRBdHRhY2hlZFNoYWRlcnMoV2ViR0xQcm9ncmFtKiwgVmVjdG9yPFdlYkdMU2hhZGVyKj4mLCBF
eGNlcHRpb25Db2RlJik7Ci0KLSAgICAgICAgaW50ICBnZXRBdHRyaWJMb2NhdGlvbihXZWJHTFBy
b2dyYW0qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotCi0gICAgICAgIFdlYkdMR2V0SW5mbyBnZXRC
dWZmZXJQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJp
YnV0ZXM+IGdldENvbnRleHRBdHRyaWJ1dGVzKCk7Ci0KLSAgICAgICAgdW5zaWduZWQgbG9uZyBn
ZXRFcnJvcigpOwotCi0gICAgICAgIFdlYkdMR2V0SW5mbyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgICAgIFdlYkdM
R2V0SW5mbyBnZXRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYp
OwotCi0gICAgICAgIFdlYkdMR2V0SW5mbyBnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3Jh
bSosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgICAgICBTdHJp
bmcgZ2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYgZWMpOwot
Ci0gICAgICAgIFdlYkdMR2V0SW5mbyBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAg
ICAgICBXZWJHTEdldEluZm8gZ2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyKiwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwotCi0gICAgICAgIFN0cmluZyBnZXRT
aGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiwgRXhjZXB0aW9uQ29kZSYgZWMpOwotCi0gICAgICAg
IC8vIFRCRAotICAgICAgICAvLyB2b2lkIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IChHTGVu
dW0gc2hhZGVydHlwZSwgR0xlbnVtIHByZWNpc2lvbnR5cGUsIEdMaW50KiByYW5nZSwgR0xpbnQq
IHByZWNpc2lvbik7Ci0KLSAgICAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRl
ciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgU3RyaW5nIGdldFN0cmluZyh1bnNpZ25lZCBs
b25nIG5hbWUpOwotCi0gICAgICAgIFdlYkdMR2V0SW5mbyBnZXRUZXhQYXJhbWV0ZXIodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLQot
ICAgICAgICBXZWJHTEdldEluZm8gZ2V0VW5pZm9ybShXZWJHTFByb2dyYW0qLCBjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiosIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgICAgICBQYXNzUmVmUHRy
PFdlYkdMVW5pZm9ybUxvY2F0aW9uPiBnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwg
Y29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgICAgIFdlYkdMR2V0SW5mbyBn
ZXRWZXJ0ZXhBdHRyaWIodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSwg
RXhjZXB0aW9uQ29kZSYpOwotCi0gICAgICAgIGxvbmcgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KHVu
c2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotCi0gICAgICAgIHZvaWQg
aGludCh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBtb2RlKTsKLSAgICAgICAg
Ym9vbCBpc0J1ZmZlcihXZWJHTEJ1ZmZlciopOwotICAgICAgICBib29sIGlzRW5hYmxlZCh1bnNp
Z25lZCBsb25nIGNhcCk7Ci0gICAgICAgIGJvb2wgaXNGcmFtZWJ1ZmZlcihXZWJHTEZyYW1lYnVm
ZmVyKik7Ci0gICAgICAgIGJvb2wgaXNQcm9ncmFtKFdlYkdMUHJvZ3JhbSopOwotICAgICAgICBi
b29sIGlzUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyYnVmZmVyKik7Ci0gICAgICAgIGJvb2wgaXNT
aGFkZXIoV2ViR0xTaGFkZXIqKTsKLSAgICAgICAgYm9vbCBpc1RleHR1cmUoV2ViR0xUZXh0dXJl
Kik7Ci0gICAgICAgIHZvaWQgbGluZVdpZHRoKGRvdWJsZSk7Ci0gICAgICAgIHZvaWQgbGlua1By
b2dyYW0oV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBpeGVs
U3RvcmVpKHVuc2lnbmVkIGxvbmcgcG5hbWUsIGxvbmcgcGFyYW0pOwotICAgICAgICB2b2lkIHBv
bHlnb25PZmZzZXQoZG91YmxlIGZhY3RvciwgZG91YmxlIHVuaXRzKTsKLSAgICAgICAgdm9pZCBy
ZWFkUGl4ZWxzKGxvbmcgeCwgbG9uZyB5LCBsb25nIHdpZHRoLCBsb25nIGhlaWdodCwgdW5zaWdu
ZWQgbG9uZyBmb3JtYXQsIHVuc2lnbmVkIGxvbmcgdHlwZSwgQXJyYXlCdWZmZXJWaWV3KiBwaXhl
bHMpOwotICAgICAgICB2b2lkIHJlbGVhc2VTaGFkZXJDb21waWxlcigpOwotICAgICAgICB2b2lk
IHJlbmRlcmJ1ZmZlclN0b3JhZ2UodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
aW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0
KTsKLSAgICAgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShkb3VibGUgdmFsdWUsIGJvb2wgaW52ZXJ0
KTsKLSAgICAgICAgdm9pZCBzY2lzc29yKGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdp
ZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7Ci0gICAgICAgIHZvaWQgc2hhZGVyU291cmNlKFdl
YkdMU2hhZGVyKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lk
IHN0ZW5jaWxGdW5jKHVuc2lnbmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxvbmcg
bWFzayk7Ci0gICAgICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZh
Y2UsIHVuc2lnbmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxvbmcgbWFzayk7Ci0g
ICAgICAgIHZvaWQgc3RlbmNpbE1hc2sodW5zaWduZWQgbG9uZyk7Ci0gICAgICAgIHZvaWQgc3Rl
bmNpbE1hc2tTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVuc2lnbmVkIGxvbmcgbWFzayk7
Ci0gICAgICAgIHZvaWQgc3RlbmNpbE9wKHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5zaWduZWQgbG9u
ZyB6ZmFpbCwgdW5zaWduZWQgbG9uZyB6cGFzcyk7Ci0gICAgICAgIHZvaWQgc3RlbmNpbE9wU2Vw
YXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZhaWwsIHVuc2lnbmVkIGxv
bmcgemZhaWwsIHVuc2lnbmVkIGxvbmcgenBhc3MpOworICAgICAgICB2b2lkIGluaXRWYWx1ZSgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhbHVlWzBdID0gMC4wZjsKKyAgICAgICAgICAgIHZh
bHVlWzFdID0gMC4wZjsKKyAgICAgICAgICAgIHZhbHVlWzJdID0gMC4wZjsKKyAgICAgICAgICAg
IHZhbHVlWzNdID0gMS4wZjsKKyAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdGV4SW1hZ2UyRCh1
bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQs
IHVuc2lnbmVkIGJvcmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1h
dCwgdW5zaWduZWQgdHlwZSwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICAgICAgdm9pZCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2
ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCBJbWFnZURhdGEqIHBpeGVscywgRXhjZXB0aW9u
Q29kZSYpOwotICAgICAgICB2b2lkIHRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25l
ZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdl
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJn
ZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgSFRNTENhbnZhc0Vs
ZW1lbnQqIGNhbnZhcywgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHRleEltYWdlMkQo
dW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxmb3JtYXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUs
IEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIC8vIE9i
c29sZXRlIGVudHJ5IHBvaW50cyAtLSB0byBiZSByZW1vdmVkIHNob3J0bHkuIChGSVhNRSkKLSAg
ICAgICAgdm9pZCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIElt
YWdlRGF0YSogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdGV4SW1hZ2Uy
RCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCBJbWFnZURhdGEqIHBpeGVscywgYm9v
bCBmbGlwWSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHRleEltYWdlMkQodW5zaWdu
ZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgSW1hZ2VEYXRhKiBwaXhlbHMsIGJvb2wgZmxpcFks
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHRl
eEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgSFRNTEltYWdlRWxlbWVu
dCogaW1hZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCB0ZXhJbWFnZTJEKHVuc2ln
bmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlLCBib29s
IGZsaXBZLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdGV4SW1hZ2UyRCh1bnNpZ25l
ZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwgYm9vbCBm
bGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZv
aWQgdGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCBIVE1MQ2FudmFz
RWxlbWVudCogY2FudmFzLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdGV4SW1hZ2Uy
RCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCBIVE1MQ2FudmFzRWxlbWVudCogY2Fu
dmFzLCBib29sIGZsaXBZLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdGV4SW1hZ2Uy
RCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCBIVE1MQ2FudmFzRWxlbWVudCogY2Fu
dmFzLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICAgICAgdm9pZCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWws
IEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQg
dGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCBIVE1MVmlkZW9FbGVt
ZW50KiB2aWRlbywgYm9vbCBmbGlwWSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHRl
eEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgSFRNTFZpZGVvRWxlbWVu
dCogdmlkZW8sIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29k
ZSYpOworICAgICAgICBib29sIGVuYWJsZWQ7CisgICAgICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4g
YnVmZmVyQmluZGluZzsKKyAgICAgICAgbG9uZyBieXRlc1BlckVsZW1lbnQ7CisgICAgICAgIGxv
bmcgc2l6ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyB0eXBlOworICAgICAgICBib29sIG5vcm1h
bGl6ZWQ7CisgICAgICAgIGxvbmcgc3RyaWRlOworICAgICAgICBsb25nIG9yaWdpbmFsU3RyaWRl
OworICAgICAgICBsb25nIG9mZnNldDsKKyAgICAgICAgZmxvYXQgdmFsdWVbNF07CisgICAgfTsK
IAotICAgICAgICB2b2lkIHRleFBhcmFtZXRlcmYodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBw
bmFtZSwgZmxvYXQgcGFyYW0pOwotICAgICAgICB2b2lkIHRleFBhcmFtZXRlcmkodW5zaWduZWQg
dGFyZ2V0LCB1bnNpZ25lZCBwbmFtZSwgaW50IHBhcmFtKTsKKyAgICBWZWN0b3I8VmVydGV4QXR0
cmliU3RhdGU+IG1fdmVydGV4QXR0cmliU3RhdGU7CisgICAgdW5zaWduZWQgbV9tYXhWZXJ0ZXhB
dHRyaWJzOworICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyOwor
ICAgIGxvbmcgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyU2l6ZTsKKyAgICBmbG9hdCBtX3ZlcnRleEF0
dHJpYjBCdWZmZXJWYWx1ZVs0XTsKKworICAgIFJlZlB0cjxXZWJHTFByb2dyYW0+IG1fY3VycmVu
dFByb2dyYW07CisgICAgUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IG1fZnJhbWVidWZmZXJCaW5k
aW5nOworICAgIFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gbV9yZW5kZXJidWZmZXJCaW5kaW5n
OworICAgIGNsYXNzIFRleHR1cmVVbml0U3RhdGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmVm
UHRyPFdlYkdMVGV4dHVyZT4gbV90ZXh0dXJlMkRCaW5kaW5nOworICAgICAgICBSZWZQdHI8V2Vi
R0xUZXh0dXJlPiBtX3RleHR1cmVDdWJlTWFwQmluZGluZzsKKyAgICB9OworICAgIFZlY3RvcjxU
ZXh0dXJlVW5pdFN0YXRlPiBtX3RleHR1cmVVbml0czsKKyAgICB1bnNpZ25lZCBsb25nIG1fYWN0
aXZlVGV4dHVyZVVuaXQ7CiAKLSAgICAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRh
cmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVp
Z2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25l
ZCB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYpOwotICAgICAg
ICB2b2lkIHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5z
aWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgSW1hZ2VEYXRhKiBwaXhlbHMsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdl
dCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUs
IEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQg
dGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4
b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJn
ZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBl
LCBIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICAvLyBP
YnNvbGV0ZSBlbnRyeSBwb2ludHMgLS0gdG8gYmUgcmVtb3ZlZCBzaG9ydGx5LiAoRklYTUUpCi0g
ICAgICAgIHZvaWQgdGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVs
LCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LCBJbWFnZURhdGEqIHBpeGVscywg
RXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFy
Z2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwg
SW1hZ2VEYXRhKiBwaXhlbHMsIGJvb2wgZmxpcFksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAg
dm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2ln
bmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsIEltYWdlRGF0YSogcGl4ZWxzLCBib29sIGZs
aXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9p
ZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVk
IHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQs
IHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LCBIVE1M
SW1hZ2VFbGVtZW50KiBpbWFnZSwgYm9vbCBmbGlwWSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAg
ICB2b2lkIHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5z
aWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgSFRNTEltYWdlRWxlbWVudCogaW1hZ2Us
IGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
ICAgICB2b2lkIHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwg
dW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgSFRNTENhbnZhc0VsZW1lbnQqIGNh
bnZhcywgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHRleFN1YkltYWdlMkQodW5zaWdu
ZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9m
ZnNldCwgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcywgYm9vbCBmbGlwWSwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgICAgICB2b2lkIHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25l
ZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgSFRNTENhbnZhc0Vs
ZW1lbnQqIGNhbnZhcywgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgICAgIHZvaWQgdGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVu
c2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LCBIVE1MVmlk
ZW9FbGVtZW50KiB2aWRlbywgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHRleFN1Yklt
YWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwg
dW5zaWduZWQgeW9mZnNldCwgSFRNTFZpZGVvRWxlbWVudCogdmlkZW8sIGJvb2wgZmxpcFksIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdl
dCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsIEhU
TUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgICAgICB2b2lkIHVuaWZvcm0xZihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZsb2F0IHgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAg
ICAgdm9pZCB1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
RmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTFm
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6
ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHVuaWZvcm0xaShjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCB4LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAg
IHZvaWQgdW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIElu
dDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCB1bmlmb3JtMWl2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHVuaWZvcm0yZihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICAgICAgdm9pZCB1bmlmb3JtMmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdW5pZm9y
bTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQg
c2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHVuaWZvcm0yaShjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCB4LCBpbnQgeSwgRXhjZXB0aW9uQ29kZSYp
OwotICAgICAgICB2b2lkIHVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBJbnQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdW5p
Zm9ybTJpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCogdiwgaW50
IHNpemUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCB1bmlmb3JtM2YoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgICAgICB2b2lkIHVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBmbG9hdCogdiwgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCB1
bmlmb3JtM2koY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQgeCwgaW50
IHksIGludCB6LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTNpdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkqIHYsIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICAgICAgdm9pZCB1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAg
ICB2b2lkIHVuaWZvcm00Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAg
ICAgdm9pZCB1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
RmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTRm
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6
ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHVuaWZvcm00aShjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGludCB4LCBpbnQgeSwgaW50IHosIGludCB3LCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAg
ICAgdm9pZCB1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
aW50KiB2LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHVuaWZvcm1N
YXRyaXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5z
cG9zZSwgRmxvYXQzMkFycmF5KiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lk
IHVuaWZvcm1NYXRyaXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBi
b29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5KiB2YWx1ZSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6
ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgRmxvYXQzMkFy
cmF5KiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXg0
ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwg
ZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgICAgIHZvaWQg
dXNlUHJvZ3JhbShXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQg
dmFsaWRhdGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSosIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgICAg
ICB2b2lkIHZlcnRleEF0dHJpYjFmKHVuc2lnbmVkIGxvbmcgaW5kZXgsIGZsb2F0IHgpOwotICAg
ICAgICB2b2lkIHZlcnRleEF0dHJpYjFmdih1bnNpZ25lZCBsb25nIGluZGV4LCBGbG9hdDMyQXJy
YXkqIHZhbHVlcyk7Ci0gICAgICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcg
aW5kZXgsIGZsb2F0KiB2YWx1ZXMsIGludCBzaXplKTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIyZih1bnNpZ25lZCBsb25nIGluZGV4LCBmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICAgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBpbmRleCwgRmxvYXQzMkFycmF5KiB2YWx1
ZXMpOwotICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZGV4LCBm
bG9hdCogdmFsdWVzLCBpbnQgc2l6ZSk7Ci0gICAgICAgIHZvaWQgdmVydGV4QXR0cmliM2YodW5z
aWduZWQgbG9uZyBpbmRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0gICAgICAgIHZv
aWQgdmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIEZsb2F0MzJBcnJheSogdmFs
dWVzKTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9uZyBpbmRleCwg
ZmxvYXQqIHZhbHVlcywgaW50IHNpemUpOwotICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVu
c2lnbmVkIGxvbmcgaW5kZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpOwot
ICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25nIGluZGV4LCBGbG9hdDMy
QXJyYXkqIHZhbHVlcyk7Ci0gICAgICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxv
bmcgaW5kZXgsIGZsb2F0KiB2YWx1ZXMsIGludCBzaXplKTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWJQb2ludGVyKHVuc2lnbmVkIGxvbmcgaW5kZXgsIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9u
ZyB0eXBlLCBib29sIG5vcm1hbGl6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb25nIHN0cmlkZSwgbG9uZyBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgICAgICB2
b2lkIHZpZXdwb3J0KGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCk7Ci0KLSAgICAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogZ3Jh
cGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KLSAgICAK
LSAgICAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0KLSAgICAgICAg
Ly8gUmV0dXJuIHZhbHVlIHRydWUgaW5kaWNhdGVzIGNhbnZhcyBpcyB1cGRhdGVkIGR1cmluZyB0
aGUgY2FsbCwKLSAgICAgICAgLy8gZmFsc2UgaW5kaWNhdGVzIG5vIHVwZGF0ZXMuCi0gICAgICAg
IGJvb2wgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKLQotICAgICAgICAvLyBIZWxw
ZXJzIGZvciBub3RpZmljYXRpb24gYWJvdXQgcGFpbnQgZXZlbnRzLgotICAgICAgICB2b2lkIGJl
Z2luUGFpbnQoKTsKLSAgICAgICAgdm9pZCBlbmRQYWludCgpOwotICAgICAgICAKLSAgICAgICAg
dm9pZCByZW1vdmVPYmplY3QoV2ViR0xPYmplY3QqKTsKLSAgICAgICAgCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgZnJpZW5kIGNsYXNzIFdlYkdMT2JqZWN0OwotCi0gICAgICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCosIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
M0Q+KTsKLQotICAgICAgICB2b2lkIGFkZE9iamVjdChXZWJHTE9iamVjdCopOwotICAgICAgICB2
b2lkIGRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMoKTsKLSAgICAgICAgV2ViR0xUZXh0dXJlKiBm
aW5kVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICAgICAgV2ViR0xSZW5kZXJidWZmZXIq
IGZpbmRSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgICAgIFdlYkdMQnVmZmVy
KiBmaW5kQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOwotICAgICAgICBXZWJHTFNoYWRlciogZmlu
ZFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX2Js
YWNrVGV4dHVyZTJEOworICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fYmxhY2tUZXh0dXJlQ3Vi
ZU1hcDsKIAotICAgICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwotICAgICAgICB2b2lk
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChib29sIGNoYW5nZWQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChjaGFuZ2VkKQotICAgICAgICAgICAgICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgp
OwotICAgICAgICB9CisgICAgaW50IG1fbWF4VGV4dHVyZVNpemU7CisgICAgaW50IG1fbWF4Q3Vi
ZU1hcFRleHR1cmVTaXplOworICAgIGludCBtX21heFRleHR1cmVMZXZlbDsKKyAgICBpbnQgbV9t
YXhDdWJlTWFwVGV4dHVyZUxldmVsOworCisgICAgaW50IG1fcGFja0FsaWdubWVudDsKKyAgICBp
bnQgbV91bnBhY2tBbGlnbm1lbnQ7CisgICAgdW5zaWduZWQgbG9uZyBtX2ltcGxlbWVudGF0aW9u
Q29sb3JSZWFkRm9ybWF0OworICAgIHVuc2lnbmVkIGxvbmcgbV9pbXBsZW1lbnRhdGlvbkNvbG9y
UmVhZFR5cGU7CisgICAgYm9vbCBtX3VucGFja0ZsaXBZOworICAgIGJvb2wgbV91bnBhY2tQcmVt
dWx0aXBseUFscGhhOworCisgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhl
cnMKKyAgICBXZWJHTEdldEluZm8gZ2V0Qm9vbGVhblBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBu
YW1lKTsKKyAgICBXZWJHTEdldEluZm8gZ2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKHVuc2lnbmVk
IGxvbmcgcG5hbWUpOworICAgIFdlYkdMR2V0SW5mbyBnZXRGbG9hdFBhcmFtZXRlcih1bnNpZ25l
ZCBsb25nIHBuYW1lKTsKKyAgICBXZWJHTEdldEluZm8gZ2V0SW50UGFyYW1ldGVyKHVuc2lnbmVk
IGxvbmcgcG5hbWUpOworICAgIFdlYkdMR2V0SW5mbyBnZXRMb25nUGFyYW1ldGVyKHVuc2lnbmVk
IGxvbmcgcG5hbWUpOworICAgIFdlYkdMR2V0SW5mbyBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIo
dW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgV2ViR0xHZXRJbmZvIGdldFdlYkdMRmxvYXRBcnJh
eVBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICBXZWJHTEdldEluZm8gZ2V0V2Vi
R0xJbnRBcnJheVBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKIAotICAgICAgICBib29s
IGlzR0xFUzJDb21wbGlhbnQoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIEJhc2ljIHZhbGlkYXRp
b24gb2YgY291bnQgYW5kIG9mZnNldCBhZ2FpbnN0IG51bWJlciBvZiBlbGVtZW50cyBpbiBlbGVt
ZW50IGFycmF5IGJ1ZmZlcgotICAgICAgICBib29sIHZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSh1
bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHR5cGUsIGxvbmcgb2Zmc2V0KTsKLQot
ICAgICAgICAvLyBDb25zZXJ2YXRpdmUgYnV0IHF1aWNrIGluZGV4IHZhbGlkYXRpb24KLSAgICAg
ICAgYm9vbCB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUodW5zaWduZWQgbG9uZyB0eXBl
LCBsb25nJiBudW1FbGVtZW50c1JlcXVpcmVkKTsKLQotICAgICAgICAvLyBQcmVjaXNlIGJ1dCBz
bG93IGluZGV4IHZhbGlkYXRpb24gLS0gb25seSBkb25lIGlmIGNvbnNlcnZhdGl2ZSBjaGVja3Mg
ZmFpbAotICAgICAgICBib29sIHZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2UodW5zaWduZWQgbG9u
ZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIG9mZnNldCwgbG9uZyYgbnVtRWxlbWVu
dHNSZXF1aXJlZCk7Ci0gICAgICAgIGJvb2wgdmFsaWRhdGVSZW5kZXJpbmdTdGF0ZShsb25nIG51
bUVsZW1lbnRzKTsKLQotICAgICAgICBib29sIHZhbGlkYXRlV2ViR0xPYmplY3QoV2ViR0xPYmpl
Y3QqIG9iamVjdCk7Ci0KLSAgICAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRl
eHQ7Ci0gICAgICAgIGJvb2wgbV9uZWVkc1VwZGF0ZTsKLSAgICAgICAgYm9vbCBtX21hcmtlZENh
bnZhc0RpcnR5OwotICAgICAgICAvLyBGSVhNRTogSSB0aGluayB0aGlzIGlzIGJyb2tlbiAtLSBp
dCBkb2VzIG5vdCBpbmNyZW1lbnQgYW55Ci0gICAgICAgIC8vIHJlZmVyZW5jZSBjb3VudHMsIHNv
IG1heSByZWZlciB0byBkZXN0cm95ZWQgb2JqZWN0cy4KLSAgICAgICAgSGFzaFNldDxSZWZQdHI8
V2ViR0xPYmplY3Q+ID4gbV9jYW52YXNPYmplY3RzOwotICAgICAgICAKLSAgICAgICAgLy8gTGlz
dCBvZiBib3VuZCBWQk8ncy4gVXNlZCB0byBtYWludGFpbiBpbmZvIGFib3V0IHNpemVzIGZvciBB
UlJBWV9CVUZGRVIgYW5kIHN0b3JlZCB2YWx1ZXMgZm9yIEVMRU1FTlRfQVJSQVlfQlVGRkVSCi0g
ICAgICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9ib3VuZEFycmF5QnVmZmVyOwotICAgICAgICBS
ZWZQdHI8V2ViR0xCdWZmZXI+IG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXI7Ci0gICAgCi0gICAg
ICAgIC8vIENhY2hlZCB2YWx1ZXMgZm9yIHZlcnRleCBhdHRyaWIgcmFuZ2UgY2hlY2tzCi0gICAg
ICAgIGNsYXNzIFZlcnRleEF0dHJpYlN0YXRlIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAg
ICAgVmVydGV4QXR0cmliU3RhdGUoKQotICAgICAgICAgICAgICAgIDogZW5hYmxlZChmYWxzZSkK
LSAgICAgICAgICAgICAgICAsIGJ5dGVzUGVyRWxlbWVudCgwKQotICAgICAgICAgICAgICAgICwg
c2l6ZSg0KQotICAgICAgICAgICAgICAgICwgdHlwZShHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQp
Ci0gICAgICAgICAgICAgICAgLCBub3JtYWxpemVkKGZhbHNlKQotICAgICAgICAgICAgICAgICwg
c3RyaWRlKDE2KQotICAgICAgICAgICAgICAgICwgb3JpZ2luYWxTdHJpZGUoMCkKLSAgICAgICAg
ICAgICAgICAsIG9mZnNldCgwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGluaXRW
YWx1ZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2b2lkIGluaXRWYWx1ZSgpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFsdWVbMF0gPSAwLjBmOwotICAgICAgICAg
ICAgICAgIHZhbHVlWzFdID0gMC4wZjsKLSAgICAgICAgICAgICAgICB2YWx1ZVsyXSA9IDAuMGY7
Ci0gICAgICAgICAgICAgICAgdmFsdWVbM10gPSAxLjBmOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBib29sIGVuYWJsZWQ7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IGJ1
ZmZlckJpbmRpbmc7Ci0gICAgICAgICAgICBsb25nIGJ5dGVzUGVyRWxlbWVudDsKLSAgICAgICAg
ICAgIGxvbmcgc2l6ZTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdHlwZTsKLSAgICAgICAg
ICAgIGJvb2wgbm9ybWFsaXplZDsKLSAgICAgICAgICAgIGxvbmcgc3RyaWRlOwotICAgICAgICAg
ICAgbG9uZyBvcmlnaW5hbFN0cmlkZTsKLSAgICAgICAgICAgIGxvbmcgb2Zmc2V0OwotICAgICAg
ICAgICAgZmxvYXQgdmFsdWVbNF07Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICBWZWN0
b3I8VmVydGV4QXR0cmliU3RhdGU+IG1fdmVydGV4QXR0cmliU3RhdGU7Ci0gICAgICAgIHVuc2ln
bmVkIG1fbWF4VmVydGV4QXR0cmliczsKLSAgICAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBtX3Zl
cnRleEF0dHJpYjBCdWZmZXI7Ci0gICAgICAgIGxvbmcgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyU2l6
ZTsKLSAgICAgICAgZmxvYXQgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbNF07Ci0KLSAgICAg
ICAgUmVmUHRyPFdlYkdMUHJvZ3JhbT4gbV9jdXJyZW50UHJvZ3JhbTsKLSAgICAgICAgUmVmUHRy
PFdlYkdMRnJhbWVidWZmZXI+IG1fZnJhbWVidWZmZXJCaW5kaW5nOwotICAgICAgICBSZWZQdHI8
V2ViR0xSZW5kZXJidWZmZXI+IG1fcmVuZGVyYnVmZmVyQmluZGluZzsKLSAgICAgICAgY2xhc3Mg
VGV4dHVyZVVuaXRTdGF0ZSB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIFJlZlB0cjxX
ZWJHTFRleHR1cmU+IG1fdGV4dHVyZTJEQmluZGluZzsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJH
TFRleHR1cmU+IG1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nOwotICAgICAgICB9OwotICAgICAgICBW
ZWN0b3I8VGV4dHVyZVVuaXRTdGF0ZT4gbV90ZXh0dXJlVW5pdHM7Ci0gICAgICAgIHVuc2lnbmVk
IGxvbmcgbV9hY3RpdmVUZXh0dXJlVW5pdDsKLQotICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJl
PiBtX2JsYWNrVGV4dHVyZTJEOwotICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX2JsYWNr
VGV4dHVyZUN1YmVNYXA7Ci0KLSAgICAgICAgaW50IG1fbWF4VGV4dHVyZVNpemU7Ci0gICAgICAg
IGludCBtX21heEN1YmVNYXBUZXh0dXJlU2l6ZTsKLSAgICAgICAgaW50IG1fbWF4VGV4dHVyZUxl
dmVsOwotICAgICAgICBpbnQgbV9tYXhDdWJlTWFwVGV4dHVyZUxldmVsOwotCi0gICAgICAgIGlu
dCBtX3BhY2tBbGlnbm1lbnQ7Ci0gICAgICAgIGludCBtX3VucGFja0FsaWdubWVudDsKLSAgICAg
ICAgdW5zaWduZWQgbG9uZyBtX2ltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0OwotICAgICAg
ICB1bnNpZ25lZCBsb25nIG1faW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBlOwotICAgICAgICBi
b29sIG1fdW5wYWNrRmxpcFk7Ci0gICAgICAgIGJvb2wgbV91bnBhY2tQcmVtdWx0aXBseUFscGhh
OwotCi0gICAgICAgIC8vIEhlbHBlcnMgZm9yIGdldFBhcmFtZXRlciBhbmQgb3RoZXJzCi0gICAg
ICAgIFdlYkdMR2V0SW5mbyBnZXRCb29sZWFuUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUp
OwotICAgICAgICBXZWJHTEdldEluZm8gZ2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEdldEluZm8gZ2V0RmxvYXRQYXJhbWV0ZXIodW5z
aWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMR2V0SW5mbyBnZXRJbnRQYXJhbWV0ZXIo
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMR2V0SW5mbyBnZXRMb25nUGFyYW1l
dGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEdldEluZm8gZ2V0VW5zaWdu
ZWRMb25nUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEdldElu
Zm8gZ2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAg
ICAgICBXZWJHTEdldEluZm8gZ2V0V2ViR0xJbnRBcnJheVBhcmFtZXRlcih1bnNpZ25lZCBsb25n
IHBuYW1lKTsKLQotICAgICAgICB2b2lkIHRleEltYWdlMkRCYXNlKHVuc2lnbmVkIHRhcmdldCwg
dW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJv
cmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2ln
bmVkIHR5cGUsIHZvaWQqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHRl
eEltYWdlMkRJbXBsKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGlu
dGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1h
dCwgdW5zaWduZWQgdHlwZSwgSW1hZ2UqIGltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgICAgICB2b2lkIHRleFN1YkltYWdlMkRCYXNlKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQg
bGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUs
IHZvaWQqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHRleFN1YkltYWdl
MkRJbXBsKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQs
IHVuc2lnbmVkIHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEltYWdlKiBpbWFnZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBFeGNlcHRp
b25Db2RlJik7Ci0KLSAgICAgICAgdm9pZCBoYW5kbGVOUE9UVGV4dHVyZXMoYm9vbCBwcmVwYXJl
VG9EcmF3KTsKLQotICAgICAgICB2b2lkIGNyZWF0ZUZhbGxiYWNrQmxhY2tUZXh0dXJlczF4MSgp
OwotCi0gICAgICAgIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgY29weVRleHtTdWJ9SW1hZ2UsIGNo
ZWNrIHdoZXRoZXIgdGhlIGludGVybmFsZm9ybWF0Ci0gICAgICAgIC8vIGFuZCB0aGUgY29sb3Ig
YnVmZmVyIGZvcm1hdCBvZiB0aGUgY3VycmVudCBib3VuZCBmcmFtZWJ1ZmZlciBjb21iaW5hdGlv
bgotICAgICAgICAvLyBpcyB2YWxpZC4KLSAgICAgICAgYm9vbCBpc1RleEludGVybmFsRm9ybWF0
Q29sb3JCdWZmZXJDb21iaW5hdGlvblZhbGlkKHVuc2lnbmVkIGxvbmcgdGV4SW50ZXJuYWxGb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGNvbG9yQnVmZmVyRm9ybWF0KTsKLQotICAgICAgICAvLyBI
ZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBjdXJyZW50IGJvdW5kIHRleHR1cmUuCi0gICAgICAg
IFdlYkdMVGV4dHVyZSogZ2V0VGV4dHVyZUJpbmRpbmcodW5zaWduZWQgbG9uZyB0YXJnZXQpOwot
Ci0gICAgICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpbnB1dCBmb3JtYXQvdHlwZSBm
b3IgZnVuY3Rpb25zIHtjb3B5fVRleHtTdWJ9SW1hZ2UuCi0gICAgICAgIC8vIEdlbmVyYXRlcyBH
TCBlcnJvciBhbmQgcmV0dXJucyBmYWxzZSBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgotICAg
ICAgICBib29sIHZhbGlkYXRlVGV4RnVuY0Zvcm1hdEFuZFR5cGUodW5zaWduZWQgbG9uZyBmb3Jt
YXQsIHVuc2lnbmVkIGxvbmcgdHlwZSk7Ci0KLSAgICAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRv
IGNoZWNrIGlucHV0IHBhcmFtZXRlcnMgZm9yIGZ1bmN0aW9ucyB7Y29weX1UZXh7U3VifUltYWdl
LgotICAgICAgICAvLyBHZW5lcmF0ZXMgR0wgZXJyb3IgYW5kIHJldHVybnMgZmFsc2UgaWYgcGFy
YW1ldGVycyBhcmUgaW52YWxpZC4KLSAgICAgICAgYm9vbCB2YWxpZGF0ZVRleEZ1bmNQYXJhbWV0
ZXJzKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIGxldmVsLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0
LCBsb25nIGJvcmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgZm9ybWF0LCB1bnNpZ25lZCBsb25nIHR5cGUpOwotCi0gICAgICAgIC8vIEhl
bHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGF0IHRoZSBnaXZlbiBBcnJheUJ1ZmZlclZpZXcK
LSAgICAgICAgLy8gaXMgb2YgdGhlIGNvcnJlY3QgdHlwZSBhbmQgY29udGFpbnMgZW5vdWdoIGRh
dGEgZm9yIHRoZSB0ZXhJbWFnZSBjYWxsLgotICAgICAgICAvLyBHZW5lcmF0ZXMgR0wgZXJyb3Ig
YW5kIHJldHVybnMgZmFsc2UgaWYgcGFyYW1ldGVycyBhcmUgaW52YWxpZC4KLSAgICAgICAgYm9v
bCB2YWxpZGF0ZVRleEZ1bmNEYXRhKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmb3JtYXQsIHVuc2lnbmVkIGxv
bmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QnVmZmVyVmll
dyogcGl4ZWxzKTsKLQotICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgbW9k
ZSBmb3IgZHJhd3tBcnJheXMvRWxlbWVudHN9LgotICAgICAgICBib29sIHZhbGlkYXRlRHJhd01v
ZGUodW5zaWduZWQgbG9uZyk7Ci0KLSAgICAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB0ZXhQ
YXJhbWV0ZXJmIGFuZCB0ZXhQYXJhbWV0ZXJpLgotICAgICAgICB2b2lkIHRleFBhcmFtZXRlcih1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQgcGFyYW1pLCBp
bnQgcGFyYW1mLCBib29sIGlzRmxvYXQpOwotCi0gICAgICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0
byBwcmludCB3YXJuaW5ncyB0byBjb25zb2xlLiBDdXJyZW50bHkKLSAgICAgICAgLy8gdXNlZCBv
bmx5IHRvIHdhcm4gYWJvdXQgdXNlIG9mIG9ic29sZXRlIGZ1bmN0aW9ucy4KLSAgICAgICAgdm9p
ZCBwcmludFdhcm5pbmdUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLQotICAgICAg
ICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgaW5wdXQgcGFyYW1ldGVycyBmb3IgZnJh
bWVidWZmZXIgZnVuY3Rpb25zLgotICAgICAgICAvLyBHZW5lcmF0ZSBHTCBlcnJvciBpZiBwYXJh
bWV0ZXJzIGFyZSBpbGxlZ2FsLgotICAgICAgICBib29sIHZhbGlkYXRlRnJhbWVidWZmZXJGdW5j
UGFyYW1ldGVycyh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50
KTsKLQotICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYmxlbmQgZXF1YXRp
b24gbW9kZS4KLSAgICAgICAgYm9vbCB2YWxpZGF0ZUJsZW5kRXF1YXRpb24odW5zaWduZWQgbG9u
Zyk7Ci0KLSAgICAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgR0wgY2FwYWJp
bGl0eS4KLSAgICAgICAgYm9vbCB2YWxpZGF0ZUNhcGFiaWxpdHkodW5zaWduZWQgbG9uZyk7Ci0K
LSAgICAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGlucHV0IHBhcmFtZXRlcnMg
Zm9yIHVuaWZvcm0gZnVuY3Rpb25zLgotICAgICAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFt
ZXRlcnMoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkq
IHYsIGludCBtb2QpOwotICAgICAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5KiB2LCBpbnQgbW9k
KTsKLSAgICAgICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgdm9pZCogdiwgaW50IHNpemUsIGludCBtb2QpOwotICAg
ICAgICBib29sIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5KiB2LCBp
bnQgbW9kKTsKLSAgICAgICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIHZvaWQq
IHYsIGludCBzaXplLCBpbnQgbW9kKTsKLQotICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8g
dmFsaWRhdGUgcGFyYW1ldGVycyBmb3IgYnVmZmVyRGF0YS4KLSAgICAgICAgLy8gUmV0dXJuIHRo
ZSBjdXJyZW50IGJvdW5kIGJ1ZmZlciB0byB0YXJnZXQsIG9yIDAgaWYgcGFyYW1ldGVycyBhcmUg
aW52YWxpZC4KLSAgICAgICAgV2ViR0xCdWZmZXIqIHZhbGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRl
cnModW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpOwotCi0gICAgICAg
IC8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIHZlcnRleEF0dHJpYk5me3Z9LgotICAgICAgICB2b2lk
IHZlcnRleEF0dHJpYmZJbXBsKHVuc2lnbmVkIGxvbmcgaW5kZXgsIGludCBleHBlY3RlZFNpemUs
IGZsb2F0IHYwLCBmbG9hdCB2MSwgZmxvYXQgdjIsIGZsb2F0IHYzKTsKLSAgICAgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJmdkltcGwodW5zaWduZWQgbG9uZyBpbmRleCwgRmxvYXQzMkFycmF5KiB2LCBp
bnQgZXhwZWN0ZWRTaXplKTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJmdkltcGwodW5zaWdu
ZWQgbG9uZyBpbmRleCwgZmxvYXQqIHYsIGludCBzaXplLCBpbnQgZXhwZWN0ZWRTaXplKTsKLQot
ICAgICAgICAvLyBIZWxwZXJzIGZvciBzaW11bGF0aW5nIHZlcnRleEF0dHJpYjAKLSAgICAgICAg
dm9pZCBpbml0VmVydGV4QXR0cmliMCgpOwotICAgICAgICBib29sIHNpbXVsYXRlVmVydGV4QXR0
cmliMChsb25nIG51bVZlcnRleCk7Ci0gICAgICAgIHZvaWQgcmVzdG9yZVN0YXRlc0FmdGVyVmVy
dGV4QXR0cmliMFNpbXVsYXRpb24oKTsKKyAgICB2b2lkIHRleEltYWdlMkRCYXNlKHVuc2lnbmVk
IHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWdu
ZWQgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1bnNp
Z25lZCB0eXBlLCB2b2lkKiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHRleElt
YWdlMkRJbXBsKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVy
bmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1bnNp
Z25lZCB0eXBlLCBJbWFnZSogaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZs
aXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHRl
eFN1YkltYWdlMkRCYXNlKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVk
IHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkRJbXBsKHVuc2lnbmVkIHRhcmdldCwgdW5z
aWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UsIGJvb2wgZmxpcFksIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgdm9pZCBoYW5kbGVOUE9UVGV4
dHVyZXMoYm9vbCBwcmVwYXJlVG9EcmF3KTsKKworICAgIHZvaWQgY3JlYXRlRmFsbGJhY2tCbGFj
a1RleHR1cmVzMXgxKCk7CisKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGNvcHlUZXh7U3Vi
fUltYWdlLCBjaGVjayB3aGV0aGVyIHRoZSBpbnRlcm5hbGZvcm1hdAorICAgIC8vIGFuZCB0aGUg
Y29sb3IgYnVmZmVyIGZvcm1hdCBvZiB0aGUgY3VycmVudCBib3VuZCBmcmFtZWJ1ZmZlciBjb21i
aW5hdGlvbgorICAgIC8vIGlzIHZhbGlkLgorICAgIGJvb2wgaXNUZXhJbnRlcm5hbEZvcm1hdENv
bG9yQnVmZmVyQ29tYmluYXRpb25WYWxpZCh1bnNpZ25lZCBsb25nIHRleEludGVybmFsRm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIGNvbG9yQnVmZmVyRm9ybWF0KTsKKworICAgIC8vIEhlbHBlciBmdW5j
dGlvbiB0byBnZXQgdGhlIGN1cnJlbnQgYm91bmQgdGV4dHVyZS4KKyAgICBXZWJHTFRleHR1cmUq
IGdldFRleHR1cmVCaW5kaW5nKHVuc2lnbmVkIGxvbmcgdGFyZ2V0KTsKKworICAgIC8vIEhlbHBl
ciBmdW5jdGlvbiB0byBjaGVjayBpbnB1dCBmb3JtYXQvdHlwZSBmb3IgZnVuY3Rpb25zIHtjb3B5
fVRleHtTdWJ9SW1hZ2UuCisgICAgLy8gR2VuZXJhdGVzIEdMIGVycm9yIGFuZCByZXR1cm5zIGZh
bHNlIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQuCisgICAgYm9vbCB2YWxpZGF0ZVRleEZ1bmNG
b3JtYXRBbmRUeXBlKHVuc2lnbmVkIGxvbmcgZm9ybWF0LCB1bnNpZ25lZCBsb25nIHR5cGUpOwor
CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNoZWNrIGlucHV0IHBhcmFtZXRlcnMgZm9yIGZ1
bmN0aW9ucyB7Y29weX1UZXh7U3VifUltYWdlLgorICAgIC8vIEdlbmVyYXRlcyBHTCBlcnJvciBh
bmQgcmV0dXJucyBmYWxzZSBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgorICAgIGJvb2wgdmFs
aWRhdGVUZXhGdW5jUGFyYW1ldGVycyh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBsZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB3aWR0aCwg
bG9uZyBoZWlnaHQsIGxvbmcgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGZvcm1hdCwgdW5zaWduZWQgbG9uZyB0eXBlKTsKKworICAgIC8v
IEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGF0IHRoZSBnaXZlbiBBcnJheUJ1ZmZlclZp
ZXcKKyAgICAvLyBpcyBvZiB0aGUgY29ycmVjdCB0eXBlIGFuZCBjb250YWlucyBlbm91Z2ggZGF0
YSBmb3IgdGhlIHRleEltYWdlIGNhbGwuCisgICAgLy8gR2VuZXJhdGVzIEdMIGVycm9yIGFuZCBy
ZXR1cm5zIGZhbHNlIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQuCisgICAgYm9vbCB2YWxpZGF0
ZVRleEZ1bmNEYXRhKGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZvcm1hdCwgdW5zaWduZWQgbG9uZyB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscyk7CisKKyAg
ICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgbW9kZSBmb3IgZHJhd3tBcnJheXMvRWxl
bWVudHN9LgorICAgIGJvb2wgdmFsaWRhdGVEcmF3TW9kZSh1bnNpZ25lZCBsb25nKTsKKworICAg
IC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgdGV4UGFyYW1ldGVyZiBhbmQgdGV4UGFyYW1ldGVyaS4K
KyAgICB2b2lkIHRleFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgZmxvYXQgcGFyYW1pLCBpbnQgcGFyYW1mLCBib29sIGlzRmxvYXQpOworCisgICAg
Ly8gSGVscGVyIGZ1bmN0aW9uIHRvIHByaW50IHdhcm5pbmdzIHRvIGNvbnNvbGUuIEN1cnJlbnRs
eQorICAgIC8vIHVzZWQgb25seSB0byB3YXJuIGFib3V0IHVzZSBvZiBvYnNvbGV0ZSBmdW5jdGlv
bnMuCisgICAgdm9pZCBwcmludFdhcm5pbmdUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKKworICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJz
IGZvciBmcmFtZWJ1ZmZlciBmdW5jdGlvbnMuCisgICAgLy8gR2VuZXJhdGUgR0wgZXJyb3IgaWYg
cGFyYW1ldGVycyBhcmUgaWxsZWdhbC4KKyAgICBib29sIHZhbGlkYXRlRnJhbWVidWZmZXJGdW5j
UGFyYW1ldGVycyh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50
KTsKKworICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBibGVuZCBlcXVhdGlvbiBt
b2RlLgorICAgIGJvb2wgdmFsaWRhdGVCbGVuZEVxdWF0aW9uKHVuc2lnbmVkIGxvbmcpOworCisg
ICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgR0wgY2FwYWJpbGl0eS4KKyAgICBi
b29sIHZhbGlkYXRlQ2FwYWJpbGl0eSh1bnNpZ25lZCBsb25nKTsKKworICAgIC8vIEhlbHBlciBm
dW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciB1bmlmb3JtIGZ1bmN0aW9u
cy4KKyAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkqIHYsIGludCBtb2QpOworICAgIGJvb2wg
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEludDMyQXJyYXkqIHYsIGludCBtb2QpOworICAgIGJvb2wgdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycyhjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIHZvaWQqIHYs
IGludCBzaXplLCBpbnQgbW9kKTsKKyAgICBib29sIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnMoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgRmxvYXQzMkFycmF5KiB2LCBpbnQgbW9kKTsKKyAgICBib29sIHZhbGlkYXRlVW5pZm9ybU1h
dHJpeFBhcmFtZXRlcnMoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBib29s
IHRyYW5zcG9zZSwgdm9pZCogdiwgaW50IHNpemUsIGludCBtb2QpOworCisgICAgLy8gSGVscGVy
IGZ1bmN0aW9uIHRvIHZhbGlkYXRlIHBhcmFtZXRlcnMgZm9yIGJ1ZmZlckRhdGEuCisgICAgLy8g
UmV0dXJuIHRoZSBjdXJyZW50IGJvdW5kIGJ1ZmZlciB0byB0YXJnZXQsIG9yIDAgaWYgcGFyYW1l
dGVycyBhcmUgaW52YWxpZC4KKyAgICBXZWJHTEJ1ZmZlciogdmFsaWRhdGVCdWZmZXJEYXRhUGFy
YW1ldGVycyh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyB1c2FnZSk7CisKKyAg
ICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciB2ZXJ0ZXhBdHRyaWJOZnt2fS4KKyAgICB2b2lkIHZl
cnRleEF0dHJpYmZJbXBsKHVuc2lnbmVkIGxvbmcgaW5kZXgsIGludCBleHBlY3RlZFNpemUsIGZs
b2F0IHYwLCBmbG9hdCB2MSwgZmxvYXQgdjIsIGZsb2F0IHYzKTsKKyAgICB2b2lkIHZlcnRleEF0
dHJpYmZ2SW1wbCh1bnNpZ25lZCBsb25nIGluZGV4LCBGbG9hdDMyQXJyYXkqIHYsIGludCBleHBl
Y3RlZFNpemUpOworICAgIHZvaWQgdmVydGV4QXR0cmliZnZJbXBsKHVuc2lnbmVkIGxvbmcgaW5k
ZXgsIGZsb2F0KiB2LCBpbnQgc2l6ZSwgaW50IGV4cGVjdGVkU2l6ZSk7CisKKyAgICAvLyBIZWxw
ZXJzIGZvciBzaW11bGF0aW5nIHZlcnRleEF0dHJpYjAKKyAgICB2b2lkIGluaXRWZXJ0ZXhBdHRy
aWIwKCk7CisgICAgYm9vbCBzaW11bGF0ZVZlcnRleEF0dHJpYjAobG9uZyBudW1WZXJ0ZXgpOwor
ICAgIHZvaWQgcmVzdG9yZVN0YXRlc0FmdGVyVmVydGV4QXR0cmliMFNpbXVsYXRpb24oKTsKIAot
ICAgICAgICBmcmllbmQgY2xhc3MgV2ViR0xTdGF0ZVJlc3RvcmVyOwotICAgIH07CisgICAgZnJp
ZW5kIGNsYXNzIFdlYkdMU3RhdGVSZXN0b3JlcjsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAJKHJldmlzaW9uIDY0Njg1
KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoM0RfQ0FOVkFTKQogCiAjaW5jbHVkZSAiV2Vi
R0xTaGFkZXIuaCIKKwogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00NCw3ICs0NSw3IEBAIFdlYkdMU2hhZGVyOjpXZWJHTFNoYWRl
cihXZWJHTFJlbmRlcmluZ0MKICAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRl
eHQzRCgpLT5jcmVhdGVTaGFkZXIodHlwZSkpOwogfQogCi12b2lkIFdlYkdMU2hhZGVyOjpfZGVs
ZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFNoYWRlcjo6ZGVs
ZXRlT2JqZWN0SW1wbChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCkt
PmdyYXBoaWNzQ29udGV4dDNEKCktPmRlbGV0ZVNoYWRlcihvYmplY3QpOwogfQpJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xTaGFkZXIuaAkocmV2aXNpb24gNjQ2ODUpCisrKyBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU2hhZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDI1ICszMiwyNSBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAK
LSAgICBjbGFzcyBXZWJHTFNoYWRlciA6IHB1YmxpYyBXZWJHTE9iamVjdCB7Ci0gICAgcHVibGlj
OgotICAgICAgICB2aXJ0dWFsIH5XZWJHTFNoYWRlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KLSAg
ICAgICAgCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMU2hhZGVyPiBjcmVhdGUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0KiwgR3JhcGhpY3NDb250ZXh0M0Q6OldlYkdMRW51bVR5cGUpOwog
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpXZWJHTEVudW1UeXBlIGdldFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KK2NsYXNzIFdlYkdMU2hhZGVyIDogcHVibGljIFdlYkdMT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHTFNoYWRlcigpIHsgZGVsZXRlT2JqZWN0
KCk7IH0KIAotICAgIHByaXZhdGU6Ci0gICAgICAgIFdlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5n
Q29udGV4dCosIEdyYXBoaWNzQ29udGV4dDNEOjpXZWJHTEVudW1UeXBlKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJHTFNoYWRlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIEdy
YXBoaWNzQ29udGV4dDNEOjpXZWJHTEVudW1UeXBlKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQg
X2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6
V2ViR0xFbnVtVHlwZSBnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICAg
ICAgdmlydHVhbCBib29sIGlzU2hhZGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorcHJpdmF0
ZToKKyAgICBXZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBHcmFwaGljc0NvbnRl
eHQzRDo6V2ViR0xFbnVtVHlwZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1w
bChQbGF0Zm9ybTNET2JqZWN0KTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRlcigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpXZWJHTEVudW1UeXBl
IG1fdHlwZTsKK307CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OldlYkdMRW51bVR5cGUg
bV90eXBlOwotICAgIH07Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBXZWJHTFNoYWRlcl9oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCShy
ZXZpc2lvbiA2NDY4NSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAK
ICNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKKwogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29u
dGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTcsNyArMTk4LDcgQEAgYm9vbCBX
ZWJHTFRleHR1cmU6Om5lZWRUb1VzZUJsYWNrVGV4dHVyZQogICAgIHJldHVybiBtX25lZWRUb1Vz
ZUJsYWNrVGV4dHVyZTsKIH0KIAotdm9pZCBXZWJHTFRleHR1cmU6Ol9kZWxldGVPYmplY3QoUGxh
dGZvcm0zRE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMVGV4dHVyZTo6ZGVsZXRlT2JqZWN0SW1w
bChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29u
dGV4dDNEKCktPmRlbGV0ZVRleHR1cmUob2JqZWN0KTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xUZXh0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFRleHR1cmUuaAkocmV2aXNpb24gNjQ2ODUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMVGV4dHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5NyArMzMsOTkgQEAKICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLSAgICBjbGFzcyBX
ZWJHTFRleHR1cmUgOiBwdWJsaWMgV2ViR0xPYmplY3QgewotICAgIHB1YmxpYzoKLSAgICAgICAg
dmlydHVhbCB+V2ViR0xUZXh0dXJlKCkgeyBkZWxldGVPYmplY3QoKTsgfQotICAgICAgICAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0Kik7CiAKLSAgICAgICAgYm9vbCBpc0N1YmVNYXBSV3JhcE1vZGVJbml0aWFsaXpl
ZCgpIHsKLSAgICAgICAgICAgIHJldHVybiBjdWJlTWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQ7Ci0g
ICAgICAgIH0KK2NsYXNzIFdlYkdMVGV4dHVyZSA6IHB1YmxpYyBXZWJHTE9iamVjdCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+V2ViR0xUZXh0dXJlKCkgeyBkZWxldGVPYmplY3QoKTsgfQogCi0g
ICAgICAgIHZvaWQgc2V0Q3ViZU1hcFJXcmFwTW9kZUluaXRpYWxpemVkKGJvb2wgaW5pdGlhbGl6
ZWQpIHsKLSAgICAgICAgICAgIGN1YmVNYXBSV3JhcE1vZGVJbml0aWFsaXplZCA9IGluaXRpYWxp
emVkOwotICAgICAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CiAKLSAgICAgICAgdm9pZCBzZXRUYXJnZXQodW5z
aWduZWQgbG9uZyB0YXJnZXQsIGludCBtYXhMZXZlbCk7Ci0gICAgICAgIHZvaWQgc2V0UGFyYW1l
dGVyaSh1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQgcGFyYW0pOwotICAgICAgICB2b2lkIHNldFBh
cmFtZXRlcmYodW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQgcGFyYW0pOworICAgIGJvb2wgaXND
dWJlTWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGN1YmVN
YXBSV3JhcE1vZGVJbml0aWFsaXplZDsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRMZXZlbElu
Zm8odW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBsZXZlbCwgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bEZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBsb25nIHR5cGUpOworICAg
IHZvaWQgc2V0Q3ViZU1hcFJXcmFwTW9kZUluaXRpYWxpemVkKGJvb2wgaW5pdGlhbGl6ZWQpCisg
ICAgeworICAgICAgICBjdWJlTWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQgPSBpbml0aWFsaXplZDsK
KyAgICB9CiAKLSAgICAgICAgYm9vbCBjYW5HZW5lcmF0ZU1pcG1hcHMoKTsKLSAgICAgICAgLy8g
R2VuZXJhdGUgYWxsIGxldmVsIGluZm9ybWF0aW9uLgotICAgICAgICB2b2lkIGdlbmVyYXRlTWlw
bWFwTGV2ZWxJbmZvKCk7CisgICAgdm9pZCBzZXRUYXJnZXQodW5zaWduZWQgbG9uZyB0YXJnZXQs
IGludCBtYXhMZXZlbCk7CisgICAgdm9pZCBzZXRQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgcG5h
bWUsIGludCBwYXJhbSk7CisgICAgdm9pZCBzZXRQYXJhbWV0ZXJmKHVuc2lnbmVkIGxvbmcgcG5h
bWUsIGZsb2F0IHBhcmFtKTsKIAotICAgICAgICB1bnNpZ25lZCBsb25nIGdldEludGVybmFsRm9y
bWF0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRMZXZlbEluZm8odW5zaWduZWQgbG9uZyB0YXJnZXQs
IGludCBsZXZlbCwgdW5zaWduZWQgbG9uZyBpbnRlcm5hbEZvcm1hdCwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCB1bnNpZ25lZCBsb25nIHR5cGUpOwogCi0gICAgICAgIC8vIFdoZXRoZXIgd2lkdGgv
aGVpZ2h0IGlzIE5vdFBvd2VyT2ZUd28uCi0gICAgICAgIHN0YXRpYyBib29sIGlzTlBPVCh1bnNp
Z25lZCwgdW5zaWduZWQpOworICAgIGJvb2wgY2FuR2VuZXJhdGVNaXBtYXBzKCk7CisgICAgLy8g
R2VuZXJhdGUgYWxsIGxldmVsIGluZm9ybWF0aW9uLgorICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXBM
ZXZlbEluZm8oKTsKIAotICAgICAgICBib29sIGlzTlBPVCgpIGNvbnN0OwotICAgICAgICAvLyBE
ZXRlcm1pbmUgaWYgdGV4dHVyZSBzYW1wbGluZyBzaG91bGQgYWx3YXlzIHJldHVybiBbMCwgMCwg
MCwgMV0gKE9wZW5HTCBFUyAyLjAgU2VjIDMuOC4yKS4KLSAgICAgICAgYm9vbCBuZWVkVG9Vc2VC
bGFja1RleHR1cmUoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGdldEludGVybmFsRm9ybWF0
KCkgY29uc3Q7CiAKLSAgICAgICAgc3RhdGljIGludCBjb21wdXRlTGV2ZWxDb3VudChpbnQgd2lk
dGgsIGludCBoZWlnaHQpOworICAgIC8vIFdoZXRoZXIgd2lkdGgvaGVpZ2h0IGlzIE5vdFBvd2Vy
T2ZUd28uCisgICAgc3RhdGljIGJvb2wgaXNOUE9UKHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAKLSAg
ICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFdlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHQq
KTsKKyAgICBib29sIGlzTlBPVCgpIGNvbnN0OworICAgIC8vIERldGVybWluZSBpZiB0ZXh0dXJl
IHNhbXBsaW5nIHNob3VsZCBhbHdheXMgcmV0dXJuIFswLCAwLCAwLCAxXSAoT3BlbkdMIEVTIDIu
MCBTZWMgMy44LjIpLgorICAgIGJvb2wgbmVlZFRvVXNlQmxhY2tUZXh0dXJlKCkgY29uc3Q7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7Cisg
ICAgc3RhdGljIGludCBjb21wdXRlTGV2ZWxDb3VudChpbnQgd2lkdGgsIGludCBoZWlnaHQpOwog
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29sIGlzVGV4dHVyZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KK3Byb3RlY3RlZDoKKyAgICBXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0Kik7CiAKLSAgICAgICAgdm9pZCB1cGRhdGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlT2JqZWN0SW1wbChQbGF0Zm9ybTNET2JqZWN0KTsKIAotICAgICAgICBpbnQgbWFwVGFy
Z2V0VG9JbmRleCh1bnNpZ25lZCBsb25nKTsKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlz
VGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICBib29sIGN1YmVNYXBS
V3JhcE1vZGVJbml0aWFsaXplZDsKKyAgICB2b2lkIHVwZGF0ZSgpOwogCi0gICAgICAgIHVuc2ln
bmVkIGxvbmcgbV90YXJnZXQ7CisgICAgaW50IG1hcFRhcmdldFRvSW5kZXgodW5zaWduZWQgbG9u
Zyk7CiAKLSAgICAgICAgaW50IG1fbWluRmlsdGVyOwotICAgICAgICBpbnQgbV9tYWdGaWx0ZXI7
Ci0gICAgICAgIGludCBtX3dyYXBTOwotICAgICAgICBpbnQgbV93cmFwVDsKKyAgICBib29sIGN1
YmVNYXBSV3JhcE1vZGVJbml0aWFsaXplZDsKIAotICAgICAgICBjbGFzcyBMZXZlbEluZm8gewot
ICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBMZXZlbEluZm8oKQotICAgICAgICAgICAgICAg
IDogdmFsaWQoZmFsc2UpCi0gICAgICAgICAgICAgICAgLCBpbnRlcm5hbEZvcm1hdCgwKQotICAg
ICAgICAgICAgICAgICwgd2lkdGgoMCkKLSAgICAgICAgICAgICAgICAsIGhlaWdodCgwKQotICAg
ICAgICAgICAgICAgICwgdHlwZSgwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQorICAg
IHVuc2lnbmVkIGxvbmcgbV90YXJnZXQ7CiAKLSAgICAgICAgICAgIHZvaWQgc2V0SW5mbyh1bnNp
Z25lZCBsb25nIGludGVybmFsRm10LCBpbnQgdywgaW50IGgsIHVuc2lnbmVkIGxvbmcgdHApCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFsaWQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxGbXQ7Ci0gICAgICAgICAgICAgICAgd2lkdGgg
PSB3OwotICAgICAgICAgICAgICAgIGhlaWdodCA9IGg7Ci0gICAgICAgICAgICAgICAgdHlwZSA9
IHRwOwotICAgICAgICAgICAgfQorICAgIGludCBtX21pbkZpbHRlcjsKKyAgICBpbnQgbV9tYWdG
aWx0ZXI7CisgICAgaW50IG1fd3JhcFM7CisgICAgaW50IG1fd3JhcFQ7CiAKLSAgICAgICAgICAg
IGJvb2wgdmFsaWQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGludGVybmFsRm9ybWF0Owot
ICAgICAgICAgICAgaW50IHdpZHRoOwotICAgICAgICAgICAgaW50IGhlaWdodDsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgdHlwZTsKLSAgICAgICAgfTsKKyAgICBjbGFzcyBMZXZlbEluZm8g
eworICAgIHB1YmxpYzoKKyAgICAgICAgTGV2ZWxJbmZvKCkKKyAgICAgICAgICAgIDogdmFsaWQo
ZmFsc2UpCisgICAgICAgICAgICAsIGludGVybmFsRm9ybWF0KDApCisgICAgICAgICAgICAsIHdp
ZHRoKDApCisgICAgICAgICAgICAsIGhlaWdodCgwKQorICAgICAgICAgICAgLCB0eXBlKDApCisg
ICAgICAgIHsKKyAgICAgICAgfQogCi0gICAgICAgIFZlY3RvcjxWZWN0b3I8TGV2ZWxJbmZvPiA+
IG1faW5mbzsKKyAgICAgICAgdm9pZCBzZXRJbmZvKHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxGbXQs
IGludCB3LCBpbnQgaCwgdW5zaWduZWQgbG9uZyB0cCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFsaWQgPSB0cnVlOworICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbEZtdDsK
KyAgICAgICAgICAgIHdpZHRoID0gdzsKKyAgICAgICAgICAgIGhlaWdodCA9IGg7CisgICAgICAg
ICAgICB0eXBlID0gdHA7CisgICAgICAgIH0KIAotICAgICAgICBib29sIG1faXNOUE9UOwotICAg
ICAgICBib29sIG1faXNDb21wbGV0ZTsKLSAgICAgICAgYm9vbCBtX25lZWRUb1VzZUJsYWNrVGV4
dHVyZTsKKyAgICAgICAgYm9vbCB2YWxpZDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBpbnRlcm5h
bEZvcm1hdDsKKyAgICAgICAgaW50IHdpZHRoOworICAgICAgICBpbnQgaGVpZ2h0OworICAgICAg
ICB1bnNpZ25lZCBsb25nIHR5cGU7CiAgICAgfTsKLSAgICAKKworICAgIFZlY3RvcjxWZWN0b3I8
TGV2ZWxJbmZvPiA+IG1faW5mbzsKKworICAgIGJvb2wgbV9pc05QT1Q7CisgICAgYm9vbCBtX2lz
Q29tcGxldGU7CisgICAgYm9vbCBtX25lZWRUb1VzZUJsYWNrVGV4dHVyZTsKK307CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFdlYkdMVGV4dHVyZV9oCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA2
NDY4NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogdHlwZWRlZiBDR0xDb250ZXh0T2JqIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Q7Ci1j
b25zdCAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBOdWxsUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQzRCA9IDA7Citjb25zdCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIE51bGxQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEID0gMDsKIHR5cGVkZWYgR0x1aW50IFBsYXRmb3JtM0RPYmplY3Q7CiBj
b25zdCBQbGF0Zm9ybTNET2JqZWN0IE51bGxQbGF0Zm9ybTNET2JqZWN0ID0gMDsKIApAQCAtNTgs
MTIgKzU4LDEyIEBAIHR5cGVkZWYgdm9pZCogV2ViR0xMYXllcjsKIGNsYXNzIFFQYWludGVyOwog
Y2xhc3MgUVJlY3Q7CiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Q7Ci1j
b25zdCAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBOdWxsUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQzRCA9IDA7Citjb25zdCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIE51bGxQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEID0gMDsKIHR5cGVkZWYgaW50IFBsYXRmb3JtM0RPYmplY3Q7CiBjb25z
dCBQbGF0Zm9ybTNET2JqZWN0IE51bGxQbGF0Zm9ybTNET2JqZWN0ID0gMDsKICNlbHNlCiB0eXBl
ZGVmIHZvaWQqIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Q7Ci1jb25zdCAgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQzRCBOdWxsUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCA9IDA7Citjb25zdCBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIE51bGxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEID0g
MDsKIHR5cGVkZWYgaW50IFBsYXRmb3JtM0RPYmplY3Q7CiBjb25zdCBQbGF0Zm9ybTNET2JqZWN0
IE51bGxQbGF0Zm9ybTNET2JqZWN0ID0gMDsKICNlbmRpZgpAQCAtNzMsNzY4ICs3Myw3NjggQEAg
Y29uc3QgUGxhdGZvcm0zRE9iamVjdCBOdWxsUGxhdGZvcm0zRE9iagogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBBcnJheUJ1ZmZlcjsKLSAgICBjbGFzcyBBcnJheUJ1
ZmZlclZpZXc7Ci0gICAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsKLSAgICBjbGFzcyBG
bG9hdDMyQXJyYXk7Ci0gICAgY2xhc3MgSG9zdFdpbmRvdzsKLSAgICBjbGFzcyBJbWFnZTsKLSAg
ICBjbGFzcyBJbWFnZURhdGE7Ci0gICAgY2xhc3MgSW50MzJBcnJheTsKLSAgICBjbGFzcyBVaW50
OEFycmF5OwotICAgIGNsYXNzIFdlYkdMQWN0aXZlSW5mbzsKLQotICAgIHN0cnVjdCBBY3RpdmVJ
bmZvIHsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIHVuc2lnbmVkIHR5cGU7Ci0gICAg
ICAgIGludCBzaXplOwotICAgIH07CitjbGFzcyBBcnJheUJ1ZmZlcjsKK2NsYXNzIEFycmF5QnVm
ZmVyVmlldzsKK2NsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CitjbGFzcyBGbG9hdDMyQXJy
YXk7CitjbGFzcyBIb3N0V2luZG93OworY2xhc3MgSW1hZ2U7CitjbGFzcyBJbWFnZURhdGE7Citj
bGFzcyBJbnQzMkFycmF5OworY2xhc3MgVWludDhBcnJheTsKK2NsYXNzIFdlYkdMQWN0aXZlSW5m
bzsKKworc3RydWN0IEFjdGl2ZUluZm8geworICAgIFN0cmluZyBuYW1lOworICAgIHVuc2lnbmVk
IHR5cGU7CisgICAgaW50IHNpemU7Cit9OwogCi0gICAgLy8gRklYTUU6IGlkZWFsbHkgdGhpcyB3
b3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMuCisvLyBGSVhNRTogaWRlYWxseSB0aGlzIHdv
dWxkIGJlIHVzZWQgb24gYWxsIHBsYXRmb3Jtcy4KICNpZiBQTEFURk9STShDSFJPTUlVTSkgfHwg
UExBVEZPUk0oUVQpCi0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDsKK2NsYXNz
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw7CiAjZW5kaWYKIAotICAgIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDNEIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGVu
dW0gV2ViR0xFbnVtVHlwZSB7Ci0gICAgICAgICAgICBERVBUSF9CVUZGRVJfQklUID0gMHgwMDAw
MDEwMCwKLSAgICAgICAgICAgIFNURU5DSUxfQlVGRkVSX0JJVCA9IDB4MDAwMDA0MDAsCi0gICAg
ICAgICAgICBDT0xPUl9CVUZGRVJfQklUID0gMHgwMDAwNDAwMCwKLSAgICAgICAgICAgIFBPSU5U
UyA9IDB4MDAwMCwKLSAgICAgICAgICAgIExJTkVTID0gMHgwMDAxLAotICAgICAgICAgICAgTElO
RV9MT09QID0gMHgwMDAyLAotICAgICAgICAgICAgTElORV9TVFJJUCA9IDB4MDAwMywKLSAgICAg
ICAgICAgIFRSSUFOR0xFUyA9IDB4MDAwNCwKLSAgICAgICAgICAgIFRSSUFOR0xFX1NUUklQID0g
MHgwMDA1LAotICAgICAgICAgICAgVFJJQU5HTEVfRkFOID0gMHgwMDA2LAotICAgICAgICAgICAg
WkVSTyA9IDAsCi0gICAgICAgICAgICBPTkUgPSAxLAotICAgICAgICAgICAgU1JDX0NPTE9SID0g
MHgwMzAwLAotICAgICAgICAgICAgT05FX01JTlVTX1NSQ19DT0xPUiA9IDB4MDMwMSwKLSAgICAg
ICAgICAgIFNSQ19BTFBIQSA9IDB4MDMwMiwKLSAgICAgICAgICAgIE9ORV9NSU5VU19TUkNfQUxQ
SEEgPSAweDAzMDMsCi0gICAgICAgICAgICBEU1RfQUxQSEEgPSAweDAzMDQsCi0gICAgICAgICAg
ICBPTkVfTUlOVVNfRFNUX0FMUEhBID0gMHgwMzA1LAotICAgICAgICAgICAgRFNUX0NPTE9SID0g
MHgwMzA2LAotICAgICAgICAgICAgT05FX01JTlVTX0RTVF9DT0xPUiA9IDB4MDMwNywKLSAgICAg
ICAgICAgIFNSQ19BTFBIQV9TQVRVUkFURSA9IDB4MDMwOCwKLSAgICAgICAgICAgIEZVTkNfQURE
ID0gMHg4MDA2LAotICAgICAgICAgICAgQkxFTkRfRVFVQVRJT04gPSAweDgwMDksCi0gICAgICAg
ICAgICBCTEVORF9FUVVBVElPTl9SR0IgPSAweDgwMDksCi0gICAgICAgICAgICBCTEVORF9FUVVB
VElPTl9BTFBIQSA9IDB4ODgzRCwKLSAgICAgICAgICAgIEZVTkNfU1VCVFJBQ1QgPSAweDgwMEEs
Ci0gICAgICAgICAgICBGVU5DX1JFVkVSU0VfU1VCVFJBQ1QgPSAweDgwMEIsCi0gICAgICAgICAg
ICBCTEVORF9EU1RfUkdCID0gMHg4MEM4LAotICAgICAgICAgICAgQkxFTkRfU1JDX1JHQiA9IDB4
ODBDOSwKLSAgICAgICAgICAgIEJMRU5EX0RTVF9BTFBIQSA9IDB4ODBDQSwKLSAgICAgICAgICAg
IEJMRU5EX1NSQ19BTFBIQSA9IDB4ODBDQiwKLSAgICAgICAgICAgIENPTlNUQU5UX0NPTE9SID0g
MHg4MDAxLAotICAgICAgICAgICAgT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SID0gMHg4MDAyLAot
ICAgICAgICAgICAgQ09OU1RBTlRfQUxQSEEgPSAweDgwMDMsCi0gICAgICAgICAgICBPTkVfTUlO
VVNfQ09OU1RBTlRfQUxQSEEgPSAweDgwMDQsCi0gICAgICAgICAgICBCTEVORF9DT0xPUiA9IDB4
ODAwNSwKLSAgICAgICAgICAgIEFSUkFZX0JVRkZFUiA9IDB4ODg5MiwKLSAgICAgICAgICAgIEVM
RU1FTlRfQVJSQVlfQlVGRkVSID0gMHg4ODkzLAotICAgICAgICAgICAgQVJSQVlfQlVGRkVSX0JJ
TkRJTkcgPSAweDg4OTQsCi0gICAgICAgICAgICBFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5H
ID0gMHg4ODk1LAotICAgICAgICAgICAgU1RSRUFNX0RSQVcgPSAweDg4RTAsCi0gICAgICAgICAg
ICBTVEFUSUNfRFJBVyA9IDB4ODhFNCwKLSAgICAgICAgICAgIERZTkFNSUNfRFJBVyA9IDB4ODhF
OCwKLSAgICAgICAgICAgIEJVRkZFUl9TSVpFID0gMHg4NzY0LAotICAgICAgICAgICAgQlVGRkVS
X1VTQUdFID0gMHg4NzY1LAotICAgICAgICAgICAgQ1VSUkVOVF9WRVJURVhfQVRUUklCID0gMHg4
NjI2LAotICAgICAgICAgICAgRlJPTlQgPSAweDA0MDQsCi0gICAgICAgICAgICBCQUNLID0gMHgw
NDA1LAotICAgICAgICAgICAgRlJPTlRfQU5EX0JBQ0sgPSAweDA0MDgsCi0gICAgICAgICAgICBU
RVhUVVJFXzJEID0gMHgwREUxLAotICAgICAgICAgICAgQ1VMTF9GQUNFID0gMHgwQjQ0LAotICAg
ICAgICAgICAgQkxFTkQgPSAweDBCRTIsCi0gICAgICAgICAgICBESVRIRVIgPSAweDBCRDAsCi0g
ICAgICAgICAgICBTVEVOQ0lMX1RFU1QgPSAweDBCOTAsCi0gICAgICAgICAgICBERVBUSF9URVNU
ID0gMHgwQjcxLAotICAgICAgICAgICAgU0NJU1NPUl9URVNUID0gMHgwQzExLAotICAgICAgICAg
ICAgUE9MWUdPTl9PRkZTRVRfRklMTCA9IDB4ODAzNywKLSAgICAgICAgICAgIFNBTVBMRV9BTFBI
QV9UT19DT1ZFUkFHRSA9IDB4ODA5RSwKLSAgICAgICAgICAgIFNBTVBMRV9DT1ZFUkFHRSA9IDB4
ODBBMCwKLSAgICAgICAgICAgIE5PX0VSUk9SID0gMCwKLSAgICAgICAgICAgIElOVkFMSURfRU5V
TSA9IDB4MDUwMCwKLSAgICAgICAgICAgIElOVkFMSURfVkFMVUUgPSAweDA1MDEsCi0gICAgICAg
ICAgICBJTlZBTElEX09QRVJBVElPTiA9IDB4MDUwMiwKLSAgICAgICAgICAgIE9VVF9PRl9NRU1P
UlkgPSAweDA1MDUsCi0gICAgICAgICAgICBDVyA9IDB4MDkwMCwKLSAgICAgICAgICAgIENDVyA9
IDB4MDkwMSwKLSAgICAgICAgICAgIExJTkVfV0lEVEggPSAweDBCMjEsCi0gICAgICAgICAgICBB
TElBU0VEX1BPSU5UX1NJWkVfUkFOR0UgPSAweDg0NkQsCi0gICAgICAgICAgICBBTElBU0VEX0xJ
TkVfV0lEVEhfUkFOR0UgPSAweDg0NkUsCi0gICAgICAgICAgICBDVUxMX0ZBQ0VfTU9ERSA9IDB4
MEI0NSwKLSAgICAgICAgICAgIEZST05UX0ZBQ0UgPSAweDBCNDYsCi0gICAgICAgICAgICBERVBU
SF9SQU5HRSA9IDB4MEI3MCwKLSAgICAgICAgICAgIERFUFRIX1dSSVRFTUFTSyA9IDB4MEI3MiwK
LSAgICAgICAgICAgIERFUFRIX0NMRUFSX1ZBTFVFID0gMHgwQjczLAotICAgICAgICAgICAgREVQ
VEhfRlVOQyA9IDB4MEI3NCwKLSAgICAgICAgICAgIFNURU5DSUxfQ0xFQVJfVkFMVUUgPSAweDBC
OTEsCi0gICAgICAgICAgICBTVEVOQ0lMX0ZVTkMgPSAweDBCOTIsCi0gICAgICAgICAgICBTVEVO
Q0lMX0ZBSUwgPSAweDBCOTQsCi0gICAgICAgICAgICBTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCA9
IDB4MEI5NSwKLSAgICAgICAgICAgIFNURU5DSUxfUEFTU19ERVBUSF9QQVNTID0gMHgwQjk2LAot
ICAgICAgICAgICAgU1RFTkNJTF9SRUYgPSAweDBCOTcsCi0gICAgICAgICAgICBTVEVOQ0lMX1ZB
TFVFX01BU0sgPSAweDBCOTMsCi0gICAgICAgICAgICBTVEVOQ0lMX1dSSVRFTUFTSyA9IDB4MEI5
OCwKLSAgICAgICAgICAgIFNURU5DSUxfQkFDS19GVU5DID0gMHg4ODAwLAotICAgICAgICAgICAg
U1RFTkNJTF9CQUNLX0ZBSUwgPSAweDg4MDEsCi0gICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfUEFT
U19ERVBUSF9GQUlMID0gMHg4ODAyLAotICAgICAgICAgICAgU1RFTkNJTF9CQUNLX1BBU1NfREVQ
VEhfUEFTUyA9IDB4ODgwMywKLSAgICAgICAgICAgIFNURU5DSUxfQkFDS19SRUYgPSAweDhDQTMs
Ci0gICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyA9IDB4OENBNCwKLSAgICAgICAg
ICAgIFNURU5DSUxfQkFDS19XUklURU1BU0sgPSAweDhDQTUsCi0gICAgICAgICAgICBWSUVXUE9S
VCA9IDB4MEJBMiwKLSAgICAgICAgICAgIFNDSVNTT1JfQk9YID0gMHgwQzEwLAotICAgICAgICAg
ICAgQ09MT1JfQ0xFQVJfVkFMVUUgPSAweDBDMjIsCi0gICAgICAgICAgICBDT0xPUl9XUklURU1B
U0sgPSAweDBDMjMsCi0gICAgICAgICAgICBVTlBBQ0tfQUxJR05NRU5UID0gMHgwQ0Y1LAotICAg
ICAgICAgICAgUEFDS19BTElHTk1FTlQgPSAweDBEMDUsCi0gICAgICAgICAgICBNQVhfVEVYVFVS
RV9TSVpFID0gMHgwRDMzLAotICAgICAgICAgICAgTUFYX1ZJRVdQT1JUX0RJTVMgPSAweDBEM0Es
Ci0gICAgICAgICAgICBTVUJQSVhFTF9CSVRTID0gMHgwRDUwLAotICAgICAgICAgICAgUkVEX0JJ
VFMgPSAweDBENTIsCi0gICAgICAgICAgICBHUkVFTl9CSVRTID0gMHgwRDUzLAotICAgICAgICAg
ICAgQkxVRV9CSVRTID0gMHgwRDU0LAotICAgICAgICAgICAgQUxQSEFfQklUUyA9IDB4MEQ1NSwK
LSAgICAgICAgICAgIERFUFRIX0JJVFMgPSAweDBENTYsCi0gICAgICAgICAgICBTVEVOQ0lMX0JJ
VFMgPSAweDBENTcsCi0gICAgICAgICAgICBQT0xZR09OX09GRlNFVF9VTklUUyA9IDB4MkEwMCwK
LSAgICAgICAgICAgIFBPTFlHT05fT0ZGU0VUX0ZBQ1RPUiA9IDB4ODAzOCwKLSAgICAgICAgICAg
IFRFWFRVUkVfQklORElOR18yRCA9IDB4ODA2OSwKLSAgICAgICAgICAgIFNBTVBMRV9CVUZGRVJT
ID0gMHg4MEE4LAotICAgICAgICAgICAgU0FNUExFUyA9IDB4ODBBOSwKLSAgICAgICAgICAgIFNB
TVBMRV9DT1ZFUkFHRV9WQUxVRSA9IDB4ODBBQSwKLSAgICAgICAgICAgIFNBTVBMRV9DT1ZFUkFH
RV9JTlZFUlQgPSAweDgwQUIsCi0gICAgICAgICAgICBOVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZP
Uk1BVFMgPSAweDg2QTIsCi0gICAgICAgICAgICBDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyA9
IDB4ODZBMywKLSAgICAgICAgICAgIERPTlRfQ0FSRSA9IDB4MTEwMCwKLSAgICAgICAgICAgIEZB
U1RFU1QgPSAweDExMDEsCi0gICAgICAgICAgICBOSUNFU1QgPSAweDExMDIsCi0gICAgICAgICAg
ICBHRU5FUkFURV9NSVBNQVBfSElOVCA9IDB4ODE5MiwKLSAgICAgICAgICAgIEJZVEUgPSAweDE0
MDAsCi0gICAgICAgICAgICBVTlNJR05FRF9CWVRFID0gMHgxNDAxLAotICAgICAgICAgICAgU0hP
UlQgPSAweDE0MDIsCi0gICAgICAgICAgICBVTlNJR05FRF9TSE9SVCA9IDB4MTQwMywKLSAgICAg
ICAgICAgIElOVCA9IDB4MTQwNCwKLSAgICAgICAgICAgIFVOU0lHTkVEX0lOVCA9IDB4MTQwNSwK
LSAgICAgICAgICAgIEZMT0FUID0gMHgxNDA2LAotICAgICAgICAgICAgRklYRUQgPSAweDE0MEMs
Ci0gICAgICAgICAgICBERVBUSF9DT01QT05FTlQgPSAweDE5MDIsCi0gICAgICAgICAgICBBTFBI
QSA9IDB4MTkwNiwKLSAgICAgICAgICAgIFJHQiA9IDB4MTkwNywKLSAgICAgICAgICAgIFJHQkEg
PSAweDE5MDgsCi0gICAgICAgICAgICBMVU1JTkFOQ0UgPSAweDE5MDksCi0gICAgICAgICAgICBM
VU1JTkFOQ0VfQUxQSEEgPSAweDE5MEEsCi0gICAgICAgICAgICBVTlNJR05FRF9TSE9SVF80XzRf
NF80ID0gMHg4MDMzLAotICAgICAgICAgICAgVU5TSUdORURfU0hPUlRfNV81XzVfMSA9IDB4ODAz
NCwKLSAgICAgICAgICAgIFVOU0lHTkVEX1NIT1JUXzVfNl81ID0gMHg4MzYzLAotICAgICAgICAg
ICAgRlJBR01FTlRfU0hBREVSID0gMHg4QjMwLAotICAgICAgICAgICAgVkVSVEVYX1NIQURFUiA9
IDB4OEIzMSwKLSAgICAgICAgICAgIE1BWF9WRVJURVhfQVRUUklCUyA9IDB4ODg2OSwKLSAgICAg
ICAgICAgIE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTID0gMHg4REZCLAotICAgICAgICAgICAg
TUFYX1ZBUllJTkdfVkVDVE9SUyA9IDB4OERGQywKLSAgICAgICAgICAgIE1BWF9DT01CSU5FRF9U
RVhUVVJFX0lNQUdFX1VOSVRTID0gMHg4QjRELAotICAgICAgICAgICAgTUFYX1ZFUlRFWF9URVhU
VVJFX0lNQUdFX1VOSVRTID0gMHg4QjRDLAotICAgICAgICAgICAgTUFYX1RFWFRVUkVfSU1BR0Vf
VU5JVFMgPSAweDg4NzIsCi0gICAgICAgICAgICBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JT
ID0gMHg4REZELAotICAgICAgICAgICAgU0hBREVSX1RZUEUgPSAweDhCNEYsCi0gICAgICAgICAg
ICBERUxFVEVfU1RBVFVTID0gMHg4QjgwLAotICAgICAgICAgICAgTElOS19TVEFUVVMgPSAweDhC
ODIsCi0gICAgICAgICAgICBWQUxJREFURV9TVEFUVVMgPSAweDhCODMsCi0gICAgICAgICAgICBB
VFRBQ0hFRF9TSEFERVJTID0gMHg4Qjg1LAotICAgICAgICAgICAgQUNUSVZFX1VOSUZPUk1TID0g
MHg4Qjg2LAotICAgICAgICAgICAgQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCA9IDB4OEI4NywK
LSAgICAgICAgICAgIEFDVElWRV9BVFRSSUJVVEVTID0gMHg4Qjg5LAotICAgICAgICAgICAgQUNU
SVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIID0gMHg4QjhBLAotICAgICAgICAgICAgU0hBRElOR19M
QU5HVUFHRV9WRVJTSU9OID0gMHg4QjhDLAotICAgICAgICAgICAgQ1VSUkVOVF9QUk9HUkFNID0g
MHg4QjhELAotICAgICAgICAgICAgTkVWRVIgPSAweDAyMDAsCi0gICAgICAgICAgICBMRVNTID0g
MHgwMjAxLAotICAgICAgICAgICAgRVFVQUwgPSAweDAyMDIsCi0gICAgICAgICAgICBMRVFVQUwg
PSAweDAyMDMsCi0gICAgICAgICAgICBHUkVBVEVSID0gMHgwMjA0LAotICAgICAgICAgICAgTk9U
RVFVQUwgPSAweDAyMDUsCi0gICAgICAgICAgICBHRVFVQUwgPSAweDAyMDYsCi0gICAgICAgICAg
ICBBTFdBWVMgPSAweDAyMDcsCi0gICAgICAgICAgICBLRUVQID0gMHgxRTAwLAotICAgICAgICAg
ICAgUkVQTEFDRSA9IDB4MUUwMSwKLSAgICAgICAgICAgIElOQ1IgPSAweDFFMDIsCi0gICAgICAg
ICAgICBERUNSID0gMHgxRTAzLAotICAgICAgICAgICAgSU5WRVJUID0gMHgxNTBBLAotICAgICAg
ICAgICAgSU5DUl9XUkFQID0gMHg4NTA3LAotICAgICAgICAgICAgREVDUl9XUkFQID0gMHg4NTA4
LAotICAgICAgICAgICAgVkVORE9SID0gMHgxRjAwLAotICAgICAgICAgICAgUkVOREVSRVIgPSAw
eDFGMDEsCi0gICAgICAgICAgICBWRVJTSU9OID0gMHgxRjAyLAotICAgICAgICAgICAgRVhURU5T
SU9OUyA9IDB4MUYwMywKLSAgICAgICAgICAgIE5FQVJFU1QgPSAweDI2MDAsCi0gICAgICAgICAg
ICBMSU5FQVIgPSAweDI2MDEsCi0gICAgICAgICAgICBORUFSRVNUX01JUE1BUF9ORUFSRVNUID0g
MHgyNzAwLAotICAgICAgICAgICAgTElORUFSX01JUE1BUF9ORUFSRVNUID0gMHgyNzAxLAotICAg
ICAgICAgICAgTkVBUkVTVF9NSVBNQVBfTElORUFSID0gMHgyNzAyLAotICAgICAgICAgICAgTElO
RUFSX01JUE1BUF9MSU5FQVIgPSAweDI3MDMsCi0gICAgICAgICAgICBURVhUVVJFX01BR19GSUxU
RVIgPSAweDI4MDAsCi0gICAgICAgICAgICBURVhUVVJFX01JTl9GSUxURVIgPSAweDI4MDEsCi0g
ICAgICAgICAgICBURVhUVVJFX1dSQVBfUyA9IDB4MjgwMiwKLSAgICAgICAgICAgIFRFWFRVUkVf
V1JBUF9UID0gMHgyODAzLAotICAgICAgICAgICAgVEVYVFVSRSA9IDB4MTcwMiwKLSAgICAgICAg
ICAgIFRFWFRVUkVfQ1VCRV9NQVAgPSAweDg1MTMsCi0gICAgICAgICAgICBURVhUVVJFX0JJTkRJ
TkdfQ1VCRV9NQVAgPSAweDg1MTQsCi0gICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1ggPSAweDg1MTUsCi0gICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gg
PSAweDg1MTYsCi0gICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kgPSAweDg1
MTcsCi0gICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kgPSAweDg1MTgsCi0g
ICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ogPSAweDg1MTksCi0gICAgICAg
ICAgICBURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ogPSAweDg1MUEsCi0gICAgICAgICAgICBN
QVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFID0gMHg4NTFDLAotICAgICAgICAgICAgVEVYVFVSRTAg
PSAweDg0QzAsCi0gICAgICAgICAgICBURVhUVVJFMSA9IDB4ODRDMSwKLSAgICAgICAgICAgIFRF
WFRVUkUyID0gMHg4NEMyLAotICAgICAgICAgICAgVEVYVFVSRTMgPSAweDg0QzMsCi0gICAgICAg
ICAgICBURVhUVVJFNCA9IDB4ODRDNCwKLSAgICAgICAgICAgIFRFWFRVUkU1ID0gMHg4NEM1LAot
ICAgICAgICAgICAgVEVYVFVSRTYgPSAweDg0QzYsCi0gICAgICAgICAgICBURVhUVVJFNyA9IDB4
ODRDNywKLSAgICAgICAgICAgIFRFWFRVUkU4ID0gMHg4NEM4LAotICAgICAgICAgICAgVEVYVFVS
RTkgPSAweDg0QzksCi0gICAgICAgICAgICBURVhUVVJFMTAgPSAweDg0Q0EsCi0gICAgICAgICAg
ICBURVhUVVJFMTEgPSAweDg0Q0IsCi0gICAgICAgICAgICBURVhUVVJFMTIgPSAweDg0Q0MsCi0g
ICAgICAgICAgICBURVhUVVJFMTMgPSAweDg0Q0QsCi0gICAgICAgICAgICBURVhUVVJFMTQgPSAw
eDg0Q0UsCi0gICAgICAgICAgICBURVhUVVJFMTUgPSAweDg0Q0YsCi0gICAgICAgICAgICBURVhU
VVJFMTYgPSAweDg0RDAsCi0gICAgICAgICAgICBURVhUVVJFMTcgPSAweDg0RDEsCi0gICAgICAg
ICAgICBURVhUVVJFMTggPSAweDg0RDIsCi0gICAgICAgICAgICBURVhUVVJFMTkgPSAweDg0RDMs
Ci0gICAgICAgICAgICBURVhUVVJFMjAgPSAweDg0RDQsCi0gICAgICAgICAgICBURVhUVVJFMjEg
PSAweDg0RDUsCi0gICAgICAgICAgICBURVhUVVJFMjIgPSAweDg0RDYsCi0gICAgICAgICAgICBU
RVhUVVJFMjMgPSAweDg0RDcsCi0gICAgICAgICAgICBURVhUVVJFMjQgPSAweDg0RDgsCi0gICAg
ICAgICAgICBURVhUVVJFMjUgPSAweDg0RDksCi0gICAgICAgICAgICBURVhUVVJFMjYgPSAweDg0
REEsCi0gICAgICAgICAgICBURVhUVVJFMjcgPSAweDg0REIsCi0gICAgICAgICAgICBURVhUVVJF
MjggPSAweDg0REMsCi0gICAgICAgICAgICBURVhUVVJFMjkgPSAweDg0REQsCi0gICAgICAgICAg
ICBURVhUVVJFMzAgPSAweDg0REUsCi0gICAgICAgICAgICBURVhUVVJFMzEgPSAweDg0REYsCi0g
ICAgICAgICAgICBBQ1RJVkVfVEVYVFVSRSA9IDB4ODRFMCwKLSAgICAgICAgICAgIFJFUEVBVCA9
IDB4MjkwMSwKLSAgICAgICAgICAgIENMQU1QX1RPX0VER0UgPSAweDgxMkYsCi0gICAgICAgICAg
ICBNSVJST1JFRF9SRVBFQVQgPSAweDgzNzAsCi0gICAgICAgICAgICBGTE9BVF9WRUMyID0gMHg4
QjUwLAotICAgICAgICAgICAgRkxPQVRfVkVDMyA9IDB4OEI1MSwKLSAgICAgICAgICAgIEZMT0FU
X1ZFQzQgPSAweDhCNTIsCi0gICAgICAgICAgICBJTlRfVkVDMiA9IDB4OEI1MywKLSAgICAgICAg
ICAgIElOVF9WRUMzID0gMHg4QjU0LAotICAgICAgICAgICAgSU5UX1ZFQzQgPSAweDhCNTUsCi0g
ICAgICAgICAgICBCT09MID0gMHg4QjU2LAotICAgICAgICAgICAgQk9PTF9WRUMyID0gMHg4QjU3
LAotICAgICAgICAgICAgQk9PTF9WRUMzID0gMHg4QjU4LAotICAgICAgICAgICAgQk9PTF9WRUM0
ID0gMHg4QjU5LAotICAgICAgICAgICAgRkxPQVRfTUFUMiA9IDB4OEI1QSwKLSAgICAgICAgICAg
IEZMT0FUX01BVDMgPSAweDhCNUIsCi0gICAgICAgICAgICBGTE9BVF9NQVQ0ID0gMHg4QjVDLAot
ICAgICAgICAgICAgU0FNUExFUl8yRCA9IDB4OEI1RSwKLSAgICAgICAgICAgIFNBTVBMRVJfQ1VC
RSA9IDB4OEI2MCwKLSAgICAgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCA9IDB4
ODYyMiwKLSAgICAgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSA9IDB4ODYyMywKLSAg
ICAgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFID0gMHg4NjI0LAotICAgICAgICAg
ICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFID0gMHg4NjI1LAotICAgICAgICAgICAgVkVSVEVY
X0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEID0gMHg4ODZBLAotICAgICAgICAgICAgVkVSVEVYX0FU
VFJJQl9BUlJBWV9QT0lOVEVSID0gMHg4NjQ1LAotICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9B
UlJBWV9CVUZGRVJfQklORElORyA9IDB4ODg5RiwKLSAgICAgICAgICAgIElNUExFTUVOVEFUSU9O
X0NPTE9SX1JFQURfVFlQRSA9IDB4OEI5QSwKLSAgICAgICAgICAgIElNUExFTUVOVEFUSU9OX0NP
TE9SX1JFQURfRk9STUFUID0gMHg4QjlCLAotICAgICAgICAgICAgQ09NUElMRV9TVEFUVVMgPSAw
eDhCODEsCi0gICAgICAgICAgICBJTkZPX0xPR19MRU5HVEggPSAweDhCODQsCi0gICAgICAgICAg
ICBTSEFERVJfU09VUkNFX0xFTkdUSCA9IDB4OEI4OCwKLSAgICAgICAgICAgIFNIQURFUl9DT01Q
SUxFUiA9IDB4OERGQSwKLSAgICAgICAgICAgIFNIQURFUl9CSU5BUllfRk9STUFUUyA9IDB4OERG
OCwKLSAgICAgICAgICAgIE5VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMgPSAweDhERjksCi0gICAg
ICAgICAgICBMT1dfRkxPQVQgPSAweDhERjAsCi0gICAgICAgICAgICBNRURJVU1fRkxPQVQgPSAw
eDhERjEsCi0gICAgICAgICAgICBISUdIX0ZMT0FUID0gMHg4REYyLAotICAgICAgICAgICAgTE9X
X0lOVCA9IDB4OERGMywKLSAgICAgICAgICAgIE1FRElVTV9JTlQgPSAweDhERjQsCi0gICAgICAg
ICAgICBISUdIX0lOVCA9IDB4OERGNSwKLSAgICAgICAgICAgIEZSQU1FQlVGRkVSID0gMHg4RDQw
LAotICAgICAgICAgICAgUkVOREVSQlVGRkVSID0gMHg4RDQxLAotICAgICAgICAgICAgUkdCQTQg
PSAweDgwNTYsCi0gICAgICAgICAgICBSR0I1X0ExID0gMHg4MDU3LAotICAgICAgICAgICAgUkdC
NTY1ID0gMHg4RDYyLAotICAgICAgICAgICAgREVQVEhfQ09NUE9ORU5UMTYgPSAweDgxQTUsCi0g
ICAgICAgICAgICBTVEVOQ0lMX0lOREVYID0gMHgxOTAxLAotICAgICAgICAgICAgU1RFTkNJTF9J
TkRFWDggPSAweDhENDgsCi0gICAgICAgICAgICBERVBUSF9TVEVOQ0lMID0gMHg4NEY5LAotICAg
ICAgICAgICAgUkVOREVSQlVGRkVSX1dJRFRIID0gMHg4RDQyLAotICAgICAgICAgICAgUkVOREVS
QlVGRkVSX0hFSUdIVCA9IDB4OEQ0MywKLSAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9JTlRFUk5B
TF9GT1JNQVQgPSAweDhENDQsCi0gICAgICAgICAgICBSRU5ERVJCVUZGRVJfUkVEX1NJWkUgPSAw
eDhENTAsCi0gICAgICAgICAgICBSRU5ERVJCVUZGRVJfR1JFRU5fU0laRSA9IDB4OEQ1MSwKLSAg
ICAgICAgICAgIFJFTkRFUkJVRkZFUl9CTFVFX1NJWkUgPSAweDhENTIsCi0gICAgICAgICAgICBS
RU5ERVJCVUZGRVJfQUxQSEFfU0laRSA9IDB4OEQ1MywKLSAgICAgICAgICAgIFJFTkRFUkJVRkZF
Ul9ERVBUSF9TSVpFID0gMHg4RDU0LAotICAgICAgICAgICAgUkVOREVSQlVGRkVSX1NURU5DSUxf
U0laRSA9IDB4OEQ1NSwKLSAgICAgICAgICAgIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X1RZUEUgPSAweDhDRDAsCi0gICAgICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVD
VF9OQU1FID0gMHg4Q0QxLAotICAgICAgICAgICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhU
VVJFX0xFVkVMID0gMHg4Q0QyLAotICAgICAgICAgICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9U
RVhUVVJFX0NVQkVfTUFQX0ZBQ0UgPSAweDhDRDMsCi0gICAgICAgICAgICBDT0xPUl9BVFRBQ0hN
RU5UMCA9IDB4OENFMCwKLSAgICAgICAgICAgIERFUFRIX0FUVEFDSE1FTlQgPSAweDhEMDAsCi0g
ICAgICAgICAgICBTVEVOQ0lMX0FUVEFDSE1FTlQgPSAweDhEMjAsCi0gICAgICAgICAgICBERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQgPSAweDgyMUEsCi0gICAgICAgICAgICBOT05FID0gMCwKLSAg
ICAgICAgICAgIEZSQU1FQlVGRkVSX0NPTVBMRVRFID0gMHg4Q0Q1LAotICAgICAgICAgICAgRlJB
TUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UID0gMHg4Q0Q2LAotICAgICAgICAgICAgRlJB
TUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQgPSAweDhDRDcsCi0gICAgICAg
ICAgICBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlMgPSAweDhDRDksCi0gICAgICAg
ICAgICBGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCA9IDB4OENERCwKLSAgICAgICAgICAgIEZSQU1F
QlVGRkVSX0JJTkRJTkcgPSAweDhDQTYsCi0gICAgICAgICAgICBSRU5ERVJCVUZGRVJfQklORElO
RyA9IDB4OENBNywKLSAgICAgICAgICAgIE1BWF9SRU5ERVJCVUZGRVJfU0laRSA9IDB4ODRFOCwK
LSAgICAgICAgICAgIElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OID0gMHgwNTA2LAotCi0g
ICAgICAgICAgICAvLyBXZWJHTC1zcGVjaWZpYyBlbnVtcwotICAgICAgICAgICAgVU5QQUNLX0ZM
SVBfWV9XRUJHTCA9IDB4OTI0MCwKLSAgICAgICAgICAgIFVOUEFDS19QUkVNVUxUSVBMWV9BTFBI
QV9XRUJHTCA9IDB4OTI0MQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgLy8gQ29udGV4
dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLgotICAgICAgICBzdHJ1Y3QgQXR0cmlidXRlcyB7Ci0gICAg
ICAgICAgICBBdHRyaWJ1dGVzKCkKLSAgICAgICAgICAgICAgICA6IGFscGhhKHRydWUpCi0gICAg
ICAgICAgICAgICAgLCBkZXB0aCh0cnVlKQotICAgICAgICAgICAgICAgICwgc3RlbmNpbChmYWxz
ZSkKLSAgICAgICAgICAgICAgICAsIGFudGlhbGlhcyh0cnVlKQotICAgICAgICAgICAgICAgICwg
cHJlbXVsdGlwbGllZEFscGhhKHRydWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGJvb2wgYWxwaGE7Ci0gICAgICAgICAgICBib29sIGRlcHRoOwotICAgICAg
ICAgICAgYm9vbCBzdGVuY2lsOwotICAgICAgICAgICAgYm9vbCBhbnRpYWxpYXM7Ci0gICAgICAg
ICAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYTsKLSAgICAgICAgfTsKK2NsYXNzIEdyYXBoaWNz
Q29udGV4dDNEIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFdlYkdM
RW51bVR5cGUgeworICAgICAgICBERVBUSF9CVUZGRVJfQklUID0gMHgwMDAwMDEwMCwKKyAgICAg
ICAgU1RFTkNJTF9CVUZGRVJfQklUID0gMHgwMDAwMDQwMCwKKyAgICAgICAgQ09MT1JfQlVGRkVS
X0JJVCA9IDB4MDAwMDQwMDAsCisgICAgICAgIFBPSU5UUyA9IDB4MDAwMCwKKyAgICAgICAgTElO
RVMgPSAweDAwMDEsCisgICAgICAgIExJTkVfTE9PUCA9IDB4MDAwMiwKKyAgICAgICAgTElORV9T
VFJJUCA9IDB4MDAwMywKKyAgICAgICAgVFJJQU5HTEVTID0gMHgwMDA0LAorICAgICAgICBUUklB
TkdMRV9TVFJJUCA9IDB4MDAwNSwKKyAgICAgICAgVFJJQU5HTEVfRkFOID0gMHgwMDA2LAorICAg
ICAgICBaRVJPID0gMCwKKyAgICAgICAgT05FID0gMSwKKyAgICAgICAgU1JDX0NPTE9SID0gMHgw
MzAwLAorICAgICAgICBPTkVfTUlOVVNfU1JDX0NPTE9SID0gMHgwMzAxLAorICAgICAgICBTUkNf
QUxQSEEgPSAweDAzMDIsCisgICAgICAgIE9ORV9NSU5VU19TUkNfQUxQSEEgPSAweDAzMDMsCisg
ICAgICAgIERTVF9BTFBIQSA9IDB4MDMwNCwKKyAgICAgICAgT05FX01JTlVTX0RTVF9BTFBIQSA9
IDB4MDMwNSwKKyAgICAgICAgRFNUX0NPTE9SID0gMHgwMzA2LAorICAgICAgICBPTkVfTUlOVVNf
RFNUX0NPTE9SID0gMHgwMzA3LAorICAgICAgICBTUkNfQUxQSEFfU0FUVVJBVEUgPSAweDAzMDgs
CisgICAgICAgIEZVTkNfQUREID0gMHg4MDA2LAorICAgICAgICBCTEVORF9FUVVBVElPTiA9IDB4
ODAwOSwKKyAgICAgICAgQkxFTkRfRVFVQVRJT05fUkdCID0gMHg4MDA5LAorICAgICAgICBCTEVO
RF9FUVVBVElPTl9BTFBIQSA9IDB4ODgzRCwKKyAgICAgICAgRlVOQ19TVUJUUkFDVCA9IDB4ODAw
QSwKKyAgICAgICAgRlVOQ19SRVZFUlNFX1NVQlRSQUNUID0gMHg4MDBCLAorICAgICAgICBCTEVO
RF9EU1RfUkdCID0gMHg4MEM4LAorICAgICAgICBCTEVORF9TUkNfUkdCID0gMHg4MEM5LAorICAg
ICAgICBCTEVORF9EU1RfQUxQSEEgPSAweDgwQ0EsCisgICAgICAgIEJMRU5EX1NSQ19BTFBIQSA9
IDB4ODBDQiwKKyAgICAgICAgQ09OU1RBTlRfQ09MT1IgPSAweDgwMDEsCisgICAgICAgIE9ORV9N
SU5VU19DT05TVEFOVF9DT0xPUiA9IDB4ODAwMiwKKyAgICAgICAgQ09OU1RBTlRfQUxQSEEgPSAw
eDgwMDMsCisgICAgICAgIE9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSA9IDB4ODAwNCwKKyAgICAg
ICAgQkxFTkRfQ09MT1IgPSAweDgwMDUsCisgICAgICAgIEFSUkFZX0JVRkZFUiA9IDB4ODg5MiwK
KyAgICAgICAgRUxFTUVOVF9BUlJBWV9CVUZGRVIgPSAweDg4OTMsCisgICAgICAgIEFSUkFZX0JV
RkZFUl9CSU5ESU5HID0gMHg4ODk0LAorICAgICAgICBFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5E
SU5HID0gMHg4ODk1LAorICAgICAgICBTVFJFQU1fRFJBVyA9IDB4ODhFMCwKKyAgICAgICAgU1RB
VElDX0RSQVcgPSAweDg4RTQsCisgICAgICAgIERZTkFNSUNfRFJBVyA9IDB4ODhFOCwKKyAgICAg
ICAgQlVGRkVSX1NJWkUgPSAweDg3NjQsCisgICAgICAgIEJVRkZFUl9VU0FHRSA9IDB4ODc2NSwK
KyAgICAgICAgQ1VSUkVOVF9WRVJURVhfQVRUUklCID0gMHg4NjI2LAorICAgICAgICBGUk9OVCA9
IDB4MDQwNCwKKyAgICAgICAgQkFDSyA9IDB4MDQwNSwKKyAgICAgICAgRlJPTlRfQU5EX0JBQ0sg
PSAweDA0MDgsCisgICAgICAgIFRFWFRVUkVfMkQgPSAweDBERTEsCisgICAgICAgIENVTExfRkFD
RSA9IDB4MEI0NCwKKyAgICAgICAgQkxFTkQgPSAweDBCRTIsCisgICAgICAgIERJVEhFUiA9IDB4
MEJEMCwKKyAgICAgICAgU1RFTkNJTF9URVNUID0gMHgwQjkwLAorICAgICAgICBERVBUSF9URVNU
ID0gMHgwQjcxLAorICAgICAgICBTQ0lTU09SX1RFU1QgPSAweDBDMTEsCisgICAgICAgIFBPTFlH
T05fT0ZGU0VUX0ZJTEwgPSAweDgwMzcsCisgICAgICAgIFNBTVBMRV9BTFBIQV9UT19DT1ZFUkFH
RSA9IDB4ODA5RSwKKyAgICAgICAgU0FNUExFX0NPVkVSQUdFID0gMHg4MEEwLAorICAgICAgICBO
T19FUlJPUiA9IDAsCisgICAgICAgIElOVkFMSURfRU5VTSA9IDB4MDUwMCwKKyAgICAgICAgSU5W
QUxJRF9WQUxVRSA9IDB4MDUwMSwKKyAgICAgICAgSU5WQUxJRF9PUEVSQVRJT04gPSAweDA1MDIs
CisgICAgICAgIE9VVF9PRl9NRU1PUlkgPSAweDA1MDUsCisgICAgICAgIENXID0gMHgwOTAwLAor
ICAgICAgICBDQ1cgPSAweDA5MDEsCisgICAgICAgIExJTkVfV0lEVEggPSAweDBCMjEsCisgICAg
ICAgIEFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSA9IDB4ODQ2RCwKKyAgICAgICAgQUxJQVNFRF9M
SU5FX1dJRFRIX1JBTkdFID0gMHg4NDZFLAorICAgICAgICBDVUxMX0ZBQ0VfTU9ERSA9IDB4MEI0
NSwKKyAgICAgICAgRlJPTlRfRkFDRSA9IDB4MEI0NiwKKyAgICAgICAgREVQVEhfUkFOR0UgPSAw
eDBCNzAsCisgICAgICAgIERFUFRIX1dSSVRFTUFTSyA9IDB4MEI3MiwKKyAgICAgICAgREVQVEhf
Q0xFQVJfVkFMVUUgPSAweDBCNzMsCisgICAgICAgIERFUFRIX0ZVTkMgPSAweDBCNzQsCisgICAg
ICAgIFNURU5DSUxfQ0xFQVJfVkFMVUUgPSAweDBCOTEsCisgICAgICAgIFNURU5DSUxfRlVOQyA9
IDB4MEI5MiwKKyAgICAgICAgU1RFTkNJTF9GQUlMID0gMHgwQjk0LAorICAgICAgICBTVEVOQ0lM
X1BBU1NfREVQVEhfRkFJTCA9IDB4MEI5NSwKKyAgICAgICAgU1RFTkNJTF9QQVNTX0RFUFRIX1BB
U1MgPSAweDBCOTYsCisgICAgICAgIFNURU5DSUxfUkVGID0gMHgwQjk3LAorICAgICAgICBTVEVO
Q0lMX1ZBTFVFX01BU0sgPSAweDBCOTMsCisgICAgICAgIFNURU5DSUxfV1JJVEVNQVNLID0gMHgw
Qjk4LAorICAgICAgICBTVEVOQ0lMX0JBQ0tfRlVOQyA9IDB4ODgwMCwKKyAgICAgICAgU1RFTkNJ
TF9CQUNLX0ZBSUwgPSAweDg4MDEsCisgICAgICAgIFNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZB
SUwgPSAweDg4MDIsCisgICAgICAgIFNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MgPSAweDg4
MDMsCisgICAgICAgIFNURU5DSUxfQkFDS19SRUYgPSAweDhDQTMsCisgICAgICAgIFNURU5DSUxf
QkFDS19WQUxVRV9NQVNLID0gMHg4Q0E0LAorICAgICAgICBTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNL
ID0gMHg4Q0E1LAorICAgICAgICBWSUVXUE9SVCA9IDB4MEJBMiwKKyAgICAgICAgU0NJU1NPUl9C
T1ggPSAweDBDMTAsCisgICAgICAgIENPTE9SX0NMRUFSX1ZBTFVFID0gMHgwQzIyLAorICAgICAg
ICBDT0xPUl9XUklURU1BU0sgPSAweDBDMjMsCisgICAgICAgIFVOUEFDS19BTElHTk1FTlQgPSAw
eDBDRjUsCisgICAgICAgIFBBQ0tfQUxJR05NRU5UID0gMHgwRDA1LAorICAgICAgICBNQVhfVEVY
VFVSRV9TSVpFID0gMHgwRDMzLAorICAgICAgICBNQVhfVklFV1BPUlRfRElNUyA9IDB4MEQzQSwK
KyAgICAgICAgU1VCUElYRUxfQklUUyA9IDB4MEQ1MCwKKyAgICAgICAgUkVEX0JJVFMgPSAweDBE
NTIsCisgICAgICAgIEdSRUVOX0JJVFMgPSAweDBENTMsCisgICAgICAgIEJMVUVfQklUUyA9IDB4
MEQ1NCwKKyAgICAgICAgQUxQSEFfQklUUyA9IDB4MEQ1NSwKKyAgICAgICAgREVQVEhfQklUUyA9
IDB4MEQ1NiwKKyAgICAgICAgU1RFTkNJTF9CSVRTID0gMHgwRDU3LAorICAgICAgICBQT0xZR09O
X09GRlNFVF9VTklUUyA9IDB4MkEwMCwKKyAgICAgICAgUE9MWUdPTl9PRkZTRVRfRkFDVE9SID0g
MHg4MDM4LAorICAgICAgICBURVhUVVJFX0JJTkRJTkdfMkQgPSAweDgwNjksCisgICAgICAgIFNB
TVBMRV9CVUZGRVJTID0gMHg4MEE4LAorICAgICAgICBTQU1QTEVTID0gMHg4MEE5LAorICAgICAg
ICBTQU1QTEVfQ09WRVJBR0VfVkFMVUUgPSAweDgwQUEsCisgICAgICAgIFNBTVBMRV9DT1ZFUkFH
RV9JTlZFUlQgPSAweDgwQUIsCisgICAgICAgIE5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFU
UyA9IDB4ODZBMiwKKyAgICAgICAgQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMgPSAweDg2QTMs
CisgICAgICAgIERPTlRfQ0FSRSA9IDB4MTEwMCwKKyAgICAgICAgRkFTVEVTVCA9IDB4MTEwMSwK
KyAgICAgICAgTklDRVNUID0gMHgxMTAyLAorICAgICAgICBHRU5FUkFURV9NSVBNQVBfSElOVCA9
IDB4ODE5MiwKKyAgICAgICAgQllURSA9IDB4MTQwMCwKKyAgICAgICAgVU5TSUdORURfQllURSA9
IDB4MTQwMSwKKyAgICAgICAgU0hPUlQgPSAweDE0MDIsCisgICAgICAgIFVOU0lHTkVEX1NIT1JU
ID0gMHgxNDAzLAorICAgICAgICBJTlQgPSAweDE0MDQsCisgICAgICAgIFVOU0lHTkVEX0lOVCA9
IDB4MTQwNSwKKyAgICAgICAgRkxPQVQgPSAweDE0MDYsCisgICAgICAgIEZJWEVEID0gMHgxNDBD
LAorICAgICAgICBERVBUSF9DT01QT05FTlQgPSAweDE5MDIsCisgICAgICAgIEFMUEhBID0gMHgx
OTA2LAorICAgICAgICBSR0IgPSAweDE5MDcsCisgICAgICAgIFJHQkEgPSAweDE5MDgsCisgICAg
ICAgIExVTUlOQU5DRSA9IDB4MTkwOSwKKyAgICAgICAgTFVNSU5BTkNFX0FMUEhBID0gMHgxOTBB
LAorICAgICAgICBVTlNJR05FRF9TSE9SVF80XzRfNF80ID0gMHg4MDMzLAorICAgICAgICBVTlNJ
R05FRF9TSE9SVF81XzVfNV8xID0gMHg4MDM0LAorICAgICAgICBVTlNJR05FRF9TSE9SVF81XzZf
NSA9IDB4ODM2MywKKyAgICAgICAgRlJBR01FTlRfU0hBREVSID0gMHg4QjMwLAorICAgICAgICBW
RVJURVhfU0hBREVSID0gMHg4QjMxLAorICAgICAgICBNQVhfVkVSVEVYX0FUVFJJQlMgPSAweDg4
NjksCisgICAgICAgIE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTID0gMHg4REZCLAorICAgICAg
ICBNQVhfVkFSWUlOR19WRUNUT1JTID0gMHg4REZDLAorICAgICAgICBNQVhfQ09NQklORURfVEVY
VFVSRV9JTUFHRV9VTklUUyA9IDB4OEI0RCwKKyAgICAgICAgTUFYX1ZFUlRFWF9URVhUVVJFX0lN
QUdFX1VOSVRTID0gMHg4QjRDLAorICAgICAgICBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyA9IDB4
ODg3MiwKKyAgICAgICAgTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyA9IDB4OERGRCwKKyAg
ICAgICAgU0hBREVSX1RZUEUgPSAweDhCNEYsCisgICAgICAgIERFTEVURV9TVEFUVVMgPSAweDhC
ODAsCisgICAgICAgIExJTktfU1RBVFVTID0gMHg4QjgyLAorICAgICAgICBWQUxJREFURV9TVEFU
VVMgPSAweDhCODMsCisgICAgICAgIEFUVEFDSEVEX1NIQURFUlMgPSAweDhCODUsCisgICAgICAg
IEFDVElWRV9VTklGT1JNUyA9IDB4OEI4NiwKKyAgICAgICAgQUNUSVZFX1VOSUZPUk1fTUFYX0xF
TkdUSCA9IDB4OEI4NywKKyAgICAgICAgQUNUSVZFX0FUVFJJQlVURVMgPSAweDhCODksCisgICAg
ICAgIEFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCA9IDB4OEI4QSwKKyAgICAgICAgU0hBRElO
R19MQU5HVUFHRV9WRVJTSU9OID0gMHg4QjhDLAorICAgICAgICBDVVJSRU5UX1BST0dSQU0gPSAw
eDhCOEQsCisgICAgICAgIE5FVkVSID0gMHgwMjAwLAorICAgICAgICBMRVNTID0gMHgwMjAxLAor
ICAgICAgICBFUVVBTCA9IDB4MDIwMiwKKyAgICAgICAgTEVRVUFMID0gMHgwMjAzLAorICAgICAg
ICBHUkVBVEVSID0gMHgwMjA0LAorICAgICAgICBOT1RFUVVBTCA9IDB4MDIwNSwKKyAgICAgICAg
R0VRVUFMID0gMHgwMjA2LAorICAgICAgICBBTFdBWVMgPSAweDAyMDcsCisgICAgICAgIEtFRVAg
PSAweDFFMDAsCisgICAgICAgIFJFUExBQ0UgPSAweDFFMDEsCisgICAgICAgIElOQ1IgPSAweDFF
MDIsCisgICAgICAgIERFQ1IgPSAweDFFMDMsCisgICAgICAgIElOVkVSVCA9IDB4MTUwQSwKKyAg
ICAgICAgSU5DUl9XUkFQID0gMHg4NTA3LAorICAgICAgICBERUNSX1dSQVAgPSAweDg1MDgsCisg
ICAgICAgIFZFTkRPUiA9IDB4MUYwMCwKKyAgICAgICAgUkVOREVSRVIgPSAweDFGMDEsCisgICAg
ICAgIFZFUlNJT04gPSAweDFGMDIsCisgICAgICAgIEVYVEVOU0lPTlMgPSAweDFGMDMsCisgICAg
ICAgIE5FQVJFU1QgPSAweDI2MDAsCisgICAgICAgIExJTkVBUiA9IDB4MjYwMSwKKyAgICAgICAg
TkVBUkVTVF9NSVBNQVBfTkVBUkVTVCA9IDB4MjcwMCwKKyAgICAgICAgTElORUFSX01JUE1BUF9O
RUFSRVNUID0gMHgyNzAxLAorICAgICAgICBORUFSRVNUX01JUE1BUF9MSU5FQVIgPSAweDI3MDIs
CisgICAgICAgIExJTkVBUl9NSVBNQVBfTElORUFSID0gMHgyNzAzLAorICAgICAgICBURVhUVVJF
X01BR19GSUxURVIgPSAweDI4MDAsCisgICAgICAgIFRFWFRVUkVfTUlOX0ZJTFRFUiA9IDB4Mjgw
MSwKKyAgICAgICAgVEVYVFVSRV9XUkFQX1MgPSAweDI4MDIsCisgICAgICAgIFRFWFRVUkVfV1JB
UF9UID0gMHgyODAzLAorICAgICAgICBURVhUVVJFID0gMHgxNzAyLAorICAgICAgICBURVhUVVJF
X0NVQkVfTUFQID0gMHg4NTEzLAorICAgICAgICBURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAgPSAw
eDg1MTQsCisgICAgICAgIFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9IDB4ODUxNSwKKyAg
ICAgICAgVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YID0gMHg4NTE2LAorICAgICAgICBURVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kgPSAweDg1MTcsCisgICAgICAgIFRFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWSA9IDB4ODUxOCwKKyAgICAgICAgVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9aID0gMHg4NTE5LAorICAgICAgICBURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ogPSAweDg1
MUEsCisgICAgICAgIE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUgPSAweDg1MUMsCisgICAgICAg
IFRFWFRVUkUwID0gMHg4NEMwLAorICAgICAgICBURVhUVVJFMSA9IDB4ODRDMSwKKyAgICAgICAg
VEVYVFVSRTIgPSAweDg0QzIsCisgICAgICAgIFRFWFRVUkUzID0gMHg4NEMzLAorICAgICAgICBU
RVhUVVJFNCA9IDB4ODRDNCwKKyAgICAgICAgVEVYVFVSRTUgPSAweDg0QzUsCisgICAgICAgIFRF
WFRVUkU2ID0gMHg4NEM2LAorICAgICAgICBURVhUVVJFNyA9IDB4ODRDNywKKyAgICAgICAgVEVY
VFVSRTggPSAweDg0QzgsCisgICAgICAgIFRFWFRVUkU5ID0gMHg4NEM5LAorICAgICAgICBURVhU
VVJFMTAgPSAweDg0Q0EsCisgICAgICAgIFRFWFRVUkUxMSA9IDB4ODRDQiwKKyAgICAgICAgVEVY
VFVSRTEyID0gMHg4NENDLAorICAgICAgICBURVhUVVJFMTMgPSAweDg0Q0QsCisgICAgICAgIFRF
WFRVUkUxNCA9IDB4ODRDRSwKKyAgICAgICAgVEVYVFVSRTE1ID0gMHg4NENGLAorICAgICAgICBU
RVhUVVJFMTYgPSAweDg0RDAsCisgICAgICAgIFRFWFRVUkUxNyA9IDB4ODREMSwKKyAgICAgICAg
VEVYVFVSRTE4ID0gMHg4NEQyLAorICAgICAgICBURVhUVVJFMTkgPSAweDg0RDMsCisgICAgICAg
IFRFWFRVUkUyMCA9IDB4ODRENCwKKyAgICAgICAgVEVYVFVSRTIxID0gMHg4NEQ1LAorICAgICAg
ICBURVhUVVJFMjIgPSAweDg0RDYsCisgICAgICAgIFRFWFRVUkUyMyA9IDB4ODRENywKKyAgICAg
ICAgVEVYVFVSRTI0ID0gMHg4NEQ4LAorICAgICAgICBURVhUVVJFMjUgPSAweDg0RDksCisgICAg
ICAgIFRFWFRVUkUyNiA9IDB4ODREQSwKKyAgICAgICAgVEVYVFVSRTI3ID0gMHg4NERCLAorICAg
ICAgICBURVhUVVJFMjggPSAweDg0REMsCisgICAgICAgIFRFWFRVUkUyOSA9IDB4ODRERCwKKyAg
ICAgICAgVEVYVFVSRTMwID0gMHg4NERFLAorICAgICAgICBURVhUVVJFMzEgPSAweDg0REYsCisg
ICAgICAgIEFDVElWRV9URVhUVVJFID0gMHg4NEUwLAorICAgICAgICBSRVBFQVQgPSAweDI5MDEs
CisgICAgICAgIENMQU1QX1RPX0VER0UgPSAweDgxMkYsCisgICAgICAgIE1JUlJPUkVEX1JFUEVB
VCA9IDB4ODM3MCwKKyAgICAgICAgRkxPQVRfVkVDMiA9IDB4OEI1MCwKKyAgICAgICAgRkxPQVRf
VkVDMyA9IDB4OEI1MSwKKyAgICAgICAgRkxPQVRfVkVDNCA9IDB4OEI1MiwKKyAgICAgICAgSU5U
X1ZFQzIgPSAweDhCNTMsCisgICAgICAgIElOVF9WRUMzID0gMHg4QjU0LAorICAgICAgICBJTlRf
VkVDNCA9IDB4OEI1NSwKKyAgICAgICAgQk9PTCA9IDB4OEI1NiwKKyAgICAgICAgQk9PTF9WRUMy
ID0gMHg4QjU3LAorICAgICAgICBCT09MX1ZFQzMgPSAweDhCNTgsCisgICAgICAgIEJPT0xfVkVD
NCA9IDB4OEI1OSwKKyAgICAgICAgRkxPQVRfTUFUMiA9IDB4OEI1QSwKKyAgICAgICAgRkxPQVRf
TUFUMyA9IDB4OEI1QiwKKyAgICAgICAgRkxPQVRfTUFUNCA9IDB4OEI1QywKKyAgICAgICAgU0FN
UExFUl8yRCA9IDB4OEI1RSwKKyAgICAgICAgU0FNUExFUl9DVUJFID0gMHg4QjYwLAorICAgICAg
ICBWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQgPSAweDg2MjIsCisgICAgICAgIFZFUlRFWF9B
VFRSSUJfQVJSQVlfU0laRSA9IDB4ODYyMywKKyAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9T
VFJJREUgPSAweDg2MjQsCisgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSA9IDB4ODYy
NSwKKyAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEID0gMHg4ODZBLAorICAg
ICAgICBWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIgPSAweDg2NDUsCisgICAgICAgIFZFUlRF
WF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcgPSAweDg4OUYsCisgICAgICAgIElNUExFTUVO
VEFUSU9OX0NPTE9SX1JFQURfVFlQRSA9IDB4OEI5QSwKKyAgICAgICAgSU1QTEVNRU5UQVRJT05f
Q09MT1JfUkVBRF9GT1JNQVQgPSAweDhCOUIsCisgICAgICAgIENPTVBJTEVfU1RBVFVTID0gMHg4
QjgxLAorICAgICAgICBJTkZPX0xPR19MRU5HVEggPSAweDhCODQsCisgICAgICAgIFNIQURFUl9T
T1VSQ0VfTEVOR1RIID0gMHg4Qjg4LAorICAgICAgICBTSEFERVJfQ09NUElMRVIgPSAweDhERkEs
CisgICAgICAgIFNIQURFUl9CSU5BUllfRk9STUFUUyA9IDB4OERGOCwKKyAgICAgICAgTlVNX1NI
QURFUl9CSU5BUllfRk9STUFUUyA9IDB4OERGOSwKKyAgICAgICAgTE9XX0ZMT0FUID0gMHg4REYw
LAorICAgICAgICBNRURJVU1fRkxPQVQgPSAweDhERjEsCisgICAgICAgIEhJR0hfRkxPQVQgPSAw
eDhERjIsCisgICAgICAgIExPV19JTlQgPSAweDhERjMsCisgICAgICAgIE1FRElVTV9JTlQgPSAw
eDhERjQsCisgICAgICAgIEhJR0hfSU5UID0gMHg4REY1LAorICAgICAgICBGUkFNRUJVRkZFUiA9
IDB4OEQ0MCwKKyAgICAgICAgUkVOREVSQlVGRkVSID0gMHg4RDQxLAorICAgICAgICBSR0JBNCA9
IDB4ODA1NiwKKyAgICAgICAgUkdCNV9BMSA9IDB4ODA1NywKKyAgICAgICAgUkdCNTY1ID0gMHg4
RDYyLAorICAgICAgICBERVBUSF9DT01QT05FTlQxNiA9IDB4ODFBNSwKKyAgICAgICAgU1RFTkNJ
TF9JTkRFWCA9IDB4MTkwMSwKKyAgICAgICAgU1RFTkNJTF9JTkRFWDggPSAweDhENDgsCisgICAg
ICAgIERFUFRIX1NURU5DSUwgPSAweDg0RjksCisgICAgICAgIFJFTkRFUkJVRkZFUl9XSURUSCA9
IDB4OEQ0MiwKKyAgICAgICAgUkVOREVSQlVGRkVSX0hFSUdIVCA9IDB4OEQ0MywKKyAgICAgICAg
UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCA9IDB4OEQ0NCwKKyAgICAgICAgUkVOREVSQlVG
RkVSX1JFRF9TSVpFID0gMHg4RDUwLAorICAgICAgICBSRU5ERVJCVUZGRVJfR1JFRU5fU0laRSA9
IDB4OEQ1MSwKKyAgICAgICAgUkVOREVSQlVGRkVSX0JMVUVfU0laRSA9IDB4OEQ1MiwKKyAgICAg
ICAgUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUgPSAweDhENTMsCisgICAgICAgIFJFTkRFUkJVRkZF
Ul9ERVBUSF9TSVpFID0gMHg4RDU0LAorICAgICAgICBSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpF
ID0gMHg4RDU1LAorICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFID0g
MHg4Q0QwLAorICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FID0gMHg4
Q0QxLAorICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwgPSAweDhD
RDIsCisgICAgICAgIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNF
ID0gMHg4Q0QzLAorICAgICAgICBDT0xPUl9BVFRBQ0hNRU5UMCA9IDB4OENFMCwKKyAgICAgICAg
REVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKKyAgICAgICAgU1RFTkNJTF9BVFRBQ0hNRU5UID0g
MHg4RDIwLAorICAgICAgICBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQgPSAweDgyMUEsCisgICAg
ICAgIE5PTkUgPSAwLAorICAgICAgICBGUkFNRUJVRkZFUl9DT01QTEVURSA9IDB4OENENSwKKyAg
ICAgICAgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UID0gMHg4Q0Q2LAorICAgICAg
ICBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCA9IDB4OENENywKKyAg
ICAgICAgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TID0gMHg4Q0Q5LAorICAgICAg
ICBGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCA9IDB4OENERCwKKyAgICAgICAgRlJBTUVCVUZGRVJf
QklORElORyA9IDB4OENBNiwKKyAgICAgICAgUkVOREVSQlVGRkVSX0JJTkRJTkcgPSAweDhDQTcs
CisgICAgICAgIE1BWF9SRU5ERVJCVUZGRVJfU0laRSA9IDB4ODRFOCwKKyAgICAgICAgSU5WQUxJ
RF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gPSAweDA1MDYsCisKKyAgICAgICAgLy8gV2ViR0wtc3Bl
Y2lmaWMgZW51bXMKKyAgICAgICAgVU5QQUNLX0ZMSVBfWV9XRUJHTCA9IDB4OTI0MCwKKyAgICAg
ICAgVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMID0gMHg5MjQxCisgICAgfTsKKworICAg
IC8vIENvbnRleHQgY3JlYXRpb24gYXR0cmlidXRlcy4KKyAgICBzdHJ1Y3QgQXR0cmlidXRlcyB7
CisgICAgICAgIEF0dHJpYnV0ZXMoKQorICAgICAgICAgICAgOiBhbHBoYSh0cnVlKQorICAgICAg
ICAgICAgLCBkZXB0aCh0cnVlKQorICAgICAgICAgICAgLCBzdGVuY2lsKGZhbHNlKQorICAgICAg
ICAgICAgLCBhbnRpYWxpYXModHJ1ZSkKKyAgICAgICAgICAgICwgcHJlbXVsdGlwbGllZEFscGhh
KHRydWUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgYWxwaGE7CisgICAg
ICAgIGJvb2wgZGVwdGg7CisgICAgICAgIGJvb2wgc3RlbmNpbDsKKyAgICAgICAgYm9vbCBhbnRp
YWxpYXM7CisgICAgICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhOworICAgIH07CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZShBdHRyaWJ1dGVz
IGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KTsKLSAgICAgICAgdmlydHVhbCB+R3JhcGhp
Y3NDb250ZXh0M0QoKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y3JlYXRlKEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpOworICAgIHZp
cnR1YWwgfkdyYXBoaWNzQ29udGV4dDNEKCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAg
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dE9iajsgfQotICAgICAgICBQbGF0Zm9ybTNET2JqZWN0IHBs
YXRmb3JtVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsgfQotICAgICAgICBDQUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q0FMYXllcio+
KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRPYmo7IH0K
KyAgICBQbGF0Zm9ybTNET2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dHVyZTsgfQorICAgIENBTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQogI2VsaWYgUExBVEZP
Uk0oQ0hST01JVU0pCi0gICAgICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCgpIGNvbnN0OwotICAgICAgICBQbGF0Zm9ybTNET2JqZWN0IHBsYXRm
b3JtVGV4dHVyZSgpIGNvbnN0OworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0OworICAgIFBsYXRmb3JtM0RPYmplY3QgcGxhdGZv
cm1UZXh0dXJlKCkgY29uc3Q7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAg
ICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisgICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShRVCkK
LSAgICAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDNEKCk7Ci0gICAgICAgIFBsYXRmb3JtM0RPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3Q7
CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
KCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdDsKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRm
b3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRpZgogI2Vsc2UKLSAgICAgICAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3Qg
eyByZXR1cm4gTnVsbFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Q7IH0KLSAgICAgICAgUGxhdGZv
cm0zRE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCB7IHJldHVybiBOdWxsUGxhdGZvcm0z
RE9iamVjdDsgfQorICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIE51bGxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
OyB9CisgICAgUGxhdGZvcm0zRE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCB7IHJldHVy
biBOdWxsUGxhdGZvcm0zRE9iamVjdDsgfQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLSAgICAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4g
MDsgfQogI2VuZGlmCiAjZW5kaWYKLSAgICAgICAgdm9pZCBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICB2b2lkIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShDSFJPTUlVTSkKLSAgICAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0
IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCi0gICAgICAgIHZvaWQgcHJlcGFy
ZVRleHR1cmUoKTsKKyAgICAvLyBXaXRoIG11bHRpc2FtcGxpbmcgb24sIGJsaXQgZnJvbSBtdWx0
aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4KKyAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CiAj
ZW5kaWYKIAotICAgICAgICAvLyBIZWxwZXIgdG8gcmV0dXJuIHRoZSBzaXplIGluIGJ5dGVzIG9m
IE9wZW5HTCBkYXRhIHR5cGVzCi0gICAgICAgIC8vIGxpa2UgR0xfRkxPQVQsIEdMX0lOVCwgZXRj
LgotICAgICAgICBpbnQgc2l6ZUluQnl0ZXMoaW50IHR5cGUpOwotCi0gICAgICAgIGJvb2wgaXNH
TEVTMkNvbXBsaWFudCgpIGNvbnN0OwotCi0gICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAg
ICAvLyBIZWxwZXJzIGZvciB0ZXh0dXJlIHVwbG9hZGluZyBhbmQgcGl4ZWwgcmVhZGJhY2suCi0g
ICAgICAgIC8vCi0KLSAgICAgICAgLy8gQ29tcHV0ZXMgdGhlIGNvbXBvbmVudHMgcGVyIHBpeGVs
IGFuZCBieXRlcyBwZXIgY29tcG9uZW50Ci0gICAgICAgIC8vIGZvciB0aGUgZ2l2ZW4gZm9ybWF0
IGFuZCB0eXBlIGNvbWJpbmF0aW9uLiBSZXR1cm5zIGZhbHNlIGlmCi0gICAgICAgIC8vIGVpdGhl
ciB3YXMgYW4gaW52YWxpZCBlbnVtLgotICAgICAgICBib29sIGNvbXB1dGVGb3JtYXRBbmRUeXBl
UGFyYW1ldGVycyh1bnNpZ25lZCBpbnQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyogY29tcG9uZW50c1BlclBp
eGVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nKiBieXRlc1BlckNvbXBvbmVudCk7Ci0KLSAgICAgICAgLy8gRXh0cmFjdHMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBnaXZlbiBJbWFnZSBpbnRvIHRoZSBwYXNzZWQgVmVjdG9yLAotICAgICAg
ICAvLyBwYWNraW5nIHRoZSBwaXhlbCBkYXRhIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZm9ybWF0
IGFuZCB0eXBlLAotICAgICAgICAvLyBhbmQgb2JleWluZyB0aGUgZmxpcFkgYW5kIHByZW11bHRp
cGx5QWxwaGEgZmxhZ3MuIFJldHVybnMgdHJ1ZQotICAgICAgICAvLyB1cG9uIHN1Y2Nlc3MuCi0g
ICAgICAgIGJvb2wgZXh0cmFjdEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGZsaXBZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVt
dWx0aXBseUFscGhhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKTsKLQotICAgICAgICAvLyBFeHRyYWN0cyB0aGUgY29udGVudHMgb2YgdGhlIGdp
dmVuIEltYWdlRGF0YSBpbnRvIHRoZSBwYXNzZWQgVmVjdG9yLAotICAgICAgICAvLyBwYWNraW5n
IHRoZSBwaXhlbCBkYXRhIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZm9ybWF0IGFuZCB0eXBlLAot
ICAgICAgICAvLyBhbmQgb2JleWluZyB0aGUgZmxpcFkgYW5kIHByZW11bHRpcGx5QWxwaGEgZmxh
Z3MuIFJldHVybnMgdHJ1ZQotICAgICAgICAvLyB1cG9uIHN1Y2Nlc3MuCi0gICAgICAgIGJvb2wg
ZXh0cmFjdEltYWdlRGF0YShJbWFnZURhdGEqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlw
WSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgZGF0YSk7Ci0K
LSAgICAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNoIGV4dHJhY3RzIHRoZSB1c2VyLXN1cHBs
aWVkIHRleHR1cmUKLSAgICAgICAgLy8gZGF0YSwgYXBwbHlpbmcgdGhlIGZsaXBZIGFuZCBwcmVt
dWx0aXBseUFscGhhIHBhcmFtZXRlcnMuCi0gICAgICAgIC8vIElmIHRoZSBkYXRhIGlzIG5vdCB0
aWdodGx5IHBhY2tlZCBhY2NvcmRpbmcgdG8gdGhlIHBhc3NlZAotICAgICAgICAvLyB1bnBhY2tB
bGlnbm1lbnQsIHRoZSBvdXRwdXQgZGF0YSB3aWxsIGJlIHRpZ2h0bHkgcGFja2VkLgotICAgICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgZmFsc2UgaWYgYW55IGVycm9yIG9jY3Vy
cmVkLgotICAgICAgICBib29sIGV4dHJhY3RUZXh0dXJlRGF0YSh1bnNpZ25lZCBpbnQgd2lkdGgs
IHVuc2lnbmVkIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBmb3JtYXQsIHVuc2lnbmVkIGludCB0eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdW5wYWNrQWxpZ25tZW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4mIGRhdGEpOwot
Ci0gICAgICAgIC8vIEZsaXBzIHRoZSBnaXZlbiBpbWFnZSBkYXRhIHZlcnRpY2FsbHksIGluLXBs
YWNlLgotICAgICAgICB2b2lkIGZsaXBWZXJ0aWNhbGx5KHZvaWQqIGltYWdlRGF0YSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXNQZXJQaXhlbCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgdW5wYWNrQWxpZ25tZW50KTsKLQotICAgICAgICAvLyBBdHRl
bXB0IHRvIGVudW1lcmF0ZSBhbGwgcG9zc2libGUgbmF0aXZlIGltYWdlIGZvcm1hdHMgdG8KLSAg
ICAgICAgLy8gcmVkdWNlIHRoZSBhbW91bnQgb2YgdGVtcG9yYXJ5IGFsbG9jYXRpb25zIGR1cmlu
ZyB0ZXh0dXJlCi0gICAgICAgIC8vIHVwbG9hZGluZy4gVGhpcyBlbnVtIG11c3QgYmUgcHVibGlj
IGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQKLSAgICAgICAgLy8gYnkgbm9uLW1lbWJlciBmdW5jdGlv
bnMuCi0gICAgICAgIGVudW0gU291cmNlRGF0YUZvcm1hdCB7Ci0gICAgICAgICAgICBrU291cmNl
Rm9ybWF0UkdCQTgsCi0gICAgICAgICAgICBrU291cmNlRm9ybWF0UkdCOCwKLSAgICAgICAgICAg
IGtTb3VyY2VGb3JtYXRCR1JBOCwKLSAgICAgICAgICAgIGtTb3VyY2VGb3JtYXRSR0JBNTU1MSwK
LSAgICAgICAgICAgIGtTb3VyY2VGb3JtYXRSR0JBNDQ0NCwKLSAgICAgICAgICAgIGtTb3VyY2VG
b3JtYXRSR0I1NjUsCi0gICAgICAgICAgICBrU291cmNlRm9ybWF0UjgsCi0gICAgICAgICAgICBr
U291cmNlRm9ybWF0UkE4LAotICAgICAgICAgICAga1NvdXJjZUZvcm1hdEE4Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgIC8vIEVudHJ5IHBvaW50cyBmb3Ig
V2ViR0wuCi0gICAgICAgIC8vCi0KLSAgICAgICAgdm9pZCBhY3RpdmVUZXh0dXJlKHVuc2lnbmVk
IGxvbmcgdGV4dHVyZSk7Ci0gICAgICAgIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpOwotICAgICAgICB2b2lkIGJpbmRB
dHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCB1bnNpZ25lZCBsb25nIGluZGV4LCBjb25z
dCBTdHJpbmcmIG5hbWUpOwotICAgICAgICB2b2lkIGJpbmRCdWZmZXIodW5zaWduZWQgbG9uZyB0
YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOwotICAgICAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcih1
bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgICAgIHZvaWQgYmlu
ZFJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7Ci0g
ICAgICAgIHZvaWQgYmluZFRleHR1cmUodW5zaWduZWQgbG9uZyB0YXJnZXQsIFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZSk7Ci0gICAgICAgIHZvaWQgYmxlbmRDb2xvcihkb3VibGUgcmVkLCBkb3Vi
bGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOwotICAgICAgICB2b2lkIGJsZW5k
RXF1YXRpb24odW5zaWduZWQgbG9uZyBtb2RlKTsKLSAgICAgICAgdm9pZCBibGVuZEVxdWF0aW9u
U2VwYXJhdGUodW5zaWduZWQgbG9uZyBtb2RlUkdCLCB1bnNpZ25lZCBsb25nIG1vZGVBbHBoYSk7
Ci0gICAgICAgIHZvaWQgYmxlbmRGdW5jKHVuc2lnbmVkIGxvbmcgc2ZhY3RvciwgdW5zaWduZWQg
bG9uZyBkZmFjdG9yKTsKLSAgICAgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZSh1bnNpZ25lZCBs
b25nIHNyY1JHQiwgdW5zaWduZWQgbG9uZyBkc3RSR0IsIHVuc2lnbmVkIGxvbmcgc3JjQWxwaGEs
IHVuc2lnbmVkIGxvbmcgZHN0QWxwaGEpOwotCi0gICAgICAgIHZvaWQgYnVmZmVyRGF0YSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgaW50IHNpemUsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpOwotICAgICAg
ICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIEFycmF5QnVmZmVyKiBkYXRh
LCB1bnNpZ25lZCBsb25nIHVzYWdlKTsKLSAgICAgICAgdm9pZCBidWZmZXJEYXRhKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2Up
OwotICAgICAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcg
b2Zmc2V0LCBBcnJheUJ1ZmZlciogZGF0YSk7Ci0gICAgICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSk7
Ci0KLSAgICAgICAgdW5zaWduZWQgbG9uZyBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0KTsKLSAgICAgICAgdm9pZCBjbGVhcih1bnNpZ25lZCBsb25nIG1hc2spOwot
ICAgICAgICB2b2lkIGNsZWFyQ29sb3IoZG91YmxlIHJlZCwgZG91YmxlIGdyZWVuLCBkb3VibGUg
Ymx1ZSwgZG91YmxlIGFscGhhKTsKLSAgICAgICAgdm9pZCBjbGVhckRlcHRoKGRvdWJsZSBkZXB0
aCk7Ci0gICAgICAgIHZvaWQgY2xlYXJTdGVuY2lsKGxvbmcgcyk7Ci0gICAgICAgIHZvaWQgY29s
b3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpOwotICAg
ICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgICAgIAotICAg
ICAgICAvL3ZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxv
bmcgbGV2ZWwsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lk
dGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBsb25nIGJvcmRlciwgdW5zaWduZWQgbG9uZyBpbWFn
ZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwotICAgICAgICAvL3ZvaWQgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIGxvbmcgeG9mZnNldCwg
bG9uZyB5b2Zmc2V0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwg
dW5zaWduZWQgbG9uZyBmb3JtYXQsIHVuc2lnbmVkIGxvbmcgaW1hZ2VTaXplLCBjb25zdCB2b2lk
KiBkYXRhKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgY29weVRleEltYWdlMkQodW5zaWduZWQg
bG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIGxv
bmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwg
bG9uZyBib3JkZXIpOwotICAgICAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCBsb25nIGxldmVsLCBsb25nIHhvZmZzZXQsIGxvbmcgeW9mZnNldCwgbG9uZyB4
LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKLSAg
ICAgICAgdm9pZCBjdWxsRmFjZSh1bnNpZ25lZCBsb25nIG1vZGUpOwotICAgICAgICB2b2lkIGRl
cHRoRnVuYyh1bnNpZ25lZCBsb25nIGZ1bmMpOwotICAgICAgICB2b2lkIGRlcHRoTWFzayhib29s
IGZsYWcpOwotICAgICAgICB2b2lkIGRlcHRoUmFuZ2UoZG91YmxlIHpOZWFyLCBkb3VibGUgekZh
cik7Ci0gICAgICAgIHZvaWQgZGV0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QsIFBsYXRmb3Jt
M0RPYmplY3QpOwotICAgICAgICB2b2lkIGRpc2FibGUodW5zaWduZWQgbG9uZyBjYXApOwotICAg
ICAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4KTsK
LSAgICAgICAgdm9pZCBkcmF3QXJyYXlzKHVuc2lnbmVkIGxvbmcgbW9kZSwgbG9uZyBmaXJzdCwg
bG9uZyBjb3VudCk7Ci0gICAgICAgIHZvaWQgZHJhd0VsZW1lbnRzKHVuc2lnbmVkIGxvbmcgbW9k
ZSwgdW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIG9mZnNldCk7
Ci0KLSAgICAgICAgdm9pZCBlbmFibGUodW5zaWduZWQgbG9uZyBjYXApOwotICAgICAgICB2b2lk
IGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgICAgICB2
b2lkIGZpbmlzaCgpOwotICAgICAgICB2b2lkIGZsdXNoKCk7Ci0gICAgICAgIHZvaWQgZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0
YWNobWVudCwgdW5zaWduZWQgbG9uZyByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmpl
Y3QpOwotICAgICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgdGV4dGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0LCBsb25nIGxldmVsKTsKLSAgICAgICAgdm9pZCBmcm9udEZhY2UodW5z
aWduZWQgbG9uZyBtb2RlKTsKLSAgICAgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcCh1bnNpZ25lZCBs
b25nIHRhcmdldCk7Ci0KLSAgICAgICAgYm9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIGluZGV4LCBBY3RpdmVJbmZvJik7Ci0gICAgICAg
IGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIHVuc2lnbmVk
IGxvbmcgaW5kZXgsIEFjdGl2ZUluZm8mKTsKLQotICAgICAgICB2b2lkIGdldEF0dGFjaGVkU2hh
ZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGludCBtYXhDb3VudCwgaW50KiBjb3VudCwg
dW5zaWduZWQgaW50KiBzaGFkZXJzKTsKLQotICAgICAgICBpbnQgZ2V0QXR0cmliTG9jYXRpb24o
UGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLQotICAgICAgICB2b2lkIGdl
dEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUsIHVuc2lnbmVkIGNoYXIqIHZhbHVlKTsKLQot
ICAgICAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQotICAgICAgICBBdHRyaWJ1dGVzIGdl
dENvbnRleHRBdHRyaWJ1dGVzKCk7Ci0KLSAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigp
OwotCi0gICAgICAgIHZvaWQgZ2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2
YWx1ZSk7Ci0KLSAgICAgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25l
ZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKLQotICAgICAgICB2b2lkIGdldEludGVnZXJ2KHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOwotCi0gICAgICAgIHZvaWQgZ2V0UHJvZ3Jh
bWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2
YWx1ZSk7Ci0KLSAgICAgICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmpl
Y3QpOwotCi0gICAgICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOwotCi0gICAgICAg
IHZvaWQgZ2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCwgdW5zaWduZWQgbG9uZyBwbmFtZSwg
aW50KiB2YWx1ZSk7Ci0KLSAgICAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0z
RE9iamVjdCk7Ci0KLSAgICAgICAgLy8gVEJECi0gICAgICAgIC8vIHZvaWQgZ2xHZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQgKEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwZSwg
R0xpbnQqIHJhbmdlLCBHTGludCogcHJlY2lzaW9uKTsKLQotICAgICAgICBTdHJpbmcgZ2V0U2hh
ZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3QpOwotICAgICAgICBTdHJpbmcgZ2V0U3RyaW5nKHVu
c2lnbmVkIGxvbmcgbmFtZSk7Ci0KLSAgICAgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKTsKLSAg
ICAgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7Ci0KLSAgICAgICAgdm9pZCBnZXRVbmlmb3JtZnYo
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBmbG9hdCogdmFsdWUpOwot
ICAgICAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGxvbmcg
bG9jYXRpb24sIGludCogdmFsdWUpOwotCi0gICAgICAgIGxvbmcgZ2V0VW5pZm9ybUxvY2F0aW9u
KFBsYXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0KLSAgICAgICAgdm9pZCBn
ZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1l
LCBmbG9hdCogdmFsdWUpOwotICAgICAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVk
IGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOwotCi0gICAgICAg
IGxvbmcgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotCi0gICAgICAgIHZvaWQgaGludCh1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBtb2RlKTsKLSAgICAgICAgYm9vbCBpc0J1ZmZlcihQbGF0Zm9ybTNET2Jq
ZWN0KTsKLSAgICAgICAgYm9vbCBpc0VuYWJsZWQodW5zaWduZWQgbG9uZyBjYXApOwotICAgICAg
ICBib29sIGlzRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7Ci0gICAgICAgIGJvb2wgaXNQ
cm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOwotICAgICAgICBib29sIGlzUmVuZGVyYnVmZmVyKFBs
YXRmb3JtM0RPYmplY3QpOwotICAgICAgICBib29sIGlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qp
OwotICAgICAgICBib29sIGlzVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICAgICAgdm9p
ZCBsaW5lV2lkdGgoZG91YmxlKTsKLSAgICAgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybTNE
T2JqZWN0KTsKLSAgICAgICAgdm9pZCBwaXhlbFN0b3JlaSh1bnNpZ25lZCBsb25nIHBuYW1lLCBs
b25nIHBhcmFtKTsKLSAgICAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KGRvdWJsZSBmYWN0b3IsIGRv
dWJsZSB1bml0cyk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIHJlYWRQaXhlbHMobG9uZyB4LCBs
b25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCB1bnNpZ25l
ZCBsb25nIGZvcm1hdCwgdW5zaWduZWQgbG9uZyB0eXBlLCB2b2lkKiBkYXRhKTsKLSAgICAgICAg
Ci0gICAgICAgIHZvaWQgcmVsZWFzZVNoYWRlckNvbXBpbGVyKCk7Ci0gICAgICAgIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBpbnRl
cm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwot
ICAgICAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKGRvdWJsZSB2YWx1ZSwgYm9vbCBpbnZlcnQpOwot
ICAgICAgICB2b2lkIHNjaXNzb3IobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKLSAgICAgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZv
cm0zRE9iamVjdCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpOwotICAgICAgICB2b2lkIHN0ZW5jaWxG
dW5jKHVuc2lnbmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxvbmcgbWFzayk7Ci0g
ICAgICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVuc2ln
bmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxvbmcgbWFzayk7Ci0gICAgICAgIHZv
aWQgc3RlbmNpbE1hc2sodW5zaWduZWQgbG9uZyBtYXNrKTsKLSAgICAgICAgdm9pZCBzdGVuY2ls
TWFza1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFjZSwgdW5zaWduZWQgbG9uZyBtYXNrKTsKLSAg
ICAgICAgdm9pZCBzdGVuY2lsT3AodW5zaWduZWQgbG9uZyBmYWlsLCB1bnNpZ25lZCBsb25nIHpm
YWlsLCB1bnNpZ25lZCBsb25nIHpwYXNzKTsKLSAgICAgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0
ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5zaWduZWQgbG9uZyB6
ZmFpbCwgdW5zaWduZWQgbG9uZyB6cGFzcyk7Ci0KLSAgICAgICAgaW50IHRleEltYWdlMkQodW5z
aWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxmb3JtYXQsIHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJvcmRlciwgdW5zaWduZWQg
Zm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpOwotCi0gICAgICAgIHZvaWQgdGV4
UGFyYW1ldGVyZih1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBuYW1lLCBmbG9hdCBwYXJhbSk7
Ci0gICAgICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBu
YW1lLCBpbnQgcGFyYW0pOwotCi0gICAgICAgIGludCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRh
cmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQs
IHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWdu
ZWQgdHlwZSwgdm9pZCogcGl4ZWxzKTsKLQotICAgICAgICB2b2lkIHVuaWZvcm0xZihsb25nIGxv
Y2F0aW9uLCBmbG9hdCB4KTsKLSAgICAgICAgdm9pZCB1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24s
IGZsb2F0KiB2LCBpbnQgc2l6ZSk7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTFpKGxvbmcgbG9jYXRp
b24sIGludCB4KTsKLSAgICAgICAgdm9pZCB1bmlmb3JtMWl2KGxvbmcgbG9jYXRpb24sIGludCog
diwgaW50IHNpemUpOwotICAgICAgICB2b2lkIHVuaWZvcm0yZihsb25nIGxvY2F0aW9uLCBmbG9h
dCB4LCBmbG9hdCB5KTsKLSAgICAgICAgdm9pZCB1bmlmb3JtMmZ2KGxvbmcgbG9jYXRpb24sIGZs
b2F0KiB2LCBpbnQgc2l6ZSk7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTJpKGxvbmcgbG9jYXRpb24s
IGludCB4LCBpbnQgeSk7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTJpdihsb25nIGxvY2F0aW9uLCBp
bnQqIHYsIGludCBzaXplKTsKLSAgICAgICAgdm9pZCB1bmlmb3JtM2YobG9uZyBsb2NhdGlvbiwg
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTNmdihsb25n
IGxvY2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUpOwotICAgICAgICB2b2lkIHVuaWZvcm0zaShs
b25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHksIGludCB6KTsKLSAgICAgICAgdm9pZCB1bmlmb3Jt
M2l2KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpOwotICAgICAgICB2b2lkIHVuaWZv
cm00Zihsb25nIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KTsK
LSAgICAgICAgdm9pZCB1bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6
ZSk7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTRpKGxvbmcgbG9jYXRpb24sIGludCB4LCBpbnQgeSwg
aW50IHosIGludCB3KTsKLSAgICAgICAgdm9pZCB1bmlmb3JtNGl2KGxvbmcgbG9jYXRpb24sIGlu
dCogdiwgaW50IHNpemUpOwotICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYobG9uZyBsb2Nh
dGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2YWx1ZSwgaW50IHNpemUpOwotICAgICAgICB2
b2lkIHVuaWZvcm1NYXRyaXgzZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0
KiB2YWx1ZSwgaW50IHNpemUpOwotICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYobG9uZyBs
b2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2YWx1ZSwgaW50IHNpemUpOwotCi0gICAg
ICAgIHZvaWQgdXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICAgICAgdm9pZCB2YWxp
ZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7Ci0KLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIxZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgpOwotICAgICAgICB2b2lkIHZlcnRleEF0
dHJpYjFmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOwotICAgICAgICB2b2lk
IHZlcnRleEF0dHJpYjJmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgeCwgZmxvYXQgeSk7Ci0g
ICAgICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZh
bHVlcyk7Ci0gICAgICAgIHZvaWQgdmVydGV4QXR0cmliM2YodW5zaWduZWQgbG9uZyBpbmR4LCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYo
dW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogdmFsdWVzKTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWI0Zih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZs
b2F0IHcpOwotICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25nIGluZHgs
IGZsb2F0KiB2YWx1ZXMpOwotICAgICAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWdu
ZWQgbG9uZyBpbmR4LCBpbnQgc2l6ZSwgaW50IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25l
ZCBsb25nIG9mZnNldCk7CisgICAgLy8gSGVscGVyIHRvIHJldHVybiB0aGUgc2l6ZSBpbiBieXRl
cyBvZiBPcGVuR0wgZGF0YSB0eXBlcworICAgIC8vIGxpa2UgR0xfRkxPQVQsIEdMX0lOVCwgZXRj
LgorICAgIGludCBzaXplSW5CeXRlcyhpbnQgdHlwZSk7CisKKyAgICBib29sIGlzR0xFUzJDb21w
bGlhbnQoKSBjb25zdDsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEhlbHBlcnMgZm9y
IHRleHR1cmUgdXBsb2FkaW5nIGFuZCBwaXhlbCByZWFkYmFjay4KKyAgICAvLworCisgICAgLy8g
Q29tcHV0ZXMgdGhlIGNvbXBvbmVudHMgcGVyIHBpeGVsIGFuZCBieXRlcyBwZXIgY29tcG9uZW50
CisgICAgLy8gZm9yIHRoZSBnaXZlbiBmb3JtYXQgYW5kIHR5cGUgY29tYmluYXRpb24uIFJldHVy
bnMgZmFsc2UgaWYKKyAgICAvLyBlaXRoZXIgd2FzIGFuIGludmFsaWQgZW51bS4KKyAgICBib29s
IGNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyh1bnNpZ25lZCBpbnQgZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcqIGNv
bXBvbmVudHNQZXJQaXhlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nKiBieXRlc1BlckNvbXBvbmVudCk7CisKKyAgICAvLyBFeHRyYWN0cyB0
aGUgY29udGVudHMgb2YgdGhlIGdpdmVuIEltYWdlIGludG8gdGhlIHBhc3NlZCBWZWN0b3IsCisg
ICAgLy8gcGFja2luZyB0aGUgcGl4ZWwgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZvcm1h
dCBhbmQgdHlwZSwKKyAgICAvLyBhbmQgb2JleWluZyB0aGUgZmxpcFkgYW5kIHByZW11bHRpcGx5
QWxwaGEgZmxhZ3MuIFJldHVybnMgdHJ1ZQorICAgIC8vIHVwb24gc3VjY2Vzcy4KKyAgICBib29s
IGV4dHJhY3RJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4mIGRhdGEpOworCisgICAgLy8gRXh0cmFjdHMg
dGhlIGNvbnRlbnRzIG9mIHRoZSBnaXZlbiBJbWFnZURhdGEgaW50byB0aGUgcGFzc2VkIFZlY3Rv
ciwKKyAgICAvLyBwYWNraW5nIHRoZSBwaXhlbCBkYXRhIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4g
Zm9ybWF0IGFuZCB0eXBlLAorICAgIC8vIGFuZCBvYmV5aW5nIHRoZSBmbGlwWSBhbmQgcHJlbXVs
dGlwbHlBbHBoYSBmbGFncy4gUmV0dXJucyB0cnVlCisgICAgLy8gdXBvbiBzdWNjZXNzLgorICAg
IGJvb2wgZXh0cmFjdEltYWdlRGF0YShJbWFnZURhdGEqLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4mIGRhdGEpOworCisgICAgLy8gSGVscGVy
IGZ1bmN0aW9uIHdoaWNoIGV4dHJhY3RzIHRoZSB1c2VyLXN1cHBsaWVkIHRleHR1cmUKKyAgICAv
LyBkYXRhLCBhcHBseWluZyB0aGUgZmxpcFkgYW5kIHByZW11bHRpcGx5QWxwaGEgcGFyYW1ldGVy
cy4KKyAgICAvLyBJZiB0aGUgZGF0YSBpcyBub3QgdGlnaHRseSBwYWNrZWQgYWNjb3JkaW5nIHRv
IHRoZSBwYXNzZWQKKyAgICAvLyB1bnBhY2tBbGlnbm1lbnQsIHRoZSBvdXRwdXQgZGF0YSB3aWxs
IGJlIHRpZ2h0bHkgcGFja2VkLgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBm
YWxzZSBpZiBhbnkgZXJyb3Igb2NjdXJyZWQuCisgICAgYm9vbCBleHRyYWN0VGV4dHVyZURhdGEo
dW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmb3JtYXQsIHVuc2lnbmVkIGludCB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB1bnBhY2tBbGlnbm1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyogcGl4ZWxz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgZGF0YSk7CiAK
LSAgICAgICAgdm9pZCB2aWV3cG9ydChsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0
aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOworICAgIC8vIEZsaXBzIHRoZSBnaXZlbiBpbWFnZSBk
YXRhIHZlcnRpY2FsbHksIGluLXBsYWNlLgorICAgIHZvaWQgZmxpcFZlcnRpY2FsbHkodm9pZCog
aW1hZ2VEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBieXRlc1BlclBpeGVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IHVucGFja0FsaWdubWVudCk7CiAKLSAgICAgICAgdm9pZCBy
ZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgLy8gQXR0ZW1wdCB0byBlbnVtZXJh
dGUgYWxsIHBvc3NpYmxlIG5hdGl2ZSBpbWFnZSBmb3JtYXRzIHRvCisgICAgLy8gcmVkdWNlIHRo
ZSBhbW91bnQgb2YgdGVtcG9yYXJ5IGFsbG9jYXRpb25zIGR1cmluZyB0ZXh0dXJlCisgICAgLy8g
dXBsb2FkaW5nLiBUaGlzIGVudW0gbXVzdCBiZSBwdWJsaWMgYmVjYXVzZSBpdCBpcyBhY2Nlc3Nl
ZAorICAgIC8vIGJ5IG5vbi1tZW1iZXIgZnVuY3Rpb25zLgorICAgIGVudW0gU291cmNlRGF0YUZv
cm1hdCB7CisgICAgICAgIGtTb3VyY2VGb3JtYXRSR0JBOCwKKyAgICAgICAga1NvdXJjZUZvcm1h
dFJHQjgsCisgICAgICAgIGtTb3VyY2VGb3JtYXRCR1JBOCwKKyAgICAgICAga1NvdXJjZUZvcm1h
dFJHQkE1NTUxLAorICAgICAgICBrU291cmNlRm9ybWF0UkdCQTQ0NDQsCisgICAgICAgIGtTb3Vy
Y2VGb3JtYXRSR0I1NjUsCisgICAgICAgIGtTb3VyY2VGb3JtYXRSOCwKKyAgICAgICAga1NvdXJj
ZUZvcm1hdFJBOCwKKyAgICAgICAga1NvdXJjZUZvcm1hdEE4CisgICAgfTsKKworICAgIC8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorICAgIC8vIEVudHJ5IHBvaW50cyBmb3IgV2ViR0wuCisgICAgLy8KKworICAg
IHZvaWQgYWN0aXZlVGV4dHVyZSh1bnNpZ25lZCBsb25nIHRleHR1cmUpOworICAgIHZvaWQgYXR0
YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXIpOworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QsIHVuc2ln
bmVkIGxvbmcgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBiaW5kQnVmZmVy
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGJpbmRG
cmFtZWJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7CisgICAg
dm9pZCBiaW5kUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBQbGF0Zm9ybTNET2Jq
ZWN0KTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmUpOworICAgIHZvaWQgYmxlbmRDb2xvcihkb3VibGUgcmVkLCBkb3Vi
bGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOworICAgIHZvaWQgYmxlbmRFcXVh
dGlvbih1bnNpZ25lZCBsb25nIG1vZGUpOworICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRl
KHVuc2lnbmVkIGxvbmcgbW9kZVJHQiwgdW5zaWduZWQgbG9uZyBtb2RlQWxwaGEpOworICAgIHZv
aWQgYmxlbmRGdW5jKHVuc2lnbmVkIGxvbmcgc2ZhY3RvciwgdW5zaWduZWQgbG9uZyBkZmFjdG9y
KTsKKyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgc3JjUkdCLCB1bnNp
Z25lZCBsb25nIGRzdFJHQiwgdW5zaWduZWQgbG9uZyBzcmNBbHBoYSwgdW5zaWduZWQgbG9uZyBk
c3RBbHBoYSk7CisKKyAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGlu
dCBzaXplLCB1bnNpZ25lZCBsb25nIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIEFycmF5QnVmZmVyKiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdlKTsK
KyAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIEFycmF5QnVmZmVyVmll
dyogZGF0YSwgdW5zaWduZWQgbG9uZyB1c2FnZSk7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgQXJyYXlCdWZmZXIqIGRhdGEpOworICAg
IHZvaWQgYnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIEFy
cmF5QnVmZmVyVmlldyogZGF0YSk7CisKKyAgICB1bnNpZ25lZCBsb25nIGNoZWNrRnJhbWVidWZm
ZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJnZXQpOworICAgIHZvaWQgY2xlYXIodW5zaWduZWQg
bG9uZyBtYXNrKTsKKyAgICB2b2lkIGNsZWFyQ29sb3IoZG91YmxlIHJlZCwgZG91YmxlIGdyZWVu
LCBkb3VibGUgYmx1ZSwgZG91YmxlIGFscGhhKTsKKyAgICB2b2lkIGNsZWFyRGVwdGgoZG91Ymxl
IGRlcHRoKTsKKyAgICB2b2lkIGNsZWFyU3RlbmNpbChsb25nIHMpOworICAgIHZvaWQgY29sb3JN
YXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpOworICAgIHZv
aWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0KTsKKworICAgIC8vIHZvaWQgY29tcHJl
c3NlZFRleEltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIHVuc2lnbmVk
IGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcg
aGVpZ2h0LCBsb25nIGJvcmRlciwgdW5zaWduZWQgbG9uZyBpbWFnZVNpemUsIGNvbnN0IHZvaWQq
IGRhdGEpOworICAgIC8vIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIGxvbmcgeG9mZnNldCwgbG9uZyB5b2Zmc2V0LCB1bnNpZ25l
ZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgdW5zaWduZWQgbG9uZyBmb3JtYXQs
IHVuc2lnbmVkIGxvbmcgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKKworICAgIHZvaWQg
Y29weVRleEltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIHVuc2lnbmVk
IGxvbmcgaW50ZXJuYWxmb3JtYXQsIGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRo
LCB1bnNpZ25lZCBsb25nIGhlaWdodCwgbG9uZyBib3JkZXIpOworICAgIHZvaWQgY29weVRleFN1
YkltYWdlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgbGV2ZWwsIGxvbmcgeG9mZnNldCwg
bG9uZyB5b2Zmc2V0LCBsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQpOworICAgIHZvaWQgY3VsbEZhY2UodW5zaWduZWQgbG9uZyBtb2RlKTsK
KyAgICB2b2lkIGRlcHRoRnVuYyh1bnNpZ25lZCBsb25nIGZ1bmMpOworICAgIHZvaWQgZGVwdGhN
YXNrKGJvb2wgZmxhZyk7CisgICAgdm9pZCBkZXB0aFJhbmdlKGRvdWJsZSB6TmVhciwgZG91Ymxl
IHpGYXIpOworICAgIHZvaWQgZGV0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QsIFBsYXRmb3Jt
M0RPYmplY3QpOworICAgIHZvaWQgZGlzYWJsZSh1bnNpZ25lZCBsb25nIGNhcCk7CisgICAgdm9p
ZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgdm9p
ZCBkcmF3QXJyYXlzKHVuc2lnbmVkIGxvbmcgbW9kZSwgbG9uZyBmaXJzdCwgbG9uZyBjb3VudCk7
CisgICAgdm9pZCBkcmF3RWxlbWVudHModW5zaWduZWQgbG9uZyBtb2RlLCB1bnNpZ25lZCBsb25n
IGNvdW50LCB1bnNpZ25lZCBsb25nIHR5cGUsIGxvbmcgb2Zmc2V0KTsKKworICAgIHZvaWQgZW5h
YmxlKHVuc2lnbmVkIGxvbmcgY2FwKTsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHZvaWQgZmluaXNoKCk7CisgICAgdm9pZCBmbHVz
aCgpOworICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyByZW5kZXJidWZmZXJ0
YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQg
bG9uZyB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QsIGxvbmcgbGV2ZWwpOworICAgIHZvaWQg
ZnJvbnRGYWNlKHVuc2lnbmVkIGxvbmcgbW9kZSk7CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcCh1
bnNpZ25lZCBsb25nIHRhcmdldCk7CisKKyAgICBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgaW5kZXgsIEFjdGl2ZUluZm8mKTsKKyAg
ICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCB1bnNpZ25l
ZCBsb25nIGluZGV4LCBBY3RpdmVJbmZvJik7CisKKyAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVy
cyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGludCBtYXhDb3VudCwgaW50KiBjb3VudCwgdW5z
aWduZWQgaW50KiBzaGFkZXJzKTsKKworICAgIGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bTNET2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBnZXRCb29sZWFudih1
bnNpZ25lZCBsb25nIHBuYW1lLCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSk7CisKKyAgICB2b2lkIGdl
dEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBpbnQqIHZhbHVlKTsKKworICAgIEF0dHJpYnV0ZXMgZ2V0Q29udGV4dEF0dHJpYnV0ZXMo
KTsKKworICAgIHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKKworICAgIHZvaWQgZ2V0RmxvYXR2
KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSk7CisKKyAgICB2b2lkIGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworCisg
ICAgdm9pZCBnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKwor
ICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgdW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CisKKyAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2co
UGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsK
KworICAgIHZvaWQgZ2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgaW50KiB2YWx1ZSk7CisKKyAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9y
bTNET2JqZWN0KTsKKworICAgIC8vIFRCRAorICAgIC8vIHZvaWQgZ2xHZXRTaGFkZXJQcmVjaXNp
b25Gb3JtYXQgKEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwZSwgR0xpbnQq
IHJhbmdlLCBHTGludCogcHJlY2lzaW9uKTsKKworICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2Uo
UGxhdGZvcm0zRE9iamVjdCk7CisgICAgU3RyaW5nIGdldFN0cmluZyh1bnNpZ25lZCBsb25nIG5h
bWUpOworCisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFRleFBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZh
bHVlKTsKKworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
bG9uZyBsb2NhdGlvbiwgZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIGludCogdmFsdWUpOworCisgICAg
bG9uZyBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKKworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwg
dW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFZlcnRleEF0
dHJpYml2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFs
dWUpOworCisgICAgbG9uZyBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRl
eCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CisKKyAgICB2b2lkIGhpbnQodW5zaWduZWQgbG9uZyB0
YXJnZXQsIHVuc2lnbmVkIGxvbmcgbW9kZSk7CisgICAgYm9vbCBpc0J1ZmZlcihQbGF0Zm9ybTNE
T2JqZWN0KTsKKyAgICBib29sIGlzRW5hYmxlZCh1bnNpZ25lZCBsb25nIGNhcCk7CisgICAgYm9v
bCBpc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIGJvb2wgaXNQcm9ncmFtKFBs
YXRmb3JtM0RPYmplY3QpOworICAgIGJvb2wgaXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVj
dCk7CisgICAgYm9vbCBpc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBib29sIGlzVGV4
dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGxpbmVXaWR0aChkb3VibGUpOworICAg
IHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBwaXhlbFN0b3Jl
aSh1bnNpZ25lZCBsb25nIHBuYW1lLCBsb25nIHBhcmFtKTsKKyAgICB2b2lkIHBvbHlnb25PZmZz
ZXQoZG91YmxlIGZhY3RvciwgZG91YmxlIHVuaXRzKTsKKworICAgIHZvaWQgcmVhZFBpeGVscyhs
b25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQs
IHVuc2lnbmVkIGxvbmcgZm9ybWF0LCB1bnNpZ25lZCBsb25nIHR5cGUsIHZvaWQqIGRhdGEpOwor
CisgICAgdm9pZCByZWxlYXNlU2hhZGVyQ29tcGlsZXIoKTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2UodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3Jt
YXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKKyAgICB2b2lk
IHNhbXBsZUNvdmVyYWdlKGRvdWJsZSB2YWx1ZSwgYm9vbCBpbnZlcnQpOworICAgIHZvaWQgc2Np
c3Nvcihsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBo
ZWlnaHQpOworICAgIHZvaWQgc2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0
cmluZyYgc3RyaW5nKTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKHVuc2lnbmVkIGxvbmcgZnVuYywg
bG9uZyByZWYsIHVuc2lnbmVkIGxvbmcgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFy
YXRlKHVuc2lnbmVkIGxvbmcgZmFjZSwgdW5zaWduZWQgbG9uZyBmdW5jLCBsb25nIHJlZiwgdW5z
aWduZWQgbG9uZyBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrKHVuc2lnbmVkIGxvbmcgbWFz
ayk7CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFjZSwgdW5z
aWduZWQgbG9uZyBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxPcCh1bnNpZ25lZCBsb25nIGZhaWws
IHVuc2lnbmVkIGxvbmcgemZhaWwsIHVuc2lnbmVkIGxvbmcgenBhc3MpOworICAgIHZvaWQgc3Rl
bmNpbE9wU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZhaWwsIHVu
c2lnbmVkIGxvbmcgemZhaWwsIHVuc2lnbmVkIGxvbmcgenBhc3MpOworCisgICAgaW50IHRleElt
YWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxm
b3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJvcmRlciwg
dW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpOworCisgICAgdm9p
ZCB0ZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgcG5hbWUsIGZsb2F0IHBh
cmFtKTsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmkodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBw
bmFtZSwgaW50IHBhcmFtKTsKKworICAgIGludCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdl
dCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsIHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQg
dHlwZSwgdm9pZCogcGl4ZWxzKTsKKworICAgIHZvaWQgdW5pZm9ybTFmKGxvbmcgbG9jYXRpb24s
IGZsb2F0IHgpOworICAgIHZvaWQgdW5pZm9ybTFmdihsb25nIGxvY2F0aW9uLCBmbG9hdCogdiwg
aW50IHNpemUpOworICAgIHZvaWQgdW5pZm9ybTFpKGxvbmcgbG9jYXRpb24sIGludCB4KTsKKyAg
ICB2b2lkIHVuaWZvcm0xaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSk7CisgICAg
dm9pZCB1bmlmb3JtMmYobG9uZyBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSk7CisgICAgdm9p
ZCB1bmlmb3JtMmZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSk7CisgICAgdm9p
ZCB1bmlmb3JtMmkobG9uZyBsb2NhdGlvbiwgaW50IHgsIGludCB5KTsKKyAgICB2b2lkIHVuaWZv
cm0yaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSk7CisgICAgdm9pZCB1bmlmb3Jt
M2YobG9uZyBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7CisgICAgdm9pZCB1
bmlmb3JtM2Z2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSk7CisgICAgdm9pZCB1
bmlmb3JtM2kobG9uZyBsb2NhdGlvbiwgaW50IHgsIGludCB5LCBpbnQgeik7CisgICAgdm9pZCB1
bmlmb3JtM2l2KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpOworICAgIHZvaWQgdW5p
Zm9ybTRmKGxvbmcgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcp
OworICAgIHZvaWQgdW5pZm9ybTRmdihsb25nIGxvY2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUp
OworICAgIHZvaWQgdW5pZm9ybTRpKGxvbmcgbG9jYXRpb24sIGludCB4LCBpbnQgeSwgaW50IHos
IGludCB3KTsKKyAgICB2b2lkIHVuaWZvcm00aXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQg
c2l6ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBmbG9hdCogdmFsdWUsIGludCBzaXplKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
ZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2YWx1ZSwgaW50IHNpemUp
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSk7CisKKyAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZv
cm0zRE9iamVjdCk7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7
CisKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgeCk7
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogdmFs
dWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQg
eCwgZmxvYXQgeSk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBpbmR4
LCBmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmKHVuc2lnbmVkIGxvbmcg
aW5keCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIz
ZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0
dHJpYjRmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxv
YXQgdyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9h
dCogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgbG9uZyBp
bmR4LCBpbnQgc2l6ZSwgaW50IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdHJpZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0
KTsKKworICAgIHZvaWQgdmlld3BvcnQobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lk
dGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKKworICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpOwogCiAjaWYgUExBVEZPUk0oQ0cpCi0gICAgICAgIHZvaWQgcGFpbnRUb0Nh
bnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgaW50IGltYWdlV2lkdGgsIGlu
dCBpbWFnZUhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjYW52YXNXaWR0
aCwgaW50IGNhbnZhc0hlaWdodCwgQ0dDb250ZXh0UmVmIGNvbnRleHQpOworICAgIHZvaWQgcGFp
bnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgaW50IGltYWdlV2lk
dGgsIGludCBpbWFnZUhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGNhbnZhc1dp
ZHRoLCBpbnQgY2FudmFzSGVpZ2h0LCBDR0NvbnRleHRSZWYgY29udGV4dCk7CiAjZW5kaWYKIAot
ICAgICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQpOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCk7CiAKLSAgICAgICAgLy8gSGVscGVy
cyBmb3Igbm90aWZpY2F0aW9uIGFib3V0IHBhaW50IGV2ZW50cwotICAgICAgICB2b2lkIGJlZ2lu
UGFpbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCk7Ci0gICAgICAgIHZvaWQgZW5k
UGFpbnQoKTsKKyAgICAvLyBIZWxwZXJzIGZvciBub3RpZmljYXRpb24gYWJvdXQgcGFpbnQgZXZl
bnRzCisgICAgdm9pZCBiZWdpblBhaW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQp
OworICAgIHZvaWQgZW5kUGFpbnQoKTsKICNpZiBQTEFURk9STShRVCkKLSAgICAgICAgdm9pZCBw
YWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVJlY3QmIHJlY3QpIGNvbnN0OworICAgIHZv
aWQgcGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0JiByZWN0KSBjb25zdDsKICNl
bmRpZgogCi0gICAgICAgIC8vIFN1cHBvcnQgZm9yIGJ1ZmZlciBjcmVhdGlvbiBhbmQgZGVsZXRp
b24KLSAgICAgICAgdW5zaWduZWQgY3JlYXRlQnVmZmVyKCk7Ci0gICAgICAgIHVuc2lnbmVkIGNy
ZWF0ZUZyYW1lYnVmZmVyKCk7Ci0gICAgICAgIHVuc2lnbmVkIGNyZWF0ZVByb2dyYW0oKTsKLSAg
ICAgICAgdW5zaWduZWQgY3JlYXRlUmVuZGVyYnVmZmVyKCk7Ci0gICAgICAgIHVuc2lnbmVkIGNy
ZWF0ZVNoYWRlcih1bnNpZ25lZCBsb25nKTsKLSAgICAgICAgdW5zaWduZWQgY3JlYXRlVGV4dHVy
ZSgpOwotICAgICAgICAKLSAgICAgICAgdm9pZCBkZWxldGVCdWZmZXIodW5zaWduZWQpOwotICAg
ICAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKHVuc2lnbmVkKTsKLSAgICAgICAgdm9pZCBkZWxl
dGVQcm9ncmFtKHVuc2lnbmVkKTsKLSAgICAgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIodW5z
aWduZWQpOwotICAgICAgICB2b2lkIGRlbGV0ZVNoYWRlcih1bnNpZ25lZCk7Ci0gICAgICAgIHZv
aWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCk7ICAgICAgICAKLSAgICAgICAgCi0gICAgICAgIC8v
IFN5bnRoZXNpemVzIGFuIE9wZW5HTCBlcnJvciB3aGljaCB3aWxsIGJlIHJldHVybmVkIGZyb20g
YQotICAgICAgICAvLyBsYXRlciBjYWxsIHRvIGdldEVycm9yLiBUaGlzIGlzIHVzZWQgdG8gZW11
bGF0ZSBPcGVuR0wgRVMKLSAgICAgICAgLy8gMi4wIGJlaGF2aW9yIG9uIHRoZSBkZXNrdG9wIGFu
ZCB0byBlbmZvcmNlIGFkZGl0aW9uYWwgZXJyb3IKLSAgICAgICAgLy8gY2hlY2tpbmcgbWFuZGF0
ZWQgYnkgV2ViR0wuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFBlciB0aGUgYmVoYXZpb3Igb2Yg
Z2xHZXRFcnJvciwgdGhpcyBzdG9yZXMgYXQgbW9zdCBvbmUKLSAgICAgICAgLy8gaW5zdGFuY2Ug
b2YgYW55IGdpdmVuIGVycm9yLCBhbmQgcmV0dXJucyB0aGVtIGZyb20gY2FsbHMgdG8KLSAgICAg
ICAgLy8gZ2V0RXJyb3IgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZC4KLSAgICAgICAgdm9p
ZCBzeW50aGVzaXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVycm9yKTsKLQotICAgIHByaXZhdGU6
ICAgICAgICAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QoQXR0cmlidXRlcyBhdHRycywgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdyk7Ci0KLSAgICAgICAgLy8gRWFjaCBwbGF0Zm9ybSBtdXN0IHBy
b3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2QuCi0gICAgICAgIC8vCi0gICAg
ICAgIC8vIEdldHMgdGhlIGRhdGEgZm9yIHRoZSBnaXZlbiBJbWFnZSBpbnRvIG91dHB1dFZlY3Rv
ciBpbiB0aGUKLSAgICAgICAgLy8gZm9ybWF0IHNwZWNpZmllZCBieSB0aGUgKE9wZW5HTC1zdHls
ZSkgZm9ybWF0IGFuZCB0eXBlCi0gICAgICAgIC8vIGFyZ3VtZW50cy4gRGVzcGl0ZSB0aGUgZmFj
dCB0aGF0IHRoZSBvdXRwdXRWZWN0b3IgY29udGFpbnMKLSAgICAgICAgLy8gdWludDhfdCwgaWYg
dGhlIGZvcm1hdCBhbmQgdHlwZSBzcGVjaWZ5IHBhY2tlZCBwaXhlbHMsIHRoZW4KLSAgICAgICAg
Ly8gaXQgd2lsbCBlc3NlbnRpYWxseSBjb250YWluIHVpbnQxNl90IGFmdGVyIHRoZSBleHRyYWN0
aW9uCi0gICAgICAgIC8vIHByb2Nlc3MuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIElmIHByZW11
bHRpcGx5QWxwaGEgaXMgdHJ1ZSwgdGhlIGFscGhhIGNoYW5uZWwsIGlmIGFueSwKLSAgICAgICAg
Ly8gd2lsbCBiZSBtdWx0aXBsaWVkIGludG8gdGhlIGNvbG9yIGNoYW5uZWxzIGR1cmluZyB0aGUK
LSAgICAgICAgLy8gZXh0cmFjdGlvbiBwcm9jZXNzLiBUaGlzIHByZW11bHRpcGxpY2F0aW9uIG9j
Y3VycyBiZWZvcmUKLSAgICAgICAgLy8gYW55IHBhY2tpbmcgb2YgcGl4ZWwgZGF0YS4KLSAgICAg
ICAgLy8KLSAgICAgICAgLy8gTm8gdmVydGljYWwgZmxpcCBvZiB0aGUgaW1hZ2UgZGF0YSBpcyBw
ZXJmb3JtZWQgYnkgdGhpcwotICAgICAgICAvLyBtZXRob2QuCi0gICAgICAgIGJvb2wgZ2V0SW1h
Z2VEYXRhKEltYWdlKiBpbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpOworICAg
IC8vIFN1cHBvcnQgZm9yIGJ1ZmZlciBjcmVhdGlvbiBhbmQgZGVsZXRpb24KKyAgICB1bnNpZ25l
ZCBjcmVhdGVCdWZmZXIoKTsKKyAgICB1bnNpZ25lZCBjcmVhdGVGcmFtZWJ1ZmZlcigpOworICAg
IHVuc2lnbmVkIGNyZWF0ZVByb2dyYW0oKTsKKyAgICB1bnNpZ25lZCBjcmVhdGVSZW5kZXJidWZm
ZXIoKTsKKyAgICB1bnNpZ25lZCBjcmVhdGVTaGFkZXIodW5zaWduZWQgbG9uZyk7CisgICAgdW5z
aWduZWQgY3JlYXRlVGV4dHVyZSgpOworCisgICAgdm9pZCBkZWxldGVCdWZmZXIodW5zaWduZWQp
OworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIodW5zaWduZWQpOworICAgIHZvaWQgZGVsZXRl
UHJvZ3JhbSh1bnNpZ25lZCk7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIodW5zaWduZWQp
OworICAgIHZvaWQgZGVsZXRlU2hhZGVyKHVuc2lnbmVkKTsKKyAgICB2b2lkIGRlbGV0ZVRleHR1
cmUodW5zaWduZWQpOworCisgICAgLy8gU3ludGhlc2l6ZXMgYW4gT3BlbkdMIGVycm9yIHdoaWNo
IHdpbGwgYmUgcmV0dXJuZWQgZnJvbSBhCisgICAgLy8gbGF0ZXIgY2FsbCB0byBnZXRFcnJvci4g
VGhpcyBpcyB1c2VkIHRvIGVtdWxhdGUgT3BlbkdMIEVTCisgICAgLy8gMi4wIGJlaGF2aW9yIG9u
IHRoZSBkZXNrdG9wIGFuZCB0byBlbmZvcmNlIGFkZGl0aW9uYWwgZXJyb3IKKyAgICAvLyBjaGVj
a2luZyBtYW5kYXRlZCBieSBXZWJHTC4KKyAgICAvLworICAgIC8vIFBlciB0aGUgYmVoYXZpb3Ig
b2YgZ2xHZXRFcnJvciwgdGhpcyBzdG9yZXMgYXQgbW9zdCBvbmUKKyAgICAvLyBpbnN0YW5jZSBv
ZiBhbnkgZ2l2ZW4gZXJyb3IsIGFuZCByZXR1cm5zIHRoZW0gZnJvbSBjYWxscyB0bworICAgIC8v
IGdldEVycm9yIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQuCisgICAgdm9pZCBzeW50aGVz
aXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVycm9yKTsKKworICBwcml2YXRlOgorICAgIEdyYXBo
aWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpOwor
CisgICAgLy8gRWFjaCBwbGF0Zm9ybSBtdXN0IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2Yg
dGhpcyBtZXRob2QuCisgICAgLy8KKyAgICAvLyBHZXRzIHRoZSBkYXRhIGZvciB0aGUgZ2l2ZW4g
SW1hZ2UgaW50byBvdXRwdXRWZWN0b3IgaW4gdGhlCisgICAgLy8gZm9ybWF0IHNwZWNpZmllZCBi
eSB0aGUgKE9wZW5HTC1zdHlsZSkgZm9ybWF0IGFuZCB0eXBlCisgICAgLy8gYXJndW1lbnRzLiBE
ZXNwaXRlIHRoZSBmYWN0IHRoYXQgdGhlIG91dHB1dFZlY3RvciBjb250YWlucworICAgIC8vIHVp
bnQ4X3QsIGlmIHRoZSBmb3JtYXQgYW5kIHR5cGUgc3BlY2lmeSBwYWNrZWQgcGl4ZWxzLCB0aGVu
CisgICAgLy8gaXQgd2lsbCBlc3NlbnRpYWxseSBjb250YWluIHVpbnQxNl90IGFmdGVyIHRoZSBl
eHRyYWN0aW9uCisgICAgLy8gcHJvY2Vzcy4KKyAgICAvLworICAgIC8vIElmIHByZW11bHRpcGx5
QWxwaGEgaXMgdHJ1ZSwgdGhlIGFscGhhIGNoYW5uZWwsIGlmIGFueSwKKyAgICAvLyB3aWxsIGJl
IG11bHRpcGxpZWQgaW50byB0aGUgY29sb3IgY2hhbm5lbHMgZHVyaW5nIHRoZQorICAgIC8vIGV4
dHJhY3Rpb24gcHJvY2Vzcy4gVGhpcyBwcmVtdWx0aXBsaWNhdGlvbiBvY2N1cnMgYmVmb3JlCisg
ICAgLy8gYW55IHBhY2tpbmcgb2YgcGl4ZWwgZGF0YS4KKyAgICAvLworICAgIC8vIE5vIHZlcnRp
Y2FsIGZsaXAgb2YgdGhlIGltYWdlIGRhdGEgaXMgcGVyZm9ybWVkIGJ5IHRoaXMKKyAgICAvLyBt
ZXRob2QuCisgICAgYm9vbCBnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAorICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLAorICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgb3V0cHV0VmVjdG9y
KTsKKworICAgIC8vIFBvc3NpYmxlIGFscGhhIG9wZXJhdGlvbnMgdGhhdCBtYXkgbmVlZCB0byBv
Y2N1ciBkdXJpbmcKKyAgICAvLyBwaXhlbCBwYWNraW5nLiBGSVhNRToga0FscGhhRG9Vbm11bHRp
cGx5IGlzIGxvc3N5IGFuZCBtdXN0CisgICAgLy8gYmUgcmVtb3ZlZC4KKyAgICBlbnVtIEFscGhh
T3AgeworICAgICAgICBrQWxwaGFEb05vdGhpbmcgPSAwLAorICAgICAgICBrQWxwaGFEb1ByZW11
bHRpcGx5ID0gMSwKKyAgICAgICAga0FscGhhRG9Vbm11bHRpcGx5ID0gMgorICAgIH07CiAKLSAg
ICAgICAgLy8gUG9zc2libGUgYWxwaGEgb3BlcmF0aW9ucyB0aGF0IG1heSBuZWVkIHRvIG9jY3Vy
IGR1cmluZwotICAgICAgICAvLyBwaXhlbCBwYWNraW5nLiBGSVhNRToga0FscGhhRG9Vbm11bHRp
cGx5IGlzIGxvc3N5IGFuZCBtdXN0Ci0gICAgICAgIC8vIGJlIHJlbW92ZWQuCi0gICAgICAgIGVu
dW0gQWxwaGFPcCB7Ci0gICAgICAgICAgICBrQWxwaGFEb05vdGhpbmcgPSAwLAotICAgICAgICAg
ICAga0FscGhhRG9QcmVtdWx0aXBseSA9IDEsCi0gICAgICAgICAgICBrQWxwaGFEb1VubXVsdGlw
bHkgPSAyCi0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gSGVscGVyIGZvciBnZXRJbWFnZURhdGEg
d2hpY2ggaW1wbGVtZW50cyBwYWNraW5nIG9mIHBpeGVsCi0gICAgICAgIC8vIGRhdGEgaW50byB0
aGUgc3BlY2lmaWVkIE9wZW5HTCBkZXN0aW5hdGlvbiBmb3JtYXQgYW5kIHR5cGUuCi0gICAgICAg
IC8vIEEgc291cmNlVW5wYWNrQWxpZ25tZW50IG9mIHplcm8gaW5kaWNhdGVzIHRoYXQgdGhlIHNv
dXJjZQotICAgICAgICAvLyBkYXRhIGlzIHRpZ2h0bHkgcGFja2VkLiBOb24temVybyB2YWx1ZXMg
bWF5IHRha2UgYSBzbG93IHBhdGguCi0gICAgICAgIC8vIERlc3RpbmF0aW9uIGRhdGEgd2lsbCBo
YXZlIG5vIGdhcHMgYmV0d2VlbiByb3dzLgotICAgICAgICBib29sIHBhY2tQaXhlbHMoY29uc3Qg
dWludDhfdCogc291cmNlRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZURhdGFG
b3JtYXQgc291cmNlRGF0YUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlVW5wYWNrQWxpZ25t
ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0aW9uRm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0aW9uVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFscGhhT3AgYWxwaGFPcCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQqIGRlc3RpbmF0aW9uRGF0YSk7CisgICAgLy8gSGVscGVyIGZvciBn
ZXRJbWFnZURhdGEgd2hpY2ggaW1wbGVtZW50cyBwYWNraW5nIG9mIHBpeGVsCisgICAgLy8gZGF0
YSBpbnRvIHRoZSBzcGVjaWZpZWQgT3BlbkdMIGRlc3RpbmF0aW9uIGZvcm1hdCBhbmQgdHlwZS4K
KyAgICAvLyBBIHNvdXJjZVVucGFja0FsaWdubWVudCBvZiB6ZXJvIGluZGljYXRlcyB0aGF0IHRo
ZSBzb3VyY2UKKyAgICAvLyBkYXRhIGlzIHRpZ2h0bHkgcGFja2VkLiBOb24temVybyB2YWx1ZXMg
bWF5IHRha2UgYSBzbG93IHBhdGguCisgICAgLy8gRGVzdGluYXRpb24gZGF0YSB3aWxsIGhhdmUg
bm8gZ2FwcyBiZXR3ZWVuIHJvd3MuCisgICAgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZURhdGEsCisgICAgICAgICAgICAgICAgICAgIFNvdXJjZURhdGFGb3JtYXQgc291cmNl
RGF0YUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgc291cmNlVW5wYWNrQWxpZ25tZW50LAorICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgZGVzdGluYXRpb25Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBkZXN0aW5hdGlvblR5cGUsCisgICAgICAgICAgICAgICAgICAgIEFscGhhT3Ag
YWxwaGFPcCwKKyAgICAgICAgICAgICAgICAgICAgdm9pZCogZGVzdGluYXRpb25EYXRhKTsKIAog
I2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIHVzZXIn
cyByZXF1ZXN0ZWQgY29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLAotICAgICAgICAvLyBpbiBw
YXJ0aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3Vs
ZCBvcgotICAgICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJp
bGl0aWVzIG9mIHRoZSBPcGVuR0wKLSAgICAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgICAg
IHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CisgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhl
IHVzZXIncyByZXF1ZXN0ZWQgY29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLAorICAgIC8vIGlu
IHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNv
dWxkIG9yCisgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxp
dGllcyBvZiB0aGUgT3BlbkdMCisgICAgLy8gaW1wbGVtZW50YXRpb24uCisgICAgdm9pZCB2YWxp
ZGF0ZUF0dHJpYnV0ZXMoKTsKICNlbmRpZgogCi0gICAgICAgIGludCBtX2N1cnJlbnRXaWR0aCwg
bV9jdXJyZW50SGVpZ2h0OwotICAgICAgICAKKyAgICBpbnQgbV9jdXJyZW50V2lkdGgsIG1fY3Vy
cmVudEhlaWdodDsKKwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgQXR0cmlidXRlcyBtX2F0
dHJzOwotICAgICAgICBWZWN0b3I8VmVjdG9yPGZsb2F0PiA+IG1fdmVydGV4QXJyYXk7Ci0gICAg
ICAgIAotICAgICAgICBDR0xDb250ZXh0T2JqIG1fY29udGV4dE9iajsKLSAgICAgICAgUmV0YWlu
UHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKLSAgICAgICAgR0x1aW50IG1fdGV4dHVyZTsK
LSAgICAgICAgR0x1aW50IG1fZmJvOwotICAgICAgICBHTHVpbnQgbV9kZXB0aFN0ZW5jaWxCdWZm
ZXI7Ci0KLSAgICAgICAgLy8gRm9yIHRyYWNraW5nIHdoaWNoIEZCTyBpcyBib3VuZAotICAgICAg
ICBHTHVpbnQgbV9ib3VuZEZCTzsKLQotICAgICAgICAvLyBGb3IgbXVsdGlzYW1wbGluZwotICAg
ICAgICBHTHVpbnQgbV9tdWx0aXNhbXBsZUZCTzsKLSAgICAgICAgR0x1aW50IG1fbXVsdGlzYW1w
bGVEZXB0aFN0ZW5jaWxCdWZmZXI7Ci0gICAgICAgIEdMdWludCBtX211bHRpc2FtcGxlQ29sb3JC
dWZmZXI7Ci0KLSAgICAgICAgLy8gRXJyb3JzIHJhaXNlZCBieSBzeW50aGVzaXplR0xFcnJvcigp
LgotICAgICAgICBMaXN0SGFzaFNldDx1bnNpZ25lZCBsb25nPiBtX3N5bnRoZXRpY0Vycm9yczsK
LSNlbmRpZiAgICAgICAgCisgICAgQXR0cmlidXRlcyBtX2F0dHJzOworICAgIFZlY3RvcjxWZWN0
b3I8ZmxvYXQ+ID4gbV92ZXJ0ZXhBcnJheTsKIAotICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB0
aGlzIHdvdWxkIGJlIHVzZWQgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICBDR0xDb250ZXh0T2JqIG1f
Y29udGV4dE9iajsKKyAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworICAg
IEdMdWludCBtX3RleHR1cmU7CisgICAgR0x1aW50IG1fZmJvOworICAgIEdMdWludCBtX2RlcHRo
U3RlbmNpbEJ1ZmZlcjsKKworICAgIC8vIEZvciB0cmFja2luZyB3aGljaCBGQk8gaXMgYm91bmQK
KyAgICBHTHVpbnQgbV9ib3VuZEZCTzsKKworICAgIC8vIEZvciBtdWx0aXNhbXBsaW5nCisgICAg
R0x1aW50IG1fbXVsdGlzYW1wbGVGQk87CisgICAgR0x1aW50IG1fbXVsdGlzYW1wbGVEZXB0aFN0
ZW5jaWxCdWZmZXI7CisgICAgR0x1aW50IG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcjsKKworICAg
IC8vIEVycm9ycyByYWlzZWQgYnkgc3ludGhlc2l6ZUdMRXJyb3IoKS4KKyAgICBMaXN0SGFzaFNl
dDx1bnNpZ25lZCBsb25nPiBtX3N5bnRoZXRpY0Vycm9yczsKKyNlbmRpZgorCisgICAgLy8gRklY
TUU6IGlkZWFsbHkgdGhpcyB3b3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMuCiAjaWYgUExB
VEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKFFUKQotICAgICAgICBmcmllbmQgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDsKLSAgICAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw+IG1faW50ZXJuYWw7CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw+IG1faW50ZXJu
YWw7CiAjZW5kaWYKLSAgICB9OworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0Njg2KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA4LTA0ICBLZW5uZXRoIFJ1
c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTdHlsZSBjbGVhbnVwcyBpbiBXZWJHTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3NjEKKworICAgICAgICBDbGVhbmVk
IHVwIGFsbCBzdHlsZSB2aW9sYXRpb25zIGluIFdlYkdMLXJlbGF0ZWQgZmlsZXMgcmVwb3J0ZWQg
YnkKKyAgICAgICAgY2hlY2std2Via2l0LXN0eWxlLiBObyBsb2dpYyBvciBvdGhlciBjaGFuZ2Vz
LiBCdWlsdCBXZWJLaXQgYW5kCisgICAgICAgIENocm9taXVtIGFuZCByYW4gV2ViR0wgbGF5b3V0
IHRlc3RzLgorCisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKToKKyAgICAgICAgKiBzcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bC5jcHA6CisgICAgICAgICogc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuaDoK
KwogMjAxMC0wOC0wMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDY0Njg1KQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEzICsz
OCwxMyBAQAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiRmxvYXQz
MkFycmF5LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFn
ZURhdGEuaCIKLSNpbmNsdWRlICJJbnQ4QXJyYXkuaCIKLSNpbmNsdWRlICJGbG9hdDMyQXJyYXku
aCIKICNpbmNsdWRlICJJbnQzMkFycmF5LmgiCisjaW5jbHVkZSAiSW50OEFycmF5LmgiCiAjaW5j
bHVkZSAiVWludDhBcnJheS5oIgogI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCkBAIC00MTQsOSArNDE0LDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFJlbgogICAgICAgICAgICAgbV9yZXNpemlu
Z0JpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbXBsLT53aWR0aCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbXBsLT5oZWlnaHQoKSk7Ci0gICAgICAg
ICAgICBpZiAoIW1fcmVzaXppbmdCaXRtYXAuYWxsb2NQaXhlbHMoKSkgeworICAgICAgICAgICAg
aWYgKCFtX3Jlc2l6aW5nQml0bWFwLmFsbG9jUGl4ZWxzKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJlYWRiYWNrQml0bWFwID0g
Jm1fcmVzaXppbmdCaXRtYXA7CiAgICAgfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJH
cmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwCShyZXZpc2lvbiA2
NDY4NSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxMyBAQAogCiAjaWYgRU5BQkxF
KDNEX0NBTlZBUykKIAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0K
ICNpbmNsdWRlICJXZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmgiCiAKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJp
bmcuaD4KKwogI2lmIE9TKExJTlVYKQogI2luY2x1ZGUgPGRsZmNuLmg+CiAjZW5kaWYKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZh
dWx0SW1wbC5oCShyZXZpc2lvbiA2NDY4NSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3Jh
cGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsOCArMzI1
LDggQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBib29sIHNfaW5pdGlhbGl6ZWRHTEVXOwogI2lm
IE9TKFdJTkRPV1MpCi0gICAgSFdORCAgbV9jYW52YXNXaW5kb3c7Ci0gICAgSERDICAgbV9jYW52
YXNEQzsKKyAgICBIV05EIG1fY2FudmFzV2luZG93OworICAgIEhEQyBtX2NhbnZhc0RDOwogICAg
IEhHTFJDIG1fY29udGV4dE9iajsKICNlbGlmIFBMQVRGT1JNKENHKQogICAgIENHTFBCdWZmZXJP
YmogbV9wYnVmZmVyOwo=
</data>
<flag name="review"
          id="51885"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="51886"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>