public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/2736: g++ misinterpreting initializer syntax
@ 2001-05-04 15:36 Phil Edwards
  0 siblings, 0 replies; 2+ messages in thread
From: Phil Edwards @ 2001-05-04 15:36 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c++/2736; it has been noted by GNATS.

From: Phil Edwards <pedwards@disaster.jaj.com>
To: derrick@caltech.edu
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c++/2736: g++ misinterpreting initializer syntax
Date: Fri, 4 May 2001 17:13:22 -0400

 On Fri, May 04, 2001 at 11:39:22AM -0000, derrick@caltech.edu wrote:
 > >Release:        2.95.3
 > >Organization:
 > >Environment:
 > i686-pc-linux-gnu (RedHat 6)
 > >Description:
 > I have the following in an initializer list:
 > y(Range(6,7))
 > where y is a Blitz++ array.  g++ seems to be trying to 
 > interpret the Range(6,7) as a function call rather than
 > as a constructor for a Range object. . . it gives the
 
 Bad news and good news.  Sort of.
 
 Bad news:  I can't reproduce this using today's GCC 3.0 snapshot due to
 other errors, mostly namespace-related.  Note that 2.95.3 treated namespace
 std the same as the global namespace by design, so lots of little things
 could slip through.  With 3.x this is not the case, and so I get all kinds
 of errors about math functions and namespace std.
 
 Good news:  this looks like a long-standing well-known bug in the C++ parser.
 See <URL: http://gcc.gnu.org/bugs.html#known > and the "parse errors for
 simple code" section for similar examples.
 
 Basically there is an infamous ambiguity between declaring a variable with
 certain kinds of temporaries as constructor arguments, and declaring a
 function with possibly-unnamed arguments.  The C++ standard requires the
 compiler to go with the function declaration if it can't figure it out.
 See <URL: http://compilers.iecc.com/comparch/article/01-03-052 > for another
 example.
 
 If you try the workarounds in either of those URLs (e.g., redundant parens)
 and it works, please append a note to this PR so we can close it.
 
 
 Luck++;
 Phil
 
 -- 
 pedwards at disaster dot jaj dot com  |  pme at sources dot redhat dot com
 devphil at several other less interesting addresses in various dot domains
 The gods do not protect fools.  Fools are protected by more capable fools.


^ permalink raw reply	[flat|nested] 2+ messages in thread

* c++/2736: g++ misinterpreting initializer syntax
@ 2001-05-04  4:46 derrick
  0 siblings, 0 replies; 2+ messages in thread
From: derrick @ 2001-05-04  4:46 UTC (permalink / raw)
  To: gcc-gnats

>Number:         2736
>Category:       c++
>Synopsis:       g++ misinterpreting initializer syntax
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Fri May 04 04:46:02 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     derrick@caltech.edu
>Release:        2.95.3
>Organization:
>Environment:
i686-pc-linux-gnu (RedHat 6)
>Description:
I have the following in an initializer list:
y(Range(6,7))
where y is a Blitz++ array.  g++ seems to be trying to 
interpret the Range(6,7) as a function call rather than
as a constructor for a Range object. . . it gives the
following error:
Reading specs from /ufs/newman/users/derrick/gnu/gcc-2.95.3/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/specs
gcc version 2.95.3 20010315 (release)
 /ufs/newman/users/derrick/gnu/gcc-2.95.3/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/cc1plus testCubic.ii -quiet -version -o /tmp/ccsNqBxH.s
GNU C++ version 2.95.3 20010315 (release) (i686-pc-linux-gnu) compiled by GNU C version 2.95.3 20010315 (release).
CubicSpline.h: In method `CubicSpline<double>::CubicSpline(blitz::Array<double,1>, blitz::Array<double,1>, bool = true, bool = true)':
testCubic.cc:28:   instantiated from here
CubicSpline.h:15: non-lvalue in unary `&'
CubicSpline.h:15: no match for call to `(blitz::Range) (int &, int &)'
/ufs/newman/users/derrick/include/blitz/range.h:190: candidates are: int blitz::Range::operator ()(unsigned int) const

>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="testCubic.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="testCubic.ii"

IyAwICJ0ZXN0Q3ViaWMuY2MiCiNkZWZpbmUgX19CQVNFX0ZJTEVfXyAidGVzdEN1YmljLmNjIgoj
IDAgInRlc3RDdWJpYy5jYyIKI2RlZmluZSBfX1ZFUlNJT05fXyAiMi45NS4zIDIwMDEwMzE1IChy
ZWxlYXNlKSIKIyAwICJ0ZXN0Q3ViaWMuY2MiCiNkZWZpbmUgX19TSVpFX1RZUEVfXyB1bnNpZ25l
ZCBpbnQKIyAwICJ0ZXN0Q3ViaWMuY2MiCiNkZWZpbmUgX19QVFJESUZGX1RZUEVfXyBpbnQKIyAw
ICJ0ZXN0Q3ViaWMuY2MiCiNkZWZpbmUgX19XQ0hBUl9UWVBFX18gX193Y2hhcl90CiMgMCAidGVz
dEN1YmljLmNjIgojZGVmaW5lIF9fREFURV9fICJNYXkgIDQgMjAwMSIKIyAwICJ0ZXN0Q3ViaWMu
Y2MiCiNkZWZpbmUgX19USU1FX18gIjA0OjE5OjA0IgojIDAgInRlc3RDdWJpYy5jYyIKI2RlZmlu
ZSBfX1NURENfXyAxCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMSAidGVzdEN1YmljLmNjIgojIDEgIkN1YmljU3BsaW5lLmgiIDEKIAog
CgojZGVmaW5lIEN1YmljU3BsaW5lX2gKCiMgMSAiSW50ZXJwb2xhdGlvbi5oIiAxCiAKCgojZGVm
aW5lIEludGVycG9sYXRpb25faAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9hcnJheS5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKI2RlZmluZSBCWl9BUlJBWV9ICgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9CTElUWl9ICgogCgoKCgoj
IDcwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYmxpdHouaCIKCgoj
IDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9jb21waWxlci5oIiAx
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5l
IEJaX0NPTVBJTEVSX0gKCiAKIAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovY29uZmlnLmgiIDEKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L2NvbmZpZy5nY2MuaCIgMQogCgoKCgoKCgoKIAoKI2RlZmluZSBCWl9DT05GSUdf
SAogCiNkZWZpbmUgQlpfQ09NUElMRVJfTkFNRSAgICJnKysiCiNkZWZpbmUgQlpfQ09NUElMRVJf
T1BUSU9OUyAiLWZ0ZW1wbGF0ZS1kZXB0aC0zMCIKI2RlZmluZSBCWl9PU19OQU1FICAgICAgICAg
IkxpbnV4IDIuMi4xNC01LjAiCiNkZWZpbmUgQlpfQlpDT05GSUdfREFURSAgICJGcmkgRGVjIDE1
IDAyOjIxOjM5IFBTVCAyMDAwIgojZGVmaW5lIEJaX1BMQVRGT1JNICAgICAgICAiaTY4Ni1wYy1s
aW51eC1nbnUiCiAKI2RlZmluZSBCWl9OQU1FU1BBQ0VTCiNkZWZpbmUgQlpfRVhDRVBUSU9OUwoj
ZGVmaW5lIEJaX1JUVEkKI2RlZmluZSBCWl9NRU1CRVJfQ09OU1RBTlRTCgojZGVmaW5lIEJaX0VY
UExJQ0lUCiNkZWZpbmUgQlpfTVVUQUJMRQojZGVmaW5lIEJaX1RZUEVOQU1FCgojZGVmaW5lIEJa
X05DRUdfUkVTVFJJQ1RfRUdDUwojZGVmaW5lIEJaX0JPT0wKI2RlZmluZSBCWl9DT05TVF9DQVNU
CiNkZWZpbmUgQlpfU1RBVElDX0NBU1QKI2RlZmluZSBCWl9SRUlOVEVSUFJFVF9DQVNUCiNkZWZp
bmUgQlpfRFlOQU1JQ19DQVNUCiNkZWZpbmUgQlpfVEVNUExBVEVTCiNkZWZpbmUgQlpfUEFSVElB
TF9TUEVDSUFMSVpBVElPTgojZGVmaW5lIEJaX1BBUlRJQUxfT1JERVJJTkcKI2RlZmluZSBCWl9E
RUZBVUxUX1RFTVBMQVRFX1BBUkFNRVRFUlMKI2RlZmluZSBCWl9NRU1CRVJfVEVNUExBVEVTCiNk
ZWZpbmUgQlpfTUVNQkVSX1RFTVBMQVRFU19PVVRTSURFX0NMQVNTCiNkZWZpbmUgQlpfRlVMTF9T
UEVDSUFMSVpBVElPTl9TWU5UQVgKI2RlZmluZSBCWl9GVU5DVElPTl9OT05UWVBFX1BBUkFNRVRF
UlMKI2RlZmluZSBCWl9URU1QTEFURV9RVUFMSUZJRURfQkFTRV9DTEFTUwojZGVmaW5lIEJaX1RF
TVBMQVRFX1FVQUxJRklFRF9SRVRVUk5fVFlQRQojZGVmaW5lIEJaX0VYUExJQ0lUX1RFTVBMQVRF
X0ZVTkNUSU9OX1FVQUxJRklDQVRJT04KI2RlZmluZSBCWl9URU1QTEFURVNfQVNfVEVNUExBVEVf
QVJHVU1FTlRTCiNkZWZpbmUgQlpfVEVNUExBVEVfS0VZV09SRF9RVUFMSUZJRVIKI2RlZmluZSBC
Wl9URU1QTEFURV9TQ09QRURfQVJHVU1FTlRfTUFUQ0hJTkcKI2RlZmluZSBCWl9UWVBFX1BST01P
VElPTgojZGVmaW5lIEJaX1VTRV9OVU1UUkFJVAojZGVmaW5lIEJaX0VOVU1fQ09NUFVUQVRJT05T
CiNkZWZpbmUgQlpfRU5VTV9DT01QVVRBVElPTlNfV0lUSF9DQVNUCiNkZWZpbmUgQlpfSEFWRV9D
T01QTEVYCgojZGVmaW5lIEJaX0hBVkVfQ0xJTUlUUwojZGVmaW5lIEJaX0hBVkVfVkFMQVJSQVkK
CiNkZWZpbmUgQlpfSEFWRV9JRUVFX01BVEgKCiNkZWZpbmUgQlpfTUFUSF9GTl9JTl9OQU1FU1BB
Q0VfU1RECiNkZWZpbmUgQlpfQ09NUExFWF9NQVRIX0lOX05BTUVTUEFDRV9TVEQKI2RlZmluZSBC
Wl9IQVZFX1NURAojZGVmaW5lIEJaX0hBVkVfU1RMCiNkZWZpbmUgQlpfSEFWRV9SVVNBR0UKIAoK
IyAyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovY29uZmlnLmgiIDIK
CgoKCgoKCiMgNTQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9jb21w
aWxlci5oIiAyCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICAgI2RlZmluZSBCWl9OQU1F
U1BBQ0UoWCkgICAgICAgIG5hbWVzcGFjZSBYIHsKICAgICNkZWZpbmUgQlpfTkFNRVNQQUNFX0VO
RCAgICAgICB9CiAgICAjZGVmaW5lIEJaX1VTSU5HX05BTUVTUEFDRShYKSAgdXNpbmcgbmFtZXNw
YWNlIFg7CgoKCgoKCgogIAoKCgogICAgI2RlZmluZSBCWl9URU1QTEFURV9ERUZBVUxUKFgpICAg
PSBYCgoKCgoKICAgICNkZWZpbmUgX2J6X2V4cGxpY2l0ICAgICBleHBsaWNpdAoKCgoKCiAgICAj
ZGVmaW5lIF9iel90eXBlbmFtZSAgICAgdHlwZW5hbWUKCgoKCgogICAgI2RlZmluZSBfYnpfbXV0
YWJsZSAgICAgIG11dGFibGUKCgoKCgoKCgoKCgogICAgI2RlZmluZSBfYnpfcmVzdHJpY3QgICAg
IF9fcmVzdHJpY3RfXwoKCgoKCiAgICAjZGVmaW5lIF9iel9ib29sICAgICAgICAgYm9vbAogICAg
I2RlZmluZSBfYnpfdHJ1ZSAgICAgICAgIHRydWUKICAgICNkZWZpbmUgX2J6X2ZhbHNlICAgICAg
ICBmYWxzZQoKCgoKCgoKICAgICNkZWZpbmUgQlpfRU5VTV9DQVNUKFgpICAgKGludClYCgoKCgoK
CgogICNkZWZpbmUgQlpfTUFUSEZOX1NDT1BFKHgpIHN0ZDo6eAoKCgoKCgoKICAjZGVmaW5lIEJa
X0NNQVRIRk5fU0NPUEUoeCkgc3RkOjp4CgoKCgoKCgogICNkZWZpbmUgQlpfSUVFRU1BVEhGTl9T
Q09QRSh4KSA6OngKCgoKCgogICNkZWZpbmUgQlpfQkxJVFpfU0NPUEUoeCkgYmxpdHo6OngKCgoK
CgogICNkZWZpbmUgQlpfU1REX1NDT1BFKHgpIHN0ZDo6eAoKCgoKCgojIDcyICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYmxpdHouaCIgMgoKIyAxICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdHVuaW5nLmgiIDEKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9UVU5JTkdfSAoK
IAogCiNkZWZpbmUgQlpfTDFfQ0FDSEVfRVNUSU1BVEVEX1NJWkUgICAgODE5MgojZGVmaW5lIEJa
X0wyX0NBQ0hFX0VTVElNQVRFRF9TSVpFICAgIDY1NTM2CgoKCiNkZWZpbmUgQlpfUEFTU19FWFBS
X0JZX1ZBTFVFCgojZGVmaW5lIEJaX01BTlVBTF9WRUNFWFBSX0NPUFlfQ09OU1RSVUNUT1IKCgoK
I2RlZmluZSBCWl9JTkxJTkVfR1JPVVAxCiNkZWZpbmUgQlpfSU5MSU5FX0dST1VQMgojZGVmaW5l
IEJaX0NPTExBUFNFX0xPT1BTCiNkZWZpbmUgQlpfVVNFX0ZBU1RfUkVBRF9BUlJBWV9FWFBSCiNk
ZWZpbmUgQlpfQVJSQVlfRVhQUl9VU0VfQ09NTU9OX1NUUklERQoKCgojZGVmaW5lIEJaX0FSUkFZ
XzJEX1NURU5DSUxfVElMSU5HCiNkZWZpbmUgQlpfQVJSQVlfMkRfU1RFTkNJTF9USUxFX1NJWkUg
ICAgICAgMTI4CgoKI2RlZmluZSBCWl9GQVNUX0NPTVBJTEUKCgoKICNkZWZpbmUgQlpfTkVXX0VY
UFJFU1NJT05fVEVNUExBVEVTCgoKCiNkZWZpbmUgQlpfRVRQQVJNU19DT05TVFJFRgojZGVmaW5l
IEJaX05PX0lOTElORV9FVAoKCiAKCgoKCgoKCgoKCgoKICAKICAKIAogCiAKCgoKCgoKCiAjZGVm
aW5lIF9iel9pbmxpbmUxIGlubGluZQoKCgoKCiAjZGVmaW5lIF9iel9pbmxpbmUyIGlubGluZQoK
CgoKCiAjZGVmaW5lIF9iel9pbmxpbmVfZXQgCgoKCgoKICNkZWZpbmUgQlpfRVRQQVJNKFgpIGNv
bnN0IFgmCgoKCgojIDE0NiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L3R1bmluZy5oIgoKCiAKCgoKCgoKI2RlZmluZSBCWl9OT19QUk9QQUdBVEUoWCkgICBYCgoKCgoK
CgoKCgoKIyA3MyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2JsaXR6
LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3RhdS5o
IiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVEFVX0gK
CgoKCgoKICNkZWZpbmUgVFlQRV9TVFJJTkcocHJvZmlsZVN0cmluZywgc3RyKQogI2RlZmluZSBQ
Uk9GSUxFRF9CTE9DSyhuYW1lLCB0eXBlKQogI2RlZmluZSBUQVVfVFlQRV9TVFJJTkcocHJvZmls
ZVN0cmluZywgc3RyKQogI2RlZmluZSBUQVVfUFJPRklMRShuYW1lLCB0eXBlLCBncm91cCkKICNk
ZWZpbmUgVEFVX1BST0ZJTEVfVElNRVIodmFyLCBuYW1lLCB0eXBlLCBncm91cCkKICNkZWZpbmUg
VEFVX1BST0ZJTEVfU1RBUlQodmFyKQogI2RlZmluZSBUQVVfUFJPRklMRV9TVE9QKHZhcikKICNk
ZWZpbmUgVEFVX1BST0ZJTEVfU1RNVChzdG10KQogI2RlZmluZSBUQVVfUFJPRklMRV9FWElUKG1z
ZykKICNkZWZpbmUgVEFVX1BST0ZJTEVfSU5JVChhcmdjLCBhcmd2KQogI2RlZmluZSBUQVVfUFJP
RklMRV9TRVRfTk9ERShub2RlKQogI2RlZmluZSBDVChvYmopCgoKCiMgNzQgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAyCgoKIyAxICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmluZyIgMSAzCiAKCgojZGVm
aW5lIF9fU1RSSU5HX18KCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIu
OTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5j
bHVkZS9nKystMy9zdGQvYmFzdHJpbmcuaCIgMSAzCiAKIAoKIAogCiAKIAogCgogCiAKIAogCgog
CiAKIAoKIAogCiAKIAogCgogCiAKCgojZGVmaW5lIF9fQkFTVFJJTkdfXwoKCiNwcmFnbWEgaW50
ZXJmYWNlCgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL2NzdGRkZWYiIDEgMwogCiAKCgojZGVmaW5lIF9fQ1NURERFRl9fCiMgMSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgoKCgojZGVmaW5lIF9T
VERERUZfSAojZGVmaW5lIF9TVERERUZfSF8KIAojZGVmaW5lIF9BTlNJX1NURERFRl9ICiAKI2Rl
ZmluZSBfX1NURERFRl9IX18KCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8y
Ljk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgogCgogCgoKCgoKCgoKCgojZGVmaW5lIF9QVFJESUZGX1QKI2RlZmluZSBfVF9QVFJESUZG
XwojZGVmaW5lIF9UX1BUUkRJRkYKI2RlZmluZSBfX1BUUkRJRkZfVAojZGVmaW5lIF9QVFJESUZG
X1RfCiNkZWZpbmUgX0JTRF9QVFJESUZGX1RfCiNkZWZpbmUgX19faW50X3B0cmRpZmZfdF9oCiNk
ZWZpbmUgX0dDQ19QVFJESUZGX1QKCgoKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwoKCgoKCgoKCgog
CgoKCgogCgogCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIF9fc2l6ZV90X18JCiNkZWZpbmUgX1NJ
WkVfVAojZGVmaW5lIF9TWVNfU0laRV9UX0gKI2RlZmluZSBfVF9TSVpFXwojZGVmaW5lIF9UX1NJ
WkUKI2RlZmluZSBfX1NJWkVfVAojZGVmaW5lIF9TSVpFX1RfCiNkZWZpbmUgX0JTRF9TSVpFX1Rf
CiNkZWZpbmUgX1NJWkVfVF9ERUZJTkVEXwojZGVmaW5lIF9TSVpFX1RfREVGSU5FRAojZGVmaW5l
IF9fX2ludF9zaXplX3RfaAojZGVmaW5lIF9HQ0NfU0laRV9UCiNkZWZpbmUgX1NJWkVUXwojZGVm
aW5lIF9fc2l6ZV90CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX193Y2hhcl90X18JCiNk
ZWZpbmUgX1dDSEFSX1QKI2RlZmluZSBfVF9XQ0hBUl8KI2RlZmluZSBfVF9XQ0hBUgojZGVmaW5l
IF9fV0NIQVJfVAojZGVmaW5lIF9XQ0hBUl9UXwojZGVmaW5lIF9CU0RfV0NIQVJfVF8KI2RlZmlu
ZSBfV0NIQVJfVF9ERUZJTkVEXwojZGVmaW5lIF9XQ0hBUl9UX0RFRklORUQKI2RlZmluZSBfV0NI
QVJfVF9ICiNkZWZpbmUgX19faW50X3djaGFyX3RfaAojZGVmaW5lIF9fSU5UX1dDSEFSX1RfSAoj
ZGVmaW5lIF9HQ0NfV0NIQVJfVAoKIAoKCgoKCgoKCgoKI3VuZGVmIF9CU0RfV0NIQVJfVF8KCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIF9XSU5UX1QKCgojZGVmaW5l
IF9fV0lOVF9UWVBFX18gdW5zaWduZWQgaW50Cgp0eXBlZGVmIHVuc2lnbmVkIGludCAgd2ludF90
OwoKCgoKIAoKIAoKIyAzMTcgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1
LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgoKCiAKCgoKCiNkZWZpbmUgTlVMTCBfX251bGwKCgoKCgoKCgogCgojZGVmaW5lIG9mZnNl
dG9mKFRZUEUsIE1FTUJFUikgKChzaXplX3QpICYoKFRZUEUgKikwKS0+TUVNQkVSKQoKCgoKCiMg
NiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9jc3RkZGVm
IiAyIDMKCgojIDM1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0ZC9iYXN0cmluZy5oIiAyIDMKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9n
bnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4v
Li4vLi4vaW5jbHVkZS9nKystMy9zdGQvc3RyYWl0cy5oIiAxIDMKIAogCgogCiAKIAogCiAKCiAK
IAogCiAKCiAKIAogCgogCiAKIAogCiAKCiAKIAoKCiNkZWZpbmUgX19TVFJJTkdfQ0hBUl9UUkFJ
VFNfXwoKCiAKI3ByYWdtYSBpbnRlcmZhY2UgInN0ZC9zdHJhaXRzLmgiCgoKCgpleHRlcm4gIkMr
KyIgewp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+CnN0cnVjdCBzdHJpbmdfY2hhcl90cmFpdHMgewog
IHR5cGVkZWYgY2hhclQgY2hhcl90eXBlOyAgCgogICAKCiAgc3RhdGljIHZvaWQgYXNzaWduIChj
aGFyX3R5cGUmIGMxLCBjb25zdCBjaGFyX3R5cGUmIGMyKQogICAgeyBjMSA9IGMyOyB9CiAgc3Rh
dGljIGJvb2wgZXEgKGNvbnN0IGNoYXJfdHlwZSYgYzEsIGNvbnN0IGNoYXJfdHlwZSYgYzIpCiAg
ICB7IHJldHVybiAoYzEgPT0gYzIpOyB9CiAgc3RhdGljIGJvb2wgbmUgKGNvbnN0IGNoYXJfdHlw
ZSYgYzEsIGNvbnN0IGNoYXJfdHlwZSYgYzIpCiAgICB7IHJldHVybiAhKGMxID09IGMyKTsgfQog
IHN0YXRpYyBib29sIGx0IChjb25zdCBjaGFyX3R5cGUmIGMxLCBjb25zdCBjaGFyX3R5cGUmIGMy
KQogICAgeyByZXR1cm4gKGMxIDwgYzIpOyB9CiAgc3RhdGljIGNoYXJfdHlwZSBlb3MgKCkgeyBy
ZXR1cm4gY2hhcl90eXBlKCk7IH0gIAogIHN0YXRpYyBib29sIGlzX2RlbChjaGFyX3R5cGUgYSkg
eyByZXR1cm4gMDsgfQogICAKICAKICAgCgogIHN0YXRpYyBpbnQgY29tcGFyZSAoY29uc3QgY2hh
cl90eXBlKiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4pCiAgICB7CiAgICAgIHNp
emVfdCBpOwogICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKQoJaWYgKG5lIChzMVtpXSwgczJb
aV0pKQoJICByZXR1cm4gbHQgKHMxW2ldLCBzMltpXSkgPyAtMSA6IDE7CgogICAgICByZXR1cm4g
MDsKICAgIH0KICAgIAogIHN0YXRpYyBzaXplX3QgbGVuZ3RoIChjb25zdCBjaGFyX3R5cGUqIHMp
CiAgICB7CiAgICAgIHNpemVfdCBsID0gMDsKICAgICAgd2hpbGUgKG5lICgqcysrLCBlb3MgKCkp
KQoJKytsOwogICAgICByZXR1cm4gbDsKICAgIH0KCiAgc3RhdGljIGNoYXJfdHlwZSogY29weSAo
Y2hhcl90eXBlKiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4pCiAgICB7CiAgICAg
IGZvciAoOyBuLS07ICkKCWFzc2lnbiAoczFbbl0sIHMyW25dKTsKICAgICAgcmV0dXJuIHMxOwog
ICAgfQoKICBzdGF0aWMgY2hhcl90eXBlKiBtb3ZlIChjaGFyX3R5cGUqIHMxLCBjb25zdCBjaGFy
X3R5cGUqIHMyLCBzaXplX3QgbikKICAgIHsKICAgICAgY2hhcl90eXBlIGFbbl07CiAgICAgIHNp
emVfdCBpOwogICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKQoJYXNzaWduIChhW2ldLCBzMltp
XSk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpCglhc3NpZ24gKHMxW2ldLCBhW2ldKTsK
ICAgICAgcmV0dXJuIHMxOwogICAgfQoKICBzdGF0aWMgY2hhcl90eXBlKiBzZXQgKGNoYXJfdHlw
ZSogczEsIGNvbnN0IGNoYXJfdHlwZSYgYywgc2l6ZV90IG4pCiAgICB7CiAgICAgIGZvciAoOyBu
LS07ICkKCWFzc2lnbiAoczFbbl0sIGMpOwogICAgICByZXR1cm4gczE7CiAgICB9Cn07CgpjbGFz
cyBpc3RyZWFtOwpjbGFzcyBvc3RyZWFtOwojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvY2N0eXBlIiAxIDMKIAogCgoKI2RlZmluZSBfX0NDVFlQRV9f
CiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
I2RlZmluZSAJX0NUWVBFX0gJMQoKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSAJX0ZFQVRVUkVTX0gJMQoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgojZGVmaW5lIF9fS0VSTkVMX1NUUklDVF9OQU1FUwoKCiAKI2RlZmluZSAJ
X19VU0VfQU5TSQkxCgoKIAoKCgoKCgoKIAojIDEzOCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi
IDMKCgogCgoKCgoKI2RlZmluZSBfQlNEX1NPVVJDRQkxCiNkZWZpbmUgX1NWSURfU09VUkNFCTEK
CgogCgoKCgoKIAoKCgojZGVmaW5lIF9QT1NJWF9TT1VSQ0UJMQoKCgojZGVmaW5lIF9QT1NJWF9D
X1NPVVJDRQkxOTk1MDZMCgoKCgojZGVmaW5lIF9fVVNFX1BPU0lYCTEKCgoKI2RlZmluZSBfX1VT
RV9QT1NJWDIJMQoKCgojZGVmaW5lIF9fVVNFX1BPU0lYMTk5MzA5CTEKCgoKI2RlZmluZSBfX1VT
RV9QT1NJWDE5OTUwNgkxCgoKIyAxOTYgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCgoKCgoK
CgoKCgoKCgoKCiNkZWZpbmUgX19VU0VfTUlTQwkxCgoKCiNkZWZpbmUgX19VU0VfQlNECTEKCgoK
I2RlZmluZSBfX1VTRV9TVklECTEKCgoKCgoKCgoKCiAKI2RlZmluZSBfX1NURENfSUVDXzU1OV9f
CQkxCiNkZWZpbmUgX19TVERDX0lFQ181NTlfQ09NUExFWF9fCTEKCiAKCgoKCgoKI2RlZmluZSBf
X0dOVV9MSUJSQVJZX18gNgoKIAoKI2RlZmluZSAJX19HTElCQ19fCTIKI2RlZmluZSAJX19HTElC
Q19NSU5PUl9fCTEKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCgojZGVmaW5lIAlfU1lTX0NERUZTX0gJMQoKIAoKCgoKIAoKCgoKCiAKCgoK
I2RlZmluZSBfX1RIUk9XCXRocm93ICgpCgoKCiNkZWZpbmUgX19QKGFyZ3MpCWFyZ3MgX19USFJP
VwogCgojZGVmaW5lIF9fUE1UKGFyZ3MpCWFyZ3MKI2RlZmluZSBfX0RPVFMJCSwgLi4uCgojIDcx
ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKCgogCgoKCgojZGVmaW5lIF9fQ09OQ0FUKHgs
eSkJeCAjIyB5CiNkZWZpbmUgX19TVFJJTkcoeCkJI3gKCiAKI2RlZmluZSBfX3B0cl90IHZvaWQg
KgojZGVmaW5lIF9fbG9uZ19kb3VibGVfdCAgbG9uZyBkb3VibGUKCiMgMTAzICIvdXNyL2luY2x1
ZGUvc3lzL2NkZWZzLmgiIDMKCgoKIAoKI2RlZmluZSBfX0JFR0lOX0RFQ0xTCWV4dGVybiAiQyIg
ewojZGVmaW5lIF9fRU5EX0RFQ0xTCX0KCgoKCgogCgoKCgoKCgoKCgoKI2RlZmluZSBfX1JFRElS
RUNUKG5hbWUsIHByb3RvLCBhbGlhcykgbmFtZSBwcm90byBfX2FzbV9fIChfX0FTTU5BTUUgKCNh
bGlhcykpCiNkZWZpbmUgX19BU01OQU1FKGNuYW1lKSAgX19BU01OQU1FMiAoX19VU0VSX0xBQkVM
X1BSRUZJWF9fLCBjbmFtZSkKI2RlZmluZSBfX0FTTU5BTUUyKHByZWZpeCwgY25hbWUpIF9fU1RS
SU5HIChwcmVmaXgpIGNuYW1lCgogCgoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoK
CgoKIyAyNTAgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKCgogCgoKCgoKCgoKIAoKCgoK
CiAKCiAKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiAKCgoKI2Rl
ZmluZSBfX3N0dWJfX19rZXJuZWxfY29zbAojZGVmaW5lIF9fc3R1Yl9fX2tlcm5lbF9zaW5sCiNk
ZWZpbmUgX19zdHViX19fa2VybmVsX3RhbmwKI2RlZmluZSBfX3N0dWJfY2hmbGFncwojZGVmaW5l
IF9fc3R1Yl9lcmZjbAojZGVmaW5lIF9fc3R1Yl9lcmZsCiNkZWZpbmUgX19zdHViX2ZhdHRhY2gK
I2RlZmluZSBfX3N0dWJfZmNoZmxhZ3MKI2RlZmluZSBfX3N0dWJfZmRldGFjaAojZGVmaW5lIF9f
c3R1Yl9mZXhlY3ZlCiNkZWZpbmUgX19zdHViX2dldGNvbnRleHQKI2RlZmluZSBfX3N0dWJfZ2V0
bXNnCiNkZWZpbmUgX19zdHViX2dldHBtc2cKI2RlZmluZSBfX3N0dWJfZ3R0eQojZGVmaW5lIF9f
c3R1Yl9qMGwKI2RlZmluZSBfX3N0dWJfajFsCiNkZWZpbmUgX19zdHViX2pubAojZGVmaW5lIF9f
c3R1Yl9sZ2FtbWFsCgojZGVmaW5lIF9fc3R1Yl9sZ2FtbWFsX3IKCiNkZWZpbmUgX19zdHViX21h
ZHZpc2UKI2RlZmluZSBfX3N0dWJfbWFrZWNvbnRleHQKI2RlZmluZSBfX3N0dWJfcHV0bXNnCiNk
ZWZpbmUgX19zdHViX3B1dHBtc2cKI2RlZmluZSBfX3N0dWJfcmV2b2tlCiNkZWZpbmUgX19zdHVi
X3NldGNvbnRleHQKI2RlZmluZSBfX3N0dWJfc2V0bG9naW4KI2RlZmluZSBfX3N0dWJfc2lncmV0
dXJuCiNkZWZpbmUgX19zdHViX3NzdGsKI2RlZmluZSBfX3N0dWJfc3R0eQojZGVmaW5lIF9fc3R1
Yl9zd2FwY29udGV4dAojZGVmaW5lIF9fc3R1Yl95MGwKI2RlZmluZSBfX3N0dWJfeTFsCiNkZWZp
bmUgX19zdHViX3lubAojIDI3OCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwoKCgoKIyAy
NiAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBl
cy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiNkZWZpbmUgCV9CSVRTX1RZUEVTX0gJ
MQoKCgojZGVmaW5lIF9fbmVlZF9zaXplX3QKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8y
Ljk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgogCgogCgoKIyAxMjYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1
LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgogCgoKCgogCgogCgoKIyAxODggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCiN1bmRlZiAJX19uZWVkX3NpemVfdAoKCgogCgoKCgogCgoKIyAyNjkgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAK
CiMgMzE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoK
I3VuZGVmIE5VTEwJCQoKI2RlZmluZSBOVUxMIF9fbnVsbAoKCgoKCgoKCiAKCgoKCgoKCiMgMjkg
Ii91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiAKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRl
bnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRl
bnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDggIi91c3IvaW5jbHVk
ZS9iaXRzL3R5cGVzLmgiIDMKCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYg
dW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2
X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVk
IGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBf
X3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CQkgCnR5cGVk
ZWYgX191X2ludCBfX3VpZF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsJCSAKdHlwZWRl
ZiBfX3VfbG9uZyBfX2lub190OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CQkgCnR5cGVk
ZWYgX191X2ludCBfX25saW5rX3Q7IAkJIAp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CQkgCnR5
cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CQkgCnR5cGVkZWYgaW50IF9fcGlkX3Q7CQkJIAp0eXBl
ZGVmIGludCBfX3NzaXplX3Q7CQkJIAp0eXBlZGVmIGxvbmcgaW50IF9fcmxpbV90OwkJIAp0eXBl
ZGVmIF9fcXVhZF90IF9fcmxpbTY0X3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX2lkX3Q7CQkJIAoK
dHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsJCQkJIAoK
IAp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CQkJIAp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlw
ZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7CQkgCgwK
dHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
X19mZF9tYXNrOwoKIAojZGVmaW5lIF9fRkRfU0VUU0laRQkxMDI0CgogCiNkZWZpbmUgX19ORkRC
SVRTCSg4ICogc2l6ZW9mIChfX2ZkX21hc2spKQojZGVmaW5lIAlfX0ZERUxUKGQpCSgoZCkgLyBf
X05GREJJVFMpCiNkZWZpbmUgCV9fRkRNQVNLKGQpCSgoX19mZF9tYXNrKSAxIDw8ICgoZCkgJSBf
X05GREJJVFMpKQoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAgICAKCgoKCgogICAgX19mZF9tYXNr
IF9fZmRzX2JpdHNbMTAyNCAgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSkgXTsKI2RlZmluZSBf
X0ZEU19CSVRTKHNldCkgKChzZXQpLT5fX2Zkc19iaXRzKQoKICB9IF9fZmRfc2V0OwoKCnR5cGVk
ZWYgaW50IF9fa2V5X3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90
OwoKCiAKCiAKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBlZGVmIF9fcXVhZF90IF9f
YmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191
X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7
CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBf
X2lubzY0X3Q7CgogCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKIAp0eXBlZGVmIGxvbmcg
aW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90
OwoKIAp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCiAKCgoKCgojIDI3ICIvdXNyL2luY2x1ZGUv
Y3R5cGUuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKCiAKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L2VuZGlhbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIAlfRU5ESUFOX0gJMQoK
CgogCgoKCgoKI2RlZmluZSAJX19MSVRUTEVfRU5ESUFOCTEyMzQKI2RlZmluZSAJX19CSUdfRU5E
SUFOCTQzMjEKI2RlZmluZSAJX19QRFBfRU5ESUFOCTM0MTIKCiAKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9lbmRpYW4uaCIgMSAzCiAKCgoKCgojZGVmaW5lIF9fQllURV9PUkRFUiBfX0xJVFRMRV9F
TkRJQU4KIyAzNSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKCgogCgoKI2RlZmluZSBfX0ZM
T0FUX1dPUkRfT1JERVIgX19CWVRFX09SREVSCgoKCiNkZWZpbmUgTElUVExFX0VORElBTglfX0xJ
VFRMRV9FTkRJQU4KI2RlZmluZSBCSUdfRU5ESUFOCV9fQklHX0VORElBTgojZGVmaW5lIFBEUF9F
TkRJQU4JX19QRFBfRU5ESUFOCiNkZWZpbmUgQllURV9PUkRFUglfX0JZVEVfT1JERVIKCgoKIyA0
MCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwoKCgoKI2RlZmluZSBfSVNiaXQoYml0KQkoKGJp
dCkgPCA4ID8gKCgxIDw8IChiaXQpKSA8PCA4KSA6ICgoMSA8PCAoYml0KSkgPj4gOCkpCgoKZW51
bQp7CiAgX0lTdXBwZXIgPSAoKCAwICkgPCA4ID8gKCgxIDw8ICggMCApKSA8PCA4KSA6ICgoMSA8
PCAoIDAgKSkgPj4gOCkpICwJIAogIF9JU2xvd2VyID0gKCggMSApIDwgOCA/ICgoMSA8PCAoIDEg
KSkgPDwgOCkgOiAoKDEgPDwgKCAxICkpID4+IDgpKSAsCSAKICBfSVNhbHBoYSA9ICgoIDIgKSA8
IDggPyAoKDEgPDwgKCAyICkpIDw8IDgpIDogKCgxIDw8ICggMiApKSA+PiA4KSkgLAkgCiAgX0lT
ZGlnaXQgPSAoKCAzICkgPCA4ID8gKCgxIDw8ICggMyApKSA8PCA4KSA6ICgoMSA8PCAoIDMgKSkg
Pj4gOCkpICwJIAogIF9JU3hkaWdpdCA9ICgoIDQgKSA8IDggPyAoKDEgPDwgKCA0ICkpIDw8IDgp
IDogKCgxIDw8ICggNCApKSA+PiA4KSkgLAkgCiAgX0lTc3BhY2UgPSAoKCA1ICkgPCA4ID8gKCgx
IDw8ICggNSApKSA8PCA4KSA6ICgoMSA8PCAoIDUgKSkgPj4gOCkpICwJIAogIF9JU3ByaW50ID0g
KCggNiApIDwgOCA/ICgoMSA8PCAoIDYgKSkgPDwgOCkgOiAoKDEgPDwgKCA2ICkpID4+IDgpKSAs
CSAKICBfSVNncmFwaCA9ICgoIDcgKSA8IDggPyAoKDEgPDwgKCA3ICkpIDw8IDgpIDogKCgxIDw8
ICggNyApKSA+PiA4KSkgLAkgCiAgX0lTYmxhbmsgPSAoKCA4ICkgPCA4ID8gKCgxIDw8ICggOCAp
KSA8PCA4KSA6ICgoMSA8PCAoIDggKSkgPj4gOCkpICwJIAogIF9JU2NudHJsID0gKCggOSApIDwg
OCA/ICgoMSA8PCAoIDkgKSkgPDwgOCkgOiAoKDEgPDwgKCA5ICkpID4+IDgpKSAsCSAKICBfSVNw
dW5jdCA9ICgoIDEwICkgPCA4ID8gKCgxIDw8ICggMTAgKSkgPDwgOCkgOiAoKDEgPDwgKCAxMCAp
KSA+PiA4KSkgLAkgCiAgX0lTYWxudW0gPSAoKCAxMSApIDwgOCA/ICgoMSA8PCAoIDExICkpIDw8
IDgpIDogKCgxIDw8ICggMTEgKSkgPj4gOCkpIAkgCn07CgoKIAoKCgoKCgoKCgoKZXh0ZXJuIF9f
Y29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7CSAKZXh0ZXJuIF9fY29uc3QgX19p
bnQzMl90ICpfX2N0eXBlX3RvbG93ZXI7ICAKZXh0ZXJuIF9fY29uc3QgX19pbnQzMl90ICpfX2N0
eXBlX3RvdXBwZXI7ICAKCiNkZWZpbmUgCV9faXNjdHlwZShjLCB0eXBlKSAoX19jdHlwZV9iWyhp
bnQpIChjKV0gJiAodW5zaWduZWQgc2hvcnQgaW50KSB0eXBlKQoKCiNkZWZpbmUgCV9faXNhc2Np
aShjKQkoKChjKSAmIH4weDdmKSA9PSAwKQkKI2RlZmluZSAJX190b2FzY2lpKGMpCSgoYykgJiAw
eDdmKQkJCgojZGVmaW5lIAlfX2V4Y3R5cGUobmFtZSkJZXh0ZXJuIGludCBuYW1lIF9fUCAoKGlu
dCkpCgogCgoKCmV4dGVybiBpbnQgIGlzYWxudW0gICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVy
biBpbnQgIGlzYWxwaGEgICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIGlzY250cmwg
ICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIGlzZGlnaXQgICAoaW50KSAgdGhyb3cg
KCkgICA7CmV4dGVybiBpbnQgIGlzbG93ZXIgICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBp
bnQgIGlzZ3JhcGggICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIGlzcHJpbnQgICAo
aW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIGlzcHVuY3QgICAoaW50KSAgdGhyb3cgKCkg
ICA7CmV4dGVybiBpbnQgIGlzc3BhY2UgICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQg
IGlzdXBwZXIgICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIGlzeGRpZ2l0ICAgKGlu
dCkgIHRocm93ICgpICAgOwoKCgoKCgogCmV4dGVybiBpbnQgdG9sb3dlciAgKGludCBfX2MpICB0
aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHRvdXBwZXIgIChpbnQgX19jKSAgdGhyb3cgKCkgIDsK
CgoKCiAKCmV4dGVybiBpbnQgaXNhc2NpaSAgKGludCBfX2MpICB0aHJvdyAoKSAgOwoKIAoKZXh0
ZXJuIGludCB0b2FzY2lpICAoaW50IF9fYykgIHRocm93ICgpICA7CgoKCgogCgpleHRlcm4gaW50
ICBfdG91cHBlciAgIChpbnQpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgX3RvbG93ZXIgICAo
aW50KSAgdGhyb3cgKCkgICA7CgoKCiNkZWZpbmUgaXNhbG51bShjKQlfX2lzY3R5cGUoKGMpLCBf
SVNhbG51bSkKI2RlZmluZSBpc2FscGhhKGMpCV9faXNjdHlwZSgoYyksIF9JU2FscGhhKQojZGVm
aW5lIGlzY250cmwoYykJX19pc2N0eXBlKChjKSwgX0lTY250cmwpCiNkZWZpbmUgaXNkaWdpdChj
KQlfX2lzY3R5cGUoKGMpLCBfSVNkaWdpdCkKI2RlZmluZSBpc2xvd2VyKGMpCV9faXNjdHlwZSgo
YyksIF9JU2xvd2VyKQojZGVmaW5lIGlzZ3JhcGgoYykJX19pc2N0eXBlKChjKSwgX0lTZ3JhcGgp
CiNkZWZpbmUgaXNwcmludChjKQlfX2lzY3R5cGUoKGMpLCBfSVNwcmludCkKI2RlZmluZSBpc3B1
bmN0KGMpCV9faXNjdHlwZSgoYyksIF9JU3B1bmN0KQojZGVmaW5lIGlzc3BhY2UoYykJX19pc2N0
eXBlKChjKSwgX0lTc3BhY2UpCiNkZWZpbmUgaXN1cHBlcihjKQlfX2lzY3R5cGUoKGMpLCBfSVN1
cHBlcikKI2RlZmluZSBpc3hkaWdpdChjKQlfX2lzY3R5cGUoKGMpLCBfSVN4ZGlnaXQpCgoKCgoK
IyAxNjQgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCgoKIyAxODYgIi91c3IvaW5jbHVkZS9jdHlw
ZS5oIiAzCgoKCiNkZWZpbmUgaXNhc2NpaShjKQlfX2lzYXNjaWkgKGMpCiNkZWZpbmUgdG9hc2Np
aShjKQlfX3RvYXNjaWkgKGMpCgojZGVmaW5lIF90b2xvd2VyKGMpCSgoaW50KSBfX2N0eXBlX3Rv
bG93ZXJbKGludCkgKGMpXSkKI2RlZmluZSBfdG91cHBlcihjKQkoKGludCkgX19jdHlwZV90b3Vw
cGVyWyhpbnQpIChjKV0pCgoKCgoKIyAyNzMgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCgoKfSAK
CgojIDYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvY2N0
eXBlIiAyIDMKCgojIDEwNSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUu
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdGQvc3RyYWl0cy5oIiAyIDMKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4v
Li4vLi4vLi4vaW5jbHVkZS9nKystMy9jc3RyaW5nIiAxIDMKIAogCgoKI2RlZmluZSBfX0NTVFJJ
TkdfXwoKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKI2RlZmluZSAJX1NUUklOR19ICTEKCgoKZXh0ZXJuICJDIiB7IAoKIAojZGVmaW5lIAlf
X25lZWRfc2l6ZV90CiNkZWZpbmUgCV9fbmVlZF9OVUxMCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1
LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9n
Y2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0
ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNs
dWRlL3N0ZGRlZi5oIiAzCgojdW5kZWYgCV9fbmVlZF9zaXplX3QKCgoKIAoKCgoKIAoKCiMgMjY5
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoKCgoKCgoK
CgogCgogCgojIDMxNyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CgoKIAoKCiN1bmRlZiBOVUxMCQkKCiNkZWZpbmUgTlVMTCBfX251bGwKCgoKCiN1bmRlZiAJX19u
ZWVkX05VTEwKCgoKIAoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoK
IApleHRlcm4gdm9pZCAqICBtZW1jcHkgICh2b2lkICogIF9fcmVzdHJpY3QgX19kZXN0LAoJCQkg
ICAgX19jb25zdCB2b2lkICogIF9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICB0aHJvdyAo
KSAgOwogCgpleHRlcm4gdm9pZCAqICBtZW1tb3ZlICAodm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qg
dm9pZCAqICBfX3NyYywKCQkJICAgICBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKCgoKZXh0
ZXJuIHZvaWQgKiAgbWVtY2NweSAgKHZvaWQgKiAgX19kZXN0LCBfX2NvbnN0IHZvaWQgKiAgX19z
cmMsCgkJCSAgICAgaW50IF9fYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJu
IHZvaWQgKiAgbWVtc2V0ICAodm9pZCAqICBfX3MsIGludCBfX2MsIHNpemVfdCBfX24pICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IG1lbWNtcCAgKF9fY29uc3Qgdm9pZCAqICBfX3MxLCBfX2Nv
bnN0IHZvaWQgKiAgX19zMiwKCQkJc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiB2
b2lkICogIG1lbWNociAgKF9fY29uc3Qgdm9pZCAqICBfX3MsIGludCBfX2MsIHNpemVfdCBfX24p
ICB0aHJvdyAoKSAgOwoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0cmNweSAgKGNoYXIgKl9fcmVz
dHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykgIHRocm93
ICgpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwK
CQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0cmNhdCAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJ
CQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykgIHRocm93ICgpICA7CiAKZXh0ZXJu
IGNoYXIgKnN0cm5jYXQgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu
IGludCBzdHJjbXAgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIHRo
cm93ICgpICA7CiAKZXh0ZXJuIGludCBzdHJuY21wICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2Nv
bnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHN0
cmNvbGwgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIHRocm93ICgp
ICA7CiAKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJ
CSAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICB0aHJvdyAo
KSAgOwoKIyAxMDcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgogCmV4dGVybiBjaGFyICpf
X3N0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGNoYXIgKnN0
cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgogCgoKCgoKCiMgMTQzICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgogCmV4dGVybiBjaGFyICpzdHJjaHIgIChfX2NvbnN0
IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cnJjaHIg
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7CgoKCgoKCgogCgpleHRl
cm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX3Jl
amVjdCkgIHRocm93ICgpICA7CiAKCmV4dGVybiBzaXplX3Qgc3Ryc3BuICAoX19jb25zdCBjaGFy
ICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpICB0aHJvdyAoKSAgOwogCmV4dGVybiBjaGFy
ICpzdHJwYnJrICAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpICB0
aHJvdyAoKSAgOwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIgKl9faGF5c3Rh
Y2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpICB0aHJvdyAoKSAgOwoKCgoKCgoKCgogCmV4dGVy
biBjaGFyICpzdHJ0b2sgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSkgIHRocm93ICgpICA7CgogCgpleHRlcm4gY2hhciAqX19zdHJ0
b2tfciAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJCQkgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19kZWxpbSwKCQkJICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgIHRo
cm93ICgpICA7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywK
CQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAoJCQkgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19zYXZlX3B0cikgIHRocm93ICgpICA7CgoKIyAyMDMgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMwoKCgogCmV4dGVybiBzaXplX3Qgc3RybGVuICAoX19jb25zdCBjaGFyICpfX3Mp
ICB0aHJvdyAoKSAgOwoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0cmVycm9yICAoaW50IF9fZXJy
bnVtKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cmVycm9yX3IgIChpbnQgX19l
cnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICB0aHJvdyAoKSAgOwpleHRlcm4g
Y2hhciAqc3RyZXJyb3JfciAgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1
ZmxlbikgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIHZvaWQgX19iemVybyAgKHZvaWQgKiAgX19z
LCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiB2b2lkIGJjb3B5ICAoX19jb25z
dCB2b2lkICogIF9fc3JjLCB2b2lkICogIF9fZGVzdCwgc2l6ZV90IF9fbikgIHRocm93ICgpICA7
CgogCmV4dGVybiB2b2lkIGJ6ZXJvICAodm9pZCAqICBfX3MsIHNpemVfdCBfX24pICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gaW50IGJjbXAgIChfX2NvbnN0IHZvaWQgKiAgX19zMSwgX19jb25zdCB2
b2lkICogIF9fczIsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gY2hhciAqaW5k
ZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7CgogCmV4dGVybiBj
aGFyICpyaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7Cgog
CgpleHRlcm4gaW50IF9fZmZzICAoaW50IF9faSkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAo
KGNvbnN0KSk7CmV4dGVybiBpbnQgZmZzICAoaW50IF9faSkgIHRocm93ICgpICAgX19hdHRyaWJ1
dGVfXyAoKGNvbnN0KSk7CgogCgoKCgoKCgoKCiAKZXh0ZXJuIGludCBfX3N0cmNhc2VjbXAgIChf
X2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIHRocm93ICgpICA7CmV4dGVy
biBpbnQgc3RyY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3My
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzdHJuY2FzZWNtcCAgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyLAoJCQkgICAgIHNpemVfdCBfX24pICB0aHJvdyAoKSAg
OwoKCiMgMjc3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKIAoKZXh0ZXJuIGNoYXIgKnN0
cnNlcCAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKCQkJICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19kZWxpbSkgIHRocm93ICgpICA7CgoKIyAzMTkgIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMwoKCgoKIyAzNDcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgp9IAoKCiMgNyAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9jc3RyaW5nIiAy
IDMKCgojIDk0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z
L2NzdHJpbmciIDMKCgoKIyAxMDYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0y
Ljk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2lu
Y2x1ZGUvZysrLTMvc3RkL3N0cmFpdHMuaCIgMiAzCgoKc3RydWN0IHN0cmluZ19jaGFyX3RyYWl0
cyA8Y2hhcj4gewogIHR5cGVkZWYgY2hhciBjaGFyX3R5cGU7CgogIHN0YXRpYyB2b2lkIGFzc2ln
biAoY2hhcl90eXBlJiBjMSwgY29uc3QgY2hhcl90eXBlJiBjMikKICAgIHsgYzEgPSBjMjsgfQog
IHN0YXRpYyBib29sIGVxIChjb25zdCBjaGFyX3R5cGUgJiBjMSwgY29uc3QgY2hhcl90eXBlJiBj
MikKICAgIHsgcmV0dXJuIChjMSA9PSBjMik7IH0KICBzdGF0aWMgYm9vbCBuZSAoY29uc3QgY2hh
cl90eXBlJiBjMSwgY29uc3QgY2hhcl90eXBlJiBjMikKICAgIHsgcmV0dXJuIChjMSAhPSBjMik7
IH0KICBzdGF0aWMgYm9vbCBsdCAoY29uc3QgY2hhcl90eXBlJiBjMSwgY29uc3QgY2hhcl90eXBl
JiBjMikKICAgIHsgcmV0dXJuIChjMSA8IGMyKTsgfQogIHN0YXRpYyBjaGFyX3R5cGUgZW9zICgp
IHsgcmV0dXJuIDA7IH0KICBzdGF0aWMgYm9vbCBpc19kZWwoY2hhcl90eXBlIGEpIHsgcmV0dXJu
IChfX2N0eXBlX2JbKGludCkgKCAoIGEgKSApXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpICAgX0lT
c3BhY2UgKSAgOyB9CgogIHN0YXRpYyBpbnQgY29tcGFyZSAoY29uc3QgY2hhcl90eXBlKiBzMSwg
Y29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4pCiAgICB7IHJldHVybiBtZW1jbXAgKHMxLCBz
Miwgbik7IH0KICBzdGF0aWMgc2l6ZV90IGxlbmd0aCAoY29uc3QgY2hhcl90eXBlKiBzKQogICAg
eyByZXR1cm4gc3RybGVuIChzKTsgfQogIHN0YXRpYyBjaGFyX3R5cGUqIGNvcHkgKGNoYXJfdHlw
ZSogczEsIGNvbnN0IGNoYXJfdHlwZSogczIsIHNpemVfdCBuKQogICAgeyByZXR1cm4gKGNoYXJf
dHlwZSopIG1lbWNweSAoczEsIHMyLCBuKTsgfQogIHN0YXRpYyBjaGFyX3R5cGUqIG1vdmUgKGNo
YXJfdHlwZSogczEsIGNvbnN0IGNoYXJfdHlwZSogczIsIHNpemVfdCBuKQogICAgeyByZXR1cm4g
KGNoYXJfdHlwZSopIG1lbW1vdmUgKHMxLCBzMiwgbik7IH0KICBzdGF0aWMgY2hhcl90eXBlKiBz
ZXQgKGNoYXJfdHlwZSogczEsIGNvbnN0IGNoYXJfdHlwZSYgYywgc2l6ZV90IG4pCiAgICB7IHJl
dHVybiAoY2hhcl90eXBlKikgbWVtc2V0IChzMSwgYywgbik7IH0KfTsKCiMgMTU5ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0ZC9zdHJhaXRzLmgiIDMK
Cn0gIAoKIyAzNiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKyst
My9zdGQvYmFzdHJpbmcuaCIgMiAzCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvYWxsb2MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCiNkZWZpbmUg
X19TR0lfU1RMX0FMTE9DX0gKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RsX2NvbmZpZy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiNkZWZpbmUgX19TVExfQ09ORklHX0gKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCgoKIAogCiAKIAogCiAKIAogCiAKIAogCgoKIAoKIAogCiAKIAogCiAKIAoKCgoKCgoKCiMg
MTQ4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9j
b25maWcuaCIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzCiAKCgoKI2Rl
ZmluZSBfR19jb25maWdfaCAxCgogCgoKI2RlZmluZSBfX25lZWRfc2l6ZV90CiNkZWZpbmUgX19u
ZWVkX3djaGFyX3QKI2RlZmluZSBfX25lZWRfd2ludF90CiNkZWZpbmUgX19uZWVkX05VTEwKIyAx
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMg
MTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoK
CgogCgoKIyA2MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgogCgogCgoKIyAxODggIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCiN1bmRlZiAJX19uZWVkX3NpemVf
dAoKCgogCgoKCgogCgoKIyAyNjkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0y
Ljk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVm
LmgiIDMKCiN1bmRlZiAJX19uZWVkX3djaGFyX3QKCgoKCgoKCgoKCgojdW5kZWYgX19uZWVkX3dp
bnRfdAoKCiAKCiAKCiMgMzE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45
NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCgogCgoKI3VuZGVmIE5VTEwJCQoKI2RlZmluZSBOVUxMIF9fbnVsbAoKCgoKI3VuZGVm
IAlfX25lZWRfTlVMTAoKCgogCgoKCgoKCgojIDE0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDIgMwoKCgoKCgoKCgojZGVmaW5lIF9HX3NpemVfdAlzaXplX3QKI2RlZmluZSBfR19mcG9zX3QJ
X19vZmZfdAojZGVmaW5lIF9HX2Zwb3M2NF90CV9fb2ZmNjRfdAojZGVmaW5lIF9HX3NzaXplX3QJ
X19zc2l6ZV90CiNkZWZpbmUgX0dfb2ZmX3QJX19vZmZfdAojZGVmaW5lIF9HX29mZjY0X3QJX19v
ZmY2NF90CiNkZWZpbmUgCV9HX3BpZF90CV9fcGlkX3QKI2RlZmluZSAJX0dfdWlkX3QJX191aWRf
dAojZGVmaW5lIF9HX3djaGFyX3QJd2NoYXJfdAojZGVmaW5lIF9HX3dpbnRfdAl3aW50X3QKI2Rl
ZmluZSBfR19zdGF0NjQJc3RhdDY0Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50
MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7Cgoj
ZGVmaW5lIF9HX0hBVkVfQk9PTCAxCgoKIAojZGVmaW5lIF9HX0hBVkVfQVRFWElUIDEKI2RlZmlu
ZSBfR19IQVZFX1NZU19DREVGUyAxCiNkZWZpbmUgX0dfSEFWRV9TWVNfV0FJVCAxCiNkZWZpbmUg
X0dfTkVFRF9TVERBUkdfSCAxCiNkZWZpbmUgX0dfdmFfbGlzdCBfX2dudWNfdmFfbGlzdAoKI2Rl
ZmluZSBfR19IQVZFX1BSSU5URl9GUCAxCiNkZWZpbmUgX0dfSEFWRV9NTUFQIDEKI2RlZmluZSBf
R19IQVZFX0xPTkdfRE9VQkxFX0lPIDEKI2RlZmluZSBfR19IQVZFX0lPX0ZJTEVfT1BFTiAxCiNk
ZWZpbmUgX0dfSEFWRV9JT19HRVRMSU5FX0lORk8gMQoKI2RlZmluZSBfR19JT19JT19GSUxFX1ZF
UlNJT04gMHgyMDAwMQoKI2RlZmluZSBfR19PUEVONjQJX19vcGVuNjQKI2RlZmluZSBfR19MU0VF
SzY0CV9fbHNlZWs2NAojZGVmaW5lIF9HX0ZTVEFUNjQoZmQsYnVmKSBfX2Z4c3RhdDY0IChfU1RB
VF9WRVIsIGZkLCBidWYpCgogCiNkZWZpbmUgX0dfSEFWRV9TVF9CTEtTSVpFIGRlZmluZWQgKF9T
VEFUQlVGX1NUX0JMS1NJWkUpCgojZGVmaW5lIF9HX0JVRlNJWiA4MTkyCgogCiNkZWZpbmUgX0df
TkFNRVNfSEFWRV9VTkRFUlNDT1JFIDAKI2RlZmluZSBfR19WVEFCTEVfTEFCRUxfSEFTX0xFTkdU
SCAxCiNkZWZpbmUgX0dfVVNJTkdfVEhVTktTCTEKI2RlZmluZSBfR19WVEFCTEVfTEFCRUxfUFJF
RklYICJfX3Z0XyIKI2RlZmluZSBfR19WVEFCTEVfTEFCRUxfUFJFRklYX0lEIF9fdnRfCgoKCiNk
ZWZpbmUgX0dfQVJHUyhBUkdMSVNUKSBBUkdMSVNUCgoKCgoKIyAxNTEgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
Mi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2NvbmZpZy5oIiAyIDMKCiNkZWZp
bmUgX19TVExfSEFTX1dDSEFSX1QKCgoKCgojZGVmaW5lIF9fU1RMX0NMQVNTX1BBUlRJQUxfU1BF
Q0lBTElaQVRJT04KI2RlZmluZSBfX1NUTF9GVU5DVElPTl9UTVBMX1BBUlRJQUxfT1JERVIKI2Rl
ZmluZSBfX1NUTF9NRU1CRVJfVEVNUExBVEVTCiNkZWZpbmUgX19TVExfTUVNQkVSX1RFTVBMQVRF
X0NMQVNTRVMKI2RlZmluZSBfX1NUTF9FWFBMSUNJVF9GVU5DVElPTl9UTVBMX0FSR1MKI2RlZmlu
ZSBfX1NUTF9IQVNfTkFNRVNQQUNFUwojZGVmaW5lIF9fU1RMX05PX05BTUVTUEFDRVMKI2RlZmlu
ZSBfX1NHSV9TVExfVVNFX0FVVE9fUFRSX0NPTlZFUlNJT05TCiNkZWZpbmUgX19TVExfVVNFX05B
TUVTUEFDRVMKCgogICAgICAKCgojZGVmaW5lIF9fU1RMX1BUSFJFQURTCgoKCgoKCgojZGVmaW5l
IF9fU1RMX1VTRV9FWENFUFRJT05TCgoKI2RlZmluZSBfX1NUTF9MT05HX0xPTkcKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojIDIzNCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgojIDI0OCAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1
LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgoKCgoKCgoKCgoK
CgoKI2RlZmluZSBfX1NUTF9URU1QTEFURQoKCgoKCgoKI2RlZmluZSBfX1NUTF9OVUxMX1RNUExf
QVJHUyA8PgoKCgoKCgojZGVmaW5lIF9fU1RMX1RFTVBMQVRFX05VTEwgdGVtcGxhdGU8PgoKCgoK
IAogCiAKIAoKCgoKCgoKI2RlZmluZSBfX1NUTF9VU0VfU1REX0FMTE9DQVRPUlMKCgoKCiNkZWZp
bmUgX19TVExfREVGQVVMVF9BTExPQ0FUT1IoVCkgYWxsb2NhdG9yPFQ+CgoKCgoKIAogCiMgMzE2
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9jb25m
aWcuaCIgMwoKI2RlZmluZSBfX1NURAojZGVmaW5lIF9fU1RMX0JFR0lOX05BTUVTUEFDRQojZGVm
aW5lIF9fU1RMX0VORF9OQU1FU1BBQ0UKCiNkZWZpbmUgX19TVExfQkVHSU5fUkVMT1BTX05BTUVT
UEFDRQojZGVmaW5lIF9fU1RMX0VORF9SRUxPUFNfTkFNRVNQQUNFCiNkZWZpbmUgX19TVERfUkVM
T1BTCiN1bmRlZiAgX19TVExfVVNFX05BTUVTUEFDRVMKCgoKI2RlZmluZSBfX1NUTF9UUlkgdHJ5
CiNkZWZpbmUgX19TVExfQ0FUQ0hfQUxMIGNhdGNoKC4uLikKI2RlZmluZSBfX1NUTF9USFJPVyh4
KSB0aHJvdyB4CiNkZWZpbmUgX19TVExfUkVUSFJPVyB0aHJvdwojZGVmaW5lIF9fU1RMX05PVEhS
T1cgdGhyb3coKQojZGVmaW5lIF9fU1RMX1VOV0lORChhY3Rpb24pIGNhdGNoKC4uLikgeyBhY3Rp
b247IHRocm93OyB9CgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX19zdGxfYXNzZXJ0KGV4cHIpCgoK
CgogCiAKIAojIDE4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL2FsbG9jLmgiIDIgMwoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RsX2FsbG9jLmgiIDEgMwogCgoKCgoKCgoKCgoKCiAKCgoKCiNkZWZp
bmUgX19TR0lfU1RMX0lOVEVSTkFMX0FMTE9DX0gKCgoKCgoKI2RlZmluZSBfX1BSSVZBVEUgcHJp
dmF0ZQoKCgoKCgoKIAogCiAKIAogCiAKCgoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4u
Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaW9zdHJlYW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgojZGVmaW5lIF9JT1NUUkVBTV9ICgojIDEgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX1NUUkVBTUJVRl9ICgojcHJh
Z21hIGludGVyZmFjZQoKCiAgIAoKI2RlZmluZSBfSU9fTkVXX1NUUkVBTVMgCgpleHRlcm4gIkMi
IHsKIyAxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgojZGVmaW5lIF9JT19TVERJT19ICgoKI2RlZmluZSBfSU9fcG9zX3QgX0dfZnBvc190IAoj
ZGVmaW5lIF9JT19mcG9zX3QgX0dfZnBvc190CiNkZWZpbmUgX0lPX2Zwb3M2NF90IF9HX2Zwb3M2
NF90CiNkZWZpbmUgX0lPX3NpemVfdCBfR19zaXplX3QKI2RlZmluZSBfSU9fc3NpemVfdCBfR19z
c2l6ZV90CiNkZWZpbmUgX0lPX29mZl90IF9HX29mZl90CiNkZWZpbmUgX0lPX29mZjY0X3QgX0df
b2ZmNjRfdAojZGVmaW5lIF9JT19waWRfdCBfR19waWRfdAojZGVmaW5lIF9JT191aWRfdCBfR191
aWRfdAojZGVmaW5lIF9JT19IQVZFX1NZU19XQUlUIF9HX0hBVkVfU1lTX1dBSVQKI2RlZmluZSBf
SU9fSEFWRV9TVF9CTEtTSVpFIF9HX0hBVkVfU1RfQkxLU0laRQojZGVmaW5lIF9JT19CVUZTSVog
X0dfQlVGU0laCiNkZWZpbmUgX0lPX3ZhX2xpc3QgX0dfdmFfbGlzdAoKCiAKI2RlZmluZSBfX25l
ZWRfX192YV9saXN0CiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUu
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIg
MSAzCiAKCgoKCgoKCgoKCiN1bmRlZiBfX25lZWRfX192YV9saXN0CgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiNkZWZpbmUgX19HTlVDX1ZB
X0xJU1QKCgoKdHlwZWRlZiB2b2lkICpfX2dudWNfdmFfbGlzdDsKCgoKIAoKIyAxMjIgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkYXJnLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDIwOSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKIyA0OCAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwoKCiN1bmRlZiBfSU9fdmFfbGlzdAojZGVmaW5lIF9J
T192YV9saXN0IF9fZ251Y192YV9saXN0CgoKCiMgNjcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAz
CgoKIAoKI2RlZmluZSBfUEFSQU1TKHByb3RvcykgX19QKHByb3RvcykKCgoKCgoKCiNkZWZpbmUg
X0lPX1VOSUZJRURfSlVNUFRBQkxFUyAxCgoKCgoKI2RlZmluZSBFT0YgKC0xKQoKIyA5OCAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKCgojZGVmaW5lIF9JT1NfSU5QVVQJMQojZGVmaW5lIF9JT1Nf
T1VUUFVUCTIKI2RlZmluZSBfSU9TX0FURU5ECTQKI2RlZmluZSBfSU9TX0FQUEVORAk4CiNkZWZp
bmUgX0lPU19UUlVOQwkxNgojZGVmaW5lIF9JT1NfTk9DUkVBVEUJMzIKI2RlZmluZSBfSU9TX05P
UkVQTEFDRQk2NAojZGVmaW5lIF9JT1NfQklOCTEyOAoKIAoKCgoKCiNkZWZpbmUgX0lPX01BR0lD
IDB4RkJBRDAwMDAgCiNkZWZpbmUgX09MRF9TVERJT19NQUdJQyAweEZBQkMwMDAwIAojZGVmaW5l
IF9JT19NQUdJQ19NQVNLIDB4RkZGRjAwMDAKI2RlZmluZSBfSU9fVVNFUl9CVUYgMSAKI2RlZmlu
ZSBfSU9fVU5CVUZGRVJFRCAyCiNkZWZpbmUgX0lPX05PX1JFQURTIDQgCiNkZWZpbmUgX0lPX05P
X1dSSVRFUyA4IAojZGVmaW5lIF9JT19FT0ZfU0VFTiAweDEwCiNkZWZpbmUgX0lPX0VSUl9TRUVO
IDB4MjAKI2RlZmluZSBfSU9fREVMRVRFX0RPTlRfQ0xPU0UgMHg0MCAKI2RlZmluZSBfSU9fTElO
S0VEIDB4ODAgCiNkZWZpbmUgX0lPX0lOX0JBQ0tVUCAweDEwMAojZGVmaW5lIF9JT19MSU5FX0JV
RiAweDIwMAojZGVmaW5lIF9JT19USUVEX1BVVF9HRVQgMHg0MDAgCiNkZWZpbmUgX0lPX0NVUlJF
TlRMWV9QVVRUSU5HIDB4ODAwCiNkZWZpbmUgX0lPX0lTX0FQUEVORElORyAweDEwMDAKI2RlZmlu
ZSBfSU9fSVNfRklMRUJVRiAweDIwMDAKI2RlZmluZSBfSU9fQkFEX1NFRU4gMHg0MDAwCgogCiNk
ZWZpbmUgX0lPX1NLSVBXUyAwMQojZGVmaW5lIF9JT19MRUZUIDAyCiNkZWZpbmUgX0lPX1JJR0hU
IDA0CiNkZWZpbmUgX0lPX0lOVEVSTkFMIDAxMAojZGVmaW5lIF9JT19ERUMgMDIwCiNkZWZpbmUg
X0lPX09DVCAwNDAKI2RlZmluZSBfSU9fSEVYIDAxMDAKI2RlZmluZSBfSU9fU0hPV0JBU0UgMDIw
MAojZGVmaW5lIF9JT19TSE9XUE9JTlQgMDQwMAojZGVmaW5lIF9JT19VUFBFUkNBU0UgMDEwMDAK
I2RlZmluZSBfSU9fU0hPV1BPUyAwMjAwMAojZGVmaW5lIF9JT19TQ0lFTlRJRklDIDA0MDAwCiNk
ZWZpbmUgX0lPX0ZJWEVEIDAxMDAwMAojZGVmaW5lIF9JT19VTklUQlVGIDAyMDAwMAojZGVmaW5l
IF9JT19TVERJTyAwNDAwMDAKI2RlZmluZSBfSU9fRE9OVF9DTE9TRSAwMTAwMDAwCiNkZWZpbmUg
X0lPX0JPT0xBTFBIQSAwMjAwMDAwCgoKc3RydWN0IF9JT19qdW1wX3Q7ICBzdHJ1Y3QgX0lPX0ZJ
TEU7CgogCgoKCgoKCgp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKIAoKc3RydWN0IF9JT19t
YXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9z
YnVmOwogICAKCiAgIAogIGludCBfcG9zOwojIDE4NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMK
Cn07CgpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CQkgCiNkZWZpbmUgX0lPX2ZpbGVf
ZmxhZ3MgX2ZsYWdzCgogICAKICAgCiAgY2hhciogX0lPX3JlYWRfcHRyOwkgCiAgY2hhciogX0lP
X3JlYWRfZW5kOwkgCiAgY2hhciogX0lPX3JlYWRfYmFzZTsJIAogIGNoYXIqIF9JT193cml0ZV9i
YXNlOwkgCiAgY2hhciogX0lPX3dyaXRlX3B0cjsJIAogIGNoYXIqIF9JT193cml0ZV9lbmQ7CSAK
ICBjaGFyKiBfSU9fYnVmX2Jhc2U7CSAKICBjaGFyKiBfSU9fYnVmX2VuZDsJIAogICAKICBjaGFy
ICpfSU9fc2F2ZV9iYXNlOyAgCiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOyAgIAogIGNoYXIgKl9J
T19zYXZlX2VuZDsgIAoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBf
SU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZf
dCAgIF9vbGRfb2Zmc2V0OyAgCgojZGVmaW5lIF9fSEFWRV9DT0xVTU4gCiAgIAogIHVuc2lnbmVk
IHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIg
X3Nob3J0YnVmWzFdOwoKICAgCgogIF9JT19sb2NrX3QgKl9sb2NrOwoKCgoKCgoKCiAgX19vZmY2
NF90ICAgX29mZnNldDsKICAgCiAgaW50IF91bnVzZWQyWzE2XTsKCn07CgoKCgoKc3RydWN0IF9J
T19GSUxFX3BsdXM7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsK
ZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVj
dCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKCiNkZWZpbmUgX0lPX3N0ZGluICgoX0lP
X0ZJTEUqKSgmX0lPXzJfMV9zdGRpbl8pKQojZGVmaW5lIF9JT19zdGRvdXQgKChfSU9fRklMRSop
KCZfSU9fMl8xX3N0ZG91dF8pKQojZGVmaW5lIF9JT19zdGRlcnIgKChfSU9fRklMRSopKCZfSU9f
Ml8xX3N0ZGVycl8pKQoKCgoKCgoKIAoKIAoKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2Zu
ICAodm9pZCAqICBfX2Nvb2tpZSwgY2hhciAqX19idWYsCgkJCQkgICAgICAgc2l6ZV90IF9fbmJ5
dGVzKSAgOwoKIAoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gICh2b2lkICog
IF9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAoJCQkJICAgICAgc2l6ZV90IF9fbikgIDsK
CiAKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gICh2b2lkICogIF9fY29va2llLCBfX29m
Zl90ICAgX19wb3MsIGludCBfX3cpICA7CgogCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gICh2
b2lkICogIF9fY29va2llKSAgOwoKCiMgMzExICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCgoK
ZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAgKF9JT19GSUxFICopICB0aHJv
dyAoKSAgOwpleHRlcm4gaW50IF9fdWZsb3cgIChfSU9fRklMRSAqKSAgdGhyb3cgKCkgIDsKZXh0
ZXJuIGludCBfX292ZXJmbG93ICAoX0lPX0ZJTEUgKiwgaW50KSAgdGhyb3cgKCkgIDsKCiNkZWZp
bmUgX0lPX2dldGNfdW5sb2NrZWQoX2ZwKSAoKF9mcCktPl9JT19yZWFkX3B0ciA+PSAoX2ZwKS0+
X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoX2ZwKSA6ICoodW5zaWduZWQgY2hhciAqKSAoX2ZwKS0+
X0lPX3JlYWRfcHRyKyspCgoKI2RlZmluZSBfSU9fcGVla2NfdW5sb2NrZWQoX2ZwKSAoKF9mcCkt
Pl9JT19yZWFkX3B0ciA+PSAoX2ZwKS0+X0lPX3JlYWRfZW5kICYmIF9fdW5kZXJmbG93IChfZnAp
ID09IEVPRiA/IEVPRiA6ICoodW5zaWduZWQgY2hhciAqKSAoX2ZwKS0+X0lPX3JlYWRfcHRyKQoK
CgojZGVmaW5lIF9JT19wdXRjX3VubG9ja2VkKF9jaCwgX2ZwKSAoKChfZnApLT5fSU9fd3JpdGVf
cHRyID49IChfZnApLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9mcCwgKHVuc2lnbmVk
IGNoYXIpIChfY2gpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfZnApLT5fSU9fd3JpdGVfcHRyKysg
PSAoX2NoKSkpCgoKCgojZGVmaW5lIF9JT19mZW9mX3VubG9ja2VkKF9fZnApICgoKF9fZnApLT5f
ZmxhZ3MgJiBfSU9fRU9GX1NFRU4pICE9IDApCiNkZWZpbmUgX0lPX2ZlcnJvcl91bmxvY2tlZChf
X2ZwKSAoKChfX2ZwKS0+X2ZsYWdzICYgX0lPX0VSUl9TRUVOKSAhPSAwKQoKZXh0ZXJuIGludCBf
SU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBfSU9fcHV0
YyAgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBfSU9f
ZmVvZiAgKF9JT19GSUxFICpfX2ZwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBfSU9fZmVycm9y
ICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9j
a2VkICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwoKIAojZGVmaW5lIF9JT19QRU5ESU5H
X09VVFBVVF9DT1VOVChfZnApCSgoX2ZwKS0+X0lPX3dyaXRlX3B0ciAtIChfZnApLT5fSU9fd3Jp
dGVfYmFzZSkKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIHRocm93
ICgpICA7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAgKF9JT19GSUxFICopICB0aHJvdyAo
KSAgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgdGhyb3cgKCkg
IDsKCgoKCiNkZWZpbmUgX0lPX3BlZWtjKF9mcCkgX0lPX3BlZWtjX3VubG9ja2VkIChfZnApCiNk
ZWZpbmUgX0lPX2Zsb2NrZmlsZShfZnApIAojZGVmaW5lIF9JT19mdW5sb2NrZmlsZShfZnApIAoj
ZGVmaW5lIF9JT19mdHJ5bG9ja2ZpbGUoX2ZwKSAKI2RlZmluZSBfSU9fY2xlYW51cF9yZWdpb25f
c3RhcnQoX2ZjdCwgX2ZwKSAKI2RlZmluZSBfSU9fY2xlYW51cF9yZWdpb25fZW5kKF9Eb2l0KSAK
CgpleHRlcm4gaW50IF9JT192ZnNjYW5mICAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBj
aGFyICogX19yZXN0cmljdCwKCQkJICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqX19yZXN0cmlj
dCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmICAoX0lPX0ZJTEUgKl9fcmVz
dHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCgkJCSAgICAgIF9fZ251Y192YV9saXN0ICkg
IHRocm93ICgpICA7CmV4dGVybiBfX3NzaXplX3QgICBfSU9fcGFkbiAgKF9JT19GSUxFICosIGlu
dCwgX19zc2l6ZV90ICApICB0aHJvdyAoKSAgOwpleHRlcm4gc2l6ZV90ICAgX0lPX3NnZXRuICAo
X0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkgIHRocm93ICgpICA7CgpleHRlcm4gX19vZmY2
NF90ICAgX0lPX3NlZWtvZmYgIChfSU9fRklMRSAqLCBfX29mZjY0X3QgICwgaW50LCBpbnQpICB0
aHJvdyAoKSAgOwpleHRlcm4gX19vZmY2NF90ICAgX0lPX3NlZWtwb3MgIChfSU9fRklMRSAqLCBf
X29mZjY0X3QgICwgaW50KSAgdGhyb3cgKCkgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1
cF9hcmVhICAoX0lPX0ZJTEUgKikgIHRocm93ICgpICA7CgoKfQoKCgojIDM2ICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAyIDMKCn0K
IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIAoKCgoK
CgoKI2RlZmluZSBfU1REQVJHX0gKI2RlZmluZSBfQU5TSV9TVERBUkdfSF8KCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAK
CgoKIAoKCgoKCgoKCgojZGVmaW5lIF9fdmFfcm91bmRlZF9zaXplKFRZUEUpICgoKHNpemVvZiAo
VFlQRSkgKyBzaXplb2YgKGludCkgLSAxKSAvIHNpemVvZiAoaW50KSkgKiBzaXplb2YgKGludCkp
CgoKCiNkZWZpbmUgdmFfc3RhcnQoQVAsIExBU1RBUkcpIChBUCA9ICgoX19nbnVjX3ZhX2xpc3Qp
IF9fYnVpbHRpbl9uZXh0X2FyZyAoTEFTVEFSRykpKQoKCgp2b2lkIHZhX2VuZCAoX19nbnVjX3Zh
X2xpc3QpOwkJIAojZGVmaW5lIHZhX2VuZChBUCkJKCh2b2lkKTApCgogCgoKCiAKI2RlZmluZSB2
YV9hcmcoQVAsIFRZUEUpCShBUCA9IChfX2dudWNfdmFfbGlzdCkgKChjaGFyICopIChBUCkgKyBf
X3ZhX3JvdW5kZWRfc2l6ZSAoVFlQRSkpLAkqKChUWVBFICopICh2b2lkICopICgoY2hhciAqKSAo
QVApIC0gX192YV9yb3VuZGVkX3NpemUgKFRZUEUpKSkpCgoKCgoKCgoKCgoKIAojZGVmaW5lIF9f
dmFfY29weShkZXN0LCBzcmMpIChkZXN0KSA9IChzcmMpCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CiAKCgoKCgoKCgoKCgoKCiMgMTc1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGFy
Zy5oIiAzCgoKIAoKCgoKIAoKIAoKIAoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwoK
CgoKI2RlZmluZSBfVkFfTElTVF8KCgojZGVmaW5lIF9WQV9MSVNUCgoKI2RlZmluZSBfVkFfTElT
VF9ERUZJTkVECgoKI2RlZmluZSBfVkFfTElTVF9UX0gKCgoKCgoKCgoKCiMgNDAgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgiIDIgMwoK
CgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBfSU9fd2NoYXJfdCBfR193Y2hhcl90CgoKCgoKZXh0
ZXJuICJDKysiIHsKY2xhc3MgaXN0cmVhbTsgIApjbGFzcyBvc3RyZWFtOyBjbGFzcyBzdHJlYW1i
dWY7CgogCgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCAgIHN0cmVhbW9mZjsKdHlwZWRlZiBfX29mZjY0
X3QgICBzdHJlYW1wb3M7CgoKCgp0eXBlZGVmIF9fc3NpemVfdCAgIHN0cmVhbXNpemU7Cgp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgX19mbXRmbGFnczsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9faW9z
dGF0ZTsKCnN0cnVjdCBfaW9zX2ZpZWxkcwp7ICAKICAgIHN0cmVhbWJ1ZiAqX3N0cmJ1ZjsKICAg
IG9zdHJlYW0qIF90aWU7CiAgICBpbnQgX3dpZHRoOwogICAgX19mbXRmbGFncyBfZmxhZ3M7CiAg
ICB3Y2hhcl90ICAgX2ZpbGw7CiAgICBfX2lvc3RhdGUgX3N0YXRlOwogICAgX19pb3N0YXRlIF9l
eGNlcHRpb25zOwogICAgaW50IF9wcmVjaXNpb247CgogICAgdm9pZCAqX2FycmF5czsgIAp9OwoK
I2RlZmluZSBfSU9TX0dPT0QJMAojZGVmaW5lIF9JT1NfRU9GCTEKI2RlZmluZSBfSU9TX0ZBSUwJ
MgojZGVmaW5lIF9JT1NfQkFECTQKCiNkZWZpbmUgX0lPX0lOUFVUCTEKI2RlZmluZSBfSU9fT1VU
UFVUCTIKI2RlZmluZSBfSU9fQVRFTkQJNAojZGVmaW5lIF9JT19BUFBFTkQJOAojZGVmaW5lIF9J
T19UUlVOQwkxNgojZGVmaW5lIF9JT19OT0NSRUFURQkzMgojZGVmaW5lIF9JT19OT1JFUExBQ0UJ
NjQKI2RlZmluZSBfSU9fQklOCQkxMjgKCiMgMTI0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAzCgoKY2xhc3MgaW9zIDogcHVibGlj
IF9pb3NfZmllbGRzIHsKICBpb3MmIG9wZXJhdG9yPShpb3MmKTsgICAKICBpb3MgKGNvbnN0IGlv
cyYpOyAgCiAgcHVibGljOgogICAgdHlwZWRlZiBfX2ZtdGZsYWdzIGZtdGZsYWdzOwogICAgdHlw
ZWRlZiBpbnQgaW9zdGF0ZTsKICAgIHR5cGVkZWYgaW50IG9wZW5tb2RlOwogICAgdHlwZWRlZiBf
X3NzaXplX3QgICBzdHJlYW1zaXplOwogICAgZW51bSBpb19zdGF0ZSB7Cglnb29kYml0ID0gMCAs
Cgllb2ZiaXQgPSAxICwKCWZhaWxiaXQgPSAyICwKCWJhZGJpdCA9IDQgIH07CiAgICBlbnVtIG9w
ZW5fbW9kZSB7CglpbiA9IDEgLAoJb3V0ID0gMiAsCglhdGUgPSA0ICwKCWFwcCA9IDggLAoJdHJ1
bmMgPSAxNiAsCglub2NyZWF0ZSA9IDMyICwKCW5vcmVwbGFjZSA9IDY0ICwKCWJpbiA9IDEyOCAs
ICAKCWJpbmFyeSA9IDEyOCAgfTsKICAgIGVudW0gc2Vla19kaXIgeyBiZWcsIGN1ciwgZW5kfTsK
ICAgIHR5cGVkZWYgZW51bSBzZWVrX2RpciBzZWVrZGlyOwogICAgIAogICAgZW51bSB7IHNraXB3
cz0gMDEgLAoJICAgbGVmdD0gMDIgLCByaWdodD0gMDQgLCBpbnRlcm5hbD0gMDEwICwKCSAgIGRl
Yz0gMDIwICwgb2N0PSAwNDAgLCBoZXg9IDAxMDAgLAoJICAgc2hvd2Jhc2U9IDAyMDAgLCBzaG93
cG9pbnQ9IDA0MDAgLAoJICAgdXBwZXJjYXNlPSAwMTAwMCAsIHNob3dwb3M9IDAyMDAwICwKCSAg
IHNjaWVudGlmaWM9IDA0MDAwICwgZml4ZWQ9IDAxMDAwMCAsCgkgICB1bml0YnVmPSAwMjAwMDAg
LCBzdGRpbz0gMDQwMDAwIAoKCgoJICAgfTsKICAgIGVudW0geyAgCgliYXNlZmllbGQ9ZGVjK29j
dCtoZXgsCglmbG9hdGZpZWxkID0gc2NpZW50aWZpYytmaXhlZCwKCWFkanVzdGZpZWxkID0gbGVm
dCtyaWdodCtpbnRlcm5hbAogICAgfTsKCiMgMTc3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAzCgoKICAgIG9zdHJlYW0qIHRpZSgp
IGNvbnN0IHsgcmV0dXJuIF90aWU7IH0KICAgIG9zdHJlYW0qIHRpZShvc3RyZWFtKiB2YWwpIHsg
b3N0cmVhbSogc2F2ZT1fdGllOyBfdGllPXZhbDsgcmV0dXJuIHNhdmU7IH0KCiAgICAgCiAgICB3
Y2hhcl90ICAgZmlsbCgpIGNvbnN0IHsgcmV0dXJuIF9maWxsOyB9CiAgICB3Y2hhcl90ICAgZmls
bCh3Y2hhcl90ICAgbmV3ZikKCXt3Y2hhcl90ICAgb2xkZiA9IF9maWxsOyBfZmlsbCA9IG5ld2Y7
IHJldHVybiBvbGRmO30KICAgIGZtdGZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gX2ZsYWdz
OyB9CiAgICBmbXRmbGFncyBmbGFncyhmbXRmbGFncyBuZXdfdmFsKSB7CglmbXRmbGFncyBvbGRf
dmFsID0gX2ZsYWdzOyBfZmxhZ3MgPSBuZXdfdmFsOyByZXR1cm4gb2xkX3ZhbDsgfQogICAgaW50
IHByZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIF9wcmVjaXNpb247IH0KICAgIGludCBwcmVjaXNp
b24oaW50IG5ld3ApIHsKCXVuc2lnbmVkIHNob3J0IG9sZHAgPSBfcHJlY2lzaW9uOyBfcHJlY2lz
aW9uID0gKHVuc2lnbmVkIHNob3J0KW5ld3A7CglyZXR1cm4gb2xkcDsgfQogICAgZm10ZmxhZ3Mg
c2V0ZihmbXRmbGFncyB2YWwpIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7CglfZmxhZ3Mg
fD0gdmFsOyByZXR1cm4gb2xkYml0czsgfQogICAgZm10ZmxhZ3Mgc2V0ZihmbXRmbGFncyB2YWws
IGZtdGZsYWdzIG1hc2spIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7CglfZmxhZ3MgPSAo
X2ZsYWdzICYgfm1hc2spIHwgKHZhbCAmIG1hc2spOyByZXR1cm4gb2xkYml0czsgfQogICAgZm10
ZmxhZ3MgdW5zZXRmKGZtdGZsYWdzIG1hc2spIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7
CglfZmxhZ3MgJj0gfm1hc2s7IHJldHVybiBvbGRiaXRzOyB9CiAgICBpbnQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBfd2lkdGg7IH0KICAgIGludCB3aWR0aChpbnQgdmFsKSB7IGludCBzYXZlID0g
X3dpZHRoOyBfd2lkdGggPSB2YWw7IHJldHVybiBzYXZlOyB9CgoKCgogICAgdm9pZCBfdGhyb3df
ZmFpbHVyZSgpIGNvbnN0IHsgfQoKICAgIHZvaWQgY2xlYXIoaW9zdGF0ZSBzdGF0ZSA9IDApIHsK
CV9zdGF0ZSA9IF9zdHJidWYgPyBzdGF0ZSA6IHN0YXRlfGJhZGJpdDsKCWlmIChfc3RhdGUgJiBf
ZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgdm9pZCBzZXQoaW9zdGF0ZSBmbGFn
KSB7IF9zdGF0ZSB8PSBmbGFnOwoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3dfZmFp
bHVyZSgpOyB9CiAgICB2b2lkIHNldHN0YXRlKGlvc3RhdGUgZmxhZykgeyBfc3RhdGUgfD0gZmxh
ZzsgIAoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9CiAgICBp
bnQgZ29vZCgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSA9PSAwOyB9CiAgICBpbnQgZW9mKCkgY29u
c3QgeyByZXR1cm4gX3N0YXRlICYgaW9zOjplb2ZiaXQ7IH0KICAgIGludCBmYWlsKCkgY29uc3Qg
eyByZXR1cm4gX3N0YXRlICYgKGlvczo6YmFkYml0fGlvczo6ZmFpbGJpdCk7IH0KICAgIGludCBi
YWQoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgJiBpb3M6OmJhZGJpdDsgfQogICAgaW9zdGF0ZSBy
ZHN0YXRlKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlOyB9CiAgICBvcGVyYXRvciB2b2lkKigpIGNv
bnN0IHsgcmV0dXJuIGZhaWwoKSA/ICh2b2lkKikwIDogKHZvaWQqKSgtMSk7IH0KICAgIGludCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBmYWlsKCk7IH0KICAgIGlvc3RhdGUgZXhjZXB0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIF9leGNlcHRpb25zOyB9CiAgICB2b2lkIGV4Y2VwdGlvbnMoaW9z
dGF0ZSBlbmFibGUpIHsKCV9leGNlcHRpb25zID0gZW5hYmxlOwoJaWYgKF9zdGF0ZSAmIF9leGNl
cHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9CgogICAgc3RyZWFtYnVmKiByZGJ1ZigpIGNvbnN0
IHsgcmV0dXJuIF9zdHJidWY7IH0KICAgIHN0cmVhbWJ1ZiogcmRidWYoc3RyZWFtYnVmICpfcykg
ewogICAgICBzdHJlYW1idWYgKl9vbGQgPSBfc3RyYnVmOyBfc3RyYnVmID0gX3M7IGNsZWFyICgp
OyByZXR1cm4gX29sZDsgfQoKICAgIHN0YXRpYyBpbnQgc3luY193aXRoX3N0ZGlvKGludCBvbik7
CiAgICBzdGF0aWMgdm9pZCBzeW5jX3dpdGhfc3RkaW8oKSB7IHN5bmNfd2l0aF9zdGRpbygxKTsg
fQogICAgc3RhdGljIGZtdGZsYWdzIGJpdGFsbG9jKCk7CiAgICBzdGF0aWMgaW50IHhhbGxvYygp
OwogICAgdm9pZComIHB3b3JkKGludCk7CiAgICB2b2lkKiBwd29yZChpbnQpIGNvbnN0OwogICAg
bG9uZyYgaXdvcmQoaW50KTsKICAgIGxvbmcgaXdvcmQoaW50KSBjb25zdDsKCgoKCgoKCgoKICAg
ICAKICAgIGNsYXNzIEluaXQgewogICAgcHVibGljOgogICAgICBJbml0ICgpIHsgfQogICAgfTsK
CiAgcHJvdGVjdGVkOgogICAgaW5saW5lIGlvcyhzdHJlYW1idWYqIHNiID0gMCwgb3N0cmVhbSog
dGllX3RvID0gMCk7CiAgICBpbmxpbmUgdmlydHVhbCB+aW9zKCk7CiAgICBpbmxpbmUgdm9pZCBp
bml0KHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZSA9IDApOwp9OwoKCgoKdHlwZWRlZiBpb3M6
OnNlZWtfZGlyIF9zZWVrX2RpcjsKCgogCiAKIAogCiAKCiAKIApjbGFzcyBzdHJlYW1tYXJrZXIg
OiBwcml2YXRlIF9JT19tYXJrZXIgewogICAgZnJpZW5kIGNsYXNzIHN0cmVhbWJ1ZjsKICAgIHZv
aWQgc2V0X29mZnNldChpbnQgb2Zmc2V0KSB7IF9wb3MgPSBvZmZzZXQ7IH0KICBwdWJsaWM6CiAg
ICBzdHJlYW1tYXJrZXIoc3RyZWFtYnVmICpzYik7CiAgICB+c3RyZWFtbWFya2VyKCk7CiAgICBp
bnQgc2F2aW5nKCkgeyByZXR1cm4gIDE7IH0KICAgIGludCBkZWx0YShzdHJlYW1tYXJrZXImKTsK
ICAgIGludCBkZWx0YSgpOwp9OwoKc3RydWN0IHN0cmVhbWJ1ZiA6IHB1YmxpYyBfSU9fRklMRSB7
ICAKICAgIGZyaWVuZCBjbGFzcyBpb3M7CiAgICBmcmllbmQgY2xhc3MgaXN0cmVhbTsKICAgIGZy
aWVuZCBjbGFzcyBvc3RyZWFtOwogICAgZnJpZW5kIGNsYXNzIHN0cmVhbW1hcmtlcjsKICAgIGNv
bnN0IHZvaWQgKiZfdnRhYmxlKCkgeyByZXR1cm4gKihjb25zdCB2b2lkKiopKChfSU9fRklMRSop
dGhpcyArIDEpOyB9CiAgcHJvdGVjdGVkOgogICAgc3RhdGljIHN0cmVhbWJ1ZiogX2xpc3RfYWxs
OyAgCiAgICBfSU9fRklMRSomIHhjaGFpbigpIHsgcmV0dXJuIF9jaGFpbjsgfQogICAgdm9pZCBf
dW5fbGluaygpOwogICAgdm9pZCBfbGlua19pbigpOwogICAgY2hhciogZ3B0cigpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9iYXNlIDogX0lPX3JlYWRf
cHRyOyB9CiAgICBjaGFyKiBwcHRyKCkgY29uc3QgeyByZXR1cm4gX0lPX3dyaXRlX3B0cjsgfQog
ICAgY2hhciogZWdwdHIoKSBjb25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgxMDAgID8g
X0lPX3NhdmVfZW5kIDogX0lPX3JlYWRfZW5kOyB9CiAgICBjaGFyKiBlcHB0cigpIGNvbnN0IHsg
cmV0dXJuIF9JT193cml0ZV9lbmQ7IH0KICAgIGNoYXIqIHBiYXNlKCkgY29uc3QgeyByZXR1cm4g
X0lPX3dyaXRlX2Jhc2U7IH0KICAgIGNoYXIqIGViYWNrKCkgY29uc3QKICAgICAgeyByZXR1cm4g
X2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9iYXNlO30KICAgIGNo
YXIqIGJhc2UoKSBjb25zdCB7IHJldHVybiBfSU9fYnVmX2Jhc2U7IH0KICAgIGNoYXIqIGVidWYo
KSBjb25zdCB7IHJldHVybiBfSU9fYnVmX2VuZDsgfQogICAgaW50IGJsZW4oKSBjb25zdCB7IHJl
dHVybiBfSU9fYnVmX2VuZCAtIF9JT19idWZfYmFzZTsgfQogICAgdm9pZCB4cHV0X2NoYXIoY2hh
ciBjKSB7ICpfSU9fd3JpdGVfcHRyKysgPSBjOyB9CiAgICBpbnQgeGZsYWdzKCkgeyByZXR1cm4g
X2ZsYWdzIDsgfQogICAgaW50IHhmbGFncyhpbnQgZikge2ludCBmbCA9IF9mbGFncyA7IF9mbGFn
cyAgPSBmOyByZXR1cm4gZmw7fQogICAgdm9pZCB4c2V0ZmxhZ3MoaW50IGYpIHsgX2ZsYWdzICB8
PSBmOyB9CiAgICB2b2lkIHhzZXRmbGFncyhpbnQgZiwgaW50IG1hc2spCiAgICAgIHsgX2ZsYWdz
ICA9IChfZmxhZ3MgICYgfm1hc2spIHwgKGYgJiBtYXNrKTsgfQogICAgdm9pZCBnYnVtcChpbnQg
bikKICAgICAgeyBfZmxhZ3MgICYgMHgxMDAgID8gKF9JT19zYXZlX2Jhc2UrPW4pOihfSU9fcmVh
ZF9wdHIrPW4pO30KICAgIHZvaWQgcGJ1bXAoaW50IG4pIHsgX0lPX3dyaXRlX3B0ciArPSBuOyB9
CiAgICB2b2lkIHNldGIoY2hhciogYiwgY2hhciogZWIsIGludCBhPTApOwogICAgdm9pZCBzZXRw
KGNoYXIqIHAsIGNoYXIqIGVwKQogICAgICB7IF9JT193cml0ZV9iYXNlPV9JT193cml0ZV9wdHI9
cDsgX0lPX3dyaXRlX2VuZD1lcDsgfQogICAgdm9pZCBzZXRnKGNoYXIqIGViLCBjaGFyKiBnLCBj
aGFyICplZykgewogICAgICBpZiAoX2ZsYWdzICAmIDB4MTAwICkgX0lPX2ZyZWVfYmFja3VwX2Fy
ZWEodGhpcyk7IAogICAgICBfSU9fcmVhZF9iYXNlID0gZWI7IF9JT19yZWFkX3B0ciA9IGc7IF9J
T19yZWFkX2VuZCA9IGVnOyB9CiAgICBjaGFyICpzaG9ydGJ1ZigpIHsgcmV0dXJuIF9zaG9ydGJ1
ZjsgfQoKICAgIGludCBpbl9iYWNrdXAoKSB7IHJldHVybiBfZmxhZ3MgJiAweDEwMCA7IH0KICAg
ICAKICAgIGNoYXIgKkdiYXNlKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9iYXNl
IDogX0lPX3JlYWRfYmFzZTsgfQogICAgIAogICAgY2hhciAqZUdwdHIoKSB7IHJldHVybiBpbl9i
YWNrdXAoKSA/IF9JT19zYXZlX2VuZCA6IF9JT19yZWFkX2VuZDsgfQogICAgIAogICAgY2hhciAq
QmJhc2UoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19yZWFkX2Jhc2UgOiBfSU9fc2F2ZV9i
YXNlOyB9CiAgICBjaGFyICpCcHRyKCkgeyByZXR1cm4gX0lPX2JhY2t1cF9iYXNlOyB9CiAgICAg
CiAgICBjaGFyICplQnB0cigpIHsgcmV0dXJuIGluX2JhY2t1cCgpID8gX0lPX3JlYWRfZW5kIDog
X0lPX3NhdmVfZW5kOyB9CiAgICBjaGFyICpOYmFzZSgpIHsgcmV0dXJuIF9JT19zYXZlX2Jhc2U7
IH0KICAgIGNoYXIgKmVOcHRyKCkgeyByZXR1cm4gX0lPX3NhdmVfZW5kOyB9CiAgICBpbnQgaGF2
ZV9iYWNrdXAoKSB7IHJldHVybiBfSU9fc2F2ZV9iYXNlICE9IF9fbnVsbCA7IH0KICAgIGludCBo
YXZlX21hcmtlcnMoKSB7IHJldHVybiBfbWFya2VycyAhPSBfX251bGwgOyB9CiAgICB2b2lkIGZy
ZWVfYmFja3VwX2FyZWEoKTsKICAgIHZvaWQgdW5zYXZlX21hcmtlcnMoKTsgIAogICAgaW50IHB1
dF9tb2RlKCkgeyByZXR1cm4gX2ZsYWdzICYgMHg4MDAgOyB9CiAgICBpbnQgc3dpdGNoX3RvX2dl
dF9tb2RlKCk7CiAgICAKICAgIHN0cmVhbWJ1ZihpbnQgZmxhZ3M9MCk7CiAgcHVibGljOgogICAg
c3RhdGljIGludCBmbHVzaF9hbGwoKTsKICAgIHN0YXRpYyB2b2lkIGZsdXNoX2FsbF9saW5lYnVm
ZmVyZWQoKTsgIAogICAgdmlydHVhbCB+c3RyZWFtYnVmKCk7CiAgICB2aXJ0dWFsIGludCBvdmVy
ZmxvdyhpbnQgYyA9ICgtMSkgKTsgIAogICAgdmlydHVhbCBpbnQgdW5kZXJmbG93KCk7ICAKICAg
IHZpcnR1YWwgaW50IHVmbG93KCk7ICAKICAgIHZpcnR1YWwgaW50IHBiYWNrZmFpbChpbnQgYyk7
CiAKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSB4c3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFtc2l6
ZSBuKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSB4c2dldG4oY2hhciogcywgc3RyZWFtc2l6ZSBu
KTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGlu
dCBtb2RlPWlvczo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc2Vla3Bvcyhz
dHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpvdXQpOwoKICAgIHN0cmVhbXBv
cyBwdWJzZWVrb2ZmKHN0cmVhbW9mZiBvLCBfc2Vla19kaXIgZCwgaW50IG1vZGU9aW9zOjppbnxp
b3M6Om91dCkKICAgICAgeyByZXR1cm4gX0lPX3NlZWtvZmYgKHRoaXMsIG8sIGQsIG1vZGUpOyB9
CiAgICBzdHJlYW1wb3MgcHVic2Vla3BvcyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6
aW58aW9zOjpvdXQpCiAgICAgIHsgcmV0dXJuIF9JT19zZWVrcG9zICh0aGlzLCBwb3MsIG1vZGUp
OyB9CiAgICBzdHJlYW1wb3Mgc3NlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGludCBtb2Rl
PWlvczo6aW58aW9zOjpvdXQpOwogICAgc3RyZWFtcG9zIHNzZWVrcG9zKHN0cmVhbXBvcyBwb3Ms
IGludCBtb2RlID0gaW9zOjppbnxpb3M6Om91dCk7CiAgICB2aXJ0dWFsIHN0cmVhbWJ1Ziogc2V0
YnVmKGNoYXIqIHAsIGludCBsZW4pOwogICAgdmlydHVhbCBpbnQgc3luYygpOwogICAgdmlydHVh
bCBpbnQgZG9hbGxvY2F0ZSgpOwoKICAgIGludCBzZWVrbWFyayhzdHJlYW1tYXJrZXImIG1hcmss
IGludCBkZWx0YSA9IDApOwogICAgaW50IHNwdXRiYWNrYyhjaGFyIGMpOwogICAgaW50IHN1bmdl
dGMoKTsKICAgIGludCB1bmJ1ZmZlcmVkKCkgeyByZXR1cm4gX2ZsYWdzICYgMiAgPyAxIDogMDsg
fQogICAgaW50IGxpbmVidWZmZXJlZCgpIHsgcmV0dXJuIF9mbGFncyAmIDB4MjAwICA/IDEgOiAw
OyB9CiAgICB2b2lkIHVuYnVmZmVyZWQoaW50IGkpCgl7IGlmIChpKSBfZmxhZ3MgfD0gMiA7IGVs
c2UgX2ZsYWdzICY9IH4yIDsgfQogICAgdm9pZCBsaW5lYnVmZmVyZWQoaW50IGkpCgl7IGlmIChp
KSBfZmxhZ3MgfD0gMHgyMDAgOyBlbHNlIF9mbGFncyAmPSB+MHgyMDAgOyB9CiAgICBpbnQgYWxs
b2NhdGUoKSB7ICAKCWlmIChiYXNlKCkgfHwgdW5idWZmZXJlZCgpKSByZXR1cm4gMDsKCWVsc2Ug
cmV0dXJuIGRvYWxsb2NhdGUoKTsgfQogICAgIAogICAgdm9pZCBhbGxvY2J1ZigpIHsgaWYgKGJh
c2UoKSA9PSBfX251bGwgKSBkb2FsbG9jYnVmKCk7IH0KICAgIHZvaWQgZG9hbGxvY2J1ZigpOwog
ICAgaW50IGluX2F2YWlsKCkgeyByZXR1cm4gX0lPX3JlYWRfZW5kIC0gX0lPX3JlYWRfcHRyOyB9
CiAgICBpbnQgb3V0X3dhaXRpbmcoKSB7IHJldHVybiBfSU9fd3JpdGVfcHRyIC0gX0lPX3dyaXRl
X2Jhc2U7IH0KICAgIHN0cmVhbXNpemUgc3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFtc2l6ZSBu
KSB7IHJldHVybiB4c3B1dG4ocywgbik7IH0KICAgIHN0cmVhbXNpemUgcGFkbihjaGFyIHBhZCwg
c3RyZWFtc2l6ZSBuKSB7IHJldHVybiBfSU9fcGFkbih0aGlzLCBwYWQsIG4pOyB9CiAgICBzdHJl
YW1zaXplIHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyByZXR1cm4gX0lPX3NnZXRuKHRo
aXMsIHMsIG4pOyB9CiAgICBpbnQgaWdub3JlKGludCk7CiAgICBpbnQgZ2V0X2NvbHVtbigpOwog
ICAgaW50IHNldF9jb2x1bW4oaW50KTsKICAgIGxvbmcgc2dldGxpbmUoY2hhciogYnVmLCBzaXpl
X3QgICBuLCBjaGFyIGRlbGltLCBpbnQgcHV0YmFja19kZWxpbSk7CiAgICBpbnQgc3B1dGMoaW50
IGMpIHsgcmV0dXJuIF9JT19wdXRjKGMsIHRoaXMpOyB9CiAgICBpbnQgc2J1bXBjKCkgeyByZXR1
cm4gX0lPX2dldGModGhpcyk7IH0KICAgIGludCBzZ2V0YygpIHsgcmV0dXJuICgoICB0aGlzICAp
LT5fSU9fcmVhZF9wdHIgPj0gKCAgdGhpcyAgKS0+X0lPX3JlYWRfZW5kICYmIF9fdW5kZXJmbG93
ICggIHRoaXMgICkgPT0gKC0xKSAgPyAoLTEpICA6ICoodW5zaWduZWQgY2hhciAqKSAoICB0aGlz
ICApLT5fSU9fcmVhZF9wdHIpICA7IH0KICAgIGludCBzbmV4dGMoKSB7CglpZiAoX0lPX3JlYWRf
cHRyID49IF9JT19yZWFkX2VuZCAmJiBfX3VuZGVyZmxvdyh0aGlzKSA9PSAoLTEpICkKCSAgcmV0
dXJuICgtMSkgOwoJZWxzZSByZXR1cm4gX0lPX3JlYWRfcHRyKyssIHNnZXRjKCk7IH0KICAgIHZv
aWQgc3Rvc3NjKCkgeyBpZiAoX0lPX3JlYWRfcHRyIDwgX0lPX3JlYWRfZW5kKSBfSU9fcmVhZF9w
dHIrKzsgfQogICAgaW50IHZzY2FuKGNoYXIgY29uc3QgKmZtdDAsIF9fZ251Y192YV9saXN0ICBh
cCwgaW9zKiBzdHJlYW0gPSBfX251bGwgKTsKICAgIGludCBzY2FuKGNoYXIgY29uc3QgKmZtdDAg
Li4uKTsKICAgIGludCB2Zm9ybShjaGFyIGNvbnN0ICpmbXQwLCBfX2dudWNfdmFfbGlzdCAgYXAp
OwogICAgaW50IGZvcm0oY2hhciBjb25zdCAqZm10MCAuLi4pOwoKCgoKICAgIHZpcnR1YWwgc3Ry
ZWFtc2l6ZSBzeXNfcmVhZChjaGFyKiBidWYsIHN0cmVhbXNpemUgc2l6ZSk7CiAgICB2aXJ0dWFs
IHN0cmVhbXNpemUgc3lzX3dyaXRlKGNvbnN0IGNoYXIqLCBzdHJlYW1zaXplKTsKICAgIHZpcnR1
YWwgc3RyZWFtcG9zIHN5c19zZWVrKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHZpcnR1YWwg
aW50IHN5c19jbG9zZSgpOwogICAgdmlydHVhbCBpbnQgc3lzX3N0YXQodm9pZCopOyAgCgogICAg
dmlydHVhbCBpbnQgc2hvd21hbnljKCk7CiAgICB2aXJ0dWFsIHZvaWQgaW1idWUodm9pZCAqKTsK
Cn07CgogCiAKCmNsYXNzIGZpbGVidWYgOiBwdWJsaWMgc3RyZWFtYnVmIHsKICBwcm90ZWN0ZWQ6
CiAgICB2b2lkIGluaXQoKTsKICBwdWJsaWM6CiAgICBzdGF0aWMgY29uc3QgaW50IG9wZW5wcm90
OyAgCiAgICBmaWxlYnVmKCk7CiAgICBmaWxlYnVmKGludCBmZCk7CiAgICBmaWxlYnVmKGludCBm
ZCwgY2hhciogcCwgaW50IGxlbik7CgoKCiAgICB+ZmlsZWJ1ZigpOwogICAgZmlsZWJ1ZiogYXR0
YWNoKGludCBmZCk7CiAgICBmaWxlYnVmKiBvcGVuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25z
dCBjaGFyICptb2RlKTsKICAgIGZpbGVidWYqIG9wZW4oY29uc3QgY2hhciAqZmlsZW5hbWUsIGlv
czo6b3Blbm1vZGUgbW9kZSwgaW50IHByb3QgPSAwNjY0KTsKICAgIHZpcnR1YWwgaW50IHVuZGVy
ZmxvdygpOwogICAgdmlydHVhbCBpbnQgb3ZlcmZsb3coaW50IGMgPSAoLTEpICk7CiAgICBpbnQg
aXNfb3BlbigpIGNvbnN0IHsgcmV0dXJuIF9maWxlbm8gPj0gMDsgfQogICAgaW50IGZkKCkgY29u
c3QgeyByZXR1cm4gaXNfb3BlbigpID8gX2ZpbGVubyA6ICgtMSkgOyB9CiAgICBmaWxlYnVmKiBj
bG9zZSgpOwogICAgdmlydHVhbCBpbnQgZG9hbGxvY2F0ZSgpOwogICAgdmlydHVhbCBzdHJlYW1w
b3Mgc2Vla29mZihzdHJlYW1vZmYsIF9zZWVrX2RpciwgaW50IG1vZGU9aW9zOjppbnxpb3M6Om91
dCk7CiAgICB2aXJ0dWFsIHN0cmVhbWJ1Ziogc2V0YnVmKGNoYXIqIHAsIGludCBsZW4pOwogICAg
c3RyZWFtc2l6ZSB4c3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFtc2l6ZSBuKTsKICAgIHN0cmVh
bXNpemUgeHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIGludCBzeW5j
KCk7CiAgcHJvdGVjdGVkOiAgCiAKICAgIGludCBpc19yZWFkaW5nKCkgeyByZXR1cm4gZWJhY2so
KSAhPSBlZ3B0cigpOyB9CiAgICBjaGFyKiBjdXJfcHRyKCkgeyByZXR1cm4gaXNfcmVhZGluZygp
ID8gIGdwdHIoKSA6IHBwdHIoKTsgfQogICAgIAogICAgY2hhciogZmlsZV9wdHIoKSB7IHJldHVy
biBlR3B0cigpOyB9CiAgICAgCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3JlYWQoY2hhciog
YnVmLCBzdHJlYW1zaXplIHNpemUpOwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc3lzX3NlZWsoc3Ry
ZWFtb2ZmLCBfc2Vla19kaXIpOwogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c193cml0ZShjb25z
dCBjaGFyKiwgc3RyZWFtc2l6ZSk7CiAgICB2aXJ0dWFsIGludCBzeXNfc3RhdCh2b2lkKik7ICAK
ICAgIHZpcnR1YWwgaW50IHN5c19jbG9zZSgpOwoKCgoKfTsKCmlubGluZSB2b2lkIGlvczo6aW5p
dChzdHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWVfdG8pIHsKCQlfc3RhdGUgPSBzYiA/IGlvczo6
Z29vZGJpdCA6IGlvczo6YmFkYml0OyBfZXhjZXB0aW9ucz0wOwoJCV9zdHJidWY9c2I7IF90aWUg
PSB0aWVfdG87IF93aWR0aD0wOyBfZmlsbD0nICc7CgoJCV9mbGFncz1pb3M6OnNraXB3c3xpb3M6
OmRlYzsKCgoKCQlfcHJlY2lzaW9uPTY7IF9hcnJheXMgPSAwOyB9CgppbmxpbmUgaW9zOjppb3Mo
c3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllX3RvKSB7IGluaXQoc2IsIHRpZV90byk7IH0KCmlu
bGluZSBpb3M6On5pb3MoKSB7CgoKCiAgICAgCiAgICAgCiAgICBvcGVyYXRvciBkZWxldGVbXSAo
X2FycmF5cyk7Cn0KfSAgCgojIDMxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9p
bmNsdWRlL2crKy0zL2lvc3RyZWFtLmgiIDIgMwoKCmV4dGVybiAiQysrIiB7CmNsYXNzIGlzdHJl
YW07IGNsYXNzIG9zdHJlYW07CnR5cGVkZWYgaW9zJiAoKl9fbWFuaXApKGlvcyYpOwp0eXBlZGVm
IGlzdHJlYW0mICgqX19pbWFuaXApKGlzdHJlYW0mKTsKdHlwZWRlZiBvc3RyZWFtJiAoKl9fb21h
bmlwKShvc3RyZWFtJik7CgpleHRlcm4gaXN0cmVhbSYgd3MoaXN0cmVhbSYgaW5zKTsKZXh0ZXJu
IG9zdHJlYW0mIGZsdXNoKG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgZW5kbChvc3Ry
ZWFtJiBvdXRzKTsKZXh0ZXJuIG9zdHJlYW0mIGVuZHMob3N0cmVhbSYgb3V0cyk7CgpjbGFzcyBv
c3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAgICAKICAgIHZvaWQgZG9fb3NmeCgpOwog
IHB1YmxpYzoKICAgIG9zdHJlYW0oKSB7IH0KICAgIG9zdHJlYW0oc3RyZWFtYnVmKiBzYiwgb3N0
cmVhbSogdGllZD0gX19udWxsICk7CiAgICBpbnQgb3BmeCgpIHsKCWlmICghZ29vZCgpKSByZXR1
cm4gMDsKCWVsc2UgeyBpZiAoX3RpZSkgX3RpZS0+Zmx1c2goKTsgIDsgcmV0dXJuIDE7fSB9CiAg
ICB2b2lkIG9zZngoKSB7ICA7CgkJICBpZiAoZmxhZ3MoKSAmIChpb3M6OnVuaXRidWZ8aW9zOjpz
dGRpbykpCgkJICAgICAgZG9fb3NmeCgpOyB9CiAgICBvc3RyZWFtJiBmbHVzaCgpOwogICAgb3N0
cmVhbSYgcHV0KGNoYXIgYykgeyBfc3RyYnVmLT5zcHV0YyhjKTsgcmV0dXJuICp0aGlzOyB9CgoK
CgoKICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IGNoYXIgKnMsIHN0cmVhbXNpemUgbik7CiAgICBv
c3RyZWFtJiB3cml0ZShjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBzdHJlYW1zaXplIG4pCiAgICAg
IHsgcmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9CiAgICBvc3RyZWFtJiB3cml0ZShj
b25zdCBzaWduZWQgY2hhciAqcywgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgo
Y29uc3QgY2hhciopcywgbik7fQogICAgb3N0cmVhbSYgd3JpdGUoY29uc3Qgdm9pZCAqcywgc3Ry
ZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgoY29uc3QgY2hhciopcywgbik7fQogICAg
b3N0cmVhbSYgc2Vla3Aoc3RyZWFtcG9zKTsKICAgIG9zdHJlYW0mIHNlZWtwKHN0cmVhbW9mZiwg
X3NlZWtfZGlyKTsKICAgIHN0cmVhbXBvcyB0ZWxscCgpOwogICAgb3N0cmVhbSYgZm9ybShjb25z
dCBjaGFyICpmb3JtYXQgLi4uKTsKICAgIG9zdHJlYW0mIHZmb3JtKGNvbnN0IGNoYXIgKmZvcm1h
dCwgX19nbnVjX3ZhX2xpc3QgIGFyZ3MpOwoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY2hhciBj
KTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiAoKnRo
aXMpIDw8IChjaGFyKWM7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc2lnbmVkIGNoYXIgYykg
eyByZXR1cm4gKCp0aGlzKSA8PCAoY2hhciljOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNv
bnN0IGNoYXIgKnMpOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCB1bnNpZ25lZCBjaGFy
ICpzKQoJeyByZXR1cm4gKCp0aGlzKSA8PCAoY29uc3QgY2hhciopczsgfQogICAgb3N0cmVhbSYg
b3BlcmF0b3I8PChjb25zdCBzaWduZWQgY2hhciAqcykKCXsgcmV0dXJuICgqdGhpcykgPDwgKGNv
bnN0IGNoYXIqKXM7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgdm9pZCAqcCk7CiAg
ICBvc3RyZWFtJiBvcGVyYXRvcjw8KGludCBuKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5z
aWduZWQgaW50IG4pOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChsb25nIG4pOwogICAgb3N0cmVh
bSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIG4pOwoKICAgIF9fZXh0ZW5zaW9uX18gb3N0cmVh
bSYgb3BlcmF0b3I8PChsb25nIGxvbmcgbik7CiAgICBfX2V4dGVuc2lvbl9fIG9zdHJlYW0mIG9w
ZXJhdG9yPDwodW5zaWduZWQgbG9uZyBsb25nIG4pOwoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwo
c2hvcnQgbikge3JldHVybiBvcGVyYXRvcjw8KChpbnQpbik7fQogICAgb3N0cmVhbSYgb3BlcmF0
b3I8PCh1bnNpZ25lZCBzaG9ydCBuKSB7cmV0dXJuIG9wZXJhdG9yPDwoKHVuc2lnbmVkIGludClu
KTt9CgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChib29sIGIpIHsgcmV0dXJuIG9wZXJhdG9yPDwo
KGludCliKTsgfQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoZG91YmxlIG4pOwogICAgb3N0cmVh
bSYgb3BlcmF0b3I8PChmbG9hdCBuKSB7IHJldHVybiBvcGVyYXRvcjw8KChkb3VibGUpbik7IH0K
CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgZG91YmxlIG4pOwoKCgogICAgb3N0cmVhbSYg
b3BlcmF0b3I8PChfX29tYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0aGlzKTsgfQogICAg
b3N0cmVhbSYgb3BlcmF0b3I8PChfX21hbmlwIGZ1bmMpIHsoKmZ1bmMpKCp0aGlzKTsgcmV0dXJu
ICp0aGlzO30KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc3RyZWFtYnVmKik7CgoKCn07CgpjbGFz
cyBpc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAgICAKcHJvdGVjdGVkOgogICAgc2l6
ZV90ICAgX2djb3VudDsKCiAgICBpbnQgX3NraXBfd3MoKTsKICBwdWJsaWM6CiAgICBpc3RyZWFt
KCk6IF9nY291bnQgKDApIHsgfQogICAgaXN0cmVhbShzdHJlYW1idWYqIHNiLCBvc3RyZWFtKnRp
ZWQ9IF9fbnVsbCApOwogICAgaXN0cmVhbSYgZ2V0KGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBk
ZWxpbSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0KHVuc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxl
biwgY2hhciBkZWxpbSA9ICdcbicpCgl7IHJldHVybiBnZXQoKGNoYXIqKXB0ciwgbGVuLCBkZWxp
bSk7IH0KICAgIGlzdHJlYW0mIGdldChjaGFyJiBjKTsKICAgIGlzdHJlYW0mIGdldCh1bnNpZ25l
ZCBjaGFyJiBjKSB7IHJldHVybiBnZXQoKGNoYXImKWMpOyB9CiAgICBpc3RyZWFtJiBnZXRsaW5l
KGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0
bGluZSh1bnNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyBy
ZXR1cm4gZ2V0bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgZ2V0
KHNpZ25lZCBjaGFyJiBjKSAgeyByZXR1cm4gZ2V0KChjaGFyJiljKTsgfQogICAgaXN0cmVhbSYg
Z2V0KHNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1
cm4gZ2V0KChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9CiAgICBpc3RyZWFtJiBnZXRsaW5lKHNp
Z25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0
bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgcmVhZChjaGFyICpw
dHIsIHN0cmVhbXNpemUgbik7CiAgICBpc3RyZWFtJiByZWFkKHVuc2lnbmVkIGNoYXIgKnB0ciwg
c3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiByZWFkKChjaGFyKilwdHIsIG4pOyB9CiAgICBp
c3RyZWFtJiByZWFkKHNpZ25lZCBjaGFyICpwdHIsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1
cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0cmVhbSYgcmVhZCh2b2lkICpwdHIsIHN0
cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0
cmVhbSYgZ2V0KHN0cmVhbWJ1ZiYgc2IsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGlzdHJlYW0m
IGdldHMoY2hhciAqKnMsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGludCBpcGZ4KGludCBuZWVk
ID0gMCkgewoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7IHJldHVybiAwOyB9Cgll
bHNlIHsKCSAgIDsKCSAgaWYgKF90aWUgJiYgKG5lZWQgPT0gMCB8fCByZGJ1ZigpLT5pbl9hdmFp
bCgpIDwgbmVlZCkpIF90aWUtPmZsdXNoKCk7CgkgIGlmICghbmVlZCAmJiAoZmxhZ3MoKSAmIGlv
czo6c2tpcHdzKSkgcmV0dXJuIF9za2lwX3dzKCk7CgkgIGVsc2UgcmV0dXJuIDE7Cgl9CiAgICB9
CiAgICBpbnQgaXBmeDAoKSB7ICAKCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZhaWxiaXQpOyBy
ZXR1cm4gMDsgfQoJZWxzZSB7CgkgICA7CgkgIGlmIChfdGllKSBfdGllLT5mbHVzaCgpOwoJICBp
ZiAoZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSByZXR1cm4gX3NraXBfd3MoKTsKCSAgZWxzZSByZXR1
cm4gMTsKCX0KICAgIH0KICAgIGludCBpcGZ4MSgpIHsgIAoJaWYgKCFnb29kKCkpIHsgc2V0KGlv
czo6ZmFpbGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsKCSAgaWYgKF90aWUgJiYgcmRi
dWYoKS0+aW5fYXZhaWwoKSA9PSAwKSBfdGllLT5mbHVzaCgpOwoJICByZXR1cm4gMTsKCX0KICAg
IH0KICAgIHZvaWQgaXNmeCgpIHsgIDsgfQogICAgaW50IGdldCgpIHsgaWYgKCFpcGZ4MSgpKSBy
ZXR1cm4gKC0xKSA7CgkJZWxzZSB7IGludCBjaCA9IF9zdHJidWYtPnNidW1wYygpOwoJCSAgICAg
ICBpZiAoY2ggPT0gKC0xKSApIHNldChpb3M6OmVvZmJpdCk7CgkJICAgICAgIGlzZngoKTsKCQkg
ICAgICAgcmV0dXJuIGNoOwoJCSAgICAgfSB9CiAgICBpbnQgcGVlaygpOwogICAgc2l6ZV90ICAg
Z2NvdW50KCkgeyByZXR1cm4gX2djb3VudDsgfQogICAgaXN0cmVhbSYgaWdub3JlKGludCBuPTEs
IGludCBkZWxpbSA9ICgtMSkgKTsKICAgIGludCBzeW5jICgpOwogICAgaXN0cmVhbSYgc2Vla2co
c3RyZWFtcG9zKTsKICAgIGlzdHJlYW0mIHNlZWtnKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAg
IHN0cmVhbXBvcyB0ZWxsZygpOwogICAgaXN0cmVhbSYgcHV0YmFjayhjaGFyIGNoKSB7CglpZiAo
Z29vZCgpICYmIF9zdHJidWYtPnNwdXRiYWNrYyhjaCkgPT0gKC0xKSApIGNsZWFyKGlvczo6YmFk
Yml0KTsKCXJldHVybiAqdGhpczt9CiAgICBpc3RyZWFtJiB1bmdldCgpIHsKCWlmIChnb29kKCkg
JiYgX3N0cmJ1Zi0+c3VuZ2V0YygpID09ICgtMSkgKSBjbGVhcihpb3M6OmJhZGJpdCk7CglyZXR1
cm4gKnRoaXM7fQogICAgaXN0cmVhbSYgc2Nhbihjb25zdCBjaGFyICpmb3JtYXQgLi4uKTsKICAg
IGlzdHJlYW0mIHZzY2FuKGNvbnN0IGNoYXIgKmZvcm1hdCwgX19nbnVjX3ZhX2xpc3QgIGFyZ3Mp
OwoKCgoKCgogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFyKik7CiAgICBpc3RyZWFtJiBvcGVy
YXRvcj4+KHVuc2lnbmVkIGNoYXIqIHApIHsgcmV0dXJuIG9wZXJhdG9yPj4oKGNoYXIqKXApOyB9
CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNpZ25lZCBjaGFyKnApIHsgcmV0dXJuIG9wZXJhdG9y
Pj4oKGNoYXIqKXApOyB9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGNoYXImIGMpOwogICAgaXN0
cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBjaGFyJiBjKSB7cmV0dXJuIG9wZXJhdG9yPj4oKGNo
YXImKWMpO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc2lnbmVkIGNoYXImIGMpIHtyZXR1cm4g
b3BlcmF0b3I+PigoY2hhciYpYyk7fQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihpbnQmKTsKICAg
IGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyYpOwoKICAgIF9fZXh0ZW5zaW9uX18gaXN0cmVhbSYg
b3BlcmF0b3I+Pihsb25nIGxvbmcmKTsKICAgIF9fZXh0ZW5zaW9uX18gaXN0cmVhbSYgb3BlcmF0
b3I+Pih1bnNpZ25lZCBsb25nIGxvbmcmKTsKCiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNob3J0
Jik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGludCYpOwogICAgaXN0cmVhbSYg
b3BlcmF0b3I+Pih1bnNpZ25lZCBsb25nJik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2ln
bmVkIHNob3J0Jik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihib29sJik7CgogICAgaXN0cmVh
bSYgb3BlcmF0b3I+PihmbG9hdCYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihkb3VibGUmKTsK
ICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyBkb3VibGUmKTsKICAgIGlzdHJlYW0mIG9wZXJh
dG9yPj4oIF9fbWFuaXAgZnVuYykgeygqZnVuYykoKnRoaXMpOyByZXR1cm4gKnRoaXM7fQogICAg
aXN0cmVhbSYgb3BlcmF0b3I+PihfX2ltYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0aGlz
KTsgfQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzdHJlYW1idWYqKTsKfTsKCmNsYXNzIGlvc3Ry
ZWFtIDogcHVibGljIGlzdHJlYW0sIHB1YmxpYyBvc3RyZWFtCnsKICBwdWJsaWM6CiAgICBpb3N0
cmVhbSgpIHsgfQogICAgaW9zdHJlYW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSp0aWVkPSBfX251
bGwgKTsKfTsKCmNsYXNzIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24gOiBwdWJsaWMgaXN0cmVhbSB7
CnB1YmxpYzoKICBfSU9faXN0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0oaXN0cmVhbSYpOwog
IF9JT19pc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShfSU9faXN0cmVhbV93aXRoYXNzaWdu
JiByaHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRpY19jYXN0PGlzdHJlYW0mPiAocmhz
KSk7IH0KfTsKCmNsYXNzIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24gOiBwdWJsaWMgb3N0cmVhbSB7
CnB1YmxpYzoKICBfSU9fb3N0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0ob3N0cmVhbSYpOwog
IF9JT19vc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShfSU9fb3N0cmVhbV93aXRoYXNzaWdu
JiByaHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRpY19jYXN0PG9zdHJlYW0mPiAocmhz
KSk7IH0KfTsKCmV4dGVybiBfSU9faXN0cmVhbV93aXRoYXNzaWduIGNpbjsKIApleHRlcm4gX0lP
X29zdHJlYW1fd2l0aGFzc2lnbiBjb3V0LCBjZXJyOwoKZXh0ZXJuIF9JT19vc3RyZWFtX3dpdGhh
c3NpZ24gY2xvZwoKCgo7CgpleHRlcm4gaXN0cmVhbSYgbG9jayhpc3RyZWFtJiBpbnMpOwpleHRl
cm4gaXN0cmVhbSYgdW5sb2NrKGlzdHJlYW0mIGlucyk7CmV4dGVybiBvc3RyZWFtJiBsb2NrKG9z
dHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgdW5sb2NrKG9zdHJlYW0mIG91dHMpOwoKc3Ry
dWN0IElvc3RyZWFtX2luaXQgeyB9IDsgICAKCmlubGluZSBpb3MmIGRlYyhpb3MmIGkpCnsgaS5z
ZXRmKGlvczo6ZGVjLCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9Cmlu
bGluZSBpb3MmIGhleChpb3MmIGkpCnsgaS5zZXRmKGlvczo6aGV4LCBpb3M6OmRlY3xpb3M6Omhl
eHxpb3M6Om9jdCk7IHJldHVybiBpOyB9CmlubGluZSBpb3MmIG9jdChpb3MmIGkpCnsgaS5zZXRm
KGlvczo6b2N0LCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9Cn0gIAoK
CiMgNDUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Rs
X2FsbG9jLmgiIDIgMwoKI2RlZmluZSBfX1RIUk9XX0JBRF9BTExPQyBjZXJyIDw8ICJvdXQgb2Yg
bWVtb3J5IiA8PCBlbmRsOyBleGl0KDEpCgoKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgojIDUzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45
NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNs
dWRlL2crKy0zL3N0bF9hbGxvYy5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKI2RlZmluZSAJCV9fbmVlZF9zaXplX3QK
CiNkZWZpbmUgCV9fbmVlZF93Y2hhcl90CiNkZWZpbmUgCV9fbmVlZF9OVUxMCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgoj
IDYxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1
LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vmcy9uZXdtYW4v
dXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu
dS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKI3VuZGVmIAlfX25lZWRfc2l6ZV90CgoKCiAK
CgoKCiAKCgojIDI2OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
I3VuZGVmIAlfX25lZWRfd2NoYXJfdAoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKI3VuZGVmIE5VTEwJCQoK
I2RlZmluZSBOVUxMIF9fbnVsbAoKCgoKI3VuZGVmIAlfX25lZWRfTlVMTAoKCgogCgoKCgoKCgoj
IDMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCgojZGVmaW5l
IAlfU1RETElCX0gJMQoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwkJCSAKICAg
IGludCByZW07CQkJIAogIH0gZGl2X3Q7CgogCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcg
aW50IHF1b3Q7CQkgCiAgICBsb25nIGludCByZW07CQkgCiAgfSBsZGl2X3Q7CiNkZWZpbmUgX19s
ZGl2X3RfZGVmaW5lZAkxCgoKIyA2NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiAKI2Rl
ZmluZSAJUkFORF9NQVgJMjE0NzQ4MzY0NwoKCiAKCiNkZWZpbmUgCUVYSVRfRkFJTFVSRQkxCQoj
ZGVmaW5lIAlFWElUX1NVQ0NFU1MJMAkKCgogCiNkZWZpbmUgCU1CX0NVUl9NQVgJKF9fY3R5cGVf
Z2V0X21iX2N1cl9tYXggKCkpCmV4dGVybiBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAg
KHZvaWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGRvdWJsZSBhdG9mICAoX19jb25zdCBjaGFy
ICpfX25wdHIpICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgYXRvaSAgKF9fY29uc3QgY2hhciAq
X19ucHRyKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gbG9uZyBpbnQgYXRvbCAgKF9fY29uc3QgY2hh
ciAqX19ucHRyKSAgdGhyb3cgKCkgIDsKCgogCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgYXRvbGwgIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIHRocm93ICgpICA7CgoKIApleHRl
cm4gZG91YmxlIHN0cnRvZCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCSAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKCiAKZXh0
ZXJuIGxvbmcgaW50IHN0cnRvbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJ
CSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpICB0aHJvdyAoKSAg
OwogCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsICAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKCQkJCSAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJ
CSAgICAgICBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKCgogCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IGxvbmcgbG9uZyBpbnQgc3RydG9xICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
CQkJCSAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpICB0aHJvdyAoKSAg
OwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAoJCQkJCSAgICBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKCgoKIAoKIApf
X2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGwgIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpICB0aHJvdyAoKSAgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgc3RydG91bGwgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJ
CQkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJICAgICBpbnQgX19iYXNl
KSAgdGhyb3cgKCkgIDsKCgoKIyAxOTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgogCgoK
ZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCgkJCQkgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCSAgICAg
IGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFs
ICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGxvbmcgZG91
YmxlICBfX3N0cnRvbGRfaW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKgoJCQkJCQlfX3Jlc3RyaWN0
IF9fbnB0ciwKCQkJCQkJY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCWludCBfX2dy
b3VwKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsCgkJCQkJaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwojZGVmaW5l
IF9fc3RydG9sX2ludGVybmFsX2RlZmluZWQJMQoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBf
X3N0cnRvdWxfaW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKgoJCQkJCQkgIF9fcmVzdHJpY3QgX19u
cHRyLAoJCQkJCQkgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCQkgIGludCBfX2Jh
c2UsIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKI2RlZmluZSBfX3N0cnRvdWxfaW50ZXJuYWxf
ZGVmaW5lZAkxCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xs
X2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkgICAgICBpbnQgX19iYXNlLCBpbnQgX19n
cm91cCkgIHRocm93ICgpICA7CiNkZWZpbmUgX19zdHJ0b2xsX2ludGVybmFsX2RlZmluZWQJMQoK
Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9p
bnRlcm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJCQlfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJ
CWNoYXIgKioKCQkJCQkJCV9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCQlpbnQgX19iYXNlLAoJ
CQkJCQkJaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwojZGVmaW5lIF9fc3RydG91bGxfaW50ZXJu
YWxfZGVmaW5lZAkxCgoKCiMgMzI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKCiAKCgpl
eHRlcm4gY2hhciAqbDY0YSAgKGxvbmcgaW50IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBs
b25nIGludCBhNjRsICAoX19jb25zdCBjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiNkZWZp
bmUgCV9TWVNfVFlQRVNfSAkxCgoKCmV4dGVybiAiQyIgeyAKCgoKCnR5cGVkZWYgX191X2NoYXIg
dV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7
CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRl
ZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgp0eXBlZGVm
IF9fbG9mZl90IGxvZmZfdDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwoKCgojZGVmaW5lIGlu
b190IGlub190CgoKCgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CiNkZWZpbmUgZGV2X3QgZGV2
X3QKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwojZGVmaW5lIGdpZF90IGdpZF90CgoKCnR5cGVk
ZWYgX19tb2RlX3QgbW9kZV90OwojZGVmaW5lIG1vZGVfdCBtb2RlX3QKCgoKdHlwZWRlZiBfX25s
aW5rX3QgbmxpbmtfdDsKI2RlZmluZSBubGlua190IG5saW5rX3QKCgoKdHlwZWRlZiBfX3VpZF90
IHVpZF90OwojZGVmaW5lIHVpZF90IHVpZF90CgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoK
CiNkZWZpbmUgb2ZmX3Qgb2ZmX3QKCgoKCgoKCnR5cGVkZWYgX19waWRfdCBwaWRfdDsKI2RlZmlu
ZSBwaWRfdCBwaWRfdAoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwoKCgp0eXBlZGVmIF9fc3NpemVf
dCBzc2l6ZV90OwojZGVmaW5lIHNzaXplX3Qgc3NpemVfdAoKCgp0eXBlZGVmIF9fZGFkZHJfdCBk
YWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5
X3Q7CgoKCgoKI2RlZmluZSAJX19uZWVkX3RpbWVfdAojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDMKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKI2RlZmluZSBf
X3RpbWVfdF9kZWZpbmVkCTEKCgoKIAp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsKCgojdW5kZWYg
CV9fbmVlZF90aW1lX3QKCgojIDg5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgojIDI3OSAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDEyMiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAyIDMKCgojZGVmaW5lIAlfX25lZWRfc2l6ZV90CiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgojdW5kZWYgCV9fbmVlZF9zaXplX3QKCgoKIAoKCgoKIAoKCiMgMjY5ICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoKCgoKCgoKCgog
CgogCgojIDMxNyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoK
IAoKCiN1bmRlZiBOVUxMCQkKCiNkZWZpbmUgTlVMTCBfX251bGwKCgoKCgoKCgogCgoKCgoKCgoj
IDEyNSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIAp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IHVpbnQ7CgoKIAoKIyAxNTkgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMwoKCiAKI2RlZmluZSBfX2ludE5fdChOLCBNT0RFKSB0eXBlZGVmIGludCBpbnQjI04jI190
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoTU9ERSkpKQoKI2RlZmluZSBfX3VfaW50Tl90KE4s
IE1PREUpIHR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50IyNOIyNfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKE1PREUpKSkKCgoKI2RlZmluZSBfX2ludDhfdF9kZWZpbmVkCnR5cGVkZWYgaW50
IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19RSV9fICkpKSA7CnR5cGVkZWYg
aW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fSElfXyApKSkgOwp0eXBl
ZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsK
dHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ESV9fICkp
KSA7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9k
ZV9fICggIF9fUUlfXyApKSkgOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRy
aWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fSElfXyApKSkgOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1
X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fU0lfXyApKSkgOwp0eXBlZGVm
IHVuc2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fRElf
XyApKSkgOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fd29yZF9fKSkpOwoKCiAKCgojZGVmaW5lIF9fQklUX1RZUEVTX0RFRklORURfXwkxCgoKCiAK
CgogCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCiNkZWZpbmUgX1NZU19TRUxFQ1RfSAkxCgoKCiAKCgogCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvc2VsZWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX19G
RF9aRVJPKGZkc3ApIGRvIHsJaW50IF9fZDAsIF9fZDE7CV9fYXNtX18gX192b2xhdGlsZV9fICgi
Y2xkOyByZXA7IHN0b3NsIgk6ICI9YyIgKF9fZDApLCAiPUQiIChfX2QxKQk6ICJhIiAoMCksICIw
IiAoc2l6ZW9mIChfX2ZkX3NldCkJLyBzaXplb2YgKF9fZmRfbWFzaykpLAkiMSIgKCZfX0ZEU19C
SVRTIChmZHNwKVswXSkJOiAibWVtb3J5Iik7CX0gd2hpbGUgKDApCiMgMzYgIi91c3IvaW5jbHVk
ZS9iaXRzL3NlbGVjdC5oIiAzCgojZGVmaW5lIF9fRkRfU0VUKGZkLCBmZHNwKSBfX2FzbV9fIF9f
dm9sYXRpbGVfXyAoImJ0c2wgJTEsJTAiCTogIj1tIiAoX19GRFNfQklUUyAoZmRzcClbX19GREVM
VCAoZmQpXSkJOiAiciIgKCgoaW50KSAoZmQpKSAlIF9fTkZEQklUUykJOiAiY2MiLCJtZW1vcnki
KQoKCgoKI2RlZmluZSBfX0ZEX0NMUihmZCwgZmRzcCkgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJi
dHJsICUxLCUwIgk6ICI9bSIgKF9fRkRTX0JJVFMgKGZkc3ApW19fRkRFTFQgKGZkKV0pCTogInIi
ICgoKGludCkgKGZkKSkgJSBfX05GREJJVFMpCTogImNjIiwibWVtb3J5IikKCgoKCiNkZWZpbmUg
X19GRF9JU1NFVChmZCwgZmRzcCkgKF9fZXh0ZW5zaW9uX18JKHtyZWdpc3RlciBjaGFyIF9fcmVz
dWx0OwlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImJ0bCAlMSwlMiA7IHNldGNiICViMCIJOiAiPXEi
IChfX3Jlc3VsdCkJOiAiciIgKCgoaW50KSAoZmQpKSAlIF9fTkZEQklUUyksCSJtIiAoX19GRFNf
QklUUyAoZmRzcClbX19GREVMVCAoZmQpXSkJOiAiY2MiKTsJX19yZXN1bHQ7IH0pKQojIDU2ICIv
dXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMwoKIyA3MiAiL3Vzci9pbmNsdWRlL2JpdHMvc2Vs
ZWN0LmgiIDMKCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZp
bmUgX1NJR1NFVF9IX3R5cGVzCTEKCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKIAoKI2Rl
ZmluZSBfU0lHU0VUX05XT1JEUwkoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGlu
dCkpKQp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0
IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpIF07CiAgfSBfX3NpZ3NldF90OwoK
CgoKIAoKCgoKCiMgMTI1ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwoKIyAzNCAiL3Vz
ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIAojZGVmaW5lIF9fbmVlZF90aW1lc3BlYwoj
IDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCiMgNTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA2MiAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMwoKCgojIDczICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgoKCiNkZWZpbmUg
X190aW1lc3BlY19kZWZpbmVkCTEKCiAKCnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIGxvbmcgaW50
IHR2X3NlYzsJCSAKICAgIGxvbmcgaW50IHR2X25zZWM7CQkgCiAgfTsKCgojdW5kZWYgCV9fbmVl
ZF90aW1lc3BlYwoKCiMgMjc5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgMzggIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCiAKCgoKc3RydWN0IHRp
bWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKIAp0eXBlZGVmIF9fZmRfc2V0IGZk
X3NldDsKCiAKI2RlZmluZSAJRkRfU0VUU0laRQkJX19GRF9TRVRTSVpFCgoKIAojZGVmaW5lIE5G
REJJVFMJCV9fTkZEQklUUwoKCgogCiNkZWZpbmUgCUZEX1NFVChmZCwgZmRzZXRwKQlfX0ZEX1NF
VCAoKGZkKSwgKGZkc2V0cCkpCiNkZWZpbmUgCUZEX0NMUihmZCwgZmRzZXRwKQlfX0ZEX0NMUiAo
KGZkKSwgKGZkc2V0cCkpCiNkZWZpbmUgCUZEX0lTU0VUKGZkLCBmZHNldHApCV9fRkRfSVNTRVQg
KChmZCksIChmZHNldHApKQojZGVmaW5lIAlGRF9aRVJPKGZkc2V0cCkJCV9fRkRfWkVSTyAoZmRz
ZXRwKQoKCiAKCgoKCmV4dGVybiBpbnQgX19zZWxlY3QgIChpbnQgX19uZmRzLCBfX2ZkX3NldCAq
X19yZWFkZmRzLAoJCQkgIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRm
ZHMsCgkJCSAgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgIHRocm93ICgpICA7CmV4dGVybiBp
bnQgc2VsZWN0ICAoaW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywKCQkJX19mZF9zZXQg
Kl9fd3JpdGVmZHMsIF9fZmRfc2V0ICpfX2V4Y2VwdGZkcywKCQkJc3RydWN0IHRpbWV2YWwgKl9f
dGltZW91dCkgIHRocm93ICgpICA7CgojIDkxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAz
CgoKfSAKCgojIDE5NCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZp
bmUgX1NZU19TWVNNQUNST1NfSAkxCgogCgoKCgojZGVmaW5lIG1ham9yKGRldikgKChpbnQpKCgo
ZGV2KSA+PiA4KSAmIDB4ZmYpKQojZGVmaW5lIG1pbm9yKGRldikgKChpbnQpKChkZXYpICYgMHhm
ZikpCiNkZWZpbmUgbWFrZWRldihtYWpvciwgbWlub3IpICgoKCh1bnNpZ25lZCBpbnQpIChtYWpv
cikpIDw8IDgpIHwgKCh1bnNpZ25lZCBpbnQpIChtaW5vcikpKQoKIyA0NyAiL3Vzci9pbmNsdWRl
L3N5cy9zeXNtYWNyb3MuaCIgMwoKCgojIDE5NyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAy
IDMKCgoKCiAKCnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsJICAKdHlwZWRlZiBfX2ZzYmxr
Y250X3QgZnNibGtjbnRfdDsgIAp0eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNudF90OyAgCgoK
CgoKCgoKCgoKCn0gCgoKIyAzMzkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKIAoKCgog
CmV4dGVybiBpbnQzMl90IHJhbmRvbSAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9p
ZCBzcmFuZG9tICAodW5zaWduZWQgaW50IF9fc2VlZCkgIHRocm93ICgpICA7CgogCgoKCmV4dGVy
biB2b2lkICogIGluaXRzdGF0ZSAgKHVuc2lnbmVkIGludCBfX3NlZWQsIHZvaWQgKiAgX19zdGF0
ZWJ1ZiwKCQkJICAgICAgIHNpemVfdCBfX3N0YXRlbGVuKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVy
biB2b2lkICogIHNldHN0YXRlICAodm9pZCAqICBfX3N0YXRlYnVmKSAgdGhyb3cgKCkgIDsKCgoK
IAoKCgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwkJIAogICAgaW50
MzJfdCAqcnB0cjsJCSAKICAgIGludDMyX3QgKnN0YXRlOwkJIAogICAgaW50IHJhbmRfdHlwZTsJ
CSAKICAgIGludCByYW5kX2RlZzsJCSAKICAgIGludCByYW5kX3NlcDsJCSAKICAgIGludDMyX3Qg
KmVuZF9wdHI7CQkgCiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgIChzdHJ1Y3QgcmFuZG9tX2Rh
dGEgKl9fcmVzdHJpY3QgX19idWYsCgkJCSAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkg
IHRocm93ICgpICA7CgpleHRlcm4gaW50IHNyYW5kb21fciAgKHVuc2lnbmVkIGludCBfX3NlZWQs
IHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBpbml0
c3RhdGVfciAgKHVuc2lnbmVkIGludCBfX3NlZWQsCgkJCSAgICAgdm9pZCAqICBfX3Jlc3RyaWN0
IF9fc3RhdGVidWYsCgkJCSAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCgkJCSAgICAgc3RydWN0IHJh
bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgc2V0
c3RhdGVfciAgKHZvaWQgKiAgX19yZXN0cmljdCBfX3N0YXRlYnVmLAoJCQkgICAgc3RydWN0IHJh
bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSAgdGhyb3cgKCkgIDsKCgoKCiAKZXh0ZXJuIGlu
dCByYW5kICAodm9pZCkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHZvaWQgc3JhbmQgICh1bnNpZ25l
ZCBpbnQgX19zZWVkKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQgcmFuZF9yICAodW5zaWdu
ZWQgaW50ICpfX3NlZWQpICB0aHJvdyAoKSAgOwoKCgoKIAoKIApleHRlcm4gZG91YmxlIGRyYW5k
NDggICh2b2lkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gbG9uZyBpbnQgbHJh
bmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gbG9uZyBpbnQgbnJhbmQ0OCAgKHVuc2ln
bmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50
IG1yYW5kNDggICh2b2lkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggICh1
bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lk
IHNyYW5kNDggIChsb25nIGludCBfX3NlZWR2YWwpICB0aHJvdyAoKSAgOwpleHRlcm4gdW5zaWdu
ZWQgc2hvcnQgaW50ICpzZWVkNDggICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSAg
dGhyb3cgKCkgIDsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3Bh
cmFtWzddKSAgdGhyb3cgKCkgIDsKCiAKc3RydWN0IGRyYW5kNDhfZGF0YQogIHsKICAgIHVuc2ln
bmVkIHNob3J0IGludCB4WzNdOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYVszXTsJIAogICAg
dW5zaWduZWQgc2hvcnQgaW50IGM7CSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBvbGRfeFszXTsg
IAogICAgaW50IGluaXQ7CQkJIAogIH07CgoKIApleHRlcm4gaW50IGRyYW5kNDhfciAgKHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAqX19yZXN0
cmljdCBfX3Jlc3VsdCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgZXJhbmQ0OF9yICAodW5zaWdu
ZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVz
dHJpY3QgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgIHRocm93
ICgpICA7CgogCmV4dGVybiBpbnQgbHJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y
ZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICB0
aHJvdyAoKSAgOwpleHRlcm4gaW50IG5yYW5kNDhfciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdLAoJCQkgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAoJ
CQkgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgIHRocm93ICgpICA7CgogCmV4dGVy
biBpbnQgbXJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZl
ciwKCQkJICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICB0aHJvdyAoKSAgOwpleHRl
cm4gaW50IGpyYW5kNDhfciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAoJCQkgICBz
dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAoJCQkgICBsb25nIGludCAq
X19yZXN0cmljdCBfX3Jlc3VsdCkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgc3JhbmQ0OF9y
ICAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgIHRo
cm93ICgpICA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9fc2Vl
ZDE2dlszXSwKCQkJICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgIHRocm93ICgpICA7
CgpleHRlcm4gaW50IGxjb25nNDhfciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLAoJ
CQkgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgIHRocm93ICgpICA7CgoKCgoKCiNk
ZWZpbmUgX19tYWxsb2NfYW5kX2NhbGxvY19kZWZpbmVkCiAKZXh0ZXJuIHZvaWQgKiAgbWFsbG9j
ICAoc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAo
c2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4g
dm9pZCAqICByZWFsbG9jICAodm9pZCAqICBfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgp
ICA7CiAKZXh0ZXJuIHZvaWQgZnJlZSAgKHZvaWQgKiAgX19wdHIpICB0aHJvdyAoKSAgOwoKCiAK
ZXh0ZXJuIHZvaWQgY2ZyZWUgICh2b2lkICogIF9fcHRyKSAgdGhyb3cgKCkgIDsKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgCV9B
TExPQ0FfSAkxCgoKCiNkZWZpbmUgCV9fbmVlZF9zaXplX3QKIyAxICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
Mi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251
L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgogCgoKCgogCgogCgoKIyAxODggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCiN1bmRlZiAJX19uZWVkX3NpemVfdAoKCgogCgoKCgogCgoKIyAy
NjkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoK
CgoKCiAKCiAKCiMgMzE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4z
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKCgogCgoKI3VuZGVmIE5VTEwJCQoKI2RlZmluZSBOVUxMIF9fbnVsbAoKCgoKCgoKCiAKCgoK
CgoKCiMgMjUgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKIAoK
CiAKZXh0ZXJuIHZvaWQgKiAgYWxsb2NhICAoc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CgoK
I2RlZmluZSBhbGxvY2Eoc2l6ZSkJX19idWlsdGluX2FsbG9jYSAoc2l6ZSkKCgp9IAoKCiMgNDky
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKIApleHRlcm4gdm9pZCAqICB2YWxsb2Mg
IChzaXplX3QgX19zaXplKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gdm9pZCBhYm9ydCAgKHZv
aWQpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogCmV4dGVy
biBpbnQgYXRleGl0ICAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSAgdGhyb3cgKCkgIDsKCgogCgpl
eHRlcm4gaW50IF9fb25fZXhpdCAgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQg
KiAgX19hcmcpLAoJCQkgICB2b2lkICogIF9fYXJnKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBv
bl9leGl0ICAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqICBfX2FyZyksCgkJ
CSB2b2lkICogIF9fYXJnKSAgdGhyb3cgKCkgIDsKCgogCgoKZXh0ZXJuIHZvaWQgZXhpdCAgKGlu
dCBfX3N0YXR1cykgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
CgoKCgoKCiAKZXh0ZXJuIGNoYXIgKmdldGVudiAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAgdGhy
b3cgKCkgIDsKCiAKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgIChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSkgIHRocm93ICgpICA7CgoKIAogCgpleHRlcm4gaW50IHB1dGVudiAgKGNoYXIgKl9f
c3RyaW5nKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGludCBzZXRlbnYgIChfX2NvbnN0IGNo
YXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLAoJCQlpbnQgX19yZXBsYWNlKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgdW5zZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
IHRocm93ICgpICA7CgoKCiAKCgpleHRlcm4gaW50IGNsZWFyZW52ICAodm9pZCkgIHRocm93ICgp
ICA7CgoKCgogCgoKCmV4dGVybiBjaGFyICpta3RlbXAgIChjaGFyICpfX3RlbXBsYXRlKSAgdGhy
b3cgKCkgIDsKCiAKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAgKGNoYXIgKl9fdGVtcGxhdGUpICB0
aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgc3lzdGVtICAoX19jb25zdCBjaGFyICpfX2NvbW1h
bmQpICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0aCAg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCgkJCSAgICBjaGFyICpfX3Jlc3RyaWN0
IF9fcmVzb2x2ZWQpICB0aHJvdyAoKSAgOwoKCgogCgojZGVmaW5lIF9fQ09NUEFSX0ZOX1QKdHlw
ZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAgKF9fY29uc3Qgdm9pZCAqICwgX19jb25zdCB2b2lk
ICogKSAgOwoKCgoKCgogCgpleHRlcm4gdm9pZCAqICBic2VhcmNoICAoX19jb25zdCB2b2lkICog
IF9fa2V5LCBfX2NvbnN0IHZvaWQgKiAgX19iYXNlLAoJCQkgICAgICAgc2l6ZV90IF9fbm1lbWIs
IHNpemVfdCBfX3NpemUsCgkJCSAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSAgOwoKIAoK
ZXh0ZXJuIHZvaWQgcXNvcnQgICh2b2lkICogIF9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVf
dCBfX3NpemUsCgkJCSAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikgIDsKCgogCmV4dGVybiBpbnQg
YWJzICAoaW50IF9feCkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpl
eHRlcm4gbG9uZyBpbnQgbGFicyAgKGxvbmcgaW50IF9feCkgIHRocm93ICgpICAgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgogCgogCmV4dGVybiBkaXZfdCBkaXYgIChpbnQgX19u
dW1lciwgaW50IF9fZGVub20pICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKZXh0ZXJuIGxkaXZfdCBsZGl2ICAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5v
bSkgIHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgoK
IAoKCiAKCgpleHRlcm4gY2hhciAqZWN2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
IGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCQlpbnQgKl9fcmVzdHJpY3QgX19zaWduKSAgdGhy
b3cgKCkgIDsKCiAKCgpleHRlcm4gY2hhciAqZmN2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCQlpbnQgKl9fcmVzdHJpY3QgX19zaWdu
KSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4gY2hhciAqZ2N2dCAgKGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnFl
Y3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSAgdGhyb3cgKCkgIDsKZXh0ZXJu
IGNoYXIgKnFmY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGlu
dCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSAgdGhyb3cgKCkg
IDsKZXh0ZXJuIGNoYXIgKnFnY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdp
dCwgY2hhciAqX19idWYpICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gaW50IGVjdnRfciAgKGRv
dWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCQlp
bnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQlzaXplX3Qg
X19sZW4pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGZjdnRfciAgKGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCQlpbnQgKl9fcmVzdHJpY3Qg
X19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQlzaXplX3QgX19sZW4pICB0aHJvdyAo
KSAgOwoKZXh0ZXJuIGludCBxZWN2dF9yICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25k
aWdpdCwKCQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWdu
LAoJCQkgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsK
ZXh0ZXJuIGludCBxZmN2dF9yICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwK
CQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAoJCQkg
Y2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsKCgoKCiAK
CmV4dGVybiBpbnQgbWJsZW4gIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgIHRocm93
ICgpICA7CiAKCmV4dGVybiBpbnQgbWJ0b3djICAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywK
CQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7
CiAKCmV4dGVybiBpbnQgd2N0b21iICAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpICB0aHJv
dyAoKSAgOwoKCiAKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAgKHdjaGFyX3QgKl9fcmVzdHJpY3Qg
IF9fcHdjcywKCQkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19u
KSAgdGhyb3cgKCkgIDsKIApleHRlcm4gc2l6ZV90IHdjc3RvbWJzICAoY2hhciAqX19yZXN0cmlj
dCBfX3MsCgkJCSAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90
IF9fbikgIHRocm93ICgpICA7CgoKCiAKCgoKZXh0ZXJuIGludCBycG1hdGNoICAoX19jb25zdCBj
aGFyICpfX3Jlc3BvbnNlKSAgdGhyb3cgKCkgIDsKCgoKIyA3MzIgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMwoKCgojIDc1NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKIyA3NjYgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKCn0gCgoKIyA1NCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIgMiAzCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYXNzZXJ0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgojIDMyICIvdXNyL2lu
Y2x1ZGUvYXNzZXJ0LmgiIDMKCgojZGVmaW5lIAlfQVNTRVJUX0gJMQoKCiAKCgoKCiMgNTYgIi91
c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwoKCmV4dGVybiAiQyIgeyAKCiAKZXh0ZXJuIHZvaWQgX19h
c3NlcnRfZmFpbCAgKF9fY29uc3QgY2hhciAqX19hc3NlcnRpb24sCgkJCQlfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwKCQkJCXVuc2lnbmVkIGludCBfX2xpbmUsCgkJCQlfX2NvbnN0IGNoYXIgKl9fZnVu
Y3Rpb24pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
IApleHRlcm4gdm9pZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAgKGludCBfX2Vycm51bSwKCQkJCSAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgX19saW5l
LAoJCQkJICAgICAgIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikgIHRocm93ICgpICAKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7Cgp9IAoKI2RlZmluZSBhc3NlcnQoZXhwcikJ
KCh2b2lkKSAoKGV4cHIpID8gMCA6CShfX2Fzc2VydF9mYWlsIChfX1NUUklORyhleHByKSwJX19G
SUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTiksIDApKSkKCgoKCgoKCgoKCgogCgoK
CgoKCgoKI2RlZmluZSBfX0FTU0VSVF9GVU5DVElPTglfX1BSRVRUWV9GVU5DVElPTl9fCgoKCgoK
CgoKCgoKCiMgNTYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysr
LTMvc3RsX2FsbG9jLmgiIDIgMwoKCiNkZWZpbmUgX19SRVNUUklDVAoKCgoKCgoKCgogICAgIAog
ICAgIAogICAgIAojIDEgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDEgMwogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCgoKI2RlZmluZSBfUFRIUkVBRF9ICTEKCgoKIyAxICIvdXNyL2luY2x1ZGUv
c2NoZWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgCV9TQ0hFRF9ICTEKCgoK
IAoKCiNkZWZpbmUgX19uZWVkX3RpbWVzcGVjCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMwoKCgojIDYyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgNzMgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDMKCgoKCiMgODkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCiN1bmRlZiAJ
X19uZWVkX3RpbWVzcGVjCgoKIyAyNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAyOSAi
L3Vzci9pbmNsdWRlL3NjaGVkLmgiIDIgMwoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hl
ZC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKI2RlZmluZSBTQ0hFRF9PVEhF
UgkwCiNkZWZpbmUgU0NIRURfRklGTwkxCiNkZWZpbmUgU0NIRURfUlIJMgoKCiAKI2RlZmluZSBD
U0lHTkFMICAgICAgIDB4MDAwMDAwZmYgCiNkZWZpbmUgQ0xPTkVfVk0gICAgICAweDAwMDAwMTAw
IAojZGVmaW5lIENMT05FX0ZTICAgICAgMHgwMDAwMDIwMCAKI2RlZmluZSBDTE9ORV9GSUxFUyAg
IDB4MDAwMDA0MDAgCiNkZWZpbmUgQ0xPTkVfU0lHSEFORCAweDAwMDAwODAwIAojZGVmaW5lIENM
T05FX1BJRCAgICAgMHgwMDAwMTAwMCAKI2RlZmluZSBDTE9ORV9QVFJBQ0UgIDB4MDAwMDIwMDAg
CiNkZWZpbmUgQ0xPTkVfVkZPUksgICAweDAwMDA0MDAwIAoKCgogCnN0cnVjdCBzY2hlZF9wYXJh
bQogIHsKICAgIGludCBzY2hlZF9wcmlvcml0eTsKICB9OwoKZXh0ZXJuICJDIiB7IAoKIAoKZXh0
ZXJuIGludCBjbG9uZSAgKGludCAoKl9fZm4pICh2b2lkICpfX2FyZyksIHZvaWQgKl9fY2hpbGRf
c3RhY2ssCgkJICAgICAgIGludCBfX2ZsYWdzLCB2b2lkICpfX2FyZykgIHRocm93ICgpICA7CgoK
fSAKCgoKCgojZGVmaW5lIF9fZGVmaW5lZF9zY2hlZHBhcmFtCTEKIApzdHJ1Y3QgX19zY2hlZF9w
YXJhbQogIHsKICAgIGludCBzY2hlZF9wcmlvcml0eTsKICB9OwoKCiMgMzIgIi91c3IvaW5jbHVk
ZS9zY2hlZC5oIiAyIDMKCgpleHRlcm4gIkMiIHsgCgogCmV4dGVybiBpbnQgX19zY2hlZF9zZXRw
YXJhbSAgKF9fcGlkX3QgX19waWQsCgkJCQkgIF9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpf
X3BhcmFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzY2hlZF9zZXRwYXJhbSAgKF9fcGlkX3Qg
X19waWQsCgkJCQlfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgp
ICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9nZXRwYXJhbSAgKF9fcGlkX3QgX19waWQsIHN0cnVj
dCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgc2NoZWRfZ2V0
cGFyYW0gIChfX3BpZF90IF9fcGlkLCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IF9fc2NoZWRfc2V0c2NoZWR1bGVyICAoX19waWRfdCBfX3Bp
ZCwgaW50IF9fcG9saWN5LAoJCQkJICAgICAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9f
cGFyYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX3NldHNjaGVkdWxlciAgKF9fcGlk
X3QgX19waWQsIGludCBfX3BvbGljeSwKCQkJCSAgICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJh
bSAqX19wYXJhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9nZXRzY2hlZHVs
ZXIgIChfX3BpZF90IF9fcGlkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzY2hlZF9nZXRzY2hl
ZHVsZXIgIChfX3BpZF90IF9fcGlkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVk
X3lpZWxkICAodm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgc2NoZWRfeWllbGQgICh2b2lk
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVkX2dldF9wcmlvcml0eV9tYXggIChp
bnQgX19hbGdvcml0aG0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX2dldF9wcmlvcml0
eV9tYXggIChpbnQgX19hbGdvcml0aG0pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fc2No
ZWRfZ2V0X3ByaW9yaXR5X21pbiAgKGludCBfX2FsZ29yaXRobSkgIHRocm93ICgpICA7CmV4dGVy
biBpbnQgc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiAgKGludCBfX2FsZ29yaXRobSkgIHRocm93ICgp
ICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9ycl9nZXRfaW50ZXJ2YWwgIChfX3BpZF90IF9fcGlk
LCBzdHJ1Y3QgdGltZXNwZWMgKl9fdCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgc2NoZWRfcnJf
Z2V0X2ludGVydmFsICAoX19waWRfdCBfX3BpZCwgc3RydWN0IHRpbWVzcGVjICpfX3QpICB0aHJv
dyAoKSAgOwoKfSAKCgojIDIwICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCiMgMSAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgojZGVmaW5l
IF9USU1FX0gJMQoKCmV4dGVybiAiQyIgeyAKCgoKCiAKI2RlZmluZSBfX25lZWRfc2l6ZV90CiNk
ZWZpbmUgX19uZWVkX05VTEwKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgog
CgoKIyAxMjYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoK
CgogCgogCgoKIyAxODggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CiN1bmRlZiAJX19uZWVkX3NpemVfdAoKCgogCgoKCgogCgoKIyAyNjkgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
Mi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKI3VuZGVmIE5V
TEwJCQoKI2RlZmluZSBOVUxMIF9fbnVsbAoKCgoKI3VuZGVmIAlfX25lZWRfTlVMTAoKCgogCgoK
CgoKCgojIDM4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgogCgojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiNkZWZpbmUgX0JJ
VFNfVElNRV9ICTEKCiAKCgogCgoKI2RlZmluZSBDTE9DS1NfUEVSX1NFQyAgMTAwMDAwMAoKCiAK
CiNkZWZpbmUgQ0xLX1RDSyAxMDAKCgoKCgojIDU5ICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgi
IDMKIAojIDQyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgogCgoKCgoKCgoKCgojZGVmaW5l
IF9fY2xvY2tfdF9kZWZpbmVkCTEKCgoKIAp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190OwoKCgoK
IyA3MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKIyA4OSAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwoKCgoKCiAKc3RydWN0IHRtCnsKICBpbnQgdG1fc2VjOwkJCSAKICBpbnQgdG1fbWluOwkJ
CSAKICBpbnQgdG1faG91cjsJCQkgCiAgaW50IHRtX21kYXk7CQkJIAogIGludCB0bV9tb247CQkJ
IAogIGludCB0bV95ZWFyOwkJCSAKICBpbnQgdG1fd2RheTsJCQkgCiAgaW50IHRtX3lkYXk7CQkJ
IAogIGludCB0bV9pc2RzdDsJCQkgCgoKICBsb25nIGludCB0bV9nbXRvZmY7CQkgCiAgX19jb25z
dCBjaGFyICp0bV96b25lOwkgCgoKCgp9OwoKCiAKCmV4dGVybiBjbG9ja190IGNsb2NrICAodm9p
ZCkgIHRocm93ICgpICA7CgogCmV4dGVybiB0aW1lX3QgdGltZSAgKHRpbWVfdCAqX190aW1lcikg
IHRocm93ICgpICA7CgogCmV4dGVybiBkb3VibGUgZGlmZnRpbWUgICh0aW1lX3QgX190aW1lMSwg
dGltZV90IF9fdGltZTApICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKIApleHRlcm4gdGltZV90IG1rdGltZSAgKHN0cnVjdCB0bSAqX190cCkgIHRocm93ICgp
ICA7CgoKIAoKCmV4dGVybiBzaXplX3Qgc3RyZnRpbWUgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywg
c2l6ZV90IF9fbWF4c2l6ZSwKCQkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsCgkJCSAgICAgX19jb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgIHRocm93ICgp
ICA7CgoKCgoKCgoKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAgKF9fY29uc3QgdGltZV90
ICpfX3RpbWVyKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZSAg
KF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSAgdGhyb3cgKCkgIDsKCgogCgpleHRlcm4gc3RydWN0
IHRtICpfX2dtdGltZV9yICAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKCQkJ
CSAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHN0cnVj
dCB0bSAqZ210aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAoJCQkJ
IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBzdHJ1
Y3QgdG0gKmxvY2FsdGltZV9yICAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwK
CQkJCSAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgIHRocm93ICgpICA7CgoKIAoKZXh0
ZXJuIGNoYXIgKmFzY3RpbWUgIChfX2NvbnN0IHN0cnVjdCB0bSAqX190cCkgIHRocm93ICgpICA7
CgogCmV4dGVybiBjaGFyICpjdGltZSAgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSAgdGhyb3cg
KCkgIDsKCgogCgogCgpleHRlcm4gY2hhciAqYXNjdGltZV9yICAoX19jb25zdCBzdHJ1Y3QgdG0g
Kl9fcmVzdHJpY3QgX190cCwKCQkJICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGNoYXIgKmN0aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmlj
dCBfX3RpbWVyLAoJCQkgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSAgdGhyb3cgKCkgIDsKCgoK
IApleHRlcm4gY2hhciAqX190em5hbWVbMl07CSAKZXh0ZXJuIGludCBfX2RheWxpZ2h0OwkJIApl
eHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsJIAoKCgogCmV4dGVybiBjaGFyICp0em5hbWVbMl07
CgogCgpleHRlcm4gdm9pZCB0enNldCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCgpleHRlcm4gaW50
IGRheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgdGltZXpvbmU7CgoKCiAKCmV4dGVybiBpbnQgc3Rp
bWUgIChfX2NvbnN0IHRpbWVfdCAqX193aGVuKSAgdGhyb3cgKCkgIDsKCgoKIAoKI2RlZmluZSBf
X2lzbGVhcCh5ZWFyKQkoKHllYXIpICUgNCA9PSAwICYmICgoeWVhcikgJSAxMDAgIT0gMCB8fCAo
eWVhcikgJSA0MDAgPT0gMCkpCgoKCgogCgoKIApleHRlcm4gdGltZV90IHRpbWVnbSAgKHN0cnVj
dCB0bSAqX190cCkgIHRocm93ICgpICA7CgogCmV4dGVybiB0aW1lX3QgdGltZWxvY2FsICAoc3Ry
dWN0IHRtICpfX3RwKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBkeXNpemUgIChpbnQgX195
ZWFyKSAgdGhyb3cgKCkgIDsKCgoKCiAKZXh0ZXJuIGludCBuYW5vc2xlZXAgIChfX2NvbnN0IHN0
cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwKCQkJICAgc3RydWN0IHRpbWVzcGVjICpf
X3JlbWFpbmluZykgIHRocm93ICgpICA7CgoKCiMgMjY0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CgoKIyAyNzQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKfSAKCgoKCiMgMjEgIi91c3IvaW5j
bHVkZS9wdGhyZWFkLmgiIDIgMwoKCiNkZWZpbmUgX19uZWVkX3NpZ3NldF90CiMgMSAiL3Vzci9p
bmNsdWRlL3NpZ25hbC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgpleHRl
cm4gIkMiIHsgCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwoKCgogCgoKCgoK
IyAxMjUgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCgojIDMzICIvdXNyL2luY2x1ZGUv
c2lnbmFsLmgiIDIgMwoKCiAKCgoKCgoKCgoKCgojdW5kZWYgX19uZWVkX3NpZ3NldF90CiNkZWZp
bmUgX19zaWdzZXRfdF9kZWZpbmVkCTEKdHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90OwoKCgoj
IDM2MCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzCgoKfSAKCgojIDI0ICIvdXNyL2luY2x1ZGUv
cHRocmVhZC5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEg
MwogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgoKCgoKCiNkZWZpbmUgX0JJVFNfUFRIUkVBRFRZ
UEVTX0gJMQoKI2RlZmluZSBfX25lZWRfc2NoZWRwYXJhbQojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3NjaGVkLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDYyICIvdXNyL2luY2x1ZGUvYml0
cy9zY2hlZC5oIiAzCgoKIyA3MyAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMwoKIyAyMyAi
L3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCiAKc3RydWN0IF9wdGhyZWFk
X2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsgICAgICAgICAgICAgCiAgaW50IF9fc3Bp
bmxvY2s7ICAgICAgICAgICAgICAgIAp9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVz
Y3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsKI2RlZmluZSBfUFRIUkVBRF9ERVNDUl9ERUZJTkVE
CgoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVk
cG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhl
cml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0
YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9
IHB0aHJlYWRfYXR0cl90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9m
YXN0bG9jayBfX2NfbG9jazsgIAogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOyAgICAgICAg
IAp9IHB0aHJlYWRfY29uZF90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9
IHB0aHJlYWRfY29uZGF0dHJfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlf
dDsKCgogCiAKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOyAgICAgICAgICAg
ICAgICAKICBpbnQgX19tX2NvdW50OyAgICAgICAgICAgICAgICAgICAKICBfcHRocmVhZF9kZXNj
ciBfX21fb3duZXI7ICAgICAgICAKICBpbnQgX19tX2tpbmQ7ICAgICAgICAgICAgICAgICAgICAK
ICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7ICAKfSBwdGhyZWFkX211dGV4X3Q7
CgoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhh
dHRyX3Q7CgoKIAp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgojIDExNiAiL3Vzci9pbmNs
dWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50
IHB0aHJlYWRfdDsKCgojIDI1ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCgoKZXh0ZXJu
ICJDIiB7IAoKIAoKI2RlZmluZSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSIHswLCAwLCAwLCBQ
VEhSRUFEX01VVEVYX0ZBU1RfTlAsIHswLCAwfX0KCgoKCgoKI2RlZmluZSBQVEhSRUFEX0NPTkRf
SU5JVElBTElaRVIge3swLCAwfSwgMH0KCgoKCgoKCiAKCmVudW0KewogIFBUSFJFQURfQ1JFQVRF
X0pPSU5BQkxFLAojZGVmaW5lIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFCVBUSFJFQURfQ1JFQVRF
X0pPSU5BQkxFCiAgUFRIUkVBRF9DUkVBVEVfREVUQUNIRUQKI2RlZmluZSBQVEhSRUFEX0NSRUFU
RV9ERVRBQ0hFRAlQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRAp9OwoKZW51bQp7CiAgUFRIUkVBRF9J
TkhFUklUX1NDSEVELAojZGVmaW5lIFBUSFJFQURfSU5IRVJJVF9TQ0hFRAlQVEhSRUFEX0lOSEVS
SVRfU0NIRUQKICBQVEhSRUFEX0VYUExJQ0lUX1NDSEVECiNkZWZpbmUgUFRIUkVBRF9FWFBMSUNJ
VF9TQ0hFRAlQVEhSRUFEX0VYUExJQ0lUX1NDSEVECn07CgplbnVtCnsKICBQVEhSRUFEX1NDT1BF
X1NZU1RFTSwKI2RlZmluZSBQVEhSRUFEX1NDT1BFX1NZU1RFTQlQVEhSRUFEX1NDT1BFX1NZU1RF
TQogIFBUSFJFQURfU0NPUEVfUFJPQ0VTUwojZGVmaW5lIFBUSFJFQURfU0NPUEVfUFJPQ0VTUwlQ
VEhSRUFEX1NDT1BFX1BST0NFU1MKfTsKCmVudW0KewogIFBUSFJFQURfTVVURVhfRkFTVF9OUCwK
ICBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCwKICBQVEhSRUFEX01VVEVYX0VSUk9SQ0hFQ0tf
TlAKCgoKCgoKCn07CgplbnVtCnsKICBQVEhSRUFEX1BST0NFU1NfUFJJVkFURSwKI2RlZmluZSBQ
VEhSRUFEX1BST0NFU1NfUFJJVkFURQlQVEhSRUFEX1BST0NFU1NfUFJJVkFURQogIFBUSFJFQURf
UFJPQ0VTU19TSEFSRUQKI2RlZmluZSBQVEhSRUFEX1BST0NFU1NfU0hBUkVECVBUSFJFQURfUFJP
Q0VTU19TSEFSRUQKfTsKCiMgMTAzICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCgoKI2RlZmlu
ZSBQVEhSRUFEX09OQ0VfSU5JVCAwCgogCgpzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIK
ewogIHZvaWQgKCpfX3JvdXRpbmUpICAodm9pZCAqKSAgOwkgICAKICB2b2lkICpfX2FyZzsJCQkJ
ICAgCiAgaW50IF9fY2FuY2VsdHlwZTsJCQkgICAKICBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9i
dWZmZXIgKl9fcHJldjsgIAp9OwoKIAoKZW51bQp7CiAgUFRIUkVBRF9DQU5DRUxfRU5BQkxFLAoj
ZGVmaW5lIFBUSFJFQURfQ0FOQ0VMX0VOQUJMRQlQVEhSRUFEX0NBTkNFTF9FTkFCTEUKICBQVEhS
RUFEX0NBTkNFTF9ESVNBQkxFCiNkZWZpbmUgUFRIUkVBRF9DQU5DRUxfRElTQUJMRQlQVEhSRUFE
X0NBTkNFTF9ESVNBQkxFCn07CmVudW0KewogIFBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVELAojZGVm
aW5lIFBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVECVBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVECiAgUFRI
UkVBRF9DQU5DRUxfQVNZTkNIUk9OT1VTCiNkZWZpbmUgUFRIUkVBRF9DQU5DRUxfQVNZTkNIUk9O
T1VTCVBUSFJFQURfQ0FOQ0VMX0FTWU5DSFJPTk9VUwp9OwojZGVmaW5lIFBUSFJFQURfQ0FOQ0VM
RUQgKCh2b2lkICopIC0xKQoKCiAKCiAKCgpleHRlcm4gaW50IHB0aHJlYWRfY3JlYXRlICAocHRo
cmVhZF90ICpfX3RocmVhZCwKCQkJCV9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJ
CXZvaWQgKigqX19zdGFydF9yb3V0aW5lKSAodm9pZCAqKSwKCQkJCXZvaWQgKl9fYXJnKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIHB0aHJlYWRfdCBwdGhyZWFkX3NlbGYgICh2b2lkKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2VxdWFsICAocHRocmVhZF90IF9fdGhyZWFkMSwg
cHRocmVhZF90IF9fdGhyZWFkMikgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lkIHB0aHJlYWRf
ZXhpdCAgKHZvaWQgKl9fcmV0dmFsKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Jl
dHVybl9fKSk7CgogCgoKZXh0ZXJuIGludCBwdGhyZWFkX2pvaW4gIChwdGhyZWFkX3QgX190aCwg
dm9pZCAqKl9fdGhyZWFkX3JldHVybikgIHRocm93ICgpICA7CgogCgoKCmV4dGVybiBpbnQgcHRo
cmVhZF9kZXRhY2ggIChwdGhyZWFkX3QgX190aCkgIHRocm93ICgpICA7CgoKIAoKIAoKCmV4dGVy
biBpbnQgcHRocmVhZF9hdHRyX2luaXQgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZGVzdHJveSAgKHB0aHJlYWRfYXR0cl90
ICpfX2F0dHIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRkZXRh
Y2hzdGF0ZSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJICAgICBpbnQgX19kZXRhY2hz
dGF0ZSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldGRldGFjaHN0
YXRlICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJCSAgICAgaW50ICpfX2Rl
dGFjaHN0YXRlKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2No
ZWRwYXJhbSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkgICAgICAgIF9fY29uc3Qgc3Ry
dWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhy
ZWFkX2F0dHJfZ2V0c2NoZWRwYXJhbSAgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwK
CQkJCQkgICAgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhyb3cgKCkgIDsKCiAKZXh0
ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2NoZWRwb2xpY3kgIChwdGhyZWFkX2F0dHJfdCAqX19h
dHRyLAoJCQkJCSAgICAgaW50IF9fcG9saWN5KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBw
dGhyZWFkX2F0dHJfZ2V0c2NoZWRwb2xpY3kgIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0
dHIsCgkJCQkJICAgICBpbnQgKl9fcG9saWN5KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBw
dGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJ
CQkgICAgICBpbnQgX19pbmhlcml0KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfZ2V0aW5oZXJpdHNjaGVkICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJ
CQkJCSAgICAgIGludCAqX19pbmhlcml0KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhy
ZWFkX2F0dHJfc2V0c2NvcGUgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLCBpbnQgX19zY29wZSkg
IHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHNjb3BlICAoX19jb25z
dCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJICAgICAgIGludCAqX19zY29wZSkgIHRocm93
ICgpICA7CgojIDIyNCAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwoKCiAKCgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX2F0dHJfc2V0c3RhY2thZGRyICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJ
CQkgICB2b2lkICpfX3N0YWNrYWRkcikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVh
ZF9hdHRyX2dldHN0YWNrYWRkciAgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJ
CQkgICB2b2lkICoqX19zdGFja2FkZHIpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgcHRo
cmVhZF9hdHRyX3NldHN0YWNrc2l6ZSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJICAg
c2l6ZV90IF9fc3RhY2tzaXplKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0
dHJfZ2V0c3RhY2tzaXplICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJCSAg
IHNpemVfdCAqX19zdGFja3NpemUpICB0aHJvdyAoKSAgOwoKIAoKIAoKZXh0ZXJuIGludCBwdGhy
ZWFkX3NldHNjaGVkcGFyYW0gIChwdGhyZWFkX3QgX190YXJnZXRfdGhyZWFkLCBpbnQgX19wb2xp
Y3ksCgkJCQkgICAgICAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSAgKHB0aHJlYWRfdCBf
X3RhcmdldF90aHJlYWQsCgkJCQkgICAgICAgaW50ICpfX3BvbGljeSwKCQkJCSAgICAgICBzdHJ1
Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJvdyAoKSAgOwoKCgoKCgoKCgogCgogCgpleHRl
cm4gaW50IF9fcHRocmVhZF9tdXRleF9pbml0ICAocHRocmVhZF9tdXRleF90ICpfX211dGV4LAoJ
CQkJICAgX19jb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICpfX211dGV4X2F0dHIpICB0aHJvdyAo
KSAgOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfaW5pdCAgKHB0aHJlYWRfbXV0ZXhfdCAqX19t
dXRleCwKCQkJCSAgIF9fY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqX19tdXRleF9hdHRyKSAg
dGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhfZGVzdHJveSAgKHB0aHJl
YWRfbXV0ZXhfdCAqX19tdXRleCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRl
eF9kZXN0cm95ICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKCiAKZXh0
ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhfdHJ5bG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRl
eCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF90cnlsb2NrICAocHRocmVh
ZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3B0aHJlYWRf
bXV0ZXhfbG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgIHRocm93ICgpICA7CmV4dGVy
biBpbnQgcHRocmVhZF9tdXRleF9sb2NrICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhfdW5sb2NrICAocHRocmVhZF9t
dXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X3Vu
bG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgIHRocm93ICgpICA7CgoKIAoKIAoKZXh0
ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhhdHRyX2luaXQgIChwdGhyZWFkX211dGV4YXR0cl90ICpf
X2F0dHIpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQgIChw
dGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9f
cHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSAgKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0cikg
IHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSAgKHB0aHJl
YWRfbXV0ZXhhdHRyX3QgKl9fYXR0cikgIHRocm93ICgpICA7CgojIDMxNiAiL3Vzci9pbmNsdWRl
L3B0aHJlYWQuaCIgMwoKCgogCgogCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF9pbml0ICAocHRo
cmVhZF9jb25kX3QgKl9fY29uZCwKCQkJCSAgIF9fY29uc3QgcHRocmVhZF9jb25kYXR0cl90ICpf
X2NvbmRfYXR0cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Rlc3Ry
b3kgIChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBw
dGhyZWFkX2NvbmRfc2lnbmFsICAocHRocmVhZF9jb25kX3QgKl9fY29uZCkgIHRocm93ICgpICA7
CgogCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCAgKHB0aHJlYWRfY29uZF90ICpf
X2NvbmQpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfd2FpdCAgKHB0
aHJlYWRfY29uZF90ICpfX2NvbmQsCgkJCQkgICBwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpICB0
aHJvdyAoKSAgOwoKIAoKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF90aW1lZHdhaXQgIChwdGhy
ZWFkX2NvbmRfdCAqX19jb25kLAoJCQkJCXB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCwKCQkJCQlf
X2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19hYnN0aW1lKSAgdGhyb3cgKCkgIDsKCiAKCiAKZXh0
ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2luaXQgIChwdGhyZWFkX2NvbmRhdHRyX3QgKl9fYXR0
cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9kZXN0cm95ICAo
cHRocmVhZF9jb25kYXR0cl90ICpfX2F0dHIpICB0aHJvdyAoKSAgOwoKCiMgNDA5ICIvdXNyL2lu
Y2x1ZGUvcHRocmVhZC5oIiAzCgoKCiAKCiAKCgoKCgpleHRlcm4gaW50IF9fcHRocmVhZF9rZXlf
Y3JlYXRlICAocHRocmVhZF9rZXlfdCAqX19rZXksCgkJCQkgICAgICB2b2lkICgqX19kZXN0cl9m
dW5jdGlvbikgKHZvaWQgKikpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHB0aHJlYWRfa2V5X2Ny
ZWF0ZSAgKHB0aHJlYWRfa2V5X3QgKl9fa2V5LAoJCQkJICAgIHZvaWQgKCpfX2Rlc3RyX2Z1bmN0
aW9uKSAodm9pZCAqKSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9rZXlfZGVs
ZXRlICAocHRocmVhZF9rZXlfdCBfX2tleSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19w
dGhyZWFkX3NldHNwZWNpZmljICAocHRocmVhZF9rZXlfdCBfX2tleSwKCQkJCSAgICAgICBfX2Nv
bnN0IHZvaWQgKl9fcG9pbnRlcikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9zZXRz
cGVjaWZpYyAgKHB0aHJlYWRfa2V5X3QgX19rZXksCgkJCQkgICAgIF9fY29uc3Qgdm9pZCAqX19w
b2ludGVyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgKl9fcHRocmVhZF9nZXRzcGVjaWZp
YyAgKHB0aHJlYWRfa2V5X3QgX19rZXkpICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCAqcHRocmVh
ZF9nZXRzcGVjaWZpYyAgKHB0aHJlYWRfa2V5X3QgX19rZXkpICB0aHJvdyAoKSAgOwoKCiAKCiAK
CgoKZXh0ZXJuIGludCBfX3B0aHJlYWRfb25jZSAgKHB0aHJlYWRfb25jZV90ICpfX29uY2VfY29u
dHJvbCwKCQkJCXZvaWQgKCpfX2luaXRfcm91dGluZSkgKHZvaWQpKSAgdGhyb3cgKCkgIDsKZXh0
ZXJuIGludCBwdGhyZWFkX29uY2UgIChwdGhyZWFkX29uY2VfdCAqX19vbmNlX2NvbnRyb2wsCgkJ
CSAgICAgIHZvaWQgKCpfX2luaXRfcm91dGluZSkgKHZvaWQpKSAgdGhyb3cgKCkgIDsKCgogCgog
CgpleHRlcm4gaW50IHB0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUgIChpbnQgX19zdGF0ZSwgaW50ICpf
X29sZHN0YXRlKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBpbnQgcHRocmVhZF9zZXRjYW5jZWx0
eXBlICAoaW50IF9fdHlwZSwgaW50ICpfX29sZHR5cGUpICB0aHJvdyAoKSAgOwoKIApleHRlcm4g
aW50IHB0aHJlYWRfY2FuY2VsICAocHRocmVhZF90IF9fdGhyZWFkKSAgdGhyb3cgKCkgIDsKCiAK
CgpleHRlcm4gdm9pZCBwdGhyZWFkX3Rlc3RjYW5jZWwgICh2b2lkKSAgdGhyb3cgKCkgIDsKCgog
CgoKCgoKCiNkZWZpbmUgcHRocmVhZF9jbGVhbnVwX3B1c2gocm91dGluZSxhcmcpCXsgc3RydWN0
IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyIF9idWZmZXI7CV9wdGhyZWFkX2NsZWFudXBfcHVzaCAo
Jl9idWZmZXIsIChyb3V0aW5lKSwgKGFyZykpOwoKCgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVh
bnVwX3B1c2ggIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fYnVmZmVyLAoJCQkJ
CXZvaWQgKCpfX3JvdXRpbmUpICh2b2lkICopLAoJCQkJCXZvaWQgKl9fYXJnKSAgdGhyb3cgKCkg
IDsKCiAKCgojZGVmaW5lIHB0aHJlYWRfY2xlYW51cF9wb3AoZXhlY3V0ZSkJX3B0aHJlYWRfY2xl
YW51cF9wb3AgKCZfYnVmZmVyLCAoZXhlY3V0ZSkpOyB9CgoKZXh0ZXJuIHZvaWQgX3B0aHJlYWRf
Y2xlYW51cF9wb3AgIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fYnVmZmVyLAoJ
CQkJICAgICAgIGludCBfX2V4ZWN1dGUpICB0aHJvdyAoKSAgOwoKIAoKCiMgNTE1ICIvdXNyL2lu
Y2x1ZGUvcHRocmVhZC5oIiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3RocmVhZC5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBfQklUU19TSUdUSFJFQURfSAkxCgoK
CgoKIAoKIAoKZXh0ZXJuIGludCBwdGhyZWFkX3NpZ21hc2sgIChpbnQgX19ob3csIF9fY29uc3Qg
X19zaWdzZXRfdCAqX19uZXdtYXNrLAoJCQkJIF9fc2lnc2V0X3QgKl9fb2xkbWFzaykgIHRocm93
ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9raWxsICAocHRocmVhZF90IF9fdGhyZWFkLCBp
bnQgX19zaWdubykgIHRocm93ICgpICA7CgoKIyA1MTggIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgi
IDIgMwoKCgogCgogCgoKCgoKCgoKCgpleHRlcm4gaW50IF9fcHRocmVhZF9hdGZvcmsgICh2b2lk
ICgqX19wcmVwYXJlKSAodm9pZCksCgkJCQkgIHZvaWQgKCpfX3BhcmVudCkgKHZvaWQpLAoJCQkJ
ICB2b2lkICgqX19jaGlsZCkgKHZvaWQpKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFk
X2F0Zm9yayAgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKCQkJCXZvaWQgKCpfX3BhcmVudCkg
KHZvaWQpLAoJCQkJdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgIHRocm93ICgpICA7CgogCgoKZXh0
ZXJuIHZvaWQgcHRocmVhZF9raWxsX290aGVyX3RocmVhZHNfbnAgICh2b2lkKSAgdGhyb3cgKCkg
IDsKCgogCmV4dGVybiB2b2lkIF9fcHRocmVhZF9pbml0aWFsaXplICAodm9pZCkgIHRocm93ICgp
ICA7Cgp9IAoKCiMgNzEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUv
ZysrLTMvc3RsX2FsbG9jLmgiIDIgMwoKI2RlZmluZSBfX05PREVfQUxMT0NBVE9SX0xPQ0sgaWYg
KHRocmVhZHMpIHB0aHJlYWRfbXV0ZXhfbG9jaygmX1Nfbm9kZV9hbGxvY2F0b3JfbG9jaykKCiNk
ZWZpbmUgX19OT0RFX0FMTE9DQVRPUl9VTkxPQ0sgaWYgKHRocmVhZHMpIHB0aHJlYWRfbXV0ZXhf
dW5sb2NrKCZfU19ub2RlX2FsbG9jYXRvcl9sb2NrKQoKI2RlZmluZSBfX05PREVfQUxMT0NBVE9S
X1RIUkVBRFMgdHJ1ZQojZGVmaW5lIF9fVk9MQVRJTEUgdm9sYXRpbGUgIAoKIyA4NyAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIgMwoK
IyA5NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxf
YWxsb2MuaCIgMwoKIyAxMTUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1
LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvc3RsX2FsbG9jLmgiIDMKCgoKCgoKCgoKIAoKCgoKCiAKIAoKCgoKCgoKCgp0ZW1w
bGF0ZSA8aW50IF9faW5zdD4KY2xhc3MgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGUgewoKcHJpdmF0
ZToKCiAgc3RhdGljIHZvaWQqIF9TX29vbV9tYWxsb2Moc2l6ZV90KTsKICBzdGF0aWMgdm9pZCog
X1Nfb29tX3JlYWxsb2Modm9pZCosIHNpemVfdCk7CgoKICBzdGF0aWMgdm9pZCAoKiBfX21hbGxv
Y19hbGxvY19vb21faGFuZGxlcikoKTsKCgpwdWJsaWM6CgogIHN0YXRpYyB2b2lkKiBhbGxvY2F0
ZShzaXplX3QgX19uKQogIHsKICAgIHZvaWQqIF9fcmVzdWx0ID0gbWFsbG9jKF9fbik7CiAgICBp
ZiAoMCA9PSBfX3Jlc3VsdCkgX19yZXN1bHQgPSBfU19vb21fbWFsbG9jKF9fbik7CiAgICByZXR1
cm4gX19yZXN1bHQ7CiAgfQoKICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlKHZvaWQqIF9fcCwgc2l6
ZV90ICApCiAgewogICAgZnJlZShfX3ApOwogIH0KCiAgc3RhdGljIHZvaWQqIHJlYWxsb2NhdGUo
dm9pZCogX19wLCBzaXplX3QgICwgc2l6ZV90IF9fbmV3X3N6KQogIHsKICAgIHZvaWQqIF9fcmVz
dWx0ID0gcmVhbGxvYyhfX3AsIF9fbmV3X3N6KTsKICAgIGlmICgwID09IF9fcmVzdWx0KSBfX3Jl
c3VsdCA9IF9TX29vbV9yZWFsbG9jKF9fcCwgX19uZXdfc3opOwogICAgcmV0dXJuIF9fcmVzdWx0
OwogIH0KCiAgc3RhdGljIHZvaWQgKCogX19zZXRfbWFsbG9jX2hhbmRsZXIodm9pZCAoKl9fZiko
KSkpKCkKICB7CiAgICB2b2lkICgqIF9fb2xkKSgpID0gX19tYWxsb2NfYWxsb2Nfb29tX2hhbmRs
ZXI7CiAgICBfX21hbGxvY19hbGxvY19vb21faGFuZGxlciA9IF9fZjsKICAgIHJldHVybihfX29s
ZCk7CiAgfQoKfTsKCiAKCgp0ZW1wbGF0ZSA8aW50IF9faW5zdD4Kdm9pZCAoKiBfX21hbGxvY19h
bGxvY190ZW1wbGF0ZTxfX2luc3Q+OjpfX21hbGxvY19hbGxvY19vb21faGFuZGxlcikoKSA9IDA7
CgoKdGVtcGxhdGUgPGludCBfX2luc3Q+CnZvaWQqCl9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPF9f
aW5zdD46Ol9TX29vbV9tYWxsb2Moc2l6ZV90IF9fbikKewogICAgdm9pZCAoKiBfX215X21hbGxv
Y19oYW5kbGVyKSgpOwogICAgdm9pZCogX19yZXN1bHQ7CgogICAgZm9yICg7OykgewogICAgICAg
IF9fbXlfbWFsbG9jX2hhbmRsZXIgPSBfX21hbGxvY19hbGxvY19vb21faGFuZGxlcjsKICAgICAg
ICBpZiAoMCA9PSBfX215X21hbGxvY19oYW5kbGVyKSB7IGNlcnIgPDwgIm91dCBvZiBtZW1vcnki
IDw8IGVuZGw7IGV4aXQoMSkgOyB9CiAgICAgICAgKCpfX215X21hbGxvY19oYW5kbGVyKSgpOwog
ICAgICAgIF9fcmVzdWx0ID0gbWFsbG9jKF9fbik7CiAgICAgICAgaWYgKF9fcmVzdWx0KSByZXR1
cm4oX19yZXN1bHQpOwogICAgfQp9Cgp0ZW1wbGF0ZSA8aW50IF9faW5zdD4Kdm9pZCogX19tYWxs
b2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0Pjo6X1Nfb29tX3JlYWxsb2Modm9pZCogX19wLCBzaXpl
X3QgX19uKQp7CiAgICB2b2lkICgqIF9fbXlfbWFsbG9jX2hhbmRsZXIpKCk7CiAgICB2b2lkKiBf
X3Jlc3VsdDsKCiAgICBmb3IgKDs7KSB7CiAgICAgICAgX19teV9tYWxsb2NfaGFuZGxlciA9IF9f
bWFsbG9jX2FsbG9jX29vbV9oYW5kbGVyOwogICAgICAgIGlmICgwID09IF9fbXlfbWFsbG9jX2hh
bmRsZXIpIHsgY2VyciA8PCAib3V0IG9mIG1lbW9yeSIgPDwgZW5kbDsgZXhpdCgxKSA7IH0KICAg
ICAgICAoKl9fbXlfbWFsbG9jX2hhbmRsZXIpKCk7CiAgICAgICAgX19yZXN1bHQgPSByZWFsbG9j
KF9fcCwgX19uKTsKICAgICAgICBpZiAoX19yZXN1bHQpIHJldHVybihfX3Jlc3VsdCk7CiAgICB9
Cn0KCnR5cGVkZWYgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8MD4gbWFsbG9jX2FsbG9jOwoKdGVt
cGxhdGU8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CmNsYXNzIHNpbXBsZV9hbGxvYyB7CgpwdWJs
aWM6CiAgICBzdGF0aWMgX1RwKiBhbGxvY2F0ZShzaXplX3QgX19uKQogICAgICB7IHJldHVybiAw
ID09IF9fbiA/IDAgOiAoX1RwKikgX0FsbG9jOjphbGxvY2F0ZShfX24gKiBzaXplb2YgKF9UcCkp
OyB9CiAgICBzdGF0aWMgX1RwKiBhbGxvY2F0ZSh2b2lkKQogICAgICB7IHJldHVybiAoX1RwKikg
X0FsbG9jOjphbGxvY2F0ZShzaXplb2YgKF9UcCkpOyB9CiAgICBzdGF0aWMgdm9pZCBkZWFsbG9j
YXRlKF9UcCogX19wLCBzaXplX3QgX19uKQogICAgICB7IGlmICgwICE9IF9fbikgX0FsbG9jOjpk
ZWFsbG9jYXRlKF9fcCwgX19uICogc2l6ZW9mIChfVHApKTsgfQogICAgc3RhdGljIHZvaWQgZGVh
bGxvY2F0ZShfVHAqIF9fcCkKICAgICAgeyBfQWxsb2M6OmRlYWxsb2NhdGUoX19wLCBzaXplb2Yg
KF9UcCkpOyB9Cn07CgogCiAKIAogCiAKdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4KY2xhc3MgZGVi
dWdfYWxsb2MgewoKcHJpdmF0ZToKCiAgZW51bSB7X1NfZXh0cmEgPSA4fTsgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgCgpwdWJsaWM6CgogIHN0
YXRpYyB2b2lkKiBhbGxvY2F0ZShzaXplX3QgX19uKQogIHsKICAgIGNoYXIqIF9fcmVzdWx0ID0g
KGNoYXIqKV9BbGxvYzo6YWxsb2NhdGUoX19uICsgX1NfZXh0cmEpOwogICAgKihzaXplX3QqKV9f
cmVzdWx0ID0gX19uOwogICAgcmV0dXJuIF9fcmVzdWx0ICsgX1NfZXh0cmE7CiAgfQoKICBzdGF0
aWMgdm9pZCBkZWFsbG9jYXRlKHZvaWQqIF9fcCwgc2l6ZV90IF9fbikKICB7CiAgICBjaGFyKiBf
X3JlYWxfcCA9IChjaGFyKilfX3AgLSBfU19leHRyYTsKICAgICgodm9pZCkgKCggKihzaXplX3Qq
KV9fcmVhbF9wID09IF9fbiApID8gMCA6CShfX2Fzc2VydF9mYWlsICgiKihzaXplX3QqKV9fcmVh
bF9wID09IF9fbiIgLAkiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9zdGxfYWxsb2MuaCIsIDI2MywgX19QUkVUVFlfRlVOQ1RJT05fXyApLCAwKSkpIDsKICAg
IF9BbGxvYzo6ZGVhbGxvY2F0ZShfX3JlYWxfcCwgX19uICsgX1NfZXh0cmEpOwogIH0KCiAgc3Rh
dGljIHZvaWQqIHJlYWxsb2NhdGUodm9pZCogX19wLCBzaXplX3QgX19vbGRfc3osIHNpemVfdCBf
X25ld19zeikKICB7CiAgICBjaGFyKiBfX3JlYWxfcCA9IChjaGFyKilfX3AgLSBfU19leHRyYTsK
ICAgICgodm9pZCkgKCggKihzaXplX3QqKV9fcmVhbF9wID09IF9fb2xkX3N6ICkgPyAwIDoJKF9f
YXNzZXJ0X2ZhaWwgKCIqKHNpemVfdCopX19yZWFsX3AgPT0gX19vbGRfc3oiICwJIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsbG9jLmgiLCAyNzAs
IF9fUFJFVFRZX0ZVTkNUSU9OX18gKSwgMCkpKSA7CiAgICBjaGFyKiBfX3Jlc3VsdCA9IChjaGFy
KikKICAgICAgX0FsbG9jOjpyZWFsbG9jYXRlKF9fcmVhbF9wLCBfX29sZF9zeiArIF9TX2V4dHJh
LCBfX25ld19zeiArIF9TX2V4dHJhKTsKICAgICooc2l6ZV90KilfX3Jlc3VsdCA9IF9fbmV3X3N6
OwogICAgcmV0dXJuIF9fcmVzdWx0ICsgX1NfZXh0cmE7CiAgfQoKfTsKCgoKCgoKCgoKCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAogCiAKIAogCiAKIAogCiAKCgoKCgoKCnRlbXBsYXRl
IDxib29sIHRocmVhZHMsIGludCBpbnN0PgpjbGFzcyBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGUg
ewoKcHJpdmF0ZToKICAgCiAgIAoKICAgIGVudW0ge19BTElHTiA9IDh9OwogICAgZW51bSB7X01B
WF9CWVRFUyA9IDEyOH07CiAgICBlbnVtIHtfTkZSRUVMSVNUUyA9IF9NQVhfQllURVMvX0FMSUdO
fTsKCiAgc3RhdGljIHNpemVfdAogIF9TX3JvdW5kX3VwKHNpemVfdCBfX2J5dGVzKQogICAgeyBy
ZXR1cm4gKCgoX19ieXRlcykgKyBfQUxJR04tMSkgJiB+KF9BTElHTiAtIDEpKTsgfQoKcHJpdmF0
ZSA6CiAgdW5pb24gX09iaiB7CiAgICAgICAgdW5pb24gX09iaiogX01fZnJlZV9saXN0X2xpbms7
CiAgICAgICAgY2hhciBfTV9jbGllbnRfZGF0YVsxXTsgICAgIAogIH07CnByaXZhdGU6CgoKCgog
ICAgc3RhdGljIF9PYmoqIHZvbGF0aWxlICBfU19mcmVlX2xpc3RbX05GUkVFTElTVFNdOwoKICBz
dGF0aWMgIHNpemVfdCBfU19mcmVlbGlzdF9pbmRleChzaXplX3QgX19ieXRlcykgewogICAgICAg
IHJldHVybiAoKChfX2J5dGVzKSArIF9BTElHTi0xKS9fQUxJR04gLSAxKTsKICB9CgogICAKICBz
dGF0aWMgdm9pZCogX1NfcmVmaWxsKHNpemVfdCBfX24pOwogICAKICAgCiAgc3RhdGljIGNoYXIq
IF9TX2NodW5rX2FsbG9jKHNpemVfdCBfX3NpemUsIGludCYgX19ub2Jqcyk7CgogICAKICBzdGF0
aWMgY2hhciogX1Nfc3RhcnRfZnJlZTsKICBzdGF0aWMgY2hhciogX1NfZW5kX2ZyZWU7CiAgc3Rh
dGljIHNpemVfdCBfU19oZWFwX3NpemU7CgoKCgoKCgoKICAgIHN0YXRpYyBwdGhyZWFkX211dGV4
X3QgX1Nfbm9kZV9hbGxvY2F0b3JfbG9jazsKCgoKCgoKIyAzODkgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45
NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsbG9jLmgiIDMKCgogICAgY2xhc3Mg
X0xvY2sgewogICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgX0xvY2soKSB7IGlmICh0aHJlYWRz
KSBwdGhyZWFkX211dGV4X2xvY2soJl9TX25vZGVfYWxsb2NhdG9yX2xvY2spIDsgfQogICAgICAg
ICAgICB+X0xvY2soKSB7IGlmICh0aHJlYWRzKSBwdGhyZWFkX211dGV4X3VubG9jaygmX1Nfbm9k
ZV9hbGxvY2F0b3JfbG9jaykgOyB9CiAgICB9OwogICAgZnJpZW5kIGNsYXNzIF9Mb2NrOwoKcHVi
bGljOgoKICAgCiAgc3RhdGljIHZvaWQqIGFsbG9jYXRlKHNpemVfdCBfX24pCiAgewogICAgX09i
aiogdm9sYXRpbGUgKiBfX215X2ZyZWVfbGlzdDsKICAgIF9PYmoqICAgX19yZXN1bHQ7CgogICAg
aWYgKF9fbiA+IChzaXplX3QpIF9NQVhfQllURVMpIHsKICAgICAgICByZXR1cm4obWFsbG9jX2Fs
bG9jOjphbGxvY2F0ZShfX24pKTsKICAgIH0KICAgIF9fbXlfZnJlZV9saXN0ID0gX1NfZnJlZV9s
aXN0ICsgX1NfZnJlZWxpc3RfaW5kZXgoX19uKTsKICAgICAKICAgICAKICAgICAKCiAgICAgICAg
IAogICAgICAgIF9Mb2NrIF9fbG9ja19pbnN0YW5jZTsKCiAgICBfX3Jlc3VsdCA9ICpfX215X2Zy
ZWVfbGlzdDsKICAgIGlmIChfX3Jlc3VsdCA9PSAwKSB7CiAgICAgICAgdm9pZCogX19yID0gX1Nf
cmVmaWxsKF9TX3JvdW5kX3VwKF9fbikpOwogICAgICAgIHJldHVybiBfX3I7CiAgICB9CiAgICAq
X19teV9mcmVlX2xpc3QgPSBfX3Jlc3VsdCAtPiBfTV9mcmVlX2xpc3RfbGluazsKICAgIHJldHVy
biAoX19yZXN1bHQpOwogIH07CgogICAKICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlKHZvaWQqIF9f
cCwgc2l6ZV90IF9fbikKICB7CiAgICBfT2JqKiBfX3EgPSAoX09iaiopX19wOwogICAgX09iaiog
dm9sYXRpbGUgKiBfX215X2ZyZWVfbGlzdDsKCiAgICBpZiAoX19uID4gKHNpemVfdCkgX01BWF9C
WVRFUykgewogICAgICAgIG1hbGxvY19hbGxvYzo6ZGVhbGxvY2F0ZShfX3AsIF9fbik7CiAgICAg
ICAgcmV0dXJuOwogICAgfQogICAgX19teV9mcmVlX2xpc3QgPSBfU19mcmVlX2xpc3QgKyBfU19m
cmVlbGlzdF9pbmRleChfX24pOwogICAgIAoKICAgICAgICAgCiAgICAgICAgX0xvY2sgX19sb2Nr
X2luc3RhbmNlOwoKICAgIF9fcSAtPiBfTV9mcmVlX2xpc3RfbGluayA9ICpfX215X2ZyZWVfbGlz
dDsKICAgICpfX215X2ZyZWVfbGlzdCA9IF9fcTsKICAgICAKICB9CgogIHN0YXRpYyB2b2lkKiBy
ZWFsbG9jYXRlKHZvaWQqIF9fcCwgc2l6ZV90IF9fb2xkX3N6LCBzaXplX3QgX19uZXdfc3opOwoK
fSA7Cgp0eXBlZGVmIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTwgdHJ1ZSAsIDA+IGFsbG9jOwp0
eXBlZGVmIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxmYWxzZSwgMD4gc2luZ2xlX2NsaWVudF9h
bGxvYzsKCgoKIAogCiAKIAp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CmNo
YXIqCl9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD46Ol9TX2NodW5r
X2FsbG9jKHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgX19ub2JqcykKewogICAgY2hhciogX19yZXN1
bHQ7CiAgICBzaXplX3QgX190b3RhbF9ieXRlcyA9IF9fc2l6ZSAqIF9fbm9ianM7CiAgICBzaXpl
X3QgX19ieXRlc19sZWZ0ID0gX1NfZW5kX2ZyZWUgLSBfU19zdGFydF9mcmVlOwoKICAgIGlmIChf
X2J5dGVzX2xlZnQgPj0gX190b3RhbF9ieXRlcykgewogICAgICAgIF9fcmVzdWx0ID0gX1Nfc3Rh
cnRfZnJlZTsKICAgICAgICBfU19zdGFydF9mcmVlICs9IF9fdG90YWxfYnl0ZXM7CiAgICAgICAg
cmV0dXJuKF9fcmVzdWx0KTsKICAgIH0gZWxzZSBpZiAoX19ieXRlc19sZWZ0ID49IF9fc2l6ZSkg
ewogICAgICAgIF9fbm9ianMgPSAoaW50KShfX2J5dGVzX2xlZnQvX19zaXplKTsKICAgICAgICBf
X3RvdGFsX2J5dGVzID0gX19zaXplICogX19ub2JqczsKICAgICAgICBfX3Jlc3VsdCA9IF9TX3N0
YXJ0X2ZyZWU7CiAgICAgICAgX1Nfc3RhcnRfZnJlZSArPSBfX3RvdGFsX2J5dGVzOwogICAgICAg
IHJldHVybihfX3Jlc3VsdCk7CiAgICB9IGVsc2UgewogICAgICAgIHNpemVfdCBfX2J5dGVzX3Rv
X2dldCA9CgkgIDIgKiBfX3RvdGFsX2J5dGVzICsgX1Nfcm91bmRfdXAoX1NfaGVhcF9zaXplID4+
IDQpOwogICAgICAgICAKICAgICAgICBpZiAoX19ieXRlc19sZWZ0ID4gMCkgewogICAgICAgICAg
ICBfT2JqKiB2b2xhdGlsZSAqIF9fbXlfZnJlZV9saXN0ID0KICAgICAgICAgICAgICAgICAgICAg
ICAgX1NfZnJlZV9saXN0ICsgX1NfZnJlZWxpc3RfaW5kZXgoX19ieXRlc19sZWZ0KTsKCiAgICAg
ICAgICAgICgoX09iaiopX1Nfc3RhcnRfZnJlZSkgLT4gX01fZnJlZV9saXN0X2xpbmsgPSAqX19t
eV9mcmVlX2xpc3Q7CiAgICAgICAgICAgICpfX215X2ZyZWVfbGlzdCA9IChfT2JqKilfU19zdGFy
dF9mcmVlOwogICAgICAgIH0KICAgICAgICBfU19zdGFydF9mcmVlID0gKGNoYXIqKW1hbGxvYyhf
X2J5dGVzX3RvX2dldCk7CiAgICAgICAgaWYgKDAgPT0gX1Nfc3RhcnRfZnJlZSkgewogICAgICAg
ICAgICBzaXplX3QgX19pOwogICAgICAgICAgICBfT2JqKiB2b2xhdGlsZSAqIF9fbXlfZnJlZV9s
aXN0OwoJICAgIF9PYmoqIF9fcDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAKICAgICAgICAgICAgZm9yIChfX2kgPSBfX3NpemU7IF9faSA8PSBfTUFYX0JZVEVTOyBf
X2kgKz0gX0FMSUdOKSB7CiAgICAgICAgICAgICAgICBfX215X2ZyZWVfbGlzdCA9IF9TX2ZyZWVf
bGlzdCArIF9TX2ZyZWVsaXN0X2luZGV4KF9faSk7CiAgICAgICAgICAgICAgICBfX3AgPSAqX19t
eV9mcmVlX2xpc3Q7CiAgICAgICAgICAgICAgICBpZiAoMCAhPSBfX3ApIHsKICAgICAgICAgICAg
ICAgICAgICAqX19teV9mcmVlX2xpc3QgPSBfX3AgLT4gX01fZnJlZV9saXN0X2xpbms7CiAgICAg
ICAgICAgICAgICAgICAgX1Nfc3RhcnRfZnJlZSA9IChjaGFyKilfX3A7CiAgICAgICAgICAgICAg
ICAgICAgX1NfZW5kX2ZyZWUgPSBfU19zdGFydF9mcmVlICsgX19pOwogICAgICAgICAgICAgICAg
ICAgIHJldHVybihfU19jaHVua19hbGxvYyhfX3NpemUsIF9fbm9ianMpKTsKICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CgkgICAgX1NfZW5kX2ZyZWUgPSAwOwkgCiAgICAgICAgICAgIF9TX3N0YXJ0X2ZyZWUg
PSAoY2hhciopbWFsbG9jX2FsbG9jOjphbGxvY2F0ZShfX2J5dGVzX3RvX2dldCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIF9TX2hl
YXBfc2l6ZSArPSBfX2J5dGVzX3RvX2dldDsKICAgICAgICBfU19lbmRfZnJlZSA9IF9TX3N0YXJ0
X2ZyZWUgKyBfX2J5dGVzX3RvX2dldDsKICAgICAgICByZXR1cm4oX1NfY2h1bmtfYWxsb2MoX19z
aXplLCBfX25vYmpzKSk7CiAgICB9Cn0KCgogCiAKIAp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMs
IGludCBfX2luc3Q+CnZvaWQqCl9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9f
aW5zdD46Ol9TX3JlZmlsbChzaXplX3QgX19uKQp7CiAgICBpbnQgX19ub2JqcyA9IDIwOwogICAg
Y2hhciogX19jaHVuayA9IF9TX2NodW5rX2FsbG9jKF9fbiwgX19ub2Jqcyk7CiAgICBfT2JqKiB2
b2xhdGlsZSAqIF9fbXlfZnJlZV9saXN0OwogICAgX09iaiogX19yZXN1bHQ7CiAgICBfT2JqKiBf
X2N1cnJlbnRfb2JqOwogICAgX09iaiogX19uZXh0X29iajsKICAgIGludCBfX2k7CgogICAgaWYg
KDEgPT0gX19ub2JqcykgcmV0dXJuKF9fY2h1bmspOwogICAgX19teV9mcmVlX2xpc3QgPSBfU19m
cmVlX2xpc3QgKyBfU19mcmVlbGlzdF9pbmRleChfX24pOwoKICAgICAKICAgICAgX19yZXN1bHQg
PSAoX09iaiopX19jaHVuazsKICAgICAgKl9fbXlfZnJlZV9saXN0ID0gX19uZXh0X29iaiA9IChf
T2JqKikoX19jaHVuayArIF9fbik7CiAgICAgIGZvciAoX19pID0gMTsgOyBfX2krKykgewogICAg
ICAgIF9fY3VycmVudF9vYmogPSBfX25leHRfb2JqOwogICAgICAgIF9fbmV4dF9vYmogPSAoX09i
aiopKChjaGFyKilfX25leHRfb2JqICsgX19uKTsKICAgICAgICBpZiAoX19ub2JqcyAtIDEgPT0g
X19pKSB7CiAgICAgICAgICAgIF9fY3VycmVudF9vYmogLT4gX01fZnJlZV9saXN0X2xpbmsgPSAw
OwogICAgICAgICAgICBicmVhazsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBfX2N1cnJl
bnRfb2JqIC0+IF9NX2ZyZWVfbGlzdF9saW5rID0gX19uZXh0X29iajsKICAgICAgICB9CiAgICAg
IH0KICAgIHJldHVybihfX3Jlc3VsdCk7Cn0KCnRlbXBsYXRlIDxib29sIHRocmVhZHMsIGludCBp
bnN0Pgp2b2lkKgpfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8dGhyZWFkcywgaW5zdD46OnJlYWxs
b2NhdGUodm9pZCogX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fb2xkX3N6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbmV3X3N6KQp7CiAgICB2b2lkKiBfX3Jl
c3VsdDsKICAgIHNpemVfdCBfX2NvcHlfc3o7CgogICAgaWYgKF9fb2xkX3N6ID4gKHNpemVfdCkg
X01BWF9CWVRFUyAmJiBfX25ld19zeiA+IChzaXplX3QpIF9NQVhfQllURVMpIHsKICAgICAgICBy
ZXR1cm4ocmVhbGxvYyhfX3AsIF9fbmV3X3N6KSk7CiAgICB9CiAgICBpZiAoX1Nfcm91bmRfdXAo
X19vbGRfc3opID09IF9TX3JvdW5kX3VwKF9fbmV3X3N6KSkgcmV0dXJuKF9fcCk7CiAgICBfX3Jl
c3VsdCA9IGFsbG9jYXRlKF9fbmV3X3N6KTsKICAgIF9fY29weV9zeiA9IF9fbmV3X3N6ID4gX19v
bGRfc3o/IF9fb2xkX3N6IDogX19uZXdfc3o7CiAgICBtZW1jcHkoX19yZXN1bHQsIF9fcCwgX19j
b3B5X3N6KTsKICAgIGRlYWxsb2NhdGUoX19wLCBfX29sZF9zeik7CiAgICByZXR1cm4oX19yZXN1
bHQpOwp9CgoKICAgIHRlbXBsYXRlIDxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4KICAgIHB0
aHJlYWRfbXV0ZXhfdAogICAgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19p
bnN0Pjo6X1Nfbm9kZV9hbGxvY2F0b3JfbG9jawogICAgICAgID0gezAsIDAsIDAsIFBUSFJFQURf
TVVURVhfRkFTVF9OUCwgezAsIDB9fSA7CgoKCgoKCgoKCiMgNjAyICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAzCgoKIyA2ODkgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsbG9jLmgi
IDMKCgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CmNoYXIqIF9fZGVmYXVs
dF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD46Ol9TX3N0YXJ0X2ZyZWUgPSAwOwoK
dGVtcGxhdGUgPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0PgpjaGFyKiBfX2RlZmF1bHRfYWxs
b2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfU19lbmRfZnJlZSA9IDA7Cgp0ZW1wbGF0
ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CnNpemVfdCBfX2RlZmF1bHRfYWxsb2NfdGVt
cGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfU19oZWFwX3NpemUgPSAwOwoKdGVtcGxhdGUgPGJv
b2wgX190aHJlYWRzLCBpbnQgX19pbnN0PgpfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJl
YWRzLCBfX2luc3Q+OjpfT2JqKiB2b2xhdGlsZSAKX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9f
dGhyZWFkcywgX19pbnN0PiA6Ol9TX2ZyZWVfbGlzdFsKICAgIF9ORlJFRUxJU1RTCl0gPSB7MCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgfTsKIAogCiAKCgoK
CgoKCgoKCiAKIAogCiAKIAogCiAKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xhc3MgYWxsb2Nh
dG9yIHsKICB0eXBlZGVmIGFsbG9jIF9BbGxvYzsgICAgICAgICAgIApwdWJsaWM6CiAgdHlwZWRl
ZiBzaXplX3QgICAgIHNpemVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCAgZGlmZmVyZW5jZV90
eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgY29uc3QgX1RwKiBj
b25zdF9wb2ludGVyOwogIHR5cGVkZWYgX1RwJiAgICAgICByZWZlcmVuY2U7CiAgdHlwZWRlZiBj
b25zdCBfVHAmIGNvbnN0X3JlZmVyZW5jZTsKICB0eXBlZGVmIF9UcCAgICAgICAgdmFsdWVfdHlw
ZTsKCiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+IHN0cnVjdCByZWJpbmQgewogICAgdHlwZWRlZiBh
bGxvY2F0b3I8X1RwMT4gb3RoZXI7CiAgfTsKCiAgYWxsb2NhdG9yKCkgdGhyb3coKSAge30KICBh
bGxvY2F0b3IoY29uc3QgYWxsb2NhdG9yJikgdGhyb3coKSAge30KICB0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwMT4gYWxsb2NhdG9yKGNvbnN0IGFsbG9jYXRvcjxfVHAxPiYpIHRocm93KCkgIHt9CiAgfmFs
bG9jYXRvcigpIHRocm93KCkgIHt9CgogIHBvaW50ZXIgYWRkcmVzcyhyZWZlcmVuY2UgX194KSBj
b25zdCB7IHJldHVybiAmX194OyB9CiAgY29uc3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVy
ZW5jZSBfX3gpIGNvbnN0IHsgcmV0dXJuICZfX3g7IH0KCiAgIAogICAKICBfVHAqIGFsbG9jYXRl
KHNpemVfdHlwZSBfX24sIGNvbnN0IHZvaWQqID0gMCkgewogICAgcmV0dXJuIF9fbiAhPSAwID8g
c3RhdGljX2Nhc3Q8X1RwKj4oX0FsbG9jOjphbGxvY2F0ZShfX24gKiBzaXplb2YoX1RwKSkpCiAg
ICAgICAgICAgICAgICAgICAgOiAwOwogIH0KCiAgIAogIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVy
IF9fcCwgc2l6ZV90eXBlIF9fbikKICAgIHsgX0FsbG9jOjpkZWFsbG9jYXRlKF9fcCwgX19uICog
c2l6ZW9mKF9UcCkpOyB9CgogIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHRocm93KCkgCiAg
ICB7IHJldHVybiBzaXplX3QoLTEpIC8gc2l6ZW9mKF9UcCk7IH0KCiAgdm9pZCBjb25zdHJ1Y3Qo
cG9pbnRlciBfX3AsIGNvbnN0IF9UcCYgX192YWwpIHsgbmV3KF9fcCkgX1RwKF9fdmFsKTsgfQog
IHZvaWQgZGVzdHJveShwb2ludGVyIF9fcCkgeyBfX3AtPn5fVHAoKTsgfQp9OwoKdGVtcGxhdGU8
PgpjbGFzcyBhbGxvY2F0b3I8dm9pZD4gewogIHR5cGVkZWYgc2l6ZV90ICAgICAgc2l6ZV90eXBl
OwogIHR5cGVkZWYgcHRyZGlmZl90ICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdm9pZCog
ICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IHZvaWQqIGNvbnN0X3BvaW50ZXI7CiAgdHlw
ZWRlZiB2b2lkICAgICAgICB2YWx1ZV90eXBlOwoKICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwMT4gc3Ry
dWN0IHJlYmluZCB7CiAgICB0eXBlZGVmIGFsbG9jYXRvcjxfVHAxPiBvdGhlcjsKICB9Owp9OwoK
CnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBhbGxvY2F0b3I8X1QxPiYsIGNvbnN0IGFsbG9jYXRvcjxfVDI+JikKewogIHJldHVybiB0
cnVlOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgYWxsb2NhdG9yPF9UMT4mLCBjb25zdCBhbGxvY2F0b3I8X1QyPiYpCnsKICBy
ZXR1cm4gZmFsc2U7Cn0KCiAKIAogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBf
QWxsb2M+CnN0cnVjdCBfX2FsbG9jYXRvciB7CiAgX0FsbG9jIF9fdW5kZXJseWluZ19hbGxvYzsK
CiAgdHlwZWRlZiBzaXplX3QgICAgc2l6ZV90eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZl
cmVuY2VfdHlwZTsKICB0eXBlZGVmIF9UcCogICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0
IF9UcCogY29uc3RfcG9pbnRlcjsKICB0eXBlZGVmIF9UcCYgICAgICAgcmVmZXJlbmNlOwogIHR5
cGVkZWYgY29uc3QgX1RwJiBjb25zdF9yZWZlcmVuY2U7CiAgdHlwZWRlZiBfVHAgICAgICAgIHZh
bHVlX3R5cGU7CgogIHRlbXBsYXRlIDxjbGFzcyBfVHAxPiBzdHJ1Y3QgcmViaW5kIHsKICAgIHR5
cGVkZWYgX19hbGxvY2F0b3I8X1RwMSwgX0FsbG9jPiBvdGhlcjsKICB9OwoKICBfX2FsbG9jYXRv
cigpIHRocm93KCkgIHt9CiAgX19hbGxvY2F0b3IoY29uc3QgX19hbGxvY2F0b3ImIF9fYSkgdGhy
b3coKSAKICAgIDogX191bmRlcmx5aW5nX2FsbG9jKF9fYS5fX3VuZGVybHlpbmdfYWxsb2MpIHt9
CiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+CiAgX19hbGxvY2F0b3IoY29uc3QgX19hbGxvY2F0b3I8
X1RwMSwgX0FsbG9jPiYgX19hKSB0aHJvdygpIAogICAgOiBfX3VuZGVybHlpbmdfYWxsb2MoX19h
Ll9fdW5kZXJseWluZ19hbGxvYykge30KICB+X19hbGxvY2F0b3IoKSB0aHJvdygpICB7fQoKICBw
b2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIF9feCkgY29uc3QgeyByZXR1cm4gJl9feDsgfQogIGNv
bnN0X3BvaW50ZXIgYWRkcmVzcyhjb25zdF9yZWZlcmVuY2UgX194KSBjb25zdCB7IHJldHVybiAm
X194OyB9CgogICAKICBfVHAqIGFsbG9jYXRlKHNpemVfdHlwZSBfX24sIGNvbnN0IHZvaWQqID0g
MCkgewogICAgcmV0dXJuIF9fbiAhPSAwCiAgICAgICAgPyBzdGF0aWNfY2FzdDxfVHAqPihfX3Vu
ZGVybHlpbmdfYWxsb2MuYWxsb2NhdGUoX19uICogc2l6ZW9mKF9UcCkpKQogICAgICAgIDogMDsK
ICB9CgogICAKICB2b2lkIGRlYWxsb2NhdGUocG9pbnRlciBfX3AsIHNpemVfdHlwZSBfX24pCiAg
ICB7IF9fdW5kZXJseWluZ19hbGxvYy5kZWFsbG9jYXRlKF9fcCwgX19uICogc2l6ZW9mKF9UcCkp
OyB9CgogIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHRocm93KCkgCiAgICB7IHJldHVybiBz
aXplX3QoLTEpIC8gc2l6ZW9mKF9UcCk7IH0KCiAgdm9pZCBjb25zdHJ1Y3QocG9pbnRlciBfX3As
IGNvbnN0IF9UcCYgX192YWwpIHsgbmV3KF9fcCkgX1RwKF9fdmFsKTsgfQogIHZvaWQgZGVzdHJv
eShwb2ludGVyIF9fcCkgeyBfX3AtPn5fVHAoKTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9BbGxv
Yz4KY2xhc3MgX19hbGxvY2F0b3I8dm9pZCwgX0FsbG9jPiB7CiAgdHlwZWRlZiBzaXplX3QgICAg
ICBzaXplX3R5cGU7CiAgdHlwZWRlZiBwdHJkaWZmX3QgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlw
ZWRlZiB2b2lkKiAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgY29uc3Qgdm9pZCogY29uc3RfcG9p
bnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgIHZhbHVlX3R5cGU7CgogIHRlbXBsYXRlIDxjbGFz
cyBfVHAxPiBzdHJ1Y3QgcmViaW5kIHsKICAgIHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwMSwgX0Fs
bG9jPiBvdGhlcjsKICB9Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgpp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IF9fYWxsb2NhdG9yPF9UcCwgX0FsbG9jPiYgX19h
MSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfX2FsbG9jYXRvcjxfVHAsIF9BbGxvYz4m
IF9fYTIpCnsKICByZXR1cm4gX19hMS5fX3VuZGVybHlpbmdfYWxsb2MgPT0gX19hMi5fX3VuZGVy
bHlpbmdfYWxsb2M7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CmlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgX19hbGxvY2F0b3I8X1RwLCBfQWxsb2M+JiBfX2ExLAog
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fYWxsb2NhdG9yPF9UcCwgX0FsbG9jPiYgX19h
MikKewogIHJldHVybiBfX2ExLl9fdW5kZXJseWluZ19hbGxvYyAhPSBfX2EyLl9fdW5kZXJseWlu
Z19hbGxvYzsKfQoKCiAKIAogCgp0ZW1wbGF0ZSA8aW50IGluc3Q+CmlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8aW5zdD4mLAogICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPGluc3Q+JikKewogIHJldHVy
biB0cnVlOwp9CgoKdGVtcGxhdGUgPGludCBfX2luc3Q+CmlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0PiYsCiAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0PiYpCnsKICByZXR1cm4g
ZmFsc2U7Cn0KCgoKdGVtcGxhdGUgPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0PgppbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMs
IF9faW5zdD4mLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fZGVmYXVsdF9hbGxvY190
ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD4mKQp7CiAgcmV0dXJuIHRydWU7Cn0KCgp0ZW1wbGF0
ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0PiYsCiAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywg
X19pbnN0PiYpCnsKICByZXR1cm4gZmFsc2U7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4K
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBkZWJ1Z19hbGxvYzxfQWxsb2M+JiwKICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBkZWJ1Z19hbGxvYzxfQWxsb2M+JikgewogIHJldHVybiB0
cnVlOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBkZWJ1Z19hbGxvYzxfQWxsb2M+JiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBk
ZWJ1Z19hbGxvYzxfQWxsb2M+JikgewogIHJldHVybiBmYWxzZTsKfQoKCiAKIAogCiAKIAogCgog
CiAKIAogCiAKIAoKIAogCiAKIAogCiAKIAogCiAKIAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
LCBjbGFzcyBfQWxsb2NhdG9yPgpzdHJ1Y3QgX0FsbG9jX3RyYWl0cwp7CiAgc3RhdGljIGNvbnN0
IGJvb2wgX1NfaW5zdGFuY2VsZXNzID0gZmFsc2U7CiAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2Nh
dG9yOjogICByZWJpbmQ8X1RwPjo6b3RoZXIKICAgICAgICAgIGFsbG9jYXRvcl90eXBlOwp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jYXRvcj4KY29uc3QgYm9vbCBfQWxsb2Nf
dHJhaXRzPF9UcCwgX0FsbG9jYXRvcj46Ol9TX2luc3RhbmNlbGVzczsKCiAKCnRlbXBsYXRlIDxj
bGFzcyBfVHAsIGNsYXNzIF9UcDE+CnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgYWxsb2NhdG9y
PF9UcDE+ID4KewogIHN0YXRpYyBjb25zdCBib29sIF9TX2luc3RhbmNlbGVzcyA9IHRydWU7CiAg
dHlwZWRlZiBzaW1wbGVfYWxsb2M8X1RwLCBhbGxvYz4gX0FsbG9jX3R5cGU7CiAgdHlwZWRlZiBh
bGxvY2F0b3I8X1RwPiBhbGxvY2F0b3JfdHlwZTsKfTsKCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHAs
IGludCBfX2luc3Q+CnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgX19tYWxsb2NfYWxsb2NfdGVt
cGxhdGU8X19pbnN0PiA+CnsKICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSB0
cnVlOwogIHR5cGVkZWYgc2ltcGxlX2FsbG9jPF9UcCwgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8
X19pbnN0PiA+IF9BbGxvY190eXBlOwogIHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwLCBfX21hbGxv
Y19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4gYWxsb2NhdG9yX3R5cGU7Cn07CgoKdGVtcGxhdGUg
PGNsYXNzIF9UcCwgYm9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CnN0cnVjdCBfQWxsb2NfdHJh
aXRzPF9UcCwgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0PiA+CnsK
ICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSB0cnVlOwogIHR5cGVkZWYgc2lt
cGxlX2FsbG9jPF9UcCwgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0
PiA+CiAgICAgICAgICBfQWxsb2NfdHlwZTsKICB0eXBlZGVmIF9fYWxsb2NhdG9yPF9UcCwgX19k
ZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0PiA+CiAgICAgICAgICBhbGxv
Y2F0b3JfdHlwZTsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CnN0cnVj
dCBfQWxsb2NfdHJhaXRzPF9UcCwgZGVidWdfYWxsb2M8X0FsbG9jPiA+CnsKICBzdGF0aWMgY29u
c3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSB0cnVlOwogIHR5cGVkZWYgc2ltcGxlX2FsbG9jPF9U
cCwgZGVidWdfYWxsb2M8X0FsbG9jPiA+IF9BbGxvY190eXBlOwogIHR5cGVkZWYgX19hbGxvY2F0
b3I8X1RwLCBkZWJ1Z19hbGxvYzxfQWxsb2M+ID4gYWxsb2NhdG9yX3R5cGU7Cn07CgogCiAKCnRl
bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9UcDEsIGludCBfX2luc3Q+CnN0cnVjdCBfQWxsb2Nf
dHJhaXRzPF9UcCwKICAgICAgICAgICAgICAgICAgICAgX19hbGxvY2F0b3I8X1RwMSwgX19tYWxs
b2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0PiA+ID4KewogIHN0YXRpYyBjb25zdCBib29sIF9TX2lu
c3RhbmNlbGVzcyA9IHRydWU7CiAgdHlwZWRlZiBzaW1wbGVfYWxsb2M8X1RwLCBfX21hbGxvY19h
bGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4gX0FsbG9jX3R5cGU7CiAgdHlwZWRlZiBfX2FsbG9jYXRv
cjxfVHAsIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPF9faW5zdD4gPiBhbGxvY2F0b3JfdHlwZTsK
fTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfVHAxLCBib29sIF9fdGhyLCBpbnQgX19p
bnN0PgpzdHJ1Y3QgX0FsbG9jX3RyYWl0czxfVHAsCiAgICAgICAgICAgICAgICAgICAgICBfX2Fs
bG9jYXRvcjxfVHAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZWZhdWx0
X2FsbG9jX3RlbXBsYXRlPF9fdGhyLCBfX2luc3Q+ID4gPgp7CiAgc3RhdGljIGNvbnN0IGJvb2wg
X1NfaW5zdGFuY2VsZXNzID0gdHJ1ZTsKICB0eXBlZGVmIHNpbXBsZV9hbGxvYzxfVHAsIF9fZGVm
YXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocixfX2luc3Q+ID4KICAgICAgICAgIF9BbGxvY190eXBl
OwogIHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwLCBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190
aHIsX19pbnN0PiA+CiAgICAgICAgICBhbGxvY2F0b3JfdHlwZTsKfTsKCgp0ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBjbGFzcyBfVHAxLCBjbGFzcyBfQWxsb2M+CnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9U
cCwgX19hbGxvY2F0b3I8X1RwMSwgZGVidWdfYWxsb2M8X0FsbG9jPiA+ID4KewogIHN0YXRpYyBj
b25zdCBib29sIF9TX2luc3RhbmNlbGVzcyA9IHRydWU7CiAgdHlwZWRlZiBzaW1wbGVfYWxsb2M8
X1RwLCBkZWJ1Z19hbGxvYzxfQWxsb2M+ID4gX0FsbG9jX3R5cGU7CiAgdHlwZWRlZiBfX2FsbG9j
YXRvcjxfVHAsIGRlYnVnX2FsbG9jPF9BbGxvYz4gPiBhbGxvY2F0b3JfdHlwZTsKfTsKCgoKCgoK
CgogCgojdW5kZWYgX19QUklWQVRFCgoKCiAKIAogCiMgMjEgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4z
Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxsb2MuaCIgMiAzCgoKCiMgNDAgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxsb2MuaCIgMwoKCgoKIAog
CiAKIyAzOSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z
dGQvYmFzdHJpbmcuaCIgMiAzCgoKZXh0ZXJuICJDKysiIHsKY2xhc3MgaXN0cmVhbTsgY2xhc3Mg
b3N0cmVhbTsKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9pdGVyYXRvciIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIF9f
U0dJX1NUTF9JVEVSQVRPUgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfcmVsb3BzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgojZGVmaW5lIF9fU0dJX1NUTF9JTlRFUk5BTF9SRUxPUFMKCiAKCnRlbXBsYXRlIDxj
bGFzcyBfVHA+CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9U
cCYgX195KSB7CiAgcmV0dXJuICEoX194ID09IF9feSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+
CmlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIHsK
ICByZXR1cm4gX195IDwgX194Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgYm9vbCBv
cGVyYXRvcjw9KGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgewogIHJldHVybiAhKF9f
eSA8IF9feCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBib29sIG9wZXJhdG9yPj0o
Y29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSB7CiAgcmV0dXJuICEoX194IDwgX195KTsK
fQoKIAoKCgogCiAKIAojIDMxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45
NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNs
dWRlL2crKy0zL2l0ZXJhdG9yIiAyIDMKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9n
bnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgMzQyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgojIDMyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL2l0ZXJhdG9yIiAyIDMKCgoKCgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8u
Li8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKI2RlZmluZSBfX1NHSV9TVExfSU5URVJOQUxfSVRFUkFUT1JfSAoKIAoK
c3RydWN0IGlucHV0X2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IG91dHB1dF9pdGVyYXRvcl90YWcg
e307CnN0cnVjdCBmb3J3YXJkX2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBpbnB1dF9pdGVyYXRvcl90
YWcge307CnN0cnVjdCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBmb3J3YXJk
X2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIDogcHVi
bGljIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIHt9OwoKIAogCiAKIAoKdGVtcGxhdGUgPGNs
YXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPiBzdHJ1Y3QgaW5wdXRfaXRlcmF0b3IgewogIHR5cGVk
ZWYgaW5wdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgX1RwICAg
ICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFuY2UgICAgICAgICAgZGlm
ZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlw
ZWRlZiBfVHAmICAgICAgICAgICAgICAgcmVmZXJlbmNlOwp9OwoKc3RydWN0IG91dHB1dF9pdGVy
YXRvciB7CiAgdHlwZWRlZiBvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5Owog
IHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdm9pZCAg
ICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAg
ICAgIHBvaW50ZXI7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsK
CnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4gc3RydWN0IGZvcndhcmRfaXRl
cmF0b3IgewogIHR5cGVkZWYgZm9yd2FyZF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7
CiAgdHlwZWRlZiBfVHAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rp
c3RhbmNlICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICAg
ICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIF9UcCYgICAgICAgICAgICAgICAgIHJlZmVyZW5j
ZTsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0cnVjdCBiaWRp
cmVjdGlvbmFsX2l0ZXJhdG9yIHsKICB0eXBlZGVmIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFn
IGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgX1RwICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWVfdHlwZTsKICB0eXBlZGVmIF9EaXN0YW5jZSAgICAgICAgICAgICAgICAgIGRpZmZlcmVu
Y2VfdHlwZTsKICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAg
dHlwZWRlZiBfVHAmICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJh
dG9yIHsKICB0eXBlZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVn
b3J5OwogIHR5cGVkZWYgX1RwICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0
eXBlZGVmIF9EaXN0YW5jZSAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBl
ZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBfVHAmICAg
ICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07CgojIDk4ICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAzCgoKCgp0ZW1w
bGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgpzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzIHsKICB0eXBlZGVm
IHR5cGVuYW1lIF9JdGVyYXRvcjo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7
CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnZhbHVlX3R5cGUgICAgICAgIHZhbHVlX3R5
cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlwZSAgIGRpZmZl
cmVuY2VfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6cG9pbnRlciAgICAgICAg
ICAgcG9pbnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6cmVmZXJlbmNlICAgICAg
ICAgcmVmZXJlbmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGl0ZXJhdG9yX3Ry
YWl0czxfVHAqPiB7CiAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRv
cl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90
eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlw
ZTsKICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVk
ZWYgX1RwJiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCnRlbXBsYXRlIDxj
bGFzcyBfVHA+CnN0cnVjdCBpdGVyYXRvcl90cmFpdHM8Y29uc3QgX1RwKj4gewogIHR5cGVkZWYg
cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBf
VHAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZf
dCAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBjb25zdCBfVHAq
ICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IF9UcCYgICAgICAgICAg
ICAgICAgICByZWZlcmVuY2U7Cn07CgogCiAKIAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+
CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVyYXRvcl9jYXRlZ29y
eQpfX2l0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0IF9JdGVyJikKewogIHR5cGVkZWYgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkgX0NhdGVnb3J5OwogIHJl
dHVybiBfQ2F0ZWdvcnkoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgppbmxpbmUgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6ZGlmZmVyZW5jZV90eXBlKgpfX2Rpc3RhbmNlX3R5
cGUoY29uc3QgX0l0ZXImKQp7CiAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfSXRlcj46OmRpZmZlcmVuY2VfdHlwZSo+KDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0l0ZXI+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+Ojp2YWx1ZV90eXBl
KgpfX3ZhbHVlX3R5cGUoY29uc3QgX0l0ZXImKQp7CiAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OnZhbHVlX3R5cGUqPigwKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9JdGVyPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6aXRl
cmF0b3JfY2F0ZWdvcnkKaXRlcmF0b3JfY2F0ZWdvcnkoY29uc3QgX0l0ZXImIF9faSkgeyByZXR1
cm4gX19pdGVyYXRvcl9jYXRlZ29yeShfX2kpOyB9CgoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgpp
bmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6ZGlmZmVyZW5jZV90eXBlKgpk
aXN0YW5jZV90eXBlKGNvbnN0IF9JdGVyJiBfX2kpIHsgcmV0dXJuIF9fZGlzdGFuY2VfdHlwZShf
X2kpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X0l0ZXI+Ojp2YWx1ZV90eXBlKgp2YWx1ZV90eXBlKGNvbnN0IF9JdGVyJiBfX2kpIHsg
cmV0dXJuIF9fdmFsdWVfdHlwZShfX2kpOyB9CgojZGVmaW5lIF9fSVRFUkFUT1JfQ0FURUdPUlko
X19pKSBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9faSkKI2RlZmluZSBfX0RJU1RBTkNFX1RZUEUoX19p
KSAgICAgX19kaXN0YW5jZV90eXBlKF9faSkKI2RlZmluZSBfX1ZBTFVFX1RZUEUoX19pKSAgICAg
ICAgX192YWx1ZV90eXBlKF9faSkKCiMgMjU5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8u
Li8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIF9fZGlzdGFuY2UoX0lu
cHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAg
ICAgICAgICAgIF9EaXN0YW5jZSYgX19uLCBpbnB1dF9pdGVyYXRvcl90YWcpCnsKICB3aGlsZSAo
X19maXJzdCAhPSBfX2xhc3QpIHsgKytfX2ZpcnN0OyArK19fbjsgfQp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIF9f
ZGlzdGFuY2UoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIAogICAgICAgICAgICAgICAg
ICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIAogICAgICAgICAgICAgICAgICAg
ICAgIF9EaXN0YW5jZSYgX19uLCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKewogIF9fbiAr
PSBfX2xhc3QgLSBfX2ZpcnN0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3IsIGNs
YXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgZGlzdGFuY2UoX0lucHV0SXRlcmF0b3IgX19maXJz
dCwgCiAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgX0Rpc3RhbmNl
JiBfX24pCnsKICBfX2Rpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX19uLCBpdGVyYXRvcl9jYXRl
Z29yeShfX2ZpcnN0KSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgppbmxp
bmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90
eXBlCl9fZGlzdGFuY2UoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19s
YXN0LCBpbnB1dF9pdGVyYXRvcl90YWcpCnsKICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lu
cHV0SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgX19uID0gMDsKICB3aGlsZSAoX19maXJzdCAh
PSBfX2xhc3QpIHsKICAgICsrX19maXJzdDsgKytfX247CiAgfQogIHJldHVybiBfX247Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CmlubGluZSB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCl9fZGlz
dGFuY2UoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2xhc3QsCiAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpIHsKICByZXR1
cm4gX19sYXN0IC0gX19maXJzdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgpp
bmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5j
ZV90eXBlCmRpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9f
bGFzdCkgewogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9y
Pjo6aXRlcmF0b3JfY2F0ZWdvcnkgCiAgICBfQ2F0ZWdvcnk7CiAgcmV0dXJuIF9fZGlzdGFuY2Uo
X19maXJzdCwgX19sYXN0LCBfQ2F0ZWdvcnkoKSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXIsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgX19hZHZhbmNlKF9JbnB1dEl0ZXIm
IF9faSwgX0Rpc3RhbmNlIF9fbiwgaW5wdXRfaXRlcmF0b3JfdGFnKSB7CiAgd2hpbGUgKF9fbi0t
KSArK19faTsKfQoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBj
bGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIF9fYWR2YW5jZShfQmlkaXJlY3Rpb25hbEl0ZXJh
dG9yJiBfX2ksIF9EaXN0YW5jZSBfX24sIAogICAgICAgICAgICAgICAgICAgICAgYmlkaXJlY3Rp
b25hbF9pdGVyYXRvcl90YWcpIHsKICBpZiAoX19uID49IDApCiAgICB3aGlsZSAoX19uLS0pICsr
X19pOwogIGVsc2UKICAgIHdoaWxlIChfX24rKykgLS1fX2k7Cn0KCgoKCgp0ZW1wbGF0ZSA8Y2xh
c3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIF9f
YWR2YW5jZShfUmFuZG9tQWNjZXNzSXRlcmF0b3ImIF9faSwgX0Rpc3RhbmNlIF9fbiwgCiAgICAg
ICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykgewogIF9faSArPSBf
X247Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgpp
bmxpbmUgdm9pZCBhZHZhbmNlKF9JbnB1dEl0ZXJhdG9yJiBfX2ksIF9EaXN0YW5jZSBfX24pIHsK
ICBfX2FkdmFuY2UoX19pLCBfX24sIGl0ZXJhdG9yX2NhdGVnb3J5KF9faSkpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KY2xhc3MgYmFja19pbnNlcnRfaXRlcmF0b3Igewpwcm90ZWN0
ZWQ6CiAgX0NvbnRhaW5lciogY29udGFpbmVyOwpwdWJsaWM6CiAgdHlwZWRlZiBfQ29udGFpbmVy
ICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBp
dGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVfdHlw
ZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVk
ZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAg
ICAgICByZWZlcmVuY2U7CgogIGV4cGxpY2l0IGJhY2tfaW5zZXJ0X2l0ZXJhdG9yKF9Db250YWlu
ZXImIF9feCkgOiBjb250YWluZXIoJl9feCkge30KICBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29u
dGFpbmVyPiYKICBvcGVyYXRvcj0oY29uc3QgdHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlw
ZSYgX192YWx1ZSkgeyAKICAgIGNvbnRhaW5lci0+cHVzaF9iYWNrKF9fdmFsdWUpOwogICAgcmV0
dXJuICp0aGlzOwogIH0KICBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYgb3BlcmF0
b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KICBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVy
PiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9CiAgYmFja19pbnNlcnRfaXRlcmF0b3I8
X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQp9OwoKIyAzNzgg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJh
dG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KaW5saW5lIGJhY2tfaW5zZXJ0
X2l0ZXJhdG9yPF9Db250YWluZXI+IGJhY2tfaW5zZXJ0ZXIoX0NvbnRhaW5lciYgX194KSB7CiAg
cmV0dXJuIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+KF9feCk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfQ29udGFpbmVyPgpjbGFzcyBmcm9udF9pbnNlcnRfaXRlcmF0b3Igewpwcm90ZWN0
ZWQ6CiAgX0NvbnRhaW5lciogY29udGFpbmVyOwpwdWJsaWM6CiAgdHlwZWRlZiBfQ29udGFpbmVy
ICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBp
dGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVfdHlw
ZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVk
ZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAg
ICAgICByZWZlcmVuY2U7CgogIGV4cGxpY2l0IGZyb250X2luc2VydF9pdGVyYXRvcihfQ29udGFp
bmVyJiBfX3gpIDogY29udGFpbmVyKCZfX3gpIHt9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9D
b250YWluZXI+JgogIG9wZXJhdG9yPShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90
eXBlJiBfX3ZhbHVlKSB7IAogICAgY29udGFpbmVyLT5wdXNoX2Zyb250KF9fdmFsdWUpOwogICAg
cmV0dXJuICp0aGlzOwogIH0KICBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9w
ZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250
YWluZXI+JiBvcGVyYXRvcisrKCkgeyByZXR1cm4gKnRoaXM7IH0KICBmcm9udF9pbnNlcnRfaXRl
cmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQp9OwoK
IyA0MTcgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Rs
X2l0ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KaW5saW5lIGZyb250
X2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiBmcm9udF9pbnNlcnRlcihfQ29udGFpbmVyJiBf
X3gpIHsKICByZXR1cm4gZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+KF9feCk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgpjbGFzcyBpbnNlcnRfaXRlcmF0b3Igewpwcm90
ZWN0ZWQ6CiAgX0NvbnRhaW5lciogY29udGFpbmVyOwogIHR5cGVuYW1lIF9Db250YWluZXI6Oml0
ZXJhdG9yIGl0ZXI7CnB1YmxpYzoKICB0eXBlZGVmIF9Db250YWluZXIgICAgICAgICAgY29udGFp
bmVyX3R5cGU7CiAgdHlwZWRlZiBvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5
OwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdm9p
ZCAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAg
ICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsK
CiAgaW5zZXJ0X2l0ZXJhdG9yKF9Db250YWluZXImIF9feCwgdHlwZW5hbWUgX0NvbnRhaW5lcjo6
aXRlcmF0b3IgX19pKSAKICAgIDogY29udGFpbmVyKCZfX3gpLCBpdGVyKF9faSkge30KICBpbnNl
cnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mCiAgb3BlcmF0b3I9KGNvbnN0IHR5cGVuYW1lIF9Db250
YWluZXI6OnZhbHVlX3R5cGUmIF9fdmFsdWUpIHsgCiAgICBpdGVyID0gY29udGFpbmVyLT5pbnNl
cnQoaXRlciwgX192YWx1ZSk7CiAgICArK2l0ZXI7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIGlu
c2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0K
ICBpbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhp
czsgfQogIGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0
dXJuICp0aGlzOyB9Cn07CgojIDQ1OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfaXRlcmF0b3IuaCIgMwoKCnRlbXBsYXRlIDxjbGFzcyBfQ29udGFp
bmVyLCBjbGFzcyBfSXRlcmF0b3I+CmlubGluZSAKaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+
IGluc2VydGVyKF9Db250YWluZXImIF9feCwgX0l0ZXJhdG9yIF9faSkKewogIHR5cGVkZWYgdHlw
ZW5hbWUgX0NvbnRhaW5lcjo6aXRlcmF0b3IgX19pdGVyOwogIHJldHVybiBpbnNlcnRfaXRlcmF0
b3I8X0NvbnRhaW5lcj4oX194LCBfX2l0ZXIoX19pKSk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvciwgY2xhc3MgX1RwLCBjbGFzcyBfUmVmZXJlbmNlID0gX1RwJiwg
CiAgICAgICAgICBjbGFzcyBfRGlzdGFuY2UgPSBwdHJkaWZmX3Q+IAoKCgoKY2xhc3MgcmV2ZXJz
ZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yIHsKICB0eXBlZGVmIHJldmVyc2VfYmlkaXJlY3Rpb25h
bF9pdGVyYXRvcjxfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBfVHAsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9SZWZlcmVuY2UsIF9EaXN0YW5jZT4gIF9TZWxmOwpw
cm90ZWN0ZWQ6CiAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBjdXJyZW50OwpwdWJsaWM6CiAgdHlw
ZWRlZiBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBl
ZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlz
dGFuY2UgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBfVHAqICAg
ICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgX1JlZmVyZW5jZSAgICAgICAg
ICAgICAgICAgcmVmZXJlbmNlOwoKICByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3IoKSB7
fQogIGV4cGxpY2l0IHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRvcihfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yIF9feCkKICAgIDogY3VycmVudChfX3gpIHt9CiAgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvciBiYXNlKCkgY29uc3QgeyByZXR1cm4gY3VycmVudDsgfQogIF9SZWZlcmVuY2Ugb3BlcmF0
b3IqKCkgY29uc3QgewogICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX3RtcCA9IGN1cnJlbnQ7
CiAgICByZXR1cm4gKi0tX190bXA7CiAgfQoKICBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7
IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQoKICBfU2VsZiYgb3BlcmF0b3IrKygpIHsKICAgIC0t
Y3VycmVudDsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQpIHsK
ICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7
CiAgfQogIF9TZWxmJiBvcGVyYXRvci0tKCkgewogICAgKytjdXJyZW50OwogICAgcmV0dXJuICp0
aGlzOwogIH0KICBfU2VsZiBvcGVyYXRvci0tKGludCkgewogICAgX1NlbGYgX190bXAgPSAqdGhp
czsKICAgICsrY3VycmVudDsKICAgIHJldHVybiBfX3RtcDsKICB9Cn07CgojIDU1MCAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfaXRlcmF0b3IuaCIg
MwoKCnRlbXBsYXRlIDxjbGFzcyBfQmlJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9SZWYsCiAgICAg
ICAgICBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBib29sIG9wZXJhdG9yPT0oCiAgICBjb25zdCBy
ZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3I8X0JpSXRlciwgX1RwLCBfUmVmLCBfRGlzdGFu
Y2U+JiBfX3gsIAogICAgY29uc3QgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yPF9CaUl0
ZXIsIF9UcCwgX1JlZiwgX0Rpc3RhbmNlPiYgX195KQp7CiAgcmV0dXJuIF9feC5iYXNlKCkgPT0g
X195LmJhc2UoKTsKfQoKCgogCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CmNs
YXNzIHJldmVyc2VfaXRlcmF0b3IgCnsKcHJvdGVjdGVkOgogIF9JdGVyYXRvciBjdXJyZW50Owpw
dWJsaWM6CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6aXRl
cmF0b3JfY2F0ZWdvcnkKICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnZhbHVlX3R5cGUKICAgICAgICAgIHZh
bHVlX3R5cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6
ZGlmZmVyZW5jZV90eXBlCiAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cG9pbnRlcgogICAgICAgICAgcG9pbnRl
cjsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjpyZWZlcmVu
Y2UKICAgICAgICAgIHJlZmVyZW5jZTsKCiAgdHlwZWRlZiBfSXRlcmF0b3IgaXRlcmF0b3JfdHlw
ZTsKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiBfU2VsZjsKCnB1YmxpYzoK
ICByZXZlcnNlX2l0ZXJhdG9yKCkge30KICBleHBsaWNpdCByZXZlcnNlX2l0ZXJhdG9yKGl0ZXJh
dG9yX3R5cGUgX194KSA6IGN1cnJlbnQoX194KSB7fQoKICByZXZlcnNlX2l0ZXJhdG9yKGNvbnN0
IF9TZWxmJiBfX3gpIDogY3VycmVudChfX3guY3VycmVudCkge30KCiAgdGVtcGxhdGUgPGNsYXNz
IF9JdGVyPgogIHJldmVyc2VfaXRlcmF0b3IoY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcj4m
IF9feCkKICAgIDogY3VycmVudChfX3guYmFzZSgpKSB7fQoKICAgIAogIGl0ZXJhdG9yX3R5cGUg
YmFzZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnQ7IH0KICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkg
Y29uc3QgewogICAgX0l0ZXJhdG9yIF9fdG1wID0gY3VycmVudDsKICAgIHJldHVybiAqLS1fX3Rt
cDsKICB9CgogIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICYob3BlcmF0b3Iq
KCkpOyB9CgoKICBfU2VsZiYgb3BlcmF0b3IrKygpIHsKICAgIC0tY3VycmVudDsKICAgIHJldHVy
biAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0g
KnRoaXM7CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7CiAgfQogIF9TZWxmJiBvcGVy
YXRvci0tKCkgewogICAgKytjdXJyZW50OwogICAgcmV0dXJuICp0aGlzOwogIH0KICBfU2VsZiBv
cGVyYXRvci0tKGludCkgewogICAgX1NlbGYgX190bXAgPSAqdGhpczsKICAgICsrY3VycmVudDsK
ICAgIHJldHVybiBfX3RtcDsKICB9CgogIF9TZWxmIG9wZXJhdG9yKyhkaWZmZXJlbmNlX3R5cGUg
X19uKSBjb25zdCB7CiAgICByZXR1cm4gX1NlbGYoY3VycmVudCAtIF9fbik7CiAgfQogIF9TZWxm
JiBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBfX24pIHsKICAgIGN1cnJlbnQgLT0gX19uOwog
ICAgcmV0dXJuICp0aGlzOwogIH0KICBfU2VsZiBvcGVyYXRvci0oZGlmZmVyZW5jZV90eXBlIF9f
bikgY29uc3QgewogICAgcmV0dXJuIF9TZWxmKGN1cnJlbnQgKyBfX24pOwogIH0KICBfU2VsZiYg
b3BlcmF0b3ItPShkaWZmZXJlbmNlX3R5cGUgX19uKSB7CiAgICBjdXJyZW50ICs9IF9fbjsKICAg
IHJldHVybiAqdGhpczsKICB9CiAgcmVmZXJlbmNlIG9wZXJhdG9yW10oZGlmZmVyZW5jZV90eXBl
IF9fbikgY29uc3QgeyByZXR1cm4gKigqdGhpcyArIF9fbik7IH0gIAp9OyAKIAp0ZW1wbGF0ZSA8
Y2xhc3MgX0l0ZXJhdG9yPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHJldmVyc2VfaXRl
cmF0b3I8X0l0ZXJhdG9yPiYgX194LCAKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZl
cnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJldHVybiBfX3guYmFzZSgpID09IF9f
eS5iYXNlKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CmlubGluZSBib29sIG9wZXJh
dG9yPChjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwgCiAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJl
dHVybiBfX3kuYmFzZSgpIDwgX194LmJhc2UoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRv
cj4KaW5saW5lIHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5j
ZV90eXBlCm9wZXJhdG9yLShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwg
CiAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJl
dHVybiBfX3kuYmFzZSgpIC0gX194LmJhc2UoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRv
cj4KaW5saW5lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiAKb3BlcmF0b3IrKHR5cGVuYW1l
IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiwKICAgICAg
ICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194KSB7CiAgcmV0dXJuIHJl
dmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPihfX3guYmFzZSgpIC0gX19uKTsKfQoKIyA4MDUgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9y
LmgiIDMKCgogCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0ID0gcHRyZGlmZl90
PiAKY2xhc3MgaXN0cmVhbV9pdGVyYXRvciB7CiAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PSA8PiAg
KGNvbnN0IGlzdHJlYW1faXRlcmF0b3ImLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGlzdHJlYW1faXRlcmF0b3ImKTsKcHJvdGVjdGVkOgogIGlz
dHJlYW0qIF9NX3N0cmVhbTsKICBfVHAgX01fdmFsdWU7CiAgYm9vbCBfTV9lbmRfbWFya2VyOwog
IHZvaWQgX01fcmVhZCgpIHsKICAgIF9NX2VuZF9tYXJrZXIgPSAoKl9NX3N0cmVhbSkgPyB0cnVl
IDogZmFsc2U7CiAgICBpZiAoX01fZW5kX21hcmtlcikgKl9NX3N0cmVhbSA+PiBfTV92YWx1ZTsK
ICAgIF9NX2VuZF9tYXJrZXIgPSAoKl9NX3N0cmVhbSkgPyB0cnVlIDogZmFsc2U7CiAgfQpwdWJs
aWM6CiAgdHlwZWRlZiBpbnB1dF9pdGVyYXRvcl90YWcgIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5
cGVkZWYgX1RwICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3QgICAg
ICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBjb25zdCBfVHAqICAgICAgICAg
IHBvaW50ZXI7CiAgdHlwZWRlZiBjb25zdCBfVHAmICAgICAgICAgIHJlZmVyZW5jZTsKCiAgaXN0
cmVhbV9pdGVyYXRvcigpIDogX01fc3RyZWFtKCZjaW4pLCBfTV9lbmRfbWFya2VyKGZhbHNlKSB7
fQogIGlzdHJlYW1faXRlcmF0b3IoaXN0cmVhbSYgX19zKSA6IF9NX3N0cmVhbSgmX19zKSB7IF9N
X3JlYWQoKTsgfQogIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBfTV92YWx1
ZTsgfQoKICBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigp
KTsgfQoKICBpc3RyZWFtX2l0ZXJhdG9yPF9UcCwgX0Rpc3Q+JiBvcGVyYXRvcisrKCkgeyAKICAg
IF9NX3JlYWQoKTsgCiAgICByZXR1cm4gKnRoaXM7CiAgfQogIGlzdHJlYW1faXRlcmF0b3I8X1Rw
LCBfRGlzdD4gb3BlcmF0b3IrKyhpbnQpICB7CiAgICBpc3RyZWFtX2l0ZXJhdG9yPF9UcCwgX0Rp
c3Q+IF9fdG1wID0gKnRoaXM7CiAgICBfTV9yZWFkKCk7CiAgICByZXR1cm4gX190bXA7CiAgfQp9
OwoKIyA4NjQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMv
c3RsX2l0ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+
CmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0
YW5jZT4mIF9feCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc3RyZWFtX2l0ZXJhdG9y
PF9UcCwgX0Rpc3RhbmNlPiYgX195KSB7CiAgcmV0dXJuIChfX3guX01fc3RyZWFtID09IF9feS5f
TV9zdHJlYW0gJiYKICAgICAgICAgIF9feC5fTV9lbmRfbWFya2VyID09IF9feS5fTV9lbmRfbWFy
a2VyKSB8fAogICAgICAgICBfX3guX01fZW5kX21hcmtlciA9PSBmYWxzZSAmJiBfX3kuX01fZW5k
X21hcmtlciA9PSBmYWxzZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xhc3Mgb3N0cmVhbV9p
dGVyYXRvciB7CnByb3RlY3RlZDoKICBvc3RyZWFtKiBfTV9zdHJlYW07CiAgY29uc3QgY2hhciog
X01fc3RyaW5nOwpwdWJsaWM6CiAgdHlwZWRlZiBvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9y
X2NhdGVnb3J5OwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5
cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB2b2lk
ICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHJl
ZmVyZW5jZTsKCiAgb3N0cmVhbV9pdGVyYXRvcihvc3RyZWFtJiBfX3MpIDogX01fc3RyZWFtKCZf
X3MpLCBfTV9zdHJpbmcoMCkge30KICBvc3RyZWFtX2l0ZXJhdG9yKG9zdHJlYW0mIF9fcywgY29u
c3QgY2hhciogX19jKSAKICAgIDogX01fc3RyZWFtKCZfX3MpLCBfTV9zdHJpbmcoX19jKSAge30K
ICBvc3RyZWFtX2l0ZXJhdG9yPF9UcD4mIG9wZXJhdG9yPShjb25zdCBfVHAmIF9fdmFsdWUpIHsg
CiAgICAqX01fc3RyZWFtIDw8IF9fdmFsdWU7CiAgICBpZiAoX01fc3RyaW5nKSAqX01fc3RyZWFt
IDw8IF9NX3N0cmluZzsKICAgIHJldHVybiAqdGhpczsKICB9CiAgb3N0cmVhbV9pdGVyYXRvcjxf
VHA+JiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQogIG9zdHJlYW1faXRlcmF0b3I8X1Rw
PiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9IAogIG9zdHJlYW1faXRlcmF0b3I8X1Rw
PiYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9IAp9OwoKIyA5MDcgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgiIDMK
CgogCgoKCiAKIAogCiMgMzggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1
LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvaXRlcmF0b3IiIDIgMwoKCgoKIAogCiAKIyA0NCAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1
LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGQvYmFzdHJpbmcuaCIgMiAzCgoKCgpleHRl
cm4gdm9pZCBfX291dF9vZl9yYW5nZSAoY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgX19sZW5n
dGhfZXJyb3IgKGNvbnN0IGNoYXIgKik7CgojZGVmaW5lIE9VVE9GUkFOR0UoY29uZCkgZG8geyBp
ZiAoY29uZCkgX19vdXRfb2ZfcmFuZ2UgKCNjb25kKTsgfSB3aGlsZSAoMCkKCiNkZWZpbmUgTEVO
R1RIRVJST1IoY29uZCkgZG8geyBpZiAoY29uZCkgX19sZW5ndGhfZXJyb3IgKCNjb25kKTsgfSB3
aGlsZSAoMCkKCgoKCgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzID0g
c3RyaW5nX2NoYXJfdHJhaXRzPGNoYXJUPiwKCSAgY2xhc3MgQWxsb2NhdG9yID0gYWxsb2MgPgpj
bGFzcyBiYXNpY19zdHJpbmcKewpwcml2YXRlOgogIHN0cnVjdCBSZXAgewogICAgc2l6ZV90IGxl
biwgcmVzLCByZWY7CiAgICBib29sIHNlbGZpc2g7CgogICAgY2hhclQqIGRhdGEgKCkgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyVCAqPih0aGlzICsgMSk7IH0KICAgIGNoYXJUJiBvcGVy
YXRvcltdIChzaXplX3QgcykgeyByZXR1cm4gZGF0YSAoKSBbc107IH0KICAgIGNoYXJUKiBncmFi
ICgpIHsgaWYgKHNlbGZpc2gpIHJldHVybiBjbG9uZSAoKTsgKytyZWY7IHJldHVybiBkYXRhICgp
OyB9CgogICAgdm9pZCByZWxlYXNlICgpCiAgICAgIHsKCXNpemVfdCBfX3ZhbDsKCSAKCSAKCSAK
CSAKCWFzbSAoIi5ieXRlIDB4ZjAsIDB4MGYsIDB4YzEsIDB4MDIiICAKCSAgICA6ICI9YSIgKF9f
dmFsKQoJICAgIDogIjAiICgtMSksICJtIiAocmVmKSwgImQiICgmcmVmKQoJICAgIDogIm1lbW9y
eSIpOwoKCWlmIChfX3ZhbCA9PSAxKQoJICBkZWxldGUgdGhpczsKICAgICAgfQojIDExMCAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGQvYmFzdHJpbmcu
aCIgMwoKCiAgICBpbmxpbmUgc3RhdGljIHZvaWQgKiBvcGVyYXRvciBuZXcgKHNpemVfdCwgc2l6
ZV90KTsKICAgIGlubGluZSBzdGF0aWMgdm9pZCBvcGVyYXRvciBkZWxldGUgKHZvaWQgKik7CiAg
ICBpbmxpbmUgc3RhdGljIFJlcCogY3JlYXRlIChzaXplX3QpOwogICAgY2hhclQqIGNsb25lICgp
OwoKICAgIGlubGluZSB2b2lkIGNvcHkgKHNpemVfdCwgY29uc3QgY2hhclQgKiwgc2l6ZV90KTsK
ICAgIGlubGluZSB2b2lkIG1vdmUgKHNpemVfdCwgY29uc3QgY2hhclQgKiwgc2l6ZV90KTsKICAg
IGlubGluZSB2b2lkIHNldCAgKHNpemVfdCwgY29uc3QgY2hhclQsICAgc2l6ZV90KTsKCiAgICBp
bmxpbmUgc3RhdGljIGJvb2wgZXhjZXNzX3Nsb3AgKHNpemVfdCwgc2l6ZV90KTsKICAgIGlubGlu
ZSBzdGF0aWMgc2l6ZV90IGZyb2Jfc2l6ZSAoc2l6ZV90KTsKCiAgcHJpdmF0ZToKICAgIFJlcCAm
b3BlcmF0b3I9IChjb25zdCBSZXAgJik7CiAgfTsKCnB1YmxpYzoKIAogIHR5cGVkZWYJICAgdHJh
aXRzCQl0cmFpdHNfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl90eXBlCXZh
bHVlX3R5cGU7CiAgdHlwZWRlZgkgICBBbGxvY2F0b3IJCWFsbG9jYXRvcl90eXBlOwoKICB0eXBl
ZGVmIHNpemVfdCBzaXplX3R5cGU7CiAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBl
OwogIHR5cGVkZWYgY2hhclQmIHJlZmVyZW5jZTsKICB0eXBlZGVmIGNvbnN0IGNoYXJUJiBjb25z
dF9yZWZlcmVuY2U7CiAgdHlwZWRlZiBjaGFyVCogcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IGNo
YXJUKiBjb25zdF9wb2ludGVyOwogIHR5cGVkZWYgcG9pbnRlciBpdGVyYXRvcjsKICB0eXBlZGVm
IGNvbnN0X3BvaW50ZXIgY29uc3RfaXRlcmF0b3I7CiAgdHlwZWRlZiA6OnJldmVyc2VfaXRlcmF0
b3I8aXRlcmF0b3I+IHJldmVyc2VfaXRlcmF0b3I7CiAgdHlwZWRlZiA6OnJldmVyc2VfaXRlcmF0
b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgc3RhdGljIGNvbnN0
IHNpemVfdHlwZSBucG9zID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigtMSk7Cgpwcml2YXRlOgog
IFJlcCAqcmVwICgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmVwICo+KGRhdCkg
LSAxOyB9CiAgdm9pZCByZXB1cCAoUmVwICpwKSB7IHJlcCAoKS0+cmVsZWFzZSAoKTsgZGF0ID0g
cC0+ZGF0YSAoKTsgfQoKcHVibGljOgogIGNvbnN0IGNoYXJUKiBkYXRhICgpIGNvbnN0CiAgICB7
IHJldHVybiByZXAgKCktPmRhdGEoKTsgfQogIHNpemVfdHlwZSBsZW5ndGggKCkgY29uc3QKICAg
IHsgcmV0dXJuIHJlcCAoKS0+bGVuOyB9CiAgc2l6ZV90eXBlIHNpemUgKCkgY29uc3QKICAgIHsg
cmV0dXJuIHJlcCAoKS0+bGVuOyB9CiAgc2l6ZV90eXBlIGNhcGFjaXR5ICgpIGNvbnN0CiAgICB7
IHJldHVybiByZXAgKCktPnJlczsgfQogIHNpemVfdHlwZSBtYXhfc2l6ZSAoKSBjb25zdAogICAg
eyByZXR1cm4gKG5wb3MgLSAxKS9zaXplb2YgKGNoYXJUKTsgfQkJIAogIGJvb2wgZW1wdHkgKCkg
Y29uc3QKICAgIHsgcmV0dXJuIHNpemUgKCkgPT0gMDsgfQoKIAogIGJhc2ljX3N0cmluZyYgb3Bl
cmF0b3I9IChjb25zdCBiYXNpY19zdHJpbmcmIHN0cikKICAgIHsKICAgICAgaWYgKCZzdHIgIT0g
dGhpcykgeyByZXAgKCktPnJlbGVhc2UgKCk7IGRhdCA9IHN0ci5yZXAgKCktPmdyYWIgKCk7IH0K
ICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICBleHBsaWNpdCBiYXNpY19zdHJpbmcgKCk6IGRh
dCAobmlsUmVwLmdyYWIgKCkpIHsgfQogIGJhc2ljX3N0cmluZyAoY29uc3QgYmFzaWNfc3RyaW5n
JiBzdHIpOiBkYXQgKHN0ci5yZXAgKCktPmdyYWIgKCkpIHsgfQogIGJhc2ljX3N0cmluZyAoY29u
c3QgYmFzaWNfc3RyaW5nJiBzdHIsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuID0gbnBvcykK
ICAgIDogZGF0IChuaWxSZXAuZ3JhYiAoKSkgeyBhc3NpZ24gKHN0ciwgcG9zLCBuKTsgfQogIGJh
c2ljX3N0cmluZyAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBuKQogICAgOiBkYXQgKG5pbFJl
cC5ncmFiICgpKSB7IGFzc2lnbiAocywgbik7IH0KICBiYXNpY19zdHJpbmcgKGNvbnN0IGNoYXJU
KiBzKQogICAgOiBkYXQgKG5pbFJlcC5ncmFiICgpKSB7IGFzc2lnbiAocyk7IH0KICBiYXNpY19z
dHJpbmcgKHNpemVfdHlwZSBuLCBjaGFyVCBjKQogICAgOiBkYXQgKG5pbFJlcC5ncmFiICgpKSB7
IGFzc2lnbiAobiwgYyk7IH0KCiAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KICAgIGJh
c2ljX3N0cmluZyhJbnB1dEl0ZXJhdG9yIF9fYmVnaW4sIElucHV0SXRlcmF0b3IgX19lbmQpCgoK
CiAgICA6IGRhdCAobmlsUmVwLmdyYWIgKCkpIHsgYXNzaWduIChfX2JlZ2luLCBfX2VuZCk7IH0K
CiAgfmJhc2ljX3N0cmluZyAoKQogICAgeyByZXAgKCktPnJlbGVhc2UgKCk7IH0KCiAgdm9pZCBz
d2FwIChiYXNpY19zdHJpbmcgJnMpIHsgY2hhclQgKmQgPSBkYXQ7IGRhdCA9IHMuZGF0OyBzLmRh
dCA9IGQ7IH0KCiAgYmFzaWNfc3RyaW5nJiBhcHBlbmQgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3Ry
LCBzaXplX3R5cGUgcG9zID0gMCwKCQkJc2l6ZV90eXBlIG4gPSBucG9zKQogICAgeyByZXR1cm4g
cmVwbGFjZSAobGVuZ3RoICgpLCAwLCBzdHIsIHBvcywgbik7IH0KICBiYXNpY19zdHJpbmcmIGFw
cGVuZCAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBuKQogICAgeyByZXR1cm4gcmVwbGFjZSAo
bGVuZ3RoICgpLCAwLCBzLCBuKTsgfQogIGJhc2ljX3N0cmluZyYgYXBwZW5kIChjb25zdCBjaGFy
VCogcykKICAgIHsgcmV0dXJuIGFwcGVuZCAocywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIGJh
c2ljX3N0cmluZyYgYXBwZW5kIChzaXplX3R5cGUgbiwgY2hhclQgYykKICAgIHsgcmV0dXJuIHJl
cGxhY2UgKGxlbmd0aCAoKSwgMCwgbiwgYyk7IH0KCiAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVy
YXRvcj4KICAgIGJhc2ljX3N0cmluZyYgYXBwZW5kKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0
SXRlcmF0b3IgbGFzdCkKCgoKICAgIHsgcmV0dXJuIHJlcGxhY2UgKGllbmQgKCksIGllbmQgKCks
IGZpcnN0LCBsYXN0KTsgfQoKICB2b2lkIHB1c2hfYmFjayhjaGFyVCBfX2MpCiAgeyBhcHBlbmQo
MSwgX19jKTsgfQogIAogIGJhc2ljX3N0cmluZyYgYXNzaWduIChjb25zdCBiYXNpY19zdHJpbmcm
IHN0ciwgc2l6ZV90eXBlIHBvcyA9IDAsCgkJCXNpemVfdHlwZSBuID0gbnBvcykKICAgIHsgcmV0
dXJuIHJlcGxhY2UgKDAsIG5wb3MsIHN0ciwgcG9zLCBuKTsgfQogIGJhc2ljX3N0cmluZyYgYXNz
aWduIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIG4pCiAgICB7IHJldHVybiByZXBsYWNlICgw
LCBucG9zLCBzLCBuKTsgfQogIGJhc2ljX3N0cmluZyYgYXNzaWduIChjb25zdCBjaGFyVCogcykK
ICAgIHsgcmV0dXJuIGFzc2lnbiAocywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIGJhc2ljX3N0
cmluZyYgYXNzaWduIChzaXplX3R5cGUgbiwgY2hhclQgYykKICAgIHsgcmV0dXJuIHJlcGxhY2Ug
KDAsIG5wb3MsIG4sIGMpOyB9CgogIHRlbXBsYXRlPGNsYXNzIElucHV0SXRlcmF0b3I+CiAgICBi
YXNpY19zdHJpbmcmIGFzc2lnbihJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxh
c3QpCgoKCiAgICB7IHJldHVybiByZXBsYWNlIChpYmVnaW4gKCksIGllbmQgKCksIGZpcnN0LCBs
YXN0KTsgfQoKICBiYXNpY19zdHJpbmcmIG9wZXJhdG9yPSAoY29uc3QgY2hhclQqIHMpCiAgICB7
IHJldHVybiBhc3NpZ24gKHMpOyB9CiAgYmFzaWNfc3RyaW5nJiBvcGVyYXRvcj0gKGNoYXJUIGMp
CiAgICB7IHJldHVybiBhc3NpZ24gKDEsIGMpOyB9CgogIGJhc2ljX3N0cmluZyYgb3BlcmF0b3Ir
PSAoY29uc3QgYmFzaWNfc3RyaW5nJiByaHMpCiAgICB7IHJldHVybiBhcHBlbmQgKHJocyk7IH0K
ICBiYXNpY19zdHJpbmcmIG9wZXJhdG9yKz0gKGNvbnN0IGNoYXJUKiBzKQogICAgeyByZXR1cm4g
YXBwZW5kIChzKTsgfQogIGJhc2ljX3N0cmluZyYgb3BlcmF0b3IrPSAoY2hhclQgYykKICAgIHsg
cmV0dXJuIGFwcGVuZCAoMSwgYyk7IH0KCiAgYmFzaWNfc3RyaW5nJiBpbnNlcnQgKHNpemVfdHlw
ZSBwb3MxLCBjb25zdCBiYXNpY19zdHJpbmcmIHN0ciwKCQkJc2l6ZV90eXBlIHBvczIgPSAwLCBz
aXplX3R5cGUgbiA9IG5wb3MpCiAgICB7IHJldHVybiByZXBsYWNlIChwb3MxLCAwLCBzdHIsIHBv
czIsIG4pOyB9CiAgYmFzaWNfc3RyaW5nJiBpbnNlcnQgKHNpemVfdHlwZSBwb3MsIGNvbnN0IGNo
YXJUKiBzLCBzaXplX3R5cGUgbikKICAgIHsgcmV0dXJuIHJlcGxhY2UgKHBvcywgMCwgcywgbik7
IH0KICBiYXNpY19zdHJpbmcmIGluc2VydCAoc2l6ZV90eXBlIHBvcywgY29uc3QgY2hhclQqIHMp
CiAgICB7IHJldHVybiBpbnNlcnQgKHBvcywgcywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIGJh
c2ljX3N0cmluZyYgaW5zZXJ0IChzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbiwgY2hhclQgYykK
ICAgIHsgcmV0dXJuIHJlcGxhY2UgKHBvcywgMCwgbiwgYyk7IH0KICBpdGVyYXRvciBpbnNlcnQo
aXRlcmF0b3IgcCwgY2hhclQgYykKICAgIHsgc2l6ZV90eXBlIF9fbyA9IHAgLSBpYmVnaW4gKCk7
CiAgICAgIGluc2VydCAocCAtIGliZWdpbiAoKSwgMSwgYyk7IHNlbGZpc2ggKCk7CiAgICAgIHJl
dHVybiBpYmVnaW4gKCkgKyBfX287IH0KICBpdGVyYXRvciBpbnNlcnQoaXRlcmF0b3IgcCwgc2l6
ZV90eXBlIG4sIGNoYXJUIGMpCiAgICB7IHNpemVfdHlwZSBfX28gPSBwIC0gaWJlZ2luICgpOwog
ICAgICBpbnNlcnQgKHAgLSBpYmVnaW4gKCksIG4sIGMpOyBzZWxmaXNoICgpOwogICAgICByZXR1
cm4gaWJlZ2luICgpICsgX19vOyB9CgogIHRlbXBsYXRlPGNsYXNzIElucHV0SXRlcmF0b3I+CiAg
ICB2b2lkIGluc2VydChpdGVyYXRvciBwLCBJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJh
dG9yIGxhc3QpCgoKCiAgICB7IHJlcGxhY2UgKHAsIHAsIGZpcnN0LCBsYXN0KTsgfQoKICBiYXNp
Y19zdHJpbmcmIGVyYXNlIChzaXplX3R5cGUgcG9zID0gMCwgc2l6ZV90eXBlIG4gPSBucG9zKQog
ICAgeyByZXR1cm4gcmVwbGFjZSAocG9zLCBuLCAoc2l6ZV90eXBlKTAsIChjaGFyVCkwKTsgfQog
IGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIHApCiAgICB7IHNpemVfdHlwZSBfX28gPSBwIC0gYmVn
aW4oKTsKICAgICAgcmVwbGFjZSAoX19vLCAxLCAoc2l6ZV90eXBlKTAsIChjaGFyVCkwKTsgc2Vs
ZmlzaCAoKTsKICAgICAgcmV0dXJuIGliZWdpbigpICsgX19vOyB9CiAgaXRlcmF0b3IgZXJhc2Uo
aXRlcmF0b3IgZiwgaXRlcmF0b3IgbCkKICAgIHsgc2l6ZV90eXBlIF9fbyA9IGYgLSBpYmVnaW4o
KTsKICAgICAgcmVwbGFjZSAoX19vLCBsLWYsIChzaXplX3R5cGUpMCwgKGNoYXJUKTApO3NlbGZp
c2ggKCk7CiAgICAgIHJldHVybiBpYmVnaW4oKSArIF9fbzsgfQoKICBiYXNpY19zdHJpbmcmIHJl
cGxhY2UgKHNpemVfdHlwZSBwb3MxLCBzaXplX3R5cGUgbjEsIGNvbnN0IGJhc2ljX3N0cmluZyYg
c3RyLAoJCQkgc2l6ZV90eXBlIHBvczIgPSAwLCBzaXplX3R5cGUgbjIgPSBucG9zKTsKICBiYXNp
Y19zdHJpbmcmIHJlcGxhY2UgKHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuMSwgY29uc3QgY2hh
clQqIHMsCgkJCSBzaXplX3R5cGUgbjIpOwogIGJhc2ljX3N0cmluZyYgcmVwbGFjZSAoc2l6ZV90
eXBlIHBvcywgc2l6ZV90eXBlIG4xLCBjb25zdCBjaGFyVCogcykKICAgIHsgcmV0dXJuIHJlcGxh
Y2UgKHBvcywgbjEsIHMsIHRyYWl0czo6bGVuZ3RoIChzKSk7IH0KICBiYXNpY19zdHJpbmcmIHJl
cGxhY2UgKHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuMSwgc2l6ZV90eXBlIG4yLCBjaGFyVCBj
KTsKICBiYXNpY19zdHJpbmcmIHJlcGxhY2UgKHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuLCBj
aGFyVCBjKQogICAgeyByZXR1cm4gcmVwbGFjZSAocG9zLCBuLCAxLCBjKTsgfQogIGJhc2ljX3N0
cmluZyYgcmVwbGFjZSAoaXRlcmF0b3IgaTEsIGl0ZXJhdG9yIGkyLCBjb25zdCBiYXNpY19zdHJp
bmcmIHN0cikKICAgIHsgcmV0dXJuIHJlcGxhY2UgKGkxIC0gaWJlZ2luICgpLCBpMiAtIGkxLCBz
dHIpOyB9CiAgYmFzaWNfc3RyaW5nJiByZXBsYWNlIChpdGVyYXRvciBpMSwgaXRlcmF0b3IgaTIs
IGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgbikKICAgIHsgcmV0dXJuIHJlcGxhY2UgKGkxIC0g
aWJlZ2luICgpLCBpMiAtIGkxLCBzLCBuKTsgfQogIGJhc2ljX3N0cmluZyYgcmVwbGFjZSAoaXRl
cmF0b3IgaTEsIGl0ZXJhdG9yIGkyLCBjb25zdCBjaGFyVCogcykKICAgIHsgcmV0dXJuIHJlcGxh
Y2UgKGkxIC0gaWJlZ2luICgpLCBpMiAtIGkxLCBzKTsgfQogIGJhc2ljX3N0cmluZyYgcmVwbGFj
ZSAoaXRlcmF0b3IgaTEsIGl0ZXJhdG9yIGkyLCBzaXplX3R5cGUgbiwgY2hhclQgYykKICAgIHsg
cmV0dXJuIHJlcGxhY2UgKGkxIC0gaWJlZ2luICgpLCBpMiAtIGkxLCBuLCBjKTsgfQoKICB0ZW1w
bGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yPgogICAgYmFzaWNfc3RyaW5nJiByZXBsYWNlKGl0ZXJh
dG9yIGkxLCBpdGVyYXRvciBpMiwKCQkJICBJbnB1dEl0ZXJhdG9yIGoxLCBJbnB1dEl0ZXJhdG9y
IGoyKTsKCgoKCgpwcml2YXRlOgogIHN0YXRpYyBjaGFyVCBlb3MgKCkgeyByZXR1cm4gdHJhaXRz
Ojplb3MgKCk7IH0KICB2b2lkIHVuaXF1ZSAoKSB7IGlmIChyZXAgKCktPnJlZiA+IDEpIGFsbG9j
IChsZW5ndGggKCksIHRydWUpOyB9CiAgdm9pZCBzZWxmaXNoICgpIHsgdW5pcXVlICgpOyByZXAg
KCktPnNlbGZpc2ggPSB0cnVlOyB9CgpwdWJsaWM6CiAgY2hhclQgb3BlcmF0b3JbXSAoc2l6ZV90
eXBlIHBvcykgY29uc3QKICAgIHsKICAgICAgaWYgKHBvcyA9PSBsZW5ndGggKCkpCglyZXR1cm4g
ZW9zICgpOwogICAgICByZXR1cm4gZGF0YSAoKVtwb3NdOwogICAgfQoKICByZWZlcmVuY2Ugb3Bl
cmF0b3JbXSAoc2l6ZV90eXBlIHBvcykKICAgIHsgc2VsZmlzaCAoKTsgcmV0dXJuICgqcmVwICgp
KVtwb3NdOyB9CgogIHJlZmVyZW5jZSBhdCAoc2l6ZV90eXBlIHBvcykKICAgIHsKICAgICAgZG8g
eyBpZiAoIHBvcyA+PSBsZW5ndGggKCkgKSBfX291dF9vZl9yYW5nZSAoInBvcyA+PSBsZW5ndGgg
KCkiKTsgfSB3aGlsZSAoMCkgOwogICAgICByZXR1cm4gKCp0aGlzKVtwb3NdOwogICAgfQogIGNv
bnN0X3JlZmVyZW5jZSBhdCAoc2l6ZV90eXBlIHBvcykgY29uc3QKICAgIHsKICAgICAgZG8geyBp
ZiAoIHBvcyA+PSBsZW5ndGggKCkgKSBfX291dF9vZl9yYW5nZSAoInBvcyA+PSBsZW5ndGggKCki
KTsgfSB3aGlsZSAoMCkgOwogICAgICByZXR1cm4gZGF0YSAoKVtwb3NdOwogICAgfQoKcHJpdmF0
ZToKICB2b2lkIHRlcm1pbmF0ZSAoKSBjb25zdAogICAgeyB0cmFpdHM6OmFzc2lnbiAoKCpyZXAg
KCkpW2xlbmd0aCAoKV0sIGVvcyAoKSk7IH0KCnB1YmxpYzoKICBjb25zdCBjaGFyVCogY19zdHIg
KCkgY29uc3QKICAgIHsgaWYgKGxlbmd0aCAoKSA9PSAwKSByZXR1cm4gIiI7IHRlcm1pbmF0ZSAo
KTsgcmV0dXJuIGRhdGEgKCk7IH0KICB2b2lkIHJlc2l6ZSAoc2l6ZV90eXBlIG4sIGNoYXJUIGMp
OwogIHZvaWQgcmVzaXplIChzaXplX3R5cGUgbikKICAgIHsgcmVzaXplIChuLCBlb3MgKCkpOyB9
CiAgdm9pZCByZXNlcnZlIChzaXplX3R5cGUpIHsgfQoKICBzaXplX3R5cGUgY29weSAoY2hhclQq
IHMsIHNpemVfdHlwZSBuLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3Q7CgogIHNpemVfdHlwZSBm
aW5kIChjb25zdCBiYXNpY19zdHJpbmcmIHN0ciwgc2l6ZV90eXBlIHBvcyA9IDApIGNvbnN0CiAg
ICB7IHJldHVybiBmaW5kIChzdHIuZGF0YSgpLCBwb3MsIHN0ci5sZW5ndGgoKSk7IH0KICBzaXpl
X3R5cGUgZmluZCAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBj
b25zdDsKICBzaXplX3R5cGUgZmluZCAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MgPSAw
KSBjb25zdAogICAgeyByZXR1cm4gZmluZCAocywgcG9zLCB0cmFpdHM6Omxlbmd0aCAocykpOyB9
CiAgc2l6ZV90eXBlIGZpbmQgKGNoYXJUIGMsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdDsKCiAg
c2l6ZV90eXBlIHJmaW5kIChjb25zdCBiYXNpY19zdHJpbmcmIHN0ciwgc2l6ZV90eXBlIHBvcyA9
IG5wb3MpIGNvbnN0CiAgICB7IHJldHVybiByZmluZCAoc3RyLmRhdGEoKSwgcG9zLCBzdHIubGVu
Z3RoKCkpOyB9CiAgc2l6ZV90eXBlIHJmaW5kIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBv
cywgc2l6ZV90eXBlIG4pIGNvbnN0OwogIHNpemVfdHlwZSByZmluZCAoY29uc3QgY2hhclQqIHMs
IHNpemVfdHlwZSBwb3MgPSBucG9zKSBjb25zdAogICAgeyByZXR1cm4gcmZpbmQgKHMsIHBvcywg
dHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIHNpemVfdHlwZSByZmluZCAoY2hhclQgYywgc2l6ZV90
eXBlIHBvcyA9IG5wb3MpIGNvbnN0OwoKICBzaXplX3R5cGUgZmluZF9maXJzdF9vZiAoY29uc3Qg
YmFzaWNfc3RyaW5nJiBzdHIsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdAogICAgeyByZXR1cm4g
ZmluZF9maXJzdF9vZiAoc3RyLmRhdGEoKSwgcG9zLCBzdHIubGVuZ3RoKCkpOyB9CiAgc2l6ZV90
eXBlIGZpbmRfZmlyc3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5
cGUgbikgY29uc3Q7CiAgc2l6ZV90eXBlIGZpbmRfZmlyc3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBz
aXplX3R5cGUgcG9zID0gMCkgY29uc3QKICAgIHsgcmV0dXJuIGZpbmRfZmlyc3Rfb2YgKHMsIHBv
cywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIHNpemVfdHlwZSBmaW5kX2ZpcnN0X29mIChjaGFy
VCBjLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3QKICAgIHsgcmV0dXJuIGZpbmQgKGMsIHBvcyk7
IH0KCiAgc2l6ZV90eXBlIGZpbmRfbGFzdF9vZiAoY29uc3QgYmFzaWNfc3RyaW5nJiBzdHIsIHNp
emVfdHlwZSBwb3MgPSBucG9zKSBjb25zdAogICAgeyByZXR1cm4gZmluZF9sYXN0X29mIChzdHIu
ZGF0YSgpLCBwb3MsIHN0ci5sZW5ndGgoKSk7IH0KICBzaXplX3R5cGUgZmluZF9sYXN0X29mIChj
b25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4pIGNvbnN0OwogIHNpemVf
dHlwZSBmaW5kX2xhc3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zID0gbnBvcykg
Y29uc3QKICAgIHsgcmV0dXJuIGZpbmRfbGFzdF9vZiAocywgcG9zLCB0cmFpdHM6Omxlbmd0aCAo
cykpOyB9CiAgc2l6ZV90eXBlIGZpbmRfbGFzdF9vZiAoY2hhclQgYywgc2l6ZV90eXBlIHBvcyA9
IG5wb3MpIGNvbnN0CiAgICB7IHJldHVybiByZmluZCAoYywgcG9zKTsgfQoKICBzaXplX3R5cGUg
ZmluZF9maXJzdF9ub3Rfb2YgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUgcG9z
ID0gMCkgY29uc3QKICAgIHsgcmV0dXJuIGZpbmRfZmlyc3Rfbm90X29mIChzdHIuZGF0YSgpLCBw
b3MsIHN0ci5sZW5ndGgoKSk7IH0KICBzaXplX3R5cGUgZmluZF9maXJzdF9ub3Rfb2YgKGNvbnN0
IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3Q7CiAgc2l6ZV90eXBl
IGZpbmRfZmlyc3Rfbm90X29mIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcyA9IDApIGNv
bnN0CiAgICB7IHJldHVybiBmaW5kX2ZpcnN0X25vdF9vZiAocywgcG9zLCB0cmFpdHM6Omxlbmd0
aCAocykpOyB9CiAgc2l6ZV90eXBlIGZpbmRfZmlyc3Rfbm90X29mIChjaGFyVCBjLCBzaXplX3R5
cGUgcG9zID0gMCkgY29uc3Q7CgogIHNpemVfdHlwZSBmaW5kX2xhc3Rfbm90X29mIChjb25zdCBi
YXNpY19zdHJpbmcmIHN0ciwgc2l6ZV90eXBlIHBvcyA9IG5wb3MpIGNvbnN0CiAgICB7IHJldHVy
biBmaW5kX2xhc3Rfbm90X29mIChzdHIuZGF0YSgpLCBwb3MsIHN0ci5sZW5ndGgoKSk7IH0KICBz
aXplX3R5cGUgZmluZF9sYXN0X25vdF9vZiAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3Ms
IHNpemVfdHlwZSBuKSBjb25zdDsKICBzaXplX3R5cGUgZmluZF9sYXN0X25vdF9vZiAoY29uc3Qg
Y2hhclQqIHMsIHNpemVfdHlwZSBwb3MgPSBucG9zKSBjb25zdAogICAgeyByZXR1cm4gZmluZF9s
YXN0X25vdF9vZiAocywgcG9zLCB0cmFpdHM6Omxlbmd0aCAocykpOyB9CiAgc2l6ZV90eXBlIGZp
bmRfbGFzdF9ub3Rfb2YgKGNoYXJUIGMsIHNpemVfdHlwZSBwb3MgPSBucG9zKSBjb25zdDsKCiAg
YmFzaWNfc3RyaW5nIHN1YnN0ciAoc2l6ZV90eXBlIHBvcyA9IDAsIHNpemVfdHlwZSBuID0gbnBv
cykgY29uc3QKICAgIHsgcmV0dXJuIGJhc2ljX3N0cmluZyAoKnRoaXMsIHBvcywgbik7IH0KCiAg
aW50IGNvbXBhcmUgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUgcG9zID0gMCwg
c2l6ZV90eXBlIG4gPSBucG9zKSBjb25zdDsKICAgCiAgaW50IGNvbXBhcmUgKGNvbnN0IGNoYXJU
KiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3Q7CiAgaW50IGNvbXBhcmUgKGNv
bnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3QKICAgIHsgcmV0dXJuIGNvbXBh
cmUgKHMsIHBvcywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQoKICBpdGVyYXRvciBiZWdpbiAoKSB7
IHNlbGZpc2ggKCk7IHJldHVybiAmKCp0aGlzKVswXTsgfQogIGl0ZXJhdG9yIGVuZCAoKSB7IHNl
bGZpc2ggKCk7IHJldHVybiAmKCp0aGlzKVtsZW5ndGggKCldOyB9Cgpwcml2YXRlOgogIGl0ZXJh
dG9yIGliZWdpbiAoKSBjb25zdCB7IHJldHVybiAmKCpyZXAgKCkpWzBdOyB9CiAgaXRlcmF0b3Ig
aWVuZCAoKSBjb25zdCB7IHJldHVybiAmKCpyZXAgKCkpW2xlbmd0aCAoKV07IH0KCnB1YmxpYzoK
ICBjb25zdF9pdGVyYXRvciBiZWdpbiAoKSBjb25zdCB7IHJldHVybiBpYmVnaW4gKCk7IH0KICBj
b25zdF9pdGVyYXRvciBlbmQgKCkgY29uc3QgeyByZXR1cm4gaWVuZCAoKTsgfQoKICByZXZlcnNl
X2l0ZXJhdG9yICAgICAgIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IgKGVuZCAo
KSk7IH0KICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0CiAgICB7IHJldHVy
biBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIChlbmQgKCkpOyB9CiAgcmV2ZXJzZV9pdGVyYXRvciAg
ICAgICByZW5kKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvciAoYmVnaW4gKCkpOyB9CiAgY29u
c3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QKICAgIHsgcmV0dXJuIGNvbnN0X3JldmVy
c2VfaXRlcmF0b3IgKGJlZ2luICgpKTsgfQoKcHJpdmF0ZToKICB2b2lkIGFsbG9jIChzaXplX3R5
cGUgc2l6ZSwgYm9vbCBzYXZlKTsKICBzdGF0aWMgc2l6ZV90eXBlIF9maW5kIChjb25zdCBjaGFy
VCogcHRyLCBjaGFyVCBjLCBzaXplX3R5cGUgeHBvcywgc2l6ZV90eXBlIGxlbik7CiAgaW5saW5l
IGJvb2wgY2hlY2tfcmVhbGxvYyAoc2l6ZV90eXBlIHMpIGNvbnN0OwoKICBzdGF0aWMgUmVwIG5p
bFJlcDsKICBjaGFyVCAqZGF0Owp9OwoKCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJh
aXRzLCBjbGFzcyBBbGxvY2F0b3I+IHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgpiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIGJhc2ljX3N0cmluZyA8Y2hhclQs
IHRyYWl0cywgQWxsb2NhdG9yPjo6CnJlcGxhY2UgKGl0ZXJhdG9yIGkxLCBpdGVyYXRvciBpMiwg
SW5wdXRJdGVyYXRvciBqMSwgSW5wdXRJdGVyYXRvciBqMikKCgoKCgp7CiAgY29uc3Qgc2l6ZV90
eXBlIGxlbiA9IGxlbmd0aCAoKTsKICBzaXplX3R5cGUgcG9zID0gaTEgLSBpYmVnaW4gKCk7CiAg
c2l6ZV90eXBlIG4xID0gaTIgLSBpMTsKICBzaXplX3R5cGUgbjIgPSBqMiAtIGoxOwoKICBkbyB7
IGlmICggcG9zID4gbGVuICkgX19vdXRfb2ZfcmFuZ2UgKCJwb3MgPiBsZW4iKTsgfSB3aGlsZSAo
MCkgOwogIGlmIChuMSA+IGxlbiAtIHBvcykKICAgIG4xID0gbGVuIC0gcG9zOwogIGRvIHsgaWYg
KCBsZW4gLSBuMSA+IG1heF9zaXplICgpIC0gbjIgKSBfX2xlbmd0aF9lcnJvciAoImxlbiAtIG4x
ID4gbWF4X3NpemUgKCkgLSBuMiIpOyB9IHdoaWxlICgwKSA7CiAgc2l6ZV90IG5ld2xlbiA9IGxl
biAtIG4xICsgbjI7CgogIGlmIChjaGVja19yZWFsbG9jIChuZXdsZW4pKQogICAgewogICAgICBS
ZXAgKnAgPSBSZXA6OmNyZWF0ZSAobmV3bGVuKTsKICAgICAgcC0+Y29weSAoMCwgZGF0YSAoKSwg
cG9zKTsKICAgICAgcC0+Y29weSAocG9zICsgbjIsIGRhdGEgKCkgKyBwb3MgKyBuMSwgbGVuIC0g
KHBvcyArIG4xKSk7CiAgICAgIGZvciAoOyBqMSAhPSBqMjsgKytqMSwgKytwb3MpCgl0cmFpdHM6
OmFzc2lnbiAoKCpwKVtwb3NdLCAqajEpOwogICAgICByZXB1cCAocCk7CiAgICB9CiAgZWxzZQog
ICAgewogICAgICByZXAgKCktPm1vdmUgKHBvcyArIG4yLCBkYXRhICgpICsgcG9zICsgbjEsIGxl
biAtIChwb3MgKyBuMSkpOwogICAgICBmb3IgKDsgajEgIT0gajI7ICsrajEsICsrcG9zKQoJdHJh
aXRzOjphc3NpZ24gKCgqcmVwICgpKVtwb3NdLCAqajEpOwogICAgfQogIHJlcCAoKS0+bGVuID0g
bmV3bGVuOwoKICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3Mg
dHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFp
dHMsIEFsbG9jYXRvcj4Kb3BlcmF0b3IrIChjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFp
dHMsIEFsbG9jYXRvcj4mIGxocywKCSAgIGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0
cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxv
Y2F0b3I+IHN0ciAobGhzKTsKICBzdHIuYXBwZW5kIChyaHMpOwogIHJldHVybiBzdHI7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGlu
ZSBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4Kb3BlcmF0b3IrIChjb25z
dCBjaGFyVCogbGhzLCBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRv
cj4mIHJocykKewogIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiBzdHIg
KGxocyk7CiAgc3RyLmFwcGVuZCAocmhzKTsKICByZXR1cm4gc3RyOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYmFzaWNfc3Ry
aW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+Cm9wZXJhdG9yKyAoY2hhclQgbGhzLCBjb25z
dCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIGJhc2lj
X3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiBzdHIgKDEsIGxocyk7CiAgc3RyLmFw
cGVuZCAocmhzKTsKICByZXR1cm4gc3RyOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNz
IHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJh
aXRzLCBBbGxvY2F0b3I+Cm9wZXJhdG9yKyAoY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJh
aXRzLCBBbGxvY2F0b3I+JiBsaHMsIGNvbnN0IGNoYXJUKiByaHMpCnsKICBiYXNpY19zdHJpbmcg
PGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4gc3RyIChsaHMpOwogIHN0ci5hcHBlbmQgKHJocyk7
CiAgcmV0dXJuIHN0cjsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNs
YXNzIEFsbG9jYXRvcj4KaW5saW5lIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2Nh
dG9yPgpvcGVyYXRvcisgKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2Nh
dG9yPiYgbGhzLCBjaGFyVCByaHMpCnsKICBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj4gc3RyIChsaHMpOwogIHN0ci5hcHBlbmQgKDEsIHJocyk7CiAgcmV0dXJuIHN0cjsK
fQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4K
aW5saW5lIGJvb2wKb3BlcmF0b3I9PSAoY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRz
LCBBbGxvY2F0b3I+JiBsaHMsCgkgICAgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRz
LCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKGxocy5jb21wYXJlIChyaHMpID09IDApOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpp
bmxpbmUgYm9vbApvcGVyYXRvcj09IChjb25zdCBjaGFyVCogbGhzLCBjb25zdCBiYXNpY19zdHJp
bmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAocmhzLmNvbXBh
cmUgKGxocykgPT0gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBj
bGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPT0gKGNvbnN0IGJhc2ljX3N0cmlu
ZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgbGhzLCBjb25zdCBjaGFyVCogcmhzKQp7CiAg
cmV0dXJuIChsaHMuY29tcGFyZSAocmhzKSA9PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJU
LCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3IhPSAo
Y29uc3QgY2hhclQqIGxocywgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxv
Y2F0b3I+JiByaHMpCnsKICByZXR1cm4gKHJocy5jb21wYXJlIChsaHMpICE9IDApOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUg
Ym9vbApvcGVyYXRvciE9IChjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9j
YXRvcj4mIGxocywgY29uc3QgY2hhclQqIHJocykKewogIHJldHVybiAobGhzLmNvbXBhcmUgKHJo
cykgIT0gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBB
bGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPCAoY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFy
VCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsCgkgICAgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFy
VCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKGxocy5jb21wYXJlIChyaHMp
IDwgMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxv
Y2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPCAoY29uc3QgY2hhclQqIGxocywgY29uc3QgYmFz
aWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKHJo
cy5jb21wYXJlIChsaHMpID4gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJh
aXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPCAoY29uc3QgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsIGNvbnN0IGNoYXJUKiByaHMp
CnsKICByZXR1cm4gKGxocy5jb21wYXJlIChyaHMpIDwgMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBj
aGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9y
PiAoY29uc3QgY2hhclQqIGxocywgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBB
bGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKHJocy5jb21wYXJlIChsaHMpIDwgMCk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGlu
ZSBib29sCm9wZXJhdG9yPiAoY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxv
Y2F0b3I+JiBsaHMsIGNvbnN0IGNoYXJUKiByaHMpCnsKICByZXR1cm4gKGxocy5jb21wYXJlIChy
aHMpID4gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBB
bGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPD0gKGNvbnN0IGNoYXJUKiBsaHMsIGNvbnN0
IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgcmV0dXJu
IChyaHMuY29tcGFyZSAobGhzKSA+PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFz
cyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I8PSAoY29uc3Qg
YmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsIGNvbnN0IGNoYXJU
KiByaHMpCnsKICByZXR1cm4gKGxocy5jb21wYXJlIChyaHMpIDw9IDApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApv
cGVyYXRvcj49IChjb25zdCBjaGFyVCogbGhzLCBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0
cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAocmhzLmNvbXBhcmUgKGxocykgPD0g
MCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0
b3I+CmlubGluZSBib29sCm9wZXJhdG9yPj0gKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRy
YWl0cywgQWxsb2NhdG9yPiYgbGhzLCBjb25zdCBjaGFyVCogcmhzKQp7CiAgcmV0dXJuIChsaHMu
Y29tcGFyZSAocmhzKSA+PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFp
dHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3IhPSAoY29uc3QgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsCgkgICAgY29uc3QgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKGxocy5j
b21wYXJlIChyaHMpICE9IDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0
cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApvcGVyYXRvcj4gKGNvbnN0IGJhc2ljX3N0
cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgbGhzLAoJICAgY29uc3QgYmFzaWNfc3Ry
aW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKGxocy5jb21w
YXJlIChyaHMpID4gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBj
bGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPD0gKGNvbnN0IGJhc2ljX3N0cmlu
ZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgbGhzLAoJICAgIGNvbnN0IGJhc2ljX3N0cmlu
ZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgcmV0dXJuIChsaHMuY29tcGFy
ZSAocmhzKSA8PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNs
YXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I+PSAoY29uc3QgYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsCgkgICAgY29uc3QgYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKGxocy5jb21wYXJl
IChyaHMpID49IDApOwp9CgpjbGFzcyBpc3RyZWFtOyBjbGFzcyBvc3RyZWFtOwp0ZW1wbGF0ZSA8
Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPiBpc3RyZWFtJgpvcGVy
YXRvcj4+IChpc3RyZWFtJiwgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+
Jik7CnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+
IG9zdHJlYW0mCm9wZXJhdG9yPDwgKG9zdHJlYW0mLCBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJU
LCB0cmFpdHMsIEFsbG9jYXRvcj4mKTsKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFp
dHMsIGNsYXNzIEFsbG9jYXRvcj4gaXN0cmVhbSYKZ2V0bGluZSAoaXN0cmVhbSYsIGJhc2ljX3N0
cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYsIGNoYXJUIGRlbGltID0gJ1xuJyk7Cgp9
ICAKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z
dGQvYmFzdHJpbmcuY2MiIDEgMwogCiAKCiAKIAogCiAKIAoKIAogCiAKIAoKIAogCiAKCiAKIAog
CiAKIAoKIAogCgpleHRlcm4gIkMrKyIgewp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRy
YWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgdm9pZCAqIGJhc2ljX3N0cmluZyA8Y2hhclQs
IHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKb3BlcmF0b3IgbmV3IChzaXplX3Qgcywgc2l6ZV90
IGV4dHJhKQp7CiAgcmV0dXJuIEFsbG9jYXRvcjo6YWxsb2NhdGUocyArIGV4dHJhICogc2l6ZW9m
IChjaGFyVCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3Mg
QWxsb2NhdG9yPgppbmxpbmUgdm9pZCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9j
YXRvcj46OlJlcDo6Cm9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqIHB0cikKewogIEFsbG9jYXRvcjo6
ZGVhbGxvY2F0ZShwdHIsIHNpemVvZihSZXApICsKCQkJcmVpbnRlcnByZXRfY2FzdDxSZXAgKj4o
cHRyKS0+cmVzICoKCQkJc2l6ZW9mIChjaGFyVCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQs
IGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgc2l6ZV90IGJhc2ljX3N0cmlu
ZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKZnJvYl9zaXplIChzaXplX3QgcykK
ewogIHNpemVfdCBpID0gMTY7CiAgd2hpbGUgKGkgPCBzKSBpICo9IDI7CiAgcmV0dXJuIGk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Cmlu
bGluZSBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OlJlcCAqCmJhc2lj
X3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKY3JlYXRlIChzaXplX3Qg
ZXh0cmEpCnsKICBleHRyYSA9IGZyb2Jfc2l6ZSAoZXh0cmEgKyAxKTsKICBSZXAgKnAgPSBuZXcg
KGV4dHJhKSBSZXA7CiAgcC0+cmVzID0gZXh0cmE7CiAgcC0+cmVmID0gMTsKICBwLT5zZWxmaXNo
ID0gZmFsc2U7CiAgcmV0dXJuIHA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJh
aXRzLCBjbGFzcyBBbGxvY2F0b3I+CmNoYXJUICogYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRz
LCBBbGxvY2F0b3I+OjpSZXA6OgpjbG9uZSAoKQp7CiAgUmVwICpwID0gUmVwOjpjcmVhdGUgKGxl
bik7CiAgcC0+Y29weSAoMCwgZGF0YSAoKSwgbGVuKTsKICBwLT5sZW4gPSBsZW47CiAgcmV0dXJu
IHAtPmRhdGEgKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFz
cyBBbGxvY2F0b3I+CmlubGluZSBib29sIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxs
b2NhdG9yPjo6UmVwOjoKZXhjZXNzX3Nsb3AgKHNpemVfdCBzLCBzaXplX3QgcikKewogIHJldHVy
biAyICogKHMgPD0gMTYgPyAxNiA6IHMpIDwgcjsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBj
bGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wgYmFzaWNfc3RyaW5nIDxj
aGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKY2hlY2tfcmVhbGxvYyAoYmFzaWNfc3RyaW5nOjpz
aXplX3R5cGUgcykgY29uc3QKewogIHMgKz0gc2l6ZW9mIChjaGFyVCk7CiAgcmVwICgpLT5zZWxm
aXNoID0gZmFsc2U7CiAgcmV0dXJuIChyZXAgKCktPnJlZiA+IDEKCSAgfHwgcyA+IGNhcGFjaXR5
ICgpCgkgIHx8IFJlcDo6ZXhjZXNzX3Nsb3AgKHMsIGNhcGFjaXR5ICgpKSk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CnZvaWQgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKYWxsb2MgKGJhc2ljX3N0cmluZzo6
c2l6ZV90eXBlIF9fc2l6ZSwgYm9vbCBfX3NhdmUpCnsKICBpZiAoISBjaGVja19yZWFsbG9jIChf
X3NpemUpKQogICAgcmV0dXJuOwoKICBSZXAgKnAgPSBSZXA6OmNyZWF0ZSAoX19zaXplKTsKCiAg
aWYgKF9fc2F2ZSkKICAgIHsKICAgICAgcC0+Y29weSAoMCwgZGF0YSAoKSwgbGVuZ3RoICgpKTsK
ICAgICAgcC0+bGVuID0gbGVuZ3RoICgpOwogICAgfQogIGVsc2UKICAgIHAtPmxlbiA9IDA7Cgog
IHJlcHVwIChwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNz
IEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JgpiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpyZXBsYWNlIChzaXplX3R5cGUg
cG9zMSwgc2l6ZV90eXBlIG4xLAoJIGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUg
cG9zMiwgc2l6ZV90eXBlIG4yKQp7CiAgY29uc3Qgc2l6ZV90IGxlbjIgPSBzdHIubGVuZ3RoICgp
OwoKICBpZiAocG9zMSA9PSAwICYmIG4xID49IGxlbmd0aCAoKSAmJiBwb3MyID09IDAgJiYgbjIg
Pj0gbGVuMikKICAgIHJldHVybiBvcGVyYXRvcj0gKHN0cik7CgogIGRvIHsgaWYgKCBwb3MyID4g
bGVuMiApIF9fb3V0X29mX3JhbmdlICgicG9zMiA+IGxlbjIiKTsgfSB3aGlsZSAoMCkgOwoKICBp
ZiAobjIgPiBsZW4yIC0gcG9zMikKICAgIG4yID0gbGVuMiAtIHBvczI7CgogIHJldHVybiByZXBs
YWNlIChwb3MxLCBuMSwgc3RyLmRhdGEgKCkgKyBwb3MyLCBuMik7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSB2b2lkIGJhc2lj
X3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKY29weSAoc2l6ZV90IHBv
cywgY29uc3QgY2hhclQgKnMsIHNpemVfdCBuKQp7CiAgaWYgKG4pCiAgICB0cmFpdHM6OmNvcHkg
KGRhdGEgKCkgKyBwb3MsIHMsIG4pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRy
YWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgdm9pZCBiYXNpY19zdHJpbmcgPGNoYXJULCB0
cmFpdHMsIEFsbG9jYXRvcj46OlJlcDo6Cm1vdmUgKHNpemVfdCBwb3MsIGNvbnN0IGNoYXJUICpz
LCBzaXplX3QgbikKewogIGlmIChuKQogICAgdHJhaXRzOjptb3ZlIChkYXRhICgpICsgcG9zLCBz
LCBuKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9j
YXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JgpiYXNpY19zdHJp
bmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpyZXBsYWNlIChzaXplX3R5cGUgcG9zLCBz
aXplX3R5cGUgbjEsIGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgbjIpCnsKICBjb25zdCBzaXpl
X3R5cGUgbGVuID0gbGVuZ3RoICgpOwogIGRvIHsgaWYgKCBwb3MgPiBsZW4gKSBfX291dF9vZl9y
YW5nZSAoInBvcyA+IGxlbiIpOyB9IHdoaWxlICgwKSA7CiAgaWYgKG4xID4gbGVuIC0gcG9zKQog
ICAgbjEgPSBsZW4gLSBwb3M7CiAgZG8geyBpZiAoIGxlbiAtIG4xID4gbWF4X3NpemUgKCkgLSBu
MiApIF9fbGVuZ3RoX2Vycm9yICgibGVuIC0gbjEgPiBtYXhfc2l6ZSAoKSAtIG4yIik7IH0gd2hp
bGUgKDApIDsKICBzaXplX3QgbmV3bGVuID0gbGVuIC0gbjEgKyBuMjsKCiAgaWYgKGNoZWNrX3Jl
YWxsb2MgKG5ld2xlbikpCiAgICB7CiAgICAgIFJlcCAqcCA9IFJlcDo6Y3JlYXRlIChuZXdsZW4p
OwogICAgICBwLT5jb3B5ICgwLCBkYXRhICgpLCBwb3MpOwogICAgICBwLT5jb3B5IChwb3MgKyBu
MiwgZGF0YSAoKSArIHBvcyArIG4xLCBsZW4gLSAocG9zICsgbjEpKTsKICAgICAgcC0+Y29weSAo
cG9zLCBzLCBuMik7CiAgICAgIHJlcHVwIChwKTsKICAgIH0KICBlbHNlCiAgICB7CiAgICAgIHJl
cCAoKS0+bW92ZSAocG9zICsgbjIsIGRhdGEgKCkgKyBwb3MgKyBuMSwgbGVuIC0gKHBvcyArIG4x
KSk7CiAgICAgIHJlcCAoKS0+Y29weSAocG9zLCBzLCBuMik7CiAgICB9CiAgcmVwICgpLT5sZW4g
PSBuZXdsZW47CgogIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFz
cyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIHZvaWQgYmFzaWNfc3RyaW5nIDxjaGFy
VCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpSZXA6OgpzZXQgKHNpemVfdCBwb3MsIGNvbnN0IGNoYXJU
IGMsIHNpemVfdCBuKQp7CiAgdHJhaXRzOjpzZXQgIChkYXRhICgpICsgcG9zLCBjLCBuKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFz
aWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBiYXNpY19zdHJpbmcgPGNoYXJU
LCB0cmFpdHMsIEFsbG9jYXRvcj46OgpyZXBsYWNlIChzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUg
bjEsIHNpemVfdHlwZSBuMiwgY2hhclQgYykKewogIGNvbnN0IHNpemVfdCBsZW4gPSBsZW5ndGgg
KCk7CiAgZG8geyBpZiAoIHBvcyA+IGxlbiApIF9fb3V0X29mX3JhbmdlICgicG9zID4gbGVuIik7
IH0gd2hpbGUgKDApIDsKICBpZiAobjEgPiBsZW4gLSBwb3MpCiAgICBuMSA9IGxlbiAtIHBvczsK
ICBkbyB7IGlmICggbGVuIC0gbjEgPiBtYXhfc2l6ZSAoKSAtIG4yICkgX19sZW5ndGhfZXJyb3Ig
KCJsZW4gLSBuMSA+IG1heF9zaXplICgpIC0gbjIiKTsgfSB3aGlsZSAoMCkgOwogIHNpemVfdCBu
ZXdsZW4gPSBsZW4gLSBuMSArIG4yOwoKICBpZiAoY2hlY2tfcmVhbGxvYyAobmV3bGVuKSkKICAg
IHsKICAgICAgUmVwICpwID0gUmVwOjpjcmVhdGUgKG5ld2xlbik7CiAgICAgIHAtPmNvcHkgKDAs
IGRhdGEgKCksIHBvcyk7CiAgICAgIHAtPmNvcHkgKHBvcyArIG4yLCBkYXRhICgpICsgcG9zICsg
bjEsIGxlbiAtIChwb3MgKyBuMSkpOwogICAgICBwLT5zZXQgIChwb3MsIGMsIG4yKTsKICAgICAg
cmVwdXAgKHApOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgcmVwICgpLT5tb3ZlIChwb3MgKyBu
MiwgZGF0YSAoKSArIHBvcyArIG4xLCBsZW4gLSAocG9zICsgbjEpKTsKICAgICAgcmVwICgpLT5z
ZXQgIChwb3MsIGMsIG4yKTsKICAgIH0KICByZXAgKCktPmxlbiA9IG5ld2xlbjsKCiAgcmV0dXJu
ICp0aGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxs
b2NhdG9yPgp2b2lkIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6CnJl
c2l6ZSAoc2l6ZV90eXBlIG4sIGNoYXJUIGMpCnsKICBkbyB7IGlmICggbiA+IG1heF9zaXplICgp
ICkgX19sZW5ndGhfZXJyb3IgKCJuID4gbWF4X3NpemUgKCkiKTsgfSB3aGlsZSAoMCkgOwoKICBp
ZiAobiA+IGxlbmd0aCAoKSkKICAgIGFwcGVuZCAobiAtIGxlbmd0aCAoKSwgYyk7CiAgZWxzZQog
ICAgZXJhc2UgKG4pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xh
c3MgQWxsb2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OnNp
emVfdHlwZQpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46Ogpjb3B5IChj
aGFyVCogcywgc2l6ZV90eXBlIG4sIHNpemVfdHlwZSBwb3MpIGNvbnN0CnsKICBkbyB7IGlmICgg
cG9zID4gbGVuZ3RoICgpICkgX19vdXRfb2ZfcmFuZ2UgKCJwb3MgPiBsZW5ndGggKCkiKTsgfSB3
aGlsZSAoMCkgOwoKICBpZiAobiA+IGxlbmd0aCAoKSAtIHBvcykKICAgIG4gPSBsZW5ndGggKCkg
LSBwb3M7CgogIHRyYWl0czo6Y29weSAocywgZGF0YSAoKSArIHBvcywgbik7CiAgcmV0dXJuIG47
Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+
CmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2lj
X3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6CmZpbmQgKGNvbnN0IGNoYXJUKiBz
LCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIHNpemVfdCB4cG9zID0gcG9z
OwogIGZvciAoOyB4cG9zICsgbiA8PSBsZW5ndGggKCk7ICsreHBvcykKICAgIGlmICh0cmFpdHM6
OmVxIChkYXRhICgpIFt4cG9zXSwgKnMpCgkmJiB0cmFpdHM6OmNvbXBhcmUgKGRhdGEgKCkgKyB4
cG9zLCBzLCBuKSA9PSAwKQogICAgICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVt
cGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5l
IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2lj
X3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6Cl9maW5kIChjb25zdCBjaGFyVCog
cHRyLCBjaGFyVCBjLCBzaXplX3R5cGUgeHBvcywgc2l6ZV90eXBlIGxlbikKewogIGZvciAoOyB4
cG9zIDwgbGVuOyArK3hwb3MpCiAgICBpZiAodHJhaXRzOjplcSAocHRyIFt4cG9zXSwgYykpCiAg
ICAgIHJldHVybiB4cG9zOwogIHJldHVybiBucG9zOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQs
IGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFp
dHMsIEFsbG9jYXRvcj46OnNpemVfdHlwZQpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj46OgpmaW5kIChjaGFyVCBjLCBzaXplX3R5cGUgcG9zKSBjb25zdAp7CiAgcmV0dXJu
IF9maW5kIChkYXRhICgpLCBjLCBwb3MsIGxlbmd0aCAoKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBj
aGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmJhc2ljX3N0cmluZyA8Y2hhclQs
IHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0
cywgQWxsb2NhdG9yPjo6CnJmaW5kIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcywgc2l6
ZV90eXBlIG4pIGNvbnN0CnsKICBpZiAobiA+IGxlbmd0aCAoKSkKICAgIHJldHVybiBucG9zOwoK
ICBzaXplX3QgeHBvcyA9IGxlbmd0aCAoKSAtIG47CiAgaWYgKHhwb3MgPiBwb3MpCiAgICB4cG9z
ID0gcG9zOwoKICBmb3IgKCsreHBvczsgeHBvcy0tID4gMDsgKQogICAgaWYgKHRyYWl0czo6ZXEg
KGRhdGEgKCkgW3hwb3NdLCAqcykKCSYmIHRyYWl0czo6Y29tcGFyZSAoZGF0YSAoKSArIHhwb3Ms
IHMsIG4pID09IDApCiAgICAgIHJldHVybiB4cG9zOwogIHJldHVybiBucG9zOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19zdHJp
bmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OnNpemVfdHlwZQpiYXNpY19zdHJpbmcgPGNo
YXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpyZmluZCAoY2hhclQgYywgc2l6ZV90eXBlIHBvcykg
Y29uc3QKewogIGlmICgxID4gbGVuZ3RoICgpKQogICAgcmV0dXJuIG5wb3M7CgogIHNpemVfdCB4
cG9zID0gbGVuZ3RoICgpIC0gMTsKICBpZiAoeHBvcyA+IHBvcykKICAgIHhwb3MgPSBwb3M7Cgog
IGZvciAoKyt4cG9zOyB4cG9zLS0gPiAwOyApCiAgICBpZiAodHJhaXRzOjplcSAoZGF0YSAoKSBb
eHBvc10sIGMpKQogICAgICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUg
PGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFy
VCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKZmluZF9maXJzdF9vZiAoY29uc3QgY2hhclQqIHMsIHNp
emVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdAp7CiAgc2l6ZV90IHhwb3MgPSBwb3M7CiAg
Zm9yICg7IHhwb3MgPCBsZW5ndGggKCk7ICsreHBvcykKICAgIGlmIChfZmluZCAocywgZGF0YSAo
KSBbeHBvc10sIDAsIG4pICE9IG5wb3MpCiAgICAgIHJldHVybiB4cG9zOwogIHJldHVybiBucG9z
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9y
PgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OnNpemVfdHlwZQpiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpmaW5kX2xhc3Rfb2YgKGNvbnN0
IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIGlmIChsZW5n
dGgoKSA9PSAwKQogICAgcmV0dXJuIG5wb3M7CiAgc2l6ZV90IHhwb3MgPSBsZW5ndGggKCkgLSAx
OwogIGlmICh4cG9zID4gcG9zKQogICAgeHBvcyA9IHBvczsKICBmb3IgKCsreHBvczsgeHBvcy0t
ID4gMDspCiAgICBpZiAoX2ZpbmQgKHMsIGRhdGEgKCkgW3hwb3NdLCAwLCBuKSAhPSBucG9zKQog
ICAgICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJU
LCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJh
aXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBB
bGxvY2F0b3I+OjoKZmluZF9maXJzdF9ub3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUg
cG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIHNpemVfdCB4cG9zID0gcG9zOwogIGZvciAoOyB4
cG9zIDwgbGVuZ3RoICgpOyArK3hwb3MpCiAgICBpZiAoX2ZpbmQgKHMsIGRhdGEgKCkgW3hwb3Nd
LCAwLCBuKSA9PSBucG9zKQogICAgICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVt
cGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKZmluZF9maXJzdF9ub3Rfb2YgKGNoYXJUIGMs
IHNpemVfdHlwZSBwb3MpIGNvbnN0CnsKICBzaXplX3QgeHBvcyA9IHBvczsKICBmb3IgKDsgeHBv
cyA8IGxlbmd0aCAoKTsgKyt4cG9zKQogICAgaWYgKHRyYWl0czo6bmUgKGRhdGEgKCkgW3hwb3Nd
LCBjKSkKICAgICAgcmV0dXJuIHhwb3M7CiAgcmV0dXJuIG5wb3M7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmJhc2ljX3N0cmluZyA8Y2hh
clQsIHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0cmluZyA8Y2hhclQsIHRy
YWl0cywgQWxsb2NhdG9yPjo6CmZpbmRfbGFzdF9ub3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXpl
X3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIGlmIChsZW5ndGgoKSA9PSAwKQogICAg
cmV0dXJuIG5wb3M7CiAgc2l6ZV90IHhwb3MgPSBsZW5ndGggKCkgLSAxOwogIGlmICh4cG9zID4g
cG9zKQogICAgeHBvcyA9IHBvczsKICBmb3IgKCsreHBvczsgeHBvcy0tID4gMDspCiAgICBpZiAo
X2ZpbmQgKHMsIGRhdGEgKCkgW3hwb3NdLCAwLCBuKSA9PSBucG9zKQogICAgICByZXR1cm4geHBv
czsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMs
IGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+
OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKZmlu
ZF9sYXN0X25vdF9vZiAoY2hhclQgYywgc2l6ZV90eXBlIHBvcykgY29uc3QKewogIGlmIChsZW5n
dGgoKSA9PSAwKQogICAgcmV0dXJuIG5wb3M7CiAgc2l6ZV90IHhwb3MgPSBsZW5ndGggKCkgLSAx
OwogIGlmICh4cG9zID4gcG9zKQogICAgeHBvcyA9IHBvczsKICBmb3IgKCsreHBvczsgeHBvcy0t
ID4gMDspCiAgICBpZiAodHJhaXRzOjpuZSAoZGF0YSAoKSBbeHBvc10sIGMpKQogICAgICByZXR1
cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0
cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW50IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywg
QWxsb2NhdG9yPjo6CmNvbXBhcmUgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUg
cG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIGRvIHsgaWYgKCBwb3MgPiBsZW5ndGggKCkgKSBf
X291dF9vZl9yYW5nZSAoInBvcyA+IGxlbmd0aCAoKSIpOyB9IHdoaWxlICgwKSA7CgogIHNpemVf
dCBybGVuID0gbGVuZ3RoICgpIC0gcG9zOwogIGlmIChybGVuID4gbikKICAgIHJsZW4gPSBuOwog
IGlmIChybGVuID4gc3RyLmxlbmd0aCAoKSkKICAgIHJsZW4gPSBzdHIubGVuZ3RoICgpOwogIGlu
dCByID0gdHJhaXRzOjpjb21wYXJlIChkYXRhICgpICsgcG9zLCBzdHIuZGF0YSAoKSwgcmxlbik7
CiAgaWYgKHIgIT0gMCkKICAgIHJldHVybiByOwogIGlmIChybGVuID09IG4pCiAgICByZXR1cm4g
MDsKICByZXR1cm4gKGxlbmd0aCAoKSAtIHBvcykgLSBzdHIubGVuZ3RoICgpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbnQgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKY29tcGFyZSAoY29uc3QgY2hhclQq
IHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdAp7CiAgZG8geyBpZiAoIHBvcyA+
IGxlbmd0aCAoKSApIF9fb3V0X29mX3JhbmdlICgicG9zID4gbGVuZ3RoICgpIik7IH0gd2hpbGUg
KDApIDsKCiAgc2l6ZV90IHJsZW4gPSBsZW5ndGggKCkgLSBwb3M7CiAgaWYgKHJsZW4gPiBuKQog
ICAgcmxlbiA9IG47CiAgaW50IHIgPSB0cmFpdHM6OmNvbXBhcmUgKGRhdGEgKCkgKyBwb3MsIHMs
IHJsZW4pOwogIGlmIChyICE9IDApCiAgICByZXR1cm4gcjsKICByZXR1cm4gKGxlbmd0aCAoKSAt
IHBvcykgLSBuOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFz
cyBBbGxvY2F0b3I+CmlzdHJlYW0gJgpvcGVyYXRvcj4+IChpc3RyZWFtICZpcywgYmFzaWNfc3Ry
aW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+ICZzKQp7CiAgaW50IHcgPSBpcy53aWR0aCAo
MCk7CiAgaWYgKGlzLmlwZngwICgpKQogICAgewogICAgICByZWdpc3RlciBzdHJlYW1idWYgKnNi
ID0gaXMucmRidWYgKCk7CiAgICAgIHMucmVzaXplICgwKTsKICAgICAgd2hpbGUgKDEpCgl7Cgkg
IGludCBjaCA9IHNiLT5zYnVtcGMgKCk7CgkgIGlmIChjaCA9PSAoLTEpICkKCSAgICB7CgkgICAg
ICBpcy5zZXRzdGF0ZSAoaW9zOjplb2ZiaXQpOwoJICAgICAgYnJlYWs7CgkgICAgfQoJICBlbHNl
IGlmICh0cmFpdHM6OmlzX2RlbCAoY2gpKQoJICAgIHsKCSAgICAgIHNiLT5zdW5nZXRjICgpOwoJ
ICAgICAgYnJlYWs7CgkgICAgfQoJICBzICs9IHN0YXRpY19jYXN0PGNoYXJUPiAoY2gpOwoJICBp
ZiAoLS13ID09IDEpCgkgICAgYnJlYWs7Cgl9CiAgICB9CgogIGlzLmlzZnggKCk7CiAgaWYgKHMu
bGVuZ3RoICgpID09IDApCiAgICBpcy5zZXRzdGF0ZSAoaW9zOjpmYWlsYml0KTsKCiAgcmV0dXJu
IGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2Nh
dG9yPgpvc3RyZWFtICYKb3BlcmF0b3I8PCAob3N0cmVhbSAmbywgY29uc3QgYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQp7CiAgcmV0dXJuIG8ud3JpdGUgKHMuZGF0
YSAoKSwgcy5sZW5ndGggKCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0
cywgY2xhc3MgQWxsb2NhdG9yPgppc3RyZWFtJgpnZXRsaW5lIChpc3RyZWFtICZpcywgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzLCBjaGFyVCBkZWxpbSkKewogIGlm
IChpcy5pcGZ4MSAoKSkKICAgIHsKICAgICAgc2l6ZV90ICAgY291bnQgPSAwOwogICAgICBzdHJl
YW1idWYgKnNiID0gaXMucmRidWYgKCk7CiAgICAgIHMucmVzaXplICgwKTsKCiAgICAgIHdoaWxl
ICgxKQoJewoJICBpbnQgY2ggPSBzYi0+c2J1bXBjICgpOwoJICBpZiAoY2ggPT0gKC0xKSApCgkg
ICAgewoJICAgICAgaXMuc2V0c3RhdGUgKGNvdW50ID09IDAKCQkJICAgPyAoaW9zOjpmYWlsYml0
fGlvczo6ZW9mYml0KQoJCQkgICA6IGlvczo6ZW9mYml0KTsKCSAgICAgIGJyZWFrOwoJICAgIH0K
CgkgICsrY291bnQ7CgoJICBpZiAoY2ggPT0gZGVsaW0pCgkgICAgYnJlYWs7CgoJICBzICs9IHN0
YXRpY19jYXN0PGNoYXJUPiAoY2gpOwoKCSAgaWYgKHMubGVuZ3RoICgpID09IHMubnBvcyAtIDEp
CgkgICAgewoJICAgICAgaXMuc2V0c3RhdGUgKGlvczo6ZmFpbGJpdCk7CgkgICAgICBicmVhazsK
CSAgICB9Cgl9CiAgICB9CgogICAKICAgCiAgaXMuaXNmeCAoKTsKCiAgcmV0dXJuIGlzOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OlJlcApiYXNpY19zdHJpbmc8Y2hh
clQsIHRyYWl0cywgQWxsb2NhdG9yPjo6bmlsUmVwID0geyAwLCAwLCAxLCBmYWxzZSB9OwoKdGVt
cGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KY29uc3Qg
YmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpucG9zOwoKfSAgCiMgNjU1ICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0ZC9iYXN0cmluZy5o
IiAyIDMKCgoKIyA2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0cmluZyIgMiAzCgoKZXh0ZXJuICJDKysiIHsKdHlwZWRlZiBiYXNpY19zdHJpbmcgPGNo
YXI+IHN0cmluZzsKIAp9ICAKCgojIDc2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovYmxpdHouaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiAKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCiNkZWZpbmUgX1NURElPX0gJMQoKCmV4dGVybiAiQyIgeyAK
CiNkZWZpbmUgX19uZWVkX3NpemVfdAojZGVmaW5lIF9fbmVlZF9OVUxMCiMgMSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgojdW5kZWYgCV9fbmVlZF9zaXplX3QKCgoKIAoKCgoK
IAoKCiMgMjY5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoK
CgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRk
ZWYuaCIgMwoKCgoKIAoKCiN1bmRlZiBOVUxMCQkKCiNkZWZpbmUgTlVMTCBfX251bGwKCgoKCiN1
bmRlZiAJX19uZWVkX05VTEwKCgoKIAoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDIgMwoKCgojZGVmaW5lIF9fbmVlZF9fX3ZhX2xpc3QKCgoKCgoKCgoKCiAKdHlwZWRlZiBzdHJ1
Y3QgX0lPX0ZJTEUgRklMRTsKCiNkZWZpbmUgX19GSUxFX2RlZmluZWQJMQoKCgoKI2RlZmluZSBf
U1RESU9fVVNFU19JT1NUUkVBTQoKCgogCgp0eXBlZGVmIF9fb2ZmX3QgIGZwb3NfdDsKCgoKCgoK
CiAKI2RlZmluZSBfSU9GQkYgMCAJCQojZGVmaW5lIF9JT0xCRiAxCQkKI2RlZmluZSBfSU9OQkYg
MgkJCgoKIAoKI2RlZmluZSBCVUZTSVogX0lPX0JVRlNJWgoKCgogCgoKCgoKCiAKCiNkZWZpbmUg
U0VFS19TRVQJMAkKI2RlZmluZSBTRUVLX0NVUgkxCQojZGVmaW5lIFNFRUtfRU5ECTIJCgoKCiAK
I2RlZmluZSBQX3RtcGRpcgkiL3RtcCIKCgoKIAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RkaW9fbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIExfdG1w
bmFtIDIwCiNkZWZpbmUgVE1QX01BWCAyMzgzMjgKI2RlZmluZSBGSUxFTkFNRV9NQVggNDA5NSAK
CgojZGVmaW5lIExfY3Rlcm1pZCA5CiNkZWZpbmUgTF9jdXNlcmlkIDkKCgoKCgojZGVmaW5lIEZP
UEVOX01BWCAyNTYgCgojIDExMCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgogCmV4dGVy
biBGSUxFICpzdGRpbjsJCSAKZXh0ZXJuIEZJTEUgKnN0ZG91dDsJCSAKZXh0ZXJuIEZJTEUgKnN0
ZGVycjsJCSAKIAojZGVmaW5lIHN0ZGluIHN0ZGluCiNkZWZpbmUgc3Rkb3V0IHN0ZG91dAojZGVm
aW5lIHN0ZGVyciBzdGRlcnIKCgogCmV4dGVybiBpbnQgcmVtb3ZlICAoX19jb25zdCBjaGFyICpf
X2ZpbGVuYW1lKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHJlbmFtZSAgKF9fY29uc3QgY2hh
ciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBG
SUxFICp0bXBmaWxlICAodm9pZCkgIHRocm93ICgpICA7CgoKCgoKCgoKCgogCmV4dGVybiBjaGFy
ICp0bXBuYW0gIChjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBjaGFyICp0bXBu
YW1fciAgKGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKCgogCgoKCgoKCmV4dGVybiBjaGFyICp0
ZW1wbmFtICAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkgIHRocm93
ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmY2xvc2UgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgp
ICA7CiAKZXh0ZXJuIGludCBmZmx1c2ggIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoK
IApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkg
IDsKCgoKCgoKCgoKIApleHRlcm4gRklMRSAqZm9wZW4gIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19maWxlbmFtZSwKCQkJIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSAgdGhy
b3cgKCkgIDsKIApleHRlcm4gRklMRSAqZnJlb3BlbiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2ZpbGVuYW1lLAoJCQkgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKCQkJ
ICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgIHRocm93ICgpICA7CiMgMjAxICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwoKCgoKCgoKCgoKIApleHRlcm4gRklMRSAqZmRvcGVuICAoaW50IF9f
ZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgIHRocm93ICgpICA7CgoKIyAyMjcgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzCgoKCiAKCmV4dGVybiB2b2lkIHNldGJ1ZiAgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpICB0aHJvdyAoKSAgOwogCgoKZXh0
ZXJuIGludCBzZXR2YnVmICAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0
cmljdCBfX2J1ZiwKCQkJIGludCBfX21vZGVzLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgog
CgpleHRlcm4gdm9pZCBzZXRidWZmZXIgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFy
ICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkgICAgc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7Cgog
CmV4dGVybiB2b2lkIHNldGxpbmVidWYgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoK
CiAKZXh0ZXJuIGludCBmcHJpbnRmICAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKCQkJIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSAgdGhyb3cgKCkgIDsKIApleHRl
cm4gaW50IHByaW50ZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSAg
dGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHNwcmludGYgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywK
CQkJIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSAgdGhyb3cgKCkgIDsK
CiAKZXh0ZXJuIGludCB2ZnByaW50ZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zLAoJCQkgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICBfX2dudWNfdmFfbGlzdCAgX19hcmcp
ICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgdnByaW50ZiAgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwKCQkJIF9fZ251Y192YV9saXN0ICBfX2FyZykgIHRocm93ICgpICA7CiAK
ZXh0ZXJuIGludCB2c3ByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJCQkgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICB0
aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBzbnByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBzaXplX3QgX19tYXhsZW4sCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCAuLi4pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IF9fdnNucHJpbnRmICAoY2hhciAqX19yZXN0cmlj
dCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsCgkJCSAgICAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgdGhyb3cgKCkgIAogICAg
IF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4g
aW50IHZzbnByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCgkJ
CSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICAgX19nbnVjX3ZhX2xp
c3QgIF9fYXJnKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3ByaW50Zl9fLCAzLCAwKSkpOwoKCiMgMzA2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgog
CmV4dGVybiBpbnQgZnNjYW5mICAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKCQkJX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICB0aHJvdyAoKSAgOwogCmV4dGVybiBp
bnQgc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgIHRocm93
ICgpICA7CiAKZXh0ZXJuIGludCBzc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z
LAoJCQlfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgIHRocm93ICgpICA7
CgojIDMzNCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKIApleHRlcm4gaW50IGZnZXRjICAo
RklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGdldGMgIChGSUxFICpfX3N0
cmVhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgZ2V0Y2hhciAgKHZvaWQpICB0aHJvdyAo
KSAgOwoKIAoKI2RlZmluZSBnZXRjKF9mcCkgX0lPX2dldGMgKF9mcCkKCgogCmV4dGVybiBpbnQg
Z2V0Y191bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBn
ZXRjaGFyX3VubG9ja2VkICAodm9pZCkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmZ2V0
Y191bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50
IGZwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50
IHB1dGMgIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBp
bnQgcHV0Y2hhciAgKGludCBfX2MpICB0aHJvdyAoKSAgOwoKIAoKI2RlZmluZSBwdXRjKF9jaCwg
X2ZwKSBfSU9fcHV0YyAoX2NoLCBfZnApCgoKIApleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkICAo
aW50IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgcHV0
Y191bmxvY2tlZCAgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJu
IGludCBwdXRjaGFyX3VubG9ja2VkICAoaW50IF9fYykgIHRocm93ICgpICA7CgoKCgogCmV4dGVy
biBpbnQgZ2V0dyAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBw
dXR3ICAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBj
aGFyICpmZ2V0cyAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLAoJCQkgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCgoKCgogCgpleHRlcm4gY2hhciAqZ2V0
cyAgKGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKIyA0MjQgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzCgoKCiAKZXh0ZXJuIGludCBmcHV0cyAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
CgkJICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoKCgoK
IApleHRlcm4gaW50IHB1dHMgIChfX2NvbnN0IGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKIApl
eHRlcm4gaW50IHVuZ2V0YyAgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsK
CgogCmV4dGVybiBzaXplX3QgZnJlYWQgICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3Qg
X19zaXplLAoJCQkgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJv
dyAoKSAgOwogCmV4dGVybiBzaXplX3QgZndyaXRlICAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0
IF9fcHRyLCBzaXplX3QgX19zaXplLAoJCQkgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0
IF9fcykgIHRocm93ICgpICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICAodm9p
ZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJCSAgIHNpemVfdCBfX24sIEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gc2l6ZV90IGZ3cml0
ZV91bmxvY2tlZCAgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwKCQkJCSAgICBzaXpl
X3QgX19zaXplLCBzaXplX3QgX19uLAoJCQkJICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p
ICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgZnNlZWsgIChGSUxFICpfX3N0cmVhbSwgbG9u
ZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGxvbmcgaW50
IGZ0ZWxsICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiB2b2lkIHJld2lu
ZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCmV4dGVybiBpbnQgZmdldHBvcyAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0s
CgkJCSBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQg
ZnNldHBvcyAgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3NfdCAqX19wb3MpICB0aHJvdyAo
KSAgOwojIDUyMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgojIDUzMyAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDMKCgogCmV4dGVybiB2b2lkIGNsZWFyZXJyICAoRklMRSAqX19zdHJlYW0pICB0
aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgZmVvZiAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkg
IDsKIApleHRlcm4gaW50IGZlcnJvciAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgog
CmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAo
KSAgOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgp
ICA7CmV4dGVybiBpbnQgZmVycm9yX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAo
KSAgOwoKCgogCmV4dGVybiB2b2lkIHBlcnJvciAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cg
KCkgIDsKCiAKCgpleHRlcm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2Nv
bnN0IHN5c19lcnJsaXN0W107CgoKCgoKCgoKIApleHRlcm4gaW50IGZpbGVubyAgKEZJTEUgKl9f
c3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAgKEZJ
TEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKCgogCmV4dGVybiBGSUxFICpwb3BlbiAgKF9f
Y29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpICB0aHJvdyAoKSAg
OwoKIApleHRlcm4gaW50IHBjbG9zZSAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoK
CiAKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgIChjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCgoKCgoK
CgojIDYwNyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKCiAKCiAKZXh0ZXJuIHZvaWQgZmxv
Y2tmaWxlICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBmdHJ5
bG9ja2ZpbGUgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lkIGZ1
bmxvY2tmaWxlICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKIAoKCgoK
Cn0gCgoKCgojIDc3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYmxp
dHouaCIgMgoKCgogIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1
LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvaW9zdHJlYW0iIDEgMwogCiAKCgojZGVmaW5lIF9fSU9TVFJFQU1fXwoKCiMgODAg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAyCgogIAoj
IDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaW9tYW5p
cCIgMSAzCiAKIAoKCiNkZWZpbmUgX19JT01BTklQX18KIyAxICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUu
My8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2lvbWFuaXAuaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgojZGVmaW5lIF9JT01BTklQX0gKCgoKZXh0
ZXJuICJDKysiIHsKIAogCiAKCiAKIAogCiAKdGVtcGxhdGU8Y2xhc3MgVFA+IGNsYXNzIHNtYW5p
cDsgIAoKdGVtcGxhdGU8Y2xhc3MgVFA+IGNsYXNzIHNhcHAgewogICAgaW9zJiAoKl9mKShpb3Mm
LCBUUCk7CnB1YmxpYzogCiAgICBzYXBwKGlvcyYgKCpmKShpb3MmLCBUUCkpIDogX2YoZikge30K
ICAgICAKICAgIHNtYW5pcDxUUD4gb3BlcmF0b3IoKShUUCBhKSAKICAgICAgeyByZXR1cm4gc21h
bmlwPFRQPihfZiwgYSk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFRQPgppbmxpbmUgaXN0cmVhbSYg
b3BlcmF0b3I+Pihpc3RyZWFtJiBpLCBjb25zdCBzbWFuaXA8VFA+JiBtKTsKdGVtcGxhdGU8Y2xh
c3MgVFA+CmlubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIG8sIGNvbnN0IHNtYW5p
cDxUUD4mIG0pOwoKdGVtcGxhdGUgPGNsYXNzIFRQPiBjbGFzcyBzbWFuaXAgewogICAgaW9zJiAo
Kl9mKShpb3MmLCBUUCk7CiAgICBUUCBfYTsKcHVibGljOgogICAgc21hbmlwKGlvcyYgKCpmKShp
b3MmLCBUUCksIFRQIGEpIDogX2YoZiksIF9hKGEpIHt9CiAgICAgCiAgICBmcmllbmQgCiAgICAg
IGlzdHJlYW0mIG9wZXJhdG9yPj4gPD4oaXN0cmVhbSYgaSwgY29uc3Qgc21hbmlwPFRQPiYgbSk7
CiAgICBmcmllbmQKICAgICAgb3N0cmVhbSYgb3BlcmF0b3I8PCA8Pihvc3RyZWFtJiBvLCBjb25z
dCBzbWFuaXA8VFA+JiBtKTsKfTsKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiB0ZW1wbGF0ZSBjbGFz
cyBzbWFuaXA8aW50PjsKX19leHRlbnNpb25fXyBleHRlcm4gdGVtcGxhdGUgY2xhc3Mgc21hbmlw
PGlvczo6Zm10ZmxhZ3M+OwoKCnRlbXBsYXRlPGNsYXNzIFRQPgppbmxpbmUgaXN0cmVhbSYgb3Bl
cmF0b3I+Pihpc3RyZWFtJiBpLCBjb25zdCBzbWFuaXA8VFA+JiBtKQp7ICgqbS5fZikoaSwgbS5f
YSk7IHJldHVybiBpOyB9Cgp0ZW1wbGF0ZTxjbGFzcyBUUD4KaW5saW5lIG9zdHJlYW0mIG9wZXJh
dG9yPDwob3N0cmVhbSYgbywgY29uc3Qgc21hbmlwPFRQPiYgbSkKeyAoKm0uX2YpKG8sIG0uX2Ep
OyByZXR1cm4gbzt9CgoKX19leHRlbnNpb25fXyBleHRlcm4gCnRlbXBsYXRlIGlzdHJlYW0mIG9w
ZXJhdG9yPj4oaXN0cmVhbSYsIGNvbnN0IHNtYW5pcDxpbnQ+Jik7Cl9fZXh0ZW5zaW9uX18gZXh0
ZXJuIAp0ZW1wbGF0ZSBpc3RyZWFtJiBvcGVyYXRvcj4+KGlzdHJlYW0mLCBjb25zdCBzbWFuaXA8
aW9zOjpmbXRmbGFncz4mKTsKX19leHRlbnNpb25fXyBleHRlcm4gCnRlbXBsYXRlIG9zdHJlYW0m
IG9wZXJhdG9yPDwob3N0cmVhbSYsIGNvbnN0IHNtYW5pcDxpbnQ+Jik7Cl9fZXh0ZW5zaW9uX18g
ZXh0ZXJuIAp0ZW1wbGF0ZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mLCBjb25zdCBzbWFu
aXA8aW9zOjpmbXRmbGFncz4mKTsKCgogCiAKIAogCnRlbXBsYXRlPGNsYXNzIFRQPiBjbGFzcyBp
bWFuaXA7IAoKdGVtcGxhdGU8Y2xhc3MgVFA+IGNsYXNzIGlhcHAgewogICAgaXN0cmVhbSYgKCpf
ZikoaXN0cmVhbSYsIFRQKTsKcHVibGljOiAKICAgIGlhcHAoaXN0cmVhbSYgKCpmKShpc3RyZWFt
JixUUCkpIDogX2YoZikge30KICAgICAKICAgIGltYW5pcDxUUD4gb3BlcmF0b3IoKShUUCBhKQog
ICAgICAgeyByZXR1cm4gaW1hbmlwPFRQPihfZiwgYSk7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBU
UD4KaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYsIGNvbnN0IGltYW5pcDxUUD4m
KTsKCnRlbXBsYXRlIDxjbGFzcyBUUD4gY2xhc3MgaW1hbmlwIHsKICAgIGlzdHJlYW0mICgqX2Yp
KGlzdHJlYW0mLCBUUCk7CiAgICBUUCBfYTsKcHVibGljOgogICAgaW1hbmlwKGlzdHJlYW0mICgq
ZikoaXN0cmVhbSYsIFRQKSwgVFAgYSkgOiBfZihmKSwgX2EoYSkge30KICAgICAKICAgIGZyaWVu
ZAogICAgICBpc3RyZWFtJiBvcGVyYXRvcj4+IDw+KGlzdHJlYW0mIGksIGNvbnN0IGltYW5pcDxU
UD4mIG0pOwp9OwoKdGVtcGxhdGUgPGNsYXNzIFRQPgppbmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+
Pihpc3RyZWFtJiBpLCBjb25zdCBpbWFuaXA8VFA+JiBtKQp7IHJldHVybiAoKm0uX2YpKCBpLCBt
Ll9hKTsgfQoKIAogCiAKIAp0ZW1wbGF0ZTxjbGFzcyBUUD4gY2xhc3Mgb21hbmlwOyAKCnRlbXBs
YXRlPGNsYXNzIFRQPiBjbGFzcyBvYXBwIHsKICAgIG9zdHJlYW0mICgqX2YpKG9zdHJlYW0mLCBU
UCk7CnB1YmxpYzogCiAgICBvYXBwKG9zdHJlYW0mICgqZikob3N0cmVhbSYsVFApKSA6IF9mKGYp
IHt9CiAgICAgCiAgICBvbWFuaXA8VFA+IG9wZXJhdG9yKCkoVFAgYSkKICAgICAgeyByZXR1cm4g
b21hbmlwPFRQPihfZiwgYSk7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBUUD4KaW5saW5lIG9zdHJl
YW0mIG9wZXJhdG9yPDwob3N0cmVhbSYsIGNvbnN0IG9tYW5pcDxUUD4mKTsKCnRlbXBsYXRlIDxj
bGFzcyBUUD4gY2xhc3Mgb21hbmlwIHsKICAgIG9zdHJlYW0mICgqX2YpKG9zdHJlYW0mLCBUUCk7
CiAgICBUUCBfYTsKcHVibGljOgogICAgb21hbmlwKG9zdHJlYW0mICgqZikob3N0cmVhbSYsIFRQ
KSwgVFAgYSkgOiBfZihmKSwgX2EoYSkge30KICAgICAKICAgIGZyaWVuZAogICAgICBvc3RyZWFt
JiBvcGVyYXRvcjw8IDw+KG9zdHJlYW0mIG8sIGNvbnN0IG9tYW5pcDxUUD4mIG0pOwp9OwoKdGVt
cGxhdGUgPGNsYXNzIFRQPgppbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvLCBj
b25zdCBvbWFuaXA8VFA+JiBtKQp7IHJldHVybiAoKm0uX2YpKG8sIG0uX2EpOyB9CgogCiAKIAoK
IAogCiAKIAojZGVmaW5lIF9fREVGSU5FX0lPTUFOSVBfRk4xKHR5cGUscGFyYW0sZnVuY3Rpb24p
IGV4dGVybiBpb3MmIF9faW9tYW5pcF8jI2Z1bmN0aW9uIChpb3MmLCBwYXJhbSk7IGlubGluZSB0
eXBlPHBhcmFtPiBmdW5jdGlvbiAocGFyYW0gbikgeyByZXR1cm4gdHlwZTxwYXJhbT4gKF9faW9t
YW5pcF8jI2Z1bmN0aW9uLCBuKTsgfQoKCgoKZXh0ZXJuIGlvcyYgX19pb21hbmlwX3NldGJhc2Ug
IChpb3MmLCAgIGludCApOyBpbmxpbmUgICBzbWFuaXAgPCAgaW50ID4gICBzZXRiYXNlICAoICBp
bnQgIG4pIHsgcmV0dXJuICAgc21hbmlwIDwgIGludCA+IChfX2lvbWFuaXBfc2V0YmFzZSAsIG4p
OyB9IApleHRlcm4gaW9zJiBfX2lvbWFuaXBfc2V0ZmlsbCAgKGlvcyYsICAgaW50ICk7IGlubGlu
ZSAgIHNtYW5pcCA8ICBpbnQgPiAgIHNldGZpbGwgICggIGludCAgbikgeyByZXR1cm4gICBzbWFu
aXAgPCAgaW50ID4gKF9faW9tYW5pcF9zZXRmaWxsICwgbik7IH0gCmV4dGVybiBpb3MmIF9faW9t
YW5pcF9zZXRwcmVjaXNpb24gIChpb3MmLCAgIGludCApOyBpbmxpbmUgICBzbWFuaXAgPCAgaW50
ID4gICBzZXRwcmVjaXNpb24gICggIGludCAgbikgeyByZXR1cm4gICBzbWFuaXAgPCAgaW50ID4g
KF9faW9tYW5pcF9zZXRwcmVjaXNpb24gLCBuKTsgfSAKZXh0ZXJuIGlvcyYgX19pb21hbmlwX3Nl
dHcgIChpb3MmLCAgIGludCApOyBpbmxpbmUgICBzbWFuaXAgPCAgaW50ID4gICBzZXR3ICAoICBp
bnQgIG4pIHsgcmV0dXJuICAgc21hbmlwIDwgIGludCA+IChfX2lvbWFuaXBfc2V0dyAsIG4pOyB9
IAoKZXh0ZXJuIGlvcyYgX19pb21hbmlwX3Jlc2V0aW9zZmxhZ3MgIChpb3MmLCAgIGlvczo6Zm10
ZmxhZ3MgKTsgaW5saW5lICAgc21hbmlwIDwgIGlvczo6Zm10ZmxhZ3MgPiAgIHJlc2V0aW9zZmxh
Z3MgICggIGlvczo6Zm10ZmxhZ3MgIG4pIHsgcmV0dXJuICAgc21hbmlwIDwgIGlvczo6Zm10Zmxh
Z3MgPiAoX19pb21hbmlwX3Jlc2V0aW9zZmxhZ3MgLCBuKTsgfSAKZXh0ZXJuIGlvcyYgX19pb21h
bmlwX3NldGlvc2ZsYWdzICAoaW9zJiwgICBpb3M6OmZtdGZsYWdzICk7IGlubGluZSAgIHNtYW5p
cCA8ICBpb3M6OmZtdGZsYWdzID4gICBzZXRpb3NmbGFncyAgKCAgaW9zOjpmbXRmbGFncyAgbikg
eyByZXR1cm4gICBzbWFuaXAgPCAgaW9zOjpmbXRmbGFncyA+IChfX2lvbWFuaXBfc2V0aW9zZmxh
Z3MgLCBuKTsgfSAKfSAgCgoKIyA2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9p
bmNsdWRlL2crKy0zL2lvbWFuaXAiIDIgMwoKCiMgODEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAyCgoKCgoKCgogIAojIDEgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
Mi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvY21hdGgiIDEgMwogCiAKCgojZGVmaW5l
IF9fQ01BVEhfXwoKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgojZGVmaW5lIAlfTUFUSF9ICTEKCgoKZXh0ZXJuICJDIiB7IAoKIAoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKI2RlZmluZSAJX19IVUdFX1ZBTF9ieXRlcwl7IDAsIDAsIDAsIDAsIDAsIDAsIDB4ZjAs
IDB4N2YgfQoKI2RlZmluZSBfX2h1Z2VfdmFsX3QJdW5pb24geyB1bnNpZ25lZCBjaGFyIF9fY1s4
XTsgZG91YmxlIF9fZDsgfQoKI2RlZmluZSBIVUdFX1ZBTAkoX19leHRlbnNpb25fXyAoKF9faHVn
ZV92YWxfdCkgeyBfX2M6IF9fSFVHRV9WQUxfYnl0ZXMgfSkuX19kKQoKCgoKCgoKIAoKIyA2OCAi
L3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMwoKIyAzMyAiL3Vzci9pbmNsdWRlL21hdGgu
aCIgMiAzCgoKIAoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGRlZi5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDQ3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoZGVmLmgiIDMK
CiMgNDAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgogCgoKCgojZGVmaW5lIF9fTUFUSENB
TEwoZnVuY3Rpb24sc3VmZml4LCBhcmdzKQlfX01BVEhERUNMIChfTWRvdWJsZV8sZnVuY3Rpb24s
c3VmZml4LCBhcmdzKQoKI2RlZmluZSBfX01BVEhERUNMKHR5cGUsIGZ1bmN0aW9uLHN1ZmZpeCwg
YXJncykgX19NQVRIREVDTF8xKHR5cGUsIGZ1bmN0aW9uLHN1ZmZpeCwgYXJncyk7IF9fTUFUSERF
Q0xfMSh0eXBlLCBfX0NPTkNBVChfXyxmdW5jdGlvbiksc3VmZml4LCBhcmdzKQoKCiNkZWZpbmUg
X19NQVRIQ0FMTFgoZnVuY3Rpb24sc3VmZml4LCBhcmdzLCBhdHRyaWIpCV9fTUFUSERFQ0xYIChf
TWRvdWJsZV8sZnVuY3Rpb24sc3VmZml4LCBhcmdzLCBhdHRyaWIpCgojZGVmaW5lIF9fTUFUSERF
Q0xYKHR5cGUsIGZ1bmN0aW9uLHN1ZmZpeCwgYXJncywgYXR0cmliKSBfX01BVEhERUNMXzEodHlw
ZSwgZnVuY3Rpb24sc3VmZml4LCBhcmdzKSBfX2F0dHJpYnV0ZV9fIChhdHRyaWIpOyBfX01BVEhE
RUNMXzEodHlwZSwgX19DT05DQVQoX18sZnVuY3Rpb24pLHN1ZmZpeCwgYXJncykgX19hdHRyaWJ1
dGVfXyAoYXR0cmliKQoKCiNkZWZpbmUgX19NQVRIREVDTF8xKHR5cGUsIGZ1bmN0aW9uLHN1ZmZp
eCwgYXJncykgZXh0ZXJuIHR5cGUgX19NQVRIX1BSRUNOQU1FKGZ1bmN0aW9uLHN1ZmZpeCkgYXJn
cwoKCiNkZWZpbmUgX01kb3VibGVfIAkJZG91YmxlCiNkZWZpbmUgX19NQVRIX1BSRUNOQU1FKG5h
bWUscikJX19DT05DQVQobmFtZSxyKQojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFjb3MgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYWNvcyAgICAgICAgICAoZG91YmxlICBf
X3gpICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhc2luICAgICAgICAgIChkb3Vi
bGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2FzaW4gICAgICAgICAgKGRv
dWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbiAgICAgICAg
ICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19hdGFuICAgICAg
ICAgIChkb3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW4y
ICAgICAgICAgIChkb3VibGUgIF9feSwgZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19hdGFuMiAgICAgICAgICAoZG91YmxlICBfX3ksIGRvdWJsZSAgX194KSAgICAg
IDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvcyAgICAgICAgICAoZG91YmxlICBfX3gp
ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19jb3MgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc2luICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NpbiAgICAgICAgICAoZG91Ymxl
ICBfX3gpICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICB0YW4gICAgICAgICAgKGRv
dWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fdGFuICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgICA7CgoKCgoKCgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBj
b3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X2Nvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAg
ICAgICAgc2luaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgX19zaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIHRhbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRv
dWJsZSAgICAgICAgIF9fdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCiAKZXh0
ZXJuICAgZG91YmxlICAgICAgICAgIGFjb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBl
eHRlcm4gICBkb3VibGUgICAgICAgICBfX2Fjb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAg
ICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFzaW5oICAgICAgICAgIChkb3VibGUgIF9f
eCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2FzaW5oICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW5oICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2F0YW5oICAgICAgICAg
IChkb3VibGUgIF9feCkgICAgICA7CgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZXhw
ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2V4
cCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCgoKCgoKCiAKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIGZyZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50ICpfX2V4cG9uZW50KSAg
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZnJleHAgICAgICAgICAgKGRvdWJsZSAgX194
LCBpbnQgKl9fZXhwb25lbnQpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbGRl
eHAgICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQgX19leHBvbmVudCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2xkZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fZXhwb25l
bnQpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nICAgICAgICAgIChkb3Vi
bGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZyAgICAgICAgICAoZG91
YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nMTAgICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9nMTAgICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIG1v
ZGYgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgICpfX2lwdHIpICAgIDsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX19tb2RmICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICAqX19p
cHRyKSAgICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBleHBtMSAgICAgICAgICAo
ZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19leHBtMSAgICAgICAg
ICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nMXAg
ICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9n
MXAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgIGxvZ2IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9fbG9nYiAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCgoKCgoKCgoKCiAKCiAK
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHBvdyAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJs
ZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fcG93ICAgICAgICAgIChkb3Vi
bGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAg
c3FydCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg
X19zcXJ0ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUg
ICAgICAgICAgaHlwb3QgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBl
eHRlcm4gICBkb3VibGUgICAgICAgICBfX2h5cG90ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91
YmxlICBfX3kpICAgICAgOwoKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjYnJ0ICAgICAg
ICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NicnQgICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAg
ICAgY2VpbCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19jZWlsICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJs
ZSAgICAgICAgICBmYWJzICAgICAgICAgIChkb3VibGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18g
KCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19mYWJzICAgICAg
ICAgIChkb3VibGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAg
OwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZmxvb3IgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZmxvb3IgICAgICAgICAgKGRvdWJsZSAg
X194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGZtb2QgICAgICAgICAgKGRv
dWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Zt
b2QgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKIAoKZXh0ZXJu
ICBpbnQgICAgIF9faXNpbmYgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgIF9fZmluaXRlICAgICAgKGRvdWJsZSAg
X192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIAoKZXh0ZXJuICBpbnQg
ICAgIGlzaW5mICAgICAgKGRvdWJsZSAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgogCmV4dGVybiAgaW50ICAgICBmaW5pdGUgICAgICAoZG91YmxlICBfX3ZhbHVlKSAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKCgoKCgpleHRlcm4gICBkb3VibGUgICAg
ICAgICAgaW5mbmFuICAgICAgICAgIChpbnQgX19lcnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAg
ICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19pbmZuYW4gICAgICAg
ICAgKGludCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7
CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBkcmVtICAgICAgICAgIChkb3VibGUgIF9feCwg
ZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19kcmVtICAgICAgICAg
IChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIHNpZ25pZmljYW5kICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX3NpZ25pZmljYW5kICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7
CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvcHlzaWduICAgICAgICAgIChkb3VibGUg
IF9feCwgZG91YmxlICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fY29weXNpZ24gICAgICAgICAgKGRvdWJsZSAgX194
LCBkb3VibGUgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoK
CgoKCgoKCiAKZXh0ZXJuICBpbnQgICAgIF9faXNuYW4gICAgICAoZG91YmxlICBfX3ZhbHVlKSAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgaW50ICAgICBpc25hbiAg
ICAgIChkb3VibGUgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApl
eHRlcm4gICBkb3VibGUgICAgICAgICAgajAgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX19qMCAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICBqMSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3Vi
bGUgICAgICAgICBfX2oxICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIGpuICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19qbiAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIHkwICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9feTAgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAg
ICAgICAgeTEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg
X195MSAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICB5
biAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f
eW4gICAgICAgICAgKGludCwgZG91YmxlICkgICAgICA7CgoKCgogCmV4dGVybiAgIGRvdWJsZSAg
ICAgICAgICBlcmYgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19lcmYgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAg
ICAgZXJmYyAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X2VyZmMgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAg
bGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f
bGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IHRnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X3RnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgICA7CgoKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9fZ2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwoKCgogCgoKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIGxnYW1tYV9yICAgICAgICAgICAgICAoZG91YmxlICwgaW50ICpfX3NpZ25n
YW1wKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbGdhbW1hX3IgICAgICAgICAgICAg
IChkb3VibGUgLCBpbnQgKl9fc2lnbmdhbXApICAgICAgOwoKCgoKIAoKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIHJpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJs
ZSAgICAgICAgIF9fcmludCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4g
ICBkb3VibGUgICAgICAgICAgbmV4dGFmdGVyICAgICAgICAgIChkb3VibGUgIF9feCwgZG91Ymxl
ICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGRv
dWJsZSAgICAgICAgIF9fbmV4dGFmdGVyICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBf
X3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCiAKZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgIHJlbWFpbmRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJs
ZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fcmVtYWluZGVyICAgICAgICAg
IChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIHNjYWxiICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX24pICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19zY2FsYiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJs
ZSAgX19uKSAgICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzY2FsYm4gICAgICAg
ICAgKGRvdWJsZSAgX194LCBpbnQgX19uKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f
c2NhbGJuICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fbikgICAgICA7CgogCmV4dGVybiAg
IGludCAgICAgICAgaWxvZ2IgICAgICAgIChkb3VibGUgIF9feCkgICA7IGV4dGVybiAgIGludCAg
ICAgICAgX19pbG9nYiAgICAgICAgKGRvdWJsZSAgX194KSAgICA7CgoKIyAzMzYgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCgojIDYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMK
CiN1bmRlZiAJX01kb3VibGVfCiN1bmRlZiAJX19NQVRIX1BSRUNOQU1FCgoKCgogCgoKCiNkZWZp
bmUgX01mbG9hdF8JCWZsb2F0CgojZGVmaW5lIF9NZG91YmxlXyAJCV9NZmxvYXRfCgojZGVmaW5l
IF9fTUFUSF9QUkVDTkFNRShuYW1lLHIpIG5hbWUjI2YjI3IKCgoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoY2FsbHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGFjb3NmICAgICAg
ICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hY29zZiAgICAg
ICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgYXNpbmYg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2FzaW5m
ICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBh
dGFuZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9f
YXRhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGF0YW4yZiAgICAgICAgIChmbG9hdCAgIF9feSwgZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX2F0YW4yZiAgICAgICAgIChmbG9hdCAgIF9feSwgZmxvYXQgICBf
X3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBjb3NmICAgICAgICAgKGZsb2F0
ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19jb3NmICAgICAgICAgKGZsb2F0
ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBzaW5mICAgICAgICAgKGZs
b2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19zaW5mICAgICAgICAgKGZs
b2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICB0YW5mICAgICAgICAg
KGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX190YW5mICAgICAgICAg
KGZsb2F0ICAgX194KSAgICAgIDsKCgoKCgoKCiAKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAg
Y29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBf
X2Nvc2hmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAg
ICAgICBzaW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAg
ICAgIF9fc2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0
ICAgICAgICAgIHRhbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX190YW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKIApleHRlcm4g
ICBmbG9hdCAgICAgICAgICBhY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX2Fjb3NoZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAK
ZXh0ZXJuICAgZmxvYXQgICAgICAgICAgYXNpbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7
IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hc2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
ICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGF0YW5oZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRhbmhmICAgICAgICAgKGZsb2F0ICAg
X194KSAgICAgIDsKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGV4cGYgICAgICAgICAo
ZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2V4cGYgICAgICAgICAo
ZmxvYXQgICBfX3gpICAgICAgOwoKCgoKCgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZnJl
eHBmICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgKl9fZXhwb25lbnQpICAgIDsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX2ZyZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50ICpfX2V4cG9u
ZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbGRleHBmICAgICAgICAgKGZs
b2F0ICAgX194LCBpbnQgX19leHBvbmVudCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9f
bGRleHBmICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19leHBvbmVudCkgICAgICA7CgogCmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIGxvZ2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0
ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZ2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBsb2cxMGYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
IDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZzEwZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIG1vZGZmICAgICAgICAgKGZsb2F0ICAg
X194LCBmbG9hdCAgICpfX2lwdHIpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX21vZGZm
ICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgICpfX2lwdHIpICAgICAgOwoKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgZXhwbTFmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19leHBtMWYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBsb2cxcGYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
IDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZzFwZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxvZ2JmICAgICAgICAgKGZsb2F0ICAg
X194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sb2diZiAgICAgICAgIChmbG9hdCAg
IF9feCkgICAgICA7CgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBwb3dm
ICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fcG93ZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAgOwoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBzcXJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc3FydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
ICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgaHlwb3RmICAgICAgICAgKGZsb2F0ICAg
X194LCBmbG9hdCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9faHlwb3RmICAg
ICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgoKCiAKZXh0ZXJuICAgZmxv
YXQgICAgICAgICAgY2JydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX2NicnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgoKIAoKIApl
eHRlcm4gICBmbG9hdCAgICAgICAgICBjZWlsZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBl
eHRlcm4gICBmbG9hdCAgICAgICAgIF9fY2VpbGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAg
OwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmYWJzZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZmxvYXQgICAg
ICAgICBfX2ZhYnNmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgX19hdHRyaWJ1dGVfXyAoICAg
IChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZsb29yZiAgICAg
ICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZmxvb3JmICAg
ICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZm1v
ZGYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX19mbW9kZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAg
OwoKCiAKCmV4dGVybiAgaW50ICAgIF9faXNpbmZmICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgX19maW5pdGVmICAg
ICAoZmxvYXQgICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCgpl
eHRlcm4gIGludCAgICBpc2luZmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICBmaW5pdGVmICAgICAoZmxvYXQgICBf
X3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKCgoKCgpleHRlcm4gICBm
bG9hdCAgICAgICAgICBpbmZuYW5mICAgICAgICAgKGludCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1
dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9faW5mbmFu
ZiAgICAgICAgIChpbnQgX19lcnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9f
KSAgKSAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBkcmVtZiAgICAgICAgIChmbG9hdCAg
IF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2RyZW1mICAg
ICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgoKIApleHRlcm4gICBmbG9h
dCAgICAgICAgICBzaWduaWZpY2FuZGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX3NpZ25pZmljYW5kZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg
ICA7CgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgY29weXNpZ25mICAgICAgICAgKGZsb2F0
ICAgX194LCBmbG9hdCAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAg
KTsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2NvcHlzaWduZiAgICAgICAgIChmbG9hdCAgIF9f
eCwgZmxvYXQgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsK
CgoKCgoKCgogCmV4dGVybiAgaW50ICAgIF9faXNuYW5mICAgICAoZmxvYXQgICBfX3ZhbHVlKSAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgaW50ICAgIGlzbmFuZiAg
ICAgKGZsb2F0ICAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIGowZiAgICAgICAgIChmbG9hdCAgKSAgICA7IGV4dGVybiAg
IGZsb2F0ICAgICAgICAgX19qMGYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAgIGZs
b2F0ICAgICAgICAgIGoxZiAgICAgICAgIChmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAg
ICAgICAgX19qMWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGpuZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAg
ICBfX2puZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAg
ICAgICB5MGYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9f
eTBmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICB5MWYg
ICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9feTFmICAgICAg
ICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICB5bmYgICAgICAgICAo
aW50LCBmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX195bmYgICAgICAgICAo
aW50LCBmbG9hdCAgKSAgICAgIDsKCgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZXJmZiAg
ICAgICAgIChmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19lcmZmICAgICAg
ICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICBlcmZjZiAgICAgICAg
IChmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19lcmZjZiAgICAgICAgIChm
bG9hdCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbGdhbW1hZiAgICAgICAgIChm
bG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sZ2FtbWFmICAgICAgICAgKGZs
b2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICB0Z2FtbWFmICAgICAgICAgKGZs
b2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3RnYW1tYWYgICAgICAgICAoZmxv
YXQgICkgICAgICA7CgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZ2FtbWFmICAgICAgICAg
KGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2dhbW1hZiAgICAgICAgIChm
bG9hdCAgKSAgICAgIDsKCgoKIAoKCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxnYW1tYWZfciAg
ICAgICAgICAgIChmbG9hdCAgLCBpbnQgKl9fc2lnbmdhbXApICAgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX2xnYW1tYWZfciAgICAgICAgICAgIChmbG9hdCAgLCBpbnQgKl9fc2lnbmdhbXAp
ICAgICAgOwoKCgoKIAoKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgcmludGYgICAgICAgICAoZmxv
YXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3JpbnRmICAgICAgICAgKGZs
b2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbmV4dGFmdGVyZiAg
ICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAg
KF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19uZXh0YWZ0ZXJmICAgICAg
ICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19j
b25zdF9fKSAgKSAgOwoKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICByZW1haW5kZXJmICAg
ICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAgICAg
ICAgIF9fcmVtYWluZGVyZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAg
OwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2NhbGJmICAgICAgICAgKGZsb2F0ICAgX194
LCBmbG9hdCAgIF9fbikgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2NhbGJmICAgICAg
ICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9fbikgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAg
ICAgICAgICBzY2FsYm5mICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19uKSAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19zY2FsYm5mICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19u
KSAgICAgIDsKCiAKZXh0ZXJuICAgaW50ICAgICAgIGlsb2diZiAgICAgICAoZmxvYXQgICBfX3gp
ICAgOyBleHRlcm4gICBpbnQgICAgICAgX19pbG9nYmYgICAgICAgKGZsb2F0ICAgX194KSAgICA7
CgoKIyAzMzYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCgojIDgyICIvdXNyL2lu
Y2x1ZGUvbWF0aC5oIiAyIDMKCiN1bmRlZiAJX01kb3VibGVfCiN1bmRlZiAJX19NQVRIX1BSRUNO
QU1FCgoKIAoKCgojZGVmaW5lIF9NbG9uZ19kb3VibGVfCWxvbmcgZG91YmxlCgojZGVmaW5lIF9N
ZG91YmxlXyAJCV9NbG9uZ19kb3VibGVfCgojZGVmaW5lIF9fTUFUSF9QUkVDTkFNRShuYW1lLHIp
IG5hbWUjI2wjI3IKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCmV4
dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGFjb3NsICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19hY29zbCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg
YXNpbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICBfX2FzaW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhdGFubCAgICAgICAgIChsb25nIGRvdWJsZSAg
IF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fYXRhbmwgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAg
IGF0YW4ybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feSwgbG9uZyBkb3VibGUgICBfX3gpICAg
IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2F0YW4ybCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feSwgbG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgICBjb3NsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19jb3NsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
KSAgICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBzaW5sICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19zaW5s
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgICB0YW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX190YW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAg
ICAgIDsKCgoKCgoKCiAKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY29zaGwgICAg
ICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICBfX2Nvc2hsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICBzaW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAg
OyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc2luaGwgICAgICAgICAobG9uZyBkb3Vi
bGUgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHRhbmhsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgX190YW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgoKIApleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgICBhY29zaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gp
ICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Fjb3NobCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgYXNp
bmhsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgX19hc2luaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwogCmV4
dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGF0YW5obCAgICAgICAgIChsb25nIGRvdWJsZSAg
IF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fYXRhbmhsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCgogCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgIGV4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICBfX2V4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAg
OwoKCgoKCgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZnJleHBsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194LCBpbnQgKl9fZXhwb25lbnQpICAgIDsgZXh0ZXJuICAgbG9uZyBk
b3VibGUgICAgICAgICBfX2ZyZXhwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50ICpf
X2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgbGRleHBs
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBpbnQgX19leHBvbmVudCkgICAgOyBleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgIF9fbGRleHBsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
LCBpbnQgX19leHBvbmVudCkgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAg
IGxvZ2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICBfX2xvZ2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsb2cxMGwgICAgICAgICAobG9uZyBkb3VibGUg
ICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xvZzEwbCAgICAgICAg
IChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIG1vZGZsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgICpfX2lw
dHIpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX21vZGZsICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgICpfX2lwdHIpICAgICAgOwoKCiAKZXh0ZXJu
ICAgbG9uZyBkb3VibGUgICAgICAgICAgZXhwbTFsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19leHBtMWwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBs
b2cxcGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICBfX2xvZzFwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7Cgog
CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGxvZ2JsICAgICAgICAgKGxvbmcgZG91Ymxl
ICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19sb2dibCAgICAgICAg
IChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBsb25n
IGRvdWJsZSAgICAgICAgICBwb3dsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRv
dWJsZSAgIF9feSkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fcG93bCAgICAg
ICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICAgOwoKIApleHRl
cm4gICBsb25nIGRvdWJsZSAgICAgICAgICBzcXJ0bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f
eCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc3FydGwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gpICAgICAgOwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg
aHlwb3RsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAg
OyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9faHlwb3RsICAgICAgICAgKGxvbmcgZG91
YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgICA7CgoKCiAKZXh0ZXJuICAgbG9uZyBk
b3VibGUgICAgICAgICAgY2JydGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0
ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2NicnRsICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194KSAgICAgIDsKCgoKIAoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBjZWlsbCAg
ICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAg
ICAgIF9fY2VpbGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgICBmYWJzbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkg
ICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICBfX2ZhYnNsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgX19hdHRy
aWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgIGZsb29ybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgIF9fZmxvb3JsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAg
ICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZm1vZGwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICA7IGV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgX19mbW9kbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3Vi
bGUgICBfX3kpICAgICAgOwoKCiAKCmV4dGVybiAgaW50ICAgIF9faXNpbmZsICAgICAobG9uZyBk
b3VibGUgICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJu
ICBpbnQgICAgX19maW5pdGVsICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgogCgpleHRlcm4gIGludCAgICBpc2luZmwgICAgIChsb25n
IGRvdWJsZSAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRl
cm4gIGludCAgICBmaW5pdGVsICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCiAKCgoKCgpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAg
ICBpbmZuYW5sICAgICAgICAgKGludCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChf
X2NvbnN0X18pICApOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9faW5mbmFubCAgICAg
ICAgIChpbnQgX19lcnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAg
OwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBkcmVtbCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUg
ICAgICAgICBfX2RyZW1sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAg
IF9feSkgICAgICA7CgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBzaWduaWZpY2Fu
ZGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUg
ICAgICAgICBfX3NpZ25pZmljYW5kbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7
CgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY29weXNpZ25sICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAg
ICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2NvcHlzaWdu
bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICBfX2F0
dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCgoKCgogCmV4dGVybiAgaW50ICAg
IF9faXNuYW5sICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgogCmV4dGVybiAgaW50ICAgIGlzbmFubCAgICAgKGxvbmcgZG91YmxlICAg
X192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgIGxvbmcg
ZG91YmxlICAgICAgICAgIGowbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19qMGwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICA7
CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGoxbCAgICAgICAgIChsb25nIGRvdWJsZSAg
KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19qMWwgICAgICAgICAobG9uZyBk
b3VibGUgICkgICAgICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGpubCAgICAgICAg
IChpbnQsIGxvbmcgZG91YmxlICApICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBf
X2pubCAgICAgICAgIChpbnQsIGxvbmcgZG91YmxlICApICAgICAgOwpleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgICB5MGwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgOyBleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgIF9feTBsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgICAgOwpl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICB5MWwgICAgICAgICAobG9uZyBkb3VibGUgICkg
ICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9feTFsICAgICAgICAgKGxvbmcgZG91
YmxlICApICAgICAgOwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICB5bmwgICAgICAgICAo
aW50LCBsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX195
bmwgICAgICAgICAoaW50LCBsb25nIGRvdWJsZSAgKSAgICAgIDsKCgoKCiAKZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICAgZXJmbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19lcmZsICAgICAgICAgKGxvbmcgZG91YmxlICApICAg
ICAgOwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBlcmZjbCAgICAgICAgIChsb25nIGRv
dWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19lcmZjbCAgICAgICAg
IChsb25nIGRvdWJsZSAgKSAgICAgIDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgbGdh
bW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgX19sZ2FtbWFsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgICAgOwpleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICB0Z2FtbWFsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIDsg
ZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3RnYW1tYWwgICAgICAgICAobG9uZyBkb3Vi
bGUgICkgICAgICA7CgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZ2FtbWFsICAg
ICAgICAgKGxvbmcgZG91YmxlICApICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBf
X2dhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICAgIDsKCgoKIAoKCmV4dGVybiAgIGxv
bmcgZG91YmxlICAgICAgICAgIGxnYW1tYWxfciAgICAgICAgICAgIChsb25nIGRvdWJsZSAgLCBp
bnQgKl9fc2lnbmdhbXApICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xnYW1t
YWxfciAgICAgICAgICAgIChsb25nIGRvdWJsZSAgLCBpbnQgKl9fc2lnbmdhbXApICAgICAgOwoK
CgoKIAoKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgcmludGwgICAgICAgICAobG9uZyBk
b3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3JpbnRsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUg
ICAgICAgICAgbmV4dGFmdGVybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3Vi
bGUgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19uZXh0YWZ0ZXJsICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9f
KSAgKSAgOwoKCgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICByZW1haW5kZXJsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgOyBleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgIF9fcmVtYWluZGVybCAgICAgICAgIChsb25nIGRvdWJsZSAg
IF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUg
ICAgICAgICAgc2NhbGJsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAg
IF9fbikgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc2NhbGJsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9fbikgICAgICA7CgoKIApleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgICBzY2FsYm5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
LCBpbnQgX19uKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19zY2FsYm5sICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194LCBpbnQgX19uKSAgICAgIDsKCiAKZXh0ZXJuICAgaW50
ICAgICAgIGlsb2dibCAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgOyBleHRlcm4gICBpbnQg
ICAgICAgX19pbG9nYmwgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7CgoKIyAzMzYgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCgojIDk5ICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKCiN1bmRlZiBfTWRvdWJsZV8KI3VuZGVmIF9fTUFUSF9QUkVDTkFNRQoKCgoKI3VuZGVm
IAlfX01BVEhERUNMXzEKI3VuZGVmIAlfX01BVEhERUNMCiN1bmRlZiAJX19NQVRIQ0FMTAoKCgog
CmV4dGVybiBpbnQgc2lnbmdhbTsKCgoKIAojIDIzMiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoK
CgogCnR5cGVkZWYgZW51bQp7CiAgX0lFRUVfID0gLTEsCSAKICBfU1ZJRF8sCSAKICBfWE9QRU5f
LAkgCiAgX1BPU0lYXywKICBfSVNPQ18JIAp9IF9MSUJfVkVSU0lPTl9UWVBFOwoKIAoKCmV4dGVy
biBfTElCX1ZFUlNJT05fVFlQRSBfTElCX1ZFUlNJT047CgoKCgogCgoKCgoKc3RydWN0IF9fZXhj
ZXB0aW9uCgoKCiAgewogICAgaW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFy
ZzE7CiAgICBkb3VibGUgYXJnMjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgpleHRlcm4gaW50
IG1hdGhlcnIgIChzdHJ1Y3QgX19leGNlcHRpb24gKl9fZXhjKSAgdGhyb3cgKCkgIDsKCgoKCiNk
ZWZpbmUgWF9UTE9TUwkxLjQxNDg0NzU1MDQwNTY4ODAwMDAwZSsxNgoKIAojZGVmaW5lIERPTUFJ
TgkJMQojZGVmaW5lIFNJTkcJCTIKI2RlZmluZSBPVkVSRkxPVwkzCiNkZWZpbmUgVU5ERVJGTE9X
CTQKI2RlZmluZSBUTE9TUwkJNQojZGVmaW5lIFBMT1NTCQk2CgogCiNkZWZpbmUgSFVHRQkJRkxU
X01BWAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvZmxvYXQuaCIgMSAzCiAKCgoj
ZGVmaW5lIF9GTE9BVF9IXwogCgogICAgCgojZGVmaW5lIEZMVF9SQURJWCAyCiAgICAKCiNkZWZp
bmUgRkxUX01BTlRfRElHIDI0CiAgICAKCiNkZWZpbmUgRkxUX0RJRyA2CiAgICAKCiNkZWZpbmUg
RkxUX1JPVU5EUyAxCiAgICAKCiNkZWZpbmUgRkxUX0VQU0lMT04gMS4xOTIwOTI5MGUtMDdGCiAg
ICAKCiNkZWZpbmUgRkxUX01JTl9FWFAgKC0xMjUpCiAgICAKCiNkZWZpbmUgRkxUX01JTiAxLjE3
NTQ5NDM1ZS0zOEYKICAgIAoKI2RlZmluZSBGTFRfTUlOXzEwX0VYUCAoLTM3KQogICAgCgojZGVm
aW5lIEZMVF9NQVhfRVhQIDEyOAogICAgCgojZGVmaW5lIEZMVF9NQVggMy40MDI4MjM0N2UrMzhG
CiAgICAKCiNkZWZpbmUgRkxUX01BWF8xMF9FWFAgMzgKCiAgICAKCiNkZWZpbmUgREJMX01BTlRf
RElHIDUzCiAgICAKCiNkZWZpbmUgREJMX0RJRyAxNQogICAgCgojZGVmaW5lIERCTF9FUFNJTE9O
IDIuMjIwNDQ2MDQ5MjUwMzEzMWUtMTYKICAgIAoKI2RlZmluZSBEQkxfTUlOX0VYUCAoLTEwMjEp
CiAgICAKCiNkZWZpbmUgREJMX01JTiAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOAogICAgCgojZGVm
aW5lIERCTF9NSU5fMTBfRVhQICgtMzA3KQogICAgCgojZGVmaW5lIERCTF9NQVhfRVhQIDEwMjQK
ICAgIAoKI2RlZmluZSBEQkxfTUFYIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4CiAgICAKCiNkZWZp
bmUgREJMX01BWF8xMF9FWFAgMzA4CgogICAgCgojZGVmaW5lIExEQkxfTUFOVF9ESUcgNjQKICAg
IAoKI2RlZmluZSBMREJMX0RJRyAxOAogICAgCgoKI2RlZmluZSBfX0xEQkxfVU5JT05fXwp1bmlv
biBfX2NvbnZlcnRfbG9uZ19kb3VibGUgewogIHVuc2lnbmVkIF9fY29udmVydF9sb25nX2RvdWJs
ZV9pWzRdOwogIGxvbmcgZG91YmxlIF9fY29udmVydF9sb25nX2RvdWJsZV9kOwp9OwoKI2RlZmlu
ZSBMREJMX0VQU0lMT04gKF9fZXh0ZW5zaW9uX18gKCh1bmlvbiBfX2NvbnZlcnRfbG9uZ19kb3Vi
bGUpIHtfX2NvbnZlcnRfbG9uZ19kb3VibGVfaTogezB4MCwgMHg4MDAwMDAwMCwgMHgzZmMwLCAw
eDB9fSkuX19jb252ZXJ0X2xvbmdfZG91YmxlX2QpCiAgICAKCiNkZWZpbmUgTERCTF9NSU5fRVhQ
ICgtMTYzODEpCiAgICAKCiNkZWZpbmUgTERCTF9NSU4gKF9fZXh0ZW5zaW9uX18gKCh1bmlvbiBf
X2NvbnZlcnRfbG9uZ19kb3VibGUpIHtfX2NvbnZlcnRfbG9uZ19kb3VibGVfaTogezB4MCwgMHg4
MDAwMDAwMCwgMHgxLCAweDB9fSkuX19jb252ZXJ0X2xvbmdfZG91YmxlX2QpCiAgICAKCiNkZWZp
bmUgTERCTF9NSU5fMTBfRVhQICgtNDkzMSkKICAgIAoKI2RlZmluZSBMREJMX01BWF9FWFAgMTYz
ODQKICAgIAoKI2RlZmluZSBMREJMX01BWCAoX19leHRlbnNpb25fXyAoKHVuaW9uIF9fY29udmVy
dF9sb25nX2RvdWJsZSkge19fY29udmVydF9sb25nX2RvdWJsZV9pOiB7MHhmZmZmZmZmZiwgMHhm
ZmZmZmZmZiwgMHgxMDdmZmUsIDB4MH19KS5fX2NvbnZlcnRfbG9uZ19kb3VibGVfZCkKICAgIAoK
I2RlZmluZSBMREJMX01BWF8xMF9FWFAgNDkzMgoKCiMgMjg5ICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKCgojIDI5OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCgogCgojZGVmaW5lIE1fRQkJ
Mi43MTgyODE4Mjg0NTkwNDUyMzU0CQojZGVmaW5lIE1fTE9HMkUJMS40NDI2OTUwNDA4ODg5NjM0
MDc0CQojZGVmaW5lIE1fTE9HMTBFCTAuNDM0Mjk0NDgxOTAzMjUxODI3NjUJCiNkZWZpbmUgTV9M
TjIJCTAuNjkzMTQ3MTgwNTU5OTQ1MzA5NDIJCiNkZWZpbmUgTV9MTjEwCQkyLjMwMjU4NTA5Mjk5
NDA0NTY4NDAyCQojZGVmaW5lIE1fUEkJCTMuMTQxNTkyNjUzNTg5NzkzMjM4NDYJCiNkZWZpbmUg
TV9QSV8yCQkxLjU3MDc5NjMyNjc5NDg5NjYxOTIzCQojZGVmaW5lIE1fUElfNAkJMC43ODUzOTgx
NjMzOTc0NDgzMDk2MgkKI2RlZmluZSBNXzFfUEkJCTAuMzE4MzA5ODg2MTgzNzkwNjcxNTQJCiNk
ZWZpbmUgTV8yX1BJCQkwLjYzNjYxOTc3MjM2NzU4MTM0MzA4CQojZGVmaW5lIE1fMl9TUVJUUEkJ
MS4xMjgzNzkxNjcwOTU1MTI1NzM5MAkKI2RlZmluZSBNX1NRUlQyCTEuNDE0MjEzNTYyMzczMDk1
MDQ4ODAJCiNkZWZpbmUgTV9TUVJUMV8yCTAuNzA3MTA2NzgxMTg2NTQ3NTI0NDAJCgoKIAoKCiMg
MzM2ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCgoKCiAKCgoKCgoKIAoKCgoKCiMgNDA3ICIvdXNy
L2luY2x1ZGUvbWF0aC5oIiAzCgoKfSAKCgoKIyA3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL2NtYXRoIiAyIDMKCgoKI3ByYWdtYSBpbnRlcmZhY2UgImNt
YXRoIgoKCmV4dGVybiAiQysrIiB7CiMgMzggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251
L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4u
Ly4uL2luY2x1ZGUvZysrLTMvY21hdGgiIDMKCgppbmxpbmUgZmxvYXQgIGFicyAoZmxvYXQgIHgp
IHsgcmV0dXJuIGZhYnMgKHgpOyB9CgppbmxpbmUgZG91YmxlIGFicyAoZG91YmxlIHgpIHsgcmV0
dXJuIGZhYnMgKHgpOyB9CgoKIyA3MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9jbWF0aCIgMwoKaW5saW5lIGxvbmcgZG91YmxlIGFicyAobG9uZyBkb3Vi
bGUgeCkgeyByZXR1cm4gZmFicyAoeCk7IH0KCn0gIAoKCiMgODggIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAyCgoKCgoKCiAgCiMgMSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9jb21wbGV4IiAxIDMKIAogCgoK
I2RlZmluZSBfX0NPTVBMRVhfXwoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9n
Y2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8u
Li9pbmNsdWRlL2crKy0zL3N0ZC9jb21wbGV4dC5oIiAxIDMKIAogCgogCiAKIAogCgogCiAKIAog
CgogCiAKIAoKIAogCiAKIAogCgogCiAKCgojZGVmaW5lIF9fQ09NUExFWFRfXwoKCiNwcmFnbWEg
aW50ZXJmYWNlCgoKCgoKCgoKY2xhc3MgaXN0cmVhbTsKY2xhc3Mgb3N0cmVhbTsKCmV4dGVybiAi
QysrIiB7CnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBjbGFzcyBjb21wbGV4Owp0ZW1wbGF0ZSA8Y2xh
c3MgX0ZMVD4gY29tcGxleDxfRkxUPiYKICBfX2RvYXBsIChjb21wbGV4PF9GTFQ+KiB0aHMsIGNv
bnN0IGNvbXBsZXg8X0ZMVD4mIHIpOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxU
PiYKICBfX2RvYW1pIChjb21wbGV4PF9GTFQ+KiB0aHMsIGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHIp
Owp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxUPiYKICBfX2RvYW1sIChjb21wbGV4
PF9GTFQ+KiB0aHMsIGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHIpOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ZM
VD4gY29tcGxleDxfRkxUPiYKICBfX2RvYWR2IChjb21wbGV4PF9GTFQ+KiB0aHMsIGNvbnN0IGNv
bXBsZXg8X0ZMVD4mIHIpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+CmNsYXNzIGNvbXBsZXgKewpw
dWJsaWM6CiAgY29tcGxleCAoX0ZMVCByID0gMCwgX0ZMVCBpID0gMCk6IHJlIChyKSwgaW0gKGkp
IHsgfQogIGNvbXBsZXgmIG9wZXJhdG9yICs9IChjb25zdCBjb21wbGV4Jik7CiAgY29tcGxleCYg
b3BlcmF0b3IgLT0gKGNvbnN0IGNvbXBsZXgmKTsKICBjb21wbGV4JiBvcGVyYXRvciAqPSAoY29u
c3QgY29tcGxleCYpOwogIGNvbXBsZXgmIG9wZXJhdG9yIC89IChjb25zdCBjb21wbGV4Jik7CiAg
X0ZMVCByZWFsICgpIGNvbnN0IHsgcmV0dXJuIHJlOyB9CiAgX0ZMVCBpbWFnICgpIGNvbnN0IHsg
cmV0dXJuIGltOyB9CnByaXZhdGU6CiAgX0ZMVCByZSwgaW07CgogIGZyaWVuZCBjb21wbGV4JiBf
X2RvYXBsPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4JiBf
X2RvYW1pPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4JiBf
X2RvYW1sPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4JiBf
X2RvYWR2PD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwp9OwoKIApjbGFzcyBjb21wbGV4
PGZsb2F0PjsKY2xhc3MgY29tcGxleDxkb3VibGU+OwpjbGFzcyBjb21wbGV4PGxvbmcgZG91Ymxl
PjsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPgppbmxpbmUgY29tcGxleDxfRkxUPiYKX19kb2FwbCAo
Y29tcGxleDxfRkxUPiogdGhzLCBjb25zdCBjb21wbGV4PF9GTFQ+JiByKQp7CiAgdGhzLT5yZSAr
PSByLnJlOwogIHRocy0+aW0gKz0gci5pbTsKICByZXR1cm4gKnRoczsKfQp0ZW1wbGF0ZSA8Y2xh
c3MgX0ZMVD4KaW5saW5lIGNvbXBsZXg8X0ZMVD4mCmNvbXBsZXg8X0ZMVD46Om9wZXJhdG9yICs9
IChjb25zdCBjb21wbGV4PF9GTFQ+JiByKQp7CiAgcmV0dXJuIF9fZG9hcGwgKHRoaXMsIHIpOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4KaW5saW5lIGNvbXBsZXg8X0ZMVD4mCl9fZG9hbWkgKGNv
bXBsZXg8X0ZMVD4qIHRocywgY29uc3QgY29tcGxleDxfRkxUPiYgcikKewogIHRocy0+cmUgLT0g
ci5yZTsKICB0aHMtPmltIC09IHIuaW07CiAgcmV0dXJuICp0aHM7Cn0KdGVtcGxhdGUgPGNsYXNz
IF9GTFQ+CmlubGluZSBjb21wbGV4PF9GTFQ+Jgpjb21wbGV4PF9GTFQ+OjpvcGVyYXRvciAtPSAo
Y29uc3QgY29tcGxleDxfRkxUPiYgcikKewogIHJldHVybiBfX2RvYW1pICh0aGlzLCByKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9GTFQ+CmlubGluZSBjb21wbGV4PF9GTFQ+JgpfX2RvYW1sIChjb21w
bGV4PF9GTFQ+KiB0aHMsIGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHIpCnsKICBfRkxUIGYgPSB0aHMt
PnJlICogci5yZSAtIHRocy0+aW0gKiByLmltOwogIHRocy0+aW0gPSB0aHMtPnJlICogci5pbSAr
IHRocy0+aW0gKiByLnJlOwogIHRocy0+cmUgPSBmOwogIHJldHVybiAqdGhzOwp9CnRlbXBsYXRl
IDxjbGFzcyBfRkxUPgppbmxpbmUgY29tcGxleDxfRkxUPiYKY29tcGxleDxfRkxUPjo6b3BlcmF0
b3IgKj0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHIpCnsKICByZXR1cm4gX19kb2FtbCAodGhpcywg
cik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRkxUPgppbmxpbmUgY29tcGxleDxfRkxUPiYKY29tcGxl
eDxfRkxUPjo6b3BlcmF0b3IgLz0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHIpCnsKICByZXR1cm4g
X19kb2FkdiAodGhpcywgcik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgX0ZMVApp
bWFnIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4KSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRl
bXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgX0ZMVAppbWFnIChjb25zdCBjb21wbGV4PF9GTFQ+
JiB4KQp7CiAgcmV0dXJuIHguaW1hZyAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGlu
ZSBfRkxUCnJlYWwgKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpIF9fYXR0cmlidXRlX18gKChjb25z
dCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBfRkxUCnJlYWwgKGNvbnN0IGNvbXBs
ZXg8X0ZMVD4mIHgpCnsKICByZXR1cm4geC5yZWFsICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZM
VD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKyAoY29uc3QgY29tcGxleDxfRkxUPiYg
eCwgY29uc3QgY29tcGxleDxfRkxUPiYgeSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKyAoY29uc3Qg
Y29tcGxleDxfRkxUPiYgeCwgY29uc3QgY29tcGxleDxfRkxUPiYgeSkKewogIHJldHVybiBjb21w
bGV4PF9GTFQ+IChyZWFsICh4KSArIHJlYWwgKHkpLCBpbWFnICh4KSArIGltYWcgKHkpKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+Cm9wZXJhdG9yICsgKGNv
bnN0IGNvbXBsZXg8X0ZMVD4mIHgsIF9GTFQgeSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKyAoY29u
c3QgY29tcGxleDxfRkxUPiYgeCwgX0ZMVCB5KQp7CiAgcmV0dXJuIGNvbXBsZXg8X0ZMVD4gKHJl
YWwgKHgpICsgeSwgaW1hZyAoeCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNv
bXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKyAoX0ZMVCB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KSBf
X2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29t
cGxleDxfRkxUPgpvcGVyYXRvciArIChfRkxUIHgsIGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHkpCnsK
ICByZXR1cm4gY29tcGxleDxfRkxUPiAoeCArIHJlYWwgKHkpLCBpbWFnICh5KSk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpvcGVyYXRvciAtIChjb25zdCBj
b21wbGV4PF9GTFQ+JiB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KSBfX2F0dHJpYnV0ZV9fICgo
Y29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpvcGVy
YXRvciAtIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KQp7
CiAgcmV0dXJuIGNvbXBsZXg8X0ZMVD4gKHJlYWwgKHgpIC0gcmVhbCAoeSksIGltYWcgKHgpIC0g
aW1hZyAoeSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4K
b3BlcmF0b3IgLSAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgX0ZMVCB5KSBfX2F0dHJpYnV0ZV9f
ICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpv
cGVyYXRvciAtIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBfRkxUIHkpCnsKICByZXR1cm4gY29t
cGxleDxfRkxUPiAocmVhbCAoeCkgLSB5LCBpbWFnICh4KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
RkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpvcGVyYXRvciAtIChfRkxUIHgsIGNvbnN0IGNvbXBs
ZXg8X0ZMVD4mIHkpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9G
TFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+Cm9wZXJhdG9yIC0gKF9GTFQgeCwgY29uc3QgY29tcGxl
eDxfRkxUPiYgeSkKewogIHJldHVybiBjb21wbGV4PF9GTFQ+ICh4IC0gcmVhbCAoeSksIC0gaW1h
ZyAoeSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4Kb3Bl
cmF0b3IgKiAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgY29uc3QgY29tcGxleDxfRkxUPiYgeSkg
X19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNv
bXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKiAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgY29uc3QgY29t
cGxleDxfRkxUPiYgeSkKewogIHJldHVybiBjb21wbGV4PF9GTFQ+IChyZWFsICh4KSAqIHJlYWwg
KHkpIC0gaW1hZyAoeCkgKiBpbWFnICh5KSwKCQkJICAgcmVhbCAoeCkgKiBpbWFnICh5KSArIGlt
YWcgKHgpICogcmVhbCAoeSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBs
ZXg8X0ZMVD4Kb3BlcmF0b3IgKiAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgX0ZMVCB5KSBfX2F0
dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxl
eDxfRkxUPgpvcGVyYXRvciAqIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBfRkxUIHkpCnsKICBy
ZXR1cm4gY29tcGxleDxfRkxUPiAocmVhbCAoeCkgKiB5LCBpbWFnICh4KSAqIHkpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKiAoX0ZMVCB4
LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBs
YXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpvcGVyYXRvciAqIChfRkxUIHgs
IGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHkpCnsKICByZXR1cm4gY29tcGxleDxfRkxUPiAoeCAqIHJl
YWwgKHkpLCB4ICogaW1hZyAoeSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxf
RkxUPgpvcGVyYXRvciAvIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBfRkxUIHkpIF9fYXR0cmli
dXRlX18gKChjb25zdCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGNvbXBsZXg8X0ZMVD4Kb3Bl
cmF0b3IgLyAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgX0ZMVCB5KQp7CiAgcmV0dXJuIGNvbXBs
ZXg8X0ZMVD4gKHJlYWwgKHgpIC8geSwgaW1hZyAoeCkgLyB5KTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9GTFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+Cm9wZXJhdG9yICsgKGNvbnN0IGNvbXBsZXg8X0ZM
VD4mIHgpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlu
bGluZSBjb21wbGV4PF9GTFQ+Cm9wZXJhdG9yICsgKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpCnsK
ICByZXR1cm4geDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+
Cm9wZXJhdG9yIC0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpIF9fYXR0cmlidXRlX18gKChjb25z
dCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+Cm9wZXJhdG9y
IC0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpCnsKICByZXR1cm4gY29tcGxleDxfRkxUPiAoLXJl
YWwgKHgpLCAtaW1hZyAoeCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGJvb2wK
b3BlcmF0b3IgPT0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgsIGNvbnN0IGNvbXBsZXg8X0ZMVD4m
IHkpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGlu
ZSBib29sCm9wZXJhdG9yID09IChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBjb25zdCBjb21wbGV4
PF9GTFQ+JiB5KQp7CiAgcmV0dXJuIHJlYWwgKHgpID09IHJlYWwgKHkpICYmIGltYWcgKHgpID09
IGltYWcgKHkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGJvb2wKb3BlcmF0b3Ig
PT0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgsIF9GTFQgeSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0
KSk7Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGJvb2wKb3BlcmF0b3IgPT0gKGNvbnN0
IGNvbXBsZXg8X0ZMVD4mIHgsIF9GTFQgeSkKewogIHJldHVybiByZWFsICh4KSA9PSB5ICYmIGlt
YWcgKHgpID09IDA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgYm9vbApvcGVyYXRv
ciA9PSAoX0ZMVCB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KSBfX2F0dHJpYnV0ZV9fICgoY29u
c3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgYm9vbApvcGVyYXRvciA9PSAoX0ZM
VCB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KQp7CiAgcmV0dXJuIHggPT0gcmVhbCAoeSkgJiYg
aW1hZyAoeSkgPT0gMDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBib29sCm9wZXJh
dG9yICE9IChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KSBf
X2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgYm9v
bApvcGVyYXRvciAhPSAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgY29uc3QgY29tcGxleDxfRkxU
PiYgeSkKewogIHJldHVybiByZWFsICh4KSAhPSByZWFsICh5KSB8fCBpbWFnICh4KSAhPSBpbWFn
ICh5KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBib29sCm9wZXJhdG9yICE9IChj
b25zdCBjb21wbGV4PF9GTFQ+JiB4LCBfRkxUIHkpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
dGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBib29sCm9wZXJhdG9yICE9IChjb25zdCBjb21w
bGV4PF9GTFQ+JiB4LCBfRkxUIHkpCnsKICByZXR1cm4gcmVhbCAoeCkgIT0geSB8fCBpbWFnICh4
KSAhPSAwOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGJvb2wKb3BlcmF0b3IgIT0g
KF9GTFQgeCwgY29uc3QgY29tcGxleDxfRkxUPiYgeSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGJvb2wKb3BlcmF0b3IgIT0gKF9GTFQgeCwg
Y29uc3QgY29tcGxleDxfRkxUPiYgeSkKewogIHJldHVybiB4ICE9IHJlYWwgKHkpIHx8IGltYWcg
KHkpICE9IDA7Cn0KCiAKZXh0ZXJuICJDIiBkb3VibGUgaHlwb3QgKGRvdWJsZSwgZG91YmxlKSBf
X2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgX0ZM
VAphYnMgKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
dGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBfRkxUCmFicyAoY29uc3QgY29tcGxleDxfRkxU
PiYgeCkKewogIHJldHVybiBoeXBvdCAocmVhbCAoeCksIGltYWcgKHgpKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9GTFQ+IGlubGluZSBfRkxUCmFyZyAoY29uc3QgY29tcGxleDxfRkxUPiYgeCkgX19h
dHRyaWJ1dGVfXyAoKGNvbnN0KSk7Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIF9GTFQK
YXJnIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4KQp7CiAgcmV0dXJuIGF0YW4yIChpbWFnICh4KSwg
cmVhbCAoeCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4K
cG9sYXIgKF9GTFQgciwgX0ZMVCB0KSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRl
IDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpwb2xhciAoX0ZMVCByLCBfRkxUIHQp
CnsKICByZXR1cm4gY29tcGxleDxfRkxUPiAociAqIGNvcyAodCksIHIgKiBzaW4gKHQpKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+CmNvbmogKGNvbnN0IGNv
bXBsZXg8X0ZMVD4mIHgpICBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFz
cyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpjb25qIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4
KSAKewogIHJldHVybiBjb21wbGV4PF9GTFQ+IChyZWFsICh4KSwgLWltYWcgKHgpKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBfRkxUCm5vcm0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4m
IHgpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGlu
ZSBfRkxUCm5vcm0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpCnsKICByZXR1cm4gcmVhbCAoeCkg
KiByZWFsICh4KSArIGltYWcgKHgpICogaW1hZyAoeCk7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBf
RkxUPiBjb21wbGV4PF9GTFQ+CiAgb3BlcmF0b3IgLyAoY29uc3QgY29tcGxleDxfRkxUPiYsIGNv
bnN0IGNvbXBsZXg8X0ZMVD4mKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKdGVtcGxhdGUgPGNs
YXNzIF9GTFQ+IGNvbXBsZXg8X0ZMVD4KICBvcGVyYXRvciAvIChfRkxULCBjb25zdCBjb21wbGV4
PF9GTFQ+JikgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBj
b21wbGV4PF9GTFQ+CiAgY29zIChjb25zdCBjb21wbGV4PF9GTFQ+JikgX19hdHRyaWJ1dGVfXyAo
KGNvbnN0KSk7CnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBjb21wbGV4PF9GTFQ+CiAgY29zaCAoY29u
c3QgY29tcGxleDxfRkxUPiYpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwp0ZW1wbGF0ZSA8Y2xh
c3MgX0ZMVD4gY29tcGxleDxfRkxUPgogIGV4cCAoY29uc3QgY29tcGxleDxfRkxUPiYpIF9fYXR0
cmlidXRlX18gKChjb25zdCkpOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxUPgog
IGxvZyAoY29uc3QgY29tcGxleDxfRkxUPiYpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxUPgogIHBvdyAoY29uc3QgY29tcGxleDxfRkxU
PiYsIGNvbnN0IGNvbXBsZXg8X0ZMVD4mKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKdGVtcGxh
dGUgPGNsYXNzIF9GTFQ+IGNvbXBsZXg8X0ZMVD4KICBwb3cgKGNvbnN0IGNvbXBsZXg8X0ZMVD4m
LCBfRkxUKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGNv
bXBsZXg8X0ZMVD4KICBwb3cgKGNvbnN0IGNvbXBsZXg8X0ZMVD4mLCBpbnQpIF9fYXR0cmlidXRl
X18gKChjb25zdCkpOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxUPgogIHBvdyAo
X0ZMVCwgY29uc3QgY29tcGxleDxfRkxUPiYpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxUPgogIHNpbiAoY29uc3QgY29tcGxleDxfRkxU
PiYpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxl
eDxfRkxUPgogIHNpbmggKGNvbnN0IGNvbXBsZXg8X0ZMVD4mKSBfX2F0dHJpYnV0ZV9fICgoY29u
c3QpKTsKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGNvbXBsZXg8X0ZMVD4KICBzcXJ0IChjb25zdCBj
b21wbGV4PF9GTFQ+JikgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0ZMVD4gaXN0cmVhbSYgb3BlcmF0b3IgPj4gKGlzdHJlYW0mLCBjb21wbGV4PF9GTFQ+Jik7CnRl
bXBsYXRlIDxjbGFzcyBfRkxUPiBvc3RyZWFtJiBvcGVyYXRvciA8PCAob3N0cmVhbSYsIGNvbnN0
IGNvbXBsZXg8X0ZMVD4mKTsKfSAgCgogCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvc3RkL2Zjb21wbGV4LmgiIDEgMwogCiAKCiAKIAogCiAKIAoK
IAogCiAKIAoKIAogCiAKCiAKIAogCiAKIAoKIAogCgoKI2RlZmluZSBfX0ZDT01QTEVYX18KCgoj
cHJhZ21hIGludGVyZmFjZSAiZmNvbXBsZXgiCgoKZXh0ZXJuICJDKysiIHsKY2xhc3MgY29tcGxl
eDxmbG9hdD4KewpwdWJsaWM6CiAgY29tcGxleCAoZmxvYXQgciA9IDAsIGZsb2F0IGkgPSAwKTog
cmUgKHIpLCBpbSAoaSkgeyB9CiAgZXhwbGljaXQgY29tcGxleCAoY29uc3QgY29tcGxleDxkb3Vi
bGU+JiByKTsKICBleHBsaWNpdCBjb21wbGV4IChjb25zdCBjb21wbGV4PGxvbmcgZG91YmxlPiYg
cik7CgogIGNvbXBsZXgmIG9wZXJhdG9yKz0gKGNvbnN0IGNvbXBsZXgmIHIpIHsgcmV0dXJuIF9f
ZG9hcGwgKHRoaXMsIHIpOyB9CiAgY29tcGxleCYgb3BlcmF0b3ItPSAoY29uc3QgY29tcGxleCYg
cikgeyByZXR1cm4gX19kb2FtaSAodGhpcywgcik7IH0KICBjb21wbGV4JiBvcGVyYXRvcio9IChj
b25zdCBjb21wbGV4JiByKSB7IHJldHVybiBfX2RvYW1sICh0aGlzLCByKTsgfQogIGNvbXBsZXgm
IG9wZXJhdG9yLz0gKGNvbnN0IGNvbXBsZXgmIHIpIHsgcmV0dXJuIF9fZG9hZHYgKHRoaXMsIHIp
OyB9CgogIGZsb2F0IHJlYWwgKCkgY29uc3QgeyByZXR1cm4gcmU7IH0KICBmbG9hdCBpbWFnICgp
IGNvbnN0IHsgcmV0dXJuIGltOyB9CnByaXZhdGU6CiAgZmxvYXQgcmUsIGltOwoKICBmcmllbmQg
Y29tcGxleCYgX19kb2FwbDw+IChjb21wbGV4ICosIGNvbnN0IGNvbXBsZXgmKTsKICBmcmllbmQg
Y29tcGxleCYgX19kb2FtaTw+IChjb21wbGV4ICosIGNvbnN0IGNvbXBsZXgmKTsKICBmcmllbmQg
Y29tcGxleCYgX19kb2FtbDw+IChjb21wbGV4ICosIGNvbnN0IGNvbXBsZXgmKTsKICBmcmllbmQg
Y29tcGxleCYgX19kb2Fkdjw+IChjb21wbGV4ICosIGNvbnN0IGNvbXBsZXgmKTsKCgogIGZyaWVu
ZCBpbmxpbmUgY29tcGxleCBvcGVyYXRvciArIChjb25zdCBjb21wbGV4JiB4LCBmbG9hdCB5KQog
ICAgeyByZXR1cm4gb3BlcmF0b3IrPD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGluZSBjb21wbGV4
IG9wZXJhdG9yICsgKGZsb2F0IHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVy
YXRvcis8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgLSAoY29u
c3QgY29tcGxleCYgeCwgZmxvYXQgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yLTw+ICh4LCB5KTsg
fQogIGZyaWVuZCBpbmxpbmUgY29tcGxleCBvcGVyYXRvciAtIChmbG9hdCB4LCBjb25zdCBjb21w
bGV4JiB5KQogICAgeyByZXR1cm4gb3BlcmF0b3ItPD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGlu
ZSBjb21wbGV4IG9wZXJhdG9yICogKGNvbnN0IGNvbXBsZXgmIHgsIGZsb2F0IHkpCiAgICB7IHJl
dHVybiBvcGVyYXRvcio8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0
b3IgKiAoZmxvYXQgeCwgY29uc3QgY29tcGxleCYgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yKjw+
ICh4LCB5KTsgfQogIGZyaWVuZCBpbmxpbmUgY29tcGxleCBvcGVyYXRvciAvIChjb25zdCBjb21w
bGV4JiB4LCBmbG9hdCB5KQogICAgeyByZXR1cm4gb3BlcmF0b3IvPD4gKHgsIHkpOyB9CiAgZnJp
ZW5kIGlubGluZSBjb21wbGV4IG9wZXJhdG9yIC8gKGZsb2F0IHgsIGNvbnN0IGNvbXBsZXgmIHkp
CiAgICB7IHJldHVybiBvcGVyYXRvci88PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGJvb2wg
b3BlcmF0b3IgPT0gKGNvbnN0IGNvbXBsZXgmIHgsIGZsb2F0IHkpCiAgICB7IHJldHVybiBvcGVy
YXRvcj09PD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yID09IChmbG9h
dCB4LCBjb25zdCBjb21wbGV4JiB5KQogICAgeyByZXR1cm4gb3BlcmF0b3I9PTw+ICh4LCB5KTsg
fQogIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgY29tcGxleCYgeCwgZmxv
YXQgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yIT08PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5l
IGJvb2wgb3BlcmF0b3IgIT0gKGZsb2F0IHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVy
biBvcGVyYXRvciE9PD4gKHgsIHkpOyB9Cgp9Owp9ICAKCgojIDM5NiAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8y
Ljk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGQvY29tcGxleHQuaCIgMiAzCgojIDEg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RkL2Rjb21w
bGV4LmgiIDEgMwogCiAKCiAKIAogCiAKIAoKIAogCiAKIAoKIAogCiAKCiAKIAogCiAKIAoKIAog
CgoKI2RlZmluZSBfX0RDT01QTEVYX18KCgojcHJhZ21hIGludGVyZmFjZSAiZGNvbXBsZXgiCgoK
ZXh0ZXJuICJDKysiIHsKY2xhc3MgY29tcGxleDxkb3VibGU+CnsKcHVibGljOgogIGNvbXBsZXgg
KGRvdWJsZSByID0gMCwgZG91YmxlIGkgPSAwKTogcmUgKHIpLCBpbSAoaSkgeyB9CiAgY29tcGxl
eCAoY29uc3QgY29tcGxleDxmbG9hdD4mIHIpOiByZSAoci5yZWFsICgpKSwgaW0gKHIuaW1hZyAo
KSkgeyB9CiAgZXhwbGljaXQgY29tcGxleCAoY29uc3QgY29tcGxleDxsb25nIGRvdWJsZT4mIHIp
OwoKICBjb21wbGV4JiBvcGVyYXRvcis9IChjb25zdCBjb21wbGV4JiByKSB7IHJldHVybiBfX2Rv
YXBsICh0aGlzLCByKTsgfQogIGNvbXBsZXgmIG9wZXJhdG9yLT0gKGNvbnN0IGNvbXBsZXgmIHIp
IHsgcmV0dXJuIF9fZG9hbWkgKHRoaXMsIHIpOyB9CiAgY29tcGxleCYgb3BlcmF0b3IqPSAoY29u
c3QgY29tcGxleCYgcikgeyByZXR1cm4gX19kb2FtbCAodGhpcywgcik7IH0KICBjb21wbGV4JiBv
cGVyYXRvci89IChjb25zdCBjb21wbGV4JiByKSB7IHJldHVybiBfX2RvYWR2ICh0aGlzLCByKTsg
fQoKICBkb3VibGUgcmVhbCAoKSBjb25zdCB7IHJldHVybiByZTsgfQogIGRvdWJsZSBpbWFnICgp
IGNvbnN0IHsgcmV0dXJuIGltOyB9CnByaXZhdGU6CiAgZG91YmxlIHJlLCBpbTsKCiAgZnJpZW5k
IGNvbXBsZXgmIF9fZG9hcGw8PiAoY29tcGxleCAqLCBjb25zdCBjb21wbGV4Jik7CiAgZnJpZW5k
IGNvbXBsZXgmIF9fZG9hbWk8PiAoY29tcGxleCAqLCBjb25zdCBjb21wbGV4Jik7CiAgZnJpZW5k
IGNvbXBsZXgmIF9fZG9hbWw8PiAoY29tcGxleCAqLCBjb25zdCBjb21wbGV4Jik7CiAgZnJpZW5k
IGNvbXBsZXgmIF9fZG9hZHY8PiAoY29tcGxleCAqLCBjb25zdCBjb21wbGV4Jik7CgoKICBmcmll
bmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgKyAoY29uc3QgY29tcGxleCYgeCwgZG91YmxlIHkp
CiAgICB7IHJldHVybiBvcGVyYXRvcis8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBs
ZXggb3BlcmF0b3IgKyAoZG91YmxlIHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBv
cGVyYXRvcis8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgLSAo
Y29uc3QgY29tcGxleCYgeCwgZG91YmxlIHkpCiAgICB7IHJldHVybiBvcGVyYXRvci08PiAoeCwg
eSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgLSAoZG91YmxlIHgsIGNvbnN0
IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVyYXRvci08PiAoeCwgeSk7IH0KICBmcmllbmQg
aW5saW5lIGNvbXBsZXggb3BlcmF0b3IgKiAoY29uc3QgY29tcGxleCYgeCwgZG91YmxlIHkpCiAg
ICB7IHJldHVybiBvcGVyYXRvcio8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXgg
b3BlcmF0b3IgKiAoZG91YmxlIHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVy
YXRvcio8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgLyAoY29u
c3QgY29tcGxleCYgeCwgZG91YmxlIHkpCiAgICB7IHJldHVybiBvcGVyYXRvci88PiAoeCwgeSk7
IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgLyAoZG91YmxlIHgsIGNvbnN0IGNv
bXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVyYXRvci88PiAoeCwgeSk7IH0KICBmcmllbmQgaW5s
aW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IGNvbXBsZXgmIHgsIGRvdWJsZSB5KQogICAgeyBy
ZXR1cm4gb3BlcmF0b3I9PTw+ICh4LCB5KTsgfQogIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRv
ciA9PSAoZG91YmxlIHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVyYXRvcj09
PD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBjb21w
bGV4JiB4LCBkb3VibGUgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yIT08PiAoeCwgeSk7IH0KICBm
cmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGRvdWJsZSB4LCBjb25zdCBjb21wbGV4JiB5
KQogICAgeyByZXR1cm4gb3BlcmF0b3IhPTw+ICh4LCB5KTsgfQoKfTsKCmlubGluZSBjb21wbGV4
PGZsb2F0Pjo6Y29tcGxleCAoY29uc3QgY29tcGxleDxkb3VibGU+JiByKQo6IHJlIChyLnJlYWwg
KCkpLCBpbSAoci5pbWFnICgpKQp7IH0KfSAgCgoKIyAzOTcgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4z
Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RkL2NvbXBsZXh0LmgiIDIgMwoKIyAxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0ZC9sZGNvbXBsZXgu
aCIgMSAzCiAKIAoKIAogCiAKIAogCgogCiAKIAogCgogCiAKIAoKIAogCiAKIAogCgogCiAKCgoj
ZGVmaW5lIF9fTERDT01QTEVYX18KCgojcHJhZ21hIGludGVyZmFjZSAibGRjb21wbGV4IgoKCmV4
dGVybiAiQysrIiB7CmNsYXNzIGNvbXBsZXg8bG9uZyBkb3VibGU+CnsKcHVibGljOgogIGNvbXBs
ZXggKGxvbmcgZG91YmxlIHIgPSAwLCBsb25nIGRvdWJsZSBpID0gMCk6IHJlIChyKSwgaW0gKGkp
IHsgfQogIGNvbXBsZXggKGNvbnN0IGNvbXBsZXg8ZmxvYXQ+JiByKTogcmUgKHIucmVhbCAoKSks
IGltIChyLmltYWcgKCkpIHsgfQogIGNvbXBsZXggKGNvbnN0IGNvbXBsZXg8ZG91YmxlPiYgcik6
IHJlIChyLnJlYWwgKCkpLCBpbSAoci5pbWFnICgpKSB7IH0KCiAgY29tcGxleCYgb3BlcmF0b3Ir
PSAoY29uc3QgY29tcGxleCYgcikgeyByZXR1cm4gX19kb2FwbCAodGhpcywgcik7IH0KICBjb21w
bGV4JiBvcGVyYXRvci09IChjb25zdCBjb21wbGV4JiByKSB7IHJldHVybiBfX2RvYW1pICh0aGlz
LCByKTsgfQogIGNvbXBsZXgmIG9wZXJhdG9yKj0gKGNvbnN0IGNvbXBsZXgmIHIpIHsgcmV0dXJu
IF9fZG9hbWwgKHRoaXMsIHIpOyB9CiAgY29tcGxleCYgb3BlcmF0b3IvPSAoY29uc3QgY29tcGxl
eCYgcikgeyByZXR1cm4gX19kb2FkdiAodGhpcywgcik7IH0KCiAgbG9uZyBkb3VibGUgcmVhbCAo
KSBjb25zdCB7IHJldHVybiByZTsgfQogIGxvbmcgZG91YmxlIGltYWcgKCkgY29uc3QgeyByZXR1
cm4gaW07IH0KcHJpdmF0ZToKICBsb25nIGRvdWJsZSByZSwgaW07CgogIGZyaWVuZCBjb21wbGV4
JiBfX2RvYXBsPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4
JiBfX2RvYW1pPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4
JiBfX2RvYW1sPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4
JiBfX2RvYWR2PD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwoKCiAgZnJpZW5kIGlubGlu
ZSBjb21wbGV4IG9wZXJhdG9yICsgKGNvbnN0IGNvbXBsZXgmIHgsIGxvbmcgZG91YmxlIHkpCiAg
ICB7IHJldHVybiBvcGVyYXRvcis8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXgg
b3BlcmF0b3IgKyAobG9uZyBkb3VibGUgeCwgY29uc3QgY29tcGxleCYgeSkKICAgIHsgcmV0dXJu
IG9wZXJhdG9yKzw+ICh4LCB5KTsgfQogIGZyaWVuZCBpbmxpbmUgY29tcGxleCBvcGVyYXRvciAt
IChjb25zdCBjb21wbGV4JiB4LCBsb25nIGRvdWJsZSB5KQogICAgeyByZXR1cm4gb3BlcmF0b3It
PD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGluZSBjb21wbGV4IG9wZXJhdG9yIC0gKGxvbmcgZG91
YmxlIHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVyYXRvci08PiAoeCwgeSk7
IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgKiAoY29uc3QgY29tcGxleCYgeCwg
bG9uZyBkb3VibGUgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yKjw+ICh4LCB5KTsgfQogIGZyaWVu
ZCBpbmxpbmUgY29tcGxleCBvcGVyYXRvciAqIChsb25nIGRvdWJsZSB4LCBjb25zdCBjb21wbGV4
JiB5KQogICAgeyByZXR1cm4gb3BlcmF0b3IqPD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGluZSBj
b21wbGV4IG9wZXJhdG9yIC8gKGNvbnN0IGNvbXBsZXgmIHgsIGxvbmcgZG91YmxlIHkpCiAgICB7
IHJldHVybiBvcGVyYXRvci88PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3Bl
cmF0b3IgLyAobG9uZyBkb3VibGUgeCwgY29uc3QgY29tcGxleCYgeSkKICAgIHsgcmV0dXJuIG9w
ZXJhdG9yLzw+ICh4LCB5KTsgfQogIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29u
c3QgY29tcGxleCYgeCwgbG9uZyBkb3VibGUgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yPT08PiAo
eCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGxvbmcgZG91YmxlIHgs
IGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVyYXRvcj09PD4gKHgsIHkpOyB9CiAg
ZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBjb21wbGV4JiB4LCBsb25nIGRv
dWJsZSB5KQogICAgeyByZXR1cm4gb3BlcmF0b3IhPTw+ICh4LCB5KTsgfQogIGZyaWVuZCBpbmxp
bmUgYm9vbCBvcGVyYXRvciAhPSAobG9uZyBkb3VibGUgeCwgY29uc3QgY29tcGxleCYgeSkKICAg
IHsgcmV0dXJuIG9wZXJhdG9yIT08PiAoeCwgeSk7IH0KCn07CgppbmxpbmUgY29tcGxleDxmbG9h
dD46OmNvbXBsZXggKGNvbnN0IGNvbXBsZXg8bG9uZyBkb3VibGU+JiByKQo6IHJlIChyLnJlYWwg
KCkpLCBpbSAoci5pbWFnICgpKQp7IH0KCmlubGluZSBjb21wbGV4PGRvdWJsZT46OmNvbXBsZXgg
KGNvbnN0IGNvbXBsZXg8bG9uZyBkb3VibGU+JiByKQo6IHJlIChyLnJlYWwgKCkpLCBpbSAoci5p
bWFnICgpKQp7IH0KfSAgCgoKIyAzOTggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RkL2NvbXBsZXh0LmgiIDIgMwoKCgojIDcgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
Mi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvY29tcGxleCIgMiAzCgoKZXh0ZXJuICJD
KysiIHsKI2RlZmluZSBfX1NURF9DT01QTEVYCgogCnR5cGVkZWYgY29tcGxleDxmbG9hdD4gZmxv
YXRfY29tcGxleDsKdHlwZWRlZiBjb21wbGV4PGRvdWJsZT4gZG91YmxlX2NvbXBsZXg7CnR5cGVk
ZWYgY29tcGxleDxsb25nIGRvdWJsZT4gbG9uZ19kb3VibGVfY29tcGxleDsKfQoKCiMgOTQgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAyCgoKCiNkZWZp
bmUgQlpfVEhST1cgICAgICAgICAgICAgICAgICAgICAKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgoK
IHVzaW5nIG5hbWVzcGFjZSAgc3RkIDsgCgoKCgoKCiAjZGVmaW5lIF9iel9nbG9iYWwgZXh0ZXJu
CiAjZGVmaW5lIEJaX0dMT0JBTF9JTklUKFgpIAoKCn0gCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9iemRlYnVnLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9ERUJVR19ICgoKIyAx
ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiN1
bmRlZiAJX0FTU0VSVF9ICiN1bmRlZiAJYXNzZXJ0CgoKCgoKCgojZGVmaW5lIAlfQVNTRVJUX0gJ
MQoKCiAKCgoKCiMgNTYgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwoKCmV4dGVybiAiQyIgeyAK
CiAKZXh0ZXJuIHZvaWQgX19hc3NlcnRfZmFpbCAgKF9fY29uc3QgY2hhciAqX19hc3NlcnRpb24s
CgkJCQlfX2NvbnN0IGNoYXIgKl9fZmlsZSwKCQkJCXVuc2lnbmVkIGludCBfX2xpbmUsCgkJCQlf
X2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fbm9yZXR1cm5fXykpOwoKIApleHRlcm4gdm9pZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAgKGlu
dCBfX2Vycm51bSwKCQkJCSAgICAgICBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKCQkJCSAgICAgICB1
bnNpZ25lZCBpbnQgX19saW5lLAoJCQkJICAgICAgIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikg
IHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7Cgp9IAoKI2Rl
ZmluZSBhc3NlcnQoZXhwcikJKCh2b2lkKSAoKGV4cHIpID8gMCA6CShfX2Fzc2VydF9mYWlsIChf
X1NUUklORyhleHByKSwJX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTiksIDAp
KSkKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNTcgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9iemRlYnVnLmgiIDIKCgoKIAojIDEgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zL2luY2x1ZGUvdHlwZWluZm8iIDEgMwogCiAKCgojZGVmaW5lIF9fVFlQRUlO
Rk9fXwoKI3ByYWdtYSBpbnRlcmZhY2UgInR5cGVpbmZvIgoKIyAxICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL2V4Y2VwdGlvbiIgMSAzCiAKIAoKCiNkZWZpbmUgX19FWENFUFRJT05fXwoK
I3ByYWdtYSBpbnRlcmZhY2UgImV4Y2VwdGlvbiIKCmV4dGVybiAiQysrIiB7CgpuYW1lc3BhY2Ug
c3RkIHsKCmNsYXNzIGV4Y2VwdGlvbiB7CnB1YmxpYzoKICBleGNlcHRpb24gKCkgeyB9CiAgdmly
dHVhbCB+ZXhjZXB0aW9uICgpIHsgfQogIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCAoKSBjb25z
dDsKfTsKCmNsYXNzIGJhZF9leGNlcHRpb24gOiBwdWJsaWMgZXhjZXB0aW9uIHsKcHVibGljOgog
IGJhZF9leGNlcHRpb24gKCkgeyB9CiAgdmlydHVhbCB+YmFkX2V4Y2VwdGlvbiAoKSB7IH0KfTsK
CnR5cGVkZWYgdm9pZCAoKnRlcm1pbmF0ZV9oYW5kbGVyKSAoKTsKdHlwZWRlZiB2b2lkICgqdW5l
eHBlY3RlZF9oYW5kbGVyKSAoKTsKCnRlcm1pbmF0ZV9oYW5kbGVyIHNldF90ZXJtaW5hdGUgKHRl
cm1pbmF0ZV9oYW5kbGVyKTsKdm9pZCB0ZXJtaW5hdGUgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwp1bmV4cGVjdGVkX2hhbmRsZXIgc2V0X3VuZXhwZWN0ZWQgKHVuZXhwZWN0ZWRf
aGFuZGxlcik7CnZvaWQgdW5leHBlY3RlZCAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CmJvb2wgdW5jYXVnaHRfZXhjZXB0aW9uICgpOwoKfSAgCgp9ICAKCgojIDkgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zL2luY2x1ZGUvdHlwZWluZm8iIDIgMwoKCmV4dGVybiAiQysrIiB7CgpuYW1l
c3BhY2Ugc3RkIHsKCmNsYXNzIHR5cGVfaW5mbyB7CnByaXZhdGU6CiAgIAogIHR5cGVfaW5mbyYg
b3BlcmF0b3I9IChjb25zdCB0eXBlX2luZm8mKTsKICB0eXBlX2luZm8gKGNvbnN0IHR5cGVfaW5m
byYpOwoKcHJvdGVjdGVkOgogIGV4cGxpY2l0IHR5cGVfaW5mbyAoY29uc3QgY2hhciAqbik6IF9u
YW1lIChuKSB7IH0KCiAgY29uc3QgY2hhciAqX25hbWU7CgpwdWJsaWM6CiAgIAogIHZpcnR1YWwg
fnR5cGVfaW5mbyAoKTsKICAgIAogIGJvb2wgYmVmb3JlIChjb25zdCB0eXBlX2luZm8mIGFyZykg
Y29uc3Q7CiAgY29uc3QgY2hhciogbmFtZSAoKSBjb25zdAogICAgeyByZXR1cm4gX25hbWU7IH0K
ICBib29sIG9wZXJhdG9yPT0gKGNvbnN0IHR5cGVfaW5mbyYgYXJnKSBjb25zdDsKICBib29sIG9w
ZXJhdG9yIT0gKGNvbnN0IHR5cGVfaW5mbyYgYXJnKSBjb25zdDsKfTsKCmlubGluZSBib29sIHR5
cGVfaW5mbzo6Cm9wZXJhdG9yIT0gKGNvbnN0IHR5cGVfaW5mbyYgYXJnKSBjb25zdAp7CiAgcmV0
dXJuICFvcGVyYXRvcj09IChhcmcpOwp9CgpjbGFzcyBiYWRfY2FzdCA6IHB1YmxpYyBleGNlcHRp
b24gewpwdWJsaWM6CiAgYmFkX2Nhc3QoKSB7IH0KICB2aXJ0dWFsIH5iYWRfY2FzdCgpIHsgfQp9
OwoKY2xhc3MgYmFkX3R5cGVpZCA6IHB1YmxpYyBleGNlcHRpb24gewogcHVibGljOgogIGJhZF90
eXBlaWQgKCkgeyB9CiAgdmlydHVhbCB+YmFkX3R5cGVpZCAoKSB7IH0KfTsKCn0gIAoKfSAgCgoj
IDYwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYnpkZWJ1Zy5oIiAy
CgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgoKCgoKZXh0ZXJuICBib29sICBhc3NlcnRGYWls
TW9kZSAgICAgIDsKZXh0ZXJuICBpbnQgICAgICBhc3NlcnRGYWlsQ291bnQgICAgIDsKZXh0ZXJu
ICBpbnQgICAgICBhc3NlcnRTdWNjZXNzQ291bnQgIDsKCgojIDE1MSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2J6ZGVidWcuaCIKCiMgMTg0ICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYnpkZWJ1Zy5oIgoKICAgICNkZWZpbmUgQlpBU1NF
UlQoWCkKICAgICNkZWZpbmUgQlpQUkVDT05ESVRJT04oWCkKICAgICNkZWZpbmUgQlpQT1NUQ09O
RElUSU9OKFgpCiAgICAjZGVmaW5lIEJaU1RBVEVDSEVDSyhYLFkpCiAgICAjZGVmaW5lIEJaUFJF
Q0hFQ0soWCxZKQogICAgI2RlZmluZSBCWl9QUkVfRkFJTAogICAgI2RlZmluZSBCWl9ERUJVR19N
RVNTQUdFKFgpCgoKCiAKIAp2b2lkIF9iel9kZWJ1Z19tYXJrZXIoKTsKCiNkZWZpbmUgQlpfTk9U
X0lNUExFTUVOVEVEKCkgICB7IGNlcnIgPDwgIltCbGl0eisrXSBOb3QgaW1wbGVtZW50ZWQ6IG1v
ZHVsZSAiIDw8IF9fRklMRV9fIDw8ICIgbGluZSAiIDw8IF9fTElORV9fIDw8IGVuZGw7IGV4aXQo
MSk7IH0KCgoKCiNkZWZpbmUgQlpfREVCVUdfVEVNUExBVEVfQVNfU1RSSU5HX0xJVEVSQUwoWCkg
IHR5cGVpZChYKS5uYW1lKCkKIyAyNDcgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9iemRlYnVnLmgiCgoKfSAKCgojIDExNSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L2JsaXR6LmgiIDIKCgoKIyA1MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L2FycmF5LmgiIDIKCgoKCiAKIyAxICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWVtYmxvY2suaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBfX0JaX01F
TUJMT0NLX0hfXwoKCgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L251bXRyYWl0LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKI2RlZmluZSBCWl9OVU1UUkFJVF9ICgoKCgoKbmFtZXNwYWNlICBibGl0eiAg
eyAKCgoKCgoKCgojZGVmaW5lIEJaX1NVTVRZUEUoWCkgICBfYnpfdHlwZW5hbWUgTnVtZXJpY1R5
cGVUcmFpdHM8WD46OlRfc3VtdHlwZQojZGVmaW5lIEJaX0RJRkZUWVBFKFgpICBfYnpfdHlwZW5h
bWUgTnVtZXJpY1R5cGVUcmFpdHM8WD46OlRfZGlmZnR5cGUKI2RlZmluZSBCWl9GTE9BVFRZUEUo
WCkgX2J6X3R5cGVuYW1lIE51bWVyaWNUeXBlVHJhaXRzPFg+OjpUX2Zsb2F0dHlwZQojZGVmaW5l
IEJaX1NJR05FRFRZUEUoWCkgX2J6X3R5cGVuYW1lIE51bWVyaWNUeXBlVHJhaXRzPFg+OjpUX3Np
Z25lZHR5cGUKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgTnVtZXJpY1R5cGVUcmFp
dHMgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZSBUX3N1bXR5cGU7ICAgICAKICAgIHR5
cGVkZWYgUF9udW10eXBlIFRfZGlmZnR5cGU7ICAgIAogICAgdHlwZWRlZiBQX251bXR5cGUgVF9m
bG9hdHR5cGU7ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIHR5
cGVkZWYgUF9udW10eXBlIFRfc2lnbmVkdHlwZTsgIAogICAgZW51bSB7IGhhc1RyaXZpYWxDdG9y
ID0gMCB9OyAgICAgCn07CgojZGVmaW5lIEJaREVDTE5VTVRSQUlUKFgsWSxaLFcsVSkgdGVtcGxh
dGU8PiBjbGFzcyBOdW1lcmljVHlwZVRyYWl0czxYPiB7IHB1YmxpYzogdHlwZWRlZiBZIFRfc3Vt
dHlwZTsgdHlwZWRlZiBaIFRfZGlmZnR5cGU7IHR5cGVkZWYgVyBUX2Zsb2F0dHlwZTsgdHlwZWRl
ZiBVIFRfc2lnbmVkdHlwZTsgZW51bSB7IGhhc1RyaXZpYWxDdG9yID0gMSB9OyB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMg
ODkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9udW10cmFpdC5oIgoK
CiAgICB0ZW1wbGF0ZTw+IGNsYXNzIE51bWVyaWNUeXBlVHJhaXRzPCBib29sID4geyBwdWJsaWM6
IHR5cGVkZWYgIHVuc2lnbmVkICBUX3N1bXR5cGU7IHR5cGVkZWYgIGludCAgVF9kaWZmdHlwZTsg
dHlwZWRlZiAgZmxvYXQgIFRfZmxvYXR0eXBlOyB0eXBlZGVmICBpbnQgIFRfc2lnbmVkdHlwZTsg
ZW51bSB7IGhhc1RyaXZpYWxDdG9yID0gMSB9OyB9IDsKCgp0ZW1wbGF0ZTw+IGNsYXNzIE51bWVy
aWNUeXBlVHJhaXRzPCBjaGFyID4geyBwdWJsaWM6IHR5cGVkZWYgIGludCAgVF9zdW10eXBlOyB0
eXBlZGVmICBpbnQgIFRfZGlmZnR5cGU7IHR5cGVkZWYgIGZsb2F0ICBUX2Zsb2F0dHlwZTsgdHlw
ZWRlZiAgY2hhciAgVF9zaWduZWR0eXBlOyBlbnVtIHsgaGFzVHJpdmlhbEN0b3IgPSAxIH07IH0g
Owp0ZW1wbGF0ZTw+IGNsYXNzIE51bWVyaWNUeXBlVHJhaXRzPCB1bnNpZ25lZCBjaGFyID4geyBw
dWJsaWM6IHR5cGVkZWYgICB1bnNpZ25lZCAgVF9zdW10eXBlOyB0eXBlZGVmICAgaW50ICBUX2Rp
ZmZ0eXBlOyB0eXBlZGVmICAgZmxvYXQgIFRfZmxvYXR0eXBlOyB0eXBlZGVmICBpbnQgIFRfc2ln
bmVkdHlwZTsgZW51bSB7IGhhc1RyaXZpYWxDdG9yID0gMSB9OyB9IDsKdGVtcGxhdGU8PiBjbGFz
cyBOdW1lcmljVHlwZVRyYWl0czwgc2hvcnQgaW50ID4geyBwdWJsaWM6IHR5cGVkZWYgICBpbnQg
IFRfc3VtdHlwZTsgdHlwZWRlZiAgIGludCAgVF9kaWZmdHlwZTsgdHlwZWRlZiAgIGZsb2F0ICBU
X2Zsb2F0dHlwZTsgdHlwZWRlZiAgIHNob3J0IGludCAgVF9zaWduZWR0eXBlOyBlbnVtIHsgaGFz
VHJpdmlhbEN0b3IgPSAxIH07IH0gOwp0ZW1wbGF0ZTw+IGNsYXNzIE51bWVyaWNUeXBlVHJhaXRz
PCBzaG9ydCB1bnNpZ25lZCBpbnQgPiB7IHB1YmxpYzogdHlwZWRlZiAgIHVuc2lnbmVkIGludCAg
VF9zdW10eXBlOyB0eXBlZGVmICAgaW50ICBUX2RpZmZ0eXBlOyB0eXBlZGVmICAgZmxvYXQgIFRf
ZmxvYXR0eXBlOyB0eXBlZGVmICAgaW50ICBUX3NpZ25lZHR5cGU7IGVudW0geyBoYXNUcml2aWFs
Q3RvciA9IDEgfTsgfSA7CnRlbXBsYXRlPD4gY2xhc3MgTnVtZXJpY1R5cGVUcmFpdHM8IGludCA+
IHsgcHVibGljOiB0eXBlZGVmICAgbG9uZyAgVF9zdW10eXBlOyB0eXBlZGVmICAgaW50ICBUX2Rp
ZmZ0eXBlOyB0eXBlZGVmICAgZmxvYXQgIFRfZmxvYXR0eXBlOyB0eXBlZGVmICAgaW50ICBUX3Np
Z25lZHR5cGU7IGVudW0geyBoYXNUcml2aWFsQ3RvciA9IDEgfTsgfSA7CnRlbXBsYXRlPD4gY2xh
c3MgTnVtZXJpY1R5cGVUcmFpdHM8IHVuc2lnbmVkIGludCA+IHsgcHVibGljOiB0eXBlZGVmICAg
dW5zaWduZWQgbG9uZyAgVF9zdW10eXBlOyB0eXBlZGVmICAgaW50ICBUX2RpZmZ0eXBlOyB0eXBl
ZGVmICAgZmxvYXQgIFRfZmxvYXR0eXBlOyB0eXBlZGVmICAgbG9uZyAgVF9zaWduZWR0eXBlOyBl
bnVtIHsgaGFzVHJpdmlhbEN0b3IgPSAxIH07IH0gOwp0ZW1wbGF0ZTw+IGNsYXNzIE51bWVyaWNU
eXBlVHJhaXRzPCBsb25nID4geyBwdWJsaWM6IHR5cGVkZWYgICBsb25nICBUX3N1bXR5cGU7IHR5
cGVkZWYgICBsb25nICBUX2RpZmZ0eXBlOyB0eXBlZGVmICAgZG91YmxlICBUX2Zsb2F0dHlwZTsg
dHlwZWRlZiAgIGxvbmcgIFRfc2lnbmVkdHlwZTsgZW51bSB7IGhhc1RyaXZpYWxDdG9yID0gMSB9
OyB9IDsKdGVtcGxhdGU8PiBjbGFzcyBOdW1lcmljVHlwZVRyYWl0czwgdW5zaWduZWQgbG9uZyA+
IHsgcHVibGljOiB0eXBlZGVmICAgdW5zaWduZWQgbG9uZyAgVF9zdW10eXBlOyB0eXBlZGVmICAg
bG9uZyAgVF9kaWZmdHlwZTsgdHlwZWRlZiAgIGRvdWJsZSAgVF9mbG9hdHR5cGU7IHR5cGVkZWYg
ICBsb25nICBUX3NpZ25lZHR5cGU7IGVudW0geyBoYXNUcml2aWFsQ3RvciA9IDEgfTsgfSA7CnRl
bXBsYXRlPD4gY2xhc3MgTnVtZXJpY1R5cGVUcmFpdHM8IGZsb2F0ID4geyBwdWJsaWM6IHR5cGVk
ZWYgICBkb3VibGUgIFRfc3VtdHlwZTsgdHlwZWRlZiAgIGZsb2F0ICBUX2RpZmZ0eXBlOyB0eXBl
ZGVmICAgZmxvYXQgIFRfZmxvYXR0eXBlOyB0eXBlZGVmICAgZmxvYXQgIFRfc2lnbmVkdHlwZTsg
ZW51bSB7IGhhc1RyaXZpYWxDdG9yID0gMSB9OyB9IDsKdGVtcGxhdGU8PiBjbGFzcyBOdW1lcmlj
VHlwZVRyYWl0czwgZG91YmxlID4geyBwdWJsaWM6IHR5cGVkZWYgICBkb3VibGUgIFRfc3VtdHlw
ZTsgdHlwZWRlZiAgIGRvdWJsZSAgVF9kaWZmdHlwZTsgdHlwZWRlZiAgIGRvdWJsZSAgVF9mbG9h
dHR5cGU7IHR5cGVkZWYgICBkb3VibGUgIFRfc2lnbmVkdHlwZTsgZW51bSB7IGhhc1RyaXZpYWxD
dG9yID0gMSB9OyB9IDsKCgogCiAKCgoKCn0gCgoKIyA2OCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L21lbWJsb2NrLmgiIDIKCgoKIyAxICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNDIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCiMgNzEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9tZW1ibG9jay5oIiAyCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCmVudW0gcHJlZXhp
c3RpbmdNZW1vcnlQb2xpY3kgeyAKICBkdXBsaWNhdGVEYXRhLCAKICBkZWxldGVEYXRhV2hlbkRv
bmUsIAogIG5ldmVyRGVsZXRlRGF0YSAKfTsKCiAKdGVtcGxhdGU8Y2xhc3MgVF90eXBlPiBjbGFz
cyBNZW1vcnlCbG9ja1JlZmVyZW5jZTsKCiAKIAogCiAKdGVtcGxhdGU8Y2xhc3MgUF90eXBlPgpj
bGFzcyBNZW1vcnlCbG9jayB7CgogICAgZnJpZW5kIGNsYXNzIE1lbW9yeUJsb2NrUmVmZXJlbmNl
PFBfdHlwZT47CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfdHlwZSBUX3R5cGU7Cgpwcm90ZWN0ZWQ6
CiAgICBNZW1vcnlCbG9jaygpCiAgICB7CiAgICAgICAgbGVuZ3RoXyA9IDA7CiAgICAgICAgZGF0
YV8gPSAwOwogICAgICAgIGRhdGFCbG9ja0FkZHJlc3NfID0gMDsKICAgICAgICByZWZlcmVuY2Vz
XyA9IDA7CiAgICB9CgogICAgZXhwbGljaXQgIE1lbW9yeUJsb2NrKHNpemVfdCBpdGVtcykKICAg
IHsKICAgICAgICBsZW5ndGhfID0gaXRlbXM7CiAgICAgICAgYWxsb2NhdGUobGVuZ3RoXyk7CgoK
CgoKCiAgICAgICAgIDsKCiAgICAgICAgcmVmZXJlbmNlc18gPSAwOwogICAgfQoKICAgIE1lbW9y
eUJsb2NrKHNpemVfdCBsZW5ndGgsIFRfdHlwZSogX19yZXN0cmljdF9fICBkYXRhKQogICAgewog
ICAgICAgIGxlbmd0aF8gPSBsZW5ndGg7CiAgICAgICAgZGF0YV8gPSBkYXRhOwogICAgICAgIGRh
dGFCbG9ja0FkZHJlc3NfID0gMDsKICAgICAgICByZWZlcmVuY2VzXyA9IDA7CiAgICB9CgogICAg
dmlydHVhbCB+TWVtb3J5QmxvY2soKQogICAgewogICAgICAgIGlmIChkYXRhQmxvY2tBZGRyZXNz
XykgCiAgICAgICAgewoKCgoKCgogICAgICAgICAgICBkZWFsbG9jYXRlKCk7CiAgICAgICAgfQog
ICAgfQoKICAgIHZvaWQgICAgICAgICAgYWRkUmVmZXJlbmNlKCkKICAgIHsgCiAgICAgICAgKyty
ZWZlcmVuY2VzXzsgCgoKCgoKCgogICAgfQoKICAgIFRfdHlwZSogX19yZXN0cmljdF9fICAgICAg
IGRhdGEoKSAKICAgIHsgCiAgICAgICAgcmV0dXJuIGRhdGFfOyAKICAgIH0KCiAgICBjb25zdCBU
X3R5cGUqIF9fcmVzdHJpY3RfXyAgZGF0YSgpICAgICAgY29uc3QKICAgIHsgCiAgICAgICAgcmV0
dXJuIGRhdGFfOyAKICAgIH0KCiAgICBzaXplX3QgICAgICAgIGxlbmd0aCgpICAgIGNvbnN0CiAg
ICB7IAogICAgICAgIHJldHVybiBsZW5ndGhfOyAKICAgIH0KCiAgICB2b2lkICAgICAgICAgICAg
ICByZW1vdmVSZWZlcmVuY2UoKQogICAgewogICAgICAgIC0tcmVmZXJlbmNlc187CgoKCgoKCiAg
ICB9CgogICAgaW50IHJlZmVyZW5jZXMoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiByZWZl
cmVuY2VzXzsKICAgIH0KCnByb3RlY3RlZDoKICAgIGlubGluZSB2b2lkIGFsbG9jYXRlKGludCBs
ZW5ndGgpOwogICAgdm9pZCBkZWFsbG9jYXRlKCk7Cgpwcml2YXRlOiAgICAKICAgIE1lbW9yeUJs
b2NrKGNvbnN0IE1lbW9yeUJsb2NrPFRfdHlwZT4mKQogICAgeyB9CgogICAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgTWVtb3J5QmxvY2s8VF90eXBlPiYpCiAgICB7IH0KCnByaXZhdGU6ICAgIAogICAg
VF90eXBlICogX19yZXN0cmljdF9fICBkYXRhXzsKICAgIFRfdHlwZSAqIF9fcmVzdHJpY3RfXyAg
ZGF0YUJsb2NrQWRkcmVzc187CgoKCgogICAgaW50ICAgICByZWZlcmVuY2VzXzsKCgogICAgc2l6
ZV90ICBsZW5ndGhfOwp9OwoKdGVtcGxhdGU8Y2xhc3MgUF90eXBlPgpjbGFzcyBVbm93bmVkTWVt
b3J5QmxvY2sgOiBwdWJsaWMgTWVtb3J5QmxvY2s8UF90eXBlPiB7CnB1YmxpYzoKICAgIFVub3du
ZWRNZW1vcnlCbG9jayhzaXplX3QgbGVuZ3RoLCBQX3R5cGUqIF9fcmVzdHJpY3RfXyAgZGF0YSkK
ICAgICAgICA6IE1lbW9yeUJsb2NrPFBfdHlwZT4obGVuZ3RoLGRhdGEpCiAgICB7CiAgICB9Cgog
ICAgdmlydHVhbCB+VW5vd25lZE1lbW9yeUJsb2NrKCkKICAgIHsKICAgIH0KfTsKCnRlbXBsYXRl
PGNsYXNzIFBfdHlwZT4KY2xhc3MgTnVsbE1lbW9yeUJsb2NrIDogcHVibGljIE1lbW9yeUJsb2Nr
PFBfdHlwZT4gewpwdWJsaWM6CiAgICBOdWxsTWVtb3J5QmxvY2soKQogICAgeyAKICAgICAgICAg
CiAgICAgICAgIAogICAgICAgIHRoaXMtPmFkZFJlZmVyZW5jZSgpOyAgICAgICAgCiAgICB9Cgog
ICAgdmlydHVhbCB+TnVsbE1lbW9yeUJsb2NrKCkgIAogICAgeyB9Cn07Cgp0ZW1wbGF0ZTxjbGFz
cyBQX3R5cGU+CmNsYXNzIE1lbW9yeUJsb2NrUmVmZXJlbmNlIHsKCnB1YmxpYzoKICAgIHR5cGVk
ZWYgUF90eXBlIFRfdHlwZTsKCnByb3RlY3RlZDoKICAgIFRfdHlwZSAqIF9fcmVzdHJpY3RfXyAg
ZGF0YV87Cgpwcml2YXRlOgogICAgTWVtb3J5QmxvY2s8VF90eXBlPiogYmxvY2tfOwogICAgc3Rh
dGljIE51bGxNZW1vcnlCbG9jazxUX3R5cGU+IG51bGxCbG9ja187CgpwdWJsaWM6CgogICAgTWVt
b3J5QmxvY2tSZWZlcmVuY2UoKQogICAgewogICAgICAgIGJsb2NrXyA9ICZudWxsQmxvY2tfOwog
ICAgICAgIGJsb2NrXy0+YWRkUmVmZXJlbmNlKCk7CiAgICAgICAgZGF0YV8gPSAwOwogICAgfQoK
ICAgIE1lbW9yeUJsb2NrUmVmZXJlbmNlKE1lbW9yeUJsb2NrUmVmZXJlbmNlPFRfdHlwZT4mIHJl
ZikKICAgIHsKICAgICAgICBibG9ja18gPSByZWYuYmxvY2tfOwogICAgICAgIGJsb2NrXy0+YWRk
UmVmZXJlbmNlKCk7CiAgICAgICAgZGF0YV8gPSBibG9ja18tPmRhdGEoKTsKICAgIH0KCiAgICBN
ZW1vcnlCbG9ja1JlZmVyZW5jZShNZW1vcnlCbG9ja1JlZmVyZW5jZTxUX3R5cGU+JiByZWYsIHNp
emVfdCBvZmZzZXQpCiAgICB7CiAgICAgICAgYmxvY2tfID0gcmVmLmJsb2NrXzsKICAgICAgICBi
bG9ja18tPmFkZFJlZmVyZW5jZSgpOwogICAgICAgIGRhdGFfID0gYmxvY2tfLT5kYXRhKCkgKyBv
ZmZzZXQ7CiAgICB9CgogICAgTWVtb3J5QmxvY2tSZWZlcmVuY2Uoc2l6ZV90IGxlbmd0aCwgVF90
eXBlKiBkYXRhLCAKICAgICAgICBwcmVleGlzdGluZ01lbW9yeVBvbGljeSBkZWxldGlvblBvbGlj
eSkKICAgIHsKICAgICAgICAgCgogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAogICAgICAg
ICAKCiAgICAgICAgaWYgKChkZWxldGlvblBvbGljeSA9PSBuZXZlckRlbGV0ZURhdGEpIAogICAg
ICAgICAgfHwgKGRlbGV0aW9uUG9saWN5ID09IGR1cGxpY2F0ZURhdGEpKQogICAgICAgICAgICBi
bG9ja18gPSBuZXcgVW5vd25lZE1lbW9yeUJsb2NrPFRfdHlwZT4obGVuZ3RoLCBkYXRhKTsKICAg
ICAgICBlbHNlIGlmIChkZWxldGlvblBvbGljeSA9PSBkZWxldGVEYXRhV2hlbkRvbmUpCiAgICAg
ICAgICAgIGJsb2NrXyA9IG5ldyBNZW1vcnlCbG9jazxUX3R5cGU+KGxlbmd0aCwgZGF0YSk7CiAg
ICAgICAgYmxvY2tfLT5hZGRSZWZlcmVuY2UoKTsKCgoKCgoKICAgICAgICBkYXRhXyA9IGRhdGE7
CiAgICB9CgogICAgZXhwbGljaXQgIE1lbW9yeUJsb2NrUmVmZXJlbmNlKHNpemVfdCBpdGVtcykK
ICAgIHsKICAgICAgICBibG9ja18gPSBuZXcgTWVtb3J5QmxvY2s8VF90eXBlPihpdGVtcyk7CiAg
ICAgICAgYmxvY2tfLT5hZGRSZWZlcmVuY2UoKTsKICAgICAgICBkYXRhXyA9IGJsb2NrXy0+ZGF0
YSgpOwoKCgoKCgogICAgfQoKICAgIHZvaWQgYmxvY2tSZW1vdmVSZWZlcmVuY2UoKQogICAgewog
ICAgICAgIGJsb2NrXy0+cmVtb3ZlUmVmZXJlbmNlKCk7CiAgICAgICAgaWYgKChibG9ja18tPnJl
ZmVyZW5jZXMoKSA9PSAwKSAmJiAoYmxvY2tfICE9ICZudWxsQmxvY2tfKSkKICAgICAgICB7CgoK
CgoKICAgICAgICAgICAgZGVsZXRlIGJsb2NrXzsKICAgICAgICB9CiAgICB9CgogICB+TWVtb3J5
QmxvY2tSZWZlcmVuY2UoKQogICAgewogICAgICAgIGJsb2NrUmVtb3ZlUmVmZXJlbmNlKCk7CiAg
ICB9CgogICAgaW50IG51bVJlZmVyZW5jZXMoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBi
bG9ja18tPnJlZmVyZW5jZXMoKTsKICAgIH0KCnByb3RlY3RlZDoKCiAgICB2b2lkIGNoYW5nZVRv
TnVsbEJsb2NrKCkKICAgIHsKICAgICAgICBibG9ja1JlbW92ZVJlZmVyZW5jZSgpOwogICAgICAg
IGJsb2NrXyA9ICZudWxsQmxvY2tfOwogICAgICAgIGJsb2NrXy0+YWRkUmVmZXJlbmNlKCk7CiAg
ICAgICAgZGF0YV8gPSAwOwogICAgfQoKICAgIHZvaWQgY2hhbmdlQmxvY2soTWVtb3J5QmxvY2tS
ZWZlcmVuY2U8VF90eXBlPiYgcmVmLCBzaXplX3Qgb2Zmc2V0KQogICAgewogICAgICAgIGJsb2Nr
UmVtb3ZlUmVmZXJlbmNlKCk7CiAgICAgICAgYmxvY2tfID0gcmVmLmJsb2NrXzsKICAgICAgICBi
bG9ja18tPmFkZFJlZmVyZW5jZSgpOwogICAgICAgIGRhdGFfID0gYmxvY2tfLT5kYXRhKCkgKyBv
ZmZzZXQ7CiAgICB9CgogICAgdm9pZCBuZXdCbG9jayhzaXplX3QgaXRlbXMpCiAgICB7CiAgICAg
ICAgYmxvY2tSZW1vdmVSZWZlcmVuY2UoKTsKICAgICAgICBibG9ja18gPSBuZXcgTWVtb3J5Qmxv
Y2s8VF90eXBlPihpdGVtcyk7CiAgICAgICAgYmxvY2tfLT5hZGRSZWZlcmVuY2UoKTsKICAgICAg
ICBkYXRhXyA9IGJsb2NrXy0+ZGF0YSgpOwoKCgoKCiAgICB9Cgpwcml2YXRlOgogICAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgTWVtb3J5QmxvY2tSZWZlcmVuY2U8VF90eXBlPiYpCiAgICB7IH0KfTsK
Cgp9IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWVtYmxv
Y2suY2MiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9NRU1CTE9DS19DQwoK
CiAKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWVtYmxvY2su
aCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDM3NSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21l
bWJsb2NrLmgiCgojIDI3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
bWVtYmxvY2suY2MiIDIKCgoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCnRlbXBsYXRlPGNs
YXNzIFBfdHlwZT4gCk51bGxNZW1vcnlCbG9jazxQX3R5cGU+IE1lbW9yeUJsb2NrUmVmZXJlbmNl
PFBfdHlwZT46Om51bGxCbG9ja187Cgp0ZW1wbGF0ZTxjbGFzcyBQX3R5cGU+CnZvaWQgTWVtb3J5
QmxvY2s8UF90eXBlPjo6ZGVhbGxvY2F0ZSgpCnsKCiAgICBkZWxldGUgW10gZGF0YUJsb2NrQWRk
cmVzc187CiMgNTQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tZW1i
bG9jay5jYyIKCn0KCnRlbXBsYXRlPGNsYXNzIFBfdHlwZT4KaW5saW5lIHZvaWQgTWVtb3J5Qmxv
Y2s8UF90eXBlPjo6YWxsb2NhdGUoaW50IGxlbmd0aCkKewogICAgIDsKCiAgICAgOwoKCiAgICBk
YXRhXyA9ICBuZXcgVF90eXBlW2xlbmd0aF07CiAgICBkYXRhQmxvY2tBZGRyZXNzXyA9IGRhdGFf
OwojIDEwMyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21lbWJsb2Nr
LmNjIgoKfQoKCn0gCgoKIyAzNzMgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9i
bGl0ei9tZW1ibG9jay5oIiAyCgoKCiMgNTYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9hcnJheS5oIiAyCgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L3JhbmdlLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9SQU5HRV9ICgoKCgoKCiAKIyAxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjZXhwcndyYXAuaCIgMQogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDRVhQUldSQVBf
SAoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmNsYXNz
IF9iel9WZWNFeHByIHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9leHByIFRfZXhwcjsKICAgIHR5
cGVkZWYgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlIFRfbnVtdHlwZTsKCgogICAgX2J6X1Zl
Y0V4cHIoVF9leHByIGEpCiAgICAgICAgOiBpdGVyXyhhKQogICAgeyB9CgoKCgoKCgogICAgX2J6
X1ZlY0V4cHIoY29uc3QgX2J6X1ZlY0V4cHI8VF9leHByPiYgYSkKICAgICAgICA6IGl0ZXJfKGEu
aXRlcl8pCiAgICB7IH0KCgogICAgVF9udW10eXBlIG9wZXJhdG9yW10oaW50IGkpIGNvbnN0CiAg
ICB7IHJldHVybiBpdGVyX1tpXTsgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGludCBpKSBj
b25zdAogICAgeyByZXR1cm4gaXRlcl8oaSk7IH0KCiAgICBpbnQgbGVuZ3RoKGludCByZWNvbW1l
bmRlZExlbmd0aCkgY29uc3QKICAgIHsgcmV0dXJuIGl0ZXJfLmxlbmd0aChyZWNvbW1lbmRlZExl
bmd0aCk7IH0KCiAgICBlbnVtIHsgX2J6X3N0YXRpY0xlbmd0aENvdW50ID0gKGludCkgUF9leHBy
OjpfYnpfc3RhdGljTGVuZ3RoQ291bnQgICwKICAgICAgICAgICBfYnpfZHluYW1pY0xlbmd0aENv
dW50ID0gKGludCkgUF9leHByOjpfYnpfZHluYW1pY0xlbmd0aENvdW50ICAsCiAgICAgICAgICAg
X2J6X3N0YXRpY0xlbmd0aCA9IChpbnQpIFBfZXhwcjo6X2J6X3N0YXRpY0xlbmd0aCAgIH07Cgog
ICAgaW50IF9iel9zdWdnZXN0TGVuZ3RoKCkgY29uc3QKICAgIHsgcmV0dXJuIGl0ZXJfLl9iel9z
dWdnZXN0TGVuZ3RoKCk7IH0KCiAgICBib29sICBfYnpfaGFzRmFzdEFjY2VzcygpIGNvbnN0CiAg
ICB7IHJldHVybiBpdGVyXy5fYnpfaGFzRmFzdEFjY2VzcygpOyB9CgogICAgVF9udW10eXBlIF9i
el9mYXN0QWNjZXNzKGludCBpKSBjb25zdAogICAgeyByZXR1cm4gaXRlcl8uX2J6X2Zhc3RBY2Nl
c3MoaSk7IH0KCnByaXZhdGU6CiAgICBfYnpfVmVjRXhwcigpOwoKICAgIFRfZXhwciBpdGVyXzsK
fTsKCn0gCgoKIyA1OCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Jh
bmdlLmgiIDIKCgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
d3JhcC1jbGltaXRzLmgiIDEKCiNkZWZpbmUgQlpfV1JBUF9DTElNSVRTX0gKCgogCiMgMSAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9jbGltaXRzIiAxIDMK
IAogCgoKI2RlZmluZSBfX0NMSU1JVFNfXwojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1
ZGUvbGltaXRzLmgiIDEgMwogCgoKIAoKCiNkZWZpbmUgX0dDQ19MSU1JVFNfSF8KCgogCiMgMSAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAzCiAKCgoKCiNkZWZp
bmUgX0dDQ19ORVhUX0xJTUlUU19ICQkKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRl
L2xpbWl0cy5oIiAxIDMKIAoKCiAKCiMgMTE0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRl
L2xpbWl0cy5oIiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCiNkZWZpbmUgX0xJQkNfTElNSVRTX0hfCTEKCgoKCiAKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgojZGVmaW5lIAlfQklUU19QT1NJWDFfTElNX0gJMQoKCiAKCiAKI2RlZmluZSBfUE9TSVhfQUlP
X0xJU1RJT19NQVgJMgoKIAojZGVmaW5lIF9QT1NJWF9BSU9fTUFYCQkxCgogCiNkZWZpbmUgCV9Q
T1NJWF9BUkdfTUFYCQk0MDk2CgogCiNkZWZpbmUgCV9QT1NJWF9DSElMRF9NQVgJNgoKIAojZGVm
aW5lIF9QT1NJWF9ERUxBWVRJTUVSX01BWAkzMgoKIAojZGVmaW5lIAlfUE9TSVhfTElOS19NQVgJ
CTgKCiAKI2RlZmluZSAJX1BPU0lYX01BWF9DQU5PTgkyNTUKCiAKCiNkZWZpbmUgCV9QT1NJWF9N
QVhfSU5QVVQJMjU1CgogCiNkZWZpbmUgX1BPU0lYX01RX09QRU5fTUFYCTgKCiAKI2RlZmluZSBf
UE9TSVhfTVFfUFJJT19NQVgJMzIKCiAKI2RlZmluZSAJX1BPU0lYX05HUk9VUFNfTUFYCTAKCiAK
I2RlZmluZSAJX1BPU0lYX09QRU5fTUFYCQkxNgoKIAoKI2RlZmluZSAJX1BPU0lYX0ZEX1NFVFNJ
WkUJX1BPU0lYX09QRU5fTUFYCgogCiNkZWZpbmUgCV9QT1NJWF9OQU1FX01BWAkJMTQKCiAKI2Rl
ZmluZSAJX1BPU0lYX1BBVEhfTUFYCQkyNTUKCiAKI2RlZmluZSAJX1BPU0lYX1BJUEVfQlVGCQk1
MTIKCiAKI2RlZmluZSBfUE9TSVhfUlRTSUdfTUFYCTgKCiAKI2RlZmluZSBfUE9TSVhfU0VNX05T
RU1TX01BWAkyNTYKCiAKI2RlZmluZSBfUE9TSVhfU0VNX1ZBTFVFX01BWAkzMjc2NwoKIAojZGVm
aW5lIF9QT1NJWF9TSUdRVUVVRV9NQVgJMzIKCiAKI2RlZmluZSAJX1BPU0lYX1NTSVpFX01BWAkz
Mjc2NwoKIAojZGVmaW5lIAlfUE9TSVhfU1RSRUFNX01BWAk4CgogCiNkZWZpbmUgCV9QT1NJWF9U
Wk5BTUVfTUFYCTMKCiAKI2RlZmluZSAJX1BPU0lYX1FMSU1JVAkJMQoKIAoKI2RlZmluZSAJX1BP
U0lYX0hJV0FUCQlfUE9TSVhfUElQRV9CVUYKCiAKI2RlZmluZSAJX1BPU0lYX1VJT19NQVhJT1YJ
MTYKCiAKI2RlZmluZSAJX1BPU0lYX1RUWV9OQU1FX01BWAk5CgogCiNkZWZpbmUgX1BPU0lYX1RJ
TUVSX01BWAkzMgoKIAojZGVmaW5lIAlfUE9TSVhfTE9HSU5fTkFNRV9NQVgJOQoKIAojZGVmaW5l
IF9QT1NJWF9DTE9DS1JFU19NSU4JMjAwMDAwMDAKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
bG9jYWxfbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgojZGVmaW5lIF9fdW5kZWZf
TlJfT1BFTgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMwoKI2RlZmlu
ZSBfTElOVVhfTElNSVRTX0gKCiNkZWZpbmUgTlJfT1BFTgkJMTAyNAoKI2RlZmluZSBOR1JPVVBT
X01BWCAgICAgICAzMgkKI2RlZmluZSBBUkdfTUFYICAgICAgIDEzMTA3MgkKI2RlZmluZSBDSElM
RF9NQVggICAgICAgIDk5OSAgICAKI2RlZmluZSBPUEVOX01BWCAgICAgICAgIDI1NgkKI2RlZmlu
ZSBMSU5LX01BWCAgICAgICAgIDEyNwkKI2RlZmluZSBNQVhfQ0FOT04gICAgICAgIDI1NQkKI2Rl
ZmluZSBNQVhfSU5QVVQgICAgICAgIDI1NQkKI2RlZmluZSBOQU1FX01BWCAgICAgICAgIDI1NQkK
I2RlZmluZSBQQVRIX01BWCAgICAgICAgNDA5NQkKI2RlZmluZSBQSVBFX0JVRiAgICAgICAgNDA5
NgkKCiNkZWZpbmUgUlRTSUdfTUFYCSAgMzIKCgojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy9sb2Nh
bF9saW0uaCIgMiAzCgoKIAoKI3VuZGVmIE5SX09QRU4KI3VuZGVmIF9fdW5kZWZfTlJfT1BFTgoK
CiAKI2RlZmluZSBfUE9TSVhfVEhSRUFEX0tFWVNfTUFYCTEyOAogCiNkZWZpbmUgUFRIUkVBRF9L
RVlTX01BWAkxMDI0CgogCiNkZWZpbmUgX1BPU0lYX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElP
TlMJNAogCiNkZWZpbmUgUFRIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMJX1BPU0lYX1RIUkVB
RF9ERVNUUlVDVE9SX0lURVJBVElPTlMKCiAKI2RlZmluZSBfUE9TSVhfVEhSRUFEX1RIUkVBRFNf
TUFYCTY0CiAKI2RlZmluZSBQVEhSRUFEX1RIUkVBRFNfTUFYCTEwMjQKCiAKCiNkZWZpbmUgQUlP
X1BSSU9fREVMVEFfTUFYCTIwCgogCiNkZWZpbmUgUFRIUkVBRF9TVEFDS19NSU4JMTYzODQKIyAx
MjYgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMiAzCgoKCgojZGVmaW5lIFNTSVpF
X01BWAlJTlRfTUFYCgoKCiAKCgoKCgoKCiMgMzAgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAz
CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgojZGVmaW5lIAlfQklUU19QT1NJWDJfTElNX0gJMQoKCiAKI2RlZmluZSAJ
X1BPU0lYMl9CQ19CQVNFX01BWAkJOTkKCiAKI2RlZmluZSAJX1BPU0lYMl9CQ19ESU1fTUFYCQky
MDQ4CgogCiNkZWZpbmUgCV9QT1NJWDJfQkNfU0NBTEVfTUFYCQk5OQoKIAojZGVmaW5lIAlfUE9T
SVgyX0JDX1NUUklOR19NQVgJCTEwMDAKCiAKCgojZGVmaW5lIAlfUE9TSVgyX0NPTExfV0VJR0hU
U19NQVgJMjU1CgogCgoKI2RlZmluZSAJX1BPU0lYMl9FUVVJVl9DTEFTU19NQVgJCTI1NQoKIAoK
I2RlZmluZSAJX1BPU0lYMl9FWFBSX05FU1RfTUFYCQkzMgoKIAojZGVmaW5lIAlfUE9TSVgyX0xJ
TkVfTUFYCQkyMDQ4CgogCgojZGVmaW5lIAlfUE9TSVgyX1JFX0RVUF9NQVgJCTI1NQoKIAoKI2Rl
ZmluZSAJX1BPU0lYMl9DSEFSQ0xBU1NfTkFNRV9NQVgJMjA0OAoKCiAKCgoKCiNkZWZpbmUgCUJD
X0JBU0VfTUFYCQlfUE9TSVgyX0JDX0JBU0VfTUFYCgoKI2RlZmluZSAJQkNfRElNX01BWAkJX1BP
U0lYMl9CQ19ESU1fTUFYCgoKI2RlZmluZSAJQkNfU0NBTEVfTUFYCQlfUE9TSVgyX0JDX1NDQUxF
X01BWAoKCiNkZWZpbmUgCUJDX1NUUklOR19NQVgJCV9QT1NJWDJfQkNfU1RSSU5HX01BWAoKCiNk
ZWZpbmUgCUNPTExfV0VJR0hUU19NQVgJX1BPU0lYMl9DT0xMX1dFSUdIVFNfTUFYCgoKI2RlZmlu
ZSAJRVFVSVZfQ0xBU1NfTUFYCQlfUE9TSVgyX0VRVUlWX0NMQVNTX01BWAoKCiNkZWZpbmUgCUVY
UFJfTkVTVF9NQVgJCV9QT1NJWDJfRVhQUl9ORVNUX01BWAoKCiNkZWZpbmUgCUxJTkVfTUFYCQlf
UE9TSVgyX0xJTkVfTUFYCgoKI2RlZmluZSAJQ0hBUkNMQVNTX05BTUVfTUFYCV9QT1NJWDJfQ0hB
UkNMQVNTX05BTUVfTUFYCgoKIAojZGVmaW5lIAlSRV9EVVBfTUFYICgweDdmZmYpCgoKIyAzNCAi
L3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCgoKCgogCgoKI2RlZmluZSBNQl9MRU5fTUFY
CTYKCgogCgojIDEyMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCgoKCgogIAoKCgoKCgoKCiMg
MTE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCiMgNyAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCgojdW5kZWYgX0dD
Q19ORVhUX0xJTUlUU19ICiMgMTEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0y
Ljk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvbGltaXRz
LmgiIDIgMwoKCgoKCiAKI2RlZmluZSBfTElNSVRTX0hfX18KI2RlZmluZSBfTUFDSF9NQUNITElN
SVRTX0hfCgogCgojZGVmaW5lIENIQVJfQklUIDgKCiAKCgoKCiAKCiNkZWZpbmUgU0NIQVJfTUlO
ICgtMTI4KQoKI2RlZmluZSBTQ0hBUl9NQVggMTI3CgogCgojZGVmaW5lIFVDSEFSX01BWCAyNTUK
CiAKCgoKCgoKCiNkZWZpbmUgQ0hBUl9NSU4gKC0xMjgpCgojZGVmaW5lIENIQVJfTUFYIDEyNwoK
CiAKCiAKI2RlZmluZSBTSFJUX01JTiAoLTMyNzY3LTEpCgojZGVmaW5lIFNIUlRfTUFYIDMyNzY3
CgogCgojZGVmaW5lIFVTSFJUX01BWCA2NTUzNQoKIAoKI2RlZmluZSBfX0lOVF9NQVhfXyAyMTQ3
NDgzNjQ3CgoKI2RlZmluZSBJTlRfTUlOICgtSU5UX01BWC0xKQoKI2RlZmluZSBJTlRfTUFYIF9f
SU5UX01BWF9fCgogCgojZGVmaW5lIFVJTlRfTUFYIChJTlRfTUFYICogMlUgKyAxKQoKIAoKCgoK
CiNkZWZpbmUgX19MT05HX01BWF9fIDIxNDc0ODM2NDdMCgoKCiNkZWZpbmUgTE9OR19NSU4gKC1M
T05HX01BWC0xKQoKI2RlZmluZSBMT05HX01BWCBfX0xPTkdfTUFYX18KCiAKCiNkZWZpbmUgVUxP
TkdfTUFYIChMT05HX01BWCAqIDJVTCArIDEpCgojIDEwNyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
aW5jbHVkZS9saW1pdHMuaCIgMwoKCgoKIAoKCgoKCgoKCgojIDYgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45
NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvY2xpbWl0cyIgMiAzCgoKIyA1ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovd3JhcC1jbGltaXRzLmgiIDIKCgoKCgoK
IyA2MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3JhbmdlLmgiIDIK
CgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAogCiAKIAogCiAKIAoKZW51bSB7IGZyb21TdGFydCA9
ICgtIDIxNDc0ODM2NDcgIC0xKSAsIHRvRW5kID0gKC0gMjE0NzQ4MzY0NyAgLTEpICB9OwoKIApj
bGFzcyBSYW5nZSB7CgpwdWJsaWM6CiAgICAgCiAgICAgCiAgICAgCgogICAgdHlwZWRlZiBpbnQg
VF9udW10eXBlOwoKICAgIGVudW0geyBmcm9tU3RhcnQgPSAoLSAyMTQ3NDgzNjQ3ICAtMSkgLCB0
b0VuZCA9ICgtIDIxNDc0ODM2NDcgIC0xKSAgfTsKCiAgICBSYW5nZSgpCiAgICB7CiAgICAgICAg
Zmlyc3RfID0gZnJvbVN0YXJ0OwogICAgICAgIGxhc3RfID0gdG9FbmQ7CiAgICAgICAgc3RyaWRl
XyA9IDE7CiAgICB9CgogICAgIAoKICAgIFJhbmdlKGNvbnN0IFJhbmdlJiByKQogICAgewogICAg
ICAgIGZpcnN0XyA9IHIuZmlyc3RfOwogICAgICAgIGxhc3RfID0gci5sYXN0XzsKICAgICAgICBz
dHJpZGVfID0gci5zdHJpZGVfOwogICAgfQoKCiAgICBleHBsaWNpdCAgUmFuZ2UoaW50IHNsaWNl
UG9zaXRpb24pCiAgICB7CiAgICAgICAgZmlyc3RfID0gc2xpY2VQb3NpdGlvbjsKICAgICAgICBs
YXN0XyA9IHNsaWNlUG9zaXRpb247CiAgICAgICAgc3RyaWRlXyA9IDE7CiAgICB9CgogICAgUmFu
Z2UoaW50IGZpcnN0LCBpbnQgbGFzdCwgaW50IHN0cmlkZT0xKQogICAgICAgIDogZmlyc3RfKGZp
cnN0KSwgbGFzdF8obGFzdCksIHN0cmlkZV8oc3RyaWRlKQogICAgeyAKICAgICAgICAgOwoKCgog
ICAgICAgICA7CgogICAgfQoKICAgIGludCBmaXJzdChpbnQgbG93UmFuZ2UgPSAwKSBjb25zdAog
ICAgeyAKICAgICAgICBpZiAoZmlyc3RfID09IGZyb21TdGFydCkKICAgICAgICAgICAgcmV0dXJu
IGxvd1JhbmdlOwogICAgICAgIHJldHVybiBmaXJzdF87IAogICAgfQoKICAgIGludCBsYXN0KGlu
dCBoaWdoUmFuZ2UgPSAwKSBjb25zdAogICAgewogICAgICAgIGlmIChsYXN0XyA9PSB0b0VuZCkK
ICAgICAgICAgICAgcmV0dXJuIGhpZ2hSYW5nZTsKICAgICAgICByZXR1cm4gbGFzdF87CiAgICB9
CgogICAgdW5zaWduZWQgbGVuZ3RoKGludCByZWNvbW1lbmRlZExlbmd0aCA9IDApIGNvbnN0CiAg
ICB7CiAgICAgICAgIDsKICAgICAgICAgOwogICAgICAgICA7CiAgICAgICAgcmV0dXJuIChsYXN0
XyAtIGZpcnN0XykgLyBzdHJpZGVfICsgMTsKICAgIH0KCiAgICBpbnQgc3RyaWRlKCkgY29uc3QK
ICAgIHsgcmV0dXJuIHN0cmlkZV87IH0KCiAgICBib29sICBpc0FzY2VuZGluZ0NvbnRpZ3VvdXMo
KSBjb25zdAogICAgewogICAgICAgIHJldHVybiAoZmlyc3RfIDw9IGxhc3RfKSAmJiAoc3RyaWRl
XyA9PSAxKTsKICAgIH0KCiAgICB2b2lkIHNldFJhbmdlKGludCBmaXJzdCwgaW50IGxhc3QsIGlu
dCBzdHJpZGU9MSkKICAgIHsKICAgICAgICAgOwoKCiAgICAgICAgIDsKICAgICAgICBmaXJzdF8g
PSBmaXJzdDsKICAgICAgICBsYXN0XyA9IGxhc3Q7CiAgICAgICAgc3RyaWRlXyA9IHN0cmlkZTsK
ICAgIH0KCiAgICBzdGF0aWMgUmFuZ2UgYWxsKCkgCiAgICB7IHJldHVybiBSYW5nZShmcm9tU3Rh
cnQsdG9FbmQsMSk7IH0KCiAgICBib29sIGlzVW5pdFN0cmlkZSgpIGNvbnN0CiAgICB7IHJldHVy
biBzdHJpZGVfID09IDE7IH0KCiAgICAgCiAgICBSYW5nZSBvcGVyYXRvci0oaW50IHNoaWZ0KSBj
b25zdAogICAgeyAKICAgICAgICAgOwogICAgICAgICA7CiAgICAgICAgcmV0dXJuIFJhbmdlKGZp
cnN0XyAtIHNoaWZ0LCBsYXN0XyAtIHNoaWZ0LCBzdHJpZGVfKTsgCiAgICB9CgogICAgUmFuZ2Ug
b3BlcmF0b3IrKGludCBzaGlmdCkgY29uc3QKICAgIHsgCiAgICAgICAgIDsKICAgICAgICAgOwog
ICAgICAgIHJldHVybiBSYW5nZShmaXJzdF8gKyBzaGlmdCwgbGFzdF8gKyBzaGlmdCwgc3RyaWRl
Xyk7IAogICAgfQoKICAgIGludCBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0CiAgICB7CiAg
ICAgICAgcmV0dXJuIGZpcnN0XyArIGkgKiBzdHJpZGVfOwogICAgfQoKICAgIGludCBvcGVyYXRv
cigpKHVuc2lnbmVkIGkpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGZpcnN0XyArIGkgKiBz
dHJpZGVfOwogICAgfQoKICAgIGZyaWVuZCBpbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3Ry
ZWFtJiBvcywgY29uc3QgUmFuZ2UmIHJhbmdlKQogICAgewogICAgICAgIG9zIDw8ICJSYW5nZSgi
IDw8IHJhbmdlLmZpcnN0KCkgPDwgIiwiIDw8IHJhbmdlLmxhc3QoKSA8PCAiLCIKICAgICAgICAg
ICA8PCByYW5nZS5zdHJpZGUoKSA8PCAiKSI7CgogICAgICAgIHJldHVybiBvczsKICAgIH0KCiAg
ICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgZW51bSB7IF9iel9zdGF0aWNMZW5ndGhD
b3VudCA9IDAsCiAgICAgICAgICAgX2J6X2R5bmFtaWNMZW5ndGhDb3VudCA9IDAsCiAgICAgICAg
ICAgX2J6X3N0YXRpY0xlbmd0aCA9IDAgfTsKCiAgICBib29sICBfYnpfaGFzRmFzdEFjY2Vzcygp
IGNvbnN0CiAgICB7IHJldHVybiBzdHJpZGVfID09IDE7IH0KCiAgICBUX251bXR5cGUgX2J6X2Zh
c3RBY2Nlc3ModW5zaWduZWQgaSkgY29uc3QKICAgIHsgcmV0dXJuIGZpcnN0XyArIGk7IH0KCiAg
ICB1bnNpZ25lZCBfYnpfc3VnZ2VzdExlbmd0aCgpIGNvbnN0CiAgICB7IAogICAgICAgIHJldHVy
biBsZW5ndGgoKTsKICAgIH0KCiAgICBfYnpfVmVjRXhwcjxSYW5nZT4gX2J6X2FzVmVjRXhwcigp
IGNvbnN0CiAgICB7IHJldHVybiBfYnpfVmVjRXhwcjxSYW5nZT4oKnRoaXMpOyB9Cgpwcml2YXRl
OgogICAgaW50IGZpcnN0XywgbGFzdF8sIHN0cmlkZV87Cn07Cgp9IAoKCiMgNjAgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgoKCgogCiMgMSAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rpbnl2ZWMuaCIgMQogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVElOWVZFQ19ICgoKCgoK
CgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2xpc3Rp
bml0LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CiNkZWZpbmUgQlpfTElTVElOSVRfSAoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgY2xhc3MgVF9pdGVyYXRvcj4KY2xhc3MgTGlzdEluaXRpYWxpemVyIHsK
CnB1YmxpYzoKICAgIExpc3RJbml0aWFsaXplcihUX2l0ZXJhdG9yIGl0ZXIpCiAgICAgICAgOiBp
dGVyXyhpdGVyKQogICAgewogICAgfQoKICAgIExpc3RJbml0aWFsaXplcjxUX251bXR5cGUsIFRf
aXRlcmF0b3I+IG9wZXJhdG9yLChUX251bXR5cGUgeCkKICAgIHsKICAgICAgICAqaXRlcl8gPSB4
OwogICAgICAgIHJldHVybiBMaXN0SW5pdGlhbGl6ZXI8VF9udW10eXBlLCBUX2l0ZXJhdG9yPihp
dGVyXyArIDEpOwogICAgfQoKcHJpdmF0ZToKICAgIExpc3RJbml0aWFsaXplcigpOwoKcHJvdGVj
dGVkOgogICAgVF9pdGVyYXRvciBpdGVyXzsKfTsKCnRlbXBsYXRlPGNsYXNzIFRfYXJyYXksIGNs
YXNzIFRfaXRlcmF0b3IgPSB0eXBlbmFtZSAgVF9hcnJheTo6VF9udW10eXBlKj4KY2xhc3MgTGlz
dEluaXRpYWxpemF0aW9uU3dpdGNoIHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFRf
YXJyYXk6OlRfbnVtdHlwZSBUX251bXR5cGU7CgogICAgIAogICAgIAoKICAgIExpc3RJbml0aWFs
aXphdGlvblN3aXRjaChjb25zdCBMaXN0SW5pdGlhbGl6YXRpb25Td2l0Y2g8VF9hcnJheSwKICAg
ICAgICB0eXBlbmFtZSAgVF9hcnJheTo6VF9udW10eXBlKj4mIGxpcykKICAgICAgOiBhcnJheV8o
bGlzLmFycmF5XyksIHZhbHVlXyhsaXMudmFsdWVfKSwgCiAgICAgICAgICB3aXBlT25EZXN0cnVj
dF8odHJ1ZSApCiAgICB7CiAgICAgICAgbGlzLmRpc2FibGUoKTsKICAgIH0KCiAgICBMaXN0SW5p
dGlhbGl6YXRpb25Td2l0Y2goVF9hcnJheSYgYXJyYXksIFRfbnVtdHlwZSB2YWx1ZSkKICAgICAg
ICA6IGFycmF5XyhhcnJheSksIHZhbHVlXyh2YWx1ZSksIHdpcGVPbkRlc3RydWN0Xyh0cnVlICkK
ICAgIHsgfQoKICAgIH5MaXN0SW5pdGlhbGl6YXRpb25Td2l0Y2goKQogICAgewogICAgICAgIGlm
ICh3aXBlT25EZXN0cnVjdF8pCiAgICAgICAgICAgIGFycmF5Xy5pbml0aWFsaXplKHZhbHVlXyk7
CiAgICB9CgogICAgTGlzdEluaXRpYWxpemVyPFRfbnVtdHlwZSwgVF9pdGVyYXRvcj4gb3BlcmF0
b3IsKFRfbnVtdHlwZSB4KQogICAgewogICAgICAgIHdpcGVPbkRlc3RydWN0XyA9IGZhbHNlIDsK
ICAgICAgICBUX2l0ZXJhdG9yIGl0ZXIgPSBhcnJheV8uZ2V0SW5pdGlhbGl6YXRpb25JdGVyYXRv
cigpOwogICAgICAgICppdGVyID0gdmFsdWVfOwogICAgICAgIFRfaXRlcmF0b3IgaXRlcjIgPSBp
dGVyICsgMTsKICAgICAgICAqaXRlcjIgPSB4OwogICAgICAgIHJldHVybiBMaXN0SW5pdGlhbGl6
ZXI8VF9udW10eXBlLCBUX2l0ZXJhdG9yPihpdGVyMiArIDEpOwogICAgfQoKICAgIHZvaWQgZGlz
YWJsZSgpIGNvbnN0CiAgICB7CiAgICAgICAgd2lwZU9uRGVzdHJ1Y3RfID0gZmFsc2UgOwogICAg
fQoKcHJpdmF0ZToKICAgIExpc3RJbml0aWFsaXphdGlvblN3aXRjaCgpOwoKcHJvdGVjdGVkOgog
ICAgVF9hcnJheSYgYXJyYXlfOwogICAgVF9udW10eXBlIHZhbHVlXzsKICAgIG11dGFibGUgYm9v
bCAgd2lwZU9uRGVzdHJ1Y3RfOwp9OwoKfSAKCgoKIyA0OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L3Rpbnl2ZWMuaCIgMgoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei90aW55LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9USU5ZX0gKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKY2xhc3MgX2J6X3RpbnlCYXNlIHsKfTsKCn0gCgoKCiMgNTIgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei90aW55dmVjLmgiIDIKCgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aCwgaW50IE5fc3Ry
aWRlID0gIDEgICA+CmNsYXNzIFRpbnlWZWN0b3JJdGVyOwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlLCBpbnQgTl9sZW5ndGgsIGludCBOX3N0cmlkZSA9ICAxICAgPgpjbGFzcyBUaW55VmVjdG9y
SXRlckNvbnN0OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpjbGFzcyBWZWN0b3I7Cgp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmNsYXNzIF9iel9WZWNFeHByOwoKdGVtcGxhdGU8Y2xhc3MgUF9k
aXN0cmlidXRpb24+CmNsYXNzIFJhbmRvbTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xh
c3MgVmVjdG9yUGljazsKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlw
ZTIsIGludCBOX3Jvd3MsIGludCBOX2NvbHVtbnMsCiAgICBpbnQgTl92ZWNTdHJpZGU+CmNsYXNz
IF9iel9tYXRyaXhWZWN0b3JQcm9kdWN0OwoKCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZSwgaW50IE5fbGVuZ3RoPgpjbGFzcyBUaW55VmVjdG9yIHsKCnB1YmxpYzoKICAgICAKICAgICAK
ICAgICAKCiAgICB0eXBlZGVmIFBfbnVtdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRfbnVtdHlwZTsKICAgIHR5cGVkZWYgVGlueVZlY3RvcjxUX251bXR5cGUsTl9sZW5n
dGg+ICAgICAgICAgICAgICAgVF92ZWN0b3I7CiAgICB0eXBlZGVmIFRpbnlWZWN0b3JJdGVyPFRf
bnVtdHlwZSxOX2xlbmd0aCwxPiAgICAgICAgIFRfaXRlcmF0b3I7CiAgICB0eXBlZGVmIFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8VF9udW10eXBlLE5fbGVuZ3RoLDE+ICAgIFRfY29uc3RJdGVyYXRvcjsK
ICAgIHR5cGVkZWYgVF9pdGVyYXRvciBpdGVyYXRvcjsKICAgIHR5cGVkZWYgVF9jb25zdEl0ZXJh
dG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgZW51bSB7IG51bUVsZW1lbnRzID0gTl9sZW5ndGggfTsK
CiAgICBUaW55VmVjdG9yKCkKICAgIHsgfQoKICAgIH5UaW55VmVjdG9yKCkgCiAgICB7IH0KCiAg
ICBpbmxpbmUgVGlueVZlY3Rvcihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZSxOX2xlbmd0aD4m
IHgpOwoKICAgIGlubGluZSBUaW55VmVjdG9yKFRfbnVtdHlwZSBpbml0VmFsdWUpOwoKICAgIFRp
bnlWZWN0b3IoVF9udW10eXBlIHgwLCBUX251bXR5cGUgeDEpCiAgICB7CiAgICAgICAgZGF0YV9b
MF0gPSB4MDsKICAgICAgICBkYXRhX1sxXSA9IHgxOwogICAgfQoKICAgIFRpbnlWZWN0b3IoVF9u
dW10eXBlIHgwLCBUX251bXR5cGUgeDEsIFRfbnVtdHlwZSB4MikKICAgIHsKICAgICAgICBkYXRh
X1swXSA9IHgwOwogICAgICAgIGRhdGFfWzFdID0geDE7CiAgICAgICAgZGF0YV9bMl0gPSB4MjsK
ICAgIH0KCiAgICBUaW55VmVjdG9yKFRfbnVtdHlwZSB4MCwgVF9udW10eXBlIHgxLCBUX251bXR5
cGUgeDIsCiAgICAgICAgVF9udW10eXBlIHgzKQogICAgewogICAgICAgIGRhdGFfWzBdID0geDA7
CiAgICAgICAgZGF0YV9bMV0gPSB4MTsKICAgICAgICBkYXRhX1syXSA9IHgyOwogICAgICAgIGRh
dGFfWzNdID0geDM7CiAgICB9CgogICAgVGlueVZlY3RvcihUX251bXR5cGUgeDAsIFRfbnVtdHlw
ZSB4MSwgVF9udW10eXBlIHgyLAogICAgICAgIFRfbnVtdHlwZSB4MywgVF9udW10eXBlIHg0KQog
ICAgewogICAgICAgIGRhdGFfWzBdID0geDA7CiAgICAgICAgZGF0YV9bMV0gPSB4MTsKICAgICAg
ICBkYXRhX1syXSA9IHgyOwogICAgICAgIGRhdGFfWzNdID0geDM7CiAgICAgICAgZGF0YV9bNF0g
PSB4NDsKICAgIH0KCiAgICBUaW55VmVjdG9yKFRfbnVtdHlwZSB4MCwgVF9udW10eXBlIHgxLCBU
X251bXR5cGUgeDIsCiAgICAgICAgVF9udW10eXBlIHgzLCBUX251bXR5cGUgeDQsIFRfbnVtdHlw
ZSB4NSkKICAgIHsKICAgICAgICBkYXRhX1swXSA9IHgwOwogICAgICAgIGRhdGFfWzFdID0geDE7
CiAgICAgICAgZGF0YV9bMl0gPSB4MjsKICAgICAgICBkYXRhX1szXSA9IHgzOwogICAgICAgIGRh
dGFfWzRdID0geDQ7CiAgICAgICAgZGF0YV9bNV0gPSB4NTsKICAgIH0KCiAgICBUaW55VmVjdG9y
KFRfbnVtdHlwZSB4MCwgVF9udW10eXBlIHgxLCBUX251bXR5cGUgeDIsCiAgICAgICAgVF9udW10
eXBlIHgzLCBUX251bXR5cGUgeDQsIFRfbnVtdHlwZSB4NSwgVF9udW10eXBlIHg2KQogICAgewog
ICAgICAgIGRhdGFfWzBdID0geDA7CiAgICAgICAgZGF0YV9bMV0gPSB4MTsKICAgICAgICBkYXRh
X1syXSA9IHgyOwogICAgICAgIGRhdGFfWzNdID0geDM7CiAgICAgICAgZGF0YV9bNF0gPSB4NDsK
ICAgICAgICBkYXRhX1s1XSA9IHg1OwogICAgICAgIGRhdGFfWzZdID0geDY7CiAgICB9CgogICAg
VGlueVZlY3RvcihUX251bXR5cGUgeDAsIFRfbnVtdHlwZSB4MSwgVF9udW10eXBlIHgyLAogICAg
ICAgIFRfbnVtdHlwZSB4MywgVF9udW10eXBlIHg0LCBUX251bXR5cGUgeDUsIFRfbnVtdHlwZSB4
NiwKICAgICAgICBUX251bXR5cGUgeDcpCiAgICB7CiAgICAgICAgZGF0YV9bMF0gPSB4MDsKICAg
ICAgICBkYXRhX1sxXSA9IHgxOwogICAgICAgIGRhdGFfWzJdID0geDI7CiAgICAgICAgZGF0YV9b
M10gPSB4MzsKICAgICAgICBkYXRhX1s0XSA9IHg0OwogICAgICAgIGRhdGFfWzVdID0geDU7CiAg
ICAgICAgZGF0YV9bNl0gPSB4NjsKICAgICAgICBkYXRhX1s3XSA9IHg3OwogICAgfQoKICAgIFRp
bnlWZWN0b3IoVF9udW10eXBlIHgwLCBUX251bXR5cGUgeDEsIFRfbnVtdHlwZSB4MiwKICAgICAg
ICBUX251bXR5cGUgeDMsIFRfbnVtdHlwZSB4NCwgVF9udW10eXBlIHg1LCBUX251bXR5cGUgeDYs
CiAgICAgICAgVF9udW10eXBlIHg3LCBUX251bXR5cGUgeDgpCiAgICB7CiAgICAgICAgZGF0YV9b
MF0gPSB4MDsKICAgICAgICBkYXRhX1sxXSA9IHgxOwogICAgICAgIGRhdGFfWzJdID0geDI7CiAg
ICAgICAgZGF0YV9bM10gPSB4MzsKICAgICAgICBkYXRhX1s0XSA9IHg0OwogICAgICAgIGRhdGFf
WzVdID0geDU7CiAgICAgICAgZGF0YV9bNl0gPSB4NjsKICAgICAgICBkYXRhX1s3XSA9IHg3Owog
ICAgICAgIGRhdGFfWzhdID0geDg7CiAgICB9CgogICAgVGlueVZlY3RvcihUX251bXR5cGUgeDAs
IFRfbnVtdHlwZSB4MSwgVF9udW10eXBlIHgyLAogICAgICAgIFRfbnVtdHlwZSB4MywgVF9udW10
eXBlIHg0LCBUX251bXR5cGUgeDUsIFRfbnVtdHlwZSB4NiwKICAgICAgICBUX251bXR5cGUgeDcs
IFRfbnVtdHlwZSB4OCwgVF9udW10eXBlIHg5KQogICAgewogICAgICAgIGRhdGFfWzBdID0geDA7
CiAgICAgICAgZGF0YV9bMV0gPSB4MTsKICAgICAgICBkYXRhX1syXSA9IHgyOwogICAgICAgIGRh
dGFfWzNdID0geDM7CiAgICAgICAgZGF0YV9bNF0gPSB4NDsKICAgICAgICBkYXRhX1s1XSA9IHg1
OwogICAgICAgIGRhdGFfWzZdID0geDY7CiAgICAgICAgZGF0YV9bN10gPSB4NzsKICAgICAgICBk
YXRhX1s4XSA9IHg4OwogICAgICAgIGRhdGFfWzldID0geDk7CiAgICB9CgogICAgVGlueVZlY3Rv
cihUX251bXR5cGUgeDAsIFRfbnVtdHlwZSB4MSwgVF9udW10eXBlIHgyLAogICAgICAgIFRfbnVt
dHlwZSB4MywgVF9udW10eXBlIHg0LCBUX251bXR5cGUgeDUsIFRfbnVtdHlwZSB4NiwKICAgICAg
ICBUX251bXR5cGUgeDcsIFRfbnVtdHlwZSB4OCwgVF9udW10eXBlIHg5LCBUX251bXR5cGUgeDEw
KQogICAgewogICAgICAgIGRhdGFfWzBdID0geDA7CiAgICAgICAgZGF0YV9bMV0gPSB4MTsKICAg
ICAgICBkYXRhX1syXSA9IHgyOwogICAgICAgIGRhdGFfWzNdID0geDM7CiAgICAgICAgZGF0YV9b
NF0gPSB4NDsKICAgICAgICBkYXRhX1s1XSA9IHg1OwogICAgICAgIGRhdGFfWzZdID0geDY7CiAg
ICAgICAgZGF0YV9bN10gPSB4NzsKICAgICAgICBkYXRhX1s4XSA9IHg4OwogICAgICAgIGRhdGFf
WzldID0geDk7CiAgICAgICAgZGF0YV9bMTBdID0geDEwOwogICAgfQoKICAgICAKICAgIHRlbXBs
YXRlPGNsYXNzIFBfZXhwcj4KICAgIGlubGluZSBUaW55VmVjdG9yKF9iel9WZWNFeHByPFBfZXhw
cj4gZXhwcik7CgogICAgVF9pdGVyYXRvciBiZWdpbigpCiAgICB7IHJldHVybiBUX2l0ZXJhdG9y
KCp0aGlzKTsgfQoKICAgIFRfY29uc3RJdGVyYXRvciBiZWdpbigpIGNvbnN0CiAgICB7IHJldHVy
biBUX2NvbnN0SXRlcmF0b3IoKnRoaXMpOyB9CgogICAgIAogICAgIAoKICAgIFRfbnVtdHlwZSAq
IF9fcmVzdHJpY3RfXyAgZGF0YSgpCiAgICB7IHJldHVybiBkYXRhXzsgfQoKICAgIGNvbnN0IFRf
bnVtdHlwZSAqIF9fcmVzdHJpY3RfXyAgZGF0YSgpIGNvbnN0CiAgICB7IHJldHVybiBkYXRhXzsg
fQoKICAgIFRfbnVtdHlwZSAqIF9fcmVzdHJpY3RfXyAgZGF0YUZpcnN0KCkKICAgIHsgcmV0dXJu
IGRhdGFfOyB9CgogICAgY29uc3QgVF9udW10eXBlICogX19yZXN0cmljdF9fICBkYXRhRmlyc3Qo
KSBjb25zdAogICAgeyByZXR1cm4gZGF0YV87IH0KCiAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dAogICAgeyByZXR1cm4gTl9sZW5ndGg7IH0KCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAg
CgogICAgdW5zaWduZWQgICAgICAgIF9iel9zdWdnZXN0TGVuZ3RoKCkgY29uc3QKICAgIHsgcmV0
dXJuIE5fbGVuZ3RoOyB9CgogICAgYm9vbCAgICAgICAgIF9iel9oYXNGYXN0QWNjZXNzKCkgY29u
c3QKICAgIHsgcmV0dXJuIHRydWUgOyB9CgogICAgVF9udW10eXBlJiBfX3Jlc3RyaWN0X18gICAg
ICBfYnpfZmFzdEFjY2Vzcyh1bnNpZ25lZCBpKQogICAgeyByZXR1cm4gZGF0YV9baV07IH0KCiAg
ICBUX251bXR5cGUgICAgICAgX2J6X2Zhc3RBY2Nlc3ModW5zaWduZWQgaSkgY29uc3QKICAgIHsg
cmV0dXJuIGRhdGFfW2ldOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByLCBjbGFzcyBQX3Vw
ZGF0ZXI+CiAgICB2b2lkIF9iel9hc3NpZ24oUF9leHByLCBQX3VwZGF0ZXIpOwoKICAgIF9iel9W
ZWNFeHByPFRfY29uc3RJdGVyYXRvcj4gX2J6X2FzVmVjRXhwcigpIGNvbnN0CiAgICB7IHJldHVy
biBfYnpfVmVjRXhwcjxUX2NvbnN0SXRlcmF0b3I+KGJlZ2luKCkpOyB9CiAgIAogICAgIAogICAg
IAogICAgIAoKICAgIGludCBsZW5ndGhDaGVjayh1bnNpZ25lZCBpKSBjb25zdAogICAgewogICAg
ICAgICA7CgoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3Io
KSh1bnNpZ25lZCBpKSBjb25zdAogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFf
W2ldOwogICAgfQoKICAgIFRfbnVtdHlwZSYgX19yZXN0cmljdF9fICBvcGVyYXRvcigpKHVuc2ln
bmVkIGkpCiAgICB7IAogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2ldOwogICAgfQoK
ICAgIFRfbnVtdHlwZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0CiAgICB7CiAgICAgICAg
IDsKICAgICAgICByZXR1cm4gZGF0YV9baV07CiAgICB9CgogICAgVF9udW10eXBlJiBfX3Jlc3Ry
aWN0X18gIG9wZXJhdG9yW10odW5zaWduZWQgaSkKICAgIHsKICAgICAgICAgOwogICAgICAgIHJl
dHVybiBkYXRhX1tpXTsKICAgIH0KCiAgICAgCiAgICAgCiAgICAgCgogICAgIAogICAgTGlzdElu
aXRpYWxpemF0aW9uU3dpdGNoPFRfdmVjdG9yPiBvcGVyYXRvcj0oVF9udW10eXBlIHgpCiAgICB7
CiAgICAgICAgcmV0dXJuIExpc3RJbml0aWFsaXphdGlvblN3aXRjaDxUX3ZlY3Rvcj4oKnRoaXMs
IHgpOwogICAgfQoKICAgIFRfdmVjdG9yJiBpbml0aWFsaXplKFRfbnVtdHlwZSk7CiAgICBUX3Zl
Y3RvciYgb3BlcmF0b3IrPShUX251bXR5cGUpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yLT0oVF9u
dW10eXBlKTsKICAgIFRfdmVjdG9yJiBvcGVyYXRvcio9KFRfbnVtdHlwZSk7CiAgICBUX3ZlY3Rv
ciYgb3BlcmF0b3IvPShUX251bXR5cGUpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yJT0oVF9udW10
eXBlKTsKICAgIFRfdmVjdG9yJiBvcGVyYXRvcl49KFRfbnVtdHlwZSk7CiAgICBUX3ZlY3RvciYg
b3BlcmF0b3ImPShUX251bXR5cGUpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yfD0oVF9udW10eXBl
KTsKICAgIFRfdmVjdG9yJiBvcGVyYXRvcj4+PShpbnQpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9y
PDw9KGludCk7CgogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gCiAgICBUX3ZlY3RvciYg
b3BlcmF0b3I9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAg
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcis9KGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvci09KGNvbnN0IFRpbnlWZWN0b3I8UF9u
dW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAg
IFRfdmVjdG9yJiBvcGVyYXRvcio9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5n
dGg+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVy
YXRvci89KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvciU9KGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcl49KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRf
dmVjdG9yJiBvcGVyYXRvciY9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+
ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRv
cnw9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcj4+PShjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+CiAgICBUX3ZlY3RvciYgb3BlcmF0b3I8PD0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUyLCBOX2xlbmd0aD4gJik7CgogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF92ZWN0
b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3IrPShjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0
b3ItPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3IqPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7
CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3IvPShjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBU
X3ZlY3RvciYgb3BlcmF0b3IlPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3JePShjb25zdCBWZWN0b3I8
UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYg
b3BlcmF0b3ImPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3J8PShjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3I+
Pj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4gVF92ZWN0b3ImIG9wZXJhdG9yPDw9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiAmKTsK
CiAgICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRvcj0oX2J6
X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBv
cGVyYXRvcis9KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHBy
PiBUX3ZlY3RvciYgb3BlcmF0b3ItPShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRl
PGNsYXNzIFBfZXhwcj4gVF92ZWN0b3ImIG9wZXJhdG9yKj0oX2J6X1ZlY0V4cHI8UF9leHByPik7
CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRvci89KF9iel9WZWNF
eHByPFBfZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3ZlY3RvciYgb3BlcmF0
b3IlPShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gVF92
ZWN0b3ImIG9wZXJhdG9yXj0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRvciY9KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAg
dGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3ZlY3RvciYgb3BlcmF0b3J8PShfYnpfVmVjRXhwcjxQ
X2V4cHI+KTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gVF92ZWN0b3ImIG9wZXJhdG9yPj49
KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3ZlY3Rv
ciYgb3BlcmF0b3I8PD0oX2J6X1ZlY0V4cHI8UF9leHByPik7CgogICAgIAogICAgdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CiAgICBUX3Zl
Y3RvciYgb3BlcmF0b3IrPShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvci09KGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgog
ICAgVF92ZWN0b3ImIG9wZXJhdG9yKj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsK
ICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CiAgICBUX3ZlY3RvciYgb3BlcmF0b3IvPShj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvciU9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBl
Mj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgogICAgVF92ZWN0b3ImIG9wZXJh
dG9yXj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CiAgICBUX3ZlY3RvciYgb3BlcmF0b3ImPShjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9y
JiBvcGVyYXRvcnw9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUyPgogICAgVF92ZWN0b3ImIG9wZXJhdG9yPj49KGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgogICAg
VF92ZWN0b3ImIG9wZXJhdG9yPDw9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4gJik7Cgog
ICAgIAogICAgVF92ZWN0b3ImIG9wZXJhdG9yPShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0
b3IrPShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3ItPShSYW5nZSk7CiAgICBUX3ZlY3Rv
ciYgb3BlcmF0b3IqPShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3IvPShSYW5nZSk7CiAg
ICBUX3ZlY3RvciYgb3BlcmF0b3IlPShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3JePShS
YW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3ImPShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3Bl
cmF0b3J8PShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3I+Pj0oUmFuZ2UpOwogICAgVF92
ZWN0b3ImIG9wZXJhdG9yPDw9KFJhbmdlKTsKCiAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAg
Z2V0SW5pdGlhbGl6YXRpb25JdGVyYXRvcigpCiAgICB7IHJldHVybiBkYXRhRmlyc3QoKTsgfQoK
cHJpdmF0ZToKICAgIFRfbnVtdHlwZSBkYXRhX1tOX2xlbmd0aF07Cn07CgoKIAogCgp0ZW1wbGF0
ZTxjbGFzcyBUPgpjbGFzcyBUaW55VmVjdG9yPFQsMD4gewp9OwoKfSAKCiMgMSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rpbnl2ZWNpdGVyLmgiIDEKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9USU5ZVkVDSVRFUl9ICgoK
CgoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwg
aW50IE5fbGVuZ3RoLCBpbnQgTl9zdHJpZGU+CmNsYXNzIFRpbnlWZWN0b3JJdGVyIHsKcHVibGlj
OgogICAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBlOwoKICAgIGV4cGxpY2l0ICBUaW55VmVj
dG9ySXRlcihUaW55VmVjdG9yPFRfbnVtdHlwZSwgTl9sZW5ndGg+JiB4KQogICAgICAgIDogZGF0
YV8oeC5kYXRhKCkpCiAgICB7IH0KCgogICAgVGlueVZlY3Rvckl0ZXIoY29uc3QgVGlueVZlY3Rv
ckl0ZXI8VF9udW10eXBlLCBOX2xlbmd0aCwgTl9zdHJpZGU+JiBpdGVyKQogICAgICAgIDogZGF0
YV8oaXRlci5kYXRhXykKICAgIHsKICAgIH0KCgogICAgVF9udW10eXBlIG9wZXJhdG9yW10odW5z
aWduZWQgaSkgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBkYXRhX1tpICog
Tl9zdHJpZGVdOwogICAgfQoKICAgIFRfbnVtdHlwZSYgX19yZXN0cmljdF9fICBvcGVyYXRvcltd
KHVuc2lnbmVkIGkpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gZGF0YV9baSAqIE5f
c3RyaWRlXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKSh1bnNpZ25lZCBpKSBjb25z
dAogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kgKiBOX3N0cmlkZV07CiAg
ICB9CgogICAgVF9udW10eXBlJiBfX3Jlc3RyaWN0X18gIG9wZXJhdG9yKCkodW5zaWduZWQgaSkK
ICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBkYXRhX1tpICogTl9zdHJpZGVdOwogICAg
fQoKICAgIHVuc2lnbmVkIGxlbmd0aCh1bnNpZ25lZCkgY29uc3QKICAgIHsgcmV0dXJuIE5fbGVu
Z3RoOyB9CgogICAgZW51bSB7IF9iel9zdGF0aWNMZW5ndGhDb3VudCA9IDEsCiAgICAgICAgICAg
X2J6X2R5bmFtaWNMZW5ndGhDb3VudCA9IDAsCiAgICAgICAgICAgX2J6X3N0YXRpY0xlbmd0aCA9
IDAgfTsKCiAgICBib29sICBfYnpfaGFzRmFzdEFjY2VzcygpIGNvbnN0CiAgICB7IHJldHVybiB0
cnVlIDsgfQoKICAgIFRfbnVtdHlwZSBfYnpfZmFzdEFjY2Vzcyh1bnNpZ25lZCBpKSBjb25zdAog
ICAgeyByZXR1cm4gZGF0YV9baSAqIE5fc3RyaWRlXTsgfQoKICAgIFRfbnVtdHlwZSYgX2J6X2Zh
c3RBY2Nlc3ModW5zaWduZWQgaSkKICAgIHsgcmV0dXJuIGRhdGFfW2kgKiBOX3N0cmlkZV07IH0K
CiAgICB1bnNpZ25lZCBfYnpfc3VnZ2VzdExlbmd0aCgpIGNvbnN0CiAgICB7IHJldHVybiBOX2xl
bmd0aDsgfQoKcHJpdmF0ZToKICAgIFRfbnVtdHlwZSAqIF9fcmVzdHJpY3RfXyAgZGF0YV87Cn07
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoLCBpbnQgTl9zdHJpZGU+
CmNsYXNzIFRpbnlWZWN0b3JJdGVyQ29uc3QgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlw
ZSBUX251bXR5cGU7CgogICAgZXhwbGljaXQgIFRpbnlWZWN0b3JJdGVyQ29uc3QoY29uc3QgVGlu
eVZlY3RvcjxUX251bXR5cGUsIE5fbGVuZ3RoPiYgeCkKICAgICAgICA6IGRhdGFfKHguZGF0YSgp
KQogICAgeyB9CgoKICAgIFRpbnlWZWN0b3JJdGVyQ29uc3QoY29uc3QgVGlueVZlY3Rvckl0ZXJD
b25zdDxUX251bXR5cGUsIE5fbGVuZ3RoLCAKICAgICAgICBOX3N0cmlkZT4mIGl0ZXIpCiAgICAg
ICAgOiBkYXRhXyhpdGVyLmRhdGFfKQogICAgewogICAgfQoKICAgIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IFRpbnlWZWN0b3JJdGVyQ29uc3Q8VF9udW10eXBlLCBOX2xlbmd0aCwgTl9zdHJpZGU+JiAK
ICAgICAgICBpdGVyKQogICAgewogICAgICAgIGRhdGFfID0gaXRlci5kYXRhXzsKICAgIH0KCgog
ICAgVF9udW10eXBlIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QKICAgIHsKICAgICAgICAg
OwogICAgICAgIHJldHVybiBkYXRhX1tpICogTl9zdHJpZGVdOwogICAgfQoKICAgIFRfbnVtdHlw
ZSBvcGVyYXRvcigpKHVuc2lnbmVkIGkpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKICAgICAgICBy
ZXR1cm4gZGF0YV9baSAqIE5fc3RyaWRlXTsKICAgIH0KCiAgICB1bnNpZ25lZCBsZW5ndGgodW5z
aWduZWQpIGNvbnN0CiAgICB7IHJldHVybiBOX2xlbmd0aDsgfQoKICAgIGVudW0geyBfYnpfc3Rh
dGljTGVuZ3RoQ291bnQgPSAxLAogICAgICAgICAgIF9iel9keW5hbWljTGVuZ3RoQ291bnQgPSAw
LAogICAgICAgICAgIF9iel9zdGF0aWNMZW5ndGggPSAwIH07CgogICAgYm9vbCAgX2J6X2hhc0Zh
c3RBY2Nlc3MoKSBjb25zdAogICAgeyByZXR1cm4gdHJ1ZSA7IH0KCiAgICBUX251bXR5cGUgX2J6
X2Zhc3RBY2Nlc3ModW5zaWduZWQgaSkgY29uc3QKICAgIHsgcmV0dXJuIGRhdGFfW2kgKiBOX3N0
cmlkZV07IH0KCiAgICB1bnNpZ25lZCBfYnpfc3VnZ2VzdExlbmd0aCgpIGNvbnN0CiAgICB7IHJl
dHVybiBOX2xlbmd0aDsgfQoKcHJpdmF0ZToKICAgIGNvbnN0IFRfbnVtdHlwZSAqIF9fcmVzdHJp
Y3RfXyAgZGF0YV87Cn07Cgp9IAoKCiMgNDQzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovdGlueXZlYy5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei90dmVjZ2xvYnMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojZGVmaW5lIEJaX1RWRUNHTE9CU19ICgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tZXRhL21ldGFwcm9nLmgiIDEKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX01FVEFfTUVUQVBST0dfSAoKbmFtZXNw
YWNlICBibGl0eiAgeyAKCiAKCmNsYXNzIF9iel9tZXRhX251bGxPcGVyYW5kIHsKcHVibGljOgog
ICAgX2J6X21ldGFfbnVsbE9wZXJhbmQoKSB7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSBUIG9wZXJhdG9yKyhjb25zdCBUJiBhLCBfYnpfbWV0YV9udWxsT3BlcmFuZCkKeyByZXR1cm4g
YTsgfQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgVCBvcGVyYXRvciooY29uc3QgVCYgYSwgX2J6
X21ldGFfbnVsbE9wZXJhbmQpCnsgcmV0dXJuIGE7IH0KCgogCgp0ZW1wbGF0ZTxpbnQgTjEsIGlu
dCBOMj4KY2xhc3MgX2J6X21ldGFfbWF4IHsKcHVibGljOgogICAgZW51bSB7IG1heCA9IChOMSA+
IE4yKSA/IE4xIDogTjIgfTsKfTsKCiAKCnRlbXBsYXRlPGludCBOMSwgaW50IE4yPgpjbGFzcyBf
YnpfbWV0YV9taW4gewpwdWJsaWM6CiAgICBlbnVtIHsgbWluID0gKE4xIDwgTjIpID8gTjEgOiBO
MiB9Owp9OwoKfSAgCgoKIyAzOSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2Js
aXR6L3R2ZWNnbG9icy5oIiAyCgoKCgoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei90dmNyb3NzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgojZGVmaW5lIEJaX1RWQ1JPU1NfSAoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgoK
CgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZT4KVGlueVZlY3RvcjxUX251bXR5cGUsMz4gY3Jv
c3MoY29uc3QgVGlueVZlY3RvcjxUX251bXR5cGUsMz4mIHgsIAogICAgY29uc3QgVGlueVZlY3Rv
cjxUX251bXR5cGUsMz4mIHkpCnsKICAgIHJldHVybiBUaW55VmVjdG9yPFRfbnVtdHlwZSwzPih4
WzFdKnlbMl0gLSB5WzFdKnhbMl0sCiAgICAgICAgeVswXSp4WzJdIC0geFswXSp5WzJdLCB4WzBd
KnlbMV0gLSB5WzBdKnhbMV0pOwp9CgoKfSAKCgojIDQ2ICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovdHZlY2dsb2JzLmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9pbmNsdWRlL2JsaXR6L21ldGEvZG90LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX01FVEFfRE9UX0gKCgogCiMgMSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Byb21vdGUuaCIgMQogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1BST01PVEVfSAoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKCiAgICAjZGVmaW5lIEJaX1BST01PVEUoQSxCKSBfYnpfdHlwZW5hbWUgcHJvbW90ZV90cmFp
dDxBLEI+OjpUX3Byb21vdGUKCgoKCgoKIAoKCgoKCnRlbXBsYXRlPGNsYXNzIFQ+CnN0cnVjdCBw
cmVjaXNpb25fdHJhaXQgewogICAgZW51bSB7IHByZWNpc2lvblJhbmsgPSAwLAogICAgICAgICAg
IGtub3dQcmVjaXNpb25SYW5rID0gMCB9Owp9OwoKI2RlZmluZSBCWl9ERUNMQVJFX1BSRUNJU0lP
TihULHJhbmspIHRlbXBsYXRlPD4gc3RydWN0IHByZWNpc2lvbl90cmFpdDwgVCA+IHsgZW51bSB7
IHByZWNpc2lvblJhbmsgPSByYW5rLCBrbm93UHJlY2lzaW9uUmFuayA9IDEgfTsgfTsKCgoKCgoK
dGVtcGxhdGU8PiBzdHJ1Y3QgcHJlY2lzaW9uX3RyYWl0PCAgaW50ICA+IHsgZW51bSB7IHByZWNp
c2lvblJhbmsgPSAgMTAwICwga25vd1ByZWNpc2lvblJhbmsgPSAxIH07IH07IAp0ZW1wbGF0ZTw+
IHN0cnVjdCBwcmVjaXNpb25fdHJhaXQ8ICB1bnNpZ25lZCBpbnQgID4geyBlbnVtIHsgcHJlY2lz
aW9uUmFuayA9ICAyMDAgLCBrbm93UHJlY2lzaW9uUmFuayA9IDEgfTsgfTsgCnRlbXBsYXRlPD4g
c3RydWN0IHByZWNpc2lvbl90cmFpdDwgIGxvbmcgID4geyBlbnVtIHsgcHJlY2lzaW9uUmFuayA9
ICAzMDAgLCBrbm93UHJlY2lzaW9uUmFuayA9IDEgfTsgfTsgCnRlbXBsYXRlPD4gc3RydWN0IHBy
ZWNpc2lvbl90cmFpdDwgIHVuc2lnbmVkIGxvbmcgID4geyBlbnVtIHsgcHJlY2lzaW9uUmFuayA9
ICA0MDAgLCBrbm93UHJlY2lzaW9uUmFuayA9IDEgfTsgfTsgCnRlbXBsYXRlPD4gc3RydWN0IHBy
ZWNpc2lvbl90cmFpdDwgIGZsb2F0ICA+IHsgZW51bSB7IHByZWNpc2lvblJhbmsgPSAgNTAwICwg
a25vd1ByZWNpc2lvblJhbmsgPSAxIH07IH07IAp0ZW1wbGF0ZTw+IHN0cnVjdCBwcmVjaXNpb25f
dHJhaXQ8ICBkb3VibGUgID4geyBlbnVtIHsgcHJlY2lzaW9uUmFuayA9ICA2MDAgLCBrbm93UHJl
Y2lzaW9uUmFuayA9IDEgfTsgfTsgCnRlbXBsYXRlPD4gc3RydWN0IHByZWNpc2lvbl90cmFpdDwg
IGxvbmcgZG91YmxlICA+IHsgZW51bSB7IHByZWNpc2lvblJhbmsgPSAgNzAwICwga25vd1ByZWNp
c2lvblJhbmsgPSAxIH07IH07IAoKCnRlbXBsYXRlPD4gc3RydWN0IHByZWNpc2lvbl90cmFpdDwg
IGNvbXBsZXg8ZmxvYXQ+ICA+IHsgZW51bSB7IHByZWNpc2lvblJhbmsgPSAgODAwICwga25vd1By
ZWNpc2lvblJhbmsgPSAxIH07IH07IAp0ZW1wbGF0ZTw+IHN0cnVjdCBwcmVjaXNpb25fdHJhaXQ8
ICBjb21wbGV4PGRvdWJsZT4gID4geyBlbnVtIHsgcHJlY2lzaW9uUmFuayA9ICA5MDAgLCBrbm93
UHJlY2lzaW9uUmFuayA9IDEgfTsgfTsgCnRlbXBsYXRlPD4gc3RydWN0IHByZWNpc2lvbl90cmFp
dDwgIGNvbXBsZXg8bG9uZyBkb3VibGU+ICA+IHsgZW51bSB7IHByZWNpc2lvblJhbmsgPSAgMTAw
MCAsIGtub3dQcmVjaXNpb25SYW5rID0gMSB9OyB9OyAKCgp0ZW1wbGF0ZTxjbGFzcyBUPgpzdHJ1
Y3QgYXV0b3Byb21vdGVfdHJhaXQgewogICAgdHlwZWRlZiBUIFRfbnVtdHlwZTsKfTsKCiNkZWZp
bmUgQlpfREVDTEFSRV9BVVRPUFJPTU9URShUMSxUMikgdGVtcGxhdGU8PiBzdHJ1Y3QgYXV0b3By
b21vdGVfdHJhaXQ8VDE+IHsgdHlwZWRlZiBUMiBUX251bXR5cGU7IH07CgoKCgoKIAogCiAKdGVt
cGxhdGU8PiBzdHJ1Y3QgYXV0b3Byb21vdGVfdHJhaXQ8IGJvb2wgPiB7IHR5cGVkZWYgICBpbnQg
IFRfbnVtdHlwZTsgfTsgCnRlbXBsYXRlPD4gc3RydWN0IGF1dG9wcm9tb3RlX3RyYWl0PCBjaGFy
ID4geyB0eXBlZGVmICAgaW50ICBUX251bXR5cGU7IH07IAp0ZW1wbGF0ZTw+IHN0cnVjdCBhdXRv
cHJvbW90ZV90cmFpdDwgdW5zaWduZWQgY2hhciA+IHsgdHlwZWRlZiAgIGludCAgVF9udW10eXBl
OyB9OyAKdGVtcGxhdGU8PiBzdHJ1Y3QgYXV0b3Byb21vdGVfdHJhaXQ8IHNob3J0IGludCA+IHsg
dHlwZWRlZiAgIGludCAgVF9udW10eXBlOyB9OyAKdGVtcGxhdGU8PiBzdHJ1Y3QgYXV0b3Byb21v
dGVfdHJhaXQ8IHNob3J0IHVuc2lnbmVkIGludCA+IHsgdHlwZWRlZiAgIHVuc2lnbmVkIGludCAg
VF9udW10eXBlOyB9OyAKCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgaW50IHByb21vdGVU
b1QxPgpzdHJ1Y3QgX2J6X3Byb21vdGUyIHsKICAgIHR5cGVkZWYgVDEgVF9wcm9tb3RlOwp9OwoK
dGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgpzdHJ1Y3QgX2J6X3Byb21vdGUyPFQxLFQyLDA+
IHsKICAgIHR5cGVkZWYgVDIgVF9wcm9tb3RlOwp9OwoKdGVtcGxhdGU8Y2xhc3MgVDFfb3JpZywg
Y2xhc3MgVDJfb3JpZz4Kc3RydWN0IHByb21vdGVfdHJhaXQgewogICAgIAogICAgdHlwZWRlZiB0
eXBlbmFtZSAgYXV0b3Byb21vdGVfdHJhaXQ8VDFfb3JpZz46OlRfbnVtdHlwZSBUMTsKICAgIHR5
cGVkZWYgdHlwZW5hbWUgIGF1dG9wcm9tb3RlX3RyYWl0PFQyX29yaWc+OjpUX251bXR5cGUgVDI7
CgogICAgIAogICAgZW51bSB7CiAgICAgIFQxSXNCZXR0ZXIgPQogICAgICAgIChpbnQpIHByZWNp
c2lvbl90cmFpdDxUMT46OnByZWNpc2lvblJhbmsgICA+CiAgICAgICAgICAoaW50KSBwcmVjaXNp
b25fdHJhaXQ8VDI+OjpwcmVjaXNpb25SYW5rICAsCgogICAgIAogICAgICBrbm93Qm90aFJhbmtz
ID0KICAgICAgICAoaW50KSBwcmVjaXNpb25fdHJhaXQ8VDE+Ojprbm93UHJlY2lzaW9uUmFuayAg
CiAgICAgICYmIChpbnQpIHByZWNpc2lvbl90cmFpdDxUMj46Omtub3dQcmVjaXNpb25SYW5rICAs
CgogICAgIAogICAgICBrbm93VDFidXROb3RUMiA9ICAoaW50KSBwcmVjaXNpb25fdHJhaXQ8VDE+
Ojprbm93UHJlY2lzaW9uUmFuayAgCiAgICAgICAgJiYgISgoaW50KSBwcmVjaXNpb25fdHJhaXQ8
VDI+Ojprbm93UHJlY2lzaW9uUmFuayAgKSwKCiAgICAgCiAgICAgIGtub3dUMmJ1dE5vdFQxID0g
IChpbnQpIHByZWNpc2lvbl90cmFpdDxUMj46Omtub3dQcmVjaXNpb25SYW5rICAKICAgICAgICAm
JiAhKChpbnQpIHByZWNpc2lvbl90cmFpdDxUMT46Omtub3dQcmVjaXNpb25SYW5rICApLAoKICAg
ICAKICAgICAgVDFJc0xhcmdlciA9IHNpemVvZihUMSkgPj0gc2l6ZW9mKFQyKSwKCiAgICAgCiAg
ICAgCiAgICAgCiAgICAgIGRlZmF1bHRQcm9tb3Rpb24gPSBrbm93VDFidXROb3RUMiA/IGZhbHNl
ICA6IAogICAgICAgICAoa25vd1QyYnV0Tm90VDEgPyB0cnVlICA6IFQxSXNMYXJnZXIpCiAgICB9
OwoKICAgICAKICAgICAKICAgICAKCiAgICBlbnVtIHsKICAgICAgcHJvbW90ZVRvVDEgPSAoKGlu
dCkga25vd0JvdGhSYW5rcyAgID8gKGludCkgVDFJc0JldHRlciAgCiAgICAgICAgOiAoaW50KSBk
ZWZhdWx0UHJvbW90aW9uICApID8gMSA6IDAKICAgIH07CgogICAgdHlwZWRlZiB0eXBlbmFtZSBf
YnpfcHJvbW90ZTI8VDEsVDIscHJvbW90ZVRvVDE+OjpUX3Byb21vdGUgVF9wcm9tb3RlOwp9OwoK
CgoKCgoKCn0gCgoKIyA0MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L21ldGEvZG90LmgiIDIKCgoKCiAKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8aW50
IE4sIGludCBJPgpjbGFzcyBfYnpfbWV0YV92ZWN0b3JEb3QgewpwdWJsaWM6CiAgICBlbnVtIHsg
bG9vcEZsYWcgPSAoSSA8IE4tMSkgPyAxIDogMCB9OwoKICAgIHRlbXBsYXRlPGNsYXNzIFRfZXhw
cjEsIGNsYXNzIFRfZXhwcjI+CiAgICBzdGF0aWMgaW5saW5lIHR5cGVuYW1lICBwcm9tb3RlX3Ry
YWl0PCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlICwgCiAgICAgICAgdHlwZW5hbWUgIFRf
ZXhwcjI6OlRfbnVtdHlwZSA+OjpUX3Byb21vdGUgCiAgICBmKGNvbnN0IFRfZXhwcjEmIGEsIGNv
bnN0IFRfZXhwcjImIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGFbSV0gKiBiW0ldCiAgICAgICAg
ICAgICsgX2J6X21ldGFfdmVjdG9yRG90PGxvb3BGbGFnICogTiwgbG9vcEZsYWcgKiAoSSsxKT46
OmYoYSxiKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIxLCBjbGFzcyBUX2V4cHIy
PgogICAgc3RhdGljIGlubGluZSB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgdHlwZW5hbWUgIFRf
ZXhwcjE6OlRfbnVtdHlwZSAsIAogICAgICAgIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5cGUg
Pjo6VF9wcm9tb3RlIAogICAgZl92YWx1ZV9yZWYoVF9leHByMSBhLCBjb25zdCBUX2V4cHIyJiBi
KQogICAgewogICAgICAgIHJldHVybiBhW0ldICogYltJXQogICAgICAgICAgICArIF9iel9tZXRh
X3ZlY3RvckRvdDxsb29wRmxhZyAqIE4sIGxvb3BGbGFnICogKEkrMSk+OjpmKGEsYik7CiAgICB9
CgogICAgdGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9leHByMj4KICAgIHN0YXRpYyBp
bmxpbmUgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5
cGUgLCAKICAgICAgICB0eXBlbmFtZSAgVF9leHByMjo6VF9udW10eXBlID46OlRfcHJvbW90ZSAK
ICAgIGZfcmVmX3ZhbHVlKGNvbnN0IFRfZXhwcjEmIGEsIFRfZXhwcjIgYikKICAgIHsKICAgICAg
ICByZXR1cm4gYVtJXSAqIGJbSV0KICAgICAgICAgICAgKyBfYnpfbWV0YV92ZWN0b3JEb3Q8bG9v
cEZsYWcgKiBOLCBsb29wRmxhZyAqIChJKzEpPjo6ZihhLGIpOwogICAgfQoKICAgIHRlbXBsYXRl
PGNsYXNzIFRfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CiAgICBzdGF0aWMgaW5saW5lIHR5cGVu
YW1lICBwcm9tb3RlX3RyYWl0PCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlICwgCiAgICAg
ICAgUF9udW10eXBlMiA+OjpUX3Byb21vdGUgCiAgICBkb3RXaXRoQXJncyhjb25zdCBUX2V4cHIx
JiBhLCBQX251bXR5cGUyIGkxLCBQX251bXR5cGUyIGkyPTAsCiAgICAgICAgUF9udW10eXBlMiBp
Mz0wLCBQX251bXR5cGUyIGk0PTAsIFBfbnVtdHlwZTIgaTU9MCwgUF9udW10eXBlMiBpNj0wLAog
ICAgICAgIFBfbnVtdHlwZTIgaTc9MCwgUF9udW10eXBlMiBpOD0wLCBQX251bXR5cGUyIGk5PTAs
IFBfbnVtdHlwZTIgaTEwPTApCiAgICB7CiAgICAgICAgcmV0dXJuIGFbSV0gKiBpMSAgCiAgICAg
ICAgICAgICsgX2J6X21ldGFfdmVjdG9yRG90PGxvb3BGbGFnICogTiwgbG9vcEZsYWcgKiAoSSsx
KT46OmRvdFdpdGhBcmdzCiAgICAgICAgICAgICAgICAgKGEsIGkyLCBpMywgaTQsIGk1LCBpNiwg
aTcsIGk4LCBpOSk7CiAgICB9Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9tZXRhX3ZlY3RvckRv
dDwwLDA+IHsKcHVibGljOgogICAgdGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9leHBy
Mj4KICAgIHN0YXRpYyBpbmxpbmUgX2J6X21ldGFfbnVsbE9wZXJhbmQgZihjb25zdCBUX2V4cHIx
JiwgY29uc3QgVF9leHByMiYpCiAgICB7IHJldHVybiBfYnpfbWV0YV9udWxsT3BlcmFuZCgpOyB9
CgogICAgdGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KICAgIHN0YXRp
YyBpbmxpbmUgX2J6X21ldGFfbnVsbE9wZXJhbmQgCiAgICBkb3RXaXRoQXJncyhjb25zdCBUX2V4
cHIxJiBhLCBQX251bXR5cGUyIGkxLCBQX251bXR5cGUyIGkyPTAsCiAgICAgICAgUF9udW10eXBl
MiBpMz0wLCBQX251bXR5cGUyIGk0PTAsIFBfbnVtdHlwZTIgaTU9MCwgUF9udW10eXBlMiBpNj0w
LAogICAgICAgIFBfbnVtdHlwZTIgaTc9MCwgUF9udW10eXBlMiBpOD0wLCBQX251bXR5cGUyIGk5
PTAsIFBfbnVtdHlwZTIgaTEwPTApCiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9tZXRhX251bGxP
cGVyYW5kKCk7IAogICAgfQoKfTsKCn0gCgoKIyA0NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L3R2ZWNnbG9icy5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svaW5jbHVkZS9ibGl0ei9tZXRhL3Byb2R1Y3QuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfTUVUQV9QUk9EVUNUX0gKCgoKCgoKIAoKCm5h
bWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxpbnQgTiwgaW50IEk+CmNsYXNzIF9iel9tZXRh
X3ZlY3RvclByb2R1Y3QgewpwdWJsaWM6CiAgICBlbnVtIHsgbG9vcEZsYWcgPSAoSSA8IE4tMSkg
PyAxIDogMCB9OwoKICAgIHRlbXBsYXRlPGNsYXNzIFRfZXhwcjE+CiAgICBzdGF0aWMgaW5saW5l
IHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlw
ZSA+OjpUX3N1bXR5cGUgCiAgICBmKGNvbnN0IFRfZXhwcjEmIGEpCiAgICB7CiAgICAgICAgcmV0
dXJuIGFbSV0gKiBfYnpfbWV0YV92ZWN0b3JQcm9kdWN0PGxvb3BGbGFnICogTiwgCiAgICAgICAg
ICAgIGxvb3BGbGFnICogKEkrMSk+OjpmKGEpOwogICAgfQp9OwoKdGVtcGxhdGU8PgpjbGFzcyBf
YnpfbWV0YV92ZWN0b3JQcm9kdWN0PDAsMD4gewpwdWJsaWM6CiAgICB0ZW1wbGF0ZTxjbGFzcyBU
X2V4cHIxPgogICAgc3RhdGljIGlubGluZSBfYnpfbWV0YV9udWxsT3BlcmFuZCBmKGNvbnN0IFRf
ZXhwcjEmKQogICAgeyByZXR1cm4gX2J6X21ldGFfbnVsbE9wZXJhbmQoKTsgfQp9OwoKfSAKCgoj
IDQ4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdHZlY2dsb2JzLmgi
IDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21ldGEvc3Vt
LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX01F
VEFfU1VNX0gKCgogCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGludCBOLCBpbnQg
ST4KY2xhc3MgX2J6X21ldGFfdmVjdG9yU3VtIHsKcHVibGljOgogICAgZW51bSB7IGxvb3BGbGFn
ID0gKEkgPCBOLTEpID8gMSA6IDAgfTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIxPgogICAg
c3RhdGljIGlubGluZSB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlCiAgICBmKGNvbnN0IFRf
ZXhwcjEmIGEpCiAgICB7CiAgICAgICAgcmV0dXJuIGFbSV0gKwogICAgICAgICAgICArIF9iel9t
ZXRhX3ZlY3RvclN1bTxsb29wRmxhZyAqIE4sIGxvb3BGbGFnICogKEkrMSk+OjpmKGEpOwogICAg
fQp9OwoKdGVtcGxhdGU8PgpjbGFzcyBfYnpfbWV0YV92ZWN0b3JTdW08MCwwPiB7CnB1YmxpYzoK
ICAgIHRlbXBsYXRlPGNsYXNzIFRfZXhwcjE+CiAgICBzdGF0aWMgaW5saW5lIF9iel9tZXRhX251
bGxPcGVyYW5kIGYoY29uc3QgVF9leHByMSYpCiAgICB7IHJldHVybiBfYnpfbWV0YV9udWxsT3Bl
cmFuZCgpOyB9Cgp9OwoKfSAKCgojIDQ5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovdHZlY2dsb2JzLmgiIDIKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8
Y2xhc3MgVF9udW10eXBlMSwgY2xhc3MgVF9udW10eXBlMiwgaW50IE5fbGVuZ3RoPgppbmxpbmUg
dHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10eXBlMiA+OjpUX3By
b21vdGUgCmRvdChjb25zdCBUaW55VmVjdG9yPFRfbnVtdHlwZTEsIE5fbGVuZ3RoPiYgYSwgCiAg
ICBjb25zdCBUaW55VmVjdG9yPFRfbnVtdHlwZTIsIE5fbGVuZ3RoPiYgYikKewogICAgcmV0dXJu
IF9iel9tZXRhX3ZlY3RvckRvdDxOX2xlbmd0aCwgMD46OmYoYSxiKTsKfQoKdGVtcGxhdGU8Y2xh
c3MgVF9leHByMSwgY2xhc3MgVF9udW10eXBlMiwgaW50IE5fbGVuZ3RoPgppbmxpbmUgdHlwZW5h
bWUgIHByb21vdGVfdHJhaXQ8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUgLCAgVF9udW10
eXBlMiA+OjpUX3Byb21vdGUgCmRvdChfYnpfVmVjRXhwcjxUX2V4cHIxPiBhLCBjb25zdCBUaW55
VmVjdG9yPFRfbnVtdHlwZTIsIE5fbGVuZ3RoPiYgYikKewogICAgcmV0dXJuIF9iel9tZXRhX3Zl
Y3RvckRvdDxOX2xlbmd0aCwgMD46OmZfdmFsdWVfcmVmKGEsYik7Cn0KCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZTEsIGNsYXNzIFRfZXhwcjIsIGludCBOX2xlbmd0aD4KaW5saW5lIHR5cGVuYW1l
ICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5
cGUgPjo6VF9wcm9tb3RlIApkb3QoY29uc3QgVGlueVZlY3RvcjxUX251bXR5cGUxLCBOX2xlbmd0
aD4mIGEsIF9iel9WZWNFeHByPFRfZXhwcjI+IGIpCnsKICAgIHJldHVybiBfYnpfbWV0YV92ZWN0
b3JEb3Q8Tl9sZW5ndGgsIDA+OjpmX3JlZl92YWx1ZShhLGIpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUxLCBpbnQgTl9sZW5ndGg+CmlubGluZSB0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFp
dHM8IFRfbnVtdHlwZTEgPjo6VF9zdW10eXBlIApwcm9kdWN0KGNvbnN0IFRpbnlWZWN0b3I8VF9u
dW10eXBlMSwgTl9sZW5ndGg+JiBhKQp7CiAgICByZXR1cm4gX2J6X21ldGFfdmVjdG9yUHJvZHVj
dDxOX2xlbmd0aCwgMD46OmYoYSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
bGVuZ3RoPgppbmxpbmUgVF9udW10eXBlCnN1bShjb25zdCBUaW55VmVjdG9yPFRfbnVtdHlwZSwg
Tl9sZW5ndGg+JiBhKQp7CiAgICByZXR1cm4gX2J6X21ldGFfdmVjdG9yU3VtPE5fbGVuZ3RoLCAw
Pjo6ZihhKTsKfQoKfSAKCgoKIyA0NDQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei90aW55dmVjLmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L3ZlY3Rvci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDVE9SX0gKCgoKCgoKIAoK
CgoKCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
PiBjbGFzcyBWZWN0b3JJdGVyOwp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IGNsYXNzIFZlY3Rv
ckl0ZXJDb25zdDsKdGVtcGxhdGU8Y2xhc3MgUF9leHByPiAgICBjbGFzcyBfYnpfVmVjRXhwcjsg
ICAgICAgCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gY2xhc3MgVmVjdG9yUGljazsKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlPiBjbGFzcyBSYW5kb207CgogCgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+CmNsYXNzIFZlY3RvciA6IHByb3RlY3RlZCBNZW1vcnlCbG9ja1JlZmVyZW5jZTxQX251
bXR5cGU+IHsKCnB1YmxpYzoKICAgICAKICAgICAKICAgICAKCiAgICB0eXBlZGVmIE1lbW9yeUJs
b2NrUmVmZXJlbmNlPFBfbnVtdHlwZT4gVF9CYXNlOwogICAgdHlwZWRlZiBQX251bXR5cGUgICAg
ICAgICAgICAgICAgICBUX251bXR5cGU7CiAgICB0eXBlZGVmIFZlY3RvcjxUX251bXR5cGU+ICAg
ICAgICAgIFRfdmVjdG9yOwogICAgdHlwZWRlZiBWZWN0b3JJdGVyPFRfbnVtdHlwZT4gICAgICBU
X2l0ZXJhdG9yOwogICAgdHlwZWRlZiBWZWN0b3JJdGVyQ29uc3Q8VF9udW10eXBlPiBUX2NvbnN0
SXRlcmF0b3I7CiAgICB0eXBlZGVmIFZlY3RvclBpY2s8VF9udW10eXBlPiAgICAgIFRfcGljazsK
ICAgIHR5cGVkZWYgVmVjdG9yPGludD4gICAgICAgICAgICAgICAgVF9pbmRleFZlY3RvcjsKCiAg
ICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgVmVjdG9yKCkKICAgIHsgCiAg
ICAgICAgbGVuZ3RoXyA9IDA7CiAgICAgICAgc3RyaWRlXyA9IDA7CiAgICB9CgogICAgIAogICAg
IAogICAgVmVjdG9yKFZlY3RvcjxUX251bXR5cGU+JiB2ZWMpCiAgICAgICAgOiBNZW1vcnlCbG9j
a1JlZmVyZW5jZTxUX251bXR5cGU+KHZlYykKICAgIHsKICAgICAgICBsZW5ndGhfID0gdmVjLmxl
bmd0aF87CiAgICAgICAgc3RyaWRlXyA9IHZlYy5zdHJpZGVfOwogICAgfQoKICAgICAKICAgIFZl
Y3Rvcihjb25zdCBWZWN0b3I8VF9udW10eXBlPiYgdmVjKQogICAgICAgIDogTWVtb3J5QmxvY2tS
ZWZlcmVuY2U8VF9udW10eXBlPgogICAgICAgICAgIChjb25zdF9jYXN0PFZlY3RvcjxUX251bXR5
cGU+JiA+KHZlYykpCiAgICB7CiAgICAgICAgbGVuZ3RoXyA9IHZlYy5sZW5ndGhfOwogICAgICAg
IHN0cmlkZV8gPSB2ZWMuc3RyaWRlXzsKICAgIH0KCiAgICBleHBsaWNpdCAgVmVjdG9yKGludCBs
ZW5ndGgpCiAgICAgICAgOiBNZW1vcnlCbG9ja1JlZmVyZW5jZTxUX251bXR5cGU+KGxlbmd0aCkK
ICAgIHsKICAgICAgICBsZW5ndGhfID0gbGVuZ3RoOwogICAgICAgIHN0cmlkZV8gPSAxOwogICAg
fQoKICAgIFZlY3RvcihWZWN0b3I8VF9udW10eXBlPiYgdmVjLCBSYW5nZSByKQogICAgICAgIDog
TWVtb3J5QmxvY2tSZWZlcmVuY2U8VF9udW10eXBlPih2ZWMsIAogICAgICAgICAgICByLmZpcnN0
KCkgKiB2ZWMuc3RyaWRlKCkpCiAgICB7CiAgICAgICAgIDsKICAgICAgICAgOwoKICAgICAgICBs
ZW5ndGhfID0gKHIubGFzdCh2ZWMubGVuZ3RoKCktMSkgLSByLmZpcnN0KCkpIC8gci5zdHJpZGUo
KSArIDE7CiAgICAgICAgc3RyaWRlXyA9IHZlYy5zdHJpZGVfICogci5zdHJpZGUoKTsKICAgIH0K
CiAgICBWZWN0b3IoaW50IGxlbmd0aCwgVF9udW10eXBlIGluaXRWYWx1ZSkKICAgICAgICA6IE1l
bW9yeUJsb2NrUmVmZXJlbmNlPFRfbnVtdHlwZT4obGVuZ3RoKQogICAgewogICAgICAgIGxlbmd0
aF8gPSBsZW5ndGg7CiAgICAgICAgc3RyaWRlXyA9IDE7CiAgICAgICAgKCp0aGlzKSA9IGluaXRW
YWx1ZTsKICAgIH0KCiAgICBWZWN0b3IoaW50IGxlbmd0aCwgVF9udW10eXBlIGZpcnN0VmFsdWUs
IFRfbnVtdHlwZSBkZWx0YSkKICAgICAgICA6IE1lbW9yeUJsb2NrUmVmZXJlbmNlPFRfbnVtdHlw
ZT4obGVuZ3RoKQogICAgewogICAgICAgIGxlbmd0aF8gPSBsZW5ndGg7CiAgICAgICAgc3RyaWRl
XyA9IDE7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAg
IGRhdGFfW2ldID0gZmlyc3RWYWx1ZSArIGkgKiBkZWx0YTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxj
bGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFZlY3RvcihpbnQgbGVuZ3RoLCBSYW5kb208UF9kaXN0
cmlidXRpb24+JiByYW5kb20pCiAgICAgICAgOiBNZW1vcnlCbG9ja1JlZmVyZW5jZTxUX251bXR5
cGU+KGxlbmd0aCkKICAgIHsKICAgICAgICBsZW5ndGhfID0gbGVuZ3RoOwogICAgICAgIHN0cmlk
ZV8gPSAxOwogICAgICAgICgqdGhpcykgPSByYW5kb207CiAgICB9CgogICAgdGVtcGxhdGU8Y2xh
c3MgUF9leHByPgogICAgVmVjdG9yKF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikKICAgICAgICA6
IE1lbW9yeUJsb2NrUmVmZXJlbmNlPFRfbnVtdHlwZT4oZXhwci5fYnpfc3VnZ2VzdExlbmd0aCgp
KQogICAgewogICAgICAgIGxlbmd0aF8gPSBleHByLl9iel9zdWdnZXN0TGVuZ3RoKCk7CiAgICAg
ICAgc3RyaWRlXyA9IDE7CiAgICAgICAgKCp0aGlzKSA9IGV4cHI7CiAgICB9CgogICAgIAogICAg
IAogICAgIAogICAgVmVjdG9yKGludCBsZW5ndGgsIFRfbnVtdHlwZSogX19yZXN0cmljdF9fICBk
YXRhLCBpbnQgc3RyaWRlID0gMSkKICAgICAgICA6IE1lbW9yeUJsb2NrUmVmZXJlbmNlPFRfbnVt
dHlwZT4obGVuZ3RoLCBkYXRhLCBuZXZlckRlbGV0ZURhdGEpCiAgICB7CiAgICAgICAgbGVuZ3Ro
XyA9IGxlbmd0aDsKICAgICAgICBzdHJpZGVfID0gc3RyaWRlOwogICAgfQoKICAgICAKICAgIFZl
Y3RvcihSYW5nZSByKQogICAgICAgIDogTWVtb3J5QmxvY2tSZWZlcmVuY2U8VF9udW10eXBlPihy
Ll9iel9zdWdnZXN0TGVuZ3RoKCkpCiAgICB7CiAgICAgICAgbGVuZ3RoXyA9IHIuX2J6X3N1Z2dl
c3RMZW5ndGgoKTsKICAgICAgICBzdHJpZGVfID0gMTsKICAgICAgICAoKnRoaXMpID0gX2J6X1Zl
Y0V4cHI8UmFuZ2U+KHIpOwogICAgfQogICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgIAogICAg
IAogICAgIAogICAgIAogICAgIAogICAgIAogICAgIAogICAgdm9pZCAgICAgICAgICAgIGFzc2Vy
dFVuaXRTdHJpZGUoKQogICAgewogICAgICAgICA7CiAgICAgICAgc3RyaWRlXyA9IDE7CiAgICB9
CgogICAgVF9pdGVyYXRvciAgICAgIGJlZ2luKCkKICAgIHsgcmV0dXJuIFRfaXRlcmF0b3IoKnRo
aXMpOyB9CgogICAgVF9jb25zdEl0ZXJhdG9yIGJlZ2luKCkgIGNvbnN0CiAgICB7IHJldHVybiBU
X2NvbnN0SXRlcmF0b3IoKnRoaXMpOyB9CgogICAgVF92ZWN0b3IgICAgICAgIGNvcHkoKSAgIGNv
bnN0OwoKICAgICAKICAgICAKCiAgICBUX251bXR5cGUgKiBfX3Jlc3RyaWN0X18gIGRhdGEoKSAg
CiAgICB7IHJldHVybiBkYXRhXzsgfQoKICAgIGNvbnN0IFRfbnVtdHlwZSAqIF9fcmVzdHJpY3Rf
XyAgZGF0YSgpIGNvbnN0CiAgICB7IHJldHVybiBkYXRhXzsgfQoKICAgIGJvb2wgICAgICAgICBp
c1VuaXRTdHJpZGUoKSBjb25zdAogICAgeyByZXR1cm4gc3RyaWRlXyA9PSAxOyB9CgogICAgaW50
ICAgICAgICBsZW5ndGgoKSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoXzsgfQoKICAgIHZvaWQg
ICAgICAgICAgICBtYWtlVW5pcXVlKCk7CgogICAgIAoKICAgICAKCiAgICB2b2lkICAgICAgICAg
ICAgcmVmZXJlbmNlKFRfdmVjdG9yJik7CgogICAgdm9pZCAgICAgICAgICAgIHJlc2l6ZShpbnQg
bGVuZ3RoKTsKCiAgICB2b2lkICAgICAgICAgICAgcmVzaXplQW5kUHJlc2VydmUoaW50IG5ld0xl
bmd0aCk7CgogICAgIAoKICAgIFRfdmVjdG9yICAgICAgICByZXZlcnNlKCkKICAgIHsgcmV0dXJu
IFRfdmVjdG9yKCp0aGlzLFJhbmdlKGxlbmd0aCgpLTEsMCwtMSkpOyB9CgogICAgaW50ICAgICAg
ICAgICAgIHN0cmlkZSgpIGNvbnN0CiAgICB7IHJldHVybiBzdHJpZGVfOyB9CgogICAgb3BlcmF0
b3IgX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFRfbnVtdHlwZT4gPiAoKSBjb25zdAogICAg
eyByZXR1cm4gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFRfbnVtdHlwZT4gPihiZWdpbigp
KTsgfQoKICAgICAKICAgICAKICAgICAKICAgICAKICAgICAKCiAgICBpbnQgICAgICAgIF9iel9z
dWdnZXN0TGVuZ3RoKCkgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF87IH0KCiAgICBib29sICAg
ICAgICAgX2J6X2hhc0Zhc3RBY2Nlc3MoKSBjb25zdAogICAgeyByZXR1cm4gc3RyaWRlXyA9PSAx
OyB9CgogICAgVF9udW10eXBlJiAgICAgIF9iel9mYXN0QWNjZXNzKGludCBpKQogICAgeyByZXR1
cm4gZGF0YV9baV07IH0KCiAgICBUX251bXR5cGUgICAgICAgX2J6X2Zhc3RBY2Nlc3MoaW50IGkp
IGNvbnN0CiAgICB7IHJldHVybiBkYXRhX1tpXTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhw
ciwgY2xhc3MgUF91cGRhdGVyPgogICAgdm9pZCAgICAgICAgICAgIF9iel9hc3NpZ24oUF9leHBy
LCBQX3VwZGF0ZXIpOwoKICAgIF9iel9WZWNFeHByPFRfY29uc3RJdGVyYXRvcj4gX2J6X2FzVmVj
RXhwcigpIGNvbnN0CiAgICB7IHJldHVybiBfYnpfVmVjRXhwcjxUX2NvbnN0SXRlcmF0b3I+KGJl
Z2luKCkpOyB9CgogICAgIAogICAgIAogICAgIAoKICAgICAKICAgICAKICAgIFRfbnVtdHlwZSAg
ICAgICAgb3BlcmF0b3IoKShpbnQgaSkgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAgICA7
CiAgICAgICAgcmV0dXJuIGRhdGFfW2ldOwogICAgfQoKICAgICAKICAgICAKICAgIFRfbnVtdHlw
ZSYgX19yZXN0cmljdF9fICBvcGVyYXRvcigpKGludCBpKSAKICAgIHsKICAgICAgICAgOwogICAg
ICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2ldOwogICAgfQoKICAgIFRfbnVtdHlwZSAgICAg
ICAgb3BlcmF0b3JbXShpbnQgaSkgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVy
biBkYXRhX1tpICogc3RyaWRlX107CiAgICB9CgogICAgVF9udW10eXBlJiBfX3Jlc3RyaWN0X18g
IG9wZXJhdG9yW10oaW50IGkpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gZGF0YV9b
aSAqIHN0cmlkZV9dOwogICAgfQoKICAgIFRfdmVjdG9yICAgICAgb3BlcmF0b3IoKShSYW5nZSBy
KQogICAgewogICAgICAgIHJldHVybiBUX3ZlY3RvcigqdGhpcywgcik7CiAgICB9CgogICAgVF92
ZWN0b3IgICAgICBvcGVyYXRvcltdKFJhbmdlIHIpCiAgICB7CiAgICAgICAgcmV0dXJuIFRfdmVj
dG9yKCp0aGlzLCByKTsKICAgIH0KCiAgICBUX3BpY2sgICAgICAgIG9wZXJhdG9yKCkoVF9pbmRl
eFZlY3RvciBpKQogICAgewogICAgICAgIHJldHVybiBUX3BpY2soKnRoaXMsIGkpOwogICAgfQoK
ICAgIFRfcGljayAgICAgICAgb3BlcmF0b3JbXShUX2luZGV4VmVjdG9yIGkpCiAgICB7CiAgICAg
ICAgcmV0dXJuIFRfcGljaygqdGhpcywgaSk7CiAgICB9CgogICAgIAoKICAgICAKICAgICAKICAg
ICAKCiAgICAgCiAgICBMaXN0SW5pdGlhbGl6YXRpb25Td2l0Y2g8VF92ZWN0b3IsVF9pdGVyYXRv
cj4gb3BlcmF0b3I9KFRfbnVtdHlwZSB4KQogICAgewogICAgICAgIHJldHVybiBMaXN0SW5pdGlh
bGl6YXRpb25Td2l0Y2g8VF92ZWN0b3IsVF9pdGVyYXRvcj4oKnRoaXMsIHgpOwogICAgfQoKICAg
IFRfaXRlcmF0b3IgZ2V0SW5pdGlhbGl6YXRpb25JdGVyYXRvcigpCiAgICB7IHJldHVybiBiZWdp
bigpOyB9CgogICAgVF92ZWN0b3ImIGluaXRpYWxpemUoVF9udW10eXBlKTsKICAgIFRfdmVjdG9y
JiBvcGVyYXRvcis9KFRfbnVtdHlwZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3ItPShUX251bXR5
cGUpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yKj0oVF9udW10eXBlKTsKICAgIFRfdmVjdG9yJiBv
cGVyYXRvci89KFRfbnVtdHlwZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3IlPShUX251bXR5cGUp
OwogICAgVF92ZWN0b3ImIG9wZXJhdG9yXj0oVF9udW10eXBlKTsKICAgIFRfdmVjdG9yJiBvcGVy
YXRvciY9KFRfbnVtdHlwZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3J8PShUX251bXR5cGUpOwog
ICAgVF92ZWN0b3ImIG9wZXJhdG9yPj49KGludCk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3I8PD0o
aW50KTsgCgogICAgIAogICAKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IFRfdmVjdG9y
JiBvcGVyYXRvcj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+ICYpOwoKICAgICAKICAgICAKICAg
ICAKICAgICAKCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0
b3IrPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3ItPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7
CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3IqPShjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBU
X3ZlY3RvciYgb3BlcmF0b3IvPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3IlPShjb25zdCBWZWN0b3I8
UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYg
b3BlcmF0b3JePShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3ImPShjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3J8
PShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3I+Pj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+ICYpOwog
ICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF92ZWN0b3ImIG9wZXJhdG9yPDw9KGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiAmKTsKCiAgICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+
IFRfdmVjdG9yJiBvcGVyYXRvcj0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRvcis9KF9iel9WZWNFeHByPFBfZXhwcj4pOyAK
ICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gVF92ZWN0b3ImIG9wZXJhdG9yLT0oX2J6X1ZlY0V4
cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRv
cio9KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3Zl
Y3RvciYgb3BlcmF0b3IvPShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRlPGNsYXNz
IFBfZXhwcj4gVF92ZWN0b3ImIG9wZXJhdG9yJT0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRvcl49KF9iel9WZWNFeHByPFBf
ZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3ZlY3RvciYgb3BlcmF0b3ImPShf
YnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gVF92ZWN0b3Im
IG9wZXJhdG9yfD0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHI+IFRfdmVjdG9yJiBvcGVyYXRvcj4+PShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBs
YXRlPGNsYXNzIFBfZXhwcj4gVF92ZWN0b3ImIG9wZXJhdG9yPDw9KF9iel9WZWNFeHByPFBfZXhw
cj4pOwogICAgCiAgICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiAKICAgIFRfdmVj
dG9yJiBvcGVyYXRvcj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+IAogICAgVF92ZWN0b3ImIG9wZXJhdG9yKz0oY29uc3QgVmVj
dG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IAog
ICAgVF92ZWN0b3ImIG9wZXJhdG9yLT0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsK
ICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IAogICAgVF92ZWN0b3ImIG9wZXJhdG9yKj0o
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+IAogICAgVF92ZWN0b3ImIG9wZXJhdG9yLz0oY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CiAgICBUX3ZlY3RvciYgb3Bl
cmF0b3IlPShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcl49KGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgogICAgVF92ZWN0
b3ImIG9wZXJhdG9yJj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CiAgICBUX3ZlY3RvciYgb3BlcmF0b3J8PShjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAg
IFRfdmVjdG9yJiBvcGVyYXRvcj4+PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwog
ICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcjw8PShj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwoKICAgICAKICAgIFRfdmVjdG9yJiBvcGVy
YXRvcj0oUmFuZ2UpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yKz0oUmFuZ2UpOwogICAgVF92ZWN0
b3ImIG9wZXJhdG9yLT0oUmFuZ2UpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yKj0oUmFuZ2UpOwog
ICAgVF92ZWN0b3ImIG9wZXJhdG9yLz0oUmFuZ2UpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yJT0o
UmFuZ2UpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yXj0oUmFuZ2UpOwogICAgVF92ZWN0b3ImIG9w
ZXJhdG9yJj0oUmFuZ2UpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yfD0oUmFuZ2UpOwogICAgVF92
ZWN0b3ImIG9wZXJhdG9yPj49KFJhbmdlKTsKICAgIFRfdmVjdG9yJiBvcGVyYXRvcjw8PShSYW5n
ZSk7CgogICAgIAogICAgdGVtcGxhdGU8Y2xhc3MgUF9kaXN0cmlidXRpb24+CiAgICBUX3ZlY3Rv
ciYgb3BlcmF0b3I9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0
ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcis9KFJhbmRvbTxQ
X2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlv
bj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvci09KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRv
bSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfdmVjdG9yJiBvcGVy
YXRvcio9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvci89KFJhbmRvbTxQX2Rpc3Ry
aWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAg
IFRfdmVjdG9yJiBvcGVyYXRvciU9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAg
ICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcl49
KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rp
c3RyaWJ1dGlvbj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvciY9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlv
bj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfdmVj
dG9yJiBvcGVyYXRvcnw9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CgogICAgIAog
ICAgIAogICAgIAoKIAogCiAKIAogICAgCiAgICB1c2luZyAgICBUX0Jhc2U6OmRhdGFfOwoKcHJp
dmF0ZToKICAgIGludCAgICAgIGxlbmd0aF87CiAgICBpbnQgICAgICBzdHJpZGVfOwp9OwoKIAoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIG9z
LCBjb25zdCBWZWN0b3I8UF9udW10eXBlPiYgeCk7Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+Cm9z
dHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgb3MsIF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcik7
Cgp9IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjaXRl
ci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
ZGVmaW5lIEJaX1ZFQ0lURVJfSAoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgVmVjdG9ySXRlciB7CnB1YmxpYzoKICAgIHR5cGVkZWYg
UF9udW10eXBlIFRfbnVtdHlwZTsKCiAgICBleHBsaWNpdCAgVmVjdG9ySXRlcihWZWN0b3I8UF9u
dW10eXBlPiYgeCkKICAgICAgICA6IGRhdGFfKHguZGF0YSgpKQogICAgewogICAgICAgIHN0cmlk
ZV8gPSB4LnN0cmlkZSgpOwogICAgICAgIGxlbmd0aF8gPSB4Lmxlbmd0aCgpOwogICAgfQoKICAg
IFZlY3Rvckl0ZXIoUF9udW10eXBlKiBfX3Jlc3RyaWN0X18gIGRhdGEsIGludCBzdHJpZGUsIGlu
dCBsZW5ndGgpCiAgICAgICAgOiBkYXRhXyhkYXRhKSwgc3RyaWRlXyhzdHJpZGUpLCBsZW5ndGhf
KGxlbmd0aCkKICAgIHsgfQoKCiAgICBWZWN0b3JJdGVyKGNvbnN0IFZlY3Rvckl0ZXI8UF9udW10
eXBlPiYgeCkKICAgIHsKICAgICAgICBkYXRhXyA9IHguZGF0YV87CiAgICAgICAgc3RyaWRlXyA9
IHguc3RyaWRlXzsKICAgICAgICBsZW5ndGhfID0geC5sZW5ndGhfOwogICAgfQoKCiAgICBQX251
bXR5cGUgb3BlcmF0b3JbXShpbnQgaSkgY29uc3QKICAgIHsgCiAgICAgICAgIDsKICAgICAgICBy
ZXR1cm4gZGF0YV9baSpzdHJpZGVfXTsgCiAgICB9CgogICAgUF9udW10eXBlJiBfX3Jlc3RyaWN0
X18gIG9wZXJhdG9yW10oaW50IGkpCiAgICB7IAogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRh
dGFfW2kqc3RyaWRlX107IAogICAgfQoKICAgIFBfbnVtdHlwZSBvcGVyYXRvcigpKGludCBpKSBj
b25zdAogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kqc3RyaWRlX107CiAg
ICB9CgogICAgUF9udW10eXBlJiBfX3Jlc3RyaWN0X18gIG9wZXJhdG9yKCkoaW50IGkpIAogICAg
ewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kqc3RyaWRlX107CiAgICB9CgogICAg
UF9udW10eXBlIG9wZXJhdG9yKigpIGNvbnN0CiAgICB7IHJldHVybiAqZGF0YV87IH0KCiAgICBQ
X251bXR5cGUmIG9wZXJhdG9yKigpCiAgICB7IHJldHVybiAqZGF0YV87IH0KCiAgICBWZWN0b3JJ
dGVyPFBfbnVtdHlwZT4gb3BlcmF0b3IrKGludCBpKQogICAgewogICAgICAgICAKICAgICAgICBy
ZXR1cm4gVmVjdG9ySXRlcjxQX251bXR5cGU+KGRhdGFfK2kqc3RyaWRlXywgc3RyaWRlXywgbGVu
Z3RoXy1pKTsKICAgIH0KCiAgICBpbnQgbGVuZ3RoKGludCkgY29uc3QKICAgIHsgcmV0dXJuIGxl
bmd0aF87IH0KCiAgICBib29sICBpc1VuaXRTdHJpZGUoKSBjb25zdAogICAgeyByZXR1cm4gKHN0
cmlkZV8gPT0gMSk7IH0KCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgZW51bSB7
IF9iel9zdGF0aWNMZW5ndGhDb3VudCA9IDAsCiAgICAgICAgICAgX2J6X2R5bmFtaWNMZW5ndGhD
b3VudCA9IDEsCiAgICAgICAgICAgX2J6X3N0YXRpY0xlbmd0aCA9IDAgfTsKCiAgICBib29sICBf
YnpfaGFzRmFzdEFjY2VzcygpIGNvbnN0CiAgICB7IHJldHVybiBpc1VuaXRTdHJpZGUoKTsgfQoK
ICAgIFBfbnVtdHlwZSBfYnpfZmFzdEFjY2VzcyhpbnQgaSkgY29uc3QKICAgIHsgcmV0dXJuIGRh
dGFfW2ldOyB9CgogICAgUF9udW10eXBlJiBfX3Jlc3RyaWN0X18gIF9iel9mYXN0QWNjZXNzKGlu
dCBpKQogICAgeyByZXR1cm4gZGF0YV9baV07IH0KCiAgICBpbnQgX2J6X3N1Z2dlc3RMZW5ndGgo
KSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoXzsgfQoKcHJpdmF0ZToKICAgIFZlY3Rvckl0ZXIo
KSB7IH0KICAgIFBfbnVtdHlwZSAqIF9fcmVzdHJpY3RfXyAgZGF0YV87CiAgICBpbnQgc3RyaWRl
XzsKICAgIGludCBsZW5ndGhfOwp9OwoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xhc3Mg
VmVjdG9ySXRlckNvbnN0IHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBl
OwoKICAgIGV4cGxpY2l0ICBWZWN0b3JJdGVyQ29uc3QoY29uc3QgVmVjdG9yPFBfbnVtdHlwZT4m
IHgpCiAgICAgICAgOiBkYXRhXyh4LmRhdGEoKSkKICAgIHsKICAgICAgICBzdHJpZGVfID0geC5z
dHJpZGUoKTsKICAgICAgICBsZW5ndGhfID0geC5sZW5ndGgoKTsKICAgIH0KCgogICAgVmVjdG9y
SXRlckNvbnN0KGNvbnN0IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGU+JiB4KQogICAgewogICAg
ICAgIGRhdGFfID0geC5kYXRhXzsKICAgICAgICBzdHJpZGVfID0geC5zdHJpZGVfOwogICAgICAg
IGxlbmd0aF8gPSB4Lmxlbmd0aF87CiAgICB9CgoKICAgIFBfbnVtdHlwZSBvcGVyYXRvcltdKGlu
dCBpKSBjb25zdAogICAgeyAKICAgICAgICAgOwogICAgICAgIHJldHVybiBkYXRhX1tpKnN0cmlk
ZV9dOyAKICAgIH0KCiAgICBQX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaSkgY29uc3QKICAgIHsK
ICAgICAgICAgOwogICAgICAgIHJldHVybiBkYXRhX1tpKnN0cmlkZV9dOwogICAgfQoKICAgIGlu
dCBsZW5ndGgoaW50KSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoXzsgfQoKICAgIGJvb2wgIGlz
VW5pdFN0cmlkZSgpIGNvbnN0CiAgICB7IHJldHVybiAoc3RyaWRlXyA9PSAxKTsgfQoKICAgICAK
ICAgICAKICAgICAKICAgICAKICAgICAKCiAgICBlbnVtIHsgX2J6X3N0YXRpY0xlbmd0aENvdW50
ID0gMCwKICAgICAgICAgICBfYnpfZHluYW1pY0xlbmd0aENvdW50ID0gMSwKICAgICAgICAgICBf
Ynpfc3RhdGljTGVuZ3RoID0gMCB9OwoKICAgIGJvb2wgICBfYnpfaGFzRmFzdEFjY2VzcygpIGNv
bnN0CiAgICB7IHJldHVybiBpc1VuaXRTdHJpZGUoKTsgfQoKICAgIFBfbnVtdHlwZSBfYnpfZmFz
dEFjY2VzcyhpbnQgaSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gZGF0YV9baV07CiAgICB9
CgogICAgaW50IF9iel9zdWdnZXN0TGVuZ3RoKCkgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF87
IH0KCnByaXZhdGU6CiAgICBjb25zdCBQX251bXR5cGUgKiBfX3Jlc3RyaWN0X18gIGRhdGFfOwog
ICAgaW50IHN0cmlkZV87CiAgICBpbnQgbGVuZ3RoXzsKfTsKCn0gCgoKIyA0OTQgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuaCIgMgoKIyAxICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjcGljay5oIiAxCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDUElDS19I
CgogCgoKCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCiAKCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZT4gY2xhc3MgVmVjdG9yUGlja0l0ZXI7CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gY2xh
c3MgVmVjdG9yUGlja0l0ZXJDb25zdDsKCiAKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xh
c3MgVmVjdG9yUGljayB7CgpwdWJsaWM6CiAgICAgCiAgICAgCiAgICAgCgogICAgdHlwZWRlZiBQ
X251bXR5cGUgICAgICAgICAgICAgICAgICAgICAgVF9udW10eXBlOwogICAgdHlwZWRlZiBWZWN0
b3I8VF9udW10eXBlPiAgICAgICAgICAgICAgVF92ZWN0b3I7CiAgICB0eXBlZGVmIFZlY3Rvcjxp
bnQ+ICAgICAgICAgICAgICAgICAgICBUX2luZGV4VmVjdG9yOwogICAgdHlwZWRlZiBWZWN0b3JQ
aWNrPFRfbnVtdHlwZT4gICAgICAgICAgVF9waWNrOwogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRl
cjxUX251bXR5cGU+ICAgICAgVF9pdGVyYXRvcjsKICAgIHR5cGVkZWYgVmVjdG9yUGlja0l0ZXJD
b25zdDxUX251bXR5cGU+IFRfY29uc3RJdGVyYXRvcjsKCiAgICAgCiAgICAgCiAgICAgCgogICAg
VmVjdG9yUGljayhUX3ZlY3RvciYgdmVjdG9yLCBUX2luZGV4VmVjdG9yJiBpbmRleGFyZykKICAg
ICAgICA6IHZlY3Rvcl8odmVjdG9yKSwgaW5kZXhfKGluZGV4YXJnKQogICAgeyB9CgogICAgVmVj
dG9yUGljayhjb25zdCBUX3BpY2smIHZlY3BpY2spCiAgICAgICAgOiB2ZWN0b3JfKGNvbnN0X2Nh
c3Q8VF92ZWN0b3ImPih2ZWNwaWNrLnZlY3Rvcl8pKSwgCiAgICAgICAgICBpbmRleF8oY29uc3Rf
Y2FzdDxUX2luZGV4VmVjdG9yJj4odmVjcGljay5pbmRleF8pKQogICAgeyB9CgogICAgVmVjdG9y
UGljayhUX3BpY2smIHZlY3BpY2ssIFJhbmdlIHIpCiAgICAgICAgOiB2ZWN0b3JfKHZlY3BpY2su
dmVjdG9yXyksIGluZGV4Xyh2ZWNwaWNrLmluZGV4X1tyXSkKICAgIHsgfQogCiAgICAgCiAgICAg
CiAgICAgCgogICAgVF9pdGVyYXRvciAgICAgICAgIGJlZ2luKCkKICAgIHsgcmV0dXJuIFZlY3Rv
clBpY2tJdGVyPFRfbnVtdHlwZT4oKnRoaXMpOyB9CgogICAgVF9jb25zdEl0ZXJhdG9yICAgIGJl
Z2luKCkgICAgICBjb25zdAogICAgeyByZXR1cm4gVmVjdG9yUGlja0l0ZXJDb25zdDxUX251bXR5
cGU+KCp0aGlzKTsgfQoKICAgICAKCiAgICAgCgogICAgIAoKICAgIFRfaW5kZXhWZWN0b3ImICAg
ICBpbmRleFNldCgpCiAgICB7IHJldHVybiBpbmRleF87IH0KIAogICAgY29uc3QgVF9pbmRleFZl
Y3RvciYgaW5kZXhTZXQoKSAgICAgIGNvbnN0CiAgICB7IHJldHVybiBpbmRleF87IH0KCiAgICBp
bnQgICAgICAgICAgIGxlbmd0aCgpICAgICBjb25zdAogICAgeyByZXR1cm4gaW5kZXhfLmxlbmd0
aCgpOyB9CgogICAgdm9pZCAgICAgICAgICAgICAgIHNldFZlY3RvcihWZWN0b3I8VF9udW10eXBl
PiYgeCkKICAgIHsgdmVjdG9yXy5yZWZlcmVuY2UoeCk7IH0KCiAgICB2b2lkICAgICAgICAgICAg
ICAgc2V0SW5kZXgoVmVjdG9yPGludD4mIGluZGV4KQogICAgeyBpbmRleF8ucmVmZXJlbmNlKGlu
ZGV4KTsgfQoKICAgIFRfdmVjdG9yJiAgICAgICAgICB2ZWN0b3IoKQogICAgeyByZXR1cm4gdmVj
dG9yXzsgfQoKICAgIGNvbnN0IFRfdmVjdG9yJiAgICB2ZWN0b3IoKSAgICAgY29uc3QKICAgIHsg
cmV0dXJuIHZlY3Rvcl87IH0KCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgaW50
ICAgICAgICBfYnpfc3VnZ2VzdExlbmd0aCgpIGNvbnN0CiAgICB7IHJldHVybiBpbmRleF8ubGVu
Z3RoKCk7IH0KCiAgICBib29sICAgICAgICAgX2J6X2hhc0Zhc3RBY2Nlc3MoKSBjb25zdAogICAg
eyByZXR1cm4gdmVjdG9yXy5fYnpfaGFzRmFzdEFjY2VzcygpICYmIGluZGV4Xy5fYnpfaGFzRmFz
dEFjY2VzcygpOyB9CgogICAgVF9udW10eXBlJiAgICAgIF9iel9mYXN0QWNjZXNzKGludCBpKQog
ICAgeyByZXR1cm4gdmVjdG9yXy5fYnpfZmFzdEFjY2VzcyhpbmRleF8uX2J6X2Zhc3RBY2Nlc3Mo
aSkpOyB9CgogICAgVF9udW10eXBlICAgICAgIF9iel9mYXN0QWNjZXNzKGludCBpKSBjb25zdAog
ICAgeyByZXR1cm4gdmVjdG9yXy5fYnpfZmFzdEFjY2VzcyhpbmRleF8uX2J6X2Zhc3RBY2Nlc3Mo
aSkpOyB9CgogICAgX2J6X1ZlY0V4cHI8VF9jb25zdEl0ZXJhdG9yPiBfYnpfYXNWZWNFeHByKCkg
Y29uc3QKICAgIHsgcmV0dXJuIF9iel9WZWNFeHByPFRfY29uc3RJdGVyYXRvcj4oYmVnaW4oKSk7
IH0KCiAgICAgCiAgICAgCiAgICAgCgogICAgVF9udW10eXBlICAgICAgIG9wZXJhdG9yKCkoaW50
IGkpIGNvbnN0CiAgICB7IAogICAgICAgICA7CiAgICAgICAgIDsKICAgICAgICAgOwogICAgICAg
ICA7CiAgICAgICAgcmV0dXJuIHZlY3Rvcl8oaW5kZXhfKGkpKTsKICAgIH0KCiAgICBUX251bXR5
cGUmICAgICAgb3BlcmF0b3IoKShpbnQgaSkKICAgIHsKICAgICAgICAgOwogICAgICAgICA7CiAg
ICAgICAgIDsKICAgICAgICAgOwogICAgICAgIHJldHVybiB2ZWN0b3JfKGluZGV4XyhpKSk7CiAg
ICB9CgogICAgVF9udW10eXBlICAgICAgIG9wZXJhdG9yW10oaW50IGkpIGNvbnN0CiAgICB7CiAg
ICAgICAgIDsKICAgICAgICAgOwogICAgICAgICA7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4g
dmVjdG9yX1tpbmRleF9baV1dOwogICAgfQoKICAgIFRfbnVtdHlwZSYgICAgICBvcGVyYXRvcltd
KGludCBpKQogICAgewogICAgICAgICA7CiAgICAgICAgIDsKICAgICAgICAgOwogICAgICAgICA7
CiAgICAgICAgcmV0dXJuIHZlY3Rvcl9baW5kZXhfW2ldXTsKICAgIH0KCiAgICBUX3BpY2sgICAg
ICAgICAgb3BlcmF0b3IoKShSYW5nZSByKQogICAgewogICAgICAgIHJldHVybiBUX3BpY2soKnRo
aXMsIGluZGV4X1tyXSk7CiAgICB9CgogICAgVF9waWNrICAgICAgICAgIG9wZXJhdG9yW10oUmFu
Z2UgcikKICAgIHsKICAgICAgICByZXR1cm4gVF9waWNrKCp0aGlzLCBpbmRleF9bcl0pOwogICAg
fQoKICAgICAKICAgICAKICAgICAKCiAgICAgCiAgICBUX3BpY2smIG9wZXJhdG9yPShUX251bXR5
cGUpOwogICAgVF9waWNrJiBvcGVyYXRvcis9KFRfbnVtdHlwZSk7CiAgICBUX3BpY2smIG9wZXJh
dG9yLT0oVF9udW10eXBlKTsKICAgIFRfcGljayYgb3BlcmF0b3IqPShUX251bXR5cGUpOwogICAg
VF9waWNrJiBvcGVyYXRvci89KFRfbnVtdHlwZSk7CiAgICBUX3BpY2smIG9wZXJhdG9yJT0oVF9u
dW10eXBlKTsKICAgIFRfcGljayYgb3BlcmF0b3JePShUX251bXR5cGUpOwogICAgVF9waWNrJiBv
cGVyYXRvciY9KFRfbnVtdHlwZSk7CiAgICBUX3BpY2smIG9wZXJhdG9yfD0oVF9udW10eXBlKTsK
ICAgIFRfcGljayYgb3BlcmF0b3I+Pj0oaW50KTsKICAgIFRfcGljayYgb3BlcmF0b3I8PD0oaW50
KTsKCiAgICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3BpY2smIG9wZXJhdG9y
PShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUyPiBUX3BpY2smIG9wZXJhdG9yKz0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+ICYpOwogICAg
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF9waWNrJiBvcGVyYXRvci09KGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IFRfcGljayYg
b3BlcmF0b3IqPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPiBUX3BpY2smIG9wZXJhdG9yLz0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+
ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF9waWNrJiBvcGVyYXRvciU9KGNv
bnN0IFZlY3RvcjxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+
IFRfcGljayYgb3BlcmF0b3JePShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3BpY2smIG9wZXJhdG9yJj0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF9waWNrJiBvcGVy
YXRvcnw9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+IFRfcGljayYgb3BlcmF0b3I+Pj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+ICYp
OwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF9waWNrJiBvcGVyYXRvcjw8PShjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4gJik7CgogICAgIAogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHBy
PiBUX3BpY2smIG9wZXJhdG9yPShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRlPGNs
YXNzIFBfZXhwcj4gVF9waWNrJiBvcGVyYXRvcis9KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAg
dGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3BpY2smIG9wZXJhdG9yLT0oX2J6X1ZlY0V4cHI8UF9l
eHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfcGljayYgb3BlcmF0b3IqPShfYnpf
VmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gVF9waWNrJiBvcGVy
YXRvci89KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBU
X3BpY2smIG9wZXJhdG9yJT0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHI+IFRfcGljayYgb3BlcmF0b3JePShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRl
bXBsYXRlPGNsYXNzIFBfZXhwcj4gVF9waWNrJiBvcGVyYXRvciY9KF9iel9WZWNFeHByPFBfZXhw
cj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3BpY2smIG9wZXJhdG9yfD0oX2J6X1Zl
Y0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfcGljayYgb3BlcmF0
b3I+Pj0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRf
cGljayYgb3BlcmF0b3I8PD0oX2J6X1ZlY0V4cHI8UF9leHByPik7CgogICAgIAogICAgVF9waWNr
JiBvcGVyYXRvcj0oUmFuZ2UpOwogICAgVF9waWNrJiBvcGVyYXRvcis9KFJhbmdlKTsKICAgIFRf
cGljayYgb3BlcmF0b3ItPShSYW5nZSk7CiAgICBUX3BpY2smIG9wZXJhdG9yKj0oUmFuZ2UpOwog
ICAgVF9waWNrJiBvcGVyYXRvci89KFJhbmdlKTsKICAgIFRfcGljayYgb3BlcmF0b3IlPShSYW5n
ZSk7CiAgICBUX3BpY2smIG9wZXJhdG9yXj0oUmFuZ2UpOwogICAgVF9waWNrJiBvcGVyYXRvciY9
KFJhbmdlKTsKICAgIFRfcGljayYgb3BlcmF0b3J8PShSYW5nZSk7CiAgICBUX3BpY2smIG9wZXJh
dG9yPj49KFJhbmdlKTsKICAgIFRfcGljayYgb3BlcmF0b3I8PD0oUmFuZ2UpOwoKICAgICAKICAg
IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IAogICAgVF9waWNrJiBvcGVyYXRvcj0oY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+
IAogICAgVF9waWNrJiBvcGVyYXRvcis9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4gJik7
CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiAKICAgIFRfcGljayYgb3BlcmF0b3ItPShj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4gCiAgICBUX3BpY2smIG9wZXJhdG9yKj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUy
PiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IAogICAgVF9waWNrJiBvcGVyYXRv
ci89KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUyPiAKICAgIFRfcGljayYgb3BlcmF0b3IlPShjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gCiAgICBUX3BpY2smIG9w
ZXJhdG9yXj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTI+IAogICAgVF9waWNrJiBvcGVyYXRvciY9KGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiAKICAgIFRfcGlj
ayYgb3BlcmF0b3J8PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4gCiAgICBUX3BpY2smIG9wZXJhdG9yPj49KGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiAKICAg
IFRfcGljayYgb3BlcmF0b3I8PD0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKCiAg
ICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfcGljayYgb3BlcmF0
b3I9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQ
X2Rpc3RyaWJ1dGlvbj4KICAgIFRfcGljayYgb3BlcmF0b3IrPShSYW5kb208UF9kaXN0cmlidXRp
b24+JiByYW5kb20pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9kaXN0cmlidXRpb24+CiAgICBUX3Bp
Y2smIG9wZXJhdG9yLT0oUmFuZG9tPFBfZGlzdHJpYnV0aW9uPiYgcmFuZG9tKTsKICAgIHRlbXBs
YXRlPGNsYXNzIFBfZGlzdHJpYnV0aW9uPgogICAgVF9waWNrJiBvcGVyYXRvcio9KFJhbmRvbTxQ
X2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlv
bj4KICAgIFRfcGljayYgb3BlcmF0b3IvPShSYW5kb208UF9kaXN0cmlidXRpb24+JiByYW5kb20p
OwogICAgdGVtcGxhdGU8Y2xhc3MgUF9kaXN0cmlidXRpb24+CiAgICBUX3BpY2smIG9wZXJhdG9y
JT0oUmFuZG9tPFBfZGlzdHJpYnV0aW9uPiYgcmFuZG9tKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBf
ZGlzdHJpYnV0aW9uPgogICAgVF9waWNrJiBvcGVyYXRvcl49KFJhbmRvbTxQX2Rpc3RyaWJ1dGlv
bj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfcGlj
ayYgb3BlcmF0b3ImPShSYW5kb208UF9kaXN0cmlidXRpb24+JiByYW5kb20pOwogICAgdGVtcGxh
dGU8Y2xhc3MgUF9kaXN0cmlidXRpb24+CiAgICBUX3BpY2smIG9wZXJhdG9yfD0oUmFuZG9tPFBf
ZGlzdHJpYnV0aW9uPiYgcmFuZG9tKTsKCnByaXZhdGU6CiAgICBWZWN0b3JQaWNrKCkgeyB9Cgog
ICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByLCBjbGFzcyBQX3VwZGF0ZXI+CiAgICBpbmxpbmUgdm9p
ZCBfYnpfYXNzaWduKFBfZXhwciwgUF91cGRhdGVyKTsKCnByaXZhdGU6CiAgICBUX3ZlY3RvciB2
ZWN0b3JfOwogICAgVF9pbmRleFZlY3RvciBpbmRleF87Cn07Cgp9IAoKIyAxICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjcGljay5jYyIgMQogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojZGVmaW5lIEJaX1ZFQ1BJQ0tfQ0MKCgoKCgoKIAojIDEgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei91cGRhdGUuaCIgMQogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1VQREFURV9ICgoKCgoK
bmFtZXNwYWNlICBibGl0eiAgeyAKCmNsYXNzIF9iel91cGRhdGVyX2Jhc2UgeyB9OwoKI2RlZmlu
ZSBCWl9ERUNMX1VQREFURVIobmFtZSxvcCxzeW1ib2wpIHRlbXBsYXRlPGNsYXNzIFgsIGNsYXNz
IFk+IGNsYXNzIG5hbWUgOiBwdWJsaWMgX2J6X3VwZGF0ZXJfYmFzZSB7IHB1YmxpYzogc3RhdGlj
IGlubGluZSB2b2lkIHVwZGF0ZShYJiBfYnpfcmVzdHJpY3QgeCwgWSB5KSB7IHggb3AgeTsgfSBz
dGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0cikgeyBzdHIgKz0gc3ltYm9sOyB9IH0K
IyA2NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3VwZGF0ZS5oIgoK
dGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KY2xhc3MgX2J6X3VwZGF0ZSA6IHB1YmxpYyBfYnpf
dXBkYXRlcl9iYXNlIHsKICBwdWJsaWM6CiAgICBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlKFgm
IF9fcmVzdHJpY3RfXyAgeCwgWSB5KQogICAgeyB4ID0gKFgpeTsgfQoKICAgIHN0YXRpYyB2b2lk
IHByZXR0eVByaW50KHN0cmluZyYgc3RyKQogICAgeyBzdHIgKz0gIj0iOyB9Cn07Cgp0ZW1wbGF0
ZTxjbGFzcyBYLCBjbGFzcyBZPiBjbGFzcyAgX2J6X3BsdXNfdXBkYXRlICA6IHB1YmxpYyBfYnpf
dXBkYXRlcl9iYXNlIHsgcHVibGljOiBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlKFgmIF9fcmVz
dHJpY3RfXyAgeCwgWSB5KSB7IHggICArPSAgeTsgfSBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChz
dHJpbmcmIHN0cikgeyBzdHIgKz0gICAiKz0iIDsgfSB9IDsKdGVtcGxhdGU8Y2xhc3MgWCwgY2xh
c3MgWT4gY2xhc3MgIF9iel9taW51c191cGRhdGUgIDogcHVibGljIF9iel91cGRhdGVyX2Jhc2Ug
eyBwdWJsaWM6IHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGUoWCYgX19yZXN0cmljdF9fICB4LCBZ
IHkpIHsgeCAgIC09ICB5OyB9IHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyKSB7
IHN0ciArPSAgICItPSIgOyB9IH0gOwp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZPiBjbGFzcyAg
X2J6X211bHRpcGx5X3VwZGF0ZSAgOiBwdWJsaWMgX2J6X3VwZGF0ZXJfYmFzZSB7IHB1YmxpYzog
c3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZShYJiBfX3Jlc3RyaWN0X18gIHgsIFkgeSkgeyB4ICAg
Kj0gIHk7IH0gc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIpIHsgc3RyICs9ICAg
Iio9IiA7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+IGNsYXNzICBfYnpfZGl2aWRl
X3VwZGF0ZSAgOiBwdWJsaWMgX2J6X3VwZGF0ZXJfYmFzZSB7IHB1YmxpYzogc3RhdGljIGlubGlu
ZSB2b2lkIHVwZGF0ZShYJiBfX3Jlc3RyaWN0X18gIHgsIFkgeSkgeyB4ICAgLz0gIHk7IH0gc3Rh
dGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIpIHsgc3RyICs9ICAgIi89IiA7IH0gfSA7
CnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+IGNsYXNzICBfYnpfbW9kX3VwZGF0ZSAgOiBwdWJs
aWMgX2J6X3VwZGF0ZXJfYmFzZSB7IHB1YmxpYzogc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZShY
JiBfX3Jlc3RyaWN0X18gIHgsIFkgeSkgeyB4ICAgJT0gIHk7IH0gc3RhdGljIHZvaWQgcHJldHR5
UHJpbnQoc3RyaW5nJiBzdHIpIHsgc3RyICs9ICAgIiU9IiA7IH0gfSA7CnRlbXBsYXRlPGNsYXNz
IFgsIGNsYXNzIFk+IGNsYXNzICBfYnpfeG9yX3VwZGF0ZSAgOiBwdWJsaWMgX2J6X3VwZGF0ZXJf
YmFzZSB7IHB1YmxpYzogc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZShYJiBfX3Jlc3RyaWN0X18g
IHgsIFkgeSkgeyB4ICAgXj0gIHk7IH0gc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBz
dHIpIHsgc3RyICs9ICAgIl49IiA7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+IGNs
YXNzICBfYnpfYml0YW5kX3VwZGF0ZSAgOiBwdWJsaWMgX2J6X3VwZGF0ZXJfYmFzZSB7IHB1Ymxp
Yzogc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZShYJiBfX3Jlc3RyaWN0X18gIHgsIFkgeSkgeyB4
ICAgJj0gIHk7IH0gc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIpIHsgc3RyICs9
ICAgIiY9IiA7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+IGNsYXNzICBfYnpfYml0
b3JfdXBkYXRlICA6IHB1YmxpYyBfYnpfdXBkYXRlcl9iYXNlIHsgcHVibGljOiBzdGF0aWMgaW5s
aW5lIHZvaWQgdXBkYXRlKFgmIF9fcmVzdHJpY3RfXyAgeCwgWSB5KSB7IHggICB8PSAgeTsgfSBz
dGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0cikgeyBzdHIgKz0gICAifD0iIDsgfSB9
IDsKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4gY2xhc3MgIF9iel9zaGlmdGxfdXBkYXRlICA6
IHB1YmxpYyBfYnpfdXBkYXRlcl9iYXNlIHsgcHVibGljOiBzdGF0aWMgaW5saW5lIHZvaWQgdXBk
YXRlKFgmIF9fcmVzdHJpY3RfXyAgeCwgWSB5KSB7IHggICA8PD0gIHk7IH0gc3RhdGljIHZvaWQg
cHJldHR5UHJpbnQoc3RyaW5nJiBzdHIpIHsgc3RyICs9ICAgIjw8PSIgOyB9IH0gOwp0ZW1wbGF0
ZTxjbGFzcyBYLCBjbGFzcyBZPiBjbGFzcyAgX2J6X3NoaWZ0cl91cGRhdGUgIDogcHVibGljIF9i
el91cGRhdGVyX2Jhc2UgeyBwdWJsaWM6IHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGUoWCYgX19y
ZXN0cmljdF9fICB4LCBZIHkpIHsgeCAgID4+PSAgeTsgfSBzdGF0aWMgdm9pZCBwcmV0dHlQcmlu
dChzdHJpbmcmIHN0cikgeyBzdHIgKz0gICAiPj49IiA7IH0gfSA7Cgp9IAoKCgojIDMxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjcGljay5jYyIgMgoKCgoKIAoj
IDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9yYW5kb20uaCIgMQog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfUkFORE9N
X0gKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgUF9kaXN0cmlidXRp
b24+CmNsYXNzIFJhbmRvbSB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfZGlzdHJpYnV0aW9uIFRf
ZGlzdHJpYnV0aW9uOwogICAgdHlwZWRlZiB0eXBlbmFtZSAgVF9kaXN0cmlidXRpb246OlRfbnVt
dHlwZSBUX251bXR5cGU7CgogICAgUmFuZG9tKGRvdWJsZSBwYXJtMT0wLjAsIGRvdWJsZSBwYXJt
Mj0xLjAsIGRvdWJsZSBwYXJtMz0wLjApCiAgICAgICAgOiBnZW5lcmF0b3JfKHBhcm0xLCBwYXJt
MiwgcGFybTMpCiAgICB7IH0KCiAgICB2b2lkIHJhbmRvbWl6ZSgpCiAgICB7IGdlbmVyYXRvcl8u
cmFuZG9taXplKCk7IH0KICAgCiAgICBUX251bXR5cGUgcmFuZG9tKCkKICAgIHsgcmV0dXJuIGdl
bmVyYXRvcl8ucmFuZG9tKCk7IH0KCiAgICBvcGVyYXRvciBUX251bXR5cGUoKQogICAgeyByZXR1
cm4gZ2VuZXJhdG9yXy5yYW5kb20oKTsgfQoKcHJvdGVjdGVkOiAKICAgIFRfZGlzdHJpYnV0aW9u
IGdlbmVyYXRvcl87Cn07Cgp9IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovcmFuZHJlZi5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiNkZWZpbmUgQlpfUkFORFJFRl9ICgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBs
YXRlPGNsYXNzIFBfZGlzdHJpYnV0aW9uPgpjbGFzcyBfYnpfVmVjRXhwclJhbmRvbSB7CgpwdWJs
aWM6CiAgICB0eXBlZGVmIHR5cGVuYW1lICBSYW5kb208UF9kaXN0cmlidXRpb24+OjpUX251bXR5
cGUgVF9udW10eXBlOwoKICAgIF9iel9WZWNFeHByUmFuZG9tKFJhbmRvbTxQX2Rpc3RyaWJ1dGlv
bj4mIHJhbmRvbSkKICAgICAgICA6IHJhbmRvbV8ocmFuZG9tKQogICAgeyB9CgoKICAgIF9iel9W
ZWNFeHByUmFuZG9tKF9iel9WZWNFeHByUmFuZG9tPFBfZGlzdHJpYnV0aW9uPiYgeCkKICAgICAg
ICA6IHJhbmRvbV8oeC5yYW5kb21fKQogICAgeyB9CgoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcltd
KHVuc2lnbmVkKSBjb25zdAogICAgeyByZXR1cm4gcmFuZG9tXy5yYW5kb20oKTsgfQoKICAgIFRf
bnVtdHlwZSBvcGVyYXRvcigpKHVuc2lnbmVkKSBjb25zdAogICAgeyByZXR1cm4gcmFuZG9tXy5y
YW5kb20oKTsgfQoKICAgIHVuc2lnbmVkIGxlbmd0aCh1bnNpZ25lZCByZWNvbW1lbmRlZExlbmd0
aCkgY29uc3QKICAgIHsgcmV0dXJuIHJlY29tbWVuZGVkTGVuZ3RoOyB9CgogICAgdW5zaWduZWQg
X2J6X3N1Z2dlc3RMZW5ndGgoKSBjb25zdAogICAgeyByZXR1cm4gMDsgfQoKICAgIGJvb2wgIF9i
el9oYXNGYXN0QWNjZXNzKCkgY29uc3QKICAgIHsgcmV0dXJuIDE7IH0KCiAgICBUX251bXR5cGUg
X2J6X2Zhc3RBY2Nlc3ModW5zaWduZWQpIGNvbnN0CiAgICB7IHJldHVybiByYW5kb21fLnJhbmRv
bSgpOyB9Cgpwcml2YXRlOgogICAgX2J6X1ZlY0V4cHJSYW5kb20oKSB7IH0KCiAgICBSYW5kb208
UF9kaXN0cmlidXRpb24+JiByYW5kb21fOwp9OwoKfSAKCgoKIyA3NSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3JhbmRvbS5oIiAyCgoKCgojIDM1ICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjcGljay5jYyIgMgoKCgoKIAojIDEgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNleHByLmgiIDEKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVD
RVhQUl9ICgoKCgoKCiAKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovYXBwbGljcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiNkZWZpbmUgQlpfQVBQTElDU19ICgoKCgoKCgoKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKIAogCiAKY2xhc3MgQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsgfTsKY2xhc3MgVHdvT3Bl
cmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSA6IHB1YmxpYyBBcHBsaWNhdGl2ZVRlbXBsYXRl
c0Jhc2UgeyB9OwpjbGFzcyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIDogcHVi
bGljIEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7IH07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBjbGFzcyBQX251bXR5cGUyPgpjbGFzcyBfYnpfQWRkIDogcHVibGljIFR3b09wZXJhbmRB
cHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEg
VF9udW10eXBlMTsKICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlwZWRl
ZiB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgVF9udW10eXBlMSAsIFRfbnVtdHlwZTIgPjo6VF9w
cm9tb3RlICBUX3Byb21vdGU7IAogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAg
ICBzdGF0aWMgaW5saW5lIFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIg
eSkKICAgIHsgcmV0dXJuIHggKyB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBj
bGFzcyBQX251bXR5cGUyPgpjbGFzcyBfYnpfU3VidHJhY3QgOiBwdWJsaWMgVHdvT3BlcmFuZEFw
cGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBU
X251bXR5cGUxOwogICAgdHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVm
IHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgVF9udW10eXBlMiA+OjpUX3By
b21vdGUgIFRfcHJvbW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CiAKICAg
IHN0YXRpYyBpbmxpbmUgVF9wcm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5
KQogICAgeyByZXR1cm4geCAtIHk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNs
YXNzIFBfbnVtdHlwZTI+CmNsYXNzIF9iel9NdWx0aXBseSA6IHB1YmxpYyBUd29PcGVyYW5kQXBw
bGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRf
bnVtdHlwZTE7CiAgICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYg
dHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCBUX251bXR5cGUyID46OlRfcHJv
bW90ZSAgVF9wcm9tb3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBz
dGF0aWMgaW5saW5lIFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkK
ICAgIHsgcmV0dXJuIHggKiB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFz
cyBQX251bXR5cGUyPgpjbGFzcyBfYnpfRGl2aWRlIDogcHVibGljIFR3b09wZXJhbmRBcHBsaWNh
dGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10
eXBlMTsKICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlwZWRlZiB0eXBl
bmFtZSAgcHJvbW90ZV90cmFpdDwgVF9udW10eXBlMSAsIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3Rl
ICBUX3Byb21vdGU7CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgVF9udW10eXBlOwoKICAgIHN0YXRp
YyBpbmxpbmUgVF9wcm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5KQogICAg
eyByZXR1cm4geCAvIHk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBf
bnVtdHlwZTI+CmNsYXNzIF9iel9Nb2QgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVt
cGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBw
cm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgVF9udW10eXBlMiA+OjpUX3Byb21vdGUgIFRfcHJv
bW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGlu
ZSBUX3Byb21vdGUgYXBwbHkoUF9udW10eXBlMSB4LCBQX251bXR5cGUyIHkpCiAgICB7IHJldHVy
biB4ICUgeTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KY2xhc3MgX2J6X0JpdHdpc2VYT1IgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVt
cGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBw
cm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgVF9udW10eXBlMiA+OjpUX3Byb21vdGUgIFRfcHJv
bW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGlu
ZSBUX3Byb21vdGUgYXBwbHkoUF9udW10eXBlMSB4LCBQX251bXR5cGUyIHkpCiAgICB7IHJldHVy
biB4IF4geTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KY2xhc3MgX2J6X0JpdHdpc2VBbmQgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVt
cGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBw
cm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgVF9udW10eXBlMiA+OjpUX3Byb21vdGUgIFRfcHJv
bW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGlu
ZSBUX3Byb21vdGUgYXBwbHkoUF9udW10eXBlMSB4LCBQX251bXR5cGUyIHkpCiAgICB7IHJldHVy
biB4ICYgeTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KY2xhc3MgX2J6X0JpdHdpc2VPciA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIHBy
b21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCBUX251bXR5cGUyID46OlRfcHJvbW90ZSAgVF9wcm9t
b3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJu
IHggfCB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUy
PgpjbGFzcyBfYnpfU2hpZnRSaWdodCA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIHBy
b21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCBUX251bXR5cGUyID46OlRfcHJvbW90ZSAgVF9wcm9t
b3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJu
IHggPj4geTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KY2xhc3MgX2J6X1NoaWZ0TGVmdCA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIHBy
b21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCBUX251bXR5cGUyID46OlRfcHJvbW90ZSAgVF9wcm9t
b3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJu
IHggPDwgeTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KY2xhc3MgX2J6X0dyZWF0ZXIgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxh
dGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAg
dHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIGJvb2wgICAgVF9wcm9t
b3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJu
IHggPiB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUy
PgpjbGFzcyBfYnpfTGVzcyA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNC
YXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBl
ZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgYm9vbCAgICBUX3Byb21vdGU7
CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9w
cm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5KQogICAgeyByZXR1cm4geCA8
IHk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmNs
YXNzIF9iel9HcmVhdGVyT3JFcXVhbCA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgYm9vbCAgICBUX3By
b21vdGU7CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9wcm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5KQogICAgeyByZXR1
cm4geCA+PSB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5
cGUyPgpjbGFzcyBfYnpfTGVzc09yRXF1YWwgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZl
VGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUx
OwogICAgdHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIGJvb2wgICAg
VF9wcm9tb3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkKICAgIHsg
cmV0dXJuIHggPD0geTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9u
dW10eXBlMj4KY2xhc3MgX2J6X0VxdWFsIDogcHVibGljIFR3b09wZXJhbmRBcHBsaWNhdGl2ZVRl
bXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsK
ICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlwZWRlZiBib29sICAgIFRf
cHJvbW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CgogICAgc3RhdGljIGlu
bGluZSBUX3Byb21vdGUgYXBwbHkoUF9udW10eXBlMSB4LCBQX251bXR5cGUyIHkpCiAgICB7IHJl
dHVybiB4ID09IHk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVt
dHlwZTI+CmNsYXNzIF9iel9Ob3RFcXVhbCA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVU
ZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7
CiAgICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgYm9vbCAgICBU
X3Byb21vdGU7CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgVF9udW10eXBlOwoKICAgIHN0YXRpYyBp
bmxpbmUgVF9wcm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5KQogICAgeyBy
ZXR1cm4geCAhPSB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251
bXR5cGUyPgpjbGFzcyBfYnpfTG9naWNhbEFuZCA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRp
dmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlw
ZTE7CiAgICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgYm9vbCAg
ICBUX3Byb21vdGU7CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgVF9udW10eXBlOwoKICAgIHN0YXRp
YyBpbmxpbmUgVF9wcm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5KQogICAg
eyByZXR1cm4geCAmJiB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQ
X251bXR5cGUyPgpjbGFzcyBfYnpfTG9naWNhbE9yIDogcHVibGljIFR3b09wZXJhbmRBcHBsaWNh
dGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10
eXBlMTsKICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlwZWRlZiBib29s
ICAgIFRfcHJvbW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CgogICAgc3Rh
dGljIGlubGluZSBUX3Byb21vdGUgYXBwbHkoUF9udW10eXBlMSB4LCBQX251bXR5cGUyIHkpCiAg
ICB7IHJldHVybiB4IHx8IHk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZV9pbiwgY2xh
c3MgUF9udW10eXBlX291dD4KY2xhc3MgX2J6X0Nhc3QgOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxp
Y2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlX2luIFRf
bnVtdHlwZTE7CiAgICB0eXBlZGVmIFBfbnVtdHlwZV9vdXQgVF9wcm9tb3RlOwogICAgdHlwZWRl
ZiBUX3Byb21vdGUgICAgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFBfbnVtdHlwZV9v
dXQgYXBwbHkoUF9udW10eXBlX2luIHgpCiAgICB7IHJldHVybiBQX251bXR5cGVfb3V0KHgpOyB9
Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmNsYXNzIF9iel9Mb2dpY2FsTm90IDogcHVi
bGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBl
ZGVmIFBfbnVtdHlwZSAgICAgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgYm9vbCAgICAgICBUX3By
b21vdGU7CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgICAgVF9udW10eXBlOwoKICAgIHN0YXRpYyBp
bmxpbmUgUF9udW10eXBlIGFwcGx5KFBfbnVtdHlwZSB4KQogICAgeyByZXR1cm4gIXg7IH0KfTsK
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgX2J6X0JpdHdpc2VOb3QgOiBwdWJsaWMg
T25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYg
UF9udW10eXBlICAgICBUX251bXR5cGUxOwogICAgdHlwZWRlZiBUX251bXR5cGUxICAgIFRfcHJv
bW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICAgICBUX251bXR5cGU7CgogICAgc3RhdGljIGlu
bGluZSBQX251bXR5cGUgYXBwbHkoUF9udW10eXBlIHgpCiAgICB7IHJldHVybiB+eDsgfQp9OwoK
IAoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCgoKfSAKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiIDEKIAoKCiNkZWZpbmUgQlpfTUFUSEZVTkNfSAoK
CgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9wcmV0
dHlwcmludC5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUg
QlpfUFJFVFRZUFJJTlRfSAoKbmFtZXNwYWNlICBibGl0eiAgeyAKCmNsYXNzIHByZXR0eVByaW50
Rm9ybWF0IHsKCnB1YmxpYzoKICAgIHByZXR0eVByaW50Rm9ybWF0KGJvb2wgIHRlcnNlID0gZmFs
c2UgKQogICAgICA6IHRlcnNlUHJpbnRpbmdTZWxlY3RlZF8odGVyc2UpCiAgICB7CiAgICAgICAg
YXJyYXlPcGVyYW5kQ291bnRlcl8gPSAwOwogICAgICAgIHNjYWxhck9wZXJhbmRDb3VudGVyXyA9
IDA7CiAgICAgICAgZHVtcEFycmF5U2hhcGVzXyA9IGZhbHNlIDsKICAgIH0KCiAgICB2b2lkIHNl
dER1bXBBcnJheVNoYXBlc01vZGUoKQogICAgewogICAgICAgIGR1bXBBcnJheVNoYXBlc18gPSB0
cnVlIDsKICAgIH0KCiAgICBjaGFyIG5leHRBcnJheU9wZXJhbmRTeW1ib2woKQogICAgewogICAg
ICAgIHJldHVybiAnQScgKyAoKGFycmF5T3BlcmFuZENvdW50ZXJfKyspICUgMjYpOwogICAgfQoK
ICAgIGNoYXIgbmV4dFNjYWxhck9wZXJhbmRTeW1ib2woKQogICAgewogICAgICAgIHJldHVybiAn
cycgKyAoKHNjYWxhck9wZXJhbmRDb3VudGVyXysrKSAlIDI2KTsKICAgIH0KCiAgICBib29sICB0
ZXJzZVByaW50aW5nU2VsZWN0ZWQoKSBjb25zdAogICAgeyAKICAgICAgICByZXR1cm4gdGVyc2VQ
cmludGluZ1NlbGVjdGVkXzsKICAgIH0KCiAgICBib29sICBkdW1wQXJyYXlTaGFwZXNNb2RlKCkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gZHVtcEFycmF5U2hhcGVzXzsKICAgIH0KCnByaXZh
dGU6CiAgICBib29sICB0ZXJzZVByaW50aW5nU2VsZWN0ZWRfOwogICAgYm9vbCAgZHVtcEFycmF5
U2hhcGVzXzsKICAgIGludCBhcnJheU9wZXJhbmRDb3VudGVyXzsKICAgIGludCBzY2FsYXJPcGVy
YW5kQ291bnRlcl87Cn07Cgp9IAoKCiMgMTIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9tYXRoZnVuYy5oIiAyCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9iel9hYnMgOiBwdWJsaWMgT25lT3BlcmFuZEFw
cGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBU
X251bXR5cGUxOwogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBh
YnMgICh4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5
UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29u
c3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJhYnMoIjsKICAgICAgICBhLnByZXR0eVBy
aW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRl
PD4KY2xhc3MgX2J6X2Ficzxsb25nPiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBsb25nIFRfbnVtdHlwZTE7CiAgICB0eXBl
ZGVmIGxvbmcgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRf
bnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGxhYnMgICgobG9uZyl4KTsgfQoKICAgIHRl
bXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIs
IHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAg
ICAgICAgc3RyICs9ICJsYWJzKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsK
ICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9hYnM8
ZmxvYXQ+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJs
aWM6CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVt
dHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAg
ICB7IHJldHVybiBzdGQ6OiBmYWJzICAoKGZsb2F0KXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3Mg
VDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRG
b3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0g
ImZhYnMoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciAr
PSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xhc3MgX2J6X2Ficzxkb3VibGU+IDogcHVi
bGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBl
ZGVmIGRvdWJsZSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAg
IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJu
IHN0ZDo6IGZhYnMgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBz
dGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZv
cm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gImZhYnMoIjsK
ICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAg
ICB9Cn07CgogCnRlbXBsYXRlPD4KY2xhc3MgX2J6X2Ficzxsb25nIGRvdWJsZT4gOiBwdWJsaWMg
T25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYg
bG9uZyBkb3VibGUgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBl
OwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsg
cmV0dXJuIHN0ZDo6IGZhYnMgICgobG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFz
cyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciAr
PSAiZmFicygiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3Ry
ICs9ICIpIjsKICAgIH0KfTsKCiAKIyAxMzcgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKIyAxNTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKIyAxODEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KY2xhc3MgX2J6X2Fjb3MgOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVt
cGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBl
IGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGFjb3MgICgoZG91YmxlKXgp
OyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChz
dHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYg
YSkKICAgIHsKICAgICAgICBzdHIgKz0gImFjb3MoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0
cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xh
c3MgX2J6X2Fjb3M8ZmxvYXQ+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRl
c0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVm
IGZsb2F0IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251
bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBhY29zICAoKGZsb2F0KXgpOyB9CgogICAgdGVt
cGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwg
cHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAg
ICAgICBzdHIgKz0gImFjb3MoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwog
ICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xhc3MgX2J6X2Fjb3M8
bG9uZyBkb3VibGU+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ug
ewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVm
IGxvbmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBs
eShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBhY29zICAoKGxvbmcgZG91YmxlKXgp
OyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChz
dHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYg
YSkKICAgIHsKICAgICAgICBzdHIgKz0gImFjb3MoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0
cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgpjbGFzcyBfYnpfYWNvc2ggOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0
aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5
cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9u
dW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIDo6IGFjb3NoICAoKGRvdWJs
ZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJp
bnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3Qg
VDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJhY29zaCgiOwogICAgICAgIGEucHJldHR5UHJp
bnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9iel9hc2luIDogcHVibGljIE9uZU9wZXJhbmRBcHBs
aWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9u
dW10eXBlMTsKICAgIHR5cGVkZWYgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBhc2luICAo
KGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJl
dHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAg
Y29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJhc2luKCI7CiAgICAgICAgYS5wcmV0
dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1w
bGF0ZTw+CmNsYXNzIF9iel9hc2luPGZsb2F0PiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRp
dmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUg
YXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogYXNpbiAgKChmbG9hdCl4KTsg
fQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3Ry
aW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEp
CiAgICB7CiAgICAgICAgc3RyICs9ICJhc2luKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIs
Zm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNz
IF9iel9hc2luPGxvbmcgZG91YmxlPiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBsb25nIGRvdWJsZSBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBsb25nIGRvdWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251
bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogYXNpbiAgKChsb25n
IGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJl
dHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAg
Y29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJhc2luKCI7CiAgICAgICAgYS5wcmV0
dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X2FzaW5oIDogcHVibGljIE9uZU9wZXJh
bmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlw
ZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiA6OiBhc2lu
aCAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lk
IHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAg
ICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAiYXNpbmgoIjsKICAgICAgICBh
LnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgoK
IAojIDM2NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5j
LmgiCgoKIAojIDM4OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21h
dGhmdW5jLmgiCgoKIAojIDQxMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2Js
aXR6L21hdGhmdW5jLmgiCgoKIAojIDQzMyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFz
cyBfYnpfYXRhbiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsK
cHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRv
dWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10
eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogYXRhbiAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1w
bGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBw
cmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAg
ICAgIHN0ciArPSAiYXRhbigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAg
ICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfYXRhbjxm
bG9hdD4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1Ymxp
YzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10
eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAg
IHsgcmV0dXJuIHN0ZDo6IGF0YW4gICgoZmxvYXQpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBU
MT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZv
cm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAi
YXRhbigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9
ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfYXRhbjxsb25nIGRvdWJsZT4g
OiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAg
IHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUg
VF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEg
eCkKICAgIHsgcmV0dXJuIHN0ZDo6IGF0YW4gICgobG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1w
bGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBw
cmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAg
ICAgIHN0ciArPSAiYXRhbigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAg
ICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+
CmNsYXNzIF9iel9hdGFuaCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNC
YXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBl
ZGVmIGRvdWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHko
VF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gOjogYXRhbmggICgoZG91YmxlKXgpOyB9CgogICAg
dGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0
ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsK
ICAgICAgICBzdHIgKz0gImF0YW5oKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0
KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KY2xhc3MgX2J6X2F0YW4yIDogcHVibGljIFR3b09wZXJh
bmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlw
ZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlw
ZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5
KFRfbnVtdHlwZTEgeCwgVF9udW10eXBlMiB5KQogICAgeyByZXR1cm4gc3RkOjogYXRhbjIgICgo
ZG91YmxlKXgsKGRvdWJsZSl5KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4K
ICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1h
dCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhLCBjb25zdCBUMiYgYikKICAgIHsKICAgICAg
ICBzdHIgKz0gImF0YW4yKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAg
ICAgICBzdHIgKz0gIiwiOwogICAgICAgIGIucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAg
ICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfYXRhbjI8Zmxv
YXQsIGZsb2F0ID4gOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7
CnB1YmxpYzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQg
VF9udW10eXBlMjsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCwgVF9udW10eXBlMiB5KQogICAgeyByZXR1
cm4gc3RkOjogYXRhbjIgICgoZmxvYXQpeCwoZmxvYXQpeSk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFz
cyBUMSwgY2xhc3MgVDI+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwg
cHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSwgY29uc3QgVDIm
IGIpCiAgICB7CiAgICAgICAgc3RyICs9ICJhdGFuMigiOwogICAgICAgIGEucHJldHR5UHJpbnQo
c3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIsIjsKICAgICAgICBiLnByZXR0eVByaW50KHN0
cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xh
c3MgX2J6X2F0YW4yPGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZSA+IDogcHVibGljIFR3b09wZXJh
bmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91
YmxlIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTI7CiAgICB0
eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlw
ZSBhcHBseShUX251bXR5cGUxIHgsIFRfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJuIHN0ZDo6IGF0
YW4yICAoKGxvbmcgZG91YmxlKXgsKGxvbmcgZG91YmxlKXkpOyB9CgogICAgdGVtcGxhdGU8Y2xh
c3MgVDEsIGNsYXNzIFQyPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIs
IHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEsIGNvbnN0IFQy
JiBiKQogICAgewogICAgICAgIHN0ciArPSAiYXRhbjIoIjsKICAgICAgICBhLnByZXR0eVByaW50
KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiLCI7CiAgICAgICAgYi5wcmV0dHlQcmludChz
dHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAojIDYwNiAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X2NicnQgOiBwdWJsaWMgT25lT3BlcmFuZEFw
cGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBU
X251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIDo6IGNicnQgICgo
ZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0
dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBj
b25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gImNicnQoIjsKICAgICAgICBhLnByZXR0
eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfY2VpbCA6IHB1YmxpYyBPbmVPcGVyYW5k
QXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUx
IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlu
bGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogY2Vp
bCAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lk
IHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAg
ICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAiY2VpbCgiOwogICAgICAgIGEu
cHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAK
dGVtcGxhdGU8PgpjbGFzcyBfYnpfY2VpbDxmbG9hdD4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxp
Y2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBl
MTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10
eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGNlaWwgICgoZmxvYXQp
eCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50
KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQx
JiBhKQogICAgewogICAgICAgIHN0ciArPSAiY2VpbCgiOwogICAgICAgIGEucHJldHR5UHJpbnQo
c3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8Pgpj
bGFzcyBfYnpfY2VpbDxsb25nIGRvdWJsZT4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZl
VGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBl
MTsKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUg
VF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGNlaWwgICgo
bG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lk
IHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAg
ICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAiY2VpbCgiOwogICAgICAgIGEu
cHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAK
IyA3MTAgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5o
IgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X2NvcyA6IHB1YmxpYyBP
bmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQ
X251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJsZSBUX251bXR5cGU7CgogICAg
c3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4g
c3RkOjogY29zICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3Rh
dGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3Jt
YXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJjb3MoIjsKICAg
ICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9
Cn07CgogCnRlbXBsYXRlPD4KY2xhc3MgX2J6X2NvczxmbG9hdD4gOiBwdWJsaWMgT25lT3BlcmFu
ZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgZmxvYXQgVF9u
dW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUg
VF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGNvcyAgKChm
bG9hdCl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5
UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29u
c3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJjb3MoIjsKICAgICAgICBhLnByZXR0eVBy
aW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRl
PD4KY2xhc3MgX2J6X2Nvczxsb25nIGRvdWJsZT4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0
aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10
eXBlMTsKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGNvcyAg
KChsb25nIGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZv
aWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAg
ICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJjb3MoIjsKICAgICAgICBh
LnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07Cgog
CiMgNzkyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMu
aCIKCgogCiMgODE0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0
aGZ1bmMuaCIKCgogCiMgODM2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovbWF0aGZ1bmMuaCIKCgogCiMgODYxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNz
IF9iel9jb3NoIDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ugewpw
dWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91
YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5
cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBjb3NoICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBs
YXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHBy
ZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAg
ICAgc3RyICs9ICJjb3NoKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAg
ICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9jb3NoPGZs
b2F0PiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGlj
OgogICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGUxOwogICAgdHlwZWRlZiBmbG9hdCBUX251bXR5
cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAg
eyByZXR1cm4gc3RkOjogY29zaCAgKChmbG9hdCl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQx
PgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJj
b3NoKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0g
IikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9jb3NoPGxvbmcgZG91YmxlPiA6
IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAg
dHlwZWRlZiBsb25nIGRvdWJsZSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBsb25nIGRvdWJsZSBU
X251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4
KQogICAgeyByZXR1cm4gc3RkOjogY29zaCAgKChsb25nIGRvdWJsZSl4KTsgfQoKICAgIHRlbXBs
YXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHBy
ZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAg
ICAgc3RyICs9ICJjb3NoKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAg
ICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAojIDk0MyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDk2NSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDk4NyAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDEwMTIgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X2V4cCA6IHB1YmxpYyBPbmVPcGVyYW5k
QXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUx
IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlu
bGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogZXhw
ICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQg
cHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAg
ICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJleHAoIjsKICAgICAgICBhLnBy
ZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRl
bXBsYXRlPD4KY2xhc3MgX2J6X2V4cDxmbG9hdD4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0
aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsK
ICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBl
IGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGV4cCAgKChmbG9hdCl4KTsg
fQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3Ry
aW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEp
CiAgICB7CiAgICAgICAgc3RyICs9ICJleHAoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixm
b3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xhc3Mg
X2J6X2V4cDxsb25nIGRvdWJsZT4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxh
dGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlMTsKICAg
IHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10
eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGV4cCAgKChsb25nIGRv
dWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5
UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29u
c3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJleHAoIjsKICAgICAgICBhLnByZXR0eVBy
aW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCiMgMTA5NCAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAoj
IDExMTYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5o
IgoKCiAKIyAxMTM4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0
aGZ1bmMuaCIKCgogCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfZXhwbTEg
OiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAg
IHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10
eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAg
IHsgcmV0dXJuIDo6IGV4cG0xICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQx
PgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJl
eHBtMSgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9
ICIpIjsKICAgIH0KfTsKCgogCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpf
ZXJmIDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6
CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91YmxlIFRf
bnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgp
CiAgICB7IHJldHVybiA6OiBlcmYgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3Mg
VDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRG
b3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0g
ImVyZigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9
ICIpIjsKICAgIH0KfTsKCgogCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpf
ZXJmYyA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGlj
OgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJsZSBU
X251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4
KQogICAgeyByZXR1cm4gOjogZXJmYyAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFz
cyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciAr
PSAiZXJmYygiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3Ry
ICs9ICIpIjsKICAgIH0KfTsKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9i
el9mbG9vciA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVi
bGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJs
ZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBl
MSB4KQogICAgeyByZXR1cm4gc3RkOjogZmxvb3IgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxh
dGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJl
dHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAg
ICBzdHIgKz0gImZsb29yKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAg
ICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9mbG9vcjxm
bG9hdD4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1Ymxp
YzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10
eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAg
IHsgcmV0dXJuIHN0ZDo6IGZsb29yICAoKGZsb2F0KXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3Mg
VDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRG
b3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0g
ImZsb29yKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIg
Kz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9mbG9vcjxsb25nIGRvdWJs
ZT4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoK
ICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgbG9uZyBkb3Vi
bGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlw
ZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGZsb29yICAoKGxvbmcgZG91YmxlKXgpOyB9CgogICAg
dGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0
ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsK
ICAgICAgICBzdHIgKz0gImZsb29yKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0
KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAojIDEyODkgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKIyAxMzE0ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMTMzNiAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X2lzbmFuIDogcHVibGljIE9uZU9w
ZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVt
dHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgaW50IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiA6OiBpc25h
biAgKHgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQ
cmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25z
dCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gImlzbmFuKCI7CiAgICAgICAgYS5wcmV0dHlQ
cmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKCiAKIyAxMzgw
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgog
Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfajAgOiBwdWJsaWMgT25lT3Bl
cmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10
eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRp
YyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIDo6IGow
ICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQg
cHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAg
ICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJqMCgiOwogICAgICAgIGEucHJl
dHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCgogCgp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfajEgOiBwdWJsaWMgT25lT3BlcmFu
ZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBl
MSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBp
bmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIDo6IGoxICAo
KGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJl
dHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAg
Y29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJqMSgiOwogICAgICAgIGEucHJldHR5
UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCgogCgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfbGdhbW1hIDogcHVibGljIE9uZU9wZXJh
bmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlw
ZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiA6OiBsZ2Ft
bWEgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9p
ZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAg
ICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gImxnYW1tYSgiOwogICAgICAg
IGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsK
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9iel9sb2cgOiBwdWJsaWMgT25l
T3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9u
dW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0
YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0
ZDo6IGxvZyAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRp
YyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0
LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAibG9nKCI7CiAgICAg
ICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9
OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9sb2c8ZmxvYXQ+IDogcHVibGljIE9uZU9wZXJhbmRB
cHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVt
dHlwZTE7CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRf
bnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBsb2cgICgoZmxv
YXQpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVBy
aW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0
IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAibG9nKCI7CiAgICAgICAgYS5wcmV0dHlQcmlu
dChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+
CmNsYXNzIF9iel9sb2c8bG9uZyBkb3VibGU+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2
ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlw
ZTE7CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBsb2cgICgo
bG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lk
IHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAg
ICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAibG9nKCI7CiAgICAgICAgYS5w
cmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAoj
IDE1MjggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5o
IgoKCiAKIyAxNTUwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0
aGZ1bmMuaCIKCgogCiMgMTU3MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2Js
aXR6L21hdGhmdW5jLmgiCgoKIAoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6
X2xvZ2IgOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1Ymxp
YzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUg
VF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEg
eCkKICAgIHsgcmV0dXJuIDo6IGxvZ2IgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xh
c3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJp
bnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIg
Kz0gImxvZ2IoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0
ciArPSAiKSI7CiAgICB9Cn07CgoKIAoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3Mg
X2J6X2xvZzFwIDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ugewpw
dWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91
YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5
cGUxIHgpCiAgICB7IHJldHVybiA6OiBsb2cxcCAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0
ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0
dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAg
IHN0ciArPSAibG9nMXAoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAg
ICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpj
bGFzcyBfYnpfbG9nMTAgOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFz
ZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRl
ZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRf
bnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGxvZzEwICAoKGRvdWJsZSl4KTsgfQoKICAg
IHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBz
dHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7
CiAgICAgICAgc3RyICs9ICJsb2cxMCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1h
dCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpf
bG9nMTA8ZmxvYXQ+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ug
ewpwdWJsaWM6CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGZsb2F0
IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUx
IHgpCiAgICB7IHJldHVybiBzdGQ6OiBsb2cxMCAgKChmbG9hdCl4KTsgfQoKICAgIHRlbXBsYXRl
PGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0
eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAg
c3RyICs9ICJsb2cxMCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAg
ICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfbG9nMTA8bG9u
ZyBkb3VibGU+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ugewpw
dWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGxv
bmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShU
X251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBsb2cxMCAgKChsb25nIGRvdWJsZSl4KTsg
fQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3Ry
aW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEp
CiAgICB7CiAgICAgICAgc3RyICs9ICJsb2cxMCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3Ry
LGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKIyAxNjk4ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMTcyMyAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPgpjbGFzcyBfYnpfbmVnYXRlIDogcHVibGljIE9uZU9wZXJh
bmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIHR5cGVuYW1l
ICBOdW1lcmljVHlwZVRyYWl0czwgUF9udW10eXBlID46OlRfc2lnbmVkdHlwZSAgVF9udW10eXBl
OwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZSB4KQogICAgeyBy
ZXR1cm4gLXg7IH0KfTsKCiAKIyAxNzU0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMTc3OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX251bXR5cGUyPgpjbGFzcyBfYnpfcG93IDogcHVibGljIFR3b09wZXJhbmRBcHBs
aWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9u
dW10eXBlMTsKICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlwZWRlZiBk
b3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVt
dHlwZTEgeCwgVF9udW10eXBlMiB5KQogICAgeyByZXR1cm4gc3RkOjogcG93ICAoKGRvdWJsZSl4
LChkb3VibGUpeSk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+CiAgICBzdGF0
aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1h
dCwKICAgICAgICBjb25zdCBUMSYgYSwgY29uc3QgVDImIGIpCiAgICB7CiAgICAgICAgc3RyICs9
ICJwb3coIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciAr
PSAiLCI7CiAgICAgICAgYi5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0g
IikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9wb3c8ZmxvYXQsIGZsb2F0ID4g
OiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAg
IHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMjsK
ICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBl
IGFwcGx5KFRfbnVtdHlwZTEgeCwgVF9udW10eXBlMiB5KQogICAgeyByZXR1cm4gc3RkOjogcG93
ICAoKGZsb2F0KXgsKGZsb2F0KXkpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQy
PgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEsIGNvbnN0IFQyJiBiKQogICAgewogICAg
ICAgIHN0ciArPSAicG93KCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAg
ICAgICBzdHIgKz0gIiwiOwogICAgICAgIGIucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAg
ICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfcG93PGxvbmcg
ZG91YmxlLCBsb25nIGRvdWJsZSA+IDogcHVibGljIFR3b09wZXJhbmRBcHBsaWNhdGl2ZVRlbXBs
YXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIGxvbmcgZG91Ymxl
IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUx
IHgsIFRfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJuIHN0ZDo6IHBvdyAgKChsb25nIGRvdWJsZSl4
LChsb25nIGRvdWJsZSl5KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4KICAg
IHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYg
Zm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhLCBjb25zdCBUMiYgYikKICAgIHsKICAgICAgICBz
dHIgKz0gInBvdygiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAg
c3RyICs9ICIsIjsKICAgICAgICBiLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0
ciArPSAiKSI7CiAgICB9Cn07CgogCiMgMTg3MyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDE4OTggIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKIyAxOTIzICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMTk0OCAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X3JpbnQgOiBwdWJsaWMgT25lT3BlcmFuZEFw
cGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBU
X251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIDo6IHJpbnQgICgo
ZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0
dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBj
b25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gInJpbnQoIjsKICAgICAgICBhLnByZXR0
eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgoKIAojIDE5
OTIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoK
CiAKIyAyMDE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1
bmMuaCIKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9iel9zaW4gOiBwdWJs
aWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVk
ZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoK
ICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0
dXJuIHN0ZDo6IHNpbiAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAg
IHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYg
Zm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAic2luKCI7
CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwog
ICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9zaW48ZmxvYXQ+IDogcHVibGljIE9uZU9w
ZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGZsb2F0
IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5s
aW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBzaW4g
ICgoZmxvYXQpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHBy
ZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAg
IGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAic2luKCI7CiAgICAgICAgYS5wcmV0
dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1w
bGF0ZTw+CmNsYXNzIF9iel9zaW48bG9uZyBkb3VibGU+IDogcHVibGljIE9uZU9wZXJhbmRBcHBs
aWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRf
bnVtdHlwZTE7CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBz
aW4gICgobG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRp
YyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0
LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAic2luKCI7CiAgICAg
ICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9
OwoKIAojIDIwOTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRo
ZnVuYy5oIgoKCiAKIyAyMTIxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovbWF0aGZ1bmMuaCIKCgogCiMgMjE0MyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFz
cyBfYnpfc2luaCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsK
cHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRv
dWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10
eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogc2luaCAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1w
bGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBw
cmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAg
ICAgIHN0ciArPSAic2luaCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAg
ICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfc2luaDxm
bG9hdD4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1Ymxp
YzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10
eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAg
IHsgcmV0dXJuIHN0ZDo6IHNpbmggICgoZmxvYXQpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBU
MT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZv
cm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAi
c2luaCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9
ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfc2luaDxsb25nIGRvdWJsZT4g
OiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAg
IHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUg
VF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEg
eCkKICAgIHsgcmV0dXJuIHN0ZDo6IHNpbmggICgobG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1w
bGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBw
cmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAg
ICAgIHN0ciArPSAic2luaCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAg
ICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKIyAyMjI1ICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMjI0NyAiL3Vmcy9uZXdtYW4v
dXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDIyNjkgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgX2J6X3NxciA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGlj
YXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10
eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZSB4KQogICAg
eyByZXR1cm4geCp4OyB9CiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHBy
ZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAg
IGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAic3FyKCI7CiAgICAgICAgYS5wcmV0
dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIyAyMzA5
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9iel9zcXJ0IDogcHVibGljIE9uZU9w
ZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVt
dHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0
aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6
OiBzcXJ0ICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGlj
IHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQs
CiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJzcXJ0KCI7CiAgICAg
ICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9
OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9zcXJ0PGZsb2F0PiA6IHB1YmxpYyBPbmVPcGVyYW5k
QXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBmbG9hdCBUX251
bXR5cGUxOwogICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBU
X251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogc3FydCAgKChm
bG9hdCl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5
UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29u
c3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJzcXJ0KCI7CiAgICAgICAgYS5wcmV0dHlQ
cmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0
ZTw+CmNsYXNzIF9iel9zcXJ0PGxvbmcgZG91YmxlPiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGlj
YXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBsb25nIGRvdWJsZSBUX251
bXR5cGUxOwogICAgdHlwZWRlZiBsb25nIGRvdWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlu
bGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogc3Fy
dCAgKChsb25nIGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGlj
IHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQs
CiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJzcXJ0KCI7CiAgICAg
ICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9
OwoKIAojIDIzOTEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRo
ZnVuYy5oIgoKCiAKIyAyNDEzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovbWF0aGZ1bmMuaCIKCgogCiMgMjQzNSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFz
cyBfYnpfdGFuIDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ugewpw
dWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91
YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5
cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiB0YW4gICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxh
dGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJl
dHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAg
ICBzdHIgKz0gInRhbigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAg
ICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfdGFuPGZsb2F0
PiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgog
ICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGUxOwogICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGU7
CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyBy
ZXR1cm4gc3RkOjogdGFuICAoKGZsb2F0KXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAg
ICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQm
IGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gInRhbigi
OwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsK
ICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfdGFuPGxvbmcgZG91YmxlPiA6IHB1Ymxp
YyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRl
ZiBsb25nIGRvdWJsZSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBsb25nIGRvdWJsZSBUX251bXR5
cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAg
eyByZXR1cm4gc3RkOjogdGFuICAoKGxvbmcgZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xh
c3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJp
bnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIg
Kz0gInRhbigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3Ry
ICs9ICIpIjsKICAgIH0KfTsKCiAKIyAyNTE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMjUzOSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDI1NjEgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMT4KY2xhc3MgX2J6X3RhbmggOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZl
VGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUx
OwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10
eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IHRhbmggICgoZG91Ymxl
KXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmlu
dChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBU
MSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gInRhbmgoIjsKICAgICAgICBhLnByZXR0eVByaW50
KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4K
Y2xhc3MgX2J6X3Rhbmg8ZmxvYXQ+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBs
YXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTE7CiAgICB0eXBl
ZGVmIGZsb2F0IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShU
X251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiB0YW5oICAoKGZsb2F0KXgpOyB9CgogICAg
dGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0
ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsK
ICAgICAgICBzdHIgKz0gInRhbmgoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQp
OwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xhc3MgX2J6X3Rh
bmg8bG9uZyBkb3VibGU+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jh
c2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTE7CiAgICB0eXBl
ZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBh
cHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiB0YW5oICAoKGxvbmcgZG91Ymxl
KXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmlu
dChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBU
MSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gInRhbmgoIjsKICAgICAgICBhLnByZXR0eVByaW50
KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCiMgMjY0MyAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDI2
NjUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoK
CiAKIyAyNjg3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1
bmMuaCIKCgogCiMgMjcwOSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L21hdGhmdW5jLmgiCgoKIAojIDI3MzQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNz
IF9iel95MCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVi
bGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJs
ZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBl
MSB4KQogICAgeyByZXR1cm4gOjogeTAgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xh
c3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJp
bnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIg
Kz0gInkwKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIg
Kz0gIikiOwogICAgfQp9OwoKCiAKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9i
el95MSA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGlj
OgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJsZSBU
X251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4
KQogICAgeyByZXR1cm4gOjogeTEgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3Mg
VDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRG
b3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0g
InkxKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0g
IikiOwogICAgfQp9OwoKCgoKfSAKCgojIDM5MCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L2FwcGxpY3MuaCIgMgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZjIuaCIgMQoKI2RlZmluZSBCWl9NQVRIRjJfSAoKCgoK
CgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpj
bGFzcyBfYnpfY2V4cCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNl
IHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVm
IFBfbnVtdHlwZTEgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5
KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIF9iel9leHA8VF9udW10eXBlMT46OmFwcGx5KHgp
OyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChz
dHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYg
YSkKICAgIHsKICAgICAgICBzdHIgKz0gImNleHAoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0
cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTE+CmNsYXNzIF9iel9jc3FydCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRp
dmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlw
ZTE7CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUg
VF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIF9iel9zcXJ0PFRfbnVt
dHlwZTE+OjphcHBseSh4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZv
aWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAg
ICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJjc3FydCgiOwogICAgICAg
IGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsK
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X3BvdzIgOiBwdWJsaWMgT25l
T3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9u
dW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTsKCiAg
ICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IAogICAg
ICAgIHJldHVybiAgeCAgICogIHggIDsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAg
IHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYg
Zm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAicG93Migi
OwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsK
ICAgIH0KfTsKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X3BvdzMgOiBw
dWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5
cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVt
dHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAg
ICB7IAogICAgICAgIHJldHVybiAgeCAgICogIHggICAqCiAgICAgICAgICAgeCAgOwogICAgfQoK
ICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5n
JiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAg
ICB7CiAgICAgICAgc3RyICs9ICJwb3czKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9y
bWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxPgpjbGFzcyBfYnpfcG93NCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10
eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgCiAgICAgICAgVF9udW10eXBlIHQxID0gIHgg
ICAqICB4ICA7CiAgICAgICAgcmV0dXJuICB0MSAgICogIHQxICA7CiAgICB9CgogICAgdGVtcGxh
dGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJl
dHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAg
ICBzdHIgKz0gInBvdzQoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAg
ICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNs
YXNzIF9iel9wb3c1IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ug
ewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYg
UF9udW10eXBlMSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHko
VF9udW10eXBlMSB4KQogICAgewogICAgICAgIFRfbnVtdHlwZSB0MSA9ICB4ICAgKiAgeCAgOwog
ICAgICAgIHJldHVybiAgdDEgICAqICB0MSAgCiAgICAgICAgICAgICogIHQxICA7CiAgICB9Cgog
ICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcm
IHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAg
IHsKICAgICAgICBzdHIgKz0gInBvdzUoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3Jt
YXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmNsYXNzIF9iel9wb3c2IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBs
YXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAg
IHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5
cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgewogICAgICAgIFRfbnVtdHlwZSB0MSA9ICB4ICAg
KiAgeCAgIAogICAgICAgICAgICAqICB4ICA7CiAgICAgICAgcmV0dXJuICB0MSAgICogIHQxICA7
CiAgICB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmlu
dChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBU
MSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gInBvdzYoIjsKICAgICAgICBhLnByZXR0eVByaW50
KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfcG93NyA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGlj
YXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVt
dHlwZTE7CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsKICAgICAgICBUX251bXR5cGUg
dDEgPSAgeCAgICogIHggICAKICAgICAgICAgICAgKiAgeCAgOwogICAgICAgIHJldHVybiAgdDEg
ICAqICB0MSAgCiAgICAgICAgICAgICogIHggIDsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBU
MT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZv
cm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAi
cG93NygiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9
ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X3Bv
dzggOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoK
ICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBQX251bXR5cGUx
IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUx
IHgpCiAgICB7CiAgICAgICAgVF9udW10eXBlIHQxID0gIHggICAqICB4ICA7CiAgICAgICAgVF9u
dW10eXBlIHQyID0gIHQxICAgKiAgdDEgIDsKICAgICAgICByZXR1cm4gIHQyICAgKiAgdDIgIDsK
ICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50
KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQx
JiBhKQogICAgewogICAgICAgIHN0ciArPSAicG93OCgiOwogICAgICAgIGEucHJldHR5UHJpbnQo
c3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKCgoKCgoKIAogCgoj
ZGVmaW5lIEJaX0RFQ0xBUkVfUE9XKFQpIGlubGluZSBUIHBvdzIoVCB4KSB7IHJldHVybiB4Kng7
IH0gaW5saW5lIFQgcG93MyhUIHgpIHsgcmV0dXJuIHgqeCp4OyB9IGlubGluZSBUIHBvdzQoVCB4
KSB7IFQgdDEgPSB4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgVCBwb3c1KFQgeCkgeyBUIHQx
ID0geCp4OyByZXR1cm4gdDEqdDEqeDsgfSBpbmxpbmUgVCBwb3c2KFQgeCkgeyBUIHQxID0geCp4
Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgVCBwb3c3KFQgeCkgeyBUIHQxID0geCp4OyByZXR1
cm4gdDEqdDEqdDEqeDsgfSBpbmxpbmUgVCBwb3c4KFQgeCkgeyBUIHQxID0geCp4LCB0Mj10MSp0
MTsgcmV0dXJuIHQyKnQyOyB9ICAKCgoKCgoKCgppbmxpbmUgIGludCAgcG93MiggaW50ICB4KSB7
IHJldHVybiB4Kng7IH0gaW5saW5lICBpbnQgIHBvdzMoIGludCAgeCkgeyByZXR1cm4geCp4Kng7
IH0gaW5saW5lICBpbnQgIHBvdzQoIGludCAgeCkgeyAgaW50ICB0MSA9IHgqeDsgcmV0dXJuIHQx
KnQxOyB9IGlubGluZSAgaW50ICBwb3c1KCBpbnQgIHgpIHsgIGludCAgdDEgPSB4Kng7IHJldHVy
biB0MSp0MSp4OyB9IGlubGluZSAgaW50ICBwb3c2KCBpbnQgIHgpIHsgIGludCAgdDEgPSB4Kngq
eDsgcmV0dXJuIHQxKnQxOyB9IGlubGluZSAgaW50ICBwb3c3KCBpbnQgIHgpIHsgIGludCAgdDEg
PSB4Kng7IHJldHVybiB0MSp0MSp0MSp4OyB9IGlubGluZSAgaW50ICBwb3c4KCBpbnQgIHgpIHsg
IGludCAgdDEgPSB4KngsIHQyPXQxKnQxOyByZXR1cm4gdDIqdDI7IH0gCmlubGluZSAgZmxvYXQg
IHBvdzIoIGZsb2F0ICB4KSB7IHJldHVybiB4Kng7IH0gaW5saW5lICBmbG9hdCAgcG93MyggZmxv
YXQgIHgpIHsgcmV0dXJuIHgqeCp4OyB9IGlubGluZSAgZmxvYXQgIHBvdzQoIGZsb2F0ICB4KSB7
ICBmbG9hdCAgdDEgPSB4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGZsb2F0ICBwb3c1KCBm
bG9hdCAgeCkgeyAgZmxvYXQgIHQxID0geCp4OyByZXR1cm4gdDEqdDEqeDsgfSBpbmxpbmUgIGZs
b2F0ICBwb3c2KCBmbG9hdCAgeCkgeyAgZmxvYXQgIHQxID0geCp4Kng7IHJldHVybiB0MSp0MTsg
fSBpbmxpbmUgIGZsb2F0ICBwb3c3KCBmbG9hdCAgeCkgeyAgZmxvYXQgIHQxID0geCp4OyByZXR1
cm4gdDEqdDEqdDEqeDsgfSBpbmxpbmUgIGZsb2F0ICBwb3c4KCBmbG9hdCAgeCkgeyAgZmxvYXQg
IHQxID0geCp4LCB0Mj10MSp0MTsgcmV0dXJuIHQyKnQyOyB9IAppbmxpbmUgIGRvdWJsZSAgcG93
MiggZG91YmxlICB4KSB7IHJldHVybiB4Kng7IH0gaW5saW5lICBkb3VibGUgIHBvdzMoIGRvdWJs
ZSAgeCkgeyByZXR1cm4geCp4Kng7IH0gaW5saW5lICBkb3VibGUgIHBvdzQoIGRvdWJsZSAgeCkg
eyAgZG91YmxlICB0MSA9IHgqeDsgcmV0dXJuIHQxKnQxOyB9IGlubGluZSAgZG91YmxlICBwb3c1
KCBkb3VibGUgIHgpIHsgIGRvdWJsZSAgdDEgPSB4Kng7IHJldHVybiB0MSp0MSp4OyB9IGlubGlu
ZSAgZG91YmxlICBwb3c2KCBkb3VibGUgIHgpIHsgIGRvdWJsZSAgdDEgPSB4KngqeDsgcmV0dXJu
IHQxKnQxOyB9IGlubGluZSAgZG91YmxlICBwb3c3KCBkb3VibGUgIHgpIHsgIGRvdWJsZSAgdDEg
PSB4Kng7IHJldHVybiB0MSp0MSp0MSp4OyB9IGlubGluZSAgZG91YmxlICBwb3c4KCBkb3VibGUg
IHgpIHsgIGRvdWJsZSAgdDEgPSB4KngsIHQyPXQxKnQxOyByZXR1cm4gdDIqdDI7IH0gCmlubGlu
ZSAgbG9uZyBkb3VibGUgIHBvdzIoIGxvbmcgZG91YmxlICB4KSB7IHJldHVybiB4Kng7IH0gaW5s
aW5lICBsb25nIGRvdWJsZSAgcG93MyggbG9uZyBkb3VibGUgIHgpIHsgcmV0dXJuIHgqeCp4OyB9
IGlubGluZSAgbG9uZyBkb3VibGUgIHBvdzQoIGxvbmcgZG91YmxlICB4KSB7ICBsb25nIGRvdWJs
ZSAgdDEgPSB4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGxvbmcgZG91YmxlICBwb3c1KCBs
b25nIGRvdWJsZSAgeCkgeyAgbG9uZyBkb3VibGUgIHQxID0geCp4OyByZXR1cm4gdDEqdDEqeDsg
fSBpbmxpbmUgIGxvbmcgZG91YmxlICBwb3c2KCBsb25nIGRvdWJsZSAgeCkgeyAgbG9uZyBkb3Vi
bGUgIHQxID0geCp4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGxvbmcgZG91YmxlICBwb3c3
KCBsb25nIGRvdWJsZSAgeCkgeyAgbG9uZyBkb3VibGUgIHQxID0geCp4OyByZXR1cm4gdDEqdDEq
dDEqeDsgfSBpbmxpbmUgIGxvbmcgZG91YmxlICBwb3c4KCBsb25nIGRvdWJsZSAgeCkgeyAgbG9u
ZyBkb3VibGUgIHQxID0geCp4LCB0Mj10MSp0MTsgcmV0dXJuIHQyKnQyOyB9IAoKCmlubGluZSAg
Y29tcGxleDxmbG9hdD4gIHBvdzIoIGNvbXBsZXg8ZmxvYXQ+ICB4KSB7IHJldHVybiB4Kng7IH0g
aW5saW5lICBjb21wbGV4PGZsb2F0PiAgcG93MyggY29tcGxleDxmbG9hdD4gIHgpIHsgcmV0dXJu
IHgqeCp4OyB9IGlubGluZSAgY29tcGxleDxmbG9hdD4gIHBvdzQoIGNvbXBsZXg8ZmxvYXQ+ICB4
KSB7ICBjb21wbGV4PGZsb2F0PiAgdDEgPSB4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGNv
bXBsZXg8ZmxvYXQ+ICBwb3c1KCBjb21wbGV4PGZsb2F0PiAgeCkgeyAgY29tcGxleDxmbG9hdD4g
IHQxID0geCp4OyByZXR1cm4gdDEqdDEqeDsgfSBpbmxpbmUgIGNvbXBsZXg8ZmxvYXQ+ICBwb3c2
KCBjb21wbGV4PGZsb2F0PiAgeCkgeyAgY29tcGxleDxmbG9hdD4gIHQxID0geCp4Kng7IHJldHVy
biB0MSp0MTsgfSBpbmxpbmUgIGNvbXBsZXg8ZmxvYXQ+ICBwb3c3KCBjb21wbGV4PGZsb2F0PiAg
eCkgeyAgY29tcGxleDxmbG9hdD4gIHQxID0geCp4OyByZXR1cm4gdDEqdDEqdDEqeDsgfSBpbmxp
bmUgIGNvbXBsZXg8ZmxvYXQ+ICBwb3c4KCBjb21wbGV4PGZsb2F0PiAgeCkgeyAgY29tcGxleDxm
bG9hdD4gIHQxID0geCp4LCB0Mj10MSp0MTsgcmV0dXJuIHQyKnQyOyB9IAppbmxpbmUgIGNvbXBs
ZXg8ZG91YmxlPiAgcG93MiggY29tcGxleDxkb3VibGU+ICB4KSB7IHJldHVybiB4Kng7IH0gaW5s
aW5lICBjb21wbGV4PGRvdWJsZT4gIHBvdzMoIGNvbXBsZXg8ZG91YmxlPiAgeCkgeyByZXR1cm4g
eCp4Kng7IH0gaW5saW5lICBjb21wbGV4PGRvdWJsZT4gIHBvdzQoIGNvbXBsZXg8ZG91YmxlPiAg
eCkgeyAgY29tcGxleDxkb3VibGU+ICB0MSA9IHgqeDsgcmV0dXJuIHQxKnQxOyB9IGlubGluZSAg
Y29tcGxleDxkb3VibGU+ICBwb3c1KCBjb21wbGV4PGRvdWJsZT4gIHgpIHsgIGNvbXBsZXg8ZG91
YmxlPiAgdDEgPSB4Kng7IHJldHVybiB0MSp0MSp4OyB9IGlubGluZSAgY29tcGxleDxkb3VibGU+
ICBwb3c2KCBjb21wbGV4PGRvdWJsZT4gIHgpIHsgIGNvbXBsZXg8ZG91YmxlPiAgdDEgPSB4Kngq
eDsgcmV0dXJuIHQxKnQxOyB9IGlubGluZSAgY29tcGxleDxkb3VibGU+ICBwb3c3KCBjb21wbGV4
PGRvdWJsZT4gIHgpIHsgIGNvbXBsZXg8ZG91YmxlPiAgdDEgPSB4Kng7IHJldHVybiB0MSp0MSp0
MSp4OyB9IGlubGluZSAgY29tcGxleDxkb3VibGU+ICBwb3c4KCBjb21wbGV4PGRvdWJsZT4gIHgp
IHsgIGNvbXBsZXg8ZG91YmxlPiAgdDEgPSB4KngsIHQyPXQxKnQxOyByZXR1cm4gdDIqdDI7IH0g
CmlubGluZSAgY29tcGxleDxsb25nIGRvdWJsZT4gIHBvdzIoIGNvbXBsZXg8bG9uZyBkb3VibGU+
ICB4KSB7IHJldHVybiB4Kng7IH0gaW5saW5lICBjb21wbGV4PGxvbmcgZG91YmxlPiAgcG93Mygg
Y29tcGxleDxsb25nIGRvdWJsZT4gIHgpIHsgcmV0dXJuIHgqeCp4OyB9IGlubGluZSAgY29tcGxl
eDxsb25nIGRvdWJsZT4gIHBvdzQoIGNvbXBsZXg8bG9uZyBkb3VibGU+ICB4KSB7ICBjb21wbGV4
PGxvbmcgZG91YmxlPiAgdDEgPSB4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGNvbXBsZXg8
bG9uZyBkb3VibGU+ICBwb3c1KCBjb21wbGV4PGxvbmcgZG91YmxlPiAgeCkgeyAgY29tcGxleDxs
b25nIGRvdWJsZT4gIHQxID0geCp4OyByZXR1cm4gdDEqdDEqeDsgfSBpbmxpbmUgIGNvbXBsZXg8
bG9uZyBkb3VibGU+ICBwb3c2KCBjb21wbGV4PGxvbmcgZG91YmxlPiAgeCkgeyAgY29tcGxleDxs
b25nIGRvdWJsZT4gIHQxID0geCp4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGNvbXBsZXg8
bG9uZyBkb3VibGU+ICBwb3c3KCBjb21wbGV4PGxvbmcgZG91YmxlPiAgeCkgeyAgY29tcGxleDxs
b25nIGRvdWJsZT4gIHQxID0geCp4OyByZXR1cm4gdDEqdDEqdDEqeDsgfSBpbmxpbmUgIGNvbXBs
ZXg8bG9uZyBkb3VibGU+ICBwb3c4KCBjb21wbGV4PGxvbmcgZG91YmxlPiAgeCkgeyAgY29tcGxl
eDxsb25nIGRvdWJsZT4gIHQxID0geCp4LCB0Mj10MSp0MTsgcmV0dXJuIHQyKnQyOyB9IAoKCn0g
CgoKIyAzOTQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcHBsaWNz
LmgiIDIKCgoKCiMgNTYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92
ZWNleHByLmgiIDIKCgoKCgoKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMSwgY2xhc3MgUF9leHByMiwgY2xhc3MgUF9vcD4KY2xhc3MgX2J6X1ZlY0V4cHJP
cCB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfZXhwcjEgVF9leHByMTsKICAgIHR5cGVkZWYgUF9l
eHByMiBUX2V4cHIyOwogICAgdHlwZWRlZiB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlIFRf
bnVtdHlwZTE7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5cGUgVF9udW10
eXBlMjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAg
VF9udW10eXBlMiA+OjpUX3Byb21vdGUgIFRfbnVtdHlwZTsKICAgIHR5cGVkZWYgUF9vcCAgICBU
X29wOwoKCiAgICBfYnpfVmVjRXhwck9wKFRfZXhwcjEgYSwgVF9leHByMiBiKQogICAgICAgIDog
aXRlcjFfKGEpLCBpdGVyMl8oYikKICAgIHsgfQoKCgoKCgoKICAgIF9iel9WZWNFeHByT3AoY29u
c3QgX2J6X1ZlY0V4cHJPcDxQX2V4cHIxLCBQX2V4cHIyLCBQX29wPiYgeCkKICAgICAgICA6IGl0
ZXIxXyh4Lml0ZXIxXyksIGl0ZXIyXyh4Lml0ZXIyXykKICAgIHsgfQoKCiAgICBUX251bXR5cGUg
b3BlcmF0b3JbXShpbnQgaSkgY29uc3QKICAgIHsgcmV0dXJuIFRfb3A6OmFwcGx5KGl0ZXIxX1tp
XSwgaXRlcjJfW2ldKTsgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGludCBpKSBjb25zdAog
ICAgeyByZXR1cm4gVF9vcDo6YXBwbHkoaXRlcjFfKGkpLCBpdGVyMl8oaSkpOyB9CgogICAgaW50
IGxlbmd0aChpbnQgcmVjb21tZW5kZWRMZW5ndGgpIGNvbnN0CiAgICB7IAogICAgICAgICA7Cgog
ICAgICAgIHJldHVybiBpdGVyMV8ubGVuZ3RoKHJlY29tbWVuZGVkTGVuZ3RoKTsgCiAgICB9Cgog
ICAgZW51bSB7IAogICAgICAgICAgIF9iel9zdGF0aWNMZW5ndGhDb3VudCA9IAogICAgICAoaW50
KSBQX2V4cHIxOjpfYnpfc3RhdGljTGVuZ3RoQ291bnQgICAKICAgICAgICAgKyAoaW50KSBQX2V4
cHIyOjpfYnpfc3RhdGljTGVuZ3RoQ291bnQgICwKCiAgICAgICAgICAgX2J6X2R5bmFtaWNMZW5n
dGhDb3VudCA9IAogICAgICAoaW50KSBQX2V4cHIxOjpfYnpfZHluYW1pY0xlbmd0aENvdW50ICAg
CiAgICAgICAgKyAoaW50KSBQX2V4cHIyOjpfYnpfZHluYW1pY0xlbmd0aENvdW50ICAsCgogICAg
ICAgICAgIF9iel9zdGF0aWNMZW5ndGggPSAoKGludCkgUF9leHByMTo6X2J6X3N0YXRpY0xlbmd0
aCAgID4gKGludCkgUF9leHByMjo6X2J6X3N0YXRpY0xlbmd0aCAgKSA/IChpbnQpIFBfZXhwcjE6
Ol9iel9zdGF0aWNMZW5ndGggICA6IChpbnQpIFBfZXhwcjI6Ol9iel9zdGF0aWNMZW5ndGggIAoK
IAogICAgfTsKCiAgICBpbnQgX2J6X3N1Z2dlc3RMZW5ndGgoKSBjb25zdAogICAgewogICAgICAg
IGludCBsZW5ndGgxID0gaXRlcjFfLl9iel9zdWdnZXN0TGVuZ3RoKCk7CiAgICAgICAgaWYgKGxl
bmd0aDEgIT0gMCkKICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDE7CiAgICAgICAgcmV0dXJuIGl0
ZXIyXy5fYnpfc3VnZ2VzdExlbmd0aCgpOwogICAgfQoKICAgIGJvb2wgICBfYnpfaGFzRmFzdEFj
Y2VzcygpIGNvbnN0CiAgICB7IHJldHVybiBpdGVyMV8uX2J6X2hhc0Zhc3RBY2Nlc3MoKSAmJiBp
dGVyMl8uX2J6X2hhc0Zhc3RBY2Nlc3MoKTsgfQoKICAgIFRfbnVtdHlwZSBfYnpfZmFzdEFjY2Vz
cyhpbnQgaSkgY29uc3QKICAgIHsgCiAgICAgICAgcmV0dXJuIFRfb3A6OmFwcGx5KGl0ZXIxXy5f
YnpfZmFzdEFjY2VzcyhpKSwKICAgICAgICAgICAgaXRlcjJfLl9iel9mYXN0QWNjZXNzKGkpKTsg
CiAgICB9CiAgICAKcHJpdmF0ZToKICAgIF9iel9WZWNFeHByT3AoKTsKCiAgICBUX2V4cHIxIGl0
ZXIxXzsKICAgIFRfZXhwcjIgaXRlcjJfOwp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9leHByLCBjbGFz
cyBQX3VuYXJ5T3A+CmNsYXNzIF9iel9WZWNFeHByVW5hcnlPcCB7CgpwdWJsaWM6CiAgICB0eXBl
ZGVmIFBfZXhwciBUX2V4cHI7CiAgICB0eXBlZGVmIFBfdW5hcnlPcCBUX3VuYXJ5T3A7CiAgICB0
eXBlZGVmIHR5cGVuYW1lICBUX3VuYXJ5T3A6OlRfbnVtdHlwZSBUX251bXR5cGU7CgoKICAgIF9i
el9WZWNFeHByVW5hcnlPcChUX2V4cHIgaXRlcikKICAgICAgICA6IGl0ZXJfKGl0ZXIpCiAgICB7
IH0KCgoKCgoKCiAgICBfYnpfVmVjRXhwclVuYXJ5T3AoY29uc3QgX2J6X1ZlY0V4cHJVbmFyeU9w
PFBfZXhwciwgUF91bmFyeU9wPiYgeCkKICAgICAgICA6IGl0ZXJfKHguaXRlcl8pCiAgICB7IH0K
CgogICAgVF9udW10eXBlIG9wZXJhdG9yW10oaW50IGkpIGNvbnN0CiAgICB7IHJldHVybiBUX3Vu
YXJ5T3A6OmFwcGx5KGl0ZXJfW2ldKTsgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGludCBp
KSBjb25zdAogICAgeyByZXR1cm4gVF91bmFyeU9wOjphcHBseShpdGVyXyhpKSk7IH0KCiAgICBp
bnQgbGVuZ3RoKGludCByZWNvbW1lbmRlZExlbmd0aCkgY29uc3QKICAgIHsgcmV0dXJuIGl0ZXJf
Lmxlbmd0aChyZWNvbW1lbmRlZExlbmd0aCk7IH0KCiAgICBlbnVtIHsgX2J6X3N0YXRpY0xlbmd0
aENvdW50ID0gKGludCkgUF9leHByOjpfYnpfc3RhdGljTGVuZ3RoQ291bnQgICwKICAgICAgICAg
ICBfYnpfZHluYW1pY0xlbmd0aENvdW50ID0gKGludCkgUF9leHByOjpfYnpfZHluYW1pY0xlbmd0
aENvdW50ICAsCiAgICAgICAgICAgX2J6X3N0YXRpY0xlbmd0aCA9IChpbnQpIFBfZXhwcjo6X2J6
X3N0YXRpY0xlbmd0aCAgIH07CgogICAgaW50IF9iel9zdWdnZXN0TGVuZ3RoKCkgY29uc3QKICAg
IHsgcmV0dXJuIGl0ZXJfLl9iel9zdWdnZXN0TGVuZ3RoKCk7IH0KCiAgICBib29sICBfYnpfaGFz
RmFzdEFjY2VzcygpIGNvbnN0CiAgICB7IHJldHVybiBpdGVyXy5fYnpfaGFzRmFzdEFjY2Vzcygp
OyB9CgogICAgVF9udW10eXBlIF9iel9mYXN0QWNjZXNzKGludCBpKSBjb25zdAogICAgeyByZXR1
cm4gVF91bmFyeU9wOjphcHBseShpdGVyXy5fYnpfZmFzdEFjY2VzcyhpKSk7IH0KCnByaXZhdGU6
CiAgICBfYnpfVmVjRXhwclVuYXJ5T3AoKSB7IH0KCiAgICBUX2V4cHIgaXRlcl87ICAgIAp9OwoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpjbGFzcyBfYnpfVmVjRXhwckNvbnN0YW50IHsKcHVi
bGljOgogICAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBlOwoKICAgIF9iel9WZWNFeHByQ29u
c3RhbnQoUF9udW10eXBlIHZhbHVlKQogICAgICAgIDogdmFsdWVfKCB2YWx1ZSAgKQogICAgeyAK
ICAgIH0KCgogICAgX2J6X1ZlY0V4cHJDb25zdGFudChjb25zdCBfYnpfVmVjRXhwckNvbnN0YW50
PFBfbnVtdHlwZT4mIHgpCiAgICAgICAgOiB2YWx1ZV8oeC52YWx1ZV8pCiAgICB7IH0KCgogICAg
VF9udW10eXBlIG9wZXJhdG9yW10oaW50KSBjb25zdAogICAgeyByZXR1cm4gdmFsdWVfOyB9Cgog
ICAgVF9udW10eXBlIG9wZXJhdG9yKCkoaW50KSBjb25zdAogICAgeyByZXR1cm4gdmFsdWVfOyB9
CgogICAgaW50IGxlbmd0aChpbnQgcmVjb21tZW5kZWRMZW5ndGgpIGNvbnN0CiAgICB7IHJldHVy
biByZWNvbW1lbmRlZExlbmd0aDsgfQoKICAgIGVudW0geyBfYnpfc3RhdGljTGVuZ3RoQ291bnQg
PSAwLAogICAgICAgICAgIF9iel9keW5hbWljTGVuZ3RoQ291bnQgPSAwLAogICAgICAgICAgIF9i
el9zdGF0aWNMZW5ndGggPSAwCiAgICB9OwoKICAgIGludCBfYnpfc3VnZ2VzdExlbmd0aCgpIGNv
bnN0CiAgICB7IHJldHVybiAwOyB9CgogICAgYm9vbCAgX2J6X2hhc0Zhc3RBY2Nlc3MoKSBjb25z
dAogICAgeyByZXR1cm4gMTsgfQoKICAgIFRfbnVtdHlwZSBfYnpfZmFzdEFjY2VzcyhpbnQpIGNv
bnN0CiAgICB7IHJldHVybiB2YWx1ZV87IH0KCnByaXZhdGU6CgogICAgX2J6X1ZlY0V4cHJDb25z
dGFudCgpIHsgfQoKICAgIFRfbnVtdHlwZSB2YWx1ZV87Cn07CgogCgp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8
UF9leHByPiwgCiAgICBfYnpfbmVnYXRlPCB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+ID4g
PgpvcGVyYXRvci0oX2J6X1ZlY0V4cHI8UF9leHByPiBhKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHI+LAogICAgICAgIF9iel9uZWdhdGU8IHR5cGVu
YW1lICBQX2V4cHI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoYSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZT4s
CiAgICBfYnpfbmVnYXRlPFBfbnVtdHlwZT4gPiA+Cm9wZXJhdG9yLShjb25zdCBWZWN0b3I8UF9u
dW10eXBlPiYgYSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZT4sCiAgICAgICAgX2J6X25lZ2F0ZTxQX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihhLmJlZ2luKCkpKTsKfQoKaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwgX2J6X25lZ2F0ZTxSYW5n
ZTo6VF9udW10eXBlPiA+ID4Kb3BlcmF0b3ItKFJhbmdlIHIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPFJhbmdlLCBfYnpfbmVnYXRlPFJhbmdlOjpUX251bXR5cGU+ID4gVF9leHBy
OwogICAgCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIocikpOwp9CgoKIAoK
fSAKCgoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNi
b3BzLmNjIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCiAKCgojZGVmaW5lIEJaX1ZF
Q0JPUFNfQ0MKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAoKCgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yKyhjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwg
CiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcisoY29uc3QgVmVjdG9y
PFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3IrKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIFJhbmdlLAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cisoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
UmFuZ2UsIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xl
bmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
Kyhjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfQWRkPFBf
bnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcisoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBk
MSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAg
IF9iel9BZGQ8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBmbG9h
dCA+ID4gPgpvcGVyYXRvcisoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGZs
b2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfQWRk
PFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBkb3VibGUg
PiA+ID4Kb3BlcmF0b3IrKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3Vi
bGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfQWRk
PFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwg
bG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3IrKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEs
IAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LCAKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgY29tcGxleDxUMj4g
ID4gPiA+Cm9wZXJhdG9yKyhjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29t
cGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAK
ICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yKyhfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAg
ICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJh
dG9yKyhfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKyhfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcisoX2J6X1ZlY0V4cHI8UF9leHByMT4g
ZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IrKF9iel9WZWNFeHByPFBf
ZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAg
X2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+LAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCBpbnQgPiA+ID4Kb3BlcmF0b3IrKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
ZmxvYXQ+LAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9h
dCA+ID4gPgpvcGVyYXRvcisoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4o
ZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGRvdWJsZT4sCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGRvdWJsZSA+ID4gPgpvcGVyYXRvcisoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBk
b3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIx
PiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9BZGQ8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yKyhfYnpfVmVjRXhwcjxQ
X2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPiwgCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsK
fQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yKyhfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDI+ID4gLCAKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
Y29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkp
Owp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0FkZDxQ
X251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKyhjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcisoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYg
ZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
cjxQX2V4cHIyPiwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3IrKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGludCA+ID4gPgpv
cGVyYXRvcisoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgaW50PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10
eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yKyhjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAg
ICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6
X0FkZDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+LAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cisoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0FkZDxQX251bXR5cGUx
LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRv
cisoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBmbG9hdCBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9BZGQ8UF9udW10
eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBkb3VibGUgPiA+
ID4Kb3BlcmF0b3IrKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZG91
YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9i
el9BZGQ8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9BZGQ8UF9u
dW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3IrKGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGxvbmcg
ZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkp
Owp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9BZGQ8UF9u
dW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yKyhjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4g
KGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sCiAgICAgIF9iel9BZGQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKyhSYW5nZSBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAg
ICAgIF9iel9BZGQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0FkZDxpbnQsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IrKFJhbmdlIGQxLCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0FkZDxpbnQsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPGludCwgUF9udW10eXBl
MiA+ID4gPgpvcGVyYXRvcisoUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9BZGQ8aW50LCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9BZGQ8aW50LCBpbnQgPiA+ID4Kb3Bl
cmF0b3IrKFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0FkZDxpbnQsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0FkZDxpbnQsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3IrKFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAg
X2J6X0FkZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PiwKICAgICAgX2J6X0FkZDxpbnQsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yKyhSYW5nZSBk
MSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9BZGQ8aW50LCBmbG9h
dD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+LAogICAgICBfYnpfQWRkPGludCwgZG91YmxlID4gPiA+Cm9wZXJhdG9yKyhSYW5nZSBk
MSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0FkZDxpbnQsIGRv
dWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfQWRkPGludCwgbG9uZyBkb3VibGUgPiA+ID4Kb3Bl
cmF0b3IrKFJhbmdlIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+
LCAKICAgICAgX2J6X0FkZDxpbnQsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgVDI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxj
b21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0FkZDxpbnQsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVy
YXRvcisoUmFuZ2UgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
ICwgCiAgICAgIF9iel9BZGQ8aW50LCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBl
MSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcisoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUx
LCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEs
IE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfQWRkPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfQWRkPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3IrKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0Fk
ZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKyhjb25zdCBUaW55VmVjdG9y
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAg
ICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9s
ZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0FkZDxQ
X251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3IrKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAg
IFJhbmdlLCAKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251
bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9BZGQ8UF9udW10
eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcisoY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3Bl
cmF0b3IrKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4s
IAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5f
bGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3IrKGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBmbG9hdCBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAg
ICAgX2J6X0FkZDxQX251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9s
ZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yKyhj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgZG91Ymxl
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAK
ICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4g
PiA+Cm9wZXJhdG9yKyhjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQx
LCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgbG9uZyBk
b3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7
Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFQy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8
VDI+ID4gLAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVy
YXRvcisoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgY29tcGxleDxUMj4g
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0K
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9BZGQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
KyhpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDxpbnQsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQWRk
PGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcisoaW50IGQx
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwgCiAgICAgIF9iel9BZGQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X0FkZDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGludCBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9BZGQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
LCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sCiAgICAgIF9iel9BZGQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
KyhpbnQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAg
ICAgX2J6X0FkZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPGZsb2F0LCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yKyhmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5
cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9B
ZGQ8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5i
ZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0FkZDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZSA+ID4gPgpvcGVyYXRvcisoZmxvYXQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4
cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
ZmxvYXQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQWRkPGZsb2F0
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9BZGQ8ZmxvYXQsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGZsb2F0IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAog
ICAgICBfYnpfQWRkPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfQWRk
PGZsb2F0LCBpbnQgPiA+ID4Kb3BlcmF0b3IrKGZsb2F0IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAg
ICAgIFJhbmdlLCAKICAgICAgX2J6X0FkZDxmbG9hdCwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9s
ZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwKICAgICAgX2J6X0FkZDxmbG9hdCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcisoZmxv
YXQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4s
IAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAg
ICBfYnpfQWRkPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAg
ICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0FkZDxkb3VibGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAg
ICBfYnpfQWRkPGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAog
ICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9BZGQ8ZG91YmxlLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yKyhkb3VibGUgZDEsIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X0FkZDxkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpf
QWRkPGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcisoZG91YmxlIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDxkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAg
ICBSYW5nZSwKICAgICAgX2J6X0FkZDxkb3VibGUsIGludCA+ID4gPgpvcGVyYXRvcisoZG91Ymxl
IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9BZGQ8ZG91Ymxl
LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihf
YnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9BZGQ8ZG91YmxlLCBQ
X251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKyhkb3VibGUgZDEsIAogICAgICBjb25zdCBUaW55VmVj
dG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0FkZDxkb3VibGUsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yKyhsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUy
PiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9BZGQ8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihk
MSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0FkZDxsb25nIGRv
dWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcisobG9uZyBk
b3VibGUgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQWRkPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAg
ZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9BZGQ8bG9uZyBkb3VibGUs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGxvbmcgZG91YmxlIGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQWRkPGxvbmcgZG91YmxlLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfQWRkPGxvbmcgZG91YmxlLCBpbnQgPiA+
ID4Kb3BlcmF0b3IrKGxvbmcgZG91YmxlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAg
IFJhbmdlLCAKICAgICAgX2J6X0FkZDxsb25nIGRvdWJsZSwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25n
IGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
LCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0FkZDxsb25nIGRvdWJsZSwgUF9udW10eXBl
MiA+ID4gPgpvcGVyYXRvcisobG9uZyBkb3VibGUgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9y
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQWRkPGxvbmcgZG91YmxlLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+
ICwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0FkZDxjb21w
bGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGNvbXBsZXg8VDE+IGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQWRkPGNvbXBsZXg8VDE+ICwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9BZGQ8Y29tcGxleDxUMT4gLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yKyhjb21wbGV4PFQxPiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0FkZDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7
Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAs
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPGNv
bXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcisoY29tcGxleDxUMT4gZDEsIAog
ICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDxjb21wbGV4PFQxPiAs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJh
bmdlLAogICAgICBfYnpfQWRkPGNvbXBsZXg8VDE+ICwgaW50ID4gPiA+Cm9wZXJhdG9yKyhjb21w
bGV4PFQxPiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJhbmdlLCAKICAgICAg
X2J6X0FkZDxjb21wbGV4PFQxPiAsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEp
LCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBl
MiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0FkZDxjb21wbGV4PFQxPiAsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQWRkPGNvbXBsZXg8
VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgoKIAoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAg
ICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1
YnRyYWN0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvci0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwg
aW50ID4gPiA+Cm9wZXJhdG9yLShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
UmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBp
bnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFz
cyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUx
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9i
el9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBpbnQgPiA+ID4K
b3BlcmF0b3ItKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10
eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9w
ZXJhdG9yLShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZmxvYXQgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9TdWJ0cmFjdDxQX251
bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBkb3VibGUg
PiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3Vi
bGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfU3Vi
dHJhY3Q8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X1N1YnRyYWN0PFBf
bnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yLShjb25zdCBWZWN0b3I8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBsb25nIGRv
dWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsK
fQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9TdWJ0cmFjdDxQX251
bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3RvcjxQX251bXR5
cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgY29tcGxl
eDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIp
KSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1N1YnRyYWN0PCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShfYnpfVmVj
RXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvci0oX2J6X1ZlY0V4cHI8
UF9leHByMT4gZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
cjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvci0oX2J6X1ZlY0V4cHI8UF9leHBy
MT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1N1YnRyYWN0PCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShf
YnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
cjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwgCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
UF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvci0oX2J6X1ZlY0V4cHI8
UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X1N1YnRyYWN0PCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9hdCA+ID4gPgpvcGVyYXRvci0oX2J6X1Zl
Y0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAg
X2J6X1N1YnRyYWN0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBkb3VibGUgPiA+ID4K
b3BlcmF0b3ItKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3ItKF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LCAKICAgICAgX2J6X1N1YnRyYWN0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7
Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yLShfYnpfVmVjRXhw
cjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X1N1YnRyYWN0PCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxU
Mj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0oY29u
c3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAg
IF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251
bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLShjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X1N1YnRyYWN0
PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1N1
YnRyYWN0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUy
PiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAg
IF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFu
Z2UsCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3ItKGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAg
ICAgUmFuZ2UsIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwg
aW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpf
U3VidHJhY3Q8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIGludCA+ID4g
PgpvcGVyYXRvci0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1N1YnRy
YWN0PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4o
ZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwg
ZmxvYXQgPiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAog
ICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X1N1
YnRyYWN0PFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvci0oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIGRvdWJs
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgbG9uZyBkb3Vi
bGUgPiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEs
IGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvci0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUx
PiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIGNvbXBs
ZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQy
KSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4s
CiAgICAgIF9iel9TdWJ0cmFjdDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKFJhbmdl
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAK
ICAgICAgX2J6X1N1YnRyYWN0PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxp
bnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3ItKFJhbmdlIGQx
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X1N1YnRy
YWN0PGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9T
dWJ0cmFjdDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKFJhbmdlIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAg
ICBfYnpfU3VidHJhY3Q8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9TdWJ0cmFjdDxpbnQsIGludCA+ID4gPgpvcGVyYXRvci0oUmFuZ2UgZDEsIAogICAgICBS
YW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2Us
IAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3It
KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X1N1YnRyYWN0PGlu
dCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAog
ICAgICBfYnpfU3VidHJhY3Q8aW50LCBmbG9hdCA+ID4gPgpvcGVyYXRvci0oUmFuZ2UgZDEsIAog
ICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBmbG9h
dD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+LAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBkb3VibGUgPiA+ID4Kb3BlcmF0b3ItKFJh
bmdlIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfU3VidHJh
Y3Q8aW50LCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoK
IAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X1N1YnRyYWN0PGludCwgbG9uZyBk
b3VibGUgPiA+ID4Kb3BlcmF0b3ItKFJhbmdlIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X1N1YnRyYWN0PGludCwgbG9uZyBkb3VibGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxj
bGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfU3VidHJhY3Q8aW50
LCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3ItKFJhbmdlIGQxLCAKICAgICAgY29tcGxleDxU
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBjb21w
bGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0K
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yLShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1N1YnRyYWN0PFBf
bnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3ItKGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU3VidHJhY3Q8
UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0oY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQg
Tl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X1N1
YnRyYWN0PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvci0oY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgaW50PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3Ro
MSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBf
YnpfU3VidHJhY3Q8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0oY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlW
ZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfU3Vi
dHJhY3Q8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfU3VidHJh
Y3Q8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yLShjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlw
ZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9TdWJ0cmFj
dDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvci0oY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfU3VidHJhY3Q8UF9u
dW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBf
YnpfU3VidHJhY3Q8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yLShjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6
X1N1YnRyYWN0PFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5f
bGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxs
b25nIGRvdWJsZT4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+
ID4gPgpvcGVyYXRvci0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBk
MSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwg
bG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4o
ZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNs
YXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNv
bXBsZXg8VDI+ID4gLAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgY29tcGxleDxUMj4g
ID4gPiA+Cm9wZXJhdG9yLShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4m
IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlw
ZTEsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8
VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1
YnRyYWN0PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5i
ZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGUgPiA+ID4Kb3BlcmF0b3ItKGludCBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU3VidHJhY3Q8aW50
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1N1YnRyYWN0PGludCwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvci0oaW50IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAg
X2J6X1N1YnRyYWN0PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVu
Z3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShpbnQg
ZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6
X1N1YnRyYWN0PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxmbG9hdCwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvci0oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9u
dW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfU3VidHJhY3Q8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAog
ICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1N1YnRyYWN0PGZsb2F0LCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLShmbG9hdCBkMSwgCiAgICAgIF9i
el9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9TdWJ0cmFjdDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfU3VidHJhY3Q8ZmxvYXQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKGZsb2F0IGQxLCAK
ICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU3VidHJhY3Q8ZmxvYXQsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
VmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TdWJ0cmFjdDxmbG9hdCwgaW50ID4gPiA+Cm9wZXJh
dG9yLShmbG9hdCBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9T
dWJ0cmFjdDxmbG9hdCwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1N1
YnRyYWN0PGZsb2F0LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShmbG9hdCBkMSwgCiAgICAg
IGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9TdWJ0cmFj
dDxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3ItKGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfU3VidHJhY3Q8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1N1YnRyYWN0PGRvdWJsZSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvci0oZG91YmxlIGQxLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwg
CiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LAogICAgICBfYnpfU3VidHJhY3Q8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShk
b3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU3VidHJhY3Q8ZG91
YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUs
IGludCA+ID4gPgpvcGVyYXRvci0oZG91YmxlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBS
YW5nZSwgCiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBO
X2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwKICAgICAgX2J6X1N1YnRyYWN0PGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVy
YXRvci0oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xl
bmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwgCiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAog
ICAgICBfYnpfU3VidHJhY3Q8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3It
KGxvbmcgZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+
LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1YnRyYWN0
PGxvbmcgZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxsb25nIGRv
dWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvci0obG9uZyBk
b3VibGUgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU3VidHJhY3Q8bG9uZyBkb3VibGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAg
ICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1N1YnRyYWN0PGxv
bmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShsb25nIGRvdWJsZSBkMSwgCiAg
ICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1YnRyYWN0PGxvbmcgZG91Ymxl
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVn
aW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfU3VidHJhY3Q8
bG9uZyBkb3VibGUsIGludCA+ID4gPgpvcGVyYXRvci0obG9uZyBkb3VibGUgZDEsIAogICAgICBS
YW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfU3VidHJhY3Q8bG9uZyBkb3Vi
bGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9T
dWJ0cmFjdDxsb25nIGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0obG9uZyBkb3Vi
bGUgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4s
IAogICAgICBfYnpfU3VidHJhY3Q8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgogCnRlbXBsYXRlPGNs
YXNzIFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU3VidHJhY3Q8Y29tcGxleDxUMT4gLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yLShjb21wbGV4PFQxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X1N1YnRyYWN0PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBs
YXRlPGNsYXNzIFQxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3ItKGNvbXBsZXg8VDE+IGQxLCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4sIAogICAgICBfYnpfU3VidHJhY3Q8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9
CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAK
ICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1N1YnRyYWN0
PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0oY29tcGxleDxUMT4gZDEs
IAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1YnRyYWN0PGNvbXBs
ZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAK
ICAgICAgUmFuZ2UsCiAgICAgIF9iel9TdWJ0cmFjdDxjb21wbGV4PFQxPiAsIGludCA+ID4gPgpv
cGVyYXRvci0oY29tcGxleDxUMT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBS
YW5nZSwgCiAgICAgIF9iel9TdWJ0cmFjdDxjb21wbGV4PFQxPiAsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBU
MSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1N1YnRy
YWN0PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0oY29tcGxleDxUMT4g
ZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQx
PiA+ICwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwg
CiAgICAgIF9iel9TdWJ0cmFjdDxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCiAKCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBQ
X251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAg
X2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+
ID4Kb3BlcmF0b3IqKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X011bHRpcGx5PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5
cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBl
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9NdWx0aXBseTxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwKICAg
ICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciooY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAg
ICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAog
ICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcioo
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTXVs
dGlwbHk8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0b3I8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9NdWx0aXBs
eTxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvciooY29uc3QgVmVjdG9yPFBfbnVtdHlw
ZTE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9h
dD4sIAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpf
TXVsdGlwbHk8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0b3I8
UF9udW10eXBlMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxkb3VibGU+LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpv
cGVyYXRvciooY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcgZG91Ymxl
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpf
TXVsdGlwbHk8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+
ID4gLAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9w
ZXJhdG9yKihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29tcGxleDxUMj4g
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6
X011bHRpcGx5PFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4s
CiAgICAgIF9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvciooX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAog
ICAgICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQ
X2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTXVsdGlwbHk8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUg
PiA+ID4Kb3BlcmF0b3IqKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X011bHRpcGx5
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlw
ZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011bHRp
cGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yKihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9l
eHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBSYW5nZSwKICAg
ICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4K
b3BlcmF0b3IqKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFJhbmdl
LCAKICAgICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMiwg
aW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sCiAgICAgIF9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAg
ICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTXVsdGlwbHk8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PiwKICAgICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQg
PiA+ID4Kb3BlcmF0b3IqKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sCiAgICAgIF9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
ZmxvYXQgPiA+ID4Kb3BlcmF0b3IqKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZmxv
YXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X011bHRpcGx5PCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yKihfYnpfVmVjRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAg
ICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBkb3VibGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpf
TXVsdGlwbHk8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+
Cm9wZXJhdG9yKihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9NdWx0aXBseTwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
LCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAg
ICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+
ICA+ID4gPgpvcGVyYXRvciooX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb21wbGV4
PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9N
dWx0aXBseTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IqKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZSA+ID4gPgpvcGVyYXRvciooY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEs
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQ
X2V4cHIyPiwgCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAg
IGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10
eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBk
MSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X011bHRpcGx5
PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9N
dWx0aXBseTxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9N
dWx0aXBseTxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3IqKGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PiwgCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAg
ICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yKihjb25zdCBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEs
IGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBkb3VibGUgPiA+
ID4Kb3BlcmF0b3IqKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZG91
YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9i
el9NdWx0aXBseTxQX251bXR5cGUxLCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X011
bHRpcGx5PFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X011bHRpcGx5PFBf
bnVtdHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBU
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAg
ICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3Iq
KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9i
el9NdWx0aXBseTxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTXVsdGlwbHk8aW50LCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LAogICAgICBfYnpfTXVsdGlwbHk8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlID4gPiA+Cm9wZXJhdG9yKihSYW5nZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhw
cjxQX2V4cHIyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTXVsdGlwbHk8aW50LCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yKihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X011bHRpcGx5PGludCwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxSYW5nZSwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTXVsdGlwbHk8aW50LCBpbnQgPiA+ID4K
b3BlcmF0b3IqKFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X011bHRpcGx5PGludCwgaW50
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTXVsdGlwbHk8aW50
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlW
ZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X011bHRpcGx5PGludCwgZmxvYXQg
PiA+ID4Kb3BlcmF0b3IqKFJhbmdlIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAK
ICAgICAgX2J6X011bHRpcGx5PGludCwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+KGQyKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X011bHRpcGx5PGlu
dCwgZG91YmxlID4gPiA+Cm9wZXJhdG9yKihSYW5nZSBkMSwgCiAgICAgIGRvdWJsZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X011bHRpcGx5PGludCwgZG91YmxlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAg
ICAgIF9iel9NdWx0aXBseTxpbnQsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yKihSYW5nZSBk
MSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9N
dWx0aXBseTxpbnQsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+ICwKICAgICAgX2J6X011bHRpcGx5PGludCwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9y
KihSYW5nZSBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAK
ICAgICAgX2J6X011bHRpcGx5PGludCwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTXVsdGlwbHk8UF9u
dW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAog
ICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5i
ZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwg
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yKihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9NdWx0aXBseTxQX251
bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3IqKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAog
ICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTXVsdGlwbHk8
UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBpbnQgPiA+ID4K
b3BlcmF0b3IqKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAog
ICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X011
bHRpcGx5PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xl
bmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3IqKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PiwKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVy
YXRvciooY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZmxvYXQ+LAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3Bl
cmF0b3IqKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGRvdWJs
ZSA+ID4gPgpvcGVyYXRvciooY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+
JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBkb3VibGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfTXVsdGlw
bHk8UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3IqKGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAg
ICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X011bHRp
cGx5PFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvciooY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwg
CiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwK
ICAgICAgX2J6X011bHRpcGx5PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooaW50IGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTXVsdGlw
bHk8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yKihpbnQg
ZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X011bHRpcGx5PGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAg
ICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IqKGludCBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVj
RXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X011bHRpcGx5PGludCwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvciooaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAog
ICAgICBfYnpfTXVsdGlwbHk8ZmxvYXQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IqKGZsb2F0
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X011bHRpcGx5PGZsb2F0LCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAg
IF9iel9NdWx0aXBseTxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpv
cGVyYXRvciooZmxvYXQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTXVsdGlwbHk8ZmxvYXQsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011bHRpcGx5PGZsb2F0LCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yKihmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAg
X2J6X011bHRpcGx5PGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTXVs
dGlwbHk8ZmxvYXQsIGludCA+ID4gPgpvcGVyYXRvciooZmxvYXQgZDEsIAogICAgICBSYW5nZSBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTXVsdGlwbHk8ZmxvYXQsIGludD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9NdWx0aXBseTxmbG9hdCwgUF9udW10eXBlMiA+ID4g
PgpvcGVyYXRvciooZmxvYXQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sIAogICAgICBfYnpfTXVsdGlwbHk8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfTXVsdGlwbHk8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihkb3VibGUg
ZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X011bHRpcGx5PGRvdWJsZSwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAg
ICAgIF9iel9NdWx0aXBseTxkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+
ID4Kb3BlcmF0b3IqKGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTXVsdGlwbHk8ZG91YmxlLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011bHRpcGx5PGRvdWJsZSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X011bHRpcGx5PGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdl
LAogICAgICBfYnpfTXVsdGlwbHk8ZG91YmxlLCBpbnQgPiA+ID4Kb3BlcmF0b3IqKGRvdWJsZSBk
MSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTXVsdGlwbHk8ZG91
YmxlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9NdWx0aXBseTxk
b3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IqKGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTXVsdGlwbHk8ZG91
YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011bHRpcGx5PGxvbmcgZG91Ymxl
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LAogICAgICBfYnpfTXVsdGlwbHk8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251
bXR5cGUgPiA+ID4Kb3BlcmF0b3IqKGxvbmcgZG91YmxlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X011bHRpcGx5PGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJD
b25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9NdWx0aXBseTxsb25nIGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpv
cGVyYXRvcioobG9uZyBkb3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAg
ICAgIF9iel9NdWx0aXBseTxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBSYW5nZSwKICAgICAgX2J6X011bHRpcGx5PGxvbmcgZG91YmxlLCBpbnQgPiA+ID4Kb3BlcmF0
b3IqKGxvbmcgZG91YmxlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFJhbmdlLCAK
ICAgICAgX2J6X011bHRpcGx5PGxvbmcgZG91YmxlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGlu
dCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTXVsdGlwbHk8bG9uZyBkb3VibGUsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3IqKGxvbmcgZG91YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X011bHRpcGx5PGxvbmcgZG91
YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4
PFQxPiA+ICwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011
bHRpcGx5PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooY29tcGxleDxU
MT4gZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxjb21wbGV4
PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21w
bGV4PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTXVsdGlw
bHk8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJh
dG9yKihjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+
ICwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X011bHRpcGx5PGNvbXBs
ZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xh
c3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9u
dW10eXBlMj4sCiAgICAgIF9iel9NdWx0aXBseTxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IqKGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwgCiAgICAgIF9iel9NdWx0aXBseTxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBUMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTXVsdGlw
bHk8Y29tcGxleDxUMT4gLCBpbnQgPiA+ID4Kb3BlcmF0b3IqKGNvbXBsZXg8VDE+IGQxLCAKICAg
ICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTXVsdGlwbHk8Y29t
cGxleDxUMT4gLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQy
KSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xl
bmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sCiAgICAgIF9iel9NdWx0aXBseTxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3IqKGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTXVsdGlwbHk8Y29tcGxleDxU
MT4gLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCgogCgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0
IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0Rpdmlk
ZTxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3I8UF9udW10eXBl
MT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
cjxQX2V4cHIyPiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4g
PgpvcGVyYXRvci8oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAog
ICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgUmFuZ2UsCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJh
dG9yLyhjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBSYW5nZSwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50
IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBO
X2xlbmd0aDI+LAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3IvKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAg
IF9iel9EaXZpZGU8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3I8
UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRGl2
aWRlPFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3I8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpf
RGl2aWRlPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvci8oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRv
ci8oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRGl2aWRl
PFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFz
cyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAg
ICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3IvKGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfRGl2aWRlPFBf
bnVtdHlwZTEsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNv
bXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9E
aXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3IvKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVt
dHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0Rpdmlk
ZTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKF9i
el9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yLyhfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9EaXZpZGU8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0RpdmlkZTwgdHlw
ZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oX2J6
X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4sIAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvci8oX2J6X1ZlY0V4cHI8UF9leHBy
MT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9i
el9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yLyhfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAg
ICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIx
PiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0RpdmlkZTwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yLyhfYnpf
VmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlw
ZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PiwKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBk
b3VibGUgPiA+ID4Kb3BlcmF0b3IvKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9u
ZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6
X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+
ID4gLAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21w
bGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3IvKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAg
Y29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAg
ICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiA+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4
cHIyPiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4g
PgpvcGVyYXRvci8oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgaW50
ID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAg
IFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUx
LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBj
bGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfRGl2aWRlPFBfbnVt
dHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0IFZlY3RvclBpY2s8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBl
MSwgaW50ID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAg
ICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRGl2aWRlPFBfbnVt
dHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+
JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBf
YnpfRGl2aWRlPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvci8oY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBkb3Vi
bGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBsb25nIGRvdWJs
ZSA+ID4gPgpvcGVyYXRvci8oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBjb21w
bGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxj
b21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgY29tcGxleDxUMj4g
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0K
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAg
X2J6X0RpdmlkZTxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKFJhbmdlIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X0RpdmlkZTxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfRGl2aWRlPGludCwgdHlwZW5hbWUg
IFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvci8oUmFuZ2UgZDEsIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfRGl2aWRlPGludCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZpZGU8aW50LCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yLyhSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAg
ICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0RpdmlkZTxpbnQs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBSYW5nZSwKICAgICAgX2J6X0RpdmlkZTxpbnQsIGlu
dCA+ID4gPgpvcGVyYXRvci8oUmFuZ2UgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfRGl2aWRlPGlu
dCwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xl
bmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfRGl2aWRl
PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oUmFuZ2UgZDEsIAogICAgICBjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sIAogICAgICBfYnpfRGl2aWRlPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRGl2aWRlPGludCwgZmxvYXQg
PiA+ID4Kb3BlcmF0b3IvKFJhbmdlIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAK
ICAgICAgX2J6X0RpdmlkZTxpbnQsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0
PihkMikpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9EaXZpZGU8aW50LCBk
b3VibGUgPiA+ID4Kb3BlcmF0b3IvKFJhbmdlIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBfYnpfRGl2aWRlPGludCwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9i
el9EaXZpZGU8aW50LCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvci8oUmFuZ2UgZDEsIAogICAg
ICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRGl2aWRlPGlu
dCwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkp
Owp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAg
ICBfYnpfRGl2aWRlPGludCwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yLyhSYW5nZSBkMSwg
CiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0Rp
dmlkZTxpbnQsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0
aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9EaXZpZGU8
UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9leHByMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9E
aXZpZGU8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvci8oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRGl2
aWRlPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpf
RGl2aWRlPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvci8oY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEs
IGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6
X0RpdmlkZTxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9EaXZpZGU8
UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfRGl2aWRlPFBfbnVt
dHlwZTEsIGludCA+ID4gPgpvcGVyYXRvci8oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBO
X2xlbmd0aDE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgaW50PiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUx
LCBmbG9hdCA+ID4gPgpvcGVyYXRvci8oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xl
bmd0aDE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIGZsb2F0
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0RpdmlkZTxQX251
bXR5cGUxLCBkb3VibGUgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlw
ZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAg
IF9iel9EaXZpZGU8UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBsb25nIGRvdWJs
ZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3Vi
bGU+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9i
el9EaXZpZGU8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29tcGxleDxUMj4g
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+
ID4gLCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
PiwKICAgICAgX2J6X0RpdmlkZTxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGludCBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPGludCwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9EaXZpZGU8
aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLyhpbnQgZDEs
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LCAKICAgICAgX2J6X0RpdmlkZTxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfRGl2aWRlPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oaW50IGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0RpdmlkZTxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0RpdmlkZTxpbnQsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IvKGludCBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sIAogICAgICBfYnpfRGl2aWRlPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZp
ZGU8ZmxvYXQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGZsb2F0IGQxLCAKICAgICAgY29u
c3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X0RpdmlkZTxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfRGl2aWRlPGZsb2F0
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLyhmbG9hdCBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwgCiAgICAgIF9iel9EaXZpZGU8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVj
RXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwK
ICAgICAgX2J6X0RpdmlkZTxmbG9hdCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oZmxvYXQg
ZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9EaXZpZGU8ZmxvYXQsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihf
YnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAK
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9EaXZpZGU8ZmxvYXQsIGludCA+ID4gPgpvcGVy
YXRvci8oZmxvYXQgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpf
RGl2aWRlPGZsb2F0LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAg
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfRGl2
aWRlPGZsb2F0LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLyhmbG9hdCBkMSwgCiAgICAgIGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9EaXZpZGU8Zmxv
YXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRGl2aWRlPGRvdWJsZSwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvci8oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91
YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9EaXZp
ZGU8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQy
LmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0RpdmlkZTxkb3VibGUsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNF
eHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpf
RGl2aWRlPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91
YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9E
aXZpZGU8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLyhkb3VibGUgZDEsIAogICAg
ICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPGRvdWJsZSwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwg
CiAgICAgIFJhbmdlLAogICAgICBfYnpfRGl2aWRlPGRvdWJsZSwgaW50ID4gPiA+Cm9wZXJhdG9y
Lyhkb3VibGUgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0Rp
dmlkZTxkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0Rp
dmlkZTxkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGRvdWJsZSBkMSwgCiAgICAg
IGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfRGl2aWRl
PGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5i
ZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZpZGU8bG9uZyBkb3Vi
bGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGxvbmcgZG91YmxlIGQxLCAKICAgICAgY29u
c3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X0RpdmlkZTxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LAogICAgICBfYnpfRGl2aWRlPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlID4gPiA+Cm9wZXJhdG9yLyhsb25nIGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9E
aXZpZGU8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwKICAgICAgX2J6X0RpdmlkZTxsb25nIGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
ci8obG9uZyBkb3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9EaXZpZGU8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2Us
CiAgICAgIF9iel9EaXZpZGU8bG9uZyBkb3VibGUsIGludCA+ID4gPgpvcGVyYXRvci8obG9uZyBk
b3VibGUgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpf
RGl2aWRlPGxvbmcgZG91YmxlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0
aDI+LAogICAgICBfYnpfRGl2aWRlPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yLyhsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9EaXZpZGU8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgog
CnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRGl2aWRlPGNvbXBsZXg8VDE+
ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oY29tcGxleDxUMT4gZDEsIAogICAgICBjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9EaXZpZGU8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgoK
CiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0RpdmlkZTxjb21wbGV4PFQxPiAsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKGNvbXBsZXg8VDE+IGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfRGl2aWRlPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIp
KTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+
ICwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZp
ZGU8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLyhjb21wbGV4PFQxPiBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPGNvbXBs
ZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAK
ICAgICAgUmFuZ2UsCiAgICAgIF9iel9EaXZpZGU8Y29tcGxleDxUMT4gLCBpbnQgPiA+ID4Kb3Bl
cmF0b3IvKGNvbXBsZXg8VDE+IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgUmFu
Z2UsIAogICAgICBfYnpfRGl2aWRlPGNvbXBsZXg8VDE+ICwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21w
bGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfRGl2aWRlPGNv
bXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oY29tcGxleDxUMT4gZDEsIAog
ICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwg
CiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAg
IF9iel9EaXZpZGU8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4
PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgogCgoKCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IlKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBW
ZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X01vZDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X01vZDxQX251bXR5cGUx
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJShjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgUF9udW10eXBl
MiA+ID4gPgpvcGVyYXRvciUoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+
LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJh
dG9yJShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBSYW5nZSwgCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5f
bGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0
b3IlKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9y
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X01vZDxQX251bXR5cGUxLCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9Nb2Q8
UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yJShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgX2J6X01vZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlw
ZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTW9kPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJShfYnpf
VmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LAogICAgICBfYnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJShfYnpfVmVjRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwgCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LAogICAgICBfYnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yJShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X01vZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFu
Z2UsCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4g
PgpvcGVyYXRvciUoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBSYW5nZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFu
Z2UsIAogICAgICBfYnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMiwgaW50
IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4sCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3IlKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X01vZDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpf
TW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3IlKF9i
el9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sIAogICAgICBfYnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IlKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29u
c3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMj4sIAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X01v
ZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9y
JShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X01v
ZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9N
b2Q8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciUoY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X01vZDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9Nb2Q8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yJShjb25zdCBWZWN0b3JQaWNr
PFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAg
ICAgX2J6X01vZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAog
ICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IlKGNvbnN0
IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9N
b2Q8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yJShjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sIAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Nb2Q8aW50LCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yJShSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9Nb2Q8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X01v
ZDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IlKFJhbmdl
IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X01v
ZDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTW9k
PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciUoUmFuZ2UgZDEsIAogICAgICBjb25zdCBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9N
b2Q8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Nb2Q8aW50
LCBpbnQgPiA+ID4Kb3BlcmF0b3IlKFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X01vZDxp
bnQsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9s
ZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X01vZDxp
bnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IlKFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlu
eVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LCAKICAgICAgX2J6X01vZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
ciUoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IlKGNvbnN0IFRpbnlWZWN0b3I8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X01vZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xh
c3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X01vZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yJShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X01vZDxQ
X251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
IAogICAgICBSYW5nZSwKICAgICAgX2J6X01vZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0
b3IlKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBS
YW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X01vZDxQX251
bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVy
YXRvciUoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAog
ICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6
X01vZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3IlKGNvbnN0IFRpbnlWZWN0b3I8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEs
IGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LAogICAgICBfYnpfTW9kPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciUoaW50IGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Nb2Q8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X01vZDxpbnQsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IlKGludCBkMSwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfTW9kPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Nb2Q8aW50
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJShpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4s
IAogICAgICBfYnpfTW9kPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAog
ICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5f
bGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0
aDI+LAogICAgICBfYnpfTW9kPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciUoaW50IGQx
LCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9N
b2Q8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQogCgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0
d2lzZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9S
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0b3I8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlw
ZTEsIGludCA+ID4gPgpvcGVyYXRvcl4oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5
cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPFBf
bnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3JeKGNvbnN0IFZlY3RvcjxQX251bXR5
cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAK
ICAgICAgX2J6X0JpdHdpc2VYT1I8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUx
LCBpbnQgPiA+ID4Kb3BlcmF0b3JeKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfQml0
d2lzZVhPUjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZVhPUjwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcl4o
X2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZVhPUjwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yXihf
YnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3JeKF9iel9WZWNF
eHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZVhPUjwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3
aXNlWE9SPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3Je
KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLCAKICAgICAg
X2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9s
ZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwK
ICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3JeKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwK
ICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+
ID4gPgpvcGVyYXRvcl4oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lz
ZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdp
c2VYT1I8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUx
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8UF9u
dW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lz
ZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFu
Z2UsCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcl4o
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBSYW5nZSwgCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlw
ZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3JeKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAg
ICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUx
LCBpbnQgPiA+ID4Kb3BlcmF0b3JeKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAg
IF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPGludCwgUF9udW10eXBlMiA+ID4gPgpv
cGVyYXRvcl4oUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZVhPUjxpbnQsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQy
LmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfQml0d2lzZVhPUjxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3JeKFJhbmdlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yXihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlWE9SPGludCwgaW50ID4gPiA+Cm9w
ZXJhdG9yXihSYW5nZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8UmFuZ2UsIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9CaXR3aXNlWE9SPGludCwgaW50
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfQml0d2lzZVhPUjxp
bnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3JeKFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlu
eVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xh
c3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yXihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9S
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpf
Qml0d2lzZVhPUjxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+
Cm9wZXJhdG9yXihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEs
IE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8UF9udW10eXBl
MSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAg
UmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cl4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJh
bmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfQml0d2lzZVhP
UjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3JeKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBO
X2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8UF9udW10eXBlMSwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwg
aW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3Bl
cmF0b3JeKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4s
IAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VY
T1I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihpbnQgZDEsIAogICAgICBjb25zdCBW
ZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAK
ICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQx
KSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yXihpbnQgZDEsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X0JpdHdpc2VYT1I8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0Jp
dHdpc2VYT1I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihpbnQgZDEsIAogICAgICBj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZVhPUjxpbnQsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yXihpbnQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQogCgoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBf
YnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4g
PiA+Cm9wZXJhdG9yJihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9i
el9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
LCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihj
b25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAg
ICAgX2J6X0JpdHdpc2VBbmQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5i
ZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFu
Z2UsCiAgICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYo
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFu
Z2UsIAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQg
Tl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sCiAgICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3ImKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8UF9u
dW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3ImKGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEs
IAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9i
el9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAg
ICAgIF9iel9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9u
dW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3ImKF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
cjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHIxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImKF9i
el9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUy
LCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
PFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0
aDI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvciYoX2J6X1ZlY0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIF9iel9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yJihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8UF9udW10eXBlMSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlID4gPiA+Cm9wZXJhdG9yJihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yJihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlQW5k
PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYoY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9C
aXR3aXNlQW5kPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAg
ICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3Im
KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3ImKGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlw
ZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9C
aXR3aXNlQW5kPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYoUmFuZ2UgZDEsIAogICAg
ICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpf
Qml0d2lzZUFuZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZUFuZDxpbnQsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3ImKFJhbmdlIGQxLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8
aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdl
LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdp
c2VBbmQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihSYW5nZSBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAg
X2J6X0JpdHdpc2VBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9CaXR3aXNlQW5kPGludCwgaW50ID4gPiA+Cm9wZXJhdG9yJihSYW5nZSBkMSwgCiAgICAg
IFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBSYW5n
ZSwgCiAgICAgIF9iel9CaXR3aXNlQW5kPGludCwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBO
X2xlbmd0aDI+LAogICAgICBfYnpfQml0d2lzZUFuZDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3ImKFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xl
bmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdp
c2VBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpf
Qml0d2lzZUFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9y
PFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJihjb25zdCBUaW55VmVj
dG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9s
ZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5
cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVu
Z3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNl
QW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYoY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgUmFuZ2UsIAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgx
LCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9i
el9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImKGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAg
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0Jp
dHdpc2VBbmQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfQml0
d2lzZUFuZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3ImKGNvbnN0IFRpbnlWZWN0b3I8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfQml0d2lzZUFuZDxQ
X251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yJihpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
ID4gPiA+Cm9wZXJhdG9yJihpbnQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yJihpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpf
Qml0d2lzZUFuZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0
aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwK
ICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihpbnQg
ZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6
X0JpdHdpc2VBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQogCgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3J8KGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0Jp
dHdpc2VPcjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yfChjb25zdCBWZWN0b3I8
UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwg
UF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10
eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yfChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10
eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfQml0d2lzZU9yPFBf
bnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3J8KGNvbnN0IFZlY3RvcjxQX251bXR5
cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAK
ICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQy
LmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwg
aW50ID4gPiA+Cm9wZXJhdG9yfChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
aW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0JpdHdp
c2VPcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAg
ICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfChfYnpf
VmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yfChfYnpfVmVj
RXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfChfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcnwoX2J6X1ZlY0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfQml0d2lz
ZU9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAg
ICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9C
aXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3J8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfQml0
d2lzZU9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3J8
KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3J8KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yfChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+
JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEs
IAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNl
T3I8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yfChjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6
X0JpdHdpc2VPcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAog
ICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3J8
KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlw
ZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4s
CiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yfChjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEs
IGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9CaXR3
aXNlT3I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfChSYW5nZSBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3
aXNlT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxpbnQsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8KFJhbmdlIGQxLCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxpbnQsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAg
ICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZU9yPGlu
dCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdl
LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3
aXNlT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3
aXNlT3I8aW50LCBpbnQgPiA+ID4Kb3BlcmF0b3J8KFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAg
X2J6X0JpdHdpc2VPcjxpbnQsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwK
ICAgICAgX2J6X0JpdHdpc2VPcjxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3J8KFJhbmdl
IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxpbnQsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9CaXR3aXNlT3I8UF9u
dW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAog
ICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEs
IGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxQ
X251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9u
dW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yfChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdp
c2VPcjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCBpbnQg
PiA+ID4Kb3BlcmF0b3J8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYg
ZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAg
X2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBp
bnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBl
MSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUx
LCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCBpbnQg
PiA+ID4Kb3BlcmF0b3J8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYg
ZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpf
Qml0d2lzZU9yPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoaW50IGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxpbnQs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8KGludCBkMSwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAog
ICAgICBfYnpfQml0d2lzZU9yPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9i
el9CaXR3aXNlT3I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfChpbnQgZDEsIAogICAg
ICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZU9yPGludCwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfQml0d2lzZU9yPGludCwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvcnwoaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8aW50LCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQogCgoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj4oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAg
X2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+
ID4gPgpvcGVyYXRvcj4+KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAg
ICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+
Pihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAK
ICAgICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
UmFuZ2UsCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cj4+KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFJhbmdlLCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwg
aW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yPj4oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfU2hpZnRSaWdo
dDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cj4+KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUx
LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4+KF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAog
ICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj4+KF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4+KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdFJpZ2h0PCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3I+PihfYnpfVmVjRXhwcjxQ
X2V4cHIxPiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9TaGlmdFJpZ2h0
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9TaGlm
dFJpZ2h0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yPj4oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9y
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfU2hp
ZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9y
Pj4oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5
cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj4oY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVt
dHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgdHlwZW5hbWUg
IFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj4+KGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVt
dHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+Pihjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRS
aWdodDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcj4+KGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFu
Z2UsIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQg
Tl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yPj4oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9T
aGlmdFJpZ2h0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludCA+
ID4gPgpvcGVyYXRvcj4+KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
aW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9T
aGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
cj4+KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6
X1NoaWZ0UmlnaHQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJh
dG9yPj4oUmFuZ2UgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAog
ICAgICBfYnpfU2hpZnRSaWdodDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LAogICAgICBfYnpfU2hpZnRSaWdodDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+
PihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50LCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdl
LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdFJpZ2h0PGludCwgaW50ID4gPiA+Cm9wZXJh
dG9yPj4oUmFuZ2UgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfU2hpZnRSaWdodDxpbnQsIGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAg
ICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj4oUmFuZ2UgZDEsIAogICAgICBjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3I+Pihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpf
U2hpZnRSaWdodDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+
Cm9wZXJhdG9yPj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAg
ICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4+
KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBSYW5nZSwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJh
dG9yPj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfU2hpZnRS
aWdodDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5n
dGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3I+Pihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgaW50ID4gPiA+
Cm9wZXJhdG9yPj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwg
CiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hp
ZnRSaWdodDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PihpbnQgZDEsIAogICAgICBj
b25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj4oaW50IGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwg
CiAgICAgIF9iel9TaGlmdFJpZ2h0PGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNF
eHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAg
IF9iel9TaGlmdFJpZ2h0PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4+KGludCBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PGludCwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfU2hpZnRSaWdodDxpbnQs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PihpbnQgZDEsIAogICAgICBjb25zdCBUaW55VmVj
dG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50LCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQogCgoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlw
ZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4s
CiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+ID4gPgpvcGVyYXRvcjw8KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAK
ICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xh
c3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yPDwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwgCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAg
ICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJh
dG9yPDwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAg
ICAgUmFuZ2UsIAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTIs
IGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yPDwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I8
PChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBp
bnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoX2J6X1ZlY0V4cHI8UF9leHByMT4g
ZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAg
X2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAK
ICAgICAgX2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sCiAgICAgIF9iel9TaGlmdExlZnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAg
IGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdExlZnQ8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcjw8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
cjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoX2J6
X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4sIAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TaGlmdExlZnQ8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcjw8KF9iel9WZWNFeHBy
PFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3I8PChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAg
IGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAg
ICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcjw8KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4sIAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUyPiwKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yPDwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10
eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPDwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYg
ZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9TaGlmdExl
ZnQ8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6
X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAg
X2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I8PChjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8
aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoUmFuZ2UgZDEsIAogICAgICBjb25zdCBW
ZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0
PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8aW50LCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPDwoUmFuZ2UgZDEsIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0PGludCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8aW50LCBQ
X251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdExl
ZnQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdExl
ZnQ8aW50LCBpbnQgPiA+ID4Kb3BlcmF0b3I8PChSYW5nZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBSYW5nZSwgCiAgICAgIF9i
el9TaGlmdExlZnQ8aW50LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAg
ICAgIF9iel9TaGlmdExlZnQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoUmFuZ2Ug
ZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0PGludCwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251
bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAog
ICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEs
IGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEs
IE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8
UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvcjw8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYg
ZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hp
ZnRMZWZ0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIGlu
dCA+ID4gPgpvcGVyYXRvcjw8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAg
ICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUy
LCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10
eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwg
aW50ID4gPiA+Cm9wZXJhdG9yPDwoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0
aDE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgaW50PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAg
IF9iel9TaGlmdExlZnQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoaW50IGQxLCAK
ICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0TGVm
dDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PChpbnQg
ZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
VmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAog
ICAgICBfYnpfU2hpZnRMZWZ0PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw8KGludCBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8aW50LCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8aW50
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8aW50LCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQogCgoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUx
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4g
PiA+Cm9wZXJhdG9yPihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9i
el9HcmVhdGVyPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5
cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfR3JlYXRlcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihjb25zdCBW
ZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUy
PiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X0dyZWF0ZXI8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9y
PFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAgICBf
YnpfR3JlYXRlcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAg
IF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0
IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfR3JlYXRlcjxQ
X251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYg
ZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAg
ICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5
cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAg
ICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9HcmVhdGVyPFBf
bnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+
JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PiwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAg
IF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPihjb25z
dCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVt
dHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBUMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6
X0dyZWF0ZXI8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPihjb25zdCBW
ZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10
eXBlMSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0
ZXI8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0
b3I+KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXI8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj4oX2J6
X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXI8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yPihfYnpfVmVjRXhwcjxQ
X2V4cHIxPiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyPCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9HcmVhdGVy
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
PihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9HcmVhdGVyPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3I+KF9iel9WZWNFeHBy
PFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0dyZWF0ZXI8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yPihfYnpfVmVj
RXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBm
bG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9i
el9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBkb3VibGUgPiA+ID4Kb3Bl
cmF0b3I+KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0dyZWF0ZXI8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPihfYnpfVmVjRXhwcjxQX2V4cHIxPiBk
MSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PiwgCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBsb25n
IGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I+KF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMj4gPiAsIAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlw
ZSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQy
KSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dy
ZWF0ZXI8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVh
dGVyPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10
eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXI8
UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpf
R3JlYXRlcjxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAg
ICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
Pihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBl
MSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwK
ICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPihjb25zdCBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I+
KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfR3JlYXRlcjxQX251
bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBkb3Vi
bGUgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAg
ICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBf
YnpfR3JlYXRlcjxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj4oY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9HcmVhdGVy
PFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFz
cyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAs
CiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRv
cj4oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAg
X2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXI8aW50LCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyPGludCwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9HcmVhdGVyPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcj4oUmFuZ2UgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251
bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3I+KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBSYW5nZSwKICAgICAgX2J6X0dyZWF0ZXI8aW50LCBpbnQgPiA+ID4Kb3BlcmF0
b3I+KFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0ZXI8aW50LCBpbnQ+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9HcmVhdGVyPGludCwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvcj4oUmFuZ2UgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAog
ICAgICBfYnpfR3JlYXRlcjxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoK
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0dyZWF0ZXI8aW50LCBmbG9hdCA+ID4gPgpvcGVy
YXRvcj4oUmFuZ2UgZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpf
R3JlYXRlcjxpbnQsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsK
fQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9HcmVhdGVyPGludCwgZG91YmxlID4g
PiA+Cm9wZXJhdG9yPihSYW5nZSBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAK
ICAgICAgX2J6X0dyZWF0ZXI8aW50LCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91
YmxlPihkMikpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0dyZWF0
ZXI8aW50LCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj4oUmFuZ2UgZDEsIAogICAgICBsb25n
IGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQsIGxv
bmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoK
CiAKdGVtcGxhdGU8Y2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6
X0dyZWF0ZXI8aW50LCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I+KFJhbmdlIGQxLCAKICAg
ICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfR3JlYXRl
cjxpbnQsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEs
IGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgUF9udW10eXBl
MiA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+
JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
IAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlcjxQ
X251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX2V4cHIyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dy
ZWF0ZXI8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvcj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dy
ZWF0ZXI8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLAogICAgICBf
YnpfR3JlYXRlcjxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgaW50PiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVu
Z3RoMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAg
ICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihjb25z
dCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVGlu
eVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9H
cmVhdGVyPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0dyZWF0
ZXI8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPihjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBl
MSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0dyZWF0ZXI8
UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10
eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpf
R3JlYXRlcjxQX251bXR5cGUxLCBkb3VibGUgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfR3Jl
YXRlcjxQX251bXR5cGUxLCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0
aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpv
cGVyYXRvcj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAg
ICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBsb25nIGRv
dWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsK
fQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgVDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxU
Mj4gPiAsCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+ID4gPgpv
cGVyYXRvcj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAg
ICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGNvbXBs
ZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQy
KSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxpbnQsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3I+KGludCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LAogICAgICBfYnpfR3JlYXRlcjxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+
ID4Kb3BlcmF0b3I+KGludCBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3I+KGludCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyPGlu
dCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAg
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfR3Jl
YXRlcjxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+KGludCBkMSwgCiAgICAgIGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwgUF9udW10eXBlMiA+ID4gPgpvcGVy
YXRvcj4oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwg
UF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcj4oZmxvYXQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNr
PFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwg
CiAgICAgIF9iel9HcmVhdGVyPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFJhbmdlLAogICAgICBf
YnpfR3JlYXRlcjxmbG9hdCwgaW50ID4gPiA+Cm9wZXJhdG9yPihmbG9hdCBkMSwgCiAgICAgIFJh
bmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyPGZsb2F0LCBpbnQ+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvcj4oZmxvYXQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAg
ICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oZG91Ymxl
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAg
ICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4g
PgpvcGVyYXRvcj4oZG91YmxlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAg
ICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X0dyZWF0ZXI8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3Vi
bGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsCiAg
ICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgaW50ID4gPiA+Cm9wZXJhdG9yPihkb3VibGUgZDEsIAog
ICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0ZXI8ZG91YmxlLCBp
bnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9HcmVhdGVyPGRvdWJsZSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yPihsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwg
CiAgICAgIF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxs
b25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9i
el9HcmVhdGVyPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+
Cm9wZXJhdG9yPihsb25nIGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyPGxv
bmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25n
IGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAg
IF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihsb25n
IGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0
ZXI8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBpbnQgPiA+ID4Kb3BlcmF0b3I+KGxvbmcgZG91Ymxl
IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0
ZXI8bG9uZyBkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4s
CiAgICAgIF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
Pihsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKIAp0
ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXI8Y29tcGxleDxUMT4g
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihjb21wbGV4PFQxPiBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXI8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgoK
CiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXI8Y29tcGxleDxUMT4gLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPihjb21wbGV4PFQxPiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0dyZWF0ZXI8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBk
MikpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+
ID4gLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dy
ZWF0ZXI8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihjb21wbGV4PFQx
PiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAg
ICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlcjxj
b21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+
ICwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfR3JlYXRlcjxjb21wbGV4PFQxPiAsIGludCA+ID4g
PgpvcGVyYXRvcj4oY29tcGxleDxUMT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAg
ICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyPGNvbXBsZXg8VDE+ICwgaW50PiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFu
dDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNz
IFQxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAg
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfR3Jl
YXRlcjxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+KGNvbXBsZXg8VDE+
IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxU
MT4gPiAsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4s
IAogICAgICBfYnpfR3JlYXRlcjxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCiAKCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAog
ICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3Mg
UF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNz
PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8
KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8UF9udW10
eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlw
ZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYg
ZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwg
aW50ID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
UmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBf
bnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvcjwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAg
IGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTGVzczxQ
X251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcjwoY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9i
el9MZXNzPFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0b3I8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PiwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6
X0xlc3M8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0b3I8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwK
ICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8KGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0xlc3M8UF9udW10
eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFQyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpf
TGVzczxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBj
b21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjwoX2J6X1Zl
Y0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzczwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4sCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChfYnpfVmVjRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwgCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3I8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sIAogICAgICBfYnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
UmFuZ2UsCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQg
PiA+ID4Kb3BlcmF0b3I8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgUmFuZ2UgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFJhbmdlLCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGlu
dD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUy
LCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAg
Y29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAg
ICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVy
YXRvcjwoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBf
YnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0
b3I8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwK
ICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4g
PgpvcGVyYXRvcjwoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBkb3VibGUgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihk
MikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+
LCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91
YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxj
b21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcjwoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEs
IAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
ICwgCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4
PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxQX251bXR5
cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlw
ZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwg
UF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yPChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludCA+ID4gPgpv
cGVyYXRvcjwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludD4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVt
dHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBf
YnpfTGVzczxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3Bl
cmF0b3I8KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9MZXNzPFBfbnVt
dHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpv
cGVyYXRvcjwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBmbG9hdCBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9MZXNz
PFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGRv
dWJsZSA+ID4gPgpvcGVyYXRvcjwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAog
ICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAK
ICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9i
el9MZXNzPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0xlc3M8UF9udW10
eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFQyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAg
X2J6X0xlc3M8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPChjb25zdCBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfTGVzczxQ
X251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxj
b21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3I8KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3M8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xl
c3M8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChSYW5n
ZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9M
ZXNzPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9M
ZXNzPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjwoUmFuZ2UgZDEsIAogICAgICBjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9MZXNzPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTGVz
czxpbnQsIGludCA+ID4gPgpvcGVyYXRvcjwoUmFuZ2UgZDEsIAogICAgICBSYW5nZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpf
TGVzczxpbnQsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBp
bnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6
X0xlc3M8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChSYW5nZSBkMSwgCiAgICAgIGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9MZXNzPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVn
aW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfTGVzczxpbnQsIGZsb2F0
ID4gPiA+Cm9wZXJhdG9yPChSYW5nZSBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0Piwg
CiAgICAgIF9iel9MZXNzPGludCwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
KGQyKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0xlc3M8aW50LCBkb3Vi
bGUgPiA+ID4Kb3BlcmF0b3I8KFJhbmdlIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4sIAogICAgICBfYnpfTGVzczxpbnQsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+KGQyKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5n
ZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfTGVz
czxpbnQsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPChSYW5nZSBkMSwgCiAgICAgIGxvbmcg
ZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9MZXNzPGludCwgbG9uZyBk
b3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0
ZW1wbGF0ZTxjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfTGVz
czxpbnQsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcjwoUmFuZ2UgZDEsIAogICAgICBjb21w
bGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9MZXNzPGludCwgY29t
cGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9
CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9u
dW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTI+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yPChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChjb25zdCBUaW55VmVj
dG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9MZXNzPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgx
LCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yPChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X0xlc3M8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludCA+ID4g
PgpvcGVyYXRvcjwoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwg
CiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpf
TGVzczxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5n
dGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYg
ZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVu
Z3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTGVz
czxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQy
KSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBf
YnpfTGVzczxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvcjwoY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfTGVzczxQ
X251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0Pihk
MikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAg
IF9iel9MZXNzPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcjwoY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9M
ZXNzPFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3Ro
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJh
dG9yPChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAg
bG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBUMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwK
ICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPChj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29tcGxl
eDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDI+ID4gLCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgY29tcGxleDxUMj4gPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9MZXNzPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjwoaW50
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9MZXNzPGludCwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzPGlu
dCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjwoaW50IGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwg
CiAgICAgIF9iel9MZXNzPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9M
ZXNzPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjwoaW50IGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0xlc3M8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
LCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
cjwoaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAg
ICAgIF9iel9MZXNzPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzPGZsb2F0LCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9MZXNzPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzPGZsb2F0LCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChmbG9hdCBkMSwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNz
PGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAg
ICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzPGZsb2F0
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X0xlc3M8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0
PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9MZXNzPGZsb2F0LCBpbnQgPiA+ID4Kb3BlcmF0b3I8KGZsb2F0IGQxLCAKICAgICAgUmFu
Z2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xlc3M8ZmxvYXQsIGludD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzPGZsb2F0LCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yPChmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwgCiAgICAgIF9iel9MZXNzPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9h
dD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xl
c3M8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChkb3VibGUgZDEsIAogICAgICBj
b25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0xlc3M8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3M8ZG91
YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChkb3VibGUg
ZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUyPiwKICAgICAgX2J6X0xlc3M8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChk
b3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzczxkb3VibGUs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkp
Owp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGRvdWJsZT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0xlc3M8ZG91YmxlLCBpbnQgPiA+
ID4Kb3BlcmF0b3I8KGRvdWJsZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsIAog
ICAgICBfYnpfTGVzczxkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAg
ICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAg
ICAgX2J6X0xlc3M8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChkb3VibGUgZDEs
IAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAg
ICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6
X0xlc3M8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3M8bG9uZyBk
b3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGxvbmcgZG91YmxlIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3M8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwKICAgICAgX2J6X0xlc3M8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGUgPiA+ID4Kb3BlcmF0b3I8KGxvbmcgZG91YmxlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xl
c3M8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwK
ICAgICAgX2J6X0xlc3M8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGxv
bmcgZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVz
czxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBSYW5nZSwKICAgICAg
X2J6X0xlc3M8bG9uZyBkb3VibGUsIGludCA+ID4gPgpvcGVyYXRvcjwobG9uZyBkb3VibGUgZDEs
IAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTGVzczxsb25n
IGRvdWJsZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAg
X2J6X0xlc3M8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGxvbmcgZG91
YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LCAKICAgICAgX2J6X0xlc3M8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNz
IFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3I8KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAg
ICBfYnpfTGVzczxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8
VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBU
MSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LAogICAgICBfYnpfTGVzczxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGUgPiA+ID4Kb3BlcmF0b3I8KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpf
TGVzczxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xh
c3MgVDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxjb21wbGV4PFQxPiAsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3I8KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9MZXNzPGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRl
bXBsYXRlPGNsYXNzIFQxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9MZXNz
PGNvbXBsZXg8VDE+ICwgaW50ID4gPiA+Cm9wZXJhdG9yPChjb21wbGV4PFQxPiBkMSwgCiAgICAg
IFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xlc3M8Y29tcGxleDxU
MT4gLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7Cn0K
CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29t
cGxleDxUMT4gPiAsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sCiAgICAgIF9iel9MZXNzPGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVy
YXRvcjwoY29tcGxleDxUMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9MZXNzPGNvbXBsZXg8VDE+ICwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgoKIAoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JF
cXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5
cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFs
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0b3I8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBf
YnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPj0oY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAog
ICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5f
bGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvcj49KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25z
dCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVx
dWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8aW50PiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpv
cGVyYXRvcj49KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8
UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGZs
b2F0ID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAg
IGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpf
R3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfR3JlYXRlck9y
RXF1YWw8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBkb3VibGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3Vi
bGUgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
bG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUx
LCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNv
bXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGNvbXBs
ZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQy
KSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj49
KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVx
dWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9w
ZXJhdG9yPj0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4
cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRl
ck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3I+PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAg
ICAgX2J6X0dyZWF0ZXJPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAg
ICBSYW5nZSwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3I+PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAg
ICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9l
eHByMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+
PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBf
ZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfR3JlYXRl
ck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRv
cj49KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4s
CiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
ZmxvYXQgPiA+ID4Kb3BlcmF0b3I+PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZs
b2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9HcmVhdGVyT3JF
cXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj49KF9iel9W
ZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25n
IGRvdWJsZT4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I+PShfYnpfVmVjRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQy
KSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcj49
KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAog
ICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQ
X251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yUGljazxQ
X251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dy
ZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5n
ZSwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cj49KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+
LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgaW50
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3Mg
UF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBf
bnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9HcmVh
dGVyT3JFcXVhbDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgaW50
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpv
cGVyYXRvcj49KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZmxvYXQg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfR3Jl
YXRlck9yRXF1YWw8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj49KGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUx
LCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlw
ZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUx
LCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgVDI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpf
R3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPj0o
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6
X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVh
bDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShSYW5nZSBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5n
ZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVy
T3JFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj0oUmFuZ2UgZDEsIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlck9y
RXF1YWw8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X0dyZWF0ZXJPckVxdWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj49KFJhbmdlIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAg
ICAgUmFuZ2UsCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxpbnQsIGludCA+ID4gPgpvcGVyYXRv
cj49KFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGludCwgaW50
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1
YWw8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oUmFuZ2UgZDEsIAogICAgICBjb25z
dCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9HcmVhdGVy
T3JFcXVhbDxpbnQsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yPj0oUmFuZ2UgZDEsIAogICAgICBmbG9h
dCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCBmbG9hdD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3Vi
bGU+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCBkb3VibGUgPiA+ID4Kb3BlcmF0b3I+
PShSYW5nZSBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0dy
ZWF0ZXJPckVxdWFsPGludCwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4o
ZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9HcmVhdGVyT3JF
cXVhbDxpbnQsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPj0oUmFuZ2UgZDEsIAogICAgICBs
b25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1
YWw8aW50LCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4o
ZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAs
CiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxpbnQsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRv
cj49KFJhbmdlIGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAs
IAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVh
dGVyT3JFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251
bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj0oY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIF9iel9WZWNF
eHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVh
dGVyT3JFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBS
YW5nZSwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVy
YXRvcj49KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0
ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBO
X2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlw
ZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBO
X2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251
bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEs
IE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlw
ZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9HcmVhdGVy
T3JFcXVhbDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvcj49KGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0dyZWF0
ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xl
bmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91
YmxlPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpv
cGVyYXRvcj49KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAog
ICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgZG91YmxlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVGlu
eVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4s
IAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFQyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAg
ICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJh
dG9yPj0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBj
b21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGludCwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvcj49KGludCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpf
R3JlYXRlck9yRXF1YWw8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAg
ICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGludCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj49KGludCBkMSwgCiAgICAgIF9i
el9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBf
YnpfR3JlYXRlck9yRXF1YWw8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X0dyZWF0ZXJPckVxdWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj49KGludCBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxpbnQsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihf
YnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVx
dWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj49KGludCBkMSwgCiAgICAgIGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8
aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGZsb2F0LCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yPj0oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpf
R3JlYXRlck9yRXF1YWw8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGZsb2F0
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj0oZmxvYXQgZDEs
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGZsb2F0LCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yPj0oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9H
cmVhdGVyT3JFcXVhbDxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0dy
ZWF0ZXJPckVxdWFsPGZsb2F0LCBpbnQgPiA+ID4Kb3BlcmF0b3I+PShmbG9hdCBkMSwgCiAgICAg
IFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxmbG9hdCwg
aW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGZs
b2F0LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oZmxvYXQgZDEsIAogICAgICBjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8
ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZG91YmxlLCBQ
X251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9y
PFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAg
ICAgIF9iel9HcmVhdGVyT3JFcXVhbDxkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfR3JlYXRlck9y
RXF1YWw8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9y
Pj0oZG91YmxlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxkb3VibGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAg
ZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZG91Ymxl
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVj
dG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGRvdWJsZSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAg
ICAgIFJhbmdlLAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZG91YmxlLCBpbnQgPiA+ID4Kb3Bl
cmF0b3I+PShkb3VibGUgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAg
X2J6X0dyZWF0ZXJPckVxdWFsPGRvdWJsZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3Ro
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yPj0oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xl
bmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3I+PShsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5
cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAg
IF9iel9HcmVhdGVyT3JFcXVhbDxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBf
YnpfR3JlYXRlck9yRXF1YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGUgPiA+ID4Kb3BlcmF0b3I+PShsb25nIGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9H
cmVhdGVyT3JFcXVhbDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNF
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8bG9uZyBkb3VibGUsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3I+PShsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8bG9uZyBk
b3VibGUsIGludCA+ID4gPgpvcGVyYXRvcj49KGxvbmcgZG91YmxlIGQxLCAKICAgICAgUmFuZ2Ug
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGxvbmcgZG91
YmxlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAg
ICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpf
R3JlYXRlck9yRXF1YWw8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShs
b25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxsb25nIGRvdWJsZSwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
CiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxj
b21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb21wbGV4PFQxPiBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGNvbXBsZXg8
VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX2V4cHIyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9HcmVhdGVy
T3JFcXVhbDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3I+PShjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4
PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxj
bGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxjb21wbGV4PFQx
PiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb21wbGV4PFQxPiBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8Y29tcGxleDxU
MT4gLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAg
ICBSYW5nZSwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGNvbXBsZXg8VDE+ICwgaW50ID4gPiA+
Cm9wZXJhdG9yPj0oY29tcGxleDxUMT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAg
ICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxjb21wbGV4PFQxPiAsIGludD4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwg
CiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAg
X2J6X0dyZWF0ZXJPckVxdWFsPGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
cj49KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBO
X2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8Y29tcGxleDxUMT4gLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCgogCgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpf
TGVzc09yRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KGNvbnN0
IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3NP
ckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9KGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10
eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUx
PiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9u
dW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9MZXNzT3JF
cXVhbDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0b3I8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9i
el9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPD0oY29u
c3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTGVz
c09yRXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPD0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpf
TGVzc09yRXF1YWw8UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBmbG9hdD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBkb3VibGUgPiA+ID4Kb3BlcmF0
b3I8PShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBf
bnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4o
ZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5
cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvcjw9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUx
PiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIGxvbmcgZG91
YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBf
bnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcjw9KGNvbnN0IFZlY3RvcjxQX251
bXR5cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwg
Y29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4g
PiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFs
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
PD0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzc09yRXF1
YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0
b3I8PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAg
ZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9
KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIx
PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVz
c09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQy
LmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLAogICAg
ICBfYnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4g
PgpvcGVyYXRvcjw9KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFJh
bmdlLCAKICAgICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10
eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KF9iel9WZWNFeHByPFBfZXhwcjE+
IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0xl
c3NPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yPD0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEs
IAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9hdCA+ID4gPgpvcGVyYXRvcjw9KF9iel9WZWNFeHBy
PFBfZXhwcjE+IGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBm
bG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9i
el9MZXNzT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+
Cm9wZXJhdG9yPD0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBkb3VibGUgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvcjw9KF9iel9WZWNF
eHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFQyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9MZXNzT3JFcXVh
bDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJh
dG9yPD0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBk
MSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9u
dW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTGVz
c09yRXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPD0oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAg
ICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5n
dGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4g
PgpvcGVyYXRvcjw9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTGVzc09y
RXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4g
PgpvcGVyYXRvcjw9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVt
dHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yPD0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUx
PiYgZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAog
ICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yPD0o
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0xlc3NPckVxdWFs
PFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfTGVzc09yRXF1YWw8
UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0b3JQaWNr
PFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVt
dHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBUMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAg
IF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I8
PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBf
YnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGlu
dCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFs
PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PShSYW5nZSBkMSwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAg
ICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8
aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPD0oUmFuZ2UgZDEsIAogICAgICBjb25zdCBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9M
ZXNzT3JFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBSYW5nZSwKICAgICAgX2J6
X0xlc3NPckVxdWFsPGludCwgaW50ID4gPiA+Cm9wZXJhdG9yPD0oUmFuZ2UgZDEsIAogICAgICBS
YW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2Us
IAogICAgICBfYnpfTGVzc09yRXF1YWw8aW50LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3I8PShSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGludCwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I8
PShSYW5nZSBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDxpbnQsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsK
fQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIGRvdWJs
ZSA+ID4gPgpvcGVyYXRvcjw9KFJhbmdlIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8aW50LCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAg
X2J6X0xlc3NPckVxdWFsPGludCwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PShSYW5nZSBk
MSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9M
ZXNzT3JFcXVhbDxpbnQsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4
PFQyPiA+ICwKICAgICAgX2J6X0xlc3NPckVxdWFsPGludCwgY29tcGxleDxUMj4gID4gPiA+Cm9w
ZXJhdG9yPD0oUmFuZ2UgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+ICwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xl
c3NPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9y
PFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAg
ICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50
IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAg
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBf
bnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBUaW55VmVjdG9yPFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpf
TGVzc09yRXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPD0oY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwg
aW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50
IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVy
YXRvcjw9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAK
ICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0
aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwK
ICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcjw9KGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBpbnQgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBf
YnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9s
ZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJh
dG9yPD0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9h
dD4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwg
ZG91YmxlID4gPiA+Cm9wZXJhdG9yPD0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xl
bmd0aDE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUx
LCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBf
YnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PShj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgbG9uZyBk
b3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgVDI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAs
CiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3Bl
cmF0b3I8PShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAg
ICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4g
KGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8aW50LCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yPD0oaW50IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNF
eHByPFBfZXhwcjI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8aW50LCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPD0oaW50IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNzT3JF
cXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAg
ICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8
aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPD0oaW50IGQxLCAKICAgICAgY29uc3QgVmVj
dG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8aW50LCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yPD0oaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUy
LCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfTGVzc09yRXF1YWw8ZmxvYXQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShmbG9hdCBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxmbG9hdCwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfTGVzc09yRXF1YWw8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+
ID4Kb3BlcmF0b3I8PShmbG9hdCBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxmbG9hdCwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8ZmxvYXQs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFJhbmdl
LAogICAgICBfYnpfTGVzc09yRXF1YWw8ZmxvYXQsIGludCA+ID4gPgpvcGVyYXRvcjw9KGZsb2F0
IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xlc3NPckVxdWFs
PGZsb2F0LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTGVzc09yRXF1
YWw8ZmxvYXQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShmbG9hdCBkMSwgCiAgICAgIGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVh
bDxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxkb3VibGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShkb3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3I8
UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAg
ICAgX2J6X0xlc3NPckVxdWFsPGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3Vi
bGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxk
b3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PShkb3Vi
bGUgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxkb3VibGUsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3I8PShkb3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAg
ICBfYnpfTGVzc09yRXF1YWw8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+
KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9MZXNzT3JFcXVhbDxkb3VibGUsIGludCA+ID4gPgpvcGVyYXRvcjw9KGRvdWJsZSBkMSwg
CiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTGVzc09yRXF1YWw8ZG91
YmxlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzT3JFcXVh
bDxkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShkb3VibGUgZDEsIAogICAgICBj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0xlc3NPckVx
dWFsPGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxs
b25nIGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KGxvbmcgZG91YmxlIGQxLCAK
ICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGxvbmcgZG91YmxlLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxsb25nIGRvdWJsZSwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9KGxvbmcgZG91YmxlIGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxsb25nIGRv
dWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KGxvbmcgZG91YmxlIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8bG9uZyBkb3VibGUs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9MZXNzT3JFcXVh
bDxsb25nIGRvdWJsZSwgaW50ID4gPiA+Cm9wZXJhdG9yPD0obG9uZyBkb3VibGUgZDEsIAogICAg
ICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTGVzc09yRXF1YWw8bG9u
ZyBkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4s
IAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAg
IF9iel9MZXNzT3JFcXVhbDxsb25nIGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9
KGxvbmcgZG91YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xl
bmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBO
X2xlbmd0aDI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoK
IAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGNvbXBs
ZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KGNvbXBsZXg8VDE+IGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8Y29tcGxleDxUMT4gLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4g
PiAsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGNv
bXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9
KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8Y29tcGxl
eDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4
PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvcjw9KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCgoK
IAp0ZW1wbGF0ZTxjbGFzcyBUMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJhbmdlLAogICAgICBfYnpf
TGVzc09yRXF1YWw8Y29tcGxleDxUMT4gLCBpbnQgPiA+ID4Kb3BlcmF0b3I8PShjb21wbGV4PFQx
PiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xl
c3NPckVxdWFsPGNvbXBsZXg8VDE+ICwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChk
MSksIAogICAgICBkMikpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX251bXR5
cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8Y29tcGxleDxU
MT4gLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPD0oY29tcGxleDxUMT4gZDEsIAogICAgICBj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9M
ZXNzT3JFcXVhbDxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8
VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCiAKCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9leHBy
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9FcXVhbDxQX251
bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPT0oY29u
c3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBl
MSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUx
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEs
IGludCA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGlu
dD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNz
IFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I9PShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9F
cXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I9
PShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4s
CiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvcj09KGNvbnN0
IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGZsb2F0PiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PiwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj09KGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgZG91
YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4g
PiA+Cm9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcg
ZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBfYnpfRXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8
VDI+ID4gLAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9w
ZXJhdG9yPT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9i
el9FcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAog
ICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3I9PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZl
Y3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAg
IF9iel9FcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9FcXVhbDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvcj09KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oX2J6X1ZlY0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9FcXVhbDwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9FcXVhbDwgdHlw
ZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yPT0oX2J6X1ZlY0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfRXF1YWw8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0VxdWFs
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
PT0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sIAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0VxdWFsPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3I9PShfYnpfVmVjRXhwcjxQ
X2V4cHIxPiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yPT0oX2J6X1ZlY0V4cHI8
UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4s
IAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0VxdWFs
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBkb3VibGUgPiA+ID4Kb3BlcmF0b3I9PShf
YnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxkb3VibGU+LCAKICAgICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlLCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3Vi
bGU+LAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcg
ZG91YmxlID4gPiA+Cm9wZXJhdG9yPT0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBs
b25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBf
ZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBf
YnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+ICwKICAgICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21w
bGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I9PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAg
IGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAg
ICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiA+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpv
cGVyYXRvcj09KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBpbnQgPiA+
ID4Kb3BlcmF0b3I9PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJh
bmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGlu
dD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNz
IFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUx
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUx
PiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwg
CiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgaW50
ID4gPiA+Cm9wZXJhdG9yPT0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6
X0VxdWFsPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwg
ZmxvYXQgPiA+ID4Kb3BlcmF0b3I9PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAK
ICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9FcXVh
bDxQX251bXR5cGUxLCBkb3VibGUgPiA+ID4Kb3BlcmF0b3I9PShjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgZG91YmxlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25n
IGRvdWJsZT4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpv
cGVyYXRvcj09KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgbG9uZyBk
b3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAog
ICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxj
b21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+
ID4gPgpvcGVyYXRvcj09KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
Y29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+ICwgCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRXF1YWw8
aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oUmFuZ2UgZDEsIAogICAgICBjb25zdCBW
ZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRXF1YWw8aW50
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0VxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZSA+ID4gPgpvcGVyYXRvcj09KFJhbmdlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0VxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3I9PShSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0VxdWFsPGludCwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfRXF1YWw8aW50LCBpbnQgPiA+ID4Kb3BlcmF0
b3I9PShSYW5nZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9FcXVhbDxpbnQsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0VxdWFsPGludCwgUF9udW10eXBl
MiA+ID4gPgpvcGVyYXRvcj09KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdl
LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAg
ICAgX2J6X0VxdWFsPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRXF1YWw8aW50LCBmbG9hdCA+ID4gPgpvcGVyYXRvcj09
KFJhbmdlIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0VxdWFs
PGludCwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0VxdWFsPGludCwgZG91YmxlID4gPiA+Cm9wZXJh
dG9yPT0oUmFuZ2UgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9i
el9FcXVhbDxpbnQsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkp
Owp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfRXF1YWw8aW50LCBsb25n
IGRvdWJsZSA+ID4gPgpvcGVyYXRvcj09KFJhbmdlIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0VxdWFsPGludCwgbG9uZyBkb3VibGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxj
bGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfRXF1YWw8aW50LCBj
b21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I9PShSYW5nZSBkMSwgCiAgICAgIGNvbXBsZXg8VDI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0VxdWFsPGludCwgY29tcGxleDxU
Mj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09
KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X0VxdWFsPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgx
LCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBpbnQg
PiA+ID4Kb3BlcmF0b3I9PShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4m
IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBSYW5nZSwgCiAgICAg
IF9iel9FcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQg
Tl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xl
bmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgy
PiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwg
aW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9y
PT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGlu
dCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xl
bmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I9PShj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgZmxvYXQg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAg
ICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQg
Tl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBkb3VibGUgPiA+ID4Kb3BlcmF0
b3I9PShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAg
ZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3Vi
bGU+LCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBsb25n
IGRvdWJsZSA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0VxdWFsPFBfbnVt
dHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5n
dGgxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGNvbXBsZXg8
VDI+ICA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfRXF1YWw8UF9udW10
eXBlMSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxpbnQsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3I9PShpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0Vx
dWFsPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4sCiAgICAgIF9iel9FcXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGUgPiA+ID4Kb3BlcmF0b3I9PShpbnQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0VxdWFsPGludCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3I9PShpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRXF1YWw8
aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAg
ICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9F
cXVhbDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I9PShpbnQgZDEsIAogICAgICBjb25z
dCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0VxdWFsPGludCwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxmbG9hdCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
cj09KGZsb2F0IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0VxdWFsPGZsb2F0LCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4s
CiAgICAgIF9iel9FcXVhbDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4g
PgpvcGVyYXRvcj09KGZsb2F0IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0VxdWFsPGZsb2F0LCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxmbG9hdCwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvcj09KGZsb2F0IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfRXF1YWw8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9FcXVhbDxm
bG9hdCwgaW50ID4gPiA+Cm9wZXJhdG9yPT0oZmxvYXQgZDEsIAogICAgICBSYW5nZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAg
ICAgUmFuZ2UsIAogICAgICBfYnpfRXF1YWw8ZmxvYXQsIGludD4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5f
bGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sCiAgICAgIF9iel9FcXVhbDxmbG9hdCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09
KGZsb2F0IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAK
ICAgICAgX2J6X0VxdWFsPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEp
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0VxdWFsPGRv
dWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09KGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sIAogICAgICBfYnpfRXF1YWw8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3Vi
bGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0VxdWFsPGRvdWJs
ZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj09KGRvdWJsZSBk
MSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sIAogICAgICBfYnpfRXF1YWw8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUyPiwKICAgICAgX2J6X0VxdWFsPGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09
KGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAg
ICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9FcXVhbDxkb3Vi
bGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0VxdWFsPGRvdWJsZSwgaW50
ID4gPiA+Cm9wZXJhdG9yPT0oZG91YmxlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBSYW5n
ZSwgCiAgICAgIF9iel9FcXVhbDxkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSks
IAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0
aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgy
PiwKICAgICAgX2J6X0VxdWFsPGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09KGRv
dWJsZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAog
ICAgICBfYnpfRXF1YWw8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQx
KSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0Vx
dWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0obG9uZyBkb3VibGUg
ZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRXF1YWw8bG9uZyBkb3VibGUsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0VxdWFsPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPT0obG9uZyBkb3VibGUgZDEsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4s
IAogICAgICBfYnpfRXF1YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
VmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwKICAgICAgX2J6X0VxdWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yPT0obG9uZyBkb3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwgCiAgICAgIF9iel9FcXVhbDxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAog
ICAgICBSYW5nZSwKICAgICAgX2J6X0VxdWFsPGxvbmcgZG91YmxlLCBpbnQgPiA+ID4Kb3BlcmF0
b3I9PShsb25nIGRvdWJsZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBSYW5nZSwg
CiAgICAgIF9iel9FcXVhbDxsb25nIGRvdWJsZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJs
ZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQg
Tl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0VxdWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yPT0obG9uZyBkb3VibGUgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfRXF1YWw8bG9uZyBkb3VibGUsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4g
LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRXF1YWw8Y29t
cGxleDxUMT4gLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oY29tcGxleDxUMT4gZDEsIAog
ICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9FcXVhbDxjb21wbGV4PFQxPiAsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihf
YnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfRXF1YWw8Y29tcGxleDxUMT4g
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPT0oY29tcGxleDxU
MT4gZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9FcXVhbDxjb21wbGV4PFQxPiAsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMT4gPiAsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfRXF1YWw8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oY29tcGxl
eDxUMT4gZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAs
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0VxdWFs
PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEp
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+
ID4gLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9FcXVhbDxjb21wbGV4PFQxPiAsIGludCA+ID4g
PgpvcGVyYXRvcj09KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAg
ICAgUmFuZ2UsIAogICAgICBfYnpfRXF1YWw8Y29tcGxleDxUMT4gLCBpbnQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3Mg
VDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9FcXVh
bDxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I9PShjb21wbGV4PFQxPiBk
MSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+
ID4gLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAK
ICAgICAgX2J6X0VxdWFsPGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29t
cGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKIAoKCgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBj
bGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6
X05vdEVxdWFsPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3IhPShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9O
b3RFcXVhbDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShjb25zdCBW
ZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUy
PiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAg
ICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAg
ICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAog
ICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9
KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X05v
dEVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciE9KGNvbnN0IFZlY3RvcjxQX251
bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sIAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X05vdEVx
dWFsPFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yPFBfbnVt
dHlwZTE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sIAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBf
YnpfTm90RXF1YWw8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBkb3VibGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+LAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+
ID4Kb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgbG9uZyBk
b3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAg
IF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMj4gPiAsCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+
ID4Kb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29tcGxl
eDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAg
ICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X05vdEVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwg
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X05vdEVx
dWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlID4gPiA+Cm9wZXJhdG9yIT0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpf
Tm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IhPShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAK
ICAgICAgX2J6X05vdEVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBS
YW5nZSwKICAgICAgX2J6X05vdEVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBp
bnQgPiA+ID4Kb3BlcmF0b3IhPShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIFJhbmdl
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBSYW5nZSwgCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBf
bnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShfYnpfVmVjRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9O
b3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+LAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvciE9KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHBy
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTm90RXF1YWw8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3IhPShfYnpfVmVjRXhwcjxQX2V4cHIxPiBk
MSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9i
el9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfTm90RXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVyYXRvciE9KF9iel9W
ZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4sIAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJs
ZT4sCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9u
ZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3IhPShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAg
IGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAg
IF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDI+ID4gLAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvciE9KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4g
PiAsIAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsK
fQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Ob3RFcXVh
bDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVh
bDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUx
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Ob3RFcXVhbDxQX251
bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X05vdEVx
dWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwKICAgICAg
X2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciE9KGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2Us
IAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVu
Z3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3IhPShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X05vdEVxdWFs
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0
b3IhPShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTm90RXF1YWw8UF9u
dW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBmbG9hdCA+
ID4gPgpvcGVyYXRvciE9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
ZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBf
YnpfTm90RXF1YWw8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X05vdEVxdWFs
PFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvciE9KGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBkb3VibGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4g
PiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBs
b25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgY29t
cGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYg
ZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGNvbXBsZXg8
VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkp
Owp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAg
ICAgIF9iel9Ob3RFcXVhbDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShSYW5nZSBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAg
ICAgIF9iel9Ob3RFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTm90RXF1YWw8aW50
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yIT0oUmFuZ2UgZDEs
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTm90RXF1
YWw8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X05v
dEVxdWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9KFJhbmdlIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAg
ICBfYnpfTm90RXF1YWw8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9Ob3RFcXVhbDxpbnQsIGludCA+ID4gPgpvcGVyYXRvciE9KFJhbmdlIGQxLCAKICAgICAg
UmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdl
LCAKICAgICAgX2J6X05vdEVxdWFsPGludCwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LAogICAgICBfYnpfTm90RXF1YWw8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
IT0oUmFuZ2UgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTm90RXF1YWw8
aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4s
CiAgICAgIF9iel9Ob3RFcXVhbDxpbnQsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yIT0oUmFuZ2UgZDEs
IAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfTm90RXF1YWw8aW50LCBm
bG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKCmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxkb3VibGU+LAogICAgICBfYnpfTm90RXF1YWw8aW50LCBkb3VibGUgPiA+ID4Kb3BlcmF0b3Ih
PShSYW5nZSBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X05v
dEVxdWFsPGludCwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7
Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9Ob3RFcXVhbDxpbnQsIGxv
bmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yIT0oUmFuZ2UgZDEsIAogICAgICBsb25nIGRvdWJsZSBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfTm90RXF1YWw8aW50LCBsb25nIGRvdWJs
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBs
YXRlPGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9Ob3RFcXVh
bDxpbnQsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvciE9KFJhbmdlIGQxLCAKICAgICAgY29t
cGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfTm90RXF1YWw8aW50
LCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIp
KSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yIT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTm90RXF1YWw8UF9u
dW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9leHByMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Ob3RF
cXVhbDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJh
dG9yIT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9O
b3RFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVGlu
eVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBSYW5nZSwKICAg
ICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciE9KGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEs
IGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgy
PiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0
b3IhPShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAg
Y29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAg
ICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAg
IF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3IhPShjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X05vdEVx
dWFsPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4o
ZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAg
IF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvciE9KGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBmbG9hdCBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6
X05vdEVxdWFsPFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xl
bmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91
YmxlPiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRv
ciE9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBk
b3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4sIAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEs
IGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUx
LCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfTm90RXF1
YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBl
MSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9O
b3RFcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X05v
dEVxdWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9KGludCBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sIAogICAgICBfYnpfTm90RXF1YWw8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4s
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X05vdEVxdWFsPGludCwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciE9KGludCBkMSwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfTm90RXF1YWw8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X05v
dEVxdWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9KGludCBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X05vdEVxdWFsPGludCwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvciE9KGludCBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sIAogICAgICBfYnpfTm90RXF1YWw8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X05vdEVxdWFsPGZsb2F0LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oZmxvYXQgZDEsIAog
ICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfTm90RXF1YWw8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X05v
dEVxdWFsPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9y
IT0oZmxvYXQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTm90RXF1YWw8ZmxvYXQsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwKICAgICAgX2J6X05vdEVxdWFsPGZsb2F0LCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yIT0oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9O
b3RFcXVhbDxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X05vdEVxdWFs
PGZsb2F0LCBpbnQgPiA+ID4Kb3BlcmF0b3IhPShmbG9hdCBkMSwgCiAgICAgIFJhbmdlIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAog
ICAgICBSYW5nZSwgCiAgICAgIF9iel9Ob3RFcXVhbDxmbG9hdCwgaW50PiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBp
bnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiwKICAgICAgX2J6X05vdEVxdWFsPGZsb2F0LCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yIT0oZmxvYXQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sIAogICAgICBfYnpfTm90RXF1YWw8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfTm90RXF1YWw8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oZG91YmxlIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxkb3VibGUsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfTm90RXF1YWw8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+
Cm9wZXJhdG9yIT0oZG91YmxlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxkb3VibGUsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAg
ICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTm90RXF1YWw8ZG91YmxlLCBQ
X251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X05vdEVxdWFsPGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdl
LAogICAgICBfYnpfTm90RXF1YWw8ZG91YmxlLCBpbnQgPiA+ID4Kb3BlcmF0b3IhPShkb3VibGUg
ZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X05vdEVxdWFsPGRv
dWJsZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTm90RXF1YWw8
ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oZG91YmxlIGQxLCAKICAgICAgY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxk
b3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVn
aW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTm90RXF1YWw8bG9uZyBkb3Vi
bGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNF
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LAogICAgICBfYnpfTm90RXF1YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGUgPiA+ID4Kb3BlcmF0b3IhPShsb25nIGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNF
eHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9Ob3RFcXVhbDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNF
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfTm90RXF1YWw8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IhPShsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X05vdEVxdWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFu
dDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIFJhbmdlLAogICAgICBfYnpfTm90RXF1YWw8bG9uZyBkb3VibGUsIGludCA+ID4gPgpv
cGVyYXRvciE9KGxvbmcgZG91YmxlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFJh
bmdlLCAKICAgICAgX2J6X05vdEVxdWFsPGxvbmcgZG91YmxlLCBpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTm90RXF1YWw8bG9uZyBkb3VibGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxs
b25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAg
ICAgIGQyLmJlZ2luKCkpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlw
ZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAg
IF9iel9Ob3RFcXVhbDxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShj
b21wbGV4PFQxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4g
LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X05vdEVxdWFs
PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEp
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQ
X2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9i
el9Ob3RFcXVhbDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+
ID4Kb3BlcmF0b3IhPShjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21w
bGV4PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X05vdEVx
dWFsPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Ob3RFcXVhbDxjb21wbGV4PFQxPiAsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShjb21wbGV4PFQxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfTm90RXF1YWw8Y29tcGxleDxUMT4gLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBSYW5nZSwKICAgICAg
X2J6X05vdEVxdWFsPGNvbXBsZXg8VDE+ICwgaW50ID4gPiA+Cm9wZXJhdG9yIT0oY29tcGxleDxU
MT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9O
b3RFcXVhbDxjb21wbGV4PFQxPiAsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEp
LCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBl
MiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X05vdEVxdWFsPGNvbXBsZXg8VDE+ICwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTm90RXF1
YWw8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChk
MSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgogCgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTI+LAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yJiYoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZl
Y3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4s
IAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4
cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxB
bmQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRv
ciYmKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4
cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xvZ2ljYWxB
bmQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBk
MikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dp
Y2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImJihjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xv
Z2ljYWxBbmQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYmKGNvbnN0IFZl
Y3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAg
ICAgX2J6X0xvZ2ljYWxBbmQ8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3Ro
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yJiYoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAg
IF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYmKGNvbnN0IFZl
Y3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYmKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
LCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTG9n
aWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciYmKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwg
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAog
ICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvciYmKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29u
c3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlw
ZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3ImJihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwg
CiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJiYoX2J6
X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4sIAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
UF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlw
ZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yJiYoX2J6X1ZlY0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yJiYoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAog
ICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZSA+ID4gPgpvcGVyYXRvciYmKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3ImJihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Mb2dpY2Fs
QW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYmKGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAgICBf
YnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yJiYoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBf
bnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
ciYmKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBf
bnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAg
IF9iel9Mb2dpY2FsQW5kPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYmKFJhbmdlIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAg
ICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8
aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJiYoUmFuZ2Ug
ZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTG9n
aWNhbEFuZDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfTG9naWNhbEFuZDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImJihSYW5nZSBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFu
Z2UsCiAgICAgIF9iel9Mb2dpY2FsQW5kPGludCwgaW50ID4gPiA+Cm9wZXJhdG9yJiYoUmFuZ2Ug
ZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgUmFuZ2UsIAogICAgICBfYnpfTG9naWNhbEFuZDxpbnQsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yJiYoUmFuZ2UgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAg
ICBfYnpfTG9naWNhbEFuZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4s
CiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0
b3ImJihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTG9naWNhbEFuZDxQ
X251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJiYo
Y29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xvZ2lj
YWxBbmQ8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYmKGNvbnN0IFRpbnlW
ZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNr
PFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBSYW5nZSwKICAg
ICAgX2J6X0xvZ2ljYWxBbmQ8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yJiYoY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5
cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEs
IE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3ImJihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAK
ICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgy
PiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xl
bmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yJiYo
Y29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGludCBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAg
IF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTG9naWNhbEFuZDxpbnQs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImJihpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8
UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAg
X2J6X0xvZ2ljYWxBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAg
ICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJiYoaW50IGQxLCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9M
b2dpY2FsQW5kPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dpY2Fs
QW5kPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYmKGludCBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3Rh
bnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTG9naWNhbEFuZDxpbnQsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3ImJihpbnQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBO
X2xlbmd0aDI+LCAKICAgICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQogCgoKCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3J8fChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xh
c3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9M
b2dpY2FsT3I8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpv
cGVyYXRvcnx8KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhw
cjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xv
Z2ljYWxPcjxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBl
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9Mb2dpY2FsT3I8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAg
ICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yfHwoY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAog
ICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0
aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgy
PiwKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yfHwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAg
X2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3J8fChjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBj
b25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4s
IAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xh
c3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxP
cjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+ID4gPgpvcGVyYXRvcnx8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xv
Z2ljYWxPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQ
X251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9i
el9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3J8fChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAK
ICAgICAgX2J6X0xvZ2ljYWxPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
UmFuZ2UsCiAgICAgIF9iel9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGludCA+ID4gPgpvcGVyYXRvcnx8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgUmFu
Z2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xvZ2ljYWxPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNz
IFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoX2J6X1ZlY0V4cHI8UF9l
eHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBf
YnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcnx8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTG9n
aWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0
b3J8fChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4
cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Mb2dp
Y2FsT3I8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvcnx8KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBf
YnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
LCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwK
ICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
fHwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgaW50ID4g
PiA+Cm9wZXJhdG9yfHwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBS
YW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBl
MSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwg
Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0xvZ2ljYWxPcjxQ
X251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoY29uc3QgVmVjdG9yUGljazxQ
X251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0xvZ2ljYWxP
cjxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3J8fChjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sIAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yfHwoUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTG9naWNhbE9yPGludCwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlID4gPiA+Cm9wZXJhdG9yfHwoUmFuZ2UgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfTG9naWNhbE9yPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yfHwoUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBpbnQg
PiA+ID4Kb3BlcmF0b3J8fChSYW5nZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9Mb2dpY2FsT3I8
aW50LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5f
bGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9Mb2dp
Y2FsT3I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoUmFuZ2UgZDEsIAogICAgICBj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTG9naWNhbE9yPGludCwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0
aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xl
bmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTG9n
aWNhbE9yPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUg
PiA+ID4Kb3BlcmF0b3J8fChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4m
IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4s
CiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
cnx8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVt
dHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIFJhbmdlLAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVy
YXRvcnx8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xvZ2lj
YWxPcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5n
dGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvcnx8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4sCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9w
ZXJhdG9yfHwoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAg
ICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dpY2Fs
T3I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoaW50IGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwg
CiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQx
KSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxPcjxpbnQsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8fChpbnQgZDEsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X0xvZ2ljYWxPcjxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGludD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTG9n
aWNhbE9yPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnx8KGludCBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yfHwoaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQp9IAoKCiMgMjg4ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjZXhwci5oIiAyCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN1b3BzLmNjIiAxCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAoKCiNkZWZpbmUgQlpfVkVDVU9QU19DQwoKCgoKCm5h
bWVzcGFjZSAgYmxpdHogIHsgCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgX2J6X2FiczxQX251bXR5cGUxPiA+ID4KYWJzKGNvbnN0IFZlY3RvcjxQX251bXR5
cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfYWJzPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfYWJzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlPiA+ID4KYWJzKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfYWJzPCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LAogICAgX2J6X2FiczxQX251bXR5cGUxPiA+ID4KYWJzKGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9hYnM8UF9udW10eXBl
MT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2Us
CiAgICBfYnpfYWJzPGludD4gPiA+CmFicyhSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2FiczxpbnQ+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJV
bmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9i
el9hYnM8UF9udW10eXBlMT4gPiA+CmFicyhjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X2FiczxQX251bXR5
cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSkpOwp9CgoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwK
ICAgIF9iel9hY29zPFBfbnVtdHlwZTE+ID4gPgphY29zKGNvbnN0IFZlY3RvcjxQX251bXR5cGUx
PiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwKICAgICAgICBfYnpfYWNvczxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6X2Fjb3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGU+ID4gPgphY29zKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfYWNvczwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgIF9iel9hY29zPFBfbnVtdHlwZTE+ID4gPgphY29zKGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9hY29zPFBfbnVt
dHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJh
bmdlLAogICAgX2J6X2Fjb3M8aW50PiA+ID4KYWNvcyhSYW5nZSBkMSkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2Fjb3M8aW50PiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
CiAgICBfYnpfYWNvczxQX251bXR5cGUxPiA+ID4KYWNvcyhjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X2Fj
b3M8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LAogICAgX2J6X2Fjb3NoPFBfbnVtdHlwZTE+ID4gPgphY29zaChjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2Fjb3NoPFBfbnVtdHlwZTE+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
KSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfYWNvc2g8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgphY29zaChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAg
ICAgICAgX2J6X2Fjb3NoPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2Fjb3NoPFBfbnVtdHlwZTE+
ID4gPgphY29zaChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAg
ICAgICBfYnpfYWNvc2g8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfYWNvc2g8aW50PiA+ID4KYWNvc2goUmFu
Z2UgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9i
el9hY29zaDxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9hY29zaDxQX251bXR5cGUxPiA+ID4KYWNv
c2goY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LAogICAgICAgIF9iel9hY29zaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKCiAKCgoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
VW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfYXNpbjxQX251bXR5
cGUxPiA+ID4KYXNpbihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAg
X2J6X2FzaW48UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwK
ICAgIF9iel9hc2luPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+ID4KYXNpbihfYnpf
VmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2FzaW48IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBf
YnpfYXNpbjxQX251bXR5cGUxPiA+ID4KYXNpbihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+
JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfYXNpbjxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel9hc2luPGlu
dD4gPiA+CmFzaW4oUmFuZ2UgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJh
bmdlLAogICAgICAgIF9iel9hc2luPGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X2FzaW48UF9udW10
eXBlMT4gPiA+CmFzaW4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBk
MSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel9hc2luPFBfbnVtdHlwZTE+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7
Cn0KCgogCgoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9h
c2luaDxQX251bXR5cGUxPiA+ID4KYXNpbmgoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgICAgIF9iel9hc2luaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNF
eHByPFBfZXhwcjE+LAogICAgX2J6X2FzaW5oPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
PiA+ID4KYXNpbmgoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9hc2luaDwgdHlw
ZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwKICAgIF9iel9hc2luaDxQX251bXR5cGUxPiA+ID4KYXNpbmgoY29uc3QgVmVj
dG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2FzaW5oPFBfbnVt
dHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJh
bmdlLAogICAgX2J6X2FzaW5oPGludD4gPiA+CmFzaW5oKFJhbmdlIGQxKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfYXNpbmg8aW50PiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sCiAgICBfYnpfYXNpbmg8UF9udW10eXBlMT4gPiA+CmFzaW5oKGNvbnN0IFRpbnlWZWN0b3I8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFy
eU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBf
YnpfYXNpbmg8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2F0YW48UF9udW10eXBlMT4gPiA+CmF0YW4oY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9hdGFuPFBfbnVtdHlwZTE+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfYXRhbjwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmF0YW4oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAog
ICAgICAgIF9iel9hdGFuPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2F0YW48UF9udW10eXBlMT4g
PiA+CmF0YW4oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAg
ICAgX2J6X2F0YW48UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfYXRhbjxpbnQ+ID4gPgphdGFuKFJhbmdlIGQx
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfYXRh
bjxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9hdGFuPFBfbnVtdHlwZTE+ID4gPgphdGFuKGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiwKICAgICAgICBfYnpfYXRhbjxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKIAoKCgoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfYXRhbmg8UF9udW10eXBlMT4gPiA+
CmF0YW5oKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfYXRh
bmg8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9i
el9hdGFuaDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmF0YW5oKF9iel9WZWNF
eHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfYXRhbmg8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpf
YXRhbmg8UF9udW10eXBlMT4gPiA+CmF0YW5oKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4m
IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9hdGFuaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel9hdGFuaDxp
bnQ+ID4gPgphdGFuaChSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8
UmFuZ2UsCiAgICAgICAgX2J6X2F0YW5oPGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X2F0YW5oPFBf
bnVtdHlwZTE+ID4gPgphdGFuaChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X2F0YW5oPFBfbnVtdHlwZTE+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpKSk7Cn0KCgoKIAoKCgojIDU2NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L3ZlY3VvcHMuY2MiCgoKIAoKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sCiAgICBfYnpfY2JydDxQX251bXR5cGUxPiA+ID4KY2JydChjb25zdCBWZWN0b3I8UF9u
dW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2NicnQ8UF9udW10eXBlMT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel9jYnJ0PCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlPiA+ID4KY2JydChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6
X2NicnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfY2JydDxQX251bXR5cGUxPiA+ID4KY2JydChj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfY2Jy
dDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxSYW5nZSwKICAgIF9iel9jYnJ0PGludD4gPiA+CmNicnQoUmFuZ2UgZDEpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9iel9jYnJ0PGludD4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LAogICAgX2J6X2NicnQ8UF9udW10eXBlMT4gPiA+CmNicnQoY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVu
YXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAg
IF9iel9jYnJ0PFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwKICAgIF9iel9jZWlsPFBfbnVtdHlwZTE+ID4gPgpjZWlsKGNvbnN0
IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfY2VpbDxQX251bXR5cGUx
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6X2NlaWw8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpjZWlsKF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwK
ICAgICAgICBfYnpfY2VpbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9jZWlsPFBfbnVtdHlwZTE+
ID4gPgpjZWlsKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAg
ICAgIF9iel9jZWlsPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgX2J6X2NlaWw8aW50PiA+ID4KY2VpbChSYW5nZSBk
MSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2Nl
aWw8aW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sCiAgICBfYnpfY2VpbDxQX251bXR5cGUxPiA+ID4KY2VpbChjb25z
dCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sCiAgICAgICAgX2J6X2NlaWw8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfY29zPFBfbnVtdHlwZTE+ID4gPgpj
b3MoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9jb3M8UF9u
dW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel9jb3M8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpjb3MoX2J6X1ZlY0V4cHI8UF9leHBy
MT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LAogICAgICAgIF9iel9jb3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFy
eU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfY29zPFBfbnVtdHlw
ZTE+ID4gPgpjb3MoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAg
ICAgICAgX2J6X2NvczxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel9jb3M8aW50PiA+ID4KY29zKFJhbmdlIGQx
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfY29z
PGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
KSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X2NvczxQX251bXR5cGUxPiA+ID4KY29zKGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwK
ICAgICAgICBfYnpfY29zPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgogCgoKCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2Nvc2g8UF9udW10eXBlMT4gPiA+CmNvc2go
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVu
YXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9jb3NoPFBfbnVt
dHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfY29zaDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmNvc2goX2J6X1ZlY0V4cHI8UF9leHBy
MT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LAogICAgICAgIF9iel9jb3NoPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2Nvc2g8UF9udW10
eXBlMT4gPiA+CmNvc2goY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
CiAgICAgICAgX2J6X2Nvc2g8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfY29zaDxpbnQ+ID4gPgpjb3NoKFJh
bmdlIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBf
YnpfY29zaDxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9jb3NoPFBfbnVtdHlwZTE+ID4gPgpjb3No
KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwKICAgICAgICBfYnpfY29zaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKIAoKCgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFy
eU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9leHA8UF9udW10eXBlMT4g
PiA+CmV4cChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2V4
cDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6
X2V4cDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmV4cChfYnpfVmVjRXhwcjxQ
X2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sCiAgICAgICAgX2J6X2V4cDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0K
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9leHA8UF9u
dW10eXBlMT4gPiA+CmV4cChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwKICAgICAgICBfYnpfZXhwPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgX2J6X2V4cDxpbnQ+ID4gPgpleHAoUmFu
Z2UgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9i
el9leHA8aW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICBfYnpfZXhwPFBfbnVtdHlwZTE+ID4gPgpleHAoY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LAogICAgICAgIF9iel9leHA8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2V4cG0xPFBfbnVtdHlwZTE+ID4g
PgpleHBtMShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2V4
cG0xPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBf
YnpfZXhwbTE8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpleHBtMShfYnpfVmVj
RXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2V4cG0xPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6
X2V4cG0xPFBfbnVtdHlwZTE+ID4gPgpleHBtMShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+
JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfZXhwbTE8UF9udW10eXBlMT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfZXhwbTE8
aW50PiA+ID4KZXhwbTEoUmFuZ2UgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PFJhbmdlLAogICAgICAgIF9iel9leHBtMTxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9leHBtMTxQ
X251bXR5cGUxPiA+ID4KZXhwbTEoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0
aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel9leHBtMTxQX251bXR5cGUx
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSkpOwp9CgoKCiAKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAog
ICAgX2J6X2VyZjxQX251bXR5cGUxPiA+ID4KZXJmKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYg
ZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxPiwKICAgICAgICBfYnpfZXJmPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sCiAgICBfYnpfZXJmPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
PiA+ID4KZXJmKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfZXJmPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LAogICAgX2J6X2VyZjxQX251bXR5cGUxPiA+ID4KZXJmKGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9lcmY8UF9udW10eXBlMT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkp
KTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBf
YnpfZXJmPGludD4gPiA+CmVyZihSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVu
YXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2VyZjxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9lcmY8
UF9udW10eXBlMT4gPiA+CmVyZihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X2VyZjxQX251bXR5cGUxPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSkpOwp9CgoKCiAKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAg
X2J6X2VyZmM8UF9udW10eXBlMT4gPiA+CmVyZmMoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBk
MSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LAogICAgICAgIF9iel9lcmZjPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sCiAgICBfYnpfZXJmYzwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlw
ZT4gPiA+CmVyZmMoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9lcmZjPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTE+LAogICAgX2J6X2VyZmM8UF9udW10eXBlMT4gPiA+CmVyZmMoY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2VyZmM8UF9udW10eXBl
MT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2Us
CiAgICBfYnpfZXJmYzxpbnQ+ID4gPgplcmZjKFJhbmdlIGQxKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfZXJmYzxpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAg
IF9iel9lcmZjPFBfbnVtdHlwZTE+ID4gPgplcmZjKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBfYnpfZXJmYzxQ
X251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSkpOwp9CgoKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sCiAgICBfYnpfYWJzPFBfbnVtdHlwZTE+ID4gPgpmYWJzKGNvbnN0IFZlY3RvcjxQX251
bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfYWJzPFBfbnVtdHlwZTE+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfYWJzPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlPiA+ID4KZmFicyhfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2Fi
czwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUxPiwKICAgIF9iel9hYnM8UF9udW10eXBlMT4gPiA+CmZhYnMoY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFy
eU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2FiczxQX251
bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxS
YW5nZSwKICAgIF9iel9hYnM8aW50PiA+ID4KZmFicyhSYW5nZSBkMSkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2FiczxpbnQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwK
ICAgIF9iel9hYnM8UF9udW10eXBlMT4gPiA+CmZhYnMoY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel9hYnM8
UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sCiAgICBfYnpfZmxvb3I8UF9udW10eXBlMT4gPiA+CmZsb29yKGNvbnN0IFZlY3RvcjxQ
X251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfZmxvb3I8UF9udW10eXBlMT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
VW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel9mbG9vcjwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmZsb29yKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAg
ICBfYnpfZmxvb3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfZmxvb3I8UF9udW10eXBlMT4gPiA+
CmZsb29yKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAg
IF9iel9mbG9vcjxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel9mbG9vcjxpbnQ+ID4gPgpmbG9vcihSYW5nZSBk
MSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2Zs
b29yPGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X2Zsb29yPFBfbnVtdHlwZTE+ID4gPgpmbG9vcihj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sCiAgICAgICAgX2J6X2Zsb29yPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgogCgoKCiMgMTI5
MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3VvcHMuY2MiCgoK
IAoKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfaXNuYW48
UF9udW10eXBlMT4gPiA+CmlzbmFuKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwK
ICAgICAgICBfYnpfaXNuYW48UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQ
X2V4cHIxPiwKICAgIF9iel9pc25hbjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+
CmlzbmFuKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
VW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfaXNuYW48IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sCiAgICBfYnpfaXNuYW48UF9udW10eXBlMT4gPiA+CmlzbmFuKGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9pc25hbjxQX251bXR5cGUx
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwK
ICAgIF9iel9pc25hbjxpbnQ+ID4gPgppc25hbihSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2lzbmFuPGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAog
ICAgX2J6X2lzbmFuPFBfbnVtdHlwZTE+ID4gPgppc25hbihjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X2lz
bmFuPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgoKIAoKCgojIDE0MjYgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN1b3BzLmNjIgoKCiAKCgoKCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2owPFBfbnVtdHlwZTE+ID4gPgpqMChjb25z
dCBWZWN0b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2owPFBfbnVtdHlwZTE+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfajA8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpqMChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAg
ICAgX2J6X2owPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2owPFBfbnVtdHlwZTE+ID4gPgpqMChj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfajA8
UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8UmFuZ2UsCiAgICBfYnpfajA8aW50PiA+ID4KajAoUmFuZ2UgZDEpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9iel9qMDxpbnQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwK
ICAgIF9iel9qMDxQX251bXR5cGUxPiA+ID4KajAoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUx
LCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel9qMDxQX251
bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSkpOwp9CgoKCiAKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgX2J6X2oxPFBfbnVtdHlwZTE+ID4gPgpqMShjb25zdCBWZWN0b3I8UF9udW10eXBl
MT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2oxPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfajE8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGU+ID4gPgpqMShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2oxPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LAogICAgX2J6X2oxPFBfbnVtdHlwZTE+ID4gPgpqMShjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfajE8UF9udW10eXBlMT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsK
fQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpf
ajE8aW50PiA+ID4KajEoUmFuZ2UgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PFJhbmdlLAogICAgICAgIF9iel9qMTxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBp
bnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9qMTxQX251bXR5
cGUxPiA+ID4KajEoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel9qMTxQX251bXR5cGUxPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoK
CiAKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2xnYW1t
YTxQX251bXR5cGUxPiA+ID4KbGdhbW1hKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
PiwKICAgICAgICBfYnpfbGdhbW1hPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sCiAgICBfYnpfbGdhbW1hPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
PiA+ID4KbGdhbW1hKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfbGdhbW1hPCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LAogICAgX2J6X2xnYW1tYTxQX251bXR5cGUxPiA+ID4KbGdhbW1hKGNvbnN0
IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5h
cnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9sZ2FtbWE8
UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8UmFuZ2UsCiAgICBfYnpfbGdhbW1hPGludD4gPiA+CmxnYW1tYShSYW5nZSBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2xnYW1tYTxpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiwKICAgIF9iel9sZ2FtbWE8UF9udW10eXBlMT4gPiA+CmxnYW1tYShjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
CiAgICAgICAgX2J6X2xnYW1tYTxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKCiAKCgoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfbG9nPFBfbnVtdHlwZTE+ID4gPgps
b2coY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9sb2c8UF9u
dW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel9sb2c8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpsb2coX2J6X1ZlY0V4cHI8UF9leHBy
MT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LAogICAgICAgIF9iel9sb2c8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFy
eU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfbG9nPFBfbnVtdHlw
ZTE+ID4gPgpsb2coY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAg
ICAgICAgX2J6X2xvZzxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel9sb2c8aW50PiA+ID4KbG9nKFJhbmdlIGQx
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfbG9n
PGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
KSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X2xvZzxQX251bXR5cGUxPiA+ID4KbG9nKGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwK
ICAgICAgICBfYnpfbG9nPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgogCgoKCgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9sb2diPFBfbnVtdHlwZTE+ID4gPgpsb2di
KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJV
bmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfbG9nYjxQX251
bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6X2xvZ2I8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpsb2diKF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwKICAgICAgICBfYnpfbG9nYjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVu
YXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9sb2diPFBfbnVt
dHlwZTE+ID4gPgpsb2diKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+
LAogICAgICAgIF9iel9sb2diPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgX2J6X2xvZ2I8aW50PiA+ID4KbG9nYihS
YW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAg
X2J6X2xvZ2I8aW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICBfYnpfbG9nYjxQX251bXR5cGUxPiA+ID4KbG9n
Yihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4sCiAgICAgICAgX2J6X2xvZ2I8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCgogCgoKCgp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJV
bmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9sb2cxcDxQX251bXR5
cGUxPiA+ID4KbG9nMXAoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAg
IF9iel9sb2cxcDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LAogICAgX2J6X2xvZzFwPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+ID4KbG9nMXAo
X2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9sb2cxcDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwK
ICAgIF9iel9sb2cxcDxQX251bXR5cGUxPiA+ID4KbG9nMXAoY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2xvZzFwPFBfbnVtdHlwZTE+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7
Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgX2J6
X2xvZzFwPGludD4gPiA+CmxvZzFwKFJhbmdlIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
VW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfbG9nMXA8aW50PiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICBfYnpf
bG9nMXA8UF9udW10eXBlMT4gPiA+CmxvZzFwKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBfYnpfbG9nMXA8UF9u
dW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCkpKTsKfQoKCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgX2J6X2xvZzEwPFBfbnVtdHlwZTE+ID4gPgpsb2cxMChjb25zdCBWZWN0b3I8UF9u
dW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2xvZzEwPFBfbnVtdHlwZTE+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0K
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVu
YXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfbG9nMTA8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGU+ID4gPgpsb2cxMChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAg
X2J6X2xvZzEwPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2xvZzEwPFBfbnVtdHlwZTE+ID4gPgps
b2cxMChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBf
YnpfbG9nMTA8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfbG9nMTA8aW50PiA+ID4KbG9nMTAoUmFuZ2UgZDEp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9iel9sb2cx
MDxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9sb2cxMDxQX251bXR5cGUxPiA+ID4KbG9nMTAoY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LAogICAgICAgIF9iel9sb2cxMDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKIAoKCgojIDE5NTgg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN1b3BzLmNjIgoKCiAK
CgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X3JpbnQ8UF9u
dW10eXBlMT4gPiA+CnJpbnQoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAg
ICAgIF9iel9yaW50PFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHBy
MT4sCiAgICBfYnpfcmludDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CnJpbnQo
X2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9yaW50PCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAog
ICAgX2J6X3JpbnQ8UF9udW10eXBlMT4gPiA+CnJpbnQoY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X3JpbnQ8UF9udW10eXBlMT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoK
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfcmlu
dDxpbnQ+ID4gPgpyaW50KFJhbmdlIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlP
cDxSYW5nZSwKICAgICAgICBfYnpfcmludDxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9yaW50PFBf
bnVtdHlwZTE+ID4gPgpyaW50KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBfYnpfcmludDxQX251bXR5cGUxPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSkpOwp9CgoKCiAKCgoKIyAyMDkyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovdmVjdW9wcy5jYyIKCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgX2J6X3NpbjxQX251bXR5cGUxPiA+ID4Kc2luKGNvbnN0IFZlY3RvcjxQX251bXR5
cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfc2luPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfc2luPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlPiA+ID4Kc2luKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfc2luPCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LAogICAgX2J6X3NpbjxQX251bXR5cGUxPiA+ID4Kc2luKGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9zaW48UF9udW10eXBl
MT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2Us
CiAgICBfYnpfc2luPGludD4gPiA+CnNpbihSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X3NpbjxpbnQ+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJV
bmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9i
el9zaW48UF9udW10eXBlMT4gPiA+CnNpbihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X3NpbjxQX251bXR5
cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSkpOwp9CgoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwK
ICAgIF9iel9zaW5oPFBfbnVtdHlwZTE+ID4gPgpzaW5oKGNvbnN0IFZlY3RvcjxQX251bXR5cGUx
PiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwKICAgICAgICBfYnpfc2luaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6X3Npbmg8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGU+ID4gPgpzaW5oKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfc2luaDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgIF9iel9zaW5oPFBfbnVtdHlwZTE+ID4gPgpzaW5oKGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9zaW5oPFBfbnVt
dHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJh
bmdlLAogICAgX2J6X3Npbmg8aW50PiA+ID4Kc2luaChSYW5nZSBkMSkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X3Npbmg8aW50PiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
CiAgICBfYnpfc2luaDxQX251bXR5cGUxPiA+ID4Kc2luaChjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X3Np
bmg8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sCiAgICBfYnpfc3FyPFBfbnVtdHlwZTE+ID4gPgpzcXIoY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9zcXI8UF9udW10eXBlMT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel9zcXI8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGU+ID4gPgpzcXIoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9z
cXI8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfc3FyPFBfbnVtdHlwZTE+ID4gPgpzcXIoY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFy
eU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X3NxcjxQX251
bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxS
YW5nZSwKICAgIF9iel9zcXI8aW50PiA+ID4Kc3FyKFJhbmdlIGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfc3FyPGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAog
ICAgX2J6X3NxcjxQX251bXR5cGUxPiA+ID4Kc3FyKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBfYnpfc3FyPFBf
bnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpKSk7Cn0KCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgX2J6X3NxcnQ8UF9udW10eXBlMT4gPiA+CnNxcnQoY29uc3QgVmVjdG9yPFBfbnVt
dHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9zcXJ0PFBfbnVtdHlwZTE+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfc3FydDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZT4gPiA+CnNxcnQoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9z
cXJ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X3NxcnQ8UF9udW10eXBlMT4gPiA+CnNxcnQoY29u
c3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJV
bmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X3NxcnQ8
UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8UmFuZ2UsCiAgICBfYnpfc3FydDxpbnQ+ID4gPgpzcXJ0KFJhbmdlIGQxKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfc3FydDxpbnQ+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwKICAgIF9iel9zcXJ0PFBfbnVtdHlwZTE+ID4gPgpzcXJ0KGNvbnN0IFRpbnlWZWN0b3I8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFy
eU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBf
Ynpfc3FydDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgIF9iel90YW48UF9udW10eXBlMT4gPiA+CnRhbihjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X3RhbjxQX251bXR5cGUxPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkp
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6X3RhbjwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZT4gPiA+CnRhbihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAg
X2J6X3RhbjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel90YW48UF9udW10eXBlMT4gPiA+CnRhbihj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfdGFu
PFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFy
eU9wPFJhbmdlLAogICAgX2J6X3RhbjxpbnQ+ID4gPgp0YW4oUmFuZ2UgZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9iel90YW48aW50PiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sCiAgICBfYnpfdGFuPFBfbnVtdHlwZTE+ID4gPgp0YW4oY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel90
YW48UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sCiAgICBfYnpfdGFuaDxQX251bXR5cGUxPiA+ID4KdGFuaChjb25zdCBWZWN0b3I8
UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X3Rhbmg8UF9udW10eXBlMT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
VW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel90YW5oPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlPiA+ID4KdGFuaChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAg
X2J6X3Rhbmg8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfdGFuaDxQX251bXR5cGUxPiA+ID4KdGFu
aChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpf
dGFuaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
VW5hcnlPcDxSYW5nZSwKICAgIF9iel90YW5oPGludD4gPiA+CnRhbmgoUmFuZ2UgZDEpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9iel90YW5oPGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0K
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LAogICAgX2J6X3Rhbmg8UF9udW10eXBlMT4gPiA+CnRhbmgoY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAg
ICAgIF9iel90YW5oPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgogCgoKCiMgMjU0OSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3VvcHMuY2MiCgoKIAoKCgoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfeTA8UF9udW10eXBlMT4gPiA+
CnkwKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfeTA8UF9u
dW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel95MDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CnkwKF9iel9WZWNFeHByPFBfZXhwcjE+
IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIx
PiwKICAgICAgICBfYnpfeTA8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfeTA8UF9udW10eXBlMT4g
PiA+CnkwKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAg
IF9iel95MDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel95MDxpbnQ+ID4gPgp5MChSYW5nZSBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X3kwPGludD4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LAogICAgX2J6X3kwPFBfbnVtdHlwZTE+ID4gPgp5MChjb25zdCBUaW55VmVjdG9yPFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlP
cDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6
X3kwPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgoKIAoKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMT4sCiAgICBfYnpfeTE8UF9udW10eXBlMT4gPiA+CnkxKGNvbnN0IFZlY3RvcjxQ
X251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfeTE8UF9udW10eXBlMT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel95MTwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZT4gPiA+CnkxKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfeTE8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMT4sCiAgICBfYnpfeTE8UF9udW10eXBlMT4gPiA+CnkxKGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel95MTxQX251bXR5cGUx
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwK
ICAgIF9iel95MTxpbnQ+ID4gPgp5MShSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X3kxPGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X3kx
PFBfbnVtdHlwZTE+ID4gPgp5MShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X3kxPFBfbnVtdHlwZTE+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
KSk7Cn0KCgoKfSAKCgojIDI4OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2Js
aXR6L3ZlY2V4cHIuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovdmVjYmZuLmNjIiAxCgojZGVmaW5lIEJaX1ZFQ0JGTl9ICgoKCgoKbmFtZXNwYWNlICBi
bGl0eiAgeyAKCiAKCn0gCgoKCiMgMjkwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovdmVjZXhwci5oIiAyCgoKCiMgMzkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei92ZWNwaWNrLmNjIiAyCgoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgog
CgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9leHByLCBjbGFz
cyBQX3VwZGF0ZXI+CmlubGluZQp2b2lkIFZlY3RvclBpY2s8UF9udW10eXBlPjo6X2J6X2Fzc2ln
bihQX2V4cHIgZXhwciwgUF91cGRhdGVyKQp7CiAgICAgOwoKICAgICAKICAgICAKICAgICAKICAg
IGlmIChfYnpfaGFzRmFzdEFjY2VzcygpICYmIGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAg
IHsKCiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAg
UF91cGRhdGVyOjp1cGRhdGUodmVjdG9yXyhpbmRleF8oaSkpLCBleHByLl9iel9mYXN0QWNjZXNz
KGkpKTsKIyA4MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3Bp
Y2suY2MiCgogICAgfQogICAgZWxzZSB7CiAgICAgICAgIAogICAgICAgICAKICAgICAgICBmb3Ig
KGludCBpPTA7IGkgPCBsZW5ndGgoKTsgKytpKQogICAgICAgICAgICBQX3VwZGF0ZXI6OnVwZGF0
ZSh2ZWN0b3JfW2luZGV4X1tpXV0sIGV4cHJbaV0pOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10
eXBlPiYgClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3I9KF9iel9WZWNFeHByPFBfZXhw
cj4gZXhwcikKewogICAgIDsKCiAgICAgCiAgICAgCiAgICAgCiAgICBpZiAoX2J6X2hhc0Zhc3RB
Y2Nlc3MoKSAmJiBleHByLl9iel9oYXNGYXN0QWNjZXNzKCkpCiAgICB7CgogICAgICAgIGZvciAo
aW50IGk9MDsgaSA8IGxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICgqdGhpcykoaSkgPSBleHBy
Ll9iel9mYXN0QWNjZXNzKGkpOwojIDEyMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L3ZlY3BpY2suY2MiCgogICAgfQogICAgZWxzZSB7CiAgICAgICAgIAogICAgICAg
ICAKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGgoKTsgKytpKQogICAgICAgICAgICAo
KnRoaXMpW2ldID0gZXhwcltpXTsKICAgIH0KICAgIHJldHVybiAqdGhpczsKfQoKCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUgVmVjdG9yUGlj
azxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcis9KF9iel9WZWNF
eHByPFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpfcGx1c191cGRhdGU8
UF9udW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3Mg
UF9leHByPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5
cGU+OjpvcGVyYXRvci09KF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2ln
bihleHByLCBfYnpfbWludXNfdXBkYXRlPFBfbnVtdHlwZSwKICAgICAgICB0eXBlbmFtZSAgUF9l
eHByOjpUX251bXR5cGU+KCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10
eXBlPiYgClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IqPShfYnpfVmVjRXhwcjxQX2V4
cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X211bHRpcGx5X3VwZGF0ZTxQX251
bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAgIHJldHVy
biAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIApWZWN0b3JQaWNrPFBfbnVtdHlwZT46
Om9wZXJhdG9yLz0oX2J6X1ZlY0V4cHI8UF9leHByPiBleHByKQp7CiAgICBfYnpfYXNzaWduKGV4
cHIsIF9iel9kaXZpZGVfdXBkYXRlPFBfbnVtdHlwZSwKICAgICAgICB0eXBlbmFtZSAgUF9leHBy
OjpUX251bXR5cGU+KCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBl
PiYgClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IlPShfYnpfVmVjRXhwcjxQX2V4cHI+
IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X21vZF91cGRhdGU8UF9udW10eXBlLAog
ICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICByZXR1cm4gKnRoaXM7
Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxp
bmUgVmVjdG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRv
cl49KF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpf
eG9yX3VwZGF0ZTxQX251bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBl
PigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIApWZWN0b3JQ
aWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yJj0oX2J6X1ZlY0V4cHI8UF9leHByPiBleHByKQp7CiAg
ICBfYnpfYXNzaWduKGV4cHIsIF9iel9iaXRhbmRfdXBkYXRlPFBfbnVtdHlwZSwKICAgICAgICB0
eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+KCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFZlY3Rv
clBpY2s8UF9udW10eXBlPiYgClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3J8PShfYnpf
VmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X2JpdG9yX3Vw
ZGF0ZTxQX251bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsK
ICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIApWZWN0b3JQaWNrPFBf
bnVtdHlwZT46Om9wZXJhdG9yPj49KF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikKewogICAgX2J6
X2Fzc2lnbihleHByLCBfYnpfc2hpZnRyX3VwZGF0ZTxQX251bXR5cGUsCiAgICAgICAgdHlwZW5h
bWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBWZWN0b3JQaWNr
PFBfbnVtdHlwZT4mIApWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yPDw9KF9iel9WZWNF
eHByPFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpfc2hpZnRsX3VwZGF0
ZTxQX251bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAg
IHJldHVybiAqdGhpczsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBW
ZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3I9KFBf
bnVtdHlwZSB4KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByQ29uc3RhbnQ8UF9udW10eXBlPiBU
X2V4cHI7CiAgICAoKnRoaXMpID0gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwogICAg
cmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3JQ
aWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IrPShQX251bXR5
cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHBy
OwogICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvclBpY2s8
UF9udW10eXBlPiYgVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvci09KFBfbnVtdHlwZSB4
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByQ29uc3RhbnQ8UF9udW10eXBlPiBUX2V4cHI7CiAg
ICAoKnRoaXMpIC09IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKHgpKTsKICAgIHJldHVybiAq
dGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yUGljazxQX251
bXR5cGU+JiBWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yKj0oUF9udW10eXBlIHgpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJDb25zdGFudDxQX251bXR5cGU+IFRfZXhwcjsKICAgICgq
dGhpcykgKj0gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwogICAgcmV0dXJuICp0aGlz
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlw
ZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IvPShQX251bXR5cGUgeCkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlz
KSAvPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0K
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYg
VmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvciU9KFBfbnVtdHlwZSB4KQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByQ29uc3RhbnQ8UF9udW10eXBlPiBUX2V4cHI7CiAgICAoKnRoaXMpICU9
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKHgpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiBWZWN0
b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yXj0oUF9udW10eXBlIHgpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJDb25zdGFudDxQX251bXR5cGU+IFRfZXhwcjsKICAgICgqdGhpcykgXj0gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBp
Y2s8UF9udW10eXBlPjo6b3BlcmF0b3ImPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAmPSBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYgVmVjdG9yUGljazxQ
X251bXR5cGU+OjpvcGVyYXRvcnw9KFBfbnVtdHlwZSB4KQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByQ29uc3RhbnQ8UF9udW10eXBlPiBUX2V4cHI7CiAgICAoKnRoaXMpIHw9IF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKHgpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiBWZWN0b3JQaWNrPFBfbnVt
dHlwZT46Om9wZXJhdG9yPj49KGludCB4KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByQ29uc3Rh
bnQ8aW50PiBUX2V4cHI7CiAgICAoKnRoaXMpID4+PSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5s
aW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYgVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRv
cjw8PShpbnQgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4g
VF9leHByOwogICAgKCp0aGlzKSA8PD0gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwog
ICAgcmV0dXJuICp0aGlzOwp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYgClZlY3Rv
clBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3I9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkK
ewogICAgKCp0aGlzKSA9IF9iel9WZWNFeHByPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiA+
KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBl
PiYKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcis9KGNvbnN0IFZlY3RvcjxQX251bXR5
cGUyPiYgeCkKewogICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMj4gPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNr
PFBfbnVtdHlwZT4mClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3ItPShjb25zdCBWZWN0
b3I8UF9udW10eXBlMj4mIHgpCnsKICAgICgqdGhpcykgLT0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUg
VmVjdG9yUGljazxQX251bXR5cGU+JgpWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yKj0o
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpICo9IF9iel9WZWNFeHBy
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiA+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYKVmVjdG9yUGljazxQX251bXR5cGU+Ojpv
cGVyYXRvci89KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSAvPSBf
YnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4gPih4LmJlZ2luKCkpOwogICAg
cmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mClZlY3RvclBpY2s8UF9u
dW10eXBlPjo6b3BlcmF0b3IlPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIHgpCnsKICAgICgq
dGhpcykgJT0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdp
bigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JgpWZWN0
b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yXj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4
KQp7CiAgICAoKnRoaXMpIF49IF9iel9WZWNFeHByPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
PiA+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10
eXBlPiYKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvciY9KGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSAmPSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4gPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQ
aWNrPFBfbnVtdHlwZT4mClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3J8PShjb25zdCBW
ZWN0b3I8UF9udW10eXBlMj4mIHgpCnsKICAgICgqdGhpcykgfD0gX2J6X1ZlY0V4cHI8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUgVmVjdG9yUGljazxQX251bXR5cGU+JgpWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9y
PDw9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSA8PD0gX2J6X1Zl
Y0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdpbigpKTsKICAgIHJldHVy
biAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JgpWZWN0b3JQaWNrPFBfbnVtdHlw
ZT46Om9wZXJhdG9yPj49KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlz
KSA+Pj0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdpbigp
KTsKICAgIHJldHVybiAqdGhpczsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+Cmlu
bGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0
b3I9KFJhbmdlIHIpCnsKICAgICgqdGhpcykgPSBfYnpfVmVjRXhwcjxSYW5nZT4ocik7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvclBp
Y2s8UF9udW10eXBlPiYgVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcis9KFJhbmdlIHIp
CnsKICAgICgqdGhpcykgKz0gX2J6X1ZlY0V4cHI8UmFuZ2U+KHIpOwogICAgcmV0dXJuICp0aGlz
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlw
ZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3ItPShSYW5nZSByKQp7CiAgICAoKnRo
aXMpIC09IF9iel9WZWNFeHByPFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiBWZWN0b3JQ
aWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yKj0oUmFuZ2UgcikKewogICAgKCp0aGlzKSAqPSBfYnpf
VmVjRXhwcjxSYW5nZT4ocik7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYgVmVjdG9yUGljazxQX251bXR5
cGU+OjpvcGVyYXRvci89KFJhbmdlIHIpCnsKICAgICgqdGhpcykgLz0gX2J6X1ZlY0V4cHI8UmFu
Z2U+KHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+Cmlu
bGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0
b3IlPShSYW5nZSByKQp7CiAgICAoKnRoaXMpICU9IF9iel9WZWNFeHByPFJhbmdlPihyKTsKICAg
IHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9y
UGljazxQX251bXR5cGU+JiBWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yXj0oUmFuZ2Ug
cikKewogICAgKCp0aGlzKSBePSBfYnpfVmVjRXhwcjxSYW5nZT4ocik7CiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10
eXBlPiYgVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvciY9KFJhbmdlIHIpCnsKICAgICgq
dGhpcykgJj0gX2J6X1ZlY0V4cHI8UmFuZ2U+KHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3Rv
clBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3J8PShSYW5nZSByKQp7CiAgICAoKnRoaXMpIHw9IF9i
el9WZWNFeHByPFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiBWZWN0b3JQaWNrPFBfbnVt
dHlwZT46Om9wZXJhdG9yPj49KFJhbmdlIHIpCnsKICAgICgqdGhpcykgPj49IF9iel9WZWNFeHBy
PFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
PgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiBWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9w
ZXJhdG9yPDw9KFJhbmdlIHIpCnsKICAgICgqdGhpcykgPDw9IF9iel9WZWNFeHByPFJhbmdlPihy
KTsKICAgIHJldHVybiAqdGhpczsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZl
Y3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3I9KGNvbnN0IAogICAgVmVjdG9yUGljazxQX251
bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
IFRfZXhwcjsKICAgICgqdGhpcykgPSBfYnpfVmVjRXhwcjxUX2V4cHI+KHguYmVnaW4oKSk7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYgVmVjdG9yUGljazxQ
X251bXR5cGU+OjpvcGVyYXRvcis9KGNvbnN0CiAgICBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB4
KQp7CiAgICB0eXBlZGVmIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4gVF9leHByOwog
ICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxUX2V4cHI+KHguYmVnaW4oKSk7CiAgICByZXR1cm4g
KnRoaXM7Cn0KCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBl
Pjo6b3BlcmF0b3ItPShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAg
dHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgqdGhp
cykgLT0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0
b3IqPShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgqdGhpcykgKj0gX2J6
X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0
b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IvPShjb25z
dAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgqdGhpcykgLz0gX2J6X1ZlY0V4cHI8
VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBf
bnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IlPShjb25zdAogICAgVmVj
dG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgqdGhpcykgJT0gX2J6X1ZlY0V4cHI8VF9leHByPih4
LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+
IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4m
IFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3JePShjb25zdAogICAgVmVjdG9yUGljazxQ
X251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+IFRfZXhwcjsKICAgICgqdGhpcykgXj0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkp
OwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBp
Y2s8UF9udW10eXBlPjo6b3BlcmF0b3ImPShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5cGUy
PiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhw
cjsKICAgICgqdGhpcykgJj0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0
dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10
eXBlPjo6b3BlcmF0b3J8PShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewog
ICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgq
dGhpcykgfD0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlz
Owp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9kaXN0
cmlidXRpb24+ClZlY3RvclBpY2s8UF9udW10eXBlPiYgClZlY3RvclBpY2s8UF9udW10eXBlPjo6
b3BlcmF0b3I9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgPSBf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwclJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4gPiAKICAgICAgICAo
X2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhp
czsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1
dGlvbj4KVmVjdG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVy
YXRvcis9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgKz0gX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6
X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlv
bj4KVmVjdG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRv
ci09KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgLT0gX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1Zl
Y0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4K
VmVjdG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcio9
KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgKj0gX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4
cHJSYW5kb208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVj
dG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvci89KFJh
bmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgLz0gX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4cHJS
YW5kb208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVjdG9y
UGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvciU9KFJhbmRv
bTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgJT0gX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4cHJSYW5k
b208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVjdG9yUGlj
azxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcl49KFJhbmRvbTxQ
X2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgXj0gX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4cHJSYW5kb208
UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVjdG9yUGljazxQ
X251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvciY9KFJhbmRvbTxQX2Rp
c3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgJj0gX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4cHJSYW5kb208UF9k
aXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVjdG9yUGljazxQX251
bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcnw9KFJhbmRvbTxQX2Rpc3Ry
aWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgfD0gX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJS
YW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0
cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKfSAKCgojIDMyMSAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3BpY2suaCIgMgoKIyAxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjcGlja2lvLmNjIiAxCiAKCgoK
CgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDUElDS0lPX0NDCgoKCgoKbmFtZXNwYWNlICBibGl0
eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4Kb3N0cmVhbSYgb3BlcmF0b3I8PChvc3Ry
ZWFtJiBvcywgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7CiAgICBWZWN0b3I8UF9u
dW10eXBlPiB5KHgubGVuZ3RoKCkpOwogICAgeSA9IHg7CiAgICBvcyA8PCB5OwogICAgcmV0dXJu
IG9zOwp9Cgp9IAoKCiMgMzIyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovdmVjcGljay5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9i
bGl0ei92ZWNwaWNraXRlci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1ZFQ1BJQ0tJVEVSX0gKCgoKCgpuYW1lc3BhY2UgIGJs
aXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpjbGFzcyBWZWN0b3JQaWNrSXRlciB7
CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZSAgVF9udW10eXBlOwoKICAgIGV4cGxpY2l0
ICBWZWN0b3JQaWNrSXRlcihWZWN0b3JQaWNrPFRfbnVtdHlwZT4mIHgpCiAgICAgICAgOiBkYXRh
Xyh4LnZlY3RvcigpLmRhdGEoKSksIGluZGV4Xyh4LmluZGV4U2V0KCkuZGF0YSgpKQogICAgewog
ICAgICAgIGRhdGFTdHJpZGVfICA9IHgudmVjdG9yKCkuc3RyaWRlKCk7CiAgICAgICAgaW5kZXhT
dHJpZGVfID0geC5pbmRleFNldCgpLnN0cmlkZSgpOwogICAgICAgIGxlbmd0aF8gPSB4LmluZGV4
U2V0KCkubGVuZ3RoKCk7CiAgICB9CgoKICAgIFZlY3RvclBpY2tJdGVyKGNvbnN0IFZlY3RvclBp
Y2tJdGVyPFRfbnVtdHlwZT4mIHgpCiAgICB7CiAgICAgICAgZGF0YV8gPSB4LmRhdGFfOwogICAg
ICAgIGluZGV4XyA9IHguaW5kZXhfOwogICAgICAgIGRhdGFTdHJpZGVfID0geC5kYXRhU3RyaWRl
XzsKICAgICAgICBpbmRleFN0cmlkZV8gPSB4LmluZGV4U3RyaWRlXzsKICAgICAgICBsZW5ndGhf
ID0geC5sZW5ndGhfOwogICAgfQoKCiAgICBUX251bXR5cGUgb3BlcmF0b3JbXShpbnQgaSkgY29u
c3QKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBkYXRhX1tkYXRhU3RyaWRlXyAqIGlu
ZGV4X1tpICogaW5kZXhTdHJpZGVfXV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcltd
KGludCBpKQogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2RhdGFTdHJpZGVf
ICogaW5kZXhfW2kgKiBpbmRleFN0cmlkZV9dXTsKICAgIH0KCiAgICBpbnQgbGVuZ3RoKGludCkg
Y29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF87IH0KCiAgICBpbnQgX2J6X3N1Z2dlc3RMZW5ndGgo
KSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoXzsgfQoKICAgIGJvb2wgIGlzVW5pdFN0cmlkZSgp
IGNvbnN0CiAgICB7IHJldHVybiAoZGF0YVN0cmlkZV8gID09IDEpICYmIChpbmRleFN0cmlkZV8g
PT0gMSk7IH0KCiAgICBib29sICBfYnpfaGFzRmFzdEFjY2VzcygpIGNvbnN0CiAgICB7IHJldHVy
biBpc1VuaXRTdHJpZGUoKTsgfQoKICAgIFRfbnVtdHlwZSBfYnpfZmFzdEFjY2VzcyhpbnQgaSkg
Y29uc3QKICAgIHsgICAgCiAgICAgICAgIHJldHVybiBkYXRhX1tpbmRleF9baV1dOwogICAgfQoK
ICAgIFRfbnVtdHlwZSYgIF9iel9mYXN0QWNjZXNzKGludCBpKQogICAgewogICAgICAgICByZXR1
cm4gZGF0YV9baW5kZXhfW2ldXTsKICAgIH0KCiAgICBlbnVtIHsgX2J6X3N0YXRpY0xlbmd0aENv
dW50ID0gMCwKICAgICAgICAgICBfYnpfZHluYW1pY0xlbmd0aENvdW50ID0gMSwKICAgICAgICAg
ICBfYnpfc3RhdGljTGVuZ3RoID0gMCB9OwoKcHJpdmF0ZToKICAgIFRfbnVtdHlwZSAqIF9fcmVz
dHJpY3RfXyAgZGF0YV87CiAgICBpbnQgZGF0YVN0cmlkZV87CiAgICBjb25zdCBpbnQgKiBfX3Jl
c3RyaWN0X18gIGluZGV4XzsKICAgIGludCBpbmRleFN0cmlkZV87CiAgICBpbnQgbGVuZ3RoXzsK
fTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgVmVjdG9yUGlja0l0ZXJDb25zdCB7
CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZSAgVF9udW10eXBlOwoKICAgIGV4cGxpY2l0
ICBWZWN0b3JQaWNrSXRlckNvbnN0KGNvbnN0IFZlY3RvclBpY2s8VF9udW10eXBlPiYgeCkKICAg
ICAgICA6IGRhdGFfKHgudmVjdG9yKCkuZGF0YSgpKSwgaW5kZXhfKHguaW5kZXhTZXQoKS5kYXRh
KCkpCiAgICB7CiAgICAgICAgZGF0YVN0cmlkZV8gID0geC52ZWN0b3IoKS5zdHJpZGUoKTsKICAg
ICAgICBpbmRleFN0cmlkZV8gPSB4LmluZGV4U2V0KCkuc3RyaWRlKCk7CiAgICAgICAgbGVuZ3Ro
XyA9IHguaW5kZXhTZXQoKS5sZW5ndGgoKTsKICAgIH0KCgogICAgVmVjdG9yUGlja0l0ZXJDb25z
dChjb25zdCBWZWN0b3JQaWNrSXRlckNvbnN0PFRfbnVtdHlwZT4mIHgpCiAgICB7CiAgICAgICAg
ZGF0YV8gPSB4LmRhdGFfOwogICAgICAgIGluZGV4XyA9IHguaW5kZXhfOwogICAgICAgIGRhdGFT
dHJpZGVfID0geC5kYXRhU3RyaWRlXzsKICAgICAgICBpbmRleFN0cmlkZV8gPSB4LmluZGV4U3Ry
aWRlXzsKICAgICAgICBsZW5ndGhfID0geC5sZW5ndGhfOwogICAgfQoKCiAgICBUX251bXR5cGUg
b3BlcmF0b3JbXShpbnQgaSkgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBk
YXRhX1tkYXRhU3RyaWRlXyAqIGluZGV4X1tpICogaW5kZXhTdHJpZGVfXV07CiAgICB9CgogICAg
aW50IGxlbmd0aChpbnQpIGNvbnN0CiAgICB7IHJldHVybiBsZW5ndGhfOyB9CgogICAgaW50IF9i
el9zdWdnZXN0TGVuZ3RoKCkgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF87IH0KCiAgICBib29s
ICBpc1VuaXRTdHJpZGUoKSBjb25zdAogICAgeyByZXR1cm4gKGRhdGFTdHJpZGVfICA9PSAxKSAm
JiAoaW5kZXhTdHJpZGVfID09IDEpOyB9CgogICAgYm9vbCAgX2J6X2hhc0Zhc3RBY2Nlc3MoKSBj
b25zdAogICAgeyByZXR1cm4gaXNVbml0U3RyaWRlKCk7IH0KCiAgICBUX251bXR5cGUgX2J6X2Zh
c3RBY2Nlc3MoaW50IGkpIGNvbnN0CiAgICB7CiAgICAgICAgIHJldHVybiBkYXRhX1tpbmRleF9b
aV1dOwogICAgfQoKICAgIGVudW0geyBfYnpfc3RhdGljTGVuZ3RoQ291bnQgPSAwLAogICAgICAg
ICAgIF9iel9keW5hbWljTGVuZ3RoQ291bnQgPSAxLAogICAgICAgICAgIF9iel9zdGF0aWNMZW5n
dGggPSAwIH07Cgpwcml2YXRlOgogICAgY29uc3QgVF9udW10eXBlICogX19yZXN0cmljdF9fICBk
YXRhXzsKICAgIGludCBkYXRhU3RyaWRlXzsKICAgIGNvbnN0IGludCAqIF9fcmVzdHJpY3RfXyAg
aW5kZXhfOwogICAgaW50IGluZGV4U3RyaWRlXzsKICAgIGludCBsZW5ndGhfOwp9OwoKfSAKCgoK
IyAzMjMgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNwaWNrLmgi
IDIKCgoKIyA0OTUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0
b3IuaCIgMgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Zl
Y2dsb2JzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
I2RlZmluZSBCWl9WRUNHTE9CU19ICgoKCgoKCgoKCgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9leHRyZW11bS5oIiAxCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfRVhUUkVNVU1fSAoKCgoKCm5h
bWVzcGFjZSAgYmxpdHogIHsgCgogCiAKIAogCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBj
bGFzcyBQX2luZGV4PgpjbGFzcyBFeHRyZW11bSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10
eXBlIFRfbnVtdHlwZTsKICAgIHR5cGVkZWYgUF9pbmRleCAgIFRfaW5kZXg7CgogICAgRXh0cmVt
dW0oVF9udW10eXBlIHZhbHVlLCBUX2luZGV4IGluZGV4KQogICAgICAgIDogdmFsdWVfKHZhbHVl
KSwgaW5kZXhfKGluZGV4KQogICAgeyB9CgogICAgVF9udW10eXBlIHZhbHVlKCkgY29uc3QKICAg
IHsgcmV0dXJuIHZhbHVlXzsgfQoKICAgIFRfaW5kZXggaW5kZXgoKSBjb25zdAogICAgeyByZXR1
cm4gaW5kZXhfOyB9CgogICAgdm9pZCBzZXRWYWx1ZShUX251bXR5cGUgdmFsdWUpCiAgICB7IHZh
bHVlXyA9IHZhbHVlOyB9CgogICAgdm9pZCBzZXRJbmRleChUX2luZGV4IGluZGV4KQogICAgeyBp
bmRleF8gPSBpbmRleDsgfQoKICAgIG9wZXJhdG9yIFRfbnVtdHlwZSgpIGNvbnN0CiAgICB7IHJl
dHVybiB2YWx1ZV87IH0KCnByb3RlY3RlZDoKICAgIFRfbnVtdHlwZSB2YWx1ZV87CiAgICBUX2lu
ZGV4IGluZGV4XzsKfTsKCn0gCgoKCiMgNjAgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei92ZWNnbG9icy5oIiAyCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKfSAKCiMg
MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY2dsb2JzLmNjIiAx
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDR0xPQlNfQ0MKCgoKCgojIDEgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNhY2N1bS5jYyIgMQogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1ZFQ0FDQ1VNX0NDCgoKCgoKbmFtZXNwYWNl
ICBibGl0eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFA+CmlubGluZQpWZWN0b3I8IHR5cGVuYW1lICBO
dW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIFA6OlRfbnVtdHlwZSA+OjpUX3N1bXR5cGUgPiBf
YnpfdmVjX2FjY3VtdWxhdGUoUCBleHByKQp7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBOdW1lcmlj
VHlwZVRyYWl0czwgdHlwZW5hbWUgIFA6OlRfbnVtdHlwZSA+OjpUX3N1bXR5cGUgIFRfc3VtdHlw
ZTsKICAgIGludCBsZW5ndGggPSBleHByLl9iel9zdWdnZXN0TGVuZ3RoKCk7CiAgICBWZWN0b3I8
VF9zdW10eXBlPiB6KGxlbmd0aCk7CiAgICBUX3N1bXR5cGUgc3VtID0gMDsKCiAgICBpZiAoZXhw
ci5fYnpfaGFzRmFzdEFjY2VzcygpKQogICAgewogICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGxl
bmd0aDsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgc3VtICs9IGV4cHIuX2J6X2Zhc3RBY2Nl
c3MoaSk7CiAgICAgICAgICAgIHpbaV0gPSBzdW07CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7
CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgewogICAgICAg
ICAgICBzdW0gKz0gZXhwcihpKTsKICAgICAgICAgICAgeltpXSA9IHN1bTsKICAgICAgICB9CiAg
ICB9CgogICAgcmV0dXJuIHo7Cn0KdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpWZWN0b3I8IHR5
cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgUF9udW10eXBlID46OlRfc3VtdHlwZSA+IGFjY3Vt
dWxhdGUoY29uc3QgVmVjdG9yPFBfbnVtdHlwZT4mIHgpCnsKICAgIHJldHVybiBfYnpfdmVjX2Fj
Y3VtdWxhdGUoeCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KVmVjdG9yPCB0eXBlbmFtZSAg
TnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZSA+OjpUX3N1bXR5
cGUgPgphY2N1bXVsYXRlKF9iel9WZWNFeHByPFBfZXhwcj4geCkKewogICAgcmV0dXJuIF9iel92
ZWNfYWNjdW11bGF0ZSh4KTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpWZWN0b3I8IHR5
cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgUF9udW10eXBlID46OlRfc3VtdHlwZSA+IGFjY3Vt
dWxhdGUoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6X3Zl
Y19hY2N1bXVsYXRlKHgpOwp9Cgp9IAoKCgojIDI3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2luY2x1ZGUvYmxpdHovdmVjZ2xvYnMuY2MiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L3ZlY2RlbHRhLmNjIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiNkZWZpbmUgQlpfVkVDREVMVEFfQ0MKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxh
dGU8Y2xhc3MgUD4KaW5saW5lClZlY3RvcjwgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0
eXBlbmFtZSAgUDo6VF9udW10eXBlID46OlRfZGlmZnR5cGUgPiBfYnpfdmVjX2RlbHRhKFAgZXhw
cikKewogICAgdHlwZWRlZiB0eXBlbmFtZSAgUDo6VF9udW10eXBlICAgVF9udW10eXBlOwogICAg
dHlwZWRlZiB0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IFRfbnVtdHlwZSA+OjpUX2RpZmZ0
eXBlICAgICAgIFRfZGlmZnR5cGU7CgogICAgaW50IGxlbmd0aCA9IGV4cHIuX2J6X3N1Z2dlc3RM
ZW5ndGgoKTsKICAgIFZlY3RvcjxUX2RpZmZ0eXBlPiB6KGxlbmd0aCk7CiAgICBUX251bXR5cGUg
Y3VycmVudEVsZW1lbnQgPSAwOwogICAgVF9udW10eXBlIHByZXZpb3VzRWxlbWVudCA9IDA7Cgog
ICAgaWYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAgIHsKICAgICAgICBmb3IgKGludCBp
PTA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50
ID0gZXhwci5fYnpfZmFzdEFjY2VzcyhpKTsKICAgICAgICAgICAgeltpXSA9IGN1cnJlbnRFbGVt
ZW50IC0gcHJldmlvdXNFbGVtZW50OwogICAgICAgICAgICBwcmV2aW91c0VsZW1lbnQgPSBjdXJy
ZW50RWxlbWVudDsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBmb3IgKGludCBp
PTE7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50
ID0gZXhwcihpKTsKICAgICAgICAgICAgeltpXSA9IGN1cnJlbnRFbGVtZW50IC0gcHJldmlvdXNF
bGVtZW50OwogICAgICAgICAgICBwcmV2aW91c0VsZW1lbnQgPSBjdXJyZW50RWxlbWVudDsKICAg
ICAgICB9CiAgICB9CgogICAgcmV0dXJuIHo7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4K
VmVjdG9yPCB0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IFBfbnVtdHlwZSA+OjpUX2RpZmZ0
eXBlID4gZGVsdGEoY29uc3QgVmVjdG9yPFBfbnVtdHlwZT4mIHgpCnsKICAgIHJldHVybiBfYnpf
dmVjX2RlbHRhKHgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KVmVjdG9yPCB0eXBlbmFt
ZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZSA+OjpUX2Rp
ZmZ0eXBlID4gZGVsdGEoX2J6X1ZlY0V4cHI8UF9leHByPiB4KQp7CiAgICByZXR1cm4gX2J6X3Zl
Y19kZWx0YSh4KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+ClZlY3RvcjwgdHlwZW5h
bWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX251bXR5cGUgPjo6VF9kaWZmdHlwZSA+IGRlbHRhKGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfZGVsdGEo
eCk7Cn0KCn0gCgoKCiMgMjggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0
ei92ZWNnbG9icy5jYyIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovdmVjbWluLmNjIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVD
TUlOX0NDCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4K
aW5saW5lCkV4dHJlbXVtPCB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGUsIGludD4gX2J6X3Zl
Y19taW4oUF9leHByIHZlY3RvcikKewogICAgdHlwZWRlZiB0eXBlbmFtZSAgUF9leHByOjpUX251
bXR5cGUgVF9udW10eXBlOwoKICAgIFRfbnVtdHlwZSBtaW5WYWx1ZSA9IHZlY3RvcigwKTsKICAg
IGludCBtaW5JbmRleCA9IDA7CiAgICBpbnQgbGVuZ3RoID0gdmVjdG9yLl9iel9zdWdnZXN0TGVu
Z3RoKCk7CgogICAgaWYgKHZlY3Rvci5fYnpfaGFzRmFzdEFjY2VzcygpKQogICAgewogICAgICAg
IGZvciAoaW50IGk9MTsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgVF9u
dW10eXBlIHZhbHVlID0gdmVjdG9yLl9iel9mYXN0QWNjZXNzKGkpOwogICAgICAgICAgICBpZiAo
dmFsdWUgPCBtaW5WYWx1ZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbWluVmFsdWUg
PSB2YWx1ZTsKICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gaTsKICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgIGZvciAoaW50IGk9MTsgaSA8IGxlbmd0aDsg
KytpKQogICAgICAgIHsKICAgICAgICAgICAgVF9udW10eXBlIHZhbHVlID0gdmVjdG9yKGkpOwog
ICAgICAgICAgICBpZiAodmFsdWUgPCBtaW5WYWx1ZSkKICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgbWluVmFsdWUgPSB2YWx1ZTsKICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gaTsKICAg
ICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gRXh0cmVtdW08VF9udW10eXBl
LCBpbnQ+KG1pblZhbHVlLCBtaW5JbmRleCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
PgppbmxpbmUKRXh0cmVtdW08UF9udW10eXBlLGludD4gbWluKGNvbnN0IFZlY3RvcjxQX251bXR5
cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4oeC5fYnpfYXNWZWNFeHByKCkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCkV4dHJlbXVtPCB0eXBlbmFtZSAgUF9leHBy
OjpUX251bXR5cGUsaW50PiBtaW4oX2J6X1ZlY0V4cHI8UF9leHByPiB4KQp7CiAgICByZXR1cm4g
X2J6X3ZlY19taW4oeCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKRXh0
cmVtdW08UF9udW10eXBlLCBpbnQ+IG1pbihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIHgp
CnsKICAgIHJldHVybiBfYnpfdmVjX21pbih4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+CmlubGluZQpFeHRyZW11bTxQX251bXR5
cGUsIGludD4gbWluKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mIHgpCnsK
ICAgIHJldHVybiBfYnpfdmVjX21pbih4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKaW50ICBtaW5JbmRleChjb25zdCBWZWN0b3I8UF9udW10
eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWluKHguX2J6X2FzVmVjRXhwcigpKS5pbmRl
eCgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCmludCAgbWluSW5kZXgoX2J6
X1ZlY0V4cHI8UF9leHByPiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4oeCkuaW5kZXgoKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmludCAgbWluSW5kZXgoY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4oeC5fYnpfYXNWZWNF
eHByKCkpLmluZGV4KCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5n
dGg+CmludCBtaW5JbmRleChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JiB4
KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4oeC5fYnpfYXNWZWNFeHByKCkpLmluZGV4KCk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKaW50ICBtaW5WYWx1ZShjb25zdCBW
ZWN0b3I8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWluKHguX2J6X2FzVmVj
RXhwcigpKS52YWx1ZSgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCmludCAg
bWluVmFsdWUoX2J6X1ZlY0V4cHI8UF9leHByPiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4o
eCkudmFsdWUoKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmludCAgbWluVmFsdWUo
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4o
eC5fYnpfYXNWZWNFeHByKCkpLnZhbHVlKCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
LCBpbnQgTl9sZW5ndGg+CmludCAgbWluVmFsdWUoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWluKHguX2J6X2FzVmVjRXhwcigp
KS52YWx1ZSgpOwp9Cgp9IAoKCgojIDI5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovdmVjZ2xvYnMuY2MiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L3ZlY21heC5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5l
IEJaX1ZFQ01BWF9DQwoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHI+CmlubGluZQpFeHRyZW11bTwgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlLCBpbnQ+
IF9iel92ZWNfbWF4KFBfZXhwciB2ZWN0b3IpCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFBfZXhw
cjo6VF9udW10eXBlIFRfbnVtdHlwZTsKCiAgICBUX251bXR5cGUgbWF4VmFsdWUgPSB2ZWN0b3Io
MCk7CiAgICBpbnQgbWF4SW5kZXggPSAwOwogICAgaW50IGxlbmd0aCA9IHZlY3Rvci5fYnpfc3Vn
Z2VzdExlbmd0aCgpOwoKICAgIGlmICh2ZWN0b3IuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAgIHsK
ICAgICAgICBmb3IgKGludCBpPTE7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAg
ICAgIFRfbnVtdHlwZSB2YWx1ZSA9IHZlY3Rvci5fYnpfZmFzdEFjY2VzcyhpKTsKICAgICAgICAg
ICAgaWYgKHZhbHVlID4gbWF4VmFsdWUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG1h
eFZhbHVlID0gdmFsdWU7CiAgICAgICAgICAgICAgICBtYXhJbmRleCA9IGk7CiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBmb3IgKGludCBpPTE7IGkgPCBs
ZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIFRfbnVtdHlwZSB2YWx1ZSA9IHZlY3Rv
cihpKTsKICAgICAgICAgICAgaWYgKHZhbHVlID4gbWF4VmFsdWUpCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgIG1heFZhbHVlID0gdmFsdWU7CiAgICAgICAgICAgICAgICBtYXhJbmRleCA9
IGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEV4dHJlbXVtPFRf
bnVtdHlwZSwgaW50PihtYXhWYWx1ZSwgbWF4SW5kZXgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4KaW5saW5lCkV4dHJlbXVtPFBfbnVtdHlwZSwgaW50PiBtYXgoY29uc3QgVmVjdG9y
PFBfbnVtdHlwZT4mIHgpCnsKICAgIHJldHVybiBfYnpfdmVjX21heCh4Ll9iel9hc1ZlY0V4cHIo
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUKRXh0cmVtdW08IHR5cGVuYW1l
ICBQX2V4cHI6OlRfbnVtdHlwZSxpbnQ+IG1heChfYnpfVmVjRXhwcjxQX2V4cHI+IHgpCnsKICAg
IHJldHVybiBfYnpfdmVjX21heCh4KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+Cmlu
bGluZQpFeHRyZW11bTxQX251bXR5cGUsIGludD4gbWF4KGNvbnN0IFZlY3RvclBpY2s8UF9udW10
eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHguX2J6X2FzVmVjRXhwcigpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4KaW5saW5lCkV4dHJlbXVt
PFBfbnVtdHlwZSwgaW50PgptYXgoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3Ro
PiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHguX2J6X2FzVmVjRXhwcigpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKaW50ICBtYXhJbmRleChjb25zdCBWZWN0
b3I8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHgpLmluZGV4KCk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUKaW50IG1heEluZGV4KF9iel9WZWNFeHBy
PFBfZXhwcj4geCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHguX2J6X2FzVmVjRXhwcigpKS5p
bmRleCgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW50ICBtYXhJbmRleChjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIHgpCnsKICAgIHJldHVybiBfYnpfdmVjX21heCh4Ll9i
el9hc1ZlY0V4cHIoKSkuaW5kZXgoKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGlu
dCBOX2xlbmd0aD4KaW50ICBtYXhJbmRleChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9s
ZW5ndGg+JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19tYXgoeC5fYnpfYXNWZWNFeHByKCkpLmlu
ZGV4KCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKaW50ICBtYXhWYWx1
ZShjb25zdCBWZWN0b3I8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHgu
X2J6X2FzVmVjRXhwcigpKS52YWx1ZSgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5s
aW5lCmludCAgbWF4VmFsdWUoX2J6X1ZlY0V4cHI8UF9leHByPiB4KQp7CiAgICByZXR1cm4gX2J6
X3ZlY19tYXgoeCkudmFsdWUoKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmludCAg
bWF4VmFsdWUoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6
X3ZlY19tYXgoeC5fYnpfYXNWZWNFeHByKCkpLnZhbHVlKCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlLCBpbnQgTl9sZW5ndGg+CmludCAgbWF4VmFsdWUoY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUsIE5fbGVuZ3RoPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHguX2J6X2Fz
VmVjRXhwcigpKS52YWx1ZSgpOwp9Cgp9IAoKCgojIDMwICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovdmVjZ2xvYnMuY2MiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3N1bS5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgojZGVmaW5lIEJaX1ZFQ1NVTV9DQwoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHI+CmlubGluZQp0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVu
YW1lICBQX2V4cHI6OlRfbnVtdHlwZSA+OjpUX3N1bXR5cGUgCl9iel92ZWNfc3VtKFBfZXhwciB2
ZWN0b3IpCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlIFRfbnVtdHlw
ZTsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBUX251bXR5cGUgPjo6
VF9zdW10eXBlICAgICAgICAgICBUX3N1bXR5cGU7CgogICAgVF9zdW10eXBlIHN1bSA9IDA7CiAg
ICBpbnQgbGVuZ3RoID0gdmVjdG9yLl9iel9zdWdnZXN0TGVuZ3RoKCk7CgogICAgaWYgKHZlY3Rv
ci5fYnpfaGFzRmFzdEFjY2VzcygpKQogICAgewogICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGxl
bmd0aDsgKytpKQogICAgICAgICAgICBzdW0gKz0gdmVjdG9yLl9iel9mYXN0QWNjZXNzKGkpOwog
ICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoOyArK2kpCiAg
ICAgICAgICAgIHN1bSArPSB2ZWN0b3IoaSk7CiAgICB9CgogICAgcmV0dXJuIHN1bTsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRz
PCBQX251bXR5cGUgPjo6VF9zdW10eXBlICBzdW0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZT4mIHgp
CnsKICAgIHJldHVybiBfYnpfdmVjX3N1bSh4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0eXBl
bmFtZSAgUF9leHByOjpUX251bXR5cGUgPjo6VF9zdW10eXBlIApzdW0oX2J6X1ZlY0V4cHI8UF9l
eHByPiBleHByKQp7CiAgICByZXR1cm4gX2J6X3ZlY19zdW0oZXhwcik7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX251
bXR5cGUgPjo6VF9zdW10eXBlIApzdW0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7
CiAgICByZXR1cm4gX2J6X3ZlY19zdW0oeC5fYnpfYXNWZWNFeHByKCkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lCnR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlw
ZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX251bXR5cGUgPjo6VF9zdW10eXBlICA+OjpUX2Zs
b2F0dHlwZSAgbWVhbihjb25zdCBWZWN0b3I8UF9udW10eXBlPiYgeCkKewogICAgIDsKCiAgICB0
eXBlZGVmIHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIE51bWVyaWNUeXBl
VHJhaXRzPCBQX251bXR5cGUgPjo6VF9zdW10eXBlICA+OjpUX2Zsb2F0dHlwZSAgVF9mbG9hdHR5
cGU7CiAgICByZXR1cm4gX2J6X3ZlY19zdW0oeC5fYnpfYXNWZWNFeHByKCkpIC8gKFRfZmxvYXR0
eXBlKSB4Lmxlbmd0aCgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCnR5cGVu
YW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0eXBl
bmFtZSAgUF9leHByOjpUX251bXR5cGUgPjo6VF9zdW10eXBlICA+OjpUX2Zsb2F0dHlwZSAKbWVh
bihfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgICA7CgogICAgdHlwZWRlZiB0eXBlbmFt
ZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5h
bWUgIFBfZXhwcjo6VF9udW10eXBlID46OlRfc3VtdHlwZSAgPjo6VF9mbG9hdHR5cGUgIAogICAg
ICAgIFRfZmxvYXR0eXBlOwogICAgcmV0dXJuIF9iel92ZWNfc3VtKGV4cHIpIC8gKFRfZmxvYXR0
eXBlKSBleHByLl9iel9zdWdnZXN0TGVuZ3RoKCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0eXBlbmFtZSAgTnVtZXJp
Y1R5cGVUcmFpdHM8IFBfbnVtdHlwZSA+OjpUX3N1bXR5cGUgID46OlRfZmxvYXR0eXBlIAptZWFu
KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlPiYgeCkKewogICAgIDsKCiAgICB0eXBlZGVmIHR5
cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQ
X251bXR5cGUgPjo6VF9zdW10eXBlICA+OjpUX2Zsb2F0dHlwZSAgVF9mbG9hdHR5cGU7CiAgICBy
ZXR1cm4gX2J6X3ZlY19zdW0oeC5fYnpfYXNWZWNFeHByKCkpIC8gKFRfZmxvYXR0eXBlKSB4Lmxl
bmd0aCgpOwp9Cgp9IAoKCgojIDMxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovdmVjZ2xvYnMuY2MiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L3ZlY2RvdC5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJa
X1ZFQ0RPVF9DQwoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQMSwg
Y2xhc3MgUDI+CmlubGluZQp0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBw
cm9tb3RlX3RyYWl0PCB0eXBlbmFtZSAgUDE6OlRfbnVtdHlwZSAsICB0eXBlbmFtZSAgUDI6OlRf
bnVtdHlwZSA+OjpUX3Byb21vdGUgID46OlRfc3VtdHlwZSAKX2J6X2RvdChQMSB2ZWN0b3IxLCBQ
MiB2ZWN0b3IyKQp7CiAgICAgOwoKICAgIHR5cGVkZWYgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJh
aXRzPCB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgdHlwZW5hbWUgIFAxOjpUX251bXR5cGUgLCAK
ICAgICAgICB0eXBlbmFtZSAgUDI6OlRfbnVtdHlwZSA+OjpUX3Byb21vdGUgID46OlRfc3VtdHlw
ZSAgIFRfc3VtdHlwZTsKCiAgICBUX3N1bXR5cGUgc3VtID0gMDsKICAgIGludCBsZW5ndGggPSB2
ZWN0b3IxLl9iel9zdWdnZXN0TGVuZ3RoKCk7CgogICAgaWYgKHZlY3RvcjEuX2J6X2hhc0Zhc3RB
Y2Nlc3MoKSAmJiB2ZWN0b3IyLl9iel9oYXNGYXN0QWNjZXNzKCkpCiAgICB7CiAgICAgICAgZm9y
IChpbnQgaT0wOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgIHN1bSArPSB2ZWN0b3IxLl9i
el9mYXN0QWNjZXNzKGkpIAogICAgICAgICAgICAgICAgKiB2ZWN0b3IyLl9iel9mYXN0QWNjZXNz
KGkpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoOyAr
K2kpCiAgICAgICAgICAgIHN1bSArPSB2ZWN0b3IxW2ldICogdmVjdG9yMltpXTsKICAgIH0KCiAg
ICByZXR1cm4gc3VtOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0eXBlbmFtZSAgcHJv
bW90ZV90cmFpdDwgUF9udW10eXBlMSAsIFBfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICA+OjpUX3N1
bXR5cGUgCmRvdChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGEsIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgYikKewogICAgcmV0dXJuIF9iel9kb3QoYSwgYik7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCnR5cGVuYW1lICBOdW1lcmljVHlwZVRy
YWl0czwgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUgLCAKICAgIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPjo6VF9wcm9tb3RlICA+OjpU
X3N1bXR5cGUgCmRvdChfYnpfVmVjRXhwcjxQX2V4cHIxPiBleHByMSwgX2J6X1ZlY0V4cHI8UF9l
eHByMj4gZXhwcjIpCnsKICAgIHJldHVybiBfYnpfZG90KGV4cHIxLCBleHByMik7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCnR5cGVuYW1lICBO
dW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUgLCAgUF9udW10eXBlMiA+OjpUX3Byb21vdGUgID46OlRfc3VtdHlwZSAK
ZG90KF9iel9WZWNFeHByPFBfZXhwcjE+IGV4cHIxLCBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4m
IHZlY3RvcjIpCnsKICAgIHJldHVybiBfYnpfZG90KHZlY3RvcjIsIGV4cHIxKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKdHlwZW5hbWUgIE51
bWVyaWNUeXBlVHJhaXRzPCB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgUF9udW10eXBlMSAsICB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID46OlRfcHJvbW90ZSAgPjo6VF9zdW10eXBlIApk
b3QoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiB2ZWN0b3IxLCBfYnpfVmVjRXhwcjxQX2V4cHIy
PiBleHByMikKewogICAgcmV0dXJuIF9iel9kb3QodmVjdG9yMSwgZXhwcjIpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQp0eXBlbmFtZSAg
TnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBQX251bXR5cGUxICwg
IFBfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICA+OjpUX3N1bXR5cGUgCmRvdChjb25zdCBWZWN0b3I8
UF9udW10eXBlMT4mIHZlY3RvcjEsIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHZlY3Rv
cjIpCnsKICAgIHJldHVybiBfYnpfZG90KHZlY3RvcjEsIHZlY3RvcjIpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQp0eXBlbmFtZSAgTnVt
ZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBQX251bXR5cGUxICwgIFBf
bnVtdHlwZTIgPjo6VF9wcm9tb3RlICA+OjpUX3N1bXR5cGUgCmRvdChjb25zdCBWZWN0b3JQaWNr
PFBfbnVtdHlwZTE+JiB2ZWN0b3IxLCBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIHZlY3RvcjIp
CnsKICAgIHJldHVybiBfYnpfZG90KHZlY3RvcjEsIHZlY3RvcjIpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQp0eXBlbmFtZSAgTnVtZXJp
Y1R5cGVUcmFpdHM8IHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBQX251bXR5cGUxICwgIFBfbnVt
dHlwZTIgPjo6VF9wcm9tb3RlICA+OjpUX3N1bXR5cGUgCmRvdChjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiB2ZWN0b3IxLCBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB2ZWN0b3Iy
KQp7CiAgICByZXR1cm4gX2J6X2RvdCh2ZWN0b3IxLCB2ZWN0b3IyKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNU
eXBlVHJhaXRzPCB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSAsICBQX251bXR5cGUyID46OlRfcHJvbW90ZSAgPjo6VF9zdW10eXBlIApkb3QoX2J6
X1ZlY0V4cHI8UF9leHByMT4gZXhwcjEsIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHZl
Y3RvcjIpCnsKICAgIHJldHVybiBfYnpfZG90KGV4cHIxLCB2ZWN0b3IyKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKdHlwZW5hbWUgIE51bWVy
aWNUeXBlVHJhaXRzPCB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgUF9udW10eXBlMSAsICB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID46OlRfcHJvbW90ZSAgPjo6VF9zdW10eXBlIApkb3Qo
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgdmVjdG9yMSwgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4gZXhwcjIpCnsKICAgIHJldHVybiBfYnpfZG90KHZlY3RvcjEsIGV4cHIyKTsKfQoKfSAKCgoK
IyAzMiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY2dsb2JzLmNj
IiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNub3Jt
LmNjIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDTk9STV9DQwoKCgoK
Cm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZQp0eXBl
bmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlw
ZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlID46OlRfc3VtdHlwZSAgPjo6VF9mbG9hdHR5cGUgCl9i
el92ZWNfbm9ybShQX2V4cHIgdmVjdG9yKQp7CiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAg
CiAgICB0eXBlZGVmIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZSBUX251bXR5cGU7CiAgICB0
eXBlZGVmIHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgVF9udW10eXBlID46OlRfc3VtdHlw
ZSAgICAgICAgICAgVF9zdW10eXBlOwogICAgdHlwZWRlZiB0eXBlbmFtZSAgTnVtZXJpY1R5cGVU
cmFpdHM8IFRfc3VtdHlwZSA+OjpUX2Zsb2F0dHlwZSAgICAgICAgIFRfZmxvYXR0eXBlOwoKICAg
IFRfc3VtdHlwZSBzdW0gPSAwOwogICAgaW50IGxlbmd0aCA9IHZlY3Rvci5fYnpfc3VnZ2VzdExl
bmd0aCgpOwoKICAgIGlmICh2ZWN0b3IuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAgIHsKICAgICAg
ICBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIFRf
bnVtdHlwZSB2YWx1ZSA9IHZlY3Rvci5fYnpfZmFzdEFjY2VzcyhpKTsKICAgICAgICAgICAgc3Vt
ICs9IHZhbHVlICogVF9zdW10eXBlKHZhbHVlKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsK
ICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAg
ICAgIFRfbnVtdHlwZSB2YWx1ZSA9IHZlY3RvcihpKTsKICAgICAgICAgICAgc3VtICs9IHZhbHVl
ICogVF9zdW10eXBlKHZhbHVlKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIF9iel9zcXJ0
PFRfZmxvYXR0eXBlPjo6YXBwbHkoc3VtKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpp
bmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0eXBlbmFtZSAgTnVtZXJpY1R5cGVU
cmFpdHM8IFBfbnVtdHlwZSA+OjpUX3N1bXR5cGUgID46OlRfZmxvYXR0eXBlICBub3JtKGNvbnN0
IFZlY3RvcjxQX251bXR5cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19ub3JtKHguX2J6X2Fz
VmVjRXhwcigpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZQp0eXBlbmFtZSAg
TnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUg
IFBfZXhwcjo6VF9udW10eXBlID46OlRfc3VtdHlwZSAgPjo6VF9mbG9hdHR5cGUgCm5vcm0oX2J6
X1ZlY0V4cHI8UF9leHByPiBleHByKQp7CiAgICByZXR1cm4gX2J6X3ZlY19ub3JtKGV4cHIpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lCnR5cGVuYW1lICBOdW1lcmljVHlw
ZVRyYWl0czwgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX251bXR5cGUgPjo6VF9zdW10
eXBlICA+OjpUX2Zsb2F0dHlwZSAKbm9ybShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIHgp
CnsKICAgIHJldHVybiBfYnpfdmVjX25vcm0oeC5fYnpfYXNWZWNFeHByKCkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fZGltZW5zaW9ucz4KaW5saW5lCnR5cGVuYW1lICBO
dW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX251bXR5cGUg
Pjo6VF9zdW10eXBlICA+OjpUX2Zsb2F0dHlwZSAKbm9ybShjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZSwgTl9kaW1lbnNpb25zPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbm9ybSh4Ll9iel9h
c1ZlY0V4cHIoKSk7Cn0KCn0gCgoKCiMgMzMgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei92ZWNnbG9icy5jYyIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2luY2x1ZGUvYmxpdHovdmVjbm9ybTEuY2MiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2Rl
ZmluZSBCWl9WRUNOT1JNMV9DQwoKCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcj4KaW5saW5lCnR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5h
bWUgIFBfZXhwcjo6VF9udW10eXBlID46OlRfc3VtdHlwZSAKX2J6X3ZlY19ub3JtMShQX2V4cHIg
dmVjdG9yKQp7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZSBUX251bXR5
cGU7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgVF9udW10eXBlID46
OlRfc3VtdHlwZSAgICAgICAgICAgVF9zdW10eXBlOwoKICAgIFRfc3VtdHlwZSBzdW0gPSAwOwog
ICAgaW50IGxlbmd0aCA9IHZlY3Rvci5fYnpfc3VnZ2VzdExlbmd0aCgpOwoKICAgIGlmICh2ZWN0
b3IuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAgIHsKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBs
ZW5ndGg7ICsraSkKICAgICAgICAgICAgc3VtICs9IF9iel9hYnM8VF9udW10eXBlPjo6YXBwbHko
dmVjdG9yLl9iel9mYXN0QWNjZXNzKGkpKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGZvciAo
aW50IGk9MDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICBzdW0gKz0gX2J6X2FiczxUX251
bXR5cGU+OjphcHBseSh2ZWN0b3IoaSkpOwogICAgfQoKICAgIHJldHVybiBzdW07Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPgp0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IFBfbnVt
dHlwZSA+OjpUX3N1bXR5cGUgIG5vcm0xKGNvbnN0IFZlY3RvcjxQX251bXR5cGU+JiB4KQp7CiAg
ICByZXR1cm4gX2J6X3ZlY19ub3JtMSh4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByPgp0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBQX2V4
cHI6OlRfbnVtdHlwZSA+OjpUX3N1bXR5cGUgIG5vcm0xKF9iel9WZWNFeHByPFBfZXhwcj4gZXhw
cikKewogICAgcmV0dXJuIF9iel92ZWNfbm9ybTEoZXhwcik7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgp0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IFBfbnVtdHlwZSA+OjpUX3N1
bXR5cGUgIG5vcm0xKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJu
IF9iel92ZWNfbm9ybTEoeC5fYnpfYXNWZWNFeHByKCkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZSwgaW50IE5fZGltZW5zaW9ucz4KdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQ
X251bXR5cGUgPjo6VF9zdW10eXBlICBub3JtMShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZSwg
Tl9kaW1lbnNpb25zPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbm9ybTEoeC5fYnpfYXNWZWNF
eHByKCkpOwp9CgoKfSAKCgoKIyAzNCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L3ZlY2dsb2JzLmNjIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei92ZWNhbnkuY2MiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBC
Wl9WRUNBTllfQ0MKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByPgppbmxpbmUgYm9vbCAgX2J6X3ZlY19hbnkoUF9leHByIHZlY3RvcikKewogICAgaW50IGxl
bmd0aCA9IHZlY3Rvci5fYnpfc3VnZ2VzdExlbmd0aCgpOwoKICAgIGlmICh2ZWN0b3IuX2J6X2hh
c0Zhc3RBY2Nlc3MoKSkKICAgIHsKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGg7ICsr
aSkKICAgICAgICAgICAgaWYgKHZlY3Rvci5fYnpfZmFzdEFjY2VzcyhpKSkKICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlIDsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGZvciAoaW50IGk9MDsg
aSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICBpZiAodmVjdG9yW2ldKQogICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWUgOwogICAgfQoKICAgIHJldHVybiBmYWxzZSA7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZT4KaW5saW5lIGJvb2wgIGFueShjb25zdCBWZWN0b3I8UF9udW10eXBlPiYg
eCkKewogICAgcmV0dXJuIF9iel92ZWNfYW55KHguX2J6X2FzVmVjRXhwcigpKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgUF9leHByPgppbmxpbmUgYm9vbCAgYW55KF9iel9WZWNFeHByPFBfZXhwcj4gZXhw
cikKewogICAgcmV0dXJuIF9iel92ZWNfYW55KGV4cHIpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+CmlubGluZSBib29sICBhbnkoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7
CiAgICByZXR1cm4gX2J6X3ZlY19hbnkoeC5fYnpfYXNWZWNFeHByKCkpOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUsIGludCBOX2RpbWVuc2lvbnM+CmlubGluZSBib29sICBhbnkoY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUsIE5fZGltZW5zaW9ucz4mIHgpCnsKICAgIHJldHVybiBfYnpf
dmVjX2FueSh4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCn0gCgoKCiMgMzUgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNnbG9icy5jYyIgMgoKIyAxICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjYWxsLmNjIiAxCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDQUxMX0NDCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAK
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIGJvb2wgIF9iel92ZWNfYWxsKFBfZXhwciB2
ZWN0b3IpCnsKICAgIGludCBsZW5ndGggPSB2ZWN0b3IuX2J6X3N1Z2dlc3RMZW5ndGgoKTsKCiAg
ICBpZiAodmVjdG9yLl9iel9oYXNGYXN0QWNjZXNzKCkpCiAgICB7CiAgICAgICAgZm9yIChpbnQg
aT0wOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgIGlmICghdmVjdG9yLl9iel9mYXN0QWNj
ZXNzKGkpKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlIDsKICAgIH0KICAgIGVsc2Ugewog
ICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICBpZiAoIXZl
Y3RvcltpXSkKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZSA7CiAgICB9CgogICAgcmV0dXJu
IHRydWUgOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBib29sICBhbGwoY29u
c3QgVmVjdG9yPFBfbnVtdHlwZT4mIHgpCnsKICAgIHJldHVybiBfYnpfdmVjX2FsbCh4Ll9iel9h
c1ZlY0V4cHIoKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIGJvb2wgIGFsbChf
YnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgIHJldHVybiBfYnpfdmVjX2FsbChleHByKTsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgYm9vbCAgYWxsKGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfYWxsKHguX2J6X2FzVmVj
RXhwcigpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9kaW1lbnNpb25zPgpp
bmxpbmUgYm9vbCAgYWxsKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2RpbWVuc2lvbnM+
JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19hbGwoeC5fYnpfYXNWZWNFeHByKCkpOwp9Cgp9IAoK
CgojIDM2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjZ2xvYnMu
Y2MiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY2Nv
dW50LmNjIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDQ09VTlRfQ0MKCgoK
CgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUgaW50
IF9iel92ZWNfY291bnQoUF9leHByIHZlY3RvcikKewogICAgaW50IGxlbmd0aCA9IHZlY3Rvci5f
Ynpfc3VnZ2VzdExlbmd0aCgpOwogICAgaW50IGNvdW50ID0gMDsKCiAgICBpZiAodmVjdG9yLl9i
el9oYXNGYXN0QWNjZXNzKCkpCiAgICB7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3Ro
OyArK2kpCiAgICAgICAgICAgIGlmICh2ZWN0b3IuX2J6X2Zhc3RBY2Nlc3MoaSkpCiAgICAgICAg
ICAgICAgICArK2NvdW50OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yIChpbnQgaT0wOyBp
IDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgIGlmICh2ZWN0b3JbaV0pCiAgICAgICAgICAgICAg
ICArK2NvdW50OwogICAgfQoKICAgIHJldHVybiBjb3VudDsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlPgppbmxpbmUgaW50IGNvdW50KGNvbnN0IFZlY3RvcjxQX251bXR5cGU+JiB4KQp7CiAg
ICByZXR1cm4gX2J6X3ZlY19jb3VudCh4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcj4KaW5saW5lIGludCBjb3VudChfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsK
ICAgIHJldHVybiBfYnpfdmVjX2NvdW50KGV4cHIpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGU+CmlubGluZSBpbnQgY291bnQoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7CiAg
ICByZXR1cm4gX2J6X3ZlY19jb3VudCh4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fZGltZW5zaW9ucz4KaW5saW5lIGludCBjb3VudChjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZSwgTl9kaW1lbnNpb25zPiYgeCkKewogICAgcmV0dXJuIF9iel92
ZWNfY291bnQoeC5fYnpfYXNWZWNFeHByKCkpOwp9Cgp9IAoKCgojIDM3ICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjZ2xvYnMuY2MiIDIKCgoKIyA2OCAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY2dsb2JzLmgiIDIKCgoKIyA0OTcg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuaCIgMgoKIyAx
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjdG9yLmNjIiAxCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDVE9SX0NDCgoKCgoKCgoKCm5hbWVz
cGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+ClZlY3RvcjxQX251bXR5
cGU+IFZlY3RvcjxQX251bXR5cGU+Ojpjb3B5KCkgY29uc3QKewogICAgVmVjdG9yPFBfbnVtdHlw
ZT4gbmV3Q29weShsZW5ndGhfKTsKCiAgICBpZiAoc3RyaWRlXyA9PSAxKQogICAgewogICAgICAg
IG1lbWNweShuZXdDb3B5LmRhdGEoKSwgZGF0YSgpLCBsZW5ndGhfICogc2l6ZW9mKFBfbnVtdHlw
ZSkpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsg
KytpKQogICAgICAgIHsKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgbmV3Q29weShpKSA9ICgqdGhpcylbaV07CiAgICAgICAgfQogICAgfQoKICAg
IHJldHVybiBuZXdDb3B5Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CnZvaWQgVmVjdG9y
PFBfbnVtdHlwZT46Om1ha2VVbmlxdWUoKQp7CiAgICBpZiAoKHN0cmlkZV8gIT0gMSkgfHwgKG51
bVJlZmVyZW5jZXMoKSA+IDEpKQogICAgewogICAgICAgIFZlY3RvcjxQX251bXR5cGU+IHRtcCA9
IGNvcHkoKTsKICAgICAgICByZWZlcmVuY2UodG1wKTsKICAgIH0KfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgp2b2lkIFZlY3RvcjxQX251bXR5cGU+OjpyZWZlcmVuY2UoVmVjdG9yPFBfbnVt
dHlwZT4mIHgpCnsKICAgIE1lbW9yeUJsb2NrUmVmZXJlbmNlPFBfbnVtdHlwZT46OmNoYW5nZUJs
b2NrKHgsIDApOwogICAgbGVuZ3RoXyA9IHgubGVuZ3RoXzsKICAgIHN0cmlkZV8gPSB4LnN0cmlk
ZV87Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4Kdm9pZCBWZWN0b3I8UF9udW10eXBlPjo6
cmVzaXplKGludCBsZW5ndGgpCnsKICAgIGlmIChsZW5ndGggIT0gbGVuZ3RoXykKICAgIHsKICAg
ICAgICBNZW1vcnlCbG9ja1JlZmVyZW5jZTxQX251bXR5cGU+OjpuZXdCbG9jayhsZW5ndGgpOwog
ICAgICAgIGxlbmd0aF8gPSBsZW5ndGg7CiAgICAgICAgc3RyaWRlXyA9IDE7CiAgICB9Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4Kdm9pZCBWZWN0b3I8UF9udW10eXBlPjo6cmVzaXplQW5k
UHJlc2VydmUoaW50IG5ld0xlbmd0aCkKewogICAgVmVjdG9yPFBfbnVtdHlwZT4gbmV3VmVjdG9y
KG5ld0xlbmd0aCk7CgogICAgaWYgKG5ld0xlbmd0aCA+IGxlbmd0aF8pCiAgICAgICAgbmV3VmVj
dG9yKFJhbmdlKDAsbGVuZ3RoXy0xKSkgPSAoKnRoaXMpOwogICAgZWxzZSAKICAgICAgICBuZXdW
ZWN0b3IoUmFuZ2UoMCxuZXdMZW5ndGgtMSkpID0gKCp0aGlzKTsKCiAgICByZWZlcmVuY2UobmV3
VmVjdG9yKTsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNz
IFBfZXhwciwgY2xhc3MgUF91cGRhdGVyPgppbmxpbmUKdm9pZCBWZWN0b3I8UF9udW10eXBlPjo6
X2J6X2Fzc2lnbihQX2V4cHIgZXhwciwgUF91cGRhdGVyKQp7CiAgICAgOwoKICAgICAKICAgICAK
ICAgICAKICAgIGlmICgoc3RyaWRlXyA9PSAxKSAmJiAoZXhwci5fYnpfaGFzRmFzdEFjY2Vzcygp
KSkKICAgIHsKCiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKQogICAgICAg
ICAgICBQX3VwZGF0ZXI6OnVwZGF0ZShkYXRhX1tpXSwgZXhwci5fYnpfZmFzdEFjY2VzcyhpKSk7
CiMgMTQ5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjdG9yLmNj
IgoKICAgIH0KICAgIGVsc2UgewogICAgICAgICAKICAgICAgICAgCiAgICAgICAgZm9yIChpbnQg
aT0wOyBpIDwgbGVuZ3RoXzsgKytpKQogICAgICAgICAgICBQX3VwZGF0ZXI6OnVwZGF0ZSgoKnRo
aXMpW2ldLCBleHByW2ldKTsKICAgIH0KfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVt
dHlwZT46Om9wZXJhdG9yPShfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgICA7CgogICAg
IAogICAgIAogICAgIAogICAgaWYgKChzdHJpZGVfID09IDEpICYmIChleHByLl9iel9oYXNGYXN0
QWNjZXNzKCkpKQogICAgewoKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGhfOyArK2kp
CiAgICAgICAgICAgIGRhdGFfW2ldID0gKFBfbnVtdHlwZSlleHByLl9iel9mYXN0QWNjZXNzKGkp
OwojIDIwMyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3Rvci5j
YyIKCiAgICB9CiAgICBlbHNlIHsKICAgICAgICAgCiAgICAgICAgIAogICAgICAgIGZvciAoaW50
IGk9MDsgaSA8IGxlbmd0aF87ICsraSkKICAgICAgICAgICAgKCp0aGlzKVtpXSA9IChQX251bXR5
cGUpZXhwcltpXTsKICAgIH0KICAgIHJldHVybiAqdGhpczsKfQoKIyAyNTYgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuY2MiCgoKIyAyOTAgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuY2MiCgoKI2RlZmluZSBCWl9W
RUNUT1JfQVNTSUdOKG9wKSB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNz
IFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9w
ZXJhdG9yIG9wIChfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpIHsgQlpQUkVDT05ESVRJT04oZXhw
ci5sZW5ndGgobGVuZ3RoXykgPT0gbGVuZ3RoXyk7IGlmICgoc3RyaWRlXyA9PSAxKSAmJiAoZXhw
ci5fYnpfaGFzRmFzdEFjY2VzcygpKSkgeyBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGhfOyArK2kp
IGRhdGFfW2ldIG9wIGV4cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9
MDsgaSA8IGxlbmd0aF87ICsraSkgKCp0aGlzKVtpXSBvcCBleHByW2ldOyB9IHJldHVybiAqdGhp
czsgfSAgICAgICAgICAgICAgICAgCiMgMzA5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovdmVjdG9yLmNjIgoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBs
YXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10
eXBlPjo6IG9wZXJhdG9yICArPSAgKF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikgeyAgOyBpZiAo
KHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkpIHsgZm9yIChpbnQg
aT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRhX1tpXSAgKz0gIGV4cHIuX2J6X2Zhc3RBY2Nlc3Mo
aSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsgaSA8IGxlbmd0aF87ICsraSkgKCp0aGlzKVtpXSAg
Kz0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+
IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8
UF9udW10eXBlPjo6IG9wZXJhdG9yICAtPSAgKF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikgeyAg
OyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkpIHsgZm9y
IChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRhX1tpXSAgLT0gIGV4cHIuX2J6X2Zhc3RB
Y2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsgaSA8IGxlbmd0aF87ICsraSkgKCp0aGlz
KVtpXSAgLT0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBW
ZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9yICAqPSAgKF9iel9WZWNFeHByPFBfZXhwcj4gZXhw
cikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkp
IHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRhX1tpXSAgKj0gIGV4cHIuX2J6
X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsgaSA8IGxlbmd0aF87ICsraSkg
KCp0aGlzKVtpXSAgKj0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5
cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9yICAvPSAgKF9iel9WZWNFeHByPFBfZXhw
cj4gZXhwcikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nl
c3MoKSkpIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRhX1tpXSAgLz0gIGV4
cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsgaSA8IGxlbmd0aF87
ICsraSkgKCp0aGlzKVtpXSAgLz0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQ
X251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9yICAlPSAgKF9iel9WZWNFeHBy
PFBfZXhwcj4gZXhwcikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6X2hhc0Zh
c3RBY2Nlc3MoKSkpIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRhX1tpXSAg
JT0gIGV4cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsgaSA8IGxl
bmd0aF87ICsraSkgKCp0aGlzKVtpXSAgJT0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZl
Y3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9yICBePSAgKF9iel9W
ZWNFeHByPFBfZXhwcj4gZXhwcikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6
X2hhc0Zhc3RBY2Nlc3MoKSkpIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRh
X1tpXSAgXj0gIGV4cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsg
aSA8IGxlbmd0aF87ICsraSkgKCp0aGlzKVtpXSAgXj0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlz
OyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5s
aW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9yICAmPSAg
KF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4
cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkpIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytp
KSBkYXRhX1tpXSAgJj0gIGV4cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50
IGk9MDsgaSA8IGxlbmd0aF87ICsraSkgKCp0aGlzKVtpXSAgJj0gIGV4cHJbaV07IH0gcmV0dXJu
ICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhw
cj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9y
ICB8PSAgKF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkg
JiYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkpIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3Ro
XzsgKytpKSBkYXRhX1tpXSAgfD0gIGV4cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZv
ciAoaW50IGk9MDsgaSA8IGxlbmd0aF87ICsraSkgKCp0aGlzKVtpXSAgfD0gIGV4cHJbaV07IH0g
cmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNz
IFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9w
ZXJhdG9yICA+Pj0gIChfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpIHsgIDsgaWYgKChzdHJpZGVf
ID09IDEpICYmIChleHByLl9iel9oYXNGYXN0QWNjZXNzKCkpKSB7IGZvciAoaW50IGk9MDsgaSA8
IGxlbmd0aF87ICsraSkgZGF0YV9baV0gID4+PSAgZXhwci5fYnpfZmFzdEFjY2VzcyhpKTsgfSBl
bHNlIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSAoKnRoaXMpW2ldICA+Pj0gIGV4
cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBs
YXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10
eXBlPjo6IG9wZXJhdG9yICA8PD0gIChfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpIHsgIDsgaWYg
KChzdHJpZGVfID09IDEpICYmIChleHByLl9iel9oYXNGYXN0QWNjZXNzKCkpKSB7IGZvciAoaW50
IGk9MDsgaSA8IGxlbmd0aF87ICsraSkgZGF0YV9baV0gIDw8PSAgZXhwci5fYnpfZmFzdEFjY2Vz
cyhpKTsgfSBlbHNlIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSAoKnRoaXMpW2ld
ICA8PD0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAoKIyA0MDQgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuY2MiCgoKIAoKCgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGU+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVtdHlwZT46
OmluaXRpYWxpemUoUF9udW10eXBlIHgpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJDb25zdGFu
dDxQX251bXR5cGU+IFRfZXhwcjsKICAgICgqdGhpcykgPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4K
aW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3IrPShQ
X251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4g
VF9leHByOwogICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3Rv
cjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3ItPShQX251bXR5cGUgeCkK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAg
KCp0aGlzKSAtPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+
JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3IqPShQX251bXR5cGUgeCkKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAqPSBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9u
dW10eXBlPjo6b3BlcmF0b3IvPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAvPSBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3Bl
cmF0b3IlPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBf
bnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAlPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5s
aW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3JePShQX251
bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9l
eHByOwogICAgKCp0aGlzKSBePSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQ
X251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3ImPShQX251bXR5cGUgeCkKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0
aGlzKSAmPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7
Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBW
ZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3J8PShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSB8PSBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10
eXBlPjo6b3BlcmF0b3I+Pj0oaW50IHgpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+IFRfZXhwcjsKICAgICgqdGhpcykgPj49IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KHgpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxp
bmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvcjw8PShpbnQg
eCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwog
ICAgKCp0aGlzKSA8PD0gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwogICAgcmV0dXJu
ICp0aGlzOwp9CgogCgoKCiAKIAogCiMgNTE2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovdmVjdG9yLmNjIgoKCiAKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgClZlY3Rv
cjxQX251bXR5cGU+OjpvcGVyYXRvcj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAg
ICAoKnRoaXMpID0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5i
ZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4mClZlY3Rv
cjxQX251bXR5cGU+OjpvcGVyYXRvcis9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkKewog
ICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4gPih4
LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+
IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYKVmVj
dG9yPFBfbnVtdHlwZT46Om9wZXJhdG9yLT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7
CiAgICAoKnRoaXMpIC09IF9iel9WZWNFeHByPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiA+
KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JgpW
ZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3IqPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIHgp
CnsKICAgICgqdGhpcykgKj0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
ID4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4m
ClZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvci89KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYg
eCkKewogICAgKCp0aGlzKSAvPSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
Mj4gPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9udW10eXBl
PiYKVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJhdG9yJT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+
JiB4KQp7CiAgICAoKnRoaXMpICU9IF9iel9WZWNFeHByPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyPiA+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5
cGU+JgpWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3JePShjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4mIHgpCnsKICAgICgqdGhpcykgXj0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTI+ID4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVmVjdG9yPFBfbnVt
dHlwZT4mClZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvciY9KGNvbnN0IFZlY3RvcjxQX251bXR5
cGUyPiYgeCkKewogICAgKCp0aGlzKSAmPSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMj4gPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9u
dW10eXBlPiYKVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJhdG9yfD0oY29uc3QgVmVjdG9yPFBfbnVt
dHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIHw9IF9iel9WZWNFeHByPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiA+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQ
X251bXR5cGU+JgpWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3I8PD0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIDw8PSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMj4gPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0
b3I8UF9udW10eXBlPiYKVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJhdG9yPj49KGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSA+Pj0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKIAoK
Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVj
dG9yPFBfbnVtdHlwZT46Om9wZXJhdG9yPShSYW5nZSByKQp7CiAgICAoKnRoaXMpID0gX2J6X1Zl
Y0V4cHI8UmFuZ2U+KHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJh
dG9yKz0oUmFuZ2UgcikKewogICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxSYW5nZT4ocik7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3Rv
cjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3ItPShSYW5nZSByKQp7CiAg
ICAoKnRoaXMpIC09IF9iel9WZWNFeHByPFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3Rv
cjxQX251bXR5cGU+OjpvcGVyYXRvcio9KFJhbmdlIHIpCnsKICAgICgqdGhpcykgKj0gX2J6X1Zl
Y0V4cHI8UmFuZ2U+KHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJh
dG9yLz0oUmFuZ2UgcikKewogICAgKCp0aGlzKSAvPSBfYnpfVmVjRXhwcjxSYW5nZT4ocik7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3Rv
cjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3IlPShSYW5nZSByKQp7CiAg
ICAoKnRoaXMpICU9IF9iel9WZWNFeHByPFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3Rv
cjxQX251bXR5cGU+OjpvcGVyYXRvcl49KFJhbmdlIHIpCnsKICAgICgqdGhpcykgXj0gX2J6X1Zl
Y0V4cHI8UmFuZ2U+KHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJh
dG9yJj0oUmFuZ2UgcikKewogICAgKCp0aGlzKSAmPSBfYnpfVmVjRXhwcjxSYW5nZT4ocik7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3Rv
cjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3J8PShSYW5nZSByKQp7CiAg
ICAoKnRoaXMpIHw9IF9iel9WZWNFeHByPFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3Rv
cjxQX251bXR5cGU+OjpvcGVyYXRvcj4+PShSYW5nZSByKQp7CiAgICAoKnRoaXMpID4+PSBfYnpf
VmVjRXhwcjxSYW5nZT4ocik7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3Bl
cmF0b3I8PD0oUmFuZ2UgcikKewogICAgKCp0aGlzKSA8PD0gX2J6X1ZlY0V4cHI8UmFuZ2U+KHIp
OwogICAgcmV0dXJuICp0aGlzOwp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8
UF9udW10eXBlPjo6b3BlcmF0b3I9KGNvbnN0IAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYg
eCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsK
ICAgICgqdGhpcykgPSBfYnpfVmVjRXhwcjxUX2V4cHI+KHguYmVnaW4oKSk7CiAgICByZXR1cm4g
KnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0
b3IrPShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgqdGhpcykgKz0gX2J6
X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9CgoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVmVj
dG9yPFBfbnVtdHlwZT4mIFZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvci09KGNvbnN0CiAgICBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB4KQp7CiAgICB0eXBlZGVmIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4gVF9leHByOwogICAgKCp0aGlzKSAtPSBfYnpfVmVjRXhwcjxUX2V4cHI+
KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBW
ZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3IqPShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5
cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRf
ZXhwcjsKICAgICgqdGhpcykgKj0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAg
cmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVtdHlwZT46
Om9wZXJhdG9yLz0oY29uc3QKICAgIFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHgpCnsKICAgIHR5
cGVkZWYgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiBUX2V4cHI7CiAgICAoKnRoaXMp
IC89IF9iel9WZWNFeHByPFRfZXhwcj4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvciU9KGNvbnN0
CiAgICBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB4KQp7CiAgICB0eXBlZGVmIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4gVF9leHByOwogICAgKCp0aGlzKSAlPSBfYnpfVmVjRXhwcjxU
X2V4cHI+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5
cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3JePShjb25zdAogICAgVmVjdG9yUGljazxQ
X251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+IFRfZXhwcjsKICAgICgqdGhpcykgXj0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkp
OwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVt
dHlwZT46Om9wZXJhdG9yJj0oY29uc3QKICAgIFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHgpCnsK
ICAgIHR5cGVkZWYgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiBUX2V4cHI7CiAgICAo
KnRoaXMpICY9IF9iel9WZWNFeHByPFRfZXhwcj4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhp
czsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvcnw9
KGNvbnN0CiAgICBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB4KQp7CiAgICB0eXBlZGVmIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4gVF9leHByOwogICAgKCp0aGlzKSB8PSBfYnpfVmVj
RXhwcjxUX2V4cHI+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCiAKCgoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVjdG9y
PFBfbnVtdHlwZT4mIFZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvcj0oUmFuZG9tPFBfZGlzdHJp
YnV0aW9uPiYgcmFuZCkKewogICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSAKICAg
ICAgICAoKnRoaXMpW2ldID0gcmFuZC5yYW5kb20oKTsKICAgIHJldHVybiAqdGhpczsKfQoKIyA4
NjEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuY2MiCgoK
fSAKCgojIDQ5OCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3Rv
ci5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNp
by5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1ZFQ0lPX0NDCgoKCgoK
bmFtZXNwYWNlICBibGl0eiAgeyAKCiAKIAogCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+Cm9z
dHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgb3MsIGNvbnN0IFZlY3RvcjxQX251bXR5cGU+JiB4
KQp7CiAgICBvcyA8PCAiWyAiOwogICAgZm9yIChpbnQgaT0wOyBpIDwgeC5sZW5ndGgoKTsgKytp
KQogICAgewogICAgICAgIG9zIDw8IHNldHcoMTApIDw8IHhbaV07CiAgICAgICAgaWYgKCEoKGkr
MSklNykpCiAgICAgICAgICAgIG9zIDw8IGVuZGwgPDwgIiAgIjsKICAgIH0KICAgIG9zIDw8ICIg
XSI7CiAgICByZXR1cm4gb3M7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4Kb3N0cmVhbSYgb3Bl
cmF0b3I8PChvc3RyZWFtJiBvcywgX2J6X1ZlY0V4cHI8UF9leHByPiBleHByKQp7CiAgICBWZWN0
b3I8IHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4gcmVzdWx0KGV4cHIpOwogICAgb3MgPDwg
cmVzdWx0OwogICAgcmV0dXJuIG9zOwp9Cgp9IAoKCiMgNDk5ICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjdG9yLmgiIDIKCgoKIyA0NDUgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei90aW55dmVjLmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4v
dXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rpbnl2ZWMuY2MiIDEKCiNkZWZpbmUgQlpfVElO
WVZFQ19DQwoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L21ldGEvdmVjYXNzaWduLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX01FVEFfVkVDQVNTSUdOX0gKCm5hbWVzcGFjZSAgYmxp
dHogIHsgCgp0ZW1wbGF0ZTxpbnQgTiwgaW50IEk+IApjbGFzcyBfYnpfbWV0YV92ZWNBc3NpZ24g
ewpwdWJsaWM6CiAgICBlbnVtIHsgbG9vcEZsYWcgPSAoSSA8IE4tMSkgPyAxIDogMCB9OwoKICAg
IHRlbXBsYXRlPGNsYXNzIFRfdmVjdG9yLCBjbGFzcyBUX2V4cHIsIGNsYXNzIFRfdXBkYXRlcj4K
ICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBmYXN0QXNzaWduKFRfdmVjdG9yJiB2ZWMsIFRfZXhwciBl
eHByLCBUX3VwZGF0ZXIgdSkKICAgIHsKICAgICAgICB1LnVwZGF0ZSh2ZWNbSV0sIGV4cHIuX2J6
X2Zhc3RBY2Nlc3MoSSkpOwogICAgICAgIF9iel9tZXRhX3ZlY0Fzc2lnbjxOICogbG9vcEZsYWcs
IChJKzEpICogbG9vcEZsYWc+CiAgICAgICAgICAgOjpmYXN0QXNzaWduKHZlYyxleHByLHUpOwog
ICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFRfdmVjdG9yLCBjbGFzcyBUX2V4cHIsIGNsYXNzIFRf
dXBkYXRlcj4KICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhc3NpZ24oVF92ZWN0b3ImIHZlYywgVF9l
eHByIGV4cHIsIFRfdXBkYXRlciB1KQogICAgewogICAgICAgIHUudXBkYXRlKHZlY1tJXSwgZXhw
cltJXSk7CiAgICAgICAgX2J6X21ldGFfdmVjQXNzaWduPE4gKiBsb29wRmxhZywgKEkrMSkgKiBs
b29wRmxhZz4KICAgICAgICAgICA6OmFzc2lnbih2ZWMsZXhwcix1KTsKICAgIH0KCiAgICB0ZW1w
bGF0ZTxjbGFzcyBUX3ZlY3RvciwgY2xhc3MgVF9udW10eXBlLCBjbGFzcyBUX3VwZGF0ZXI+CiAg
ICBzdGF0aWMgaW5saW5lIHZvaWQgYXNzaWduV2l0aEFyZ3MoVF92ZWN0b3ImIHZlYywgVF91cGRh
dGVyIHUsCiAgICAgICAgVF9udW10eXBlIHgwLCBUX251bXR5cGUgeDE9MCwgVF9udW10eXBlIHgy
PTAsIFRfbnVtdHlwZSB4Mz0wLAogICAgICAgIFRfbnVtdHlwZSB4ND0wLCBUX251bXR5cGUgeDU9
MCwgVF9udW10eXBlIHg2PTAsIFRfbnVtdHlwZSB4Nz0wLAogICAgICAgIFRfbnVtdHlwZSB4OD0w
LCBUX251bXR5cGUgeDk9MCkKICAgIHsKICAgICAgICB1LnVwZGF0ZSh2ZWNbSV0sIHgwKTsKICAg
ICAgICBfYnpfbWV0YV92ZWNBc3NpZ248TiAqIGxvb3BGbGFnLCAoSSsxKSAqIGxvb3BGbGFnPgog
ICAgICAgICAgICA6OmFzc2lnbldpdGhBcmdzKHZlYywgdSwgeDEsIHgyLCB4MywgeDQsIHg1LCB4
NiwgeDcsIHg4LCB4OSk7CiAgICB9CiAgICAgICAgCn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9t
ZXRhX3ZlY0Fzc2lnbjwwLDA+IHsKcHVibGljOgogICAgdGVtcGxhdGU8Y2xhc3MgVF92ZWN0b3Is
IGNsYXNzIFRfZXhwciwgY2xhc3MgVF91cGRhdGVyPgogICAgc3RhdGljIGlubGluZSB2b2lkIGZh
c3RBc3NpZ24oVF92ZWN0b3ImIHZlYywgVF9leHByIGV4cHIsIFRfdXBkYXRlciB1KQogICAgeyB9
CgogICAgdGVtcGxhdGU8Y2xhc3MgVF92ZWN0b3IsIGNsYXNzIFRfZXhwciwgY2xhc3MgVF91cGRh
dGVyPgogICAgc3RhdGljIGlubGluZSB2b2lkIGFzc2lnbihUX3ZlY3RvciYgdmVjLCBUX2V4cHIg
ZXhwciwgVF91cGRhdGVyIHUpCiAgICB7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX3ZlY3Rvciwg
Y2xhc3MgVF9udW10eXBlLCBjbGFzcyBUX3VwZGF0ZXI+CiAgICBzdGF0aWMgaW5saW5lIHZvaWQg
YXNzaWduV2l0aEFyZ3MoVF92ZWN0b3ImIHZlYywgVF91cGRhdGVyIHUsCiAgICAgICAgVF9udW10
eXBlIHgwLCBUX251bXR5cGUgeDE9MCwgVF9udW10eXBlIHgyPTAsIFRfbnVtdHlwZSB4Mz0wLAog
ICAgICAgIFRfbnVtdHlwZSB4ND0wLCBUX251bXR5cGUgeDU9MCwgVF9udW10eXBlIHg2PTAsIFRf
bnVtdHlwZSB4Nz0wLAogICAgICAgIFRfbnVtdHlwZSB4OD0wLCBUX251bXR5cGUgeDk9MCkKICAg
IHsKICAgIH0KfTsKCn0gCgoKIyAyMCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L3Rpbnl2ZWMuY2MiIDIKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xh
c3MgVF9udW10eXBlLCBpbnQgTl9sZW5ndGg+CmlubGluZSBUaW55VmVjdG9yPFRfbnVtdHlwZSwg
Tl9sZW5ndGg+OjpUaW55VmVjdG9yKFRfbnVtdHlwZSBpbml0VmFsdWUpCnsKICAgIGZvciAoaW50
IGk9MDsgaSA8IE5fbGVuZ3RoOyArK2kpCiAgICAgICAgZGF0YV9baV0gPSBpbml0VmFsdWU7Cn0K
CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3Rv
cjxUX251bXR5cGUsIE5fbGVuZ3RoPjo6VGlueVZlY3Rvcihjb25zdCAKICAgIFRpbnlWZWN0b3I8
VF9udW10eXBlLCBOX2xlbmd0aD4mIHgpCnsKICAgIGZvciAoaW50IGk9MDsgaSA8IE5fbGVuZ3Ro
OyArK2kpCiAgICAgICAgZGF0YV9baV0gPSB4LmRhdGFfW2ldOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9leHByLCBjbGFzcyBQX3Vw
ZGF0ZXI+CmlubGluZQp2b2lkIFRpbnlWZWN0b3I8VF9udW10eXBlLCBOX2xlbmd0aD46Ol9iel9h
c3NpZ24oUF9leHByIGV4cHIsIFBfdXBkYXRlciB1cCkKewogICAgIDsKCgoKCgogICAgaWYgKGV4
cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAgIHsKICAgICAgICBfYnpfbWV0YV92ZWNBc3NpZ248
Tl9sZW5ndGgsIDA+OjpmYXN0QXNzaWduKCp0aGlzLCBleHByLCB1cCk7CiAgICB9CiAgICBlbHNl
IHsKICAgICAgICBfYnpfbWV0YV92ZWNBc3NpZ248Tl9sZW5ndGgsIDA+Ojphc3NpZ24oKnRoaXMs
IGV4cHIsIHVwKTsKICAgIH0KfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xl
bmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPjo6VGlueVZlY3RvcihfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpIAp7CiAgX2J6
X2Fzc2lnbihleHByLCBfYnpfdXBkYXRlPFBfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjo6VF9u
dW10eXBlPigpKTsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0
aD4gdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPiYgClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yPShfYnpf
VmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X3VwZGF0ZTxQ
X251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55
VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcis9KF9iel9WZWNFeHByPFBfZXhw
cj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpfcGx1c191cGRhdGU8UF9udW10eXBl
LCAKICAgICAgICB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+KCkpOwogICAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8
Y2xhc3MgUF9leHByPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlu
eVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3ItPShfYnpfVmVjRXhwcjxQX2V4
cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X21pbnVzX3VwZGF0ZTxQX251bXR5
cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAgIHJldHVybiAq
dGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRlbXBsYXRl
PGNsYXNzIFBfZXhwcj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRp
bnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yKj0oX2J6X1ZlY0V4cHI8UF9l
eHByPiBleHByKQp7CiAgICBfYnpfYXNzaWduKGV4cHIsIF9iel9tdWx0aXBseV91cGRhdGU8UF9u
dW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+
JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvci89KF9iel9WZWNFeHBy
PFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpfZGl2aWRlX3VwZGF0ZTxQ
X251bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAgIHJl
dHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRl
bXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0
aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yJT0oX2J6X1ZlY0V4
cHI8UF9leHByPiBleHByKQp7CiAgICBfYnpfYXNzaWduKGV4cHIsIF9iel9tb2RfdXBkYXRlPFBf
bnVtdHlwZSwKICAgICAgICB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+KCkpOwogICAgcmV0
dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVt
cGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3Ro
PiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3JePShfYnpfVmVjRXhw
cjxQX2V4cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X3hvcl91cGRhdGU8UF9u
dW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+
JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvciY9KF9iel9WZWNFeHBy
PFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpfYml0YW5kX3VwZGF0ZTxQ
X251bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAgIHJl
dHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRl
bXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0
aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yfD0oX2J6X1ZlY0V4
cHI8UF9leHByPiBleHByKQp7CiAgICBfYnpfYXNzaWduKGV4cHIsIF9iel9iaXRvcl91cGRhdGU8
UF9udW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5n
dGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcjw8PShfYnpfVmVj
RXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X3NoaWZ0bF91cGRh
dGU8UF9udW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3Ro
PiB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9s
ZW5ndGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcj4+PShfYnpf
VmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X3NoaWZ0cl91
cGRhdGU8UF9udW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7
CiAgICByZXR1cm4gKnRoaXM7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQg
Tl9sZW5ndGg+IAppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZl
Y3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6aW5pdGlhbGl6ZShQX251bXR5cGUgeCkKewoKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJDb25zdGFudDxQX251bXR5cGU+IFRfZXhwcjsKICAgICgqdGhp
cykgPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CgoKCgoKCiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlu
eVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVu
Z3RoPjo6b3BlcmF0b3IrPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNv
bnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3Ro
PiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3ItPShQX251bXR5cGUg
eCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwog
ICAgKCp0aGlzKSAtPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4g
KnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUg
VGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPjo6b3BlcmF0b3IqPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAqPSBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVu
Z3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IvPShQX251bXR5
cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHBy
OwogICAgKCp0aGlzKSAvPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxp
bmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPjo6b3BlcmF0b3IlPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAlPSBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3JePShQX251
bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9l
eHByOwogICAgKCp0aGlzKSBePSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgpp
bmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5
cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3ImPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAmPSBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3J8PShQ
X251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4g
VF9leHByOwogICAgKCp0aGlzKSB8PSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3Ro
PgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251
bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3I8PD0oaW50IHgpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJDb25zdGFudDxpbnQ+IFRfZXhwcjsKICAgICgqdGhpcykgPDw9IF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKHgpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlLCBpbnQgTl9sZW5ndGg+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5n
dGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcj4+PShpbnQgeCkK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PGludD4gVF9leHByOwogICAgKCp0aGlz
KSA+Pj0gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwogICAgcmV0dXJuICp0aGlzOwp9
CgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYK
VGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3I9KGNvbnN0IAogICAgVGlu
eVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykgPSBfYnpfVmVj
RXhwcjwgdHlwZW5hbWUgIAogICAgICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+
OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQ
X251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IrPShjb25zdAogICAgVGlueVZlY3RvcjxQX251
bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykgKz0gX2J6X1ZlY0V4cHI8IHR5cGVu
YW1lIAogICAgICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRl
cmF0b3I+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUg
VGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPjo6b3BlcmF0b3ItPShjb25zdAogICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xl
bmd0aD4mIHgpCnsKICAgICgqdGhpcykgLT0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1lIAogICAgICAg
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVn
aW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50
IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQ
X251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3Bl
cmF0b3IqPShjb25zdAogICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsK
ICAgICgqdGhpcykgKj0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1lIAogICAgICAgIFRpbnlWZWN0b3I8
UF9udW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVnaW4oKSk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IvPShjb25z
dAogICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykg
Lz0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1lIAogICAgICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwg
Tl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7
Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlu
eVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IlPShjb25zdAogICAgVGlueVZl
Y3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykgJT0gX2J6X1ZlY0V4
cHI8IHR5cGVuYW1lIAogICAgICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+OjpU
X2NvbnN0SXRlcmF0b3I+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251
bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3JePShjb25zdAogICAgVGlueVZlY3RvcjxQX251bXR5
cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykgXj0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1l
IAogICAgICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0
b3I+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlu
eVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVu
Z3RoPjo6b3BlcmF0b3ImPShjb25zdAogICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0
aD4mIHgpCnsKICAgICgqdGhpcykgJj0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1lIAogICAgICAgIFRp
bnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVnaW4o
KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5f
bGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251
bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0
b3J8PShjb25zdAogICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAg
ICgqdGhpcykgfD0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1lIAogICAgICAgIFRpbnlWZWN0b3I8UF9u
dW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVnaW4oKSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVu
Z3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3I8PD0oY29uc3QK
ICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+JiB4KQp7CiAgICAoKnRoaXMpIDw8
PSBfYnpfVmVjRXhwcjwgdHlwZW5hbWUgCiAgICAgICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBO
X2xlbmd0aD46OlRfY29uc3RJdGVyYXRvcj4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55
VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcj4+PShjb25zdAogICAgVGlueVZl
Y3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykgPj49IF9iel9WZWNF
eHByPCB0eXBlbmFtZSAKICAgICAgICBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoPjo6
VF9jb25zdEl0ZXJhdG9yPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9CgogCgoKCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3Rv
cjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3I9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUy
PiYgeCkKewogICAgKCp0aGlzKSA9IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlz
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRp
bnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yKz0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpICs9IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0
dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xl
bmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yLT0oY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIC09IHguX2J6X2FzVmVjRXhwcigp
OwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xl
bmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10
eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9y
Kj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpICo9IHguX2J6X2Fz
VmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUs
IGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0
b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46
Om9wZXJhdG9yLz0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIC89
IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5l
IFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBO
X2xlbmd0aD46Om9wZXJhdG9yJT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAo
KnRoaXMpICU9IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9u
dW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yXj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4
KQp7CiAgICAoKnRoaXMpIF49IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlW
ZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yJj0oY29uc3QgVmVjdG9yPFBfbnVt
dHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpICY9IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJu
ICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0
aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yfD0oY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIHw9IHguX2J6X2FzVmVjRXhwcigpOwog
ICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0
aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBl
LCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yPDw9
KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSA8PD0geC5fYnpfYXNW
ZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwg
aW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3Rv
cjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6
b3BlcmF0b3I+Pj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpID4+
PSB4Ll9iel9hc1ZlY0V4cHIoKTsKICAgIHJldHVybiAqdGhpczsKfQoKIAoKCgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gCmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlw
ZSwgTl9sZW5ndGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcj0o
UmFuZ2UgcikKewogICAgKCp0aGlzKSA9IHIuX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4KaW5saW5lIFRp
bnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xl
bmd0aD46Om9wZXJhdG9yKz0oUmFuZ2UgcikKewogICAgKCp0aGlzKSArPSByLl9iel9hc1ZlY0V4
cHIoKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQg
Tl9sZW5ndGg+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55VmVj
dG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvci09KFJhbmdlIHIpCnsKICAgICgqdGhp
cykgLT0gci5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IqPShS
YW5nZSByKQp7CiAgICAoKnRoaXMpICo9IHIuX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4KaW5saW5lIFRp
bnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xl
bmd0aD46Om9wZXJhdG9yLz0oUmFuZ2UgcikKewogICAgKCp0aGlzKSAvPSByLl9iel9hc1ZlY0V4
cHIoKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQg
Tl9sZW5ndGg+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55VmVj
dG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvciU9KFJhbmdlIHIpCnsKICAgICgqdGhp
cykgJT0gci5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3JePShS
YW5nZSByKQp7CiAgICAoKnRoaXMpIF49IHIuX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4KaW5saW5lIFRp
bnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xl
bmd0aD46Om9wZXJhdG9yJj0oUmFuZ2UgcikKewogICAgKCp0aGlzKSAmPSByLl9iel9hc1ZlY0V4
cHIoKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQg
Tl9sZW5ndGg+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55VmVj
dG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcnw9KFJhbmdlIHIpCnsKICAgICgqdGhp
cykgfD0gci5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3I8PD0o
UmFuZ2UgcikKewogICAgKCp0aGlzKSA8PD0gci5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4g
KnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUg
VGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPjo6b3BlcmF0b3I+Pj0oUmFuZ2UgcikKewogICAgKCp0aGlzKSA+Pj0gci5fYnpfYXNW
ZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlLCBpbnQgTl9sZW5ndGg+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBUaW55
VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5n
dGg+OjpvcGVyYXRvcj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgKCp0
aGlzKSA9IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4K
aW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10
eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yKz0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYg
eCkKewogICAgKCp0aGlzKSArPSB4Ll9iel9hc1ZlY0V4cHIoKTsKICAgIHJldHVybiAqdGhpczsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55
VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvci09KGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMj4mIHgpCnsKICAgICgqdGhpcykgLT0geC5fYnpfYXNWZWNFeHByKCk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IqPShjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpICo9IHguX2J6X2FzVmVj
RXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGlu
dCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8
UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9w
ZXJhdG9yLz0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSAv
PSB4Ll9iel9hc1ZlY0V4cHIoKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGlu
ZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwg
Tl9sZW5ndGg+OjpvcGVyYXRvciU9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHgpCnsK
ICAgICgqdGhpcykgJT0geC5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3Rv
cjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3JePShjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIF49IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJu
ICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0
aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yJj0oY29uc3QgVmVj
dG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSAmPSB4Ll9iel9hc1ZlY0V4cHIo
KTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9s
ZW5ndGg+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVt
dHlwZSwgTl9sZW5ndGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRv
cnw9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHgpCnsKICAgICgqdGhpcykgfD0geC5f
YnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlu
eVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVu
Z3RoPjo6b3BlcmF0b3I+Pj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAg
KCp0aGlzKSA8PD0geC5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCn0gCgoK
IyA0NDYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei90aW55dmVjLmgi
IDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rpbnl2ZWNp
by5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1RJTllWRUNJT19DQwoKCgoK
Cm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBO
X2xlbmd0aD4Kb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUsIE5fbGVuZ3RoPiYgeCkKewogICAgb3MgPDwgTl9sZW5ndGggPDwgIiBbICI7
CiAgICBmb3IgKGludCBpPTA7IGkgPCBOX2xlbmd0aDsgKytpKQogICAgewogICAgICAgIG9zIDw8
IHNldHcoMTApIDw8IHhbaV07CiAgICAgICAgaWYgKCEoKGkrMSklNykpCiAgICAgICAgICAgIG9z
IDw8IGVuZGwgPDwgIiAgIjsKICAgIH0KICAgIG9zIDw8ICIgXSI7CiAgICByZXR1cm4gb3M7Cn0K
CiAKdGVtcGxhdGUgPHR5cGVuYW1lIFRfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppc3RyZWFtJiBv
cGVyYXRvcj4+KGlzdHJlYW0mIGlzLCBUaW55VmVjdG9yPFRfbnVtdHlwZSwgTl9sZW5ndGg+JiB4
KQp7CiAgICBpbnQgbGVuZ3RoOwogICAgY2hhciBzZXA7CiAgICAgICAgICAgICAKICAgIGlzID4+
IGxlbmd0aDsKICAgIGlzID4+IHNlcDsKICAgICA7CgoKICAgICA7ICAgICAgICAgICAgICAgICAg
ICAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTl9sZW5ndGg7ICsraSkKICAgIHsKICAgICAgICAg
OwogICAgICAgIGlzID4+IHgoaSk7CiAgICB9CiAgICBpcyA+PiBzZXA7CiAgICAgOwoKICAgIAog
ICAgcmV0dXJuIGlzOwp9Cgp9IAoKCiMgNDQ3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovdGlueXZlYy5oIiAyCgoKCgojIDY0ICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei90cmF2ZXJzYWwuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAogCgoKCiNkZWZpbmUgQlpfVFJBVkVSU0FMX0gKCgoKCgoKCgoK
IyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3NldCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIF9fU0dJX1NUTF9TRVQKCgoj
IDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3Ry
ZWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKI2RlZmluZSBfX1NH
SV9TVExfSU5URVJOQUxfVFJFRV9ICgogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsZ29iYXNlLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKI2RlZmluZSBfX1NHSV9TVExfSU5U
RVJOQUxfQUxHT0JBU0VfSAoKCgoKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9n
bnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4v
Li4vLi4vaW5jbHVkZS9nKystMy9zdGxfcGFpci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKI2RlZmluZSBfX1NHSV9TVExfSU5URVJOQUxfUEFJUl9ICgogCgp0ZW1wbGF0
ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CnN0cnVjdCBwYWlyIHsKICB0eXBlZGVmIF9UMSBmaXJz
dF90eXBlOwogIHR5cGVkZWYgX1QyIHNlY29uZF90eXBlOwoKICBfVDEgZmlyc3Q7CiAgX1QyIHNl
Y29uZDsKICBwYWlyKCkgOiBmaXJzdChfVDEoKSksIHNlY29uZChfVDIoKSkge30KICBwYWlyKGNv
bnN0IF9UMSYgX19hLCBjb25zdCBfVDImIF9fYikgOiBmaXJzdChfX2EpLCBzZWNvbmQoX19iKSB7
fQoKCiAgdGVtcGxhdGUgPGNsYXNzIF9VMSwgY2xhc3MgX1UyPgogIHBhaXIoY29uc3QgcGFpcjxf
VTEsIF9VMj4mIF9fcCkgOiBmaXJzdChfX3AuZmlyc3QpLCBzZWNvbmQoX19wLnNlY29uZCkge30K
Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkK
eyAKICByZXR1cm4gX194LmZpcnN0ID09IF9feS5maXJzdCAmJiBfX3guc2Vjb25kID09IF9feS5z
ZWNvbmQ7IAp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9w
ZXJhdG9yPChjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYg
X195KQp7IAogIHJldHVybiBfX3guZmlyc3QgPCBfX3kuZmlyc3QgfHwgCiAgICAgICAgICghKF9f
eS5maXJzdCA8IF9feC5maXJzdCkgJiYgX194LnNlY29uZCA8IF9feS5zZWNvbmQpOyAKfQoKdGVt
cGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxpbmUgcGFpcjxfVDEsIF9UMj4gbWFrZV9w
YWlyKGNvbnN0IF9UMSYgX194LCBjb25zdCBfVDImIF9feSkKewogIHJldHVybiBwYWlyPF9UMSwg
X1QyPihfX3gsIF9feSk7Cn0KCiAKCgoKIAogCiAKIyA0MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKCiMgMSAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy90eXBlX3RyYWl0cy5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX19UWVBFX1RSQUlUU19ICgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnN0cnVjdCBfX3RydWVfdHlwZSB7Cn07CgpzdHJ1
Y3QgX19mYWxzZV90eXBlIHsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfX3R5cGVf
dHJhaXRzIHsgCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgIHRoaXNfZHVtbXlfbWVtYmVyX211
c3RfYmVfZmlyc3Q7CiAgICAgICAgICAgICAgICAgICAgCgoKCgoKICAgIAoKCgoKCgoKCiAKCiAg
IHR5cGVkZWYgX19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7
CiAgIHR5cGVkZWYgX19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7
CiAgIHR5cGVkZWYgX19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0
b3I7CiAgIHR5cGVkZWYgX19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAg
IHR5cGVkZWYgX19mYWxzZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKCgogCiAKIAoKCgp0ZW1w
bGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxib29sPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAg
ICBpc19QT0RfdHlwZTsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8Y2hh
cj4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3Ry
dWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1
Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29w
ZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBz
dHJ1Y3QgX190eXBlX3RyYWl0czxzaWduZWQgY2hhcj4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
ICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAg
aXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czx1bnNpZ25l
ZCBjaGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9j
b25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2Nv
bnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1l
bnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1
Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCgoKdGVtcGxh
dGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8d2NoYXJfdD4gewogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaXNfUE9EX3R5cGU7Cn07CgoKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHNo
b3J0PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25z
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0
cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRf
b3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rv
cjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4g
IHN0cnVjdCBfX3R5cGVfdHJhaXRzPHVuc2lnbmVkIHNob3J0PiB7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGlu
dD4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3Ry
dWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1
Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29w
ZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBz
dHJ1Y3QgX190eXBlX3RyYWl0czx1bnNpZ25lZCBpbnQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAg
IGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8bG9uZz4g
ewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0
b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3Rv
cjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJh
dG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAg
IHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1
Y3QgX190eXBlX3RyYWl0czx1bnNpZ25lZCBsb25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
ICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBp
c19QT0RfdHlwZTsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8bG9uZyBs
b25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25z
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0
cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRf
b3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rv
cjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4g
IHN0cnVjdCBfX3R5cGVfdHJhaXRzPHVuc2lnbmVkIGxvbmcgbG9uZz4gewogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07CgoKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJh
aXRzPGZsb2F0PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVs
dF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5
X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2ln
bm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBs
YXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGRvdWJsZT4gewogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxsb25n
IGRvdWJsZT4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRf
Y29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9j
b25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25t
ZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3Ry
dWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07CgoKCnRlbXBs
YXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfX3R5cGVfdHJhaXRzPF9UcCo+IHsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKIyAyOTUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4u
Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvdHlwZV90cmFpdHMuaCIgMwoKCgogCiAKCnRlbXBsYXRl
IDxjbGFzcyBfVHA+IHN0cnVjdCBfSXNfaW50ZWdlciB7CiAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUg
X0ludGVncmFsOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8Ym9vbD4gewog
IHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3Qg
X0lzX2ludGVnZXI8Y2hhcj4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoK
dGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPHNpZ25lZCBjaGFyPiB7CiAgdHlwZWRlZiBf
X3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8
dW5zaWduZWQgY2hhcj4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKCgp0
ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8d2NoYXJfdD4gewogIHR5cGVkZWYgX190cnVl
X3R5cGUgX0ludGVncmFsOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8c2hv
cnQ+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0
cnVjdCBfSXNfaW50ZWdlcjx1bnNpZ25lZCBzaG9ydD4gewogIHR5cGVkZWYgX190cnVlX3R5cGUg
X0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPGludD4gewogIHR5
cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19p
bnRlZ2VyPHVuc2lnbmVkIGludD4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9
OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPGxvbmc+IHsKICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjx1bnNp
Z25lZCBsb25nPiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07CgoKCnRlbXBs
YXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjxsb25nIGxvbmc+IHsKICB0eXBlZGVmIF9fdHJ1ZV90
eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjx1bnNpZ25l
ZCBsb25nIGxvbmc+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKCgog
CiAKIAojIDQ1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z
L3N0bF9hbGdvYmFzZS5oIiAyIDMKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9n
bnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVk
ZS9saW1pdHMuaCIgMSAzCiAKCgogCgojIDExNCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9n
bnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVk
ZS9saW1pdHMuaCIgMwoKCgoKCgoKIyA0OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUv
Z2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4v
Li4vaW5jbHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKIyAxICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNDIgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4z
L2luY2x1ZGUvc3RkZGVmLmgiIDMKCiMgNTEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251
L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4u
Ly4uL2luY2x1ZGUvZysrLTMvc3RsX2FsZ29iYXNlLmgiIDIgMwoKIyAxICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzIuOTUuMy9pbmNsdWRlL25ldy5oIiAxIDMKIAoKCiNkZWZpbmUgX19ORVdfSF9fCgojIDEgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvbmV3IiAxIDMKIAogCgoKI2RlZmluZSBfX05FV19f
CgojcHJhZ21hIGludGVyZmFjZSAibmV3IgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwojIDM0MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRk
ZWYuaCIgMwoKIyA4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL25ldyIgMiAzCgoKCmV4
dGVybiAiQysrIiB7CgpuYW1lc3BhY2Ugc3RkIHsKCiAgY2xhc3MgYmFkX2FsbG9jIDogcHVibGlj
IGV4Y2VwdGlvbiB7CiAgcHVibGljOgogICAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29u
c3QgdGhyb3coKSB7IHJldHVybiAiYmFkX2FsbG9jIjsgfQogIH07CgogIHN0cnVjdCBub3Rocm93
X3Qge307CiAgZXh0ZXJuIGNvbnN0IG5vdGhyb3dfdCBub3Rocm93OwogIHR5cGVkZWYgdm9pZCAo
Km5ld19oYW5kbGVyKSgpOwogIG5ld19oYW5kbGVyIHNldF9uZXdfaGFuZGxlciAobmV3X2hhbmRs
ZXIpOwoKfSAgCgogCnZvaWQgKm9wZXJhdG9yIG5ldyAoc2l6ZV90KSB0aHJvdyAoc3RkOjpiYWRf
YWxsb2MpOwp2b2lkICpvcGVyYXRvciBuZXdbXSAoc2l6ZV90KSB0aHJvdyAoc3RkOjpiYWRfYWxs
b2MpOwp2b2lkIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqKSB0aHJvdygpOwp2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdICh2b2lkICopIHRocm93KCk7CnZvaWQgKm9wZXJhdG9yIG5ldyAoc2l6ZV90LCBj
b25zdCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93KCk7CnZvaWQgKm9wZXJhdG9yIG5ld1tdIChzaXpl
X3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGUg
KHZvaWQgKiwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwp2b2lkIG9wZXJhdG9yIGRl
bGV0ZVtdICh2b2lkICosIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKCiAKaW5saW5l
IHZvaWQgKm9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQgKnBsYWNlKSB0aHJvdygpIHsgcmV0dXJu
IHBsYWNlOyB9CmlubGluZSB2b2lkICpvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQgKnBsYWNl
KSB0aHJvdygpIHsgcmV0dXJuIHBsYWNlOyB9Cn0gIAoKCiMgNiAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1
LjMvaW5jbHVkZS9uZXcuaCIgMiAzCgoKdXNpbmcgc3RkOjpuZXdfaGFuZGxlcjsKdXNpbmcgc3Rk
OjpzZXRfbmV3X2hhbmRsZXI7CgoKIyA1MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUv
Z2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4v
Li4vaW5jbHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKCgoKCgogCgogCgp0ZW1wbGF0
ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyMSwgY2xhc3MgX0ZvcndhcmRJdGVyMiwgY2xhc3MgX1RwPgpp
bmxpbmUgdm9pZCBfX2l0ZXJfc3dhcChfRm9yd2FyZEl0ZXIxIF9fYSwgX0ZvcndhcmRJdGVyMiBf
X2IsIF9UcCopIHsKICBfVHAgX190bXAgPSAqX19hOwogICpfX2EgPSAqX19iOwogICpfX2IgPSBf
X3RtcDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNsYXNzIF9Gb3J3YXJkSXRl
cjI+CmlubGluZSB2b2lkIGl0ZXJfc3dhcChfRm9yd2FyZEl0ZXIxIF9fYSwgX0ZvcndhcmRJdGVy
MiBfX2IpIHsKICBfX2l0ZXJfc3dhcChfX2EsIF9fYiwgX192YWx1ZV90eXBlKCBfX2EgKSApOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgdm9pZCBzd2FwKF9UcCYgX19hLCBfVHAmIF9f
YikgewogIF9UcCBfX3RtcCA9IF9fYTsKICBfX2EgPSBfX2I7CiAgX19iID0gX190bXA7Cn0KCiAK
IAoKCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgY29uc3QgX1RwJiBtaW4oY29uc3Qg
X1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iKSB7CiAgcmV0dXJuIF9fYiA8IF9fYSA/IF9fYiA6IF9f
YTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIGNvbnN0IF9UcCYgbWF4KGNvbnN0IF9U
cCYgX19hLCBjb25zdCBfVHAmIF9fYikgewogIHJldHVybiAgX19hIDwgX19iID8gX19iIDogX19h
Owp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgY29uc3Qg
X1RwJiBtaW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iLCBfQ29tcGFyZSBfX2NvbXAp
IHsKICByZXR1cm4gX19jb21wKF9fYiwgX19hKSA/IF9fYiA6IF9fYTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSBjb25zdCBfVHAmIG1heChjb25zdCBfVHAm
IF9fYSwgY29uc3QgX1RwJiBfX2IsIF9Db21wYXJlIF9fY29tcCkgewogIHJldHVybiBfX2NvbXAo
X19hLCBfX2IpID8gX19iIDogX19hOwp9CgogCiAKCiAKIAogCiAKIAogCiAKCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxp
bmUgX091dHB1dEl0ZXIgX19jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xh
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnLCBfRGlzdGFuY2UqKQp7CiAg
Zm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX3Jlc3VsdCwgKytfX2ZpcnN0KQogICAgKl9f
cmVzdWx0ID0gKl9fZmlyc3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfRGlzdGFuY2U+Cmlu
bGluZSBfT3V0cHV0SXRlcgpfX2NvcHkoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRv
bUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIHJhbmRvbV9h
Y2Nlc3NfaXRlcmF0b3JfdGFnLCBfRGlzdGFuY2UqKQp7CiAgZm9yIChfRGlzdGFuY2UgX19uID0g
X19sYXN0IC0gX19maXJzdDsgX19uID4gMDsgLS1fX24pIHsKICAgICpfX3Jlc3VsdCA9ICpfX2Zp
cnN0OwogICAgKytfX2ZpcnN0OwogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIF9fcmVzdWx0
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgX1RwKgpfX2NvcHlfdHJpdmlhbChjb25z
dCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCogX19sYXN0LCBfVHAqIF9fcmVzdWx0KSB7CiAgbWVt
bW92ZShfX3Jlc3VsdCwgX19maXJzdCwgc2l6ZW9mKF9UcCkgKiAoX19sYXN0IC0gX19maXJzdCkp
OwogIHJldHVybiBfX3Jlc3VsdCArIChfX2xhc3QgLSBfX2ZpcnN0KTsKfQoKCgp0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9Cb29sVHlwZT4Kc3Ry
dWN0IF9fY29weV9kaXNwYXRjaCB7CiAgc3RhdGljIF9PdXRwdXRJdGVyIGNvcHkoX0lucHV0SXRl
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBf
T3V0cHV0SXRlciBfX3Jlc3VsdCkgewogICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X0lucHV0SXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5IF9DYXRlZ29yeTsKICAgIHR5cGVkZWYg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX0Rp
c3RhbmNlOwogICAgcmV0dXJuIF9fY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LCBfQ2F0
ZWdvcnkoKSwgKF9EaXN0YW5jZSopIDApOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0
cnVjdCBfX2NvcHlfZGlzcGF0Y2g8X1RwKiwgX1RwKiwgX190cnVlX3R5cGU+CnsKICBzdGF0aWMg
X1RwKiBjb3B5KGNvbnN0IF9UcCogX19maXJzdCwgY29uc3QgX1RwKiBfX2xhc3QsIF9UcCogX19y
ZXN1bHQpIHsKICAgIHJldHVybiBfX2NvcHlfdHJpdmlhbChfX2ZpcnN0LCBfX2xhc3QsIF9fcmVz
dWx0KTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgX19jb3B5X2Rpc3BhdGNo
PGNvbnN0IF9UcCosIF9UcCosIF9fdHJ1ZV90eXBlPgp7CiAgc3RhdGljIF9UcCogY29weShjb25z
dCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCogX19sYXN0LCBfVHAqIF9fcmVzdWx0KSB7CiAgICBy
ZXR1cm4gX19jb3B5X3RyaXZpYWwoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7CiAgfQp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyPgppbmxpbmUgX091
dHB1dEl0ZXIgY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCkgewogIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+Ojp2YWx1ZV90eXBlIF9UcDsKICB0eXBl
ZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1RwPjo6aGFzX3RyaXZpYWxfYXNzaWdubWVudF9v
cGVyYXRvcgogICAgICAgICAgX1RyaXZpYWw7CiAgcmV0dXJuIF9fY29weV9kaXNwYXRjaDxfSW5w
dXRJdGVyLCBfT3V0cHV0SXRlciwgX1RyaXZpYWw+CiAgICA6OmNvcHkoX19maXJzdCwgX19sYXN0
LCBfX3Jlc3VsdCk7Cn0KCiMgMjEzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9p
bmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAzCgoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0Jp
ZGlyZWN0aW9uYWxJdGVyMSwgY2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMiwgCiAgICAgICAgICBj
bGFzcyBfRGlzdGFuY2U+CmlubGluZSBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fY29weV9iYWNrd2Fy
ZChfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3QsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX3Jl
c3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZGlyZWN0
aW9uYWxfaXRlcmF0b3JfdGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0Rpc3RhbmNlKikKewogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkKICAgICotLV9f
cmVzdWx0ID0gKi0tX19sYXN0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9EaXN0
YW5jZT4KaW5saW5lIF9CaWRpcmVjdGlvbmFsSXRlciBfX2NvcHlfYmFja3dhcmQoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSopCnsK
ICBmb3IgKF9EaXN0YW5jZSBfX24gPSBfX2xhc3QgLSBfX2ZpcnN0OyBfX24gPiAwOyAtLV9fbikK
ICAgICotLV9fcmVzdWx0ID0gKi0tX19sYXN0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKCgogCiAK
IAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMSwgY2xhc3MgX0JpZGlyZWN0
aW9uYWxJdGVyMiwKICAgICAgICAgIGNsYXNzIF9Cb29sVHlwZT4Kc3RydWN0IF9fY29weV9iYWNr
d2FyZF9kaXNwYXRjaAp7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0JpZGly
ZWN0aW9uYWxJdGVyMT46Oml0ZXJhdG9yX2NhdGVnb3J5IAogICAgICAgICAgX0NhdDsKICB0eXBl
ZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQmlkaXJlY3Rpb25hbEl0ZXIxPjo6ZGlmZmVy
ZW5jZV90eXBlCiAgICAgICAgICBfRGlzdGFuY2U7CgogIHN0YXRpYyBfQmlkaXJlY3Rpb25hbEl0
ZXIyIGNvcHkoX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0LCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19yZXN1bHQpIHsKICAg
IHJldHVybiBfX2NvcHlfYmFja3dhcmQoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX0NhdCgp
LCAoX0Rpc3RhbmNlKikgMCk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IF9f
Y29weV9iYWNrd2FyZF9kaXNwYXRjaDxfVHAqLCBfVHAqLCBfX3RydWVfdHlwZT4KewogIHN0YXRp
YyBfVHAqIGNvcHkoY29uc3QgX1RwKiBfX2ZpcnN0LCBjb25zdCBfVHAqIF9fbGFzdCwgX1RwKiBf
X3Jlc3VsdCkgewogICAgY29uc3QgcHRyZGlmZl90IF9OdW0gPSBfX2xhc3QgLSBfX2ZpcnN0Owog
ICAgbWVtbW92ZShfX3Jlc3VsdCAtIF9OdW0sIF9fZmlyc3QsIHNpemVvZihfVHApICogX051bSk7
CiAgICByZXR1cm4gX19yZXN1bHQgLSBfTnVtOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+
CnN0cnVjdCBfX2NvcHlfYmFja3dhcmRfZGlzcGF0Y2g8Y29uc3QgX1RwKiwgX1RwKiwgX190cnVl
X3R5cGU+CnsKICBzdGF0aWMgX1RwKiBjb3B5KGNvbnN0IF9UcCogX19maXJzdCwgY29uc3QgX1Rw
KiBfX2xhc3QsIF9UcCogX19yZXN1bHQpIHsKICAgIHJldHVybiAgX19jb3B5X2JhY2t3YXJkX2Rp
c3BhdGNoPF9UcCosIF9UcCosIF9fdHJ1ZV90eXBlPgogICAgICA6OmNvcHkoX19maXJzdCwgX19s
YXN0LCBfX3Jlc3VsdCk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9CSTEsIGNsYXNzIF9CSTI+
CmlubGluZSBfQkkyIGNvcHlfYmFja3dhcmQoX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwgX0JJ
MiBfX3Jlc3VsdCkgewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czx0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X0JJMj46OnZhbHVlX3R5cGU+CiAgICAgICAgICAgICAgICAgICAgICAg
IDo6aGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcgogICAgICAgICAgX1RyaXZpYWw7CiAg
cmV0dXJuIF9fY29weV9iYWNrd2FyZF9kaXNwYXRjaDxfQkkxLCBfQkkyLCBfVHJpdmlhbD4KICAg
ICAgICAgICAgICA6OmNvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7Cn0KCiMgMzAzICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGdvYmFz
ZS5oIiAzCgoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1NpemUsIGNs
YXNzIF9PdXRwdXRJdGVyPgpwYWlyPF9JbnB1dEl0ZXIsIF9PdXRwdXRJdGVyPiBfX2NvcHlfbihf
SW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpIHsKICBmb3IgKCA7IF9fY291
bnQgPiAwOyAtLV9fY291bnQpIHsKICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgKytfX2Zp
cnN0OwogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIHBhaXI8X0lucHV0SXRlciwgX091dHB1
dEl0ZXI+KF9fZmlyc3QsIF9fcmVzdWx0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SQUl0ZXIsIGNs
YXNzIF9TaXplLCBjbGFzcyBfT3V0cHV0SXRlcj4KaW5saW5lIHBhaXI8X1JBSXRlciwgX091dHB1
dEl0ZXI+Cl9fY29weV9uKF9SQUl0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwKICAgICAgICAg
X091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFn
KSB7CiAgX1JBSXRlciBfX2xhc3QgPSBfX2ZpcnN0ICsgX19jb3VudDsKICByZXR1cm4gcGFpcjxf
UkFJdGVyLCBfT3V0cHV0SXRlcj4oX19sYXN0LCBjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1
bHQpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBf
T3V0cHV0SXRlcj4KaW5saW5lIHBhaXI8X0lucHV0SXRlciwgX091dHB1dEl0ZXI+Cl9fY29weV9u
KF9JbnB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwgX091dHB1dEl0ZXIgX19yZXN1bHQp
IHsKICByZXR1cm4gX19jb3B5X24oX19maXJzdCwgX19jb3VudCwgX19yZXN1bHQsCiAgICAgICAg
ICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9PdXRwdXRJdGVyPgppbmxpbmUg
cGFpcjxfSW5wdXRJdGVyLCBfT3V0cHV0SXRlcj4KY29weV9uKF9JbnB1dEl0ZXIgX19maXJzdCwg
X1NpemUgX19jb3VudCwgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsKICByZXR1cm4gX19jb3B5X24o
X19maXJzdCwgX19jb3VudCwgX19yZXN1bHQpOwp9CgogCiAKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0Zv
cndhcmRJdGVyLCBjbGFzcyBfVHA+CnZvaWQgZmlsbChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0Zv
cndhcmRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbHVlKSB7CiAgZm9yICggOyBfX2ZpcnN0
ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgKl9fZmlyc3QgPSBfX3ZhbHVlOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfVHA+Cl9PdXRwdXRJdGVy
IGZpbGxfbihfT3V0cHV0SXRlciBfX2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0IF9UcCYgX192YWx1
ZSkgewogIGZvciAoIDsgX19uID4gMDsgLS1fX24sICsrX19maXJzdCkKICAgICpfX2ZpcnN0ID0g
X192YWx1ZTsKICByZXR1cm4gX19maXJzdDsKfQoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0
SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyPgpwYWlyPF9JbnB1dEl0ZXIxLCBfSW5wdXRJdGVyMj4g
bWlzbWF0Y2goX0lucHV0SXRlcjEgX19maXJzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIpIHsKICB3aGlsZSAoX19maXJz
dDEgIT0gX19sYXN0MSAmJiAqX19maXJzdDEgPT0gKl9fZmlyc3QyKSB7CiAgICArK19fZmlyc3Qx
OwogICAgKytfX2ZpcnN0MjsKICB9CiAgcmV0dXJuIHBhaXI8X0lucHV0SXRlcjEsIF9JbnB1dEl0
ZXIyPihfX2ZpcnN0MSwgX19maXJzdDIpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEs
IGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfQmluYXJ5UHJlZGljYXRlPgpwYWlyPF9JbnB1dEl0
ZXIxLCBfSW5wdXRJdGVyMj4gbWlzbWF0Y2goX0lucHV0SXRlcjEgX19maXJzdDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJlZGljYXRl
IF9fYmluYXJ5X3ByZWQpIHsKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2JpbmFy
eV9wcmVkKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkgewogICAgKytfX2ZpcnN0MTsKICAgICsrX19m
aXJzdDI7CiAgfQogIHJldHVybiBwYWlyPF9JbnB1dEl0ZXIxLCBfSW5wdXRJdGVyMj4oX19maXJz
dDEsIF9fZmlyc3QyKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5w
dXRJdGVyMj4KaW5saW5lIGJvb2wgZXF1YWwoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0
ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyKSB7CiAg
Zm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyArK19fZmlyc3QxLCArK19fZmlyc3QyKQogICAg
aWYgKCpfX2ZpcnN0MSAhPSAqX19maXJzdDIpCiAgICAgIHJldHVybiBmYWxzZTsKICByZXR1cm4g
dHJ1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwg
Y2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KaW5saW5lIGJvb2wgZXF1YWwoX0lucHV0SXRlcjEgX19m
aXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIy
IF9fZmlyc3QyLCBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQpIHsKICBmb3IgKCA7IF9f
Zmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICsrX19maXJzdDIpCiAgICBpZiAoIV9fYmlu
YXJ5X3ByZWQoKl9fZmlyc3QxLCAqX19maXJzdDIpKQogICAgICByZXR1cm4gZmFsc2U7CiAgcmV0
dXJuIHRydWU7Cn0KCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9J
bnB1dEl0ZXIyPgpib29sIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKF9JbnB1dEl0ZXIxIF9fZmly
c3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9J
bnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyKSB7CiAgZm9yICggOyBfX2Zp
cnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIKICAgICAgICA7ICsrX19maXJz
dDEsICsrX19maXJzdDIpIHsKICAgIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpCiAgICAgIHJl
dHVybiB0cnVlOwogICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICAgcmV0dXJuIGZh
bHNlOwogIH0KICByZXR1cm4gX19maXJzdDEgPT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xh
c3QyOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBj
bGFzcyBfQ29tcGFyZT4KYm9vbCBsZXhpY29ncmFwaGljYWxfY29tcGFyZShfSW5wdXRJdGVyMSBf
X2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICBmb3IgKCA7IF9fZmlyc3QxICE9
IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MgogICAgICAgIDsgKytfX2ZpcnN0MSwgKytf
X2ZpcnN0MikgewogICAgaWYgKF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0MikpCiAgICAgIHJl
dHVybiB0cnVlOwogICAgaWYgKF9fY29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkpCiAgICAgIHJl
dHVybiBmYWxzZTsKICB9CiAgcmV0dXJuIF9fZmlyc3QxID09IF9fbGFzdDEgJiYgX19maXJzdDIg
IT0gX19sYXN0MjsKfQoKaW5saW5lIGJvb2wgCmxleGljb2dyYXBoaWNhbF9jb21wYXJlKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
bnNpZ25lZCBjaGFyKiBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBfX2ZpcnN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciogX19sYXN0MikKewogIGNvbnN0IHNpemVfdCBfX2xlbjEgPSBfX2xhc3QxIC0gX19m
aXJzdDE7CiAgY29uc3Qgc2l6ZV90IF9fbGVuMiA9IF9fbGFzdDIgLSBfX2ZpcnN0MjsKICBjb25z
dCBpbnQgX19yZXN1bHQgPSBtZW1jbXAoX19maXJzdDEsIF9fZmlyc3QyLCBtaW4oX19sZW4xLCBf
X2xlbjIpKTsKICByZXR1cm4gX19yZXN1bHQgIT0gMCA/IF9fcmVzdWx0IDwgMCA6IF9fbGVuMSA8
IF9fbGVuMjsKfQoKaW5saW5lIGJvb2wgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoY29uc3QgY2hh
ciogX19maXJzdDEsIGNvbnN0IGNoYXIqIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIF9fZmlyc3QyLCBjb25zdCBjaGFyKiBfX2xhc3QyKQp7
CgogIHJldHVybiBsZXhpY29ncmFwaGljYWxfY29tcGFyZSgoY29uc3Qgc2lnbmVkIGNoYXIqKSBf
X2ZpcnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHNpZ25lZCBj
aGFyKikgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHNp
Z25lZCBjaGFyKikgX19maXJzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj
b25zdCBzaWduZWQgY2hhciopIF9fbGFzdDIpOwoKCgoKCgp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
cHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyPgppbnQgX19sZXhpY29ncmFwaGljYWxfY29tcGFy
ZV8zd2F5KF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJ
dGVyMiBfX2xhc3QyKQp7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIg
IT0gX19sYXN0MikgewogICAgaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikKICAgICAgcmV0dXJu
IC0xOwogICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICAgcmV0dXJuIDE7CiAgICAr
K19fZmlyc3QxOwogICAgKytfX2ZpcnN0MjsKICB9CiAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIp
IHsKICAgIHJldHVybiAhKF9fZmlyc3QxID09IF9fbGFzdDEpOwogIH0KICBlbHNlIHsKICAgIHJl
dHVybiAtMTsKICB9Cn0KCmlubGluZSBpbnQKX19sZXhpY29ncmFwaGljYWxfY29tcGFyZV8zd2F5
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fZmlyc3QyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0MikKewogIGNvbnN0IHB0
cmRpZmZfdCBfX2xlbjEgPSBfX2xhc3QxIC0gX19maXJzdDE7CiAgY29uc3QgcHRyZGlmZl90IF9f
bGVuMiA9IF9fbGFzdDIgLSBfX2ZpcnN0MjsKICBjb25zdCBpbnQgX19yZXN1bHQgPSBtZW1jbXAo
X19maXJzdDEsIF9fZmlyc3QyLCBtaW4oX19sZW4xLCBfX2xlbjIpKTsKICByZXR1cm4gX19yZXN1
bHQgIT0gMCA/IF9fcmVzdWx0IAogICAgICAgICAgICAgICAgICAgICAgIDogKF9fbGVuMSA9PSBf
X2xlbjIgPyAwIDogKF9fbGVuMSA8IF9fbGVuMiA/IC0xIDogMSkpOwp9CgppbmxpbmUgaW50IApf
X2xleGljb2dyYXBoaWNhbF9jb21wYXJlXzN3YXkoY29uc3QgY2hhciogX19maXJzdDEsIGNvbnN0
IGNoYXIqIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBfX2ZpcnN0MiwgY29uc3QgY2hhciogX19sYXN0MikKewoKICByZXR1cm4gX19sZXhpY29ncmFw
aGljYWxfY29tcGFyZV8zd2F5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25z
dCBzaWduZWQgY2hhciopIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChjb25zdCBzaWduZWQgY2hhciopIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNvbnN0IHNpZ25lZCBjaGFyKikgX19maXJzdDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGNvbnN0IHNpZ25lZCBjaGFyKikgX19sYXN0Mik7CgoKCgoKCn0KCnRlbXBs
YXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjI+CmludCBsZXhpY29ncmFw
aGljYWxfY29tcGFyZV8zd2F5KF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xh
c3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0
MiwgX0lucHV0SXRlcjIgX19sYXN0MikKewogIHJldHVybiBfX2xleGljb2dyYXBoaWNhbF9jb21w
YXJlXzN3YXkoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyKTsKfQoKIAoKCgog
CiAKIAojIDU2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z
L3N0bF90cmVlLmgiIDIgMwoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfY29uc3RydWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgojZGVmaW5lIF9fU0dJX1NUTF9JTlRFUk5BTF9DT05TVFJVQ1RfSAoKCgogCgog
CiAKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSB2b2lkIGRlc3Ryb3koX1RwKiBfX3BvaW50
ZXIpIHsKICBfX3BvaW50ZXItPn5fVHAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3Mg
X1QyPgppbmxpbmUgdm9pZCBjb25zdHJ1Y3QoX1QxKiBfX3AsIGNvbnN0IF9UMiYgX192YWx1ZSkg
ewogIG5ldyAoX19wKSBfVDEoX192YWx1ZSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVDE+CmlubGlu
ZSB2b2lkIGNvbnN0cnVjdChfVDEqIF9fcCkgewogIG5ldyAoX19wKSBfVDEoKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CmlubGluZSB2b2lkCl9fZGVzdHJveV9hdXgoX0Zv
cndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwgX19mYWxzZV90
eXBlKQp7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgZGVzdHJv
eSgmKl9fZmlyc3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KaW5saW5l
IHZvaWQgX19kZXN0cm95X2F1eChfRm9yd2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJhdG9yLCBf
X3RydWVfdHlwZSkge30KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yLCBjbGFzcyBf
VHA+CmlubGluZSB2b2lkCl9fZGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3
YXJkSXRlcmF0b3IgX19sYXN0LCBfVHAqKQp7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJh
aXRzPF9UcD46Omhhc190cml2aWFsX2Rlc3RydWN0b3IKICAgICAgICAgIF9Ucml2aWFsX2Rlc3Ry
dWN0b3I7CiAgX19kZXN0cm95X2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9Ucml2aWFsX2Rlc3RydWN0
b3IoKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yPgppbmxpbmUgdm9pZCBk
ZXN0cm95KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3Qp
IHsKICBfX2Rlc3Ryb3koX19maXJzdCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAp
Owp9CgppbmxpbmUgdm9pZCBkZXN0cm95KGNoYXIqLCBjaGFyKikge30KaW5saW5lIHZvaWQgZGVz
dHJveSh3Y2hhcl90Kiwgd2NoYXJfdCopIHt9CgogCgoKCiAKIAogCiMgNTggIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3RyZWUuaCIgMiAzCgojIDEg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2Z1bmN0
aW9uLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgojZGVmaW5lIF9fU0dJ
X1NUTF9JTlRFUk5BTF9GVU5DVElPTl9ICgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0FyZywgY2xhc3Mg
X1Jlc3VsdD4Kc3RydWN0IHVuYXJ5X2Z1bmN0aW9uIHsKICB0eXBlZGVmIF9BcmcgYXJndW1lbnRf
dHlwZTsKICB0eXBlZGVmIF9SZXN1bHQgcmVzdWx0X3R5cGU7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0FyZzEsIGNsYXNzIF9BcmcyLCBjbGFzcyBfUmVzdWx0PgpzdHJ1Y3QgYmluYXJ5X2Z1bmN0aW9u
IHsKICB0eXBlZGVmIF9BcmcxIGZpcnN0X2FyZ3VtZW50X3R5cGU7CiAgdHlwZWRlZiBfQXJnMiBz
ZWNvbmRfYXJndW1lbnRfdHlwZTsKICB0eXBlZGVmIF9SZXN1bHQgcmVzdWx0X3R5cGU7Cn07ICAg
ICAgCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgcGx1cyA6IHB1YmxpYyBiaW5hcnlfZnVu
Y3Rpb248X1RwLF9UcCxfVHA+IHsKICBfVHAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29u
c3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCArIF9feTsgfQp9OwoKdGVtcGxhdGUgPGNs
YXNzIF9UcD4Kc3RydWN0IG1pbnVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9U
cD4gewogIF9UcCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29u
c3QgeyByZXR1cm4gX194IC0gX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3Qg
bXVsdGlwbGllcyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxfVHA+IHsKICBfVHAg
b3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJu
IF9feCAqIF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGRpdmlkZXMgOiBw
dWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsX1RwPiB7CiAgX1RwIG9wZXJhdG9yKCkoY29u
c3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggLyBfX3k7IH0K
fTsKCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHA+IGlubGluZSBfVHAgaWRlbnRpdHlfZWxlbWVudChw
bHVzPF9UcD4pIHsKICByZXR1cm4gX1RwKDApOwp9CnRlbXBsYXRlIDxjbGFzcyBfVHA+IGlubGlu
ZSBfVHAgaWRlbnRpdHlfZWxlbWVudChtdWx0aXBsaWVzPF9UcD4pIHsKICByZXR1cm4gX1RwKDEp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbW9kdWx1cyA6IHB1YmxpYyBiaW5hcnlf
ZnVuY3Rpb248X1RwLF9UcCxfVHA+IAp7CiAgX1RwIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gs
IGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggJSBfX3k7IH0KfTsKCnRlbXBsYXRl
IDxjbGFzcyBfVHA+CnN0cnVjdCBuZWdhdGUgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLF9U
cD4gCnsKICBfVHAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCkgY29uc3QgeyByZXR1cm4gLV9f
eDsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGVxdWFsX3RvIDogcHVibGljIGJp
bmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+IAp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9U
cCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ID09IF9feTsgfQp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IG5vdF9lcXVhbF90byA6IHB1YmxpYyBiaW5hcnlf
ZnVuY3Rpb248X1RwLF9UcCxib29sPiAKewogIGJvb2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9f
eCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAhPSBfX3k7IH0KfTsKCnRlbXBs
YXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBncmVhdGVyIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxf
VHAsX1RwLGJvb2w+IAp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBf
VHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ID4gX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwPgpzdHJ1Y3QgbGVzcyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxib29sPiAK
ewogIGJvb2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0
IHsgcmV0dXJuIF9feCA8IF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGdy
ZWF0ZXJfZXF1YWwgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4KewogIGJv
b2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0
dXJuIF9feCA+PSBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBsZXNzX2Vx
dWFsIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+IAp7CiAgYm9vbCBvcGVy
YXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194
IDw9IF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGxvZ2ljYWxfYW5kIDog
cHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCko
Y29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggJiYgX195
OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbG9naWNhbF9vciA6IHB1YmxpYyBi
aW5hcnlfZnVuY3Rpb248X1RwLF9UcCxib29sPgp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9U
cCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194IHx8IF9feTsgfQp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGxvZ2ljYWxfbm90IDogcHVibGljIHVuYXJ5X2Z1
bmN0aW9uPF9UcCxib29sPgp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194KSBjb25z
dCB7IHJldHVybiAhX194OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4KY2xhc3Mg
dW5hcnlfbmVnYXRlCiAgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgX1ByZWRpY2F0
ZTo6YXJndW1lbnRfdHlwZSwgYm9vbD4gewpwcm90ZWN0ZWQ6CiAgX1ByZWRpY2F0ZSBfTV9wcmVk
OwpwdWJsaWM6CiAgZXhwbGljaXQgdW5hcnlfbmVnYXRlKGNvbnN0IF9QcmVkaWNhdGUmIF9feCkg
OiBfTV9wcmVkKF9feCkge30KICBib29sIG9wZXJhdG9yKCkoY29uc3QgdHlwZW5hbWUgX1ByZWRp
Y2F0ZTo6YXJndW1lbnRfdHlwZSYgX194KSBjb25zdCB7CiAgICByZXR1cm4gIV9NX3ByZWQoX194
KTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4KaW5saW5lIHVuYXJ5X25lZ2F0
ZTxfUHJlZGljYXRlPiAKbm90MShjb25zdCBfUHJlZGljYXRlJiBfX3ByZWQpCnsKICByZXR1cm4g
dW5hcnlfbmVnYXRlPF9QcmVkaWNhdGU+KF9fcHJlZCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUHJl
ZGljYXRlPiAKY2xhc3MgYmluYXJ5X25lZ2F0ZSAKICA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248
dHlwZW5hbWUgX1ByZWRpY2F0ZTo6Zmlyc3RfYXJndW1lbnRfdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZW5hbWUgX1ByZWRpY2F0ZTo6c2Vjb25kX2FyZ3VtZW50X3R5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2w+IHsKcHJvdGVjdGVkOgogIF9QcmVkaWNhdGUg
X01fcHJlZDsKcHVibGljOgogIGV4cGxpY2l0IGJpbmFyeV9uZWdhdGUoY29uc3QgX1ByZWRpY2F0
ZSYgX194KSA6IF9NX3ByZWQoX194KSB7fQogIGJvb2wgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFt
ZSBfUHJlZGljYXRlOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3gsIAogICAgICAgICAgICAgICAg
ICBjb25zdCB0eXBlbmFtZSBfUHJlZGljYXRlOjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX195KSBj
b25zdAogIHsKICAgIHJldHVybiAhX01fcHJlZChfX3gsIF9feSk7IAogIH0KfTsKCnRlbXBsYXRl
IDxjbGFzcyBfUHJlZGljYXRlPgppbmxpbmUgYmluYXJ5X25lZ2F0ZTxfUHJlZGljYXRlPiAKbm90
Mihjb25zdCBfUHJlZGljYXRlJiBfX3ByZWQpCnsKICByZXR1cm4gYmluYXJ5X25lZ2F0ZTxfUHJl
ZGljYXRlPihfX3ByZWQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09wZXJhdGlvbj4gCmNsYXNzIGJp
bmRlcjFzdAogIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVyYXRpb246OnNl
Y29uZF9hcmd1bWVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIF9P
cGVyYXRpb246OnJlc3VsdF90eXBlPiB7CnByb3RlY3RlZDoKICBfT3BlcmF0aW9uIG9wOwogIHR5
cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUgdmFsdWU7CnB1YmxpYzoKICBi
aW5kZXIxc3QoY29uc3QgX09wZXJhdGlvbiYgX194LAogICAgICAgICAgICBjb25zdCB0eXBlbmFt
ZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3kpCiAgICAgIDogb3AoX194KSwg
dmFsdWUoX195KSB7fQogIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBlCiAgb3BlcmF0
b3IoKShjb25zdCB0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX194
KSBjb25zdCB7CiAgICByZXR1cm4gb3AodmFsdWUsIF9feCk7IAogIH0KfTsKCnRlbXBsYXRlIDxj
bGFzcyBfT3BlcmF0aW9uLCBjbGFzcyBfVHA+CmlubGluZSBiaW5kZXIxc3Q8X09wZXJhdGlvbj4g
CmJpbmQxc3QoY29uc3QgX09wZXJhdGlvbiYgX19vcGVyLCBjb25zdCBfVHAmIF9feCkgCnsKICB0
eXBlZGVmIHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUgX0FyZzFfdHlw
ZTsKICByZXR1cm4gYmluZGVyMXN0PF9PcGVyYXRpb24+KF9fb3BlciwgX0FyZzFfdHlwZShfX3gp
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRpb24+IApjbGFzcyBiaW5kZXIybmQKICA6IHB1
YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3Vs
dF90eXBlPiB7CnByb3RlY3RlZDoKICBfT3BlcmF0aW9uIG9wOwogIHR5cGVuYW1lIF9PcGVyYXRp
b246OnNlY29uZF9hcmd1bWVudF90eXBlIHZhbHVlOwpwdWJsaWM6CiAgYmluZGVyMm5kKGNvbnN0
IF9PcGVyYXRpb24mIF9feCwKICAgICAgICAgICAgY29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjo6
c2Vjb25kX2FyZ3VtZW50X3R5cGUmIF9feSkgCiAgICAgIDogb3AoX194KSwgdmFsdWUoX195KSB7
fQogIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBlCiAgb3BlcmF0b3IoKShjb25zdCB0
eXBlbmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0IHsKICAg
IHJldHVybiBvcChfX3gsIHZhbHVlKTsgCiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRp
b24sIGNsYXNzIF9UcD4KaW5saW5lIGJpbmRlcjJuZDxfT3BlcmF0aW9uPiAKYmluZDJuZChjb25z
dCBfT3BlcmF0aW9uJiBfX29wZXIsIGNvbnN0IF9UcCYgX194KSAKewogIHR5cGVkZWYgdHlwZW5h
bWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgX0FyZzJfdHlwZTsKICByZXR1cm4g
YmluZGVyMm5kPF9PcGVyYXRpb24+KF9fb3BlciwgX0FyZzJfdHlwZShfX3gpKTsKfQoKIAoKdGVt
cGxhdGUgPGNsYXNzIF9PcGVyYXRpb24xLCBjbGFzcyBfT3BlcmF0aW9uMj4KY2xhc3MgdW5hcnlf
Y29tcG9zZQogIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVyYXRpb24yOjph
cmd1bWVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIF9PcGVyYXRp
b24xOjpyZXN1bHRfdHlwZT4gCnsKcHJvdGVjdGVkOgogIF9PcGVyYXRpb24xIF9fb3AxOwogIF9P
cGVyYXRpb24yIF9fb3AyOwpwdWJsaWM6CiAgdW5hcnlfY29tcG9zZShjb25zdCBfT3BlcmF0aW9u
MSYgX194LCBjb25zdCBfT3BlcmF0aW9uMiYgX195KSAKICAgIDogX19vcDEoX194KSwgX19vcDIo
X195KSB7fQogIHR5cGVuYW1lIF9PcGVyYXRpb24xOjpyZXN1bHRfdHlwZQogIG9wZXJhdG9yKCko
Y29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjI6OmFyZ3VtZW50X3R5cGUmIF9feCkgY29uc3Qgewog
ICAgcmV0dXJuIF9fb3AxKF9fb3AyKF9feCkpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfT3Bl
cmF0aW9uMSwgY2xhc3MgX09wZXJhdGlvbjI+CmlubGluZSB1bmFyeV9jb21wb3NlPF9PcGVyYXRp
b24xLF9PcGVyYXRpb24yPiAKY29tcG9zZTEoY29uc3QgX09wZXJhdGlvbjEmIF9fb3AxLCBjb25z
dCBfT3BlcmF0aW9uMiYgX19vcDIpCnsKICByZXR1cm4gdW5hcnlfY29tcG9zZTxfT3BlcmF0aW9u
MSxfT3BlcmF0aW9uMj4oX19vcDEsIF9fb3AyKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRp
b24xLCBjbGFzcyBfT3BlcmF0aW9uMiwgY2xhc3MgX09wZXJhdGlvbjM+CmNsYXNzIGJpbmFyeV9j
b21wb3NlCiAgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgX09wZXJhdGlvbjI6OmFy
Z3VtZW50X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX09wZXJhdGlv
bjE6OnJlc3VsdF90eXBlPiB7CnByb3RlY3RlZDoKICBfT3BlcmF0aW9uMSBfTV9vcDE7CiAgX09w
ZXJhdGlvbjIgX01fb3AyOwogIF9PcGVyYXRpb24zIF9NX29wMzsKcHVibGljOgogIGJpbmFyeV9j
b21wb3NlKGNvbnN0IF9PcGVyYXRpb24xJiBfX3gsIGNvbnN0IF9PcGVyYXRpb24yJiBfX3ksIAog
ICAgICAgICAgICAgICAgIGNvbnN0IF9PcGVyYXRpb24zJiBfX3opIAogICAgOiBfTV9vcDEoX194
KSwgX01fb3AyKF9feSksIF9NX29wMyhfX3opIHsgfQogIHR5cGVuYW1lIF9PcGVyYXRpb24xOjpy
ZXN1bHRfdHlwZQogIG9wZXJhdG9yKCkoY29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjI6OmFyZ3Vt
ZW50X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9NX29wMShfTV9vcDIoX194KSwgX01f
b3AzKF9feCkpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9uMSwgY2xhc3MgX09w
ZXJhdGlvbjIsIGNsYXNzIF9PcGVyYXRpb24zPgppbmxpbmUgYmluYXJ5X2NvbXBvc2U8X09wZXJh
dGlvbjEsIF9PcGVyYXRpb24yLCBfT3BlcmF0aW9uMz4gCmNvbXBvc2UyKGNvbnN0IF9PcGVyYXRp
b24xJiBfX29wMSwgY29uc3QgX09wZXJhdGlvbjImIF9fb3AyLCAKICAgICAgICAgY29uc3QgX09w
ZXJhdGlvbjMmIF9fb3AzKQp7CiAgcmV0dXJuIGJpbmFyeV9jb21wb3NlPF9PcGVyYXRpb24xLF9P
cGVyYXRpb24yLF9PcGVyYXRpb24zPgogICAgKF9fb3AxLCBfX29wMiwgX19vcDMpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0FyZywgY2xhc3MgX1Jlc3VsdD4KY2xhc3MgcG9pbnRlcl90b191bmFyeV9m
dW5jdGlvbiA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfQXJnLCBfUmVzdWx0PiB7CnByb3RlY3Rl
ZDoKICBfUmVzdWx0ICgqX01fcHRyKShfQXJnKTsKcHVibGljOgogIHBvaW50ZXJfdG9fdW5hcnlf
ZnVuY3Rpb24oKSB7fQogIGV4cGxpY2l0IHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24oX1Jlc3Vs
dCAoKl9feCkoX0FyZykpIDogX01fcHRyKF9feCkge30KICBfUmVzdWx0IG9wZXJhdG9yKCkoX0Fy
ZyBfX3gpIGNvbnN0IHsgcmV0dXJuIF9NX3B0cihfX3gpOyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0FyZywgY2xhc3MgX1Jlc3VsdD4KaW5saW5lIHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb248X0Fy
ZywgX1Jlc3VsdD4gcHRyX2Z1bihfUmVzdWx0ICgqX194KShfQXJnKSkKewogIHJldHVybiBwb2lu
dGVyX3RvX3VuYXJ5X2Z1bmN0aW9uPF9BcmcsIF9SZXN1bHQ+KF9feCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfQXJnMSwgY2xhc3MgX0FyZzIsIGNsYXNzIF9SZXN1bHQ+CmNsYXNzIHBvaW50ZXJfdG9f
YmluYXJ5X2Z1bmN0aW9uIDogCiAgcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfQXJnMSxfQXJnMixf
UmVzdWx0PiB7CnByb3RlY3RlZDoKICAgIF9SZXN1bHQgKCpfTV9wdHIpKF9BcmcxLCBfQXJnMik7
CnB1YmxpYzoKICAgIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uKCkge30KICAgIGV4cGxpY2l0
IHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uKF9SZXN1bHQgKCpfX3gpKF9BcmcxLCBfQXJnMikp
IAogICAgICA6IF9NX3B0cihfX3gpIHt9CiAgICBfUmVzdWx0IG9wZXJhdG9yKCkoX0FyZzEgX194
LCBfQXJnMiBfX3kpIGNvbnN0IHsKICAgICAgcmV0dXJuIF9NX3B0cihfX3gsIF9feSk7CiAgICB9
Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0FyZzEsIGNsYXNzIF9BcmcyLCBjbGFzcyBfUmVzdWx0Pgpp
bmxpbmUgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb248X0FyZzEsX0FyZzIsX1Jlc3VsdD4gCnB0
cl9mdW4oX1Jlc3VsdCAoKl9feCkoX0FyZzEsIF9BcmcyKSkgewogIHJldHVybiBwb2ludGVyX3Rv
X2JpbmFyeV9mdW5jdGlvbjxfQXJnMSxfQXJnMixfUmVzdWx0PihfX3gpOwp9CgogCnRlbXBsYXRl
IDxjbGFzcyBfVHA+CnN0cnVjdCBfSWRlbnRpdHkgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1Rw
LF9UcD4gewogIGNvbnN0IF9UcCYgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCkgY29uc3QgeyBy
ZXR1cm4gX194OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPiBzdHJ1Y3QgaWRlbnRpdHkgOiBw
dWJsaWMgX0lkZW50aXR5PF9UcD4ge307CgogCnRlbXBsYXRlIDxjbGFzcyBfUGFpcj4Kc3RydWN0
IF9TZWxlY3Qxc3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1BhaXIsIHR5cGVuYW1lIF9QYWly
OjpmaXJzdF90eXBlPiB7CiAgY29uc3QgdHlwZW5hbWUgX1BhaXI6OmZpcnN0X3R5cGUmIG9wZXJh
dG9yKCkoY29uc3QgX1BhaXImIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9feC5maXJzdDsKICB9
Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1BhaXI+CnN0cnVjdCBfU2VsZWN0Mm5kIDogcHVibGljIHVu
YXJ5X2Z1bmN0aW9uPF9QYWlyLCB0eXBlbmFtZSBfUGFpcjo6c2Vjb25kX3R5cGU+CnsKICBjb25z
dCB0eXBlbmFtZSBfUGFpcjo6c2Vjb25kX3R5cGUmIG9wZXJhdG9yKCkoY29uc3QgX1BhaXImIF9f
eCkgY29uc3QgewogICAgcmV0dXJuIF9feC5zZWNvbmQ7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNz
IF9QYWlyPiBzdHJ1Y3Qgc2VsZWN0MXN0IDogcHVibGljIF9TZWxlY3Qxc3Q8X1BhaXI+IHt9Owp0
ZW1wbGF0ZSA8Y2xhc3MgX1BhaXI+IHN0cnVjdCBzZWxlY3QybmQgOiBwdWJsaWMgX1NlbGVjdDJu
ZDxfUGFpcj4ge307CgogCnRlbXBsYXRlIDxjbGFzcyBfQXJnMSwgY2xhc3MgX0FyZzI+CnN0cnVj
dCBfUHJvamVjdDFzdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X0FyZzEsIF9BcmcyLCBfQXJn
MT4gewogIF9BcmcxIG9wZXJhdG9yKCkoY29uc3QgX0FyZzEmIF9feCwgY29uc3QgX0FyZzImKSBj
b25zdCB7IHJldHVybiBfX3g7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfQXJnMSwgY2xhc3MgX0Fy
ZzI+CnN0cnVjdCBfUHJvamVjdDJuZCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X0FyZzEsIF9B
cmcyLCBfQXJnMj4gewogIF9BcmcyIG9wZXJhdG9yKCkoY29uc3QgX0FyZzEmLCBjb25zdCBfQXJn
MiYgX195KSBjb25zdCB7IHJldHVybiBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfQXJnMSwg
Y2xhc3MgX0FyZzI+IApzdHJ1Y3QgcHJvamVjdDFzdCA6IHB1YmxpYyBfUHJvamVjdDFzdDxfQXJn
MSwgX0FyZzI+IHt9OwoKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMj4Kc3RydWN0
IHByb2plY3QybmQgOiBwdWJsaWMgX1Byb2plY3QybmQ8X0FyZzEsIF9BcmcyPiB7fTsKCiAKIAog
CnRlbXBsYXRlIDxjbGFzcyBfUmVzdWx0PgpzdHJ1Y3QgY29uc3RhbnRfdm9pZF9mdW4KewogIHR5
cGVkZWYgX1Jlc3VsdCByZXN1bHRfdHlwZTsKICByZXN1bHRfdHlwZSBfX3ZhbDsKICBjb25zdGFu
dF92b2lkX2Z1bihjb25zdCByZXN1bHRfdHlwZSYgX192KSA6IF9fdmFsKF9fdikge30KICBjb25z
dCByZXN1bHRfdHlwZSYgb3BlcmF0b3IoKSgpIGNvbnN0IHsgcmV0dXJuIF9fdmFsOyB9Cn07ICAK
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jlc3VsdCwgY2xhc3MgX0FyZ3VtZW50ID0gX1Jlc3VsdD4KCgoK
c3RydWN0IGNvbnN0YW50X3VuYXJ5X2Z1biA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfQXJndW1l
bnQsIF9SZXN1bHQ+IHsKICBfUmVzdWx0IF9NX3ZhbDsKICBjb25zdGFudF91bmFyeV9mdW4oY29u
c3QgX1Jlc3VsdCYgX192KSA6IF9NX3ZhbChfX3YpIHt9CiAgY29uc3QgX1Jlc3VsdCYgb3BlcmF0
b3IoKShjb25zdCBfQXJndW1lbnQmKSBjb25zdCB7IHJldHVybiBfTV92YWw7IH0KfTsKCgp0ZW1w
bGF0ZSA8Y2xhc3MgX1Jlc3VsdCwgY2xhc3MgX0FyZzEgPSBfUmVzdWx0LCBjbGFzcyBfQXJnMiA9
IF9BcmcxPgoKCgpzdHJ1Y3QgY29uc3RhbnRfYmluYXJ5X2Z1biA6IHB1YmxpYyBiaW5hcnlfZnVu
Y3Rpb248X0FyZzEsIF9BcmcyLCBfUmVzdWx0PiB7CiAgX1Jlc3VsdCBfTV92YWw7CiAgY29uc3Rh
bnRfYmluYXJ5X2Z1bihjb25zdCBfUmVzdWx0JiBfX3YpIDogX01fdmFsKF9fdikge30KICBjb25z
dCBfUmVzdWx0JiBvcGVyYXRvcigpKGNvbnN0IF9BcmcxJiwgY29uc3QgX0FyZzImKSBjb25zdCB7
CiAgICByZXR1cm4gX01fdmFsOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfUmVzdWx0Pgppbmxp
bmUgY29uc3RhbnRfdm9pZF9mdW48X1Jlc3VsdD4gY29uc3RhbnQwKGNvbnN0IF9SZXN1bHQmIF9f
dmFsKQp7CiAgcmV0dXJuIGNvbnN0YW50X3ZvaWRfZnVuPF9SZXN1bHQ+KF9fdmFsKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9SZXN1bHQ+CmlubGluZSBjb25zdGFudF91bmFyeV9mdW48X1Jlc3VsdCxf
UmVzdWx0PiBjb25zdGFudDEoY29uc3QgX1Jlc3VsdCYgX192YWwpCnsKICByZXR1cm4gY29uc3Rh
bnRfdW5hcnlfZnVuPF9SZXN1bHQsX1Jlc3VsdD4oX192YWwpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1Jlc3VsdD4KaW5saW5lIGNvbnN0YW50X2JpbmFyeV9mdW48X1Jlc3VsdCxfUmVzdWx0LF9SZXN1
bHQ+IApjb25zdGFudDIoY29uc3QgX1Jlc3VsdCYgX192YWwpCnsKICByZXR1cm4gY29uc3RhbnRf
YmluYXJ5X2Z1bjxfUmVzdWx0LF9SZXN1bHQsX1Jlc3VsdD4oX192YWwpOwp9CgogCiAKY2xhc3Mg
c3VidHJhY3RpdmVfcm5nIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHVuc2lnbmVkIGludCwgdW5z
aWduZWQgaW50PiB7CnByaXZhdGU6CiAgdW5zaWduZWQgaW50IF9NX3RhYmxlWzU1XTsKICBzaXpl
X3QgX01faW5kZXgxOwogIHNpemVfdCBfTV9pbmRleDI7CnB1YmxpYzoKICB1bnNpZ25lZCBpbnQg
b3BlcmF0b3IoKSh1bnNpZ25lZCBpbnQgX19saW1pdCkgewogICAgX01faW5kZXgxID0gKF9NX2lu
ZGV4MSArIDEpICUgNTU7CiAgICBfTV9pbmRleDIgPSAoX01faW5kZXgyICsgMSkgJSA1NTsKICAg
IF9NX3RhYmxlW19NX2luZGV4MV0gPSBfTV90YWJsZVtfTV9pbmRleDFdIC0gX01fdGFibGVbX01f
aW5kZXgyXTsKICAgIHJldHVybiBfTV90YWJsZVtfTV9pbmRleDFdICUgX19saW1pdDsKICB9Cgog
IHZvaWQgX01faW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgX19zZWVkKQogIHsKICAgIHVuc2lnbmVk
IGludCBfX2sgPSAxOwogICAgX01fdGFibGVbNTRdID0gX19zZWVkOwogICAgc2l6ZV90IF9faTsK
ICAgIGZvciAoX19pID0gMDsgX19pIDwgNTQ7IF9faSsrKSB7CiAgICAgICAgc2l6ZV90IF9faWkg
PSAoMjEgKiAoX19pICsgMSkgJSA1NSkgLSAxOwogICAgICAgIF9NX3RhYmxlW19faWldID0gX19r
OwogICAgICAgIF9fayA9IF9fc2VlZCAtIF9fazsKICAgICAgICBfX3NlZWQgPSBfTV90YWJsZVtf
X2lpXTsKICAgIH0KICAgIGZvciAoaW50IF9fbG9vcCA9IDA7IF9fbG9vcCA8IDQ7IF9fbG9vcCsr
KSB7CiAgICAgICAgZm9yIChfX2kgPSAwOyBfX2kgPCA1NTsgX19pKyspCiAgICAgICAgICAgIF9N
X3RhYmxlW19faV0gPSBfTV90YWJsZVtfX2ldIC0gX01fdGFibGVbKDEgKyBfX2kgKyAzMCkgJSA1
NV07CiAgICB9CiAgICBfTV9pbmRleDEgPSAwOwogICAgX01faW5kZXgyID0gMzE7CiAgfQoKICBz
dWJ0cmFjdGl2ZV9ybmcodW5zaWduZWQgaW50IF9fc2VlZCkgeyBfTV9pbml0aWFsaXplKF9fc2Vl
ZCk7IH0KICBzdWJ0cmFjdGl2ZV9ybmcoKSB7IF9NX2luaXRpYWxpemUoMTYxODAzMzk4dSk7IH0K
fTsKCgogCgogCiAKIAogCiAKIAogCgogCiAKIAogCiAKCiAKIAogCiAKIAoKCnRlbXBsYXRlIDxj
bGFzcyBfUmV0LCBjbGFzcyBfVHA+CmNsYXNzIG1lbV9mdW5fdCA6IHB1YmxpYyB1bmFyeV9mdW5j
dGlvbjxfVHAqLF9SZXQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW5fdChfUmV0IChfVHA6
OipfX3BmKSgpKSA6IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoX1RwKiBfX3ApIGNv
bnN0IHsgcmV0dXJuIChfX3AtPipfTV9mKSgpOyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01f
ZikoKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmNsYXNzIGNvbnN0X21l
bV9mdW5fdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxjb25zdCBfVHAqLF9SZXQ+IHsKcHVibGlj
OgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW5fdChfUmV0IChfVHA6OipfX3BmKSgpIGNvbnN0KSA6
IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoY29uc3QgX1RwKiBfX3ApIGNvbnN0IHsg
cmV0dXJuIChfX3AtPipfTV9mKSgpOyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZikoKSBj
b25zdDsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwPgpjbGFzcyBtZW1fZnVu
X3JlZl90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCxfUmV0PiB7CnB1YmxpYzoKICBleHBs
aWNpdCBtZW1fZnVuX3JlZl90KF9SZXQgKF9UcDo6Kl9fcGYpKCkpIDogX01fZihfX3BmKSB7fQog
IF9SZXQgb3BlcmF0b3IoKShfVHAmIF9fcikgY29uc3QgeyByZXR1cm4gKF9fci4qX01fZikoKTsg
fQpwcml2YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKCk7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jl
dCwgY2xhc3MgX1RwPgpjbGFzcyBjb25zdF9tZW1fZnVuX3JlZl90IDogcHVibGljIHVuYXJ5X2Z1
bmN0aW9uPF9UcCxfUmV0PiB7CnB1YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1fZnVuX3JlZl90
KF9SZXQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0
b3IoKShjb25zdCBfVHAmIF9fcikgY29uc3QgeyByZXR1cm4gKF9fci4qX01fZikoKTsgfQpwcml2
YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jl
dCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgpjbGFzcyBtZW1fZnVuMV90IDogcHVibGljIGJpbmFy
eV9mdW5jdGlvbjxfVHAqLF9BcmcsX1JldD4gewpwdWJsaWM6CiAgZXhwbGljaXQgbWVtX2Z1bjFf
dChfUmV0IChfVHA6OipfX3BmKShfQXJnKSkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRv
cigpKF9UcCogX19wLCBfQXJnIF9feCkgY29uc3QgeyByZXR1cm4gKF9fcC0+Kl9NX2YpKF9feCk7
IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9mKShfQXJnKTsKfTsKCnRlbXBsYXRlIDxjbGFz
cyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIGNvbnN0X21lbV9mdW4xX3QgOiBw
dWJsaWMgYmluYXJ5X2Z1bmN0aW9uPGNvbnN0IF9UcCosX0FyZyxfUmV0PiB7CnB1YmxpYzoKICBl
eHBsaWNpdCBjb25zdF9tZW1fZnVuMV90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpIGNvbnN0KSA6
IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoY29uc3QgX1RwKiBfX3AsIF9BcmcgX194
KSBjb25zdAogICAgeyByZXR1cm4gKF9fcC0+Kl9NX2YpKF9feCk7IH0KcHJpdmF0ZToKICBfUmV0
IChfVHA6OipfTV9mKShfQXJnKSBjb25zdDsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFz
cyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIG1lbV9mdW4xX3JlZl90IDogcHVibGljIGJpbmFyeV9m
dW5jdGlvbjxfVHAsX0FyZyxfUmV0PiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1fZnVuMV9yZWZf
dChfUmV0IChfVHA6OipfX3BmKShfQXJnKSkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRv
cigpKF9UcCYgX19yLCBfQXJnIF9feCkgY29uc3QgeyByZXR1cm4gKF9fci4qX01fZikoX194KTsg
fQpwcml2YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpOwp9OwoKdGVtcGxhdGUgPGNsYXNz
IF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3MgY29uc3RfbWVtX2Z1bjFfcmVmX3Qg
OiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfQXJnLF9SZXQ+IHsKcHVibGljOgogIGV4cGxp
Y2l0IGNvbnN0X21lbV9mdW4xX3JlZl90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpIGNvbnN0KSA6
IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3IsIF9BcmcgX194
KSBjb25zdCB7IHJldHVybiAoX19yLipfTV9mKShfX3gpOyB9CnByaXZhdGU6CiAgX1JldCAoX1Rw
OjoqX01fZikoX0FyZykgY29uc3Q7Cn07CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmNsYXNzIG1l
bV9mdW5fdDx2b2lkLCBfVHA+IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCosdm9pZD4gewpw
dWJsaWM6CiAgZXhwbGljaXQgbWVtX2Z1bl90KHZvaWQgKF9UcDo6Kl9fcGYpKCkpIDogX01fZihf
X3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShfVHAqIF9fcCkgY29uc3QgeyAoX19wLT4qX01fZiko
KTsgfQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKCk7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwPgpjbGFzcyBjb25zdF9tZW1fZnVuX3Q8dm9pZCwgX1RwPiA6IHB1YmxpYyB1bmFyeV9mdW5j
dGlvbjxjb25zdCBfVHAqLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW5f
dCh2b2lkIChfVHA6OipfX3BmKSgpIGNvbnN0KSA6IF9NX2YoX19wZikge30KICB2b2lkIG9wZXJh
dG9yKCkoY29uc3QgX1RwKiBfX3ApIGNvbnN0IHsgKF9fcC0+Kl9NX2YpKCk7IH0KcHJpdmF0ZToK
ICB2b2lkIChfVHA6OipfTV9mKSgpIGNvbnN0Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xh
c3MgbWVtX2Z1bl9yZWZfdDx2b2lkLCBfVHA+IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCx2
b2lkPiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1fZnVuX3JlZl90KHZvaWQgKF9UcDo6Kl9fcGYp
KCkpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShfVHAmIF9fcikgY29uc3QgeyAo
X19yLipfTV9mKSgpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZikoKTsKfTsKCnRlbXBs
YXRlIDxjbGFzcyBfVHA+CmNsYXNzIGNvbnN0X21lbV9mdW5fcmVmX3Q8dm9pZCwgX1RwPiA6IHB1
YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsdm9pZD4gewpwdWJsaWM6CiAgZXhwbGljaXQgY29uc3Rf
bWVtX2Z1bl9yZWZfdCh2b2lkIChfVHA6OipfX3BmKSgpIGNvbnN0KSA6IF9NX2YoX19wZikge30K
ICB2b2lkIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3IpIGNvbnN0IHsgKF9fci4qX01fZikoKTsg
fQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7Cn07Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBjbGFzcyBfQXJnPgpjbGFzcyBtZW1fZnVuMV90PHZvaWQsIF9UcCwgX0FyZz4gOiBw
dWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCosX0FyZyx2b2lkPiB7CnB1YmxpYzoKICBleHBsaWNp
dCBtZW1fZnVuMV90KHZvaWQgKF9UcDo6Kl9fcGYpKF9BcmcpKSA6IF9NX2YoX19wZikge30KICB2
b2lkIG9wZXJhdG9yKCkoX1RwKiBfX3AsIF9BcmcgX194KSBjb25zdCB7IChfX3AtPipfTV9mKShf
X3gpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZikoX0FyZyk7Cn07Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwLCBjbGFzcyBfQXJnPgpjbGFzcyBjb25zdF9tZW1fZnVuMV90PHZvaWQsIF9UcCwg
X0FyZz4gCiAgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPGNvbnN0IF9UcCosX0FyZyx2b2lkPiB7
CnB1YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1fZnVuMV90KHZvaWQgKF9UcDo6Kl9fcGYpKF9B
cmcpIGNvbnN0KSA6IF9NX2YoX19wZikge30KICB2b2lkIG9wZXJhdG9yKCkoY29uc3QgX1RwKiBf
X3AsIF9BcmcgX194KSBjb25zdCB7IChfX3AtPipfTV9mKShfX3gpOyB9CnByaXZhdGU6CiAgdm9p
ZCAoX1RwOjoqX01fZikoX0FyZykgY29uc3Q7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFz
cyBfQXJnPgpjbGFzcyBtZW1fZnVuMV9yZWZfdDx2b2lkLCBfVHAsIF9Bcmc+CiAgOiBwdWJsaWMg
YmluYXJ5X2Z1bmN0aW9uPF9UcCxfQXJnLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9m
dW4xX3JlZl90KHZvaWQgKF9UcDo6Kl9fcGYpKF9BcmcpKSA6IF9NX2YoX19wZikge30KICB2b2lk
IG9wZXJhdG9yKCkoX1RwJiBfX3IsIF9BcmcgX194KSBjb25zdCB7IChfX3IuKl9NX2YpKF9feCk7
IH0KcHJpdmF0ZToKICB2b2lkIChfVHA6OipfTV9mKShfQXJnKTsKfTsKCnRlbXBsYXRlIDxjbGFz
cyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIGNvbnN0X21lbV9mdW4xX3JlZl90PHZvaWQsIF9UcCwg
X0FyZz4KICA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9Bcmcsdm9pZD4gewpwdWJsaWM6
CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bjFfcmVmX3Qodm9pZCAoX1RwOjoqX19wZikoX0FyZykg
Y29uc3QpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9fciwg
X0FyZyBfX3gpIGNvbnN0IHsgKF9fci4qX01fZikoX194KTsgfQpwcml2YXRlOgogIHZvaWQgKF9U
cDo6Kl9NX2YpKF9BcmcpIGNvbnN0Owp9OwoKCgogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jl
dCwgY2xhc3MgX1RwPgppbmxpbmUgbWVtX2Z1bl90PF9SZXQsX1RwPiBtZW1fZnVuKF9SZXQgKF9U
cDo6Kl9fZikoKSkKICB7IHJldHVybiBtZW1fZnVuX3Q8X1JldCxfVHA+KF9fZik7IH0KCnRlbXBs
YXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmlubGluZSBjb25zdF9tZW1fZnVuX3Q8X1JldCxf
VHA+IG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKSgpIGNvbnN0KQogIHsgcmV0dXJuIGNvbnN0X21l
bV9mdW5fdDxfUmV0LF9UcD4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9U
cD4KaW5saW5lIG1lbV9mdW5fcmVmX3Q8X1JldCxfVHA+IG1lbV9mdW5fcmVmKF9SZXQgKF9UcDo6
Kl9fZikoKSkgCiAgeyByZXR1cm4gbWVtX2Z1bl9yZWZfdDxfUmV0LF9UcD4oX19mKTsgfQoKdGVt
cGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KaW5saW5lIGNvbnN0X21lbV9mdW5fcmVmX3Q8
X1JldCxfVHA+IG1lbV9mdW5fcmVmKF9SZXQgKF9UcDo6Kl9fZikoKSBjb25zdCkKICB7IHJldHVy
biBjb25zdF9tZW1fZnVuX3JlZl90PF9SZXQsX1RwPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgppbmxpbmUgbWVtX2Z1bjFfdDxfUmV0LF9UcCxf
QXJnPiBtZW1fZnVuKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykpCiAgeyByZXR1cm4gbWVtX2Z1bjFf
dDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1Rw
LCBjbGFzcyBfQXJnPgppbmxpbmUgY29uc3RfbWVtX2Z1bjFfdDxfUmV0LF9UcCxfQXJnPiBtZW1f
ZnVuKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykgY29uc3QpCiAgeyByZXR1cm4gY29uc3RfbWVtX2Z1
bjFfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3Mg
X1RwLCBjbGFzcyBfQXJnPgppbmxpbmUgbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0FyZz4gbWVt
X2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSkKICB7IHJldHVybiBtZW1fZnVuMV9yZWZf
dDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1Rw
LCBjbGFzcyBfQXJnPgppbmxpbmUgY29uc3RfbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0FyZz4K
bWVtX2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkKICB7IHJldHVybiBjb25z
dF9tZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgppbmxpbmUgbWVtX2Z1bjFfdDxfUmV0LF9UcCxf
QXJnPiBtZW1fZnVuMShfUmV0IChfVHA6OipfX2YpKF9BcmcpKQogIHsgcmV0dXJuIG1lbV9mdW4x
X3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9U
cCwgY2xhc3MgX0FyZz4KaW5saW5lIGNvbnN0X21lbV9mdW4xX3Q8X1JldCxfVHAsX0FyZz4gbWVt
X2Z1bjEoX1JldCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkKICB7IHJldHVybiBjb25zdF9tZW1f
ZnVuMV90PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFz
cyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBtZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPiBt
ZW1fZnVuMV9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSkKICB7IHJldHVybiBtZW1fZnVuMV9y
ZWZfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3Mg
X1RwLCBjbGFzcyBfQXJnPgppbmxpbmUgY29uc3RfbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0Fy
Zz4KbWVtX2Z1bjFfcmVmKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykgY29uc3QpCiAgeyByZXR1cm4g
Y29uc3RfbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKIAoKCgogCiAKIAoj
IDU5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF90
cmVlLmgiIDIgMwoKCiAgCgoKCgoKdHlwZWRlZiBib29sIF9SYl90cmVlX0NvbG9yX3R5cGU7CmNv
bnN0IF9SYl90cmVlX0NvbG9yX3R5cGUgX1NfcmJfdHJlZV9yZWQgPSBmYWxzZTsKY29uc3QgX1Ji
X3RyZWVfQ29sb3JfdHlwZSBfU19yYl90cmVlX2JsYWNrID0gdHJ1ZTsKCnN0cnVjdCBfUmJfdHJl
ZV9ub2RlX2Jhc2UKewogIHR5cGVkZWYgX1JiX3RyZWVfQ29sb3JfdHlwZSBfQ29sb3JfdHlwZTsK
ICB0eXBlZGVmIF9SYl90cmVlX25vZGVfYmFzZSogX0Jhc2VfcHRyOwoKICBfQ29sb3JfdHlwZSBf
TV9jb2xvcjsgCiAgX0Jhc2VfcHRyIF9NX3BhcmVudDsKICBfQmFzZV9wdHIgX01fbGVmdDsKICBf
QmFzZV9wdHIgX01fcmlnaHQ7CgogIHN0YXRpYyBfQmFzZV9wdHIgX1NfbWluaW11bShfQmFzZV9w
dHIgX194KQogIHsKICAgIHdoaWxlIChfX3gtPl9NX2xlZnQgIT0gMCkgX194ID0gX194LT5fTV9s
ZWZ0OwogICAgcmV0dXJuIF9feDsKICB9CgogIHN0YXRpYyBfQmFzZV9wdHIgX1NfbWF4aW11bShf
QmFzZV9wdHIgX194KQogIHsKICAgIHdoaWxlIChfX3gtPl9NX3JpZ2h0ICE9IDApIF9feCA9IF9f
eC0+X01fcmlnaHQ7CiAgICByZXR1cm4gX194OwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVmFs
dWU+CnN0cnVjdCBfUmJfdHJlZV9ub2RlIDogcHVibGljIF9SYl90cmVlX25vZGVfYmFzZQp7CiAg
dHlwZWRlZiBfUmJfdHJlZV9ub2RlPF9WYWx1ZT4qIF9MaW5rX3R5cGU7CiAgX1ZhbHVlIF9NX3Zh
bHVlX2ZpZWxkOwp9OwoKCnN0cnVjdCBfUmJfdHJlZV9iYXNlX2l0ZXJhdG9yCnsKICB0eXBlZGVm
IF9SYl90cmVlX25vZGVfYmFzZTo6X0Jhc2VfcHRyIF9CYXNlX3B0cjsKICB0eXBlZGVmIGJpZGly
ZWN0aW9uYWxfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgcHRyZGlm
Zl90IGRpZmZlcmVuY2VfdHlwZTsKICBfQmFzZV9wdHIgX01fbm9kZTsKCiAgdm9pZCBfTV9pbmNy
ZW1lbnQoKQogIHsKICAgIGlmIChfTV9ub2RlLT5fTV9yaWdodCAhPSAwKSB7CiAgICAgIF9NX25v
ZGUgPSBfTV9ub2RlLT5fTV9yaWdodDsKICAgICAgd2hpbGUgKF9NX25vZGUtPl9NX2xlZnQgIT0g
MCkKICAgICAgICBfTV9ub2RlID0gX01fbm9kZS0+X01fbGVmdDsKICAgIH0KICAgIGVsc2Ugewog
ICAgICBfQmFzZV9wdHIgX195ID0gX01fbm9kZS0+X01fcGFyZW50OwogICAgICB3aGlsZSAoX01f
bm9kZSA9PSBfX3ktPl9NX3JpZ2h0KSB7CiAgICAgICAgX01fbm9kZSA9IF9feTsKICAgICAgICBf
X3kgPSBfX3ktPl9NX3BhcmVudDsKICAgICAgfQogICAgICBpZiAoX01fbm9kZS0+X01fcmlnaHQg
IT0gX195KQogICAgICAgIF9NX25vZGUgPSBfX3k7CiAgICB9CiAgfQoKICB2b2lkIF9NX2RlY3Jl
bWVudCgpCiAgewogICAgaWYgKF9NX25vZGUtPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVkICYm
CiAgICAgICAgX01fbm9kZS0+X01fcGFyZW50LT5fTV9wYXJlbnQgPT0gX01fbm9kZSkKICAgICAg
X01fbm9kZSA9IF9NX25vZGUtPl9NX3JpZ2h0OwogICAgZWxzZSBpZiAoX01fbm9kZS0+X01fbGVm
dCAhPSAwKSB7CiAgICAgIF9CYXNlX3B0ciBfX3kgPSBfTV9ub2RlLT5fTV9sZWZ0OwogICAgICB3
aGlsZSAoX195LT5fTV9yaWdodCAhPSAwKQogICAgICAgIF9feSA9IF9feS0+X01fcmlnaHQ7CiAg
ICAgIF9NX25vZGUgPSBfX3k7CiAgICB9CiAgICBlbHNlIHsKICAgICAgX0Jhc2VfcHRyIF9feSA9
IF9NX25vZGUtPl9NX3BhcmVudDsKICAgICAgd2hpbGUgKF9NX25vZGUgPT0gX195LT5fTV9sZWZ0
KSB7CiAgICAgICAgX01fbm9kZSA9IF9feTsKICAgICAgICBfX3kgPSBfX3ktPl9NX3BhcmVudDsK
ICAgICAgfQogICAgICBfTV9ub2RlID0gX195OwogICAgfQogIH0KfTsKCnRlbXBsYXRlIDxjbGFz
cyBfVmFsdWUsIGNsYXNzIF9SZWYsIGNsYXNzIF9QdHI+CnN0cnVjdCBfUmJfdHJlZV9pdGVyYXRv
ciA6IHB1YmxpYyBfUmJfdHJlZV9iYXNlX2l0ZXJhdG9yCnsKICB0eXBlZGVmIF9WYWx1ZSB2YWx1
ZV90eXBlOwogIHR5cGVkZWYgX1JlZiByZWZlcmVuY2U7CiAgdHlwZWRlZiBfUHRyIHBvaW50ZXI7
CiAgdHlwZWRlZiBfUmJfdHJlZV9pdGVyYXRvcjxfVmFsdWUsIF9WYWx1ZSYsIF9WYWx1ZSo+ICAg
ICAgICAgICAgIAogICAgaXRlcmF0b3I7CiAgdHlwZWRlZiBfUmJfdHJlZV9pdGVyYXRvcjxfVmFs
dWUsIGNvbnN0IF9WYWx1ZSYsIGNvbnN0IF9WYWx1ZSo+IAogICAgY29uc3RfaXRlcmF0b3I7CiAg
dHlwZWRlZiBfUmJfdHJlZV9pdGVyYXRvcjxfVmFsdWUsIF9SZWYsIF9QdHI+ICAgICAgICAgICAg
ICAgICAgIAogICAgX1NlbGY7CiAgdHlwZWRlZiBfUmJfdHJlZV9ub2RlPF9WYWx1ZT4qIF9MaW5r
X3R5cGU7CgogIF9SYl90cmVlX2l0ZXJhdG9yKCkge30KICBfUmJfdHJlZV9pdGVyYXRvcihfTGlu
a190eXBlIF9feCkgeyBfTV9ub2RlID0gX194OyB9CiAgX1JiX3RyZWVfaXRlcmF0b3IoY29uc3Qg
aXRlcmF0b3ImIF9faXQpIHsgX01fbm9kZSA9IF9faXQuX01fbm9kZTsgfQoKICByZWZlcmVuY2Ug
b3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gX0xpbmtfdHlwZShfTV9ub2RlKS0+X01fdmFsdWVf
ZmllbGQ7IH0KCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVyYXRv
ciooKSk7IH0KCgogIF9TZWxmJiBvcGVyYXRvcisrKCkgeyBfTV9pbmNyZW1lbnQoKTsgcmV0dXJu
ICp0aGlzOyB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0gKnRo
aXM7CiAgICBfTV9pbmNyZW1lbnQoKTsKICAgIHJldHVybiBfX3RtcDsKICB9CiAgICAKICBfU2Vs
ZiYgb3BlcmF0b3ItLSgpIHsgX01fZGVjcmVtZW50KCk7IHJldHVybiAqdGhpczsgfQogIF9TZWxm
IG9wZXJhdG9yLS0oaW50KSB7CiAgICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgX01fZGVjcmVt
ZW50KCk7CiAgICByZXR1cm4gX190bXA7CiAgfQp9OwoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBfUmJfdHJlZV9iYXNlX2l0ZXJhdG9yJiBfX3gsCiAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgX1JiX3RyZWVfYmFzZV9pdGVyYXRvciYgX195KSB7CiAgcmV0dXJuIF9feC5fTV9ub2Rl
ID09IF9feS5fTV9ub2RlOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IF9SYl90cmVl
X2Jhc2VfaXRlcmF0b3ImIF9feCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUmJfdHJl
ZV9iYXNlX2l0ZXJhdG9yJiBfX3kpIHsKICByZXR1cm4gX194Ll9NX25vZGUgIT0gX195Ll9NX25v
ZGU7Cn0KCiMgMjE0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0bF90cmVlLmgiIDMKCgppbmxpbmUgdm9pZCAKX1JiX3RyZWVfcm90YXRlX2xlZnQoX1Ji
X3RyZWVfbm9kZV9iYXNlKiBfX3gsIF9SYl90cmVlX25vZGVfYmFzZSomIF9fcm9vdCkKewogIF9S
Yl90cmVlX25vZGVfYmFzZSogX195ID0gX194LT5fTV9yaWdodDsKICBfX3gtPl9NX3JpZ2h0ID0g
X195LT5fTV9sZWZ0OwogIGlmIChfX3ktPl9NX2xlZnQgIT0wKQogICAgX195LT5fTV9sZWZ0LT5f
TV9wYXJlbnQgPSBfX3g7CiAgX195LT5fTV9wYXJlbnQgPSBfX3gtPl9NX3BhcmVudDsKCiAgaWYg
KF9feCA9PSBfX3Jvb3QpCiAgICBfX3Jvb3QgPSBfX3k7CiAgZWxzZSBpZiAoX194ID09IF9feC0+
X01fcGFyZW50LT5fTV9sZWZ0KQogICAgX194LT5fTV9wYXJlbnQtPl9NX2xlZnQgPSBfX3k7CiAg
ZWxzZQogICAgX194LT5fTV9wYXJlbnQtPl9NX3JpZ2h0ID0gX195OwogIF9feS0+X01fbGVmdCA9
IF9feDsKICBfX3gtPl9NX3BhcmVudCA9IF9feTsKfQoKaW5saW5lIHZvaWQgCl9SYl90cmVlX3Jv
dGF0ZV9yaWdodChfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feCwgX1JiX3RyZWVfbm9kZV9iYXNlKiYg
X19yb290KQp7CiAgX1JiX3RyZWVfbm9kZV9iYXNlKiBfX3kgPSBfX3gtPl9NX2xlZnQ7CiAgX194
LT5fTV9sZWZ0ID0gX195LT5fTV9yaWdodDsKICBpZiAoX195LT5fTV9yaWdodCAhPSAwKQogICAg
X195LT5fTV9yaWdodC0+X01fcGFyZW50ID0gX194OwogIF9feS0+X01fcGFyZW50ID0gX194LT5f
TV9wYXJlbnQ7CgogIGlmIChfX3ggPT0gX19yb290KQogICAgX19yb290ID0gX195OwogIGVsc2Ug
aWYgKF9feCA9PSBfX3gtPl9NX3BhcmVudC0+X01fcmlnaHQpCiAgICBfX3gtPl9NX3BhcmVudC0+
X01fcmlnaHQgPSBfX3k7CiAgZWxzZQogICAgX194LT5fTV9wYXJlbnQtPl9NX2xlZnQgPSBfX3k7
CiAgX195LT5fTV9yaWdodCA9IF9feDsKICBfX3gtPl9NX3BhcmVudCA9IF9feTsKfQoKaW5saW5l
IHZvaWQgCl9SYl90cmVlX3JlYmFsYW5jZShfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feCwgX1JiX3Ry
ZWVfbm9kZV9iYXNlKiYgX19yb290KQp7CiAgX194LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfcmVk
OwogIHdoaWxlIChfX3ggIT0gX19yb290ICYmIF9feC0+X01fcGFyZW50LT5fTV9jb2xvciA9PSBf
U19yYl90cmVlX3JlZCkgewogICAgaWYgKF9feC0+X01fcGFyZW50ID09IF9feC0+X01fcGFyZW50
LT5fTV9wYXJlbnQtPl9NX2xlZnQpIHsKICAgICAgX1JiX3RyZWVfbm9kZV9iYXNlKiBfX3kgPSBf
X3gtPl9NX3BhcmVudC0+X01fcGFyZW50LT5fTV9yaWdodDsKICAgICAgaWYgKF9feSAmJiBfX3kt
Pl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVkKSB7CiAgICAgICAgX194LT5fTV9wYXJlbnQtPl9N
X2NvbG9yID0gX1NfcmJfdHJlZV9ibGFjazsKICAgICAgICBfX3ktPl9NX2NvbG9yID0gX1NfcmJf
dHJlZV9ibGFjazsKICAgICAgICBfX3gtPl9NX3BhcmVudC0+X01fcGFyZW50LT5fTV9jb2xvciA9
IF9TX3JiX3RyZWVfcmVkOwogICAgICAgIF9feCA9IF9feC0+X01fcGFyZW50LT5fTV9wYXJlbnQ7
CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgaWYgKF9feCA9PSBfX3gtPl9NX3BhcmVudC0+
X01fcmlnaHQpIHsKICAgICAgICAgIF9feCA9IF9feC0+X01fcGFyZW50OwogICAgICAgICAgX1Ji
X3RyZWVfcm90YXRlX2xlZnQoX194LCBfX3Jvb3QpOwogICAgICAgIH0KICAgICAgICBfX3gtPl9N
X3BhcmVudC0+X01fY29sb3IgPSBfU19yYl90cmVlX2JsYWNrOwogICAgICAgIF9feC0+X01fcGFy
ZW50LT5fTV9wYXJlbnQtPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9yZWQ7CiAgICAgICAgX1JiX3Ry
ZWVfcm90YXRlX3JpZ2h0KF9feC0+X01fcGFyZW50LT5fTV9wYXJlbnQsIF9fcm9vdCk7CiAgICAg
IH0KICAgIH0KICAgIGVsc2UgewogICAgICBfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feSA9IF9feC0+
X01fcGFyZW50LT5fTV9wYXJlbnQtPl9NX2xlZnQ7CiAgICAgIGlmIChfX3kgJiYgX195LT5fTV9j
b2xvciA9PSBfU19yYl90cmVlX3JlZCkgewogICAgICAgIF9feC0+X01fcGFyZW50LT5fTV9jb2xv
ciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgICAgICAgX195LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVf
YmxhY2s7CiAgICAgICAgX194LT5fTV9wYXJlbnQtPl9NX3BhcmVudC0+X01fY29sb3IgPSBfU19y
Yl90cmVlX3JlZDsKICAgICAgICBfX3ggPSBfX3gtPl9NX3BhcmVudC0+X01fcGFyZW50OwogICAg
ICB9CiAgICAgIGVsc2UgewogICAgICAgIGlmIChfX3ggPT0gX194LT5fTV9wYXJlbnQtPl9NX2xl
ZnQpIHsKICAgICAgICAgIF9feCA9IF9feC0+X01fcGFyZW50OwogICAgICAgICAgX1JiX3RyZWVf
cm90YXRlX3JpZ2h0KF9feCwgX19yb290KTsKICAgICAgICB9CiAgICAgICAgX194LT5fTV9wYXJl
bnQtPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9ibGFjazsKICAgICAgICBfX3gtPl9NX3BhcmVudC0+
X01fcGFyZW50LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfcmVkOwogICAgICAgIF9SYl90cmVlX3Jv
dGF0ZV9sZWZ0KF9feC0+X01fcGFyZW50LT5fTV9wYXJlbnQsIF9fcm9vdCk7CiAgICAgIH0KICAg
IH0KICB9CiAgX19yb290LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7Cn0KCmlubGluZSBf
UmJfdHJlZV9ub2RlX2Jhc2UqCl9SYl90cmVlX3JlYmFsYW5jZV9mb3JfZXJhc2UoX1JiX3RyZWVf
bm9kZV9iYXNlKiBfX3osCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JiX3RyZWVfbm9k
ZV9iYXNlKiYgX19yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYl90cmVlX25v
ZGVfYmFzZSomIF9fbGVmdG1vc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JiX3Ry
ZWVfbm9kZV9iYXNlKiYgX19yaWdodG1vc3QpCnsKICBfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feSA9
IF9fejsKICBfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feCA9IDA7CiAgX1JiX3RyZWVfbm9kZV9iYXNl
KiBfX3hfcGFyZW50ID0gMDsKICBpZiAoX195LT5fTV9sZWZ0ID09IDApICAgICAgCiAgICBfX3gg
PSBfX3ktPl9NX3JpZ2h0OyAgICAgIAogIGVsc2UKICAgIGlmIChfX3ktPl9NX3JpZ2h0ID09IDAp
ICAgCiAgICAgIF9feCA9IF9feS0+X01fbGVmdDsgICAgIAogICAgZWxzZSB7ICAgICAgICAgICAg
ICAgICAgICAKICAgICAgX195ID0gX195LT5fTV9yaWdodDsgICAgCiAgICAgIHdoaWxlIChfX3kt
Pl9NX2xlZnQgIT0gMCkKICAgICAgICBfX3kgPSBfX3ktPl9NX2xlZnQ7CiAgICAgIF9feCA9IF9f
eS0+X01fcmlnaHQ7CiAgICB9CiAgaWYgKF9feSAhPSBfX3opIHsgICAgICAgICAgIAogICAgX196
LT5fTV9sZWZ0LT5fTV9wYXJlbnQgPSBfX3k7IAogICAgX195LT5fTV9sZWZ0ID0gX196LT5fTV9s
ZWZ0OwogICAgaWYgKF9feSAhPSBfX3otPl9NX3JpZ2h0KSB7CiAgICAgIF9feF9wYXJlbnQgPSBf
X3ktPl9NX3BhcmVudDsKICAgICAgaWYgKF9feCkgX194LT5fTV9wYXJlbnQgPSBfX3ktPl9NX3Bh
cmVudDsKICAgICAgX195LT5fTV9wYXJlbnQtPl9NX2xlZnQgPSBfX3g7ICAgICAgIAogICAgICBf
X3ktPl9NX3JpZ2h0ID0gX196LT5fTV9yaWdodDsKICAgICAgX196LT5fTV9yaWdodC0+X01fcGFy
ZW50ID0gX195OwogICAgfQogICAgZWxzZQogICAgICBfX3hfcGFyZW50ID0gX195OyAgCiAgICBp
ZiAoX19yb290ID09IF9feikKICAgICAgX19yb290ID0gX195OwogICAgZWxzZSBpZiAoX196LT5f
TV9wYXJlbnQtPl9NX2xlZnQgPT0gX196KQogICAgICBfX3otPl9NX3BhcmVudC0+X01fbGVmdCA9
IF9feTsKICAgIGVsc2UgCiAgICAgIF9fei0+X01fcGFyZW50LT5fTV9yaWdodCA9IF9feTsKICAg
IF9feS0+X01fcGFyZW50ID0gX196LT5fTV9wYXJlbnQ7CiAgICAgOjpzd2FwKF9feS0+X01fY29s
b3IsIF9fei0+X01fY29sb3IpOwogICAgX195ID0gX196OwogICAgIAogIH0KICBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICBfX3hfcGFyZW50ID0gX195LT5fTV9wYXJlbnQ7CiAg
ICBpZiAoX194KSBfX3gtPl9NX3BhcmVudCA9IF9feS0+X01fcGFyZW50OyAgIAogICAgaWYgKF9f
cm9vdCA9PSBfX3opCiAgICAgIF9fcm9vdCA9IF9feDsKICAgIGVsc2UgCiAgICAgIGlmIChfX3ot
Pl9NX3BhcmVudC0+X01fbGVmdCA9PSBfX3opCiAgICAgICAgX196LT5fTV9wYXJlbnQtPl9NX2xl
ZnQgPSBfX3g7CiAgICAgIGVsc2UKICAgICAgICBfX3otPl9NX3BhcmVudC0+X01fcmlnaHQgPSBf
X3g7CiAgICBpZiAoX19sZWZ0bW9zdCA9PSBfX3opIAogICAgICBpZiAoX196LT5fTV9yaWdodCA9
PSAwKSAgICAgICAgIAogICAgICAgIF9fbGVmdG1vc3QgPSBfX3otPl9NX3BhcmVudDsKICAgICAK
ICAgICAgZWxzZQogICAgICAgIF9fbGVmdG1vc3QgPSBfUmJfdHJlZV9ub2RlX2Jhc2U6Ol9TX21p
bmltdW0oX194KTsKICAgIGlmIChfX3JpZ2h0bW9zdCA9PSBfX3opICAKICAgICAgaWYgKF9fei0+
X01fbGVmdCA9PSAwKSAgICAgICAgICAKICAgICAgICBfX3JpZ2h0bW9zdCA9IF9fei0+X01fcGFy
ZW50OyAgCiAgICAgCiAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIF9f
cmlnaHRtb3N0ID0gX1JiX3RyZWVfbm9kZV9iYXNlOjpfU19tYXhpbXVtKF9feCk7CiAgfQogIGlm
IChfX3ktPl9NX2NvbG9yICE9IF9TX3JiX3RyZWVfcmVkKSB7IAogICAgd2hpbGUgKF9feCAhPSBf
X3Jvb3QgJiYgKF9feCA9PSAwIHx8IF9feC0+X01fY29sb3IgPT0gX1NfcmJfdHJlZV9ibGFjaykp
CiAgICAgIGlmIChfX3ggPT0gX194X3BhcmVudC0+X01fbGVmdCkgewogICAgICAgIF9SYl90cmVl
X25vZGVfYmFzZSogX193ID0gX194X3BhcmVudC0+X01fcmlnaHQ7CiAgICAgICAgaWYgKF9fdy0+
X01fY29sb3IgPT0gX1NfcmJfdHJlZV9yZWQpIHsKICAgICAgICAgIF9fdy0+X01fY29sb3IgPSBf
U19yYl90cmVlX2JsYWNrOwogICAgICAgICAgX194X3BhcmVudC0+X01fY29sb3IgPSBfU19yYl90
cmVlX3JlZDsKICAgICAgICAgIF9SYl90cmVlX3JvdGF0ZV9sZWZ0KF9feF9wYXJlbnQsIF9fcm9v
dCk7CiAgICAgICAgICBfX3cgPSBfX3hfcGFyZW50LT5fTV9yaWdodDsKICAgICAgICB9CiAgICAg
ICAgaWYgKChfX3ctPl9NX2xlZnQgPT0gMCB8fCAKICAgICAgICAgICAgIF9fdy0+X01fbGVmdC0+
X01fY29sb3IgPT0gX1NfcmJfdHJlZV9ibGFjaykgJiYKICAgICAgICAgICAgKF9fdy0+X01fcmln
aHQgPT0gMCB8fCAKICAgICAgICAgICAgIF9fdy0+X01fcmlnaHQtPl9NX2NvbG9yID09IF9TX3Ji
X3RyZWVfYmxhY2spKSB7CiAgICAgICAgICBfX3ctPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9yZWQ7
CiAgICAgICAgICBfX3ggPSBfX3hfcGFyZW50OwogICAgICAgICAgX194X3BhcmVudCA9IF9feF9w
YXJlbnQtPl9NX3BhcmVudDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKF9fdy0+X01f
cmlnaHQgPT0gMCB8fCAKICAgICAgICAgICAgICBfX3ctPl9NX3JpZ2h0LT5fTV9jb2xvciA9PSBf
U19yYl90cmVlX2JsYWNrKSB7CiAgICAgICAgICAgIGlmIChfX3ctPl9NX2xlZnQpIF9fdy0+X01f
bGVmdC0+X01fY29sb3IgPSBfU19yYl90cmVlX2JsYWNrOwogICAgICAgICAgICBfX3ctPl9NX2Nv
bG9yID0gX1NfcmJfdHJlZV9yZWQ7CiAgICAgICAgICAgIF9SYl90cmVlX3JvdGF0ZV9yaWdodChf
X3csIF9fcm9vdCk7CiAgICAgICAgICAgIF9fdyA9IF9feF9wYXJlbnQtPl9NX3JpZ2h0OwogICAg
ICAgICAgfQogICAgICAgICAgX193LT5fTV9jb2xvciA9IF9feF9wYXJlbnQtPl9NX2NvbG9yOwog
ICAgICAgICAgX194X3BhcmVudC0+X01fY29sb3IgPSBfU19yYl90cmVlX2JsYWNrOwogICAgICAg
ICAgaWYgKF9fdy0+X01fcmlnaHQpIF9fdy0+X01fcmlnaHQtPl9NX2NvbG9yID0gX1NfcmJfdHJl
ZV9ibGFjazsKICAgICAgICAgIF9SYl90cmVlX3JvdGF0ZV9sZWZ0KF9feF9wYXJlbnQsIF9fcm9v
dCk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7ICAgICAgICAgICAg
ICAgICAgIAogICAgICAgIF9SYl90cmVlX25vZGVfYmFzZSogX193ID0gX194X3BhcmVudC0+X01f
bGVmdDsKICAgICAgICBpZiAoX193LT5fTV9jb2xvciA9PSBfU19yYl90cmVlX3JlZCkgewogICAg
ICAgICAgX193LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgICAgICAgICBfX3hfcGFy
ZW50LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfcmVkOwogICAgICAgICAgX1JiX3RyZWVfcm90YXRl
X3JpZ2h0KF9feF9wYXJlbnQsIF9fcm9vdCk7CiAgICAgICAgICBfX3cgPSBfX3hfcGFyZW50LT5f
TV9sZWZ0OwogICAgICAgIH0KICAgICAgICBpZiAoKF9fdy0+X01fcmlnaHQgPT0gMCB8fCAKICAg
ICAgICAgICAgIF9fdy0+X01fcmlnaHQtPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfYmxhY2spICYm
CiAgICAgICAgICAgIChfX3ctPl9NX2xlZnQgPT0gMCB8fCAKICAgICAgICAgICAgIF9fdy0+X01f
bGVmdC0+X01fY29sb3IgPT0gX1NfcmJfdHJlZV9ibGFjaykpIHsKICAgICAgICAgIF9fdy0+X01f
Y29sb3IgPSBfU19yYl90cmVlX3JlZDsKICAgICAgICAgIF9feCA9IF9feF9wYXJlbnQ7CiAgICAg
ICAgICBfX3hfcGFyZW50ID0gX194X3BhcmVudC0+X01fcGFyZW50OwogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICBpZiAoX193LT5fTV9sZWZ0ID09IDAgfHwgCiAgICAgICAgICAgICAgX193LT5f
TV9sZWZ0LT5fTV9jb2xvciA9PSBfU19yYl90cmVlX2JsYWNrKSB7CiAgICAgICAgICAgIGlmIChf
X3ctPl9NX3JpZ2h0KSBfX3ctPl9NX3JpZ2h0LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7
CiAgICAgICAgICAgIF9fdy0+X01fY29sb3IgPSBfU19yYl90cmVlX3JlZDsKICAgICAgICAgICAg
X1JiX3RyZWVfcm90YXRlX2xlZnQoX193LCBfX3Jvb3QpOwogICAgICAgICAgICBfX3cgPSBfX3hf
cGFyZW50LT5fTV9sZWZ0OwogICAgICAgICAgfQogICAgICAgICAgX193LT5fTV9jb2xvciA9IF9f
eF9wYXJlbnQtPl9NX2NvbG9yOwogICAgICAgICAgX194X3BhcmVudC0+X01fY29sb3IgPSBfU19y
Yl90cmVlX2JsYWNrOwogICAgICAgICAgaWYgKF9fdy0+X01fbGVmdCkgX193LT5fTV9sZWZ0LT5f
TV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgICAgICAgICBfUmJfdHJlZV9yb3RhdGVfcmln
aHQoX194X3BhcmVudCwgX19yb290KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAg
fQogICAgaWYgKF9feCkgX194LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgfQogIHJl
dHVybiBfX3k7Cn0KCiAKIAogCiAKCgoKIAp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxs
b2MsIGJvb2wgX1NfaW5zdGFuY2VsZXNzPgpjbGFzcyBfUmJfdHJlZV9hbGxvY19iYXNlIHsKcHVi
bGljOgogIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jX3RyYWl0czxfVHAsIF9BbGxvYz46OmFsbG9j
YXRvcl90eXBlIGFsbG9jYXRvcl90eXBlOwogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3Io
KSBjb25zdCB7IHJldHVybiBfTV9ub2RlX2FsbG9jYXRvcjsgfQoKICBfUmJfdHJlZV9hbGxvY19i
YXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiAgICA6IF9NX25vZGVfYWxsb2NhdG9yKF9f
YSksIF9NX2hlYWRlcigwKSB7fQoKcHJvdGVjdGVkOgogIHR5cGVuYW1lIF9BbGxvY190cmFpdHM8
X1JiX3RyZWVfbm9kZTxfVHA+LCBfQWxsb2M+OjphbGxvY2F0b3JfdHlwZQogICAgICAgICAgIF9N
X25vZGVfYWxsb2NhdG9yOwogIF9SYl90cmVlX25vZGU8X1RwPiogX01faGVhZGVyOwoKICBfUmJf
dHJlZV9ub2RlPF9UcD4qIF9NX2dldF9ub2RlKCkgCiAgICB7IHJldHVybiBfTV9ub2RlX2FsbG9j
YXRvci5hbGxvY2F0ZSgxKTsgfQogIHZvaWQgX01fcHV0X25vZGUoX1JiX3RyZWVfbm9kZTxfVHA+
KiBfX3ApIAogICAgeyBfTV9ub2RlX2FsbG9jYXRvci5kZWFsbG9jYXRlKF9fcCwgMSk7IH0KfTsK
CiAKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgpjbGFzcyBfUmJfdHJlZV9hbGxv
Y19iYXNlPF9UcCwgX0FsbG9jLCB0cnVlPiB7CnB1YmxpYzoKICB0eXBlZGVmIHR5cGVuYW1lIF9B
bGxvY190cmFpdHM8X1RwLCBfQWxsb2M+OjphbGxvY2F0b3JfdHlwZSBhbGxvY2F0b3JfdHlwZTsK
ICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gYWxsb2NhdG9y
X3R5cGUoKTsgfQoKICBfUmJfdHJlZV9hbGxvY19iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJikg
OiBfTV9oZWFkZXIoMCkge30KCnByb3RlY3RlZDoKICBfUmJfdHJlZV9ub2RlPF9UcD4qIF9NX2hl
YWRlcjsKCiAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2NfdHJhaXRzPF9SYl90cmVlX25vZGU8X1Rw
PiwgX0FsbG9jPjo6X0FsbG9jX3R5cGUKICAgICAgICAgIF9BbGxvY190eXBlOwoKICBfUmJfdHJl
ZV9ub2RlPF9UcD4qIF9NX2dldF9ub2RlKCkKICAgIHsgcmV0dXJuIF9BbGxvY190eXBlOjphbGxv
Y2F0ZSgxKTsgfQogIHZvaWQgX01fcHV0X25vZGUoX1JiX3RyZWVfbm9kZTxfVHA+KiBfX3ApCiAg
ICB7IF9BbGxvY190eXBlOjpkZWFsbG9jYXRlKF9fcCwgMSk7IH0KfTsKCnRlbXBsYXRlIDxjbGFz
cyBfVHAsIGNsYXNzIF9BbGxvYz4Kc3RydWN0IF9SYl90cmVlX2Jhc2UKICA6IHB1YmxpYyBfUmJf
dHJlZV9hbGxvY19iYXNlPF9UcCwgX0FsbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0FsbG9jX3RyYWl0czxfVHAsIF9BbGxvYz46Ol9TX2luc3RhbmNlbGVzcz4KewogIHR5cGVk
ZWYgX1JiX3RyZWVfYWxsb2NfYmFzZTxfVHAsIF9BbGxvYywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX0FsbG9jX3RyYWl0czxfVHAsIF9BbGxvYz46Ol9TX2luc3RhbmNlbGVzcz4KICAg
ICAgICAgIF9CYXNlOwogIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OmFsbG9jYXRvcl90eXBlIGFs
bG9jYXRvcl90eXBlOwoKICBfUmJfdHJlZV9iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2Ep
IAogICAgOiBfQmFzZShfX2EpIHsgX01faGVhZGVyID0gX01fZ2V0X25vZGUoKTsgfQogIH5fUmJf
dHJlZV9iYXNlKCkgeyBfTV9wdXRfbm9kZShfTV9oZWFkZXIpOyB9Cgp9OwoKIyA1MTkgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3RyZWUuaCIgMwoK
CnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCBj
bGFzcyBfQ29tcGFyZSwKICAgICAgICAgIGNsYXNzIF9BbGxvYyA9IGFsbG9jYXRvcjwgX1ZhbHVl
ID4gID4KY2xhc3MgX1JiX3RyZWUgOiBwcm90ZWN0ZWQgX1JiX3RyZWVfYmFzZTxfVmFsdWUsIF9B
bGxvYz4gewogIHR5cGVkZWYgX1JiX3RyZWVfYmFzZTxfVmFsdWUsIF9BbGxvYz4gX0Jhc2U7CnBy
b3RlY3RlZDoKICB0eXBlZGVmIF9SYl90cmVlX25vZGVfYmFzZSogX0Jhc2VfcHRyOwogIHR5cGVk
ZWYgX1JiX3RyZWVfbm9kZTxfVmFsdWU+IF9SYl90cmVlX25vZGU7CiAgdHlwZWRlZiBfUmJfdHJl
ZV9Db2xvcl90eXBlIF9Db2xvcl90eXBlOwpwdWJsaWM6CiAgdHlwZWRlZiBfS2V5IGtleV90eXBl
OwogIHR5cGVkZWYgX1ZhbHVlIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2YWx1ZV90eXBlKiBwb2lu
dGVyOwogIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSogY29uc3RfcG9pbnRlcjsKICB0eXBlZGVm
IHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmIGNvbnN0
X3JlZmVyZW5jZTsKICB0eXBlZGVmIF9SYl90cmVlX25vZGUqIF9MaW5rX3R5cGU7CiAgdHlwZWRl
ZiBzaXplX3Qgc2l6ZV90eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsK
CiAgdHlwZWRlZiB0eXBlbmFtZSBfQmFzZTo6YWxsb2NhdG9yX3R5cGUgYWxsb2NhdG9yX3R5cGU7
CiAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIF9CYXNlOjpn
ZXRfYWxsb2NhdG9yKCk7IH0KCnByb3RlY3RlZDoKCgoKCgoKcHJvdGVjdGVkOgoKICBfTGlua190
eXBlIF9NX2NyZWF0ZV9ub2RlKGNvbnN0IHZhbHVlX3R5cGUmIF9feCkKICB7CiAgICBfTGlua190
eXBlIF9fdG1wID0gX01fZ2V0X25vZGUoKTsKICAgIHRyeSAgewogICAgICBjb25zdHJ1Y3QoJl9f
dG1wLT5fTV92YWx1ZV9maWVsZCwgX194KTsKICAgIH0KICAgIGNhdGNoKC4uLikgeyAgX01fcHV0
X25vZGUoX190bXApIDsgdGhyb3c7IH0gOwogICAgcmV0dXJuIF9fdG1wOwogIH0KCiAgX0xpbmtf
dHlwZSBfTV9jbG9uZV9ub2RlKF9MaW5rX3R5cGUgX194KQogIHsKICAgIF9MaW5rX3R5cGUgX190
bXAgPSBfTV9jcmVhdGVfbm9kZShfX3gtPl9NX3ZhbHVlX2ZpZWxkKTsKICAgIF9fdG1wLT5fTV9j
b2xvciA9IF9feC0+X01fY29sb3I7CiAgICBfX3RtcC0+X01fbGVmdCA9IDA7CiAgICBfX3RtcC0+
X01fcmlnaHQgPSAwOwogICAgcmV0dXJuIF9fdG1wOwogIH0KCiAgdm9pZCBkZXN0cm95X25vZGUo
X0xpbmtfdHlwZSBfX3ApCiAgewogICAgZGVzdHJveSgmX19wLT5fTV92YWx1ZV9maWVsZCk7CiAg
ICBfTV9wdXRfbm9kZShfX3ApOwogIH0KCnByb3RlY3RlZDoKICBzaXplX3R5cGUgX01fbm9kZV9j
b3VudDsgIAogIF9Db21wYXJlIF9NX2tleV9jb21wYXJlOwoKICBfTGlua190eXBlJiBfTV9yb290
KCkgY29uc3QgCiAgICB7IHJldHVybiAoX0xpbmtfdHlwZSYpIF9NX2hlYWRlci0+X01fcGFyZW50
OyB9CiAgX0xpbmtfdHlwZSYgX01fbGVmdG1vc3QoKSBjb25zdCAKICAgIHsgcmV0dXJuIChfTGlu
a190eXBlJikgX01faGVhZGVyLT5fTV9sZWZ0OyB9CiAgX0xpbmtfdHlwZSYgX01fcmlnaHRtb3N0
KCkgY29uc3QgCiAgICB7IHJldHVybiAoX0xpbmtfdHlwZSYpIF9NX2hlYWRlci0+X01fcmlnaHQ7
IH0KCiAgc3RhdGljIF9MaW5rX3R5cGUmIF9TX2xlZnQoX0xpbmtfdHlwZSBfX3gpCiAgICB7IHJl
dHVybiAoX0xpbmtfdHlwZSYpKF9feC0+X01fbGVmdCk7IH0KICBzdGF0aWMgX0xpbmtfdHlwZSYg
X1NfcmlnaHQoX0xpbmtfdHlwZSBfX3gpCiAgICB7IHJldHVybiAoX0xpbmtfdHlwZSYpKF9feC0+
X01fcmlnaHQpOyB9CiAgc3RhdGljIF9MaW5rX3R5cGUmIF9TX3BhcmVudChfTGlua190eXBlIF9f
eCkKICAgIHsgcmV0dXJuIChfTGlua190eXBlJikoX194LT5fTV9wYXJlbnQpOyB9CiAgc3RhdGlj
IHJlZmVyZW5jZSBfU192YWx1ZShfTGlua190eXBlIF9feCkKICAgIHsgcmV0dXJuIF9feC0+X01f
dmFsdWVfZmllbGQ7IH0KICBzdGF0aWMgY29uc3QgX0tleSYgX1Nfa2V5KF9MaW5rX3R5cGUgX194
KQogICAgeyByZXR1cm4gX0tleU9mVmFsdWUoKShfU192YWx1ZShfX3gpKTsgfQogIHN0YXRpYyBf
Q29sb3JfdHlwZSYgX1NfY29sb3IoX0xpbmtfdHlwZSBfX3gpCiAgICB7IHJldHVybiAoX0NvbG9y
X3R5cGUmKShfX3gtPl9NX2NvbG9yKTsgfQoKICBzdGF0aWMgX0xpbmtfdHlwZSYgX1NfbGVmdChf
QmFzZV9wdHIgX194KQogICAgeyByZXR1cm4gKF9MaW5rX3R5cGUmKShfX3gtPl9NX2xlZnQpOyB9
CiAgc3RhdGljIF9MaW5rX3R5cGUmIF9TX3JpZ2h0KF9CYXNlX3B0ciBfX3gpCiAgICB7IHJldHVy
biAoX0xpbmtfdHlwZSYpKF9feC0+X01fcmlnaHQpOyB9CiAgc3RhdGljIF9MaW5rX3R5cGUmIF9T
X3BhcmVudChfQmFzZV9wdHIgX194KQogICAgeyByZXR1cm4gKF9MaW5rX3R5cGUmKShfX3gtPl9N
X3BhcmVudCk7IH0KICBzdGF0aWMgcmVmZXJlbmNlIF9TX3ZhbHVlKF9CYXNlX3B0ciBfX3gpCiAg
ICB7IHJldHVybiAoKF9MaW5rX3R5cGUpX194KS0+X01fdmFsdWVfZmllbGQ7IH0KICBzdGF0aWMg
Y29uc3QgX0tleSYgX1Nfa2V5KF9CYXNlX3B0ciBfX3gpCiAgICB7IHJldHVybiBfS2V5T2ZWYWx1
ZSgpKF9TX3ZhbHVlKF9MaW5rX3R5cGUoX194KSkpO30gCiAgc3RhdGljIF9Db2xvcl90eXBlJiBf
U19jb2xvcihfQmFzZV9wdHIgX194KQogICAgeyByZXR1cm4gKF9Db2xvcl90eXBlJikoX0xpbmtf
dHlwZShfX3gpLT5fTV9jb2xvcik7IH0KCiAgc3RhdGljIF9MaW5rX3R5cGUgX1NfbWluaW11bShf
TGlua190eXBlIF9feCkgCiAgICB7IHJldHVybiAoX0xpbmtfdHlwZSkgIF9SYl90cmVlX25vZGVf
YmFzZTo6X1NfbWluaW11bShfX3gpOyB9CgogIHN0YXRpYyBfTGlua190eXBlIF9TX21heGltdW0o
X0xpbmtfdHlwZSBfX3gpCiAgICB7IHJldHVybiAoX0xpbmtfdHlwZSkgX1JiX3RyZWVfbm9kZV9i
YXNlOjpfU19tYXhpbXVtKF9feCk7IH0KCnB1YmxpYzoKICB0eXBlZGVmIF9SYl90cmVlX2l0ZXJh
dG9yPHZhbHVlX3R5cGUsIHJlZmVyZW5jZSwgcG9pbnRlcj4gaXRlcmF0b3I7CiAgdHlwZWRlZiBf
UmJfdHJlZV9pdGVyYXRvcjx2YWx1ZV90eXBlLCBjb25zdF9yZWZlcmVuY2UsIGNvbnN0X3BvaW50
ZXI+IAogICAgICAgICAgY29uc3RfaXRlcmF0b3I7CgoKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0
b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgdHlwZWRlZiByZXZl
cnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwoKCgoKCgoKIAoKcHJpdmF0
ZToKICBpdGVyYXRvciBfTV9pbnNlcnQoX0Jhc2VfcHRyIF9feCwgX0Jhc2VfcHRyIF9feSwgY29u
c3QgdmFsdWVfdHlwZSYgX192KTsKICBfTGlua190eXBlIF9NX2NvcHkoX0xpbmtfdHlwZSBfX3gs
IF9MaW5rX3R5cGUgX19wKTsKICB2b2lkIF9NX2VyYXNlKF9MaW5rX3R5cGUgX194KTsKCnB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgX1JiX3RyZWUoKQogICAgOiBf
QmFzZShhbGxvY2F0b3JfdHlwZSgpKSwgX01fbm9kZV9jb3VudCgwKSwgX01fa2V5X2NvbXBhcmUo
KQogICAgeyBfTV9lbXB0eV9pbml0aWFsaXplKCk7IH0KCiAgX1JiX3RyZWUoY29uc3QgX0NvbXBh
cmUmIF9fY29tcCkKICAgIDogX0Jhc2UoYWxsb2NhdG9yX3R5cGUoKSksIF9NX25vZGVfY291bnQo
MCksIF9NX2tleV9jb21wYXJlKF9fY29tcCkgCiAgICB7IF9NX2VtcHR5X2luaXRpYWxpemUoKTsg
fQoKICBfUmJfdHJlZShjb25zdCBfQ29tcGFyZSYgX19jb21wLCBjb25zdCBhbGxvY2F0b3JfdHlw
ZSYgX19hKQogICAgOiBfQmFzZShfX2EpLCBfTV9ub2RlX2NvdW50KDApLCBfTV9rZXlfY29tcGFy
ZShfX2NvbXApIAogICAgeyBfTV9lbXB0eV9pbml0aWFsaXplKCk7IH0KCiAgX1JiX3RyZWUoY29u
c3QgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPiYgX194
KSAKICAgIDogX0Jhc2UoX194LmdldF9hbGxvY2F0b3IoKSksCiAgICAgIF9NX25vZGVfY291bnQo
MCksIF9NX2tleV9jb21wYXJlKF9feC5fTV9rZXlfY29tcGFyZSkKICB7IAogICAgaWYgKF9feC5f
TV9yb290KCkgPT0gMCkKICAgICAgX01fZW1wdHlfaW5pdGlhbGl6ZSgpOwogICAgZWxzZSB7CiAg
ICAgIF9TX2NvbG9yKF9NX2hlYWRlcikgPSBfU19yYl90cmVlX3JlZDsKICAgICAgX01fcm9vdCgp
ID0gX01fY29weShfX3guX01fcm9vdCgpLCBfTV9oZWFkZXIpOwogICAgICBfTV9sZWZ0bW9zdCgp
ID0gX1NfbWluaW11bShfTV9yb290KCkpOwogICAgICBfTV9yaWdodG1vc3QoKSA9IF9TX21heGlt
dW0oX01fcm9vdCgpKTsKICAgIH0KICAgIF9NX25vZGVfY291bnQgPSBfX3guX01fbm9kZV9jb3Vu
dDsKICB9CiAgfl9SYl90cmVlKCkgeyBjbGVhcigpOyB9CiAgX1JiX3RyZWU8X0tleSxfVmFsdWUs
X0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPiYgCiAgb3BlcmF0b3I9KGNvbnN0IF9SYl90cmVl
PF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4mIF9feCk7Cgpwcml2YXRl
OgogIHZvaWQgX01fZW1wdHlfaW5pdGlhbGl6ZSgpIHsKICAgIF9TX2NvbG9yKF9NX2hlYWRlcikg
PSBfU19yYl90cmVlX3JlZDsgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICBfTV9yb290KCkgPSAwOwogICAgX01fbGVmdG1vc3QoKSA9IF9NX2hlYWRlcjsK
ICAgIF9NX3JpZ2h0bW9zdCgpID0gX01faGVhZGVyOwogIH0KCnB1YmxpYzogICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogIF9Db21wYXJlIGtleV9jb21wKCkgY29uc3QgeyBy
ZXR1cm4gX01fa2V5X2NvbXBhcmU7IH0KICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIF9NX2xl
ZnRtb3N0KCk7IH0KICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIF9NX2xl
ZnRtb3N0KCk7IH0KICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBfTV9oZWFkZXI7IH0KICBjb25z
dF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBfTV9oZWFkZXI7IH0KICByZXZlcnNlX2l0
ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CiAgY29u
c3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IAogICAgcmV0dXJuIGNvbnN0X3Jl
dmVyc2VfaXRlcmF0b3IoZW5kKCkpOyAKICB9CiAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgeyBy
ZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQogIGNvbnN0X3JldmVyc2VfaXRlcmF0
b3IgcmVuZCgpIGNvbnN0IHsgCiAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdp
bigpKTsKICB9IAogIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBfTV9ub2RlX2NvdW50ID09
IDA7IH0KICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIF9NX25vZGVfY291bnQ7IH0K
ICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7IHJldHVybiBzaXplX3R5cGUoLTEpOyB9Cgog
IHZvaWQgc3dhcChfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxs
b2M+JiBfX3QpIHsKICAgICA6OnN3YXAoX01faGVhZGVyLCBfX3QuX01faGVhZGVyKTsKICAgICA6
OnN3YXAoX01fbm9kZV9jb3VudCwgX190Ll9NX25vZGVfY291bnQpOwogICAgIDo6c3dhcChfTV9r
ZXlfY29tcGFyZSwgX190Ll9NX2tleV9jb21wYXJlKTsKICB9CiAgICAKcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICBwYWlyPGl0ZXJhdG9yLGJvb2w+IGluc2VydF91
bmlxdWUoY29uc3QgdmFsdWVfdHlwZSYgX194KTsKICBpdGVyYXRvciBpbnNlcnRfZXF1YWwoY29u
c3QgdmFsdWVfdHlwZSYgX194KTsKCiAgaXRlcmF0b3IgaW5zZXJ0X3VuaXF1ZShpdGVyYXRvciBf
X3Bvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpOwogIGl0ZXJhdG9yIGluc2VydF9lcXVh
bChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpOwoKCiAgdGVtcGxh
dGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogIHZvaWQgaW5zZXJ0X3VuaXF1ZShfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpOwogIHRlbXBsYXRlIDxjbGFzcyBf
SW5wdXRJdGVyYXRvcj4KICB2b2lkIGluc2VydF9lcXVhbChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0
LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpOwoKCgoKCgoKICB2b2lkIGVyYXNlKGl0ZXJhdG9yIF9f
cG9zaXRpb24pOwogIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYgX194KTsKICB2b2lk
IGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCk7CiAgdm9pZCBlcmFzZShj
b25zdCBrZXlfdHlwZSogX19maXJzdCwgY29uc3Qga2V5X3R5cGUqIF9fbGFzdCk7CiAgdm9pZCBj
bGVhcigpIHsKICAgIGlmIChfTV9ub2RlX2NvdW50ICE9IDApIHsKICAgICAgX01fZXJhc2UoX01f
cm9vdCgpKTsKICAgICAgX01fbGVmdG1vc3QoKSA9IF9NX2hlYWRlcjsKICAgICAgX01fcm9vdCgp
ID0gMDsKICAgICAgX01fcmlnaHRtb3N0KCkgPSBfTV9oZWFkZXI7CiAgICAgIF9NX25vZGVfY291
bnQgPSAwOwogICAgfQogIH0gICAgICAKCnB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlwZSYgX194KTsKICBjb25zdF9p
dGVyYXRvciBmaW5kKGNvbnN0IGtleV90eXBlJiBfX3gpIGNvbnN0OwogIHNpemVfdHlwZSBjb3Vu
dChjb25zdCBrZXlfdHlwZSYgX194KSBjb25zdDsKICBpdGVyYXRvciBsb3dlcl9ib3VuZChjb25z
dCBrZXlfdHlwZSYgX194KTsKICBjb25zdF9pdGVyYXRvciBsb3dlcl9ib3VuZChjb25zdCBrZXlf
dHlwZSYgX194KSBjb25zdDsKICBpdGVyYXRvciB1cHBlcl9ib3VuZChjb25zdCBrZXlfdHlwZSYg
X194KTsKICBjb25zdF9pdGVyYXRvciB1cHBlcl9ib3VuZChjb25zdCBrZXlfdHlwZSYgX194KSBj
b25zdDsKICBwYWlyPGl0ZXJhdG9yLGl0ZXJhdG9yPiBlcXVhbF9yYW5nZShjb25zdCBrZXlfdHlw
ZSYgX194KTsKICBwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gZXF1YWxfcmFu
Z2UoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3Q7CgpwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogIGJvb2wgX19yYl92ZXJpZnkoKSBjb25zdDsKfTsKCnRlbXBsYXRl
IDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAg
IGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGluZSBib29sIApvcGVyYXRvcj09KGNv
bnN0IF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4mIF9f
eCwgCiAgICAgICAgICAgY29uc3QgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0Nv
bXBhcmUsX0FsbG9jPiYgX195KQp7CiAgcmV0dXJuIF9feC5zaXplKCkgPT0gX195LnNpemUoKSAm
JgogICAgICAgICBlcXVhbChfX3guYmVnaW4oKSwgX194LmVuZCgpLCBfX3kuYmVnaW4oKSk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAK
ICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGluZSBib29sIApvcGVy
YXRvcjwoY29uc3QgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0Fs
bG9jPiYgX194LCAKICAgICAgICAgIGNvbnN0IF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZh
bHVlLF9Db21wYXJlLF9BbGxvYz4mIF9feSkKewogIHJldHVybiBsZXhpY29ncmFwaGljYWxfY29t
cGFyZShfX3guYmVnaW4oKSwgX194LmVuZCgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX195LmJlZ2luKCksIF9feS5lbmQoKSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9LZXks
IGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBh
cmUsIGNsYXNzIF9BbGxvYz4KaW5saW5lIHZvaWQgCnN3YXAoX1JiX3RyZWU8X0tleSxfVmFsdWUs
X0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPiYgX194LCAKICAgICBfUmJfdHJlZTxfS2V5LF9W
YWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+JiBfX3kpCnsKICBfX3guc3dhcChfX3kp
Owp9CgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5T2ZW
YWx1ZSwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgpfUmJfdHJlZTxf
S2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+JiAKX1JiX3RyZWU8X0tleSxf
VmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPgogIDo6b3BlcmF0b3I9KGNvbnN0IF9S
Yl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4mIF9feCkKewog
IGlmICh0aGlzICE9ICZfX3gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICBjbGVhcigpOwogICAgX01fbm9kZV9jb3VudCA9IDA7CiAgICBfTV9rZXlfY29tcGFyZSA9IF9f
eC5fTV9rZXlfY29tcGFyZTsgICAgICAgIAogICAgaWYgKF9feC5fTV9yb290KCkgPT0gMCkgewog
ICAgICBfTV9yb290KCkgPSAwOwogICAgICBfTV9sZWZ0bW9zdCgpID0gX01faGVhZGVyOwogICAg
ICBfTV9yaWdodG1vc3QoKSA9IF9NX2hlYWRlcjsKICAgIH0KICAgIGVsc2UgewogICAgICBfTV9y
b290KCkgPSBfTV9jb3B5KF9feC5fTV9yb290KCksIF9NX2hlYWRlcik7CiAgICAgIF9NX2xlZnRt
b3N0KCkgPSBfU19taW5pbXVtKF9NX3Jvb3QoKSk7CiAgICAgIF9NX3JpZ2h0bW9zdCgpID0gX1Nf
bWF4aW11bShfTV9yb290KCkpOwogICAgICBfTV9ub2RlX2NvdW50ID0gX194Ll9NX25vZGVfY291
bnQ7CiAgICB9CiAgfQogIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNs
YXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUs
IGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUs
X0NvbXBhcmUsX0FsbG9jPjo6aXRlcmF0b3IKX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFs
dWUsX0NvbXBhcmUsX0FsbG9jPgogIDo6X01faW5zZXJ0KF9CYXNlX3B0ciBfX3hfLCBfQmFzZV9w
dHIgX195XywgY29uc3QgX1ZhbHVlJiBfX3YpCnsKICBfTGlua190eXBlIF9feCA9IChfTGlua190
eXBlKSBfX3hfOwogIF9MaW5rX3R5cGUgX195ID0gKF9MaW5rX3R5cGUpIF9feV87CiAgX0xpbmtf
dHlwZSBfX3o7CgogIGlmIChfX3kgPT0gX01faGVhZGVyIHx8IF9feCAhPSAwIHx8IAogICAgICBf
TV9rZXlfY29tcGFyZShfS2V5T2ZWYWx1ZSgpKF9fdiksIF9TX2tleShfX3kpKSkgewogICAgX196
ID0gX01fY3JlYXRlX25vZGUoX192KTsKICAgIF9TX2xlZnQoX195KSA9IF9fejsgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgaWYgKF9f
eSA9PSBfTV9oZWFkZXIpIHsKICAgICAgX01fcm9vdCgpID0gX196OwogICAgICBfTV9yaWdodG1v
c3QoKSA9IF9fejsKICAgIH0KICAgIGVsc2UgaWYgKF9feSA9PSBfTV9sZWZ0bW9zdCgpKQogICAg
ICBfTV9sZWZ0bW9zdCgpID0gX196OyAgICAKICB9CiAgZWxzZSB7CiAgICBfX3ogPSBfTV9jcmVh
dGVfbm9kZShfX3YpOwogICAgX1NfcmlnaHQoX195KSA9IF9fejsKICAgIGlmIChfX3kgPT0gX01f
cmlnaHRtb3N0KCkpCiAgICAgIF9NX3JpZ2h0bW9zdCgpID0gX196OyAgIAogIH0KICBfU19wYXJl
bnQoX196KSA9IF9feTsKICBfU19sZWZ0KF9feikgPSAwOwogIF9TX3JpZ2h0KF9feikgPSAwOwog
IF9SYl90cmVlX3JlYmFsYW5jZShfX3osIF9NX2hlYWRlci0+X01fcGFyZW50KTsKICArK19NX25v
ZGVfY291bnQ7CiAgcmV0dXJuIGl0ZXJhdG9yKF9feik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5
LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21w
YXJlLCBjbGFzcyBfQWxsb2M+CnR5cGVuYW1lIF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZh
bHVlLF9Db21wYXJlLF9BbGxvYz46Oml0ZXJhdG9yCl9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlP
ZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6Omluc2VydF9lcXVhbChjb25zdCBfVmFsdWUmIF9f
dikKewogIF9MaW5rX3R5cGUgX195ID0gX01faGVhZGVyOwogIF9MaW5rX3R5cGUgX194ID0gX01f
cm9vdCgpOwogIHdoaWxlIChfX3ggIT0gMCkgewogICAgX195ID0gX194OwogICAgX194ID0gX01f
a2V5X2NvbXBhcmUoX0tleU9mVmFsdWUoKShfX3YpLCBfU19rZXkoX194KSkgPyAKICAgICAgICAg
ICAgX1NfbGVmdChfX3gpIDogX1NfcmlnaHQoX194KTsKICB9CiAgcmV0dXJuIF9NX2luc2VydChf
X3gsIF9feSwgX192KTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNs
YXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+
CnBhaXI8dHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUs
X0FsbG9jPjo6aXRlcmF0b3IsIAogICAgIGJvb2w+Cl9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlP
ZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6Omluc2VydF91bmlxdWUoY29uc3QgX1ZhbHVlJiBf
X3YpCnsKICBfTGlua190eXBlIF9feSA9IF9NX2hlYWRlcjsKICBfTGlua190eXBlIF9feCA9IF9N
X3Jvb3QoKTsKICBib29sIF9fY29tcCA9IHRydWU7CiAgd2hpbGUgKF9feCAhPSAwKSB7CiAgICBf
X3kgPSBfX3g7CiAgICBfX2NvbXAgPSBfTV9rZXlfY29tcGFyZShfS2V5T2ZWYWx1ZSgpKF9fdiks
IF9TX2tleShfX3gpKTsKICAgIF9feCA9IF9fY29tcCA/IF9TX2xlZnQoX194KSA6IF9TX3JpZ2h0
KF9feCk7CiAgfQogIGl0ZXJhdG9yIF9faiA9IGl0ZXJhdG9yKF9feSk7ICAgCiAgaWYgKF9fY29t
cCkKICAgIGlmIChfX2ogPT0gYmVnaW4oKSkgICAgIAogICAgICByZXR1cm4gcGFpcjxpdGVyYXRv
cixib29sPihfTV9pbnNlcnQoX194LCBfX3ksIF9fdiksIHRydWUpOwogICAgZWxzZQogICAgICAt
LV9fajsKICBpZiAoX01fa2V5X2NvbXBhcmUoX1Nfa2V5KF9fai5fTV9ub2RlKSwgX0tleU9mVmFs
dWUoKShfX3YpKSkKICAgIHJldHVybiBwYWlyPGl0ZXJhdG9yLGJvb2w+KF9NX2luc2VydChfX3gs
IF9feSwgX192KSwgdHJ1ZSk7CiAgcmV0dXJuIHBhaXI8aXRlcmF0b3IsYm9vbD4oX19qLCBmYWxz
ZSk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbCwgY2xhc3MgX0tleU9mVmFs
dWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1Ji
X3RyZWU8X0tleSwgX1ZhbCwgX0tleU9mVmFsdWUsIF9Db21wYXJlLCBfQWxsb2M+OjppdGVyYXRv
ciAKX1JiX3RyZWU8X0tleSwgX1ZhbCwgX0tleU9mVmFsdWUsIF9Db21wYXJlLCBfQWxsb2M+CiAg
OjppbnNlcnRfdW5pcXVlKGl0ZXJhdG9yIF9fcG9zaXRpb24sIGNvbnN0IF9WYWwmIF9fdikKewog
IGlmIChfX3Bvc2l0aW9uLl9NX25vZGUgPT0gX01faGVhZGVyLT5fTV9sZWZ0KSB7ICAKICAgIGlm
IChzaXplKCkgPiAwICYmIAogICAgICAgIF9NX2tleV9jb21wYXJlKF9LZXlPZlZhbHVlKCkoX192
KSwgX1Nfa2V5KF9fcG9zaXRpb24uX01fbm9kZSkpKQogICAgICByZXR1cm4gX01faW5zZXJ0KF9f
cG9zaXRpb24uX01fbm9kZSwgX19wb3NpdGlvbi5fTV9ub2RlLCBfX3YpOwogICAgIAogICAgZWxz
ZQogICAgICByZXR1cm4gaW5zZXJ0X3VuaXF1ZShfX3YpLmZpcnN0OwogIH0gZWxzZSBpZiAoX19w
b3NpdGlvbi5fTV9ub2RlID09IF9NX2hlYWRlcikgeyAgCiAgICBpZiAoX01fa2V5X2NvbXBhcmUo
X1Nfa2V5KF9NX3JpZ2h0bW9zdCgpKSwgX0tleU9mVmFsdWUoKShfX3YpKSkKICAgICAgcmV0dXJu
IF9NX2luc2VydCgwLCBfTV9yaWdodG1vc3QoKSwgX192KTsKICAgIGVsc2UKICAgICAgcmV0dXJu
IGluc2VydF91bmlxdWUoX192KS5maXJzdDsKICB9IGVsc2UgewogICAgaXRlcmF0b3IgX19iZWZv
cmUgPSBfX3Bvc2l0aW9uOwogICAgLS1fX2JlZm9yZTsKICAgIGlmIChfTV9rZXlfY29tcGFyZShf
U19rZXkoX19iZWZvcmUuX01fbm9kZSksIF9LZXlPZlZhbHVlKCkoX192KSkgCiAgICAgICAgJiYg
X01fa2V5X2NvbXBhcmUoX0tleU9mVmFsdWUoKShfX3YpLCBfU19rZXkoX19wb3NpdGlvbi5fTV9u
b2RlKSkpIHsKICAgICAgaWYgKF9TX3JpZ2h0KF9fYmVmb3JlLl9NX25vZGUpID09IDApCiAgICAg
ICAgcmV0dXJuIF9NX2luc2VydCgwLCBfX2JlZm9yZS5fTV9ub2RlLCBfX3YpOyAKICAgICAgZWxz
ZQogICAgICAgIHJldHVybiBfTV9pbnNlcnQoX19wb3NpdGlvbi5fTV9ub2RlLCBfX3Bvc2l0aW9u
Ll9NX25vZGUsIF9fdik7CiAgICAgCiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGluc2VydF91bmlx
dWUoX192KS5maXJzdDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsLCBj
bGFzcyBfS2V5T2ZWYWx1ZSwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9j
Pgp0eXBlbmFtZSBfUmJfdHJlZTxfS2V5LF9WYWwsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9j
Pjo6aXRlcmF0b3IgCl9SYl90cmVlPF9LZXksX1ZhbCxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxs
b2M+CiAgOjppbnNlcnRfZXF1YWwoaXRlcmF0b3IgX19wb3NpdGlvbiwgY29uc3QgX1ZhbCYgX192
KQp7CiAgaWYgKF9fcG9zaXRpb24uX01fbm9kZSA9PSBfTV9oZWFkZXItPl9NX2xlZnQpIHsgIAog
ICAgaWYgKHNpemUoKSA+IDAgJiYgCiAgICAgICAgX01fa2V5X2NvbXBhcmUoX0tleU9mVmFsdWUo
KShfX3YpLCBfU19rZXkoX19wb3NpdGlvbi5fTV9ub2RlKSkpCiAgICAgIHJldHVybiBfTV9pbnNl
cnQoX19wb3NpdGlvbi5fTV9ub2RlLCBfX3Bvc2l0aW9uLl9NX25vZGUsIF9fdik7CiAgICAgCiAg
ICBlbHNlCiAgICAgIHJldHVybiBpbnNlcnRfZXF1YWwoX192KTsKICB9IGVsc2UgaWYgKF9fcG9z
aXRpb24uX01fbm9kZSA9PSBfTV9oZWFkZXIpIHsgCiAgICBpZiAoIV9NX2tleV9jb21wYXJlKF9L
ZXlPZlZhbHVlKCkoX192KSwgX1Nfa2V5KF9NX3JpZ2h0bW9zdCgpKSkpCiAgICAgIHJldHVybiBf
TV9pbnNlcnQoMCwgX01fcmlnaHRtb3N0KCksIF9fdik7CiAgICBlbHNlCiAgICAgIHJldHVybiBp
bnNlcnRfZXF1YWwoX192KTsKICB9IGVsc2UgewogICAgaXRlcmF0b3IgX19iZWZvcmUgPSBfX3Bv
c2l0aW9uOwogICAgLS1fX2JlZm9yZTsKICAgIGlmICghX01fa2V5X2NvbXBhcmUoX0tleU9mVmFs
dWUoKShfX3YpLCBfU19rZXkoX19iZWZvcmUuX01fbm9kZSkpCiAgICAgICAgJiYgIV9NX2tleV9j
b21wYXJlKF9TX2tleShfX3Bvc2l0aW9uLl9NX25vZGUpLCBfS2V5T2ZWYWx1ZSgpKF9fdikpKSB7
CiAgICAgIGlmIChfU19yaWdodChfX2JlZm9yZS5fTV9ub2RlKSA9PSAwKQogICAgICAgIHJldHVy
biBfTV9pbnNlcnQoMCwgX19iZWZvcmUuX01fbm9kZSwgX192KTsgCiAgICAgIGVsc2UKICAgICAg
ICByZXR1cm4gX01faW5zZXJ0KF9fcG9zaXRpb24uX01fbm9kZSwgX19wb3NpdGlvbi5fTV9ub2Rl
LCBfX3YpOwogICAgIAogICAgfSBlbHNlCiAgICAgIHJldHVybiBpbnNlcnRfZXF1YWwoX192KTsK
ICB9Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWwsIGNsYXNzIF9Lb1YsIGNs
YXNzIF9DbXAsIGNsYXNzIF9BbGxvYz4KICB0ZW1wbGF0ZTxjbGFzcyBfSUk+CnZvaWQgX1JiX3Ry
ZWU8X0tleSxfVmFsLF9Lb1YsX0NtcCxfQWxsb2M+CiAgOjppbnNlcnRfZXF1YWwoX0lJIF9fZmly
c3QsIF9JSSBfX2xhc3QpCnsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3Qp
CiAgICBpbnNlcnRfZXF1YWwoKl9fZmlyc3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xh
c3MgX1ZhbCwgY2xhc3MgX0tvViwgY2xhc3MgX0NtcCwgY2xhc3MgX0FsbG9jPiAKICB0ZW1wbGF0
ZTxjbGFzcyBfSUk+CnZvaWQgX1JiX3RyZWU8X0tleSxfVmFsLF9Lb1YsX0NtcCxfQWxsb2M+CiAg
OjppbnNlcnRfdW5pcXVlKF9JSSBfX2ZpcnN0LCBfSUkgX19sYXN0KSB7CiAgZm9yICggOyBfX2Zp
cnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgaW5zZXJ0X3VuaXF1ZSgqX19maXJzdCk7Cn0K
CiMgMTAyMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z
dGxfdHJlZS5oIiAzCgogICAgICAgICAKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1
ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9B
bGxvYz4KaW5saW5lIHZvaWQgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBh
cmUsX0FsbG9jPgogIDo6ZXJhc2UoaXRlcmF0b3IgX19wb3NpdGlvbikKewogIF9MaW5rX3R5cGUg
X195ID0gCiAgICAoX0xpbmtfdHlwZSkgX1JiX3RyZWVfcmViYWxhbmNlX2Zvcl9lcmFzZShfX3Bv
c2l0aW9uLl9NX25vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfTV9oZWFkZXItPl9NX3BhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9NX2hlYWRlci0+X01fbGVmdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9NX2hlYWRlci0+X01fcmlnaHQpOwogIGRlc3Ryb3lf
bm9kZShfX3kpOwogIC0tX01fbm9kZV9jb3VudDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNs
YXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUs
IGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUs
X0NvbXBhcmUsX0FsbG9jPjo6c2l6ZV90eXBlIApfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZW
YWx1ZSxfQ29tcGFyZSxfQWxsb2M+OjplcmFzZShjb25zdCBfS2V5JiBfX3gpCnsKICBwYWlyPGl0
ZXJhdG9yLGl0ZXJhdG9yPiBfX3AgPSBlcXVhbF9yYW5nZShfX3gpOwogIHNpemVfdHlwZSBfX24g
PSAwOwogIGRpc3RhbmNlKF9fcC5maXJzdCwgX19wLnNlY29uZCwgX19uKTsKICBlcmFzZShfX3Au
Zmlyc3QsIF9fcC5zZWNvbmQpOwogIHJldHVybiBfX247Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5
LCBjbGFzcyBfVmFsLCBjbGFzcyBfS29WLCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgp0
eXBlbmFtZSBfUmJfdHJlZTxfS2V5LCBfVmFsLCBfS29WLCBfQ29tcGFyZSwgX0FsbG9jPjo6X0xp
bmtfdHlwZSAKX1JiX3RyZWU8X0tleSxfVmFsLF9Lb1YsX0NvbXBhcmUsX0FsbG9jPgogIDo6X01f
Y29weShfTGlua190eXBlIF9feCwgX0xpbmtfdHlwZSBfX3ApCnsKICAgICAgICAgICAgICAgICAg
ICAgICAgIAogIF9MaW5rX3R5cGUgX190b3AgPSBfTV9jbG9uZV9ub2RlKF9feCk7CiAgX190b3At
Pl9NX3BhcmVudCA9IF9fcDsKIAogIHRyeSAgewogICAgaWYgKF9feC0+X01fcmlnaHQpCiAgICAg
IF9fdG9wLT5fTV9yaWdodCA9IF9NX2NvcHkoX1NfcmlnaHQoX194KSwgX190b3ApOwogICAgX19w
ID0gX190b3A7CiAgICBfX3ggPSBfU19sZWZ0KF9feCk7CgogICAgd2hpbGUgKF9feCAhPSAwKSB7
CiAgICAgIF9MaW5rX3R5cGUgX195ID0gX01fY2xvbmVfbm9kZShfX3gpOwogICAgICBfX3AtPl9N
X2xlZnQgPSBfX3k7CiAgICAgIF9feS0+X01fcGFyZW50ID0gX19wOwogICAgICBpZiAoX194LT5f
TV9yaWdodCkKICAgICAgICBfX3ktPl9NX3JpZ2h0ID0gX01fY29weShfU19yaWdodChfX3gpLCBf
X3kpOwogICAgICBfX3AgPSBfX3k7CiAgICAgIF9feCA9IF9TX2xlZnQoX194KTsKICAgIH0KICB9
CiAgY2F0Y2goLi4uKSB7ICBfTV9lcmFzZShfX3RvcCkgOyB0aHJvdzsgfSA7CgogIHJldHVybiBf
X3RvcDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9m
VmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4Kdm9pZCBfUmJf
dHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+CiAgOjpfTV9lcmFz
ZShfTGlua190eXBlIF9feCkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICB3
aGlsZSAoX194ICE9IDApIHsKICAgIF9NX2VyYXNlKF9TX3JpZ2h0KF9feCkpOwogICAgX0xpbmtf
dHlwZSBfX3kgPSBfU19sZWZ0KF9feCk7CiAgICBkZXN0cm95X25vZGUoX194KTsKICAgIF9feCA9
IF9feTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9L
ZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CnZvaWQg
X1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPgogIDo6ZXJh
c2UoaXRlcmF0b3IgX19maXJzdCwgaXRlcmF0b3IgX19sYXN0KQp7CiAgaWYgKF9fZmlyc3QgPT0g
YmVnaW4oKSAmJiBfX2xhc3QgPT0gZW5kKCkpCiAgICBjbGVhcigpOwogIGVsc2UKICAgIHdoaWxl
IChfX2ZpcnN0ICE9IF9fbGFzdCkgZXJhc2UoX19maXJzdCsrKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3Mg
X0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4Kdm9pZCBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZW
YWx1ZSxfQ29tcGFyZSxfQWxsb2M+CiAgOjplcmFzZShjb25zdCBfS2V5KiBfX2ZpcnN0LCBjb25z
dCBfS2V5KiBfX2xhc3QpIAp7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSBlcmFzZSgqX19m
aXJzdCsrKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tl
eU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5h
bWUgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6aXRl
cmF0b3IgCl9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz46
OmZpbmQoY29uc3QgX0tleSYgX19rKQp7CiAgX0xpbmtfdHlwZSBfX3kgPSBfTV9oZWFkZXI7ICAg
ICAgIAogIF9MaW5rX3R5cGUgX194ID0gX01fcm9vdCgpOyAgICAgICAKCiAgd2hpbGUgKF9feCAh
PSAwKSAKICAgIGlmICghX01fa2V5X2NvbXBhcmUoX1Nfa2V5KF9feCksIF9faykpCiAgICAgIF9f
eSA9IF9feCwgX194ID0gX1NfbGVmdChfX3gpOwogICAgZWxzZQogICAgICBfX3ggPSBfU19yaWdo
dChfX3gpOwoKICBpdGVyYXRvciBfX2ogPSBpdGVyYXRvcihfX3kpOyAgIAogIHJldHVybiAoX19q
ID09IGVuZCgpIHx8IF9NX2tleV9jb21wYXJlKF9faywgX1Nfa2V5KF9fai5fTV9ub2RlKSkpID8g
CiAgICAgZW5kKCkgOiBfX2o7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUs
IGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxs
b2M+CnR5cGVuYW1lIF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9B
bGxvYz46OmNvbnN0X2l0ZXJhdG9yIApfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxf
Q29tcGFyZSxfQWxsb2M+OjpmaW5kKGNvbnN0IF9LZXkmIF9faykgY29uc3QKewogIF9MaW5rX3R5
cGUgX195ID0gX01faGVhZGVyOyAgCiAgX0xpbmtfdHlwZSBfX3ggPSBfTV9yb290KCk7ICAKCiAg
d2hpbGUgKF9feCAhPSAwKSB7CiAgICBpZiAoIV9NX2tleV9jb21wYXJlKF9TX2tleShfX3gpLCBf
X2spKQogICAgICBfX3kgPSBfX3gsIF9feCA9IF9TX2xlZnQoX194KTsKICAgIGVsc2UKICAgICAg
X194ID0gX1NfcmlnaHQoX194KTsKICB9CiAgY29uc3RfaXRlcmF0b3IgX19qID0gY29uc3RfaXRl
cmF0b3IoX195KTsgICAKICByZXR1cm4gKF9faiA9PSBlbmQoKSB8fCBfTV9rZXlfY29tcGFyZShf
X2ssIF9TX2tleShfX2ouX01fbm9kZSkpKSA/CiAgICBlbmQoKSA6IF9fajsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAg
Y2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFs
dWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6c2l6ZV90eXBlIApfUmJfdHJlZTxfS2V5
LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+CiAgOjpjb3VudChjb25zdCBfS2V5
JiBfX2spIGNvbnN0CnsKICBwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gX19w
ID0gZXF1YWxfcmFuZ2UoX19rKTsKICBzaXplX3R5cGUgX19uID0gMDsKICBkaXN0YW5jZShfX3Au
Zmlyc3QsIF9fcC5zZWNvbmQsIF9fbik7CiAgcmV0dXJuIF9fbjsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3Mg
X0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tl
eU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6aXRlcmF0b3IgCl9SYl90cmVlPF9LZXksX1ZhbHVl
LF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6Omxvd2VyX2JvdW5kKGNvbnN0IF9LZXkm
IF9faykKewogIF9MaW5rX3R5cGUgX195ID0gX01faGVhZGVyOyAgCiAgX0xpbmtfdHlwZSBfX3gg
PSBfTV9yb290KCk7ICAKCiAgd2hpbGUgKF9feCAhPSAwKSAKICAgIGlmICghX01fa2V5X2NvbXBh
cmUoX1Nfa2V5KF9feCksIF9faykpCiAgICAgIF9feSA9IF9feCwgX194ID0gX1NfbGVmdChfX3gp
OwogICAgZWxzZQogICAgICBfX3ggPSBfU19yaWdodChfX3gpOwoKICByZXR1cm4gaXRlcmF0b3Io
X195KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9m
VmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUg
X1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6Y29uc3Rf
aXRlcmF0b3IgCl9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxv
Yz4KICA6Omxvd2VyX2JvdW5kKGNvbnN0IF9LZXkmIF9faykgY29uc3QKewogIF9MaW5rX3R5cGUg
X195ID0gX01faGVhZGVyOyAgCiAgX0xpbmtfdHlwZSBfX3ggPSBfTV9yb290KCk7ICAKCiAgd2hp
bGUgKF9feCAhPSAwKSAKICAgIGlmICghX01fa2V5X2NvbXBhcmUoX1Nfa2V5KF9feCksIF9faykp
CiAgICAgIF9feSA9IF9feCwgX194ID0gX1NfbGVmdChfX3gpOwogICAgZWxzZQogICAgICBfX3gg
PSBfU19yaWdodChfX3gpOwoKICByZXR1cm4gY29uc3RfaXRlcmF0b3IoX195KTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAg
ICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxf
VmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6aXRlcmF0b3IgCl9SYl90cmVlPF9L
ZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6OnVwcGVyX2JvdW5kKGNv
bnN0IF9LZXkmIF9faykKewogIF9MaW5rX3R5cGUgX195ID0gX01faGVhZGVyOyAgCiAgX0xpbmtf
dHlwZSBfX3ggPSBfTV9yb290KCk7ICAKCiAgIHdoaWxlIChfX3ggIT0gMCkgCiAgICAgaWYgKF9N
X2tleV9jb21wYXJlKF9faywgX1Nfa2V5KF9feCkpKQogICAgICAgX195ID0gX194LCBfX3ggPSBf
U19sZWZ0KF9feCk7CiAgICAgZWxzZQogICAgICAgX194ID0gX1NfcmlnaHQoX194KTsKCiAgIHJl
dHVybiBpdGVyYXRvcihfX3kpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVl
LCBjbGFzcyBfS2V5T2ZWYWx1ZSwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0Fs
bG9jPgp0eXBlbmFtZSBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxf
QWxsb2M+Ojpjb25zdF9pdGVyYXRvciAKX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUs
X0NvbXBhcmUsX0FsbG9jPgogIDo6dXBwZXJfYm91bmQoY29uc3QgX0tleSYgX19rKSBjb25zdAp7
CiAgX0xpbmtfdHlwZSBfX3kgPSBfTV9oZWFkZXI7ICAKICBfTGlua190eXBlIF9feCA9IF9NX3Jv
b3QoKTsgIAoKICAgd2hpbGUgKF9feCAhPSAwKSAKICAgICBpZiAoX01fa2V5X2NvbXBhcmUoX19r
LCBfU19rZXkoX194KSkpCiAgICAgICBfX3kgPSBfX3gsIF9feCA9IF9TX2xlZnQoX194KTsKICAg
ICBlbHNlCiAgICAgICBfX3ggPSBfU19yaWdodChfX3gpOwoKICAgcmV0dXJuIGNvbnN0X2l0ZXJh
dG9yKF9feSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9L
ZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGlu
ZSAKcGFpcjx0eXBlbmFtZSBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFy
ZSxfQWxsb2M+OjppdGVyYXRvciwKICAgICB0eXBlbmFtZSBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxf
S2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+OjppdGVyYXRvcj4KX1JiX3RyZWU8X0tleSxfVmFs
dWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPgogIDo6ZXF1YWxfcmFuZ2UoY29uc3QgX0tl
eSYgX19rKQp7CiAgcmV0dXJuIHBhaXI8aXRlcmF0b3IsIGl0ZXJhdG9yPihsb3dlcl9ib3VuZChf
X2spLCB1cHBlcl9ib3VuZChfX2spKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9W
YWx1ZSwgY2xhc3MgX0tvViwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KaW5saW5lIApw
YWlyPHR5cGVuYW1lIF9SYl90cmVlPF9LZXksIF9WYWx1ZSwgX0tvViwgX0NvbXBhcmUsIF9BbGxv
Yz46OmNvbnN0X2l0ZXJhdG9yLAogICAgIHR5cGVuYW1lIF9SYl90cmVlPF9LZXksIF9WYWx1ZSwg
X0tvViwgX0NvbXBhcmUsIF9BbGxvYz46OmNvbnN0X2l0ZXJhdG9yPgpfUmJfdHJlZTxfS2V5LCBf
VmFsdWUsIF9Lb1YsIF9Db21wYXJlLCBfQWxsb2M+CiAgOjplcXVhbF9yYW5nZShjb25zdCBfS2V5
JiBfX2spIGNvbnN0CnsKICByZXR1cm4gcGFpcjxjb25zdF9pdGVyYXRvcixjb25zdF9pdGVyYXRv
cj4obG93ZXJfYm91bmQoX19rKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXBwZXJfYm91bmQoX19rKSk7Cn0KCmlubGluZSBpbnQgCl9fYmxhY2tfY291bnQo
X1JiX3RyZWVfbm9kZV9iYXNlKiBfX25vZGUsIF9SYl90cmVlX25vZGVfYmFzZSogX19yb290KQp7
CiAgaWYgKF9fbm9kZSA9PSAwKQogICAgcmV0dXJuIDA7CiAgZWxzZSB7CiAgICBpbnQgX19iYyA9
IF9fbm9kZS0+X01fY29sb3IgPT0gX1NfcmJfdHJlZV9ibGFjayA/IDEgOiAwOwogICAgaWYgKF9f
bm9kZSA9PSBfX3Jvb3QpCiAgICAgIHJldHVybiBfX2JjOwogICAgZWxzZQogICAgICByZXR1cm4g
X19iYyArIF9fYmxhY2tfY291bnQoX19ub2RlLT5fTV9wYXJlbnQsIF9fcm9vdCk7CiAgfQp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5T2ZWYWx1ZSwgCiAg
ICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgpib29sIF9SYl90cmVlPF9LZXks
X1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz46Ol9fcmJfdmVyaWZ5KCkgY29uc3QK
ewogIGlmIChfTV9ub2RlX2NvdW50ID09IDAgfHwgYmVnaW4oKSA9PSBlbmQoKSkKICAgIHJldHVy
biBfTV9ub2RlX2NvdW50ID09IDAgJiYgYmVnaW4oKSA9PSBlbmQoKSAmJgogICAgICBfTV9oZWFk
ZXItPl9NX2xlZnQgPT0gX01faGVhZGVyICYmIF9NX2hlYWRlci0+X01fcmlnaHQgPT0gX01faGVh
ZGVyOwogIAogIGludCBfX2xlbiA9IF9fYmxhY2tfY291bnQoX01fbGVmdG1vc3QoKSwgX01fcm9v
dCgpKTsKICBmb3IgKGNvbnN0X2l0ZXJhdG9yIF9faXQgPSBiZWdpbigpOyBfX2l0ICE9IGVuZCgp
OyArK19faXQpIHsKICAgIF9MaW5rX3R5cGUgX194ID0gKF9MaW5rX3R5cGUpIF9faXQuX01fbm9k
ZTsKICAgIF9MaW5rX3R5cGUgX19MID0gX1NfbGVmdChfX3gpOwogICAgX0xpbmtfdHlwZSBfX1Ig
PSBfU19yaWdodChfX3gpOwoKICAgIGlmIChfX3gtPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVk
KQogICAgICBpZiAoKF9fTCAmJiBfX0wtPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVkKSB8fAog
ICAgICAgICAgKF9fUiAmJiBfX1ItPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVkKSkKICAgICAg
ICByZXR1cm4gZmFsc2U7CgogICAgaWYgKF9fTCAmJiBfTV9rZXlfY29tcGFyZShfU19rZXkoX194
KSwgX1Nfa2V5KF9fTCkpKQogICAgICByZXR1cm4gZmFsc2U7CiAgICBpZiAoX19SICYmIF9NX2tl
eV9jb21wYXJlKF9TX2tleShfX1IpLCBfU19rZXkoX194KSkpCiAgICAgIHJldHVybiBmYWxzZTsK
CiAgICBpZiAoIV9fTCAmJiAhX19SICYmIF9fYmxhY2tfY291bnQoX194LCBfTV9yb290KCkpICE9
IF9fbGVuKQogICAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBpZiAoX01fbGVmdG1vc3QoKSAhPSBf
UmJfdHJlZV9ub2RlX2Jhc2U6Ol9TX21pbmltdW0oX01fcm9vdCgpKSkKICAgIHJldHVybiBmYWxz
ZTsKICBpZiAoX01fcmlnaHRtb3N0KCkgIT0gX1JiX3RyZWVfbm9kZV9iYXNlOjpfU19tYXhpbXVt
KF9NX3Jvb3QoKSkpCiAgICByZXR1cm4gZmFsc2U7CgogIHJldHVybiB0cnVlOwp9CgogCiAKCnRl
bXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCBjbGFz
cyBfQ29tcGFyZSwKICAgICAgICAgIGNsYXNzIF9BbGxvYyA9IGFsbG9jYXRvcjwgX1ZhbHVlID4g
ID4Kc3RydWN0IHJiX3RyZWUgOiBwdWJsaWMgX1JiX3RyZWU8X0tleSwgX1ZhbHVlLCBfS2V5T2ZW
YWx1ZSwgX0NvbXBhcmUsIF9BbGxvYz4KewogIHR5cGVkZWYgX1JiX3RyZWU8X0tleSwgX1ZhbHVl
LCBfS2V5T2ZWYWx1ZSwgX0NvbXBhcmUsIF9BbGxvYz4gX0Jhc2U7CiAgdHlwZWRlZiB0eXBlbmFt
ZSBfQmFzZTo6YWxsb2NhdG9yX3R5cGUgYWxsb2NhdG9yX3R5cGU7CgogIHJiX3RyZWUoY29uc3Qg
X0NvbXBhcmUmIF9fY29tcCA9IF9Db21wYXJlKCksCiAgICAgICAgICBjb25zdCBhbGxvY2F0b3Jf
dHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgIDogX0Jhc2UoX19jb21wLCBfX2EpIHt9
CiAgCiAgfnJiX3RyZWUoKSB7fQp9OwoKCgoKCiAgCgoKCiAKIAogCiMgMzEgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc2V0IiAyIDMKCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3NldC5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKI2RlZmluZSBfX1NHSV9TVExfSU5URVJO
QUxfU0VUX0gKCiAKCgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfQ29tcGFyZSA9
IGxlc3M8X0tleT4sCiAgICAgICAgICBjbGFzcyBfQWxsb2MgPSBhbGxvY2F0b3I8IF9LZXkgPiAg
PgoKCgoKY2xhc3Mgc2V0IHsKcHVibGljOgogICAKCiAgdHlwZWRlZiBfS2V5ICAgICBrZXlfdHlw
ZTsKICB0eXBlZGVmIF9LZXkgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfQ29tcGFyZSBrZXlf
Y29tcGFyZTsKICB0eXBlZGVmIF9Db21wYXJlIHZhbHVlX2NvbXBhcmU7CnByaXZhdGU6CiAgdHlw
ZWRlZiBfUmJfdHJlZTxrZXlfdHlwZSwgdmFsdWVfdHlwZSwgCiAgICAgICAgICAgICAgICAgIF9J
ZGVudGl0eTx2YWx1ZV90eXBlPiwga2V5X2NvbXBhcmUsIF9BbGxvYz4gX1JlcF90eXBlOwogIF9S
ZXBfdHlwZSBfTV90OyAgIApwdWJsaWM6CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6OmNv
bnN0X3BvaW50ZXIgcG9pbnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6Y29uc3Rf
cG9pbnRlciBjb25zdF9wb2ludGVyOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpjb25z
dF9yZWZlcmVuY2UgcmVmZXJlbmNlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpjb25z
dF9yZWZlcmVuY2UgY29uc3RfcmVmZXJlbmNlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBl
Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6
Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5
cGU6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmV2ZXJzZV9pdGVyYXRvcjsKICB0eXBlZGVmIHR5
cGVuYW1lIF9SZXBfdHlwZTo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpzaXplX3R5cGUgc2l6ZV90eXBl
OwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5j
ZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjphbGxvY2F0b3JfdHlwZSBhbGxv
Y2F0b3JfdHlwZTsKCiAgIAoKICBzZXQoKSA6IF9NX3QoX0NvbXBhcmUoKSwgYWxsb2NhdG9yX3R5
cGUoKSkge30KICBleHBsaWNpdCBzZXQoY29uc3QgX0NvbXBhcmUmIF9fY29tcCwKICAgICAgICAg
ICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAgICA6
IF9NX3QoX19jb21wLCBfX2EpIHt9CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+
CiAgc2V0KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKICAg
IDogX01fdChfQ29tcGFyZSgpLCBhbGxvY2F0b3JfdHlwZSgpKQogICAgeyBfTV90Lmluc2VydF91
bmlxdWUoX19maXJzdCwgX19sYXN0KTsgfQoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0
b3I+CiAgc2V0KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwg
Y29uc3QgX0NvbXBhcmUmIF9fY29tcCwKICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9
IGFsbG9jYXRvcl90eXBlKCkpCiAgICA6IF9NX3QoX19jb21wLCBfX2EpIHsgX01fdC5pbnNlcnRf
dW5pcXVlKF9fZmlyc3QsIF9fbGFzdCk7IH0KIyAxMDcgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4u
Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3NldC5oIiAzCgoKICBzZXQoY29uc3Qgc2V0PF9L
ZXksX0NvbXBhcmUsX0FsbG9jPiYgX194KSA6IF9NX3QoX194Ll9NX3QpIHt9CiAgc2V0PF9LZXks
X0NvbXBhcmUsX0FsbG9jPiYgb3BlcmF0b3I9KGNvbnN0IHNldDxfS2V5LCBfQ29tcGFyZSwgX0Fs
bG9jPiYgX194KQogIHsgCiAgICBfTV90ID0gX194Ll9NX3Q7IAogICAgcmV0dXJuICp0aGlzOwog
IH0KCiAgIAoKICBrZXlfY29tcGFyZSBrZXlfY29tcCgpIGNvbnN0IHsgcmV0dXJuIF9NX3Qua2V5
X2NvbXAoKTsgfQogIHZhbHVlX2NvbXBhcmUgdmFsdWVfY29tcCgpIGNvbnN0IHsgcmV0dXJuIF9N
X3Qua2V5X2NvbXAoKTsgfQogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7
IHJldHVybiBfTV90LmdldF9hbGxvY2F0b3IoKTsgfQoKICBpdGVyYXRvciBiZWdpbigpIGNvbnN0
IHsgcmV0dXJuIF9NX3QuYmVnaW4oKTsgfQogIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IF9NX3QuZW5kKCk7IH0KICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IF9NX3QucmJlZ2luKCk7IH0gCiAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QgeyByZXR1
cm4gX01fdC5yZW5kKCk7IH0KICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gX01fdC5lbXB0
eSgpOyB9CiAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7IHJldHVybiBfTV90LnNpemUoKTsgfQog
IHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIF9NX3QubWF4X3NpemUoKTsgfQog
IHZvaWQgc3dhcChzZXQ8X0tleSxfQ29tcGFyZSxfQWxsb2M+JiBfX3gpIHsgX01fdC5zd2FwKF9f
eC5fTV90KTsgfQoKICAgCiAgcGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQoY29uc3QgdmFsdWVf
dHlwZSYgX194KSB7IAogICAgcGFpcjx0eXBlbmFtZSBfUmVwX3R5cGU6Oml0ZXJhdG9yLCBib29s
PiBfX3AgPSBfTV90Lmluc2VydF91bmlxdWUoX194KTsgCiAgICByZXR1cm4gcGFpcjxpdGVyYXRv
ciwgYm9vbD4oX19wLmZpcnN0LCBfX3Auc2Vjb25kKTsKICB9CiAgaXRlcmF0b3IgaW5zZXJ0KGl0
ZXJhdG9yIF9fcG9zaXRpb24sIGNvbnN0IHZhbHVlX3R5cGUmIF9feCkgewogICAgdHlwZWRlZiB0
eXBlbmFtZSBfUmVwX3R5cGU6Oml0ZXJhdG9yIF9SZXBfaXRlcmF0b3I7CiAgICByZXR1cm4gX01f
dC5pbnNlcnRfdW5pcXVlKChfUmVwX2l0ZXJhdG9yJilfX3Bvc2l0aW9uLCBfX3gpOwogIH0KCiAg
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogIHZvaWQgaW5zZXJ0KF9JbnB1dEl0ZXJh
dG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkgewogICAgX01fdC5pbnNlcnRfdW5p
cXVlKF9fZmlyc3QsIF9fbGFzdCk7CiAgfQoKCgoKCgoKCiAgdm9pZCBlcmFzZShpdGVyYXRvciBf
X3Bvc2l0aW9uKSB7IAogICAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6Oml0ZXJhdG9yIF9S
ZXBfaXRlcmF0b3I7CiAgICBfTV90LmVyYXNlKChfUmVwX2l0ZXJhdG9yJilfX3Bvc2l0aW9uKTsg
CiAgfQogIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYgX194KSB7IAogICAgcmV0dXJu
IF9NX3QuZXJhc2UoX194KTsgCiAgfQogIHZvaWQgZXJhc2UoaXRlcmF0b3IgX19maXJzdCwgaXRl
cmF0b3IgX19sYXN0KSB7IAogICAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6Oml0ZXJhdG9y
IF9SZXBfaXRlcmF0b3I7CiAgICBfTV90LmVyYXNlKChfUmVwX2l0ZXJhdG9yJilfX2ZpcnN0LCAo
X1JlcF9pdGVyYXRvciYpX19sYXN0KTsgCiAgfQogIHZvaWQgY2xlYXIoKSB7IF9NX3QuY2xlYXIo
KTsgfQoKICAgCgogIGl0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3QgeyBy
ZXR1cm4gX01fdC5maW5kKF9feCk7IH0KICBzaXplX3R5cGUgY291bnQoY29uc3Qga2V5X3R5cGUm
IF9feCkgY29uc3QgeyByZXR1cm4gX01fdC5jb3VudChfX3gpOyB9CiAgaXRlcmF0b3IgbG93ZXJf
Ym91bmQoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9NX3QubG93ZXJf
Ym91bmQoX194KTsKICB9CiAgaXRlcmF0b3IgdXBwZXJfYm91bmQoY29uc3Qga2V5X3R5cGUmIF9f
eCkgY29uc3QgewogICAgcmV0dXJuIF9NX3QudXBwZXJfYm91bmQoX194KTsgCiAgfQogIHBhaXI8
aXRlcmF0b3IsaXRlcmF0b3I+IGVxdWFsX3JhbmdlKGNvbnN0IGtleV90eXBlJiBfX3gpIGNvbnN0
IHsKICAgIHJldHVybiBfTV90LmVxdWFsX3JhbmdlKF9feCk7CiAgfQogIGZyaWVuZCBib29sIG9w
ZXJhdG9yPT0gPD4gIChjb25zdCBzZXQmLCBjb25zdCBzZXQmKTsKICBmcmllbmQgYm9vbCBvcGVy
YXRvcjwgPD4gIChjb25zdCBzZXQmLCBjb25zdCBzZXQmKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBf
S2V5LCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IHNldDxfS2V5LF9Db21wYXJlLF9BbGxvYz4mIF9feCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc2V0PF9LZXksX0NvbXBhcmUsX0FsbG9jPiYgX195KSB7CiAgcmV0dXJuIF9f
eC5fTV90ID09IF9feS5fTV90Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX0NvbXBh
cmUsIGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IHNldDxfS2V5LF9D
b21wYXJlLF9BbGxvYz4mIF9feCwgCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXQ8X0tl
eSxfQ29tcGFyZSxfQWxsb2M+JiBfX3kpIHsKICByZXR1cm4gX194Ll9NX3QgPCBfX3kuX01fdDsK
fQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4K
aW5saW5lIHZvaWQgc3dhcChzZXQ8X0tleSxfQ29tcGFyZSxfQWxsb2M+JiBfX3gsIAogICAgICAg
ICAgICAgICAgIHNldDxfS2V5LF9Db21wYXJlLF9BbGxvYz4mIF9feSkgewogIF9feC5zd2FwKF9f
eSk7Cn0KCgoKCgoKCgogCgoKCiAKIAogCiMgMzMgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvc2V0IiAyIDMKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfbXVsdGlzZXQuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCiNkZWZpbmUgX19TR0lfU1RMX0lOVEVSTkFMX01VTFRJU0VU
X0gKCiAKCgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfQ29tcGFyZSA9IGxlc3M8
X0tleT4sIAogICAgICAgICAgY2xhc3MgX0FsbG9jID0gYWxsb2NhdG9yPCBfS2V5ID4gID4KCgoK
CmNsYXNzIG11bHRpc2V0IHsKcHVibGljOgogICAKCiAgdHlwZWRlZiBfS2V5ICAgICBrZXlfdHlw
ZTsKICB0eXBlZGVmIF9LZXkgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfQ29tcGFyZSBrZXlf
Y29tcGFyZTsKICB0eXBlZGVmIF9Db21wYXJlIHZhbHVlX2NvbXBhcmU7CnByaXZhdGU6CiAgdHlw
ZWRlZiBfUmJfdHJlZTxrZXlfdHlwZSwgdmFsdWVfdHlwZSwgCiAgICAgICAgICAgICAgICAgIF9J
ZGVudGl0eTx2YWx1ZV90eXBlPiwga2V5X2NvbXBhcmUsIF9BbGxvYz4gX1JlcF90eXBlOwogIF9S
ZXBfdHlwZSBfTV90OyAgIApwdWJsaWM6CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6OmNv
bnN0X3BvaW50ZXIgcG9pbnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6Y29uc3Rf
cG9pbnRlciBjb25zdF9wb2ludGVyOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpjb25z
dF9yZWZlcmVuY2UgcmVmZXJlbmNlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpjb25z
dF9yZWZlcmVuY2UgY29uc3RfcmVmZXJlbmNlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBl
Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6
Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5
cGU6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmV2ZXJzZV9pdGVyYXRvcjsKICB0eXBlZGVmIHR5
cGVuYW1lIF9SZXBfdHlwZTo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpzaXplX3R5cGUgc2l6ZV90eXBl
OwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5j
ZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjphbGxvY2F0b3JfdHlwZSBhbGxv
Y2F0b3JfdHlwZTsKCiAgIAoKICBtdWx0aXNldCgpIDogX01fdChfQ29tcGFyZSgpLCBhbGxvY2F0
b3JfdHlwZSgpKSB7fQogIGV4cGxpY2l0IG11bHRpc2V0KGNvbnN0IF9Db21wYXJlJiBfX2NvbXAs
CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRv
cl90eXBlKCkpCiAgICA6IF9NX3QoX19jb21wLCBfX2EpIHt9CgoKCiAgdGVtcGxhdGUgPGNsYXNz
IF9JbnB1dEl0ZXJhdG9yPgogIG11bHRpc2V0KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1
dEl0ZXJhdG9yIF9fbGFzdCkKICAgIDogX01fdChfQ29tcGFyZSgpLCBhbGxvY2F0b3JfdHlwZSgp
KQogICAgeyBfTV90Lmluc2VydF9lcXVhbChfX2ZpcnN0LCBfX2xhc3QpOyB9CgogIHRlbXBsYXRl
IDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICBtdWx0aXNldChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0
LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgY29uc3QgX0NvbXBhcmUmIF9fY29t
cCwKICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUo
KSkKICAgIDogX01fdChfX2NvbXAsIF9fYSkgeyBfTV90Lmluc2VydF9lcXVhbChfX2ZpcnN0LCBf
X2xhc3QpOyB9CgojIDExMyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUu
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdGxfbXVsdGlzZXQuaCIgMwoKCiAgbXVsdGlzZXQoY29uc3QgbXVsdGlzZXQ8X0tl
eSxfQ29tcGFyZSxfQWxsb2M+JiBfX3gpIDogX01fdChfX3guX01fdCkge30KICBtdWx0aXNldDxf
S2V5LF9Db21wYXJlLF9BbGxvYz4mCiAgb3BlcmF0b3I9KGNvbnN0IG11bHRpc2V0PF9LZXksX0Nv
bXBhcmUsX0FsbG9jPiYgX194KSB7CiAgICBfTV90ID0gX194Ll9NX3Q7IAogICAgcmV0dXJuICp0
aGlzOwogIH0KCiAgIAoKICBrZXlfY29tcGFyZSBrZXlfY29tcCgpIGNvbnN0IHsgcmV0dXJuIF9N
X3Qua2V5X2NvbXAoKTsgfQogIHZhbHVlX2NvbXBhcmUgdmFsdWVfY29tcCgpIGNvbnN0IHsgcmV0
dXJuIF9NX3Qua2V5X2NvbXAoKTsgfQogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBj
b25zdCB7IHJldHVybiBfTV90LmdldF9hbGxvY2F0b3IoKTsgfQoKICBpdGVyYXRvciBiZWdpbigp
IGNvbnN0IHsgcmV0dXJuIF9NX3QuYmVnaW4oKTsgfQogIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIF9NX3QuZW5kKCk7IH0KICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsg
cmV0dXJuIF9NX3QucmJlZ2luKCk7IH0gCiAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3Qg
eyByZXR1cm4gX01fdC5yZW5kKCk7IH0KICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gX01f
dC5lbXB0eSgpOyB9CiAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7IHJldHVybiBfTV90LnNpemUo
KTsgfQogIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIF9NX3QubWF4X3NpemUo
KTsgfQogIHZvaWQgc3dhcChtdWx0aXNldDxfS2V5LF9Db21wYXJlLF9BbGxvYz4mIF9feCkgeyBf
TV90LnN3YXAoX194Ll9NX3QpOyB9CgogICAKICBpdGVyYXRvciBpbnNlcnQoY29uc3QgdmFsdWVf
dHlwZSYgX194KSB7IAogICAgcmV0dXJuIF9NX3QuaW5zZXJ0X2VxdWFsKF9feCk7CiAgfQogIGl0
ZXJhdG9yIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gp
IHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjppdGVyYXRvciBfUmVwX2l0ZXJhdG9y
OwogICAgcmV0dXJuIF9NX3QuaW5zZXJ0X2VxdWFsKChfUmVwX2l0ZXJhdG9yJilfX3Bvc2l0aW9u
LCBfX3gpOwogIH0KCgogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIGlu
c2VydChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICAg
IF9NX3QuaW5zZXJ0X2VxdWFsKF9fZmlyc3QsIF9fbGFzdCk7CiAgfQoKCgoKCgoKCiAgdm9pZCBl
cmFzZShpdGVyYXRvciBfX3Bvc2l0aW9uKSB7IAogICAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5
cGU6Oml0ZXJhdG9yIF9SZXBfaXRlcmF0b3I7CiAgICBfTV90LmVyYXNlKChfUmVwX2l0ZXJhdG9y
JilfX3Bvc2l0aW9uKTsgCiAgfQogIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYgX194
KSB7IAogICAgcmV0dXJuIF9NX3QuZXJhc2UoX194KTsgCiAgfQogIHZvaWQgZXJhc2UoaXRlcmF0
b3IgX19maXJzdCwgaXRlcmF0b3IgX19sYXN0KSB7IAogICAgdHlwZWRlZiB0eXBlbmFtZSBfUmVw
X3R5cGU6Oml0ZXJhdG9yIF9SZXBfaXRlcmF0b3I7CiAgICBfTV90LmVyYXNlKChfUmVwX2l0ZXJh
dG9yJilfX2ZpcnN0LCAoX1JlcF9pdGVyYXRvciYpX19sYXN0KTsgCiAgfQogIHZvaWQgY2xlYXIo
KSB7IF9NX3QuY2xlYXIoKTsgfQoKICAgCgogIGl0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X3R5cGUm
IF9feCkgY29uc3QgeyByZXR1cm4gX01fdC5maW5kKF9feCk7IH0KICBzaXplX3R5cGUgY291bnQo
Y29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3QgeyByZXR1cm4gX01fdC5jb3VudChfX3gpOyB9CiAg
aXRlcmF0b3IgbG93ZXJfYm91bmQoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0
dXJuIF9NX3QubG93ZXJfYm91bmQoX194KTsKICB9CiAgaXRlcmF0b3IgdXBwZXJfYm91bmQoY29u
c3Qga2V5X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9NX3QudXBwZXJfYm91bmQoX194
KTsgCiAgfQogIHBhaXI8aXRlcmF0b3IsaXRlcmF0b3I+IGVxdWFsX3JhbmdlKGNvbnN0IGtleV90
eXBlJiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiBfTV90LmVxdWFsX3JhbmdlKF9feCk7CiAgfQog
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0gPD4gIChjb25zdCBtdWx0aXNldCYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXVsdGlzZXQmKTsKICBm
cmllbmQgYm9vbCBvcGVyYXRvcjwgPD4gIChjb25zdCBtdWx0aXNldCYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXNldCYpOwp9OwoKdGVt
cGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgbXVsdGlzZXQ8X0tleSxfQ29tcGFyZSxfQWxsb2M+JiBfX3gs
IAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpc2V0PF9LZXksX0NvbXBhcmUsX0Fs
bG9jPiYgX195KSB7CiAgcmV0dXJuIF9feC5fTV90ID09IF9feS5fTV90Owp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0tleSwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3Bl
cmF0b3I8KGNvbnN0IG11bHRpc2V0PF9LZXksX0NvbXBhcmUsX0FsbG9jPiYgX194LCAKICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpc2V0PF9LZXksX0NvbXBhcmUsX0FsbG9jPiYgX195
KSB7CiAgcmV0dXJuIF9feC5fTV90IDwgX195Ll9NX3Q7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9L
ZXksIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGluZSB2b2lkIHN3YXAobXVsdGlz
ZXQ8X0tleSxfQ29tcGFyZSxfQWxsb2M+JiBfX3gsIAogICAgICAgICAgICAgICAgIG11bHRpc2V0
PF9LZXksX0NvbXBhcmUsX0FsbG9jPiYgX195KSB7CiAgX194LnN3YXAoX195KTsKfQoKCgoKCgoK
CiAKCgoKIAogCiAKIyAzNCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUu
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zZXQiIDIgMwoKCgoKIAogCiAKIyA1MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L3RyYXZlcnNhbC5oIiAyCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRl
bXBsYXRlPGludCBOX2RpbWVuc2lvbnM+CmNsYXNzIFRyYXZlcnNhbE9yZGVyIHsKCnB1YmxpYzoK
ICAgIHR5cGVkZWYgVGlueVZlY3RvcjxpbnQsIE5fZGltZW5zaW9ucz4gVF9jb29yZDsKICAgIHR5
cGVkZWYgVmVjdG9yPFRfY29vcmQ+ICAgICAgICAgICAgICAgVF90cmF2ZXJzYWw7CgogICAgVHJh
dmVyc2FsT3JkZXIoKQogICAgewogICAgICAgIHNpemVfID0gMDsKICAgIH0KCiAgICBUcmF2ZXJz
YWxPcmRlcihjb25zdCBUX2Nvb3JkJiBzaXplLCBUX3RyYXZlcnNhbCYgb3JkZXIpCiAgICAgICAg
OiBzaXplXyhzaXplKSwgb3JkZXJfKG9yZGVyKQogICAgeyB9CgogICAgVHJhdmVyc2FsT3JkZXIo
Y29uc3QgVF9jb29yZCYgc2l6ZSkKICAgICAgICA6IHNpemVfKHNpemUpCiAgICB7IH0KCiAgICBU
X2Nvb3JkIG9wZXJhdG9yW10oaW50IGkpIGNvbnN0CiAgICB7IHJldHVybiBvcmRlcl9baV07IH0K
CiAgICBUX2Nvb3JkJiBvcGVyYXRvcltdKGludCBpKQogICAgeyByZXR1cm4gb3JkZXJfW2ldOyB9
CgogICAgaW50IGxlbmd0aCgpIGNvbnN0CiAgICB7IHJldHVybiBvcmRlcl8ubGVuZ3RoKCk7IH0K
CiAgICBib29sIG9wZXJhdG9yPChjb25zdCBUcmF2ZXJzYWxPcmRlcjxOX2RpbWVuc2lvbnM+JiB4
KSBjb25zdAogICAgewogICAgICAgIGZvciAoaW50IGk9MDsgaSA8IE5fZGltZW5zaW9uczsgKytp
KQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHNpemVfW2ldIDwgeC5zaXplX1tpXSkKICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICBlbHNlIGlmIChzaXplX1tpXSA+IHgu
c2l6ZV9baV0pCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAg
IHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhdmVyc2Fs
T3JkZXI8Tl9kaW1lbnNpb25zPiYgeCkgY29uc3QKICAgIHsKICAgICAgICBmb3IgKGludCBpPTA7
IGkgPCBOX2RpbWVuc2lvbnM7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChzaXplX1tp
XSAhPSB4LnNpemVfW2ldKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0K
CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cgpwcm90ZWN0ZWQ6CiAgICBUX3RyYXZlcnNhbCBv
cmRlcl87CiAgICBUX2Nvb3JkICAgICBzaXplXzsKfTsKCiAKCgoKdGVtcGxhdGU8PgpjbGFzcyBU
cmF2ZXJzYWxPcmRlcjwwPiB7CnB1YmxpYzoKICAgICBUcmF2ZXJzYWxPcmRlciAoKSB7fSAgCn07
Cgp0ZW1wbGF0ZTxpbnQgTl9kaW1lbnNpb25zPgpjbGFzcyBUcmF2ZXJzYWxPcmRlckNvbGxlY3Rp
b24gewpwdWJsaWM6CiAgICB0eXBlZGVmIFRyYXZlcnNhbE9yZGVyPE5fZGltZW5zaW9ucz4gICAg
ICAgIFRfdHJhdmVyc2FsOwogICAgdHlwZWRlZiB0eXBlbmFtZSAgVF90cmF2ZXJzYWw6OlRfY29v
cmQgICBUX2Nvb3JkOwogICAgdHlwZWRlZiBzZXQ8VF90cmF2ZXJzYWw+ICAgICAgICAgICAgICAg
ICAgICBUX3NldDsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIHNldDxUX3RyYXZlcnNhbD46OmNvbnN0
X2l0ZXJhdG9yIFRfaXRlcmF0b3I7CgogICAgY29uc3QgVF90cmF2ZXJzYWwqIGZpbmQoY29uc3Qg
VF9jb29yZCYgc2l6ZSkKICAgIHsKICAgICAgICBUX2l0ZXJhdG9yIGl0ZXIgPSB0cmF2ZXJzYWxz
Xy5maW5kKFRfdHJhdmVyc2FsKHNpemUpKTsKICAgICAgICBpZiAoaXRlciAhPSB0cmF2ZXJzYWxz
Xy5lbmQoKSkKICAgICAgICAgICAgcmV0dXJuICYoKml0ZXIpOwogICAgICAgIHJldHVybiAwOwog
ICAgfQoKICAgIHZvaWQgaW5zZXJ0KFRfdHJhdmVyc2FsIHgpCiAgICB7CiAgICAgICAgdHJhdmVy
c2Fsc18uaW5zZXJ0KHgpOwogICAgfQoKcHJvdGVjdGVkOgogICAgc3RhdGljIFRfc2V0IHRyYXZl
cnNhbHNfOwp9OwoKIAoKCgoKdGVtcGxhdGU8PgpjbGFzcyBUcmF2ZXJzYWxPcmRlckNvbGxlY3Rp
b248MD4gewpwdWJsaWM6CiAgICB0eXBlZGVmIGludCBUX3RyYXZlcnNhbDsKICAgIHR5cGVkZWYg
aW50IFRfY29vcmQ7CiAgICB0eXBlZGVmIGludCBUX3NldDsKICAgIHR5cGVkZWYgaW50IFRfaXRl
cmF0b3I7CgogICAgY29uc3QgVF90cmF2ZXJzYWwqIGZpbmQoY29uc3QgVF9jb29yZCYgc2l6ZSkK
ICAgIHsgcmV0dXJuIDA7IH0KfTsKCn0gCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei90cmF2ZXJzYWwuY2MiIDEKCiNkZWZpbmUgQlpfVFJBVkVSU0FMX0NDCgoK
CgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCiAKIAoKCgoKCnRlbXBsYXRlPGludCBOX2RpbWVuc2lv
bnM+CnR5cGVuYW1lICBUcmF2ZXJzYWxPcmRlckNvbGxlY3Rpb248Tl9kaW1lbnNpb25zPjo6VF9z
ZXQKICAgIFRyYXZlcnNhbE9yZGVyQ29sbGVjdGlvbjxOX2RpbWVuc2lvbnM+Ojp0cmF2ZXJzYWxz
XzsKCnRlbXBsYXRlPGludCBOPgp2b2lkIG1ha2VIaWxiZXJ0KFZlY3RvcjxUaW55VmVjdG9yPGlu
dCxOPiA+JiBjb29yZCwgCiAgICBpbnQgeDAsIGludCB5MCwgaW50IHhpcywgaW50IHhqcywKICAg
IGludCB5aXMsIGludCB5anMsIGludCBuLCBpbnQmIGkpCnsKICAgICAKICAgICA7CgogICAgaWYg
KCFuKQogICAgewogICAgICAgIGlmIChpID4gY29vcmQubGVuZ3RoKCkpCiAgICAgICAgewogICAg
ICAgICAgICBjZXJyIDw8ICJtYWtlSGlsYmVydDogdmVjdG9yIG5vdCBsb25nIGVub3VnaCIgPDwg
ZW5kbDsKICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICB9CiAgICAgICAgY29vcmRbaV1bMF0g
PSB4MCArICh4aXMreWlzKS8yOwogICAgICAgIGNvb3JkW2ldWzFdID0geTAgKyAoeGpzK3lqcykv
MjsKICAgICAgICArK2k7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBtYWtlSGlsYmVydChjb29y
ZCx4MCx5MCx5aXMvMiwgeWpzLzIsIHhpcy8yLCB4anMvMiwgbi0xLCBpKTsKICAgICAgICBtYWtl
SGlsYmVydChjb29yZCx4MCt4aXMvMix5MCt4anMvMix4aXMvMix4anMvMix5aXMvMix5anMvMixu
LTEsaSk7CiAgICAgICAgbWFrZUhpbGJlcnQoY29vcmQseDAreGlzLzIreWlzLzIseTAreGpzLzIr
eWpzLzIseGlzLzIseGpzLzIseWlzLzIsCiAgICAgICAgICAgIHlqcy8yLG4tMSxpKTsKICAgICAg
ICBtYWtlSGlsYmVydChjb29yZCx4MCt4aXMvMit5aXMsIHkwK3hqcy8yK3lqcywgLXlpcy8yLC15
anMvMiwteGlzLzIsCiAgICAgICAgICAgIC14anMvMixuLTEsaSk7CiAgICB9Cn0KCnRlbXBsYXRl
PGludCBOX2RpbWVuc2lvbnM+CnZvaWQgTWFrZUhpbGJlcnRUcmF2ZXJzYWwoVmVjdG9yPFRpbnlW
ZWN0b3I8aW50LE5fZGltZW5zaW9ucz4gPiYgY29vcmQsIAogICAgaW50IGxlbmd0aCkKewogICAg
IAogICAgIDsKCiAgICAgCiAgICBpbnQgZCA9IChpbnQpKDo6Y2VpbCg6OmxvZygoZG91YmxlKWxl
bmd0aCkgLyAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNykpOyAgCgogICAgaW50IE4gPSAxIDw8IGQ7
CiAgICBjb25zdCBpbnQgTnBvaW50cyA9IE4qTjsKICAgIFZlY3RvcjxUaW55VmVjdG9yPGludCwy
PiA+IGNvb3JkMihOcG9pbnRzKTsKCiAgICBpbnQgaT0wOwogICAgbWFrZUhpbGJlcnQoY29vcmQy
LDAsMCwzMjc2OCwwLDAsMzI3NjgsZCxpKTsKCiAgICBpbnQgeHAwID0gY29vcmQyWzBdWzBdOwog
ICAgaW50IHlwMCA9IGNvb3JkMlswXVsxXTsKCiAgICBpbnQgaj0wOwoKICAgIGNvb3JkLnJlc2l6
ZShsZW5ndGggKiBsZW5ndGgpOwoKICAgIGZvciAoaW50IGk9MDsgaSA8IE5wb2ludHM7ICsraSkK
ICAgIHsKICAgICAgICBjb29yZDJbaV1bMF0gPSAoY29vcmQyW2ldWzBdLXhwMCkvKDIqeHAwKTsK
ICAgICAgICBjb29yZDJbaV1bMV0gPSAoY29vcmQyW2ldWzFdLXlwMCkvKDIqeXAwKTsKCiAgICAg
ICAgaWYgKChjb29yZDJbaV1bMF0gPCBsZW5ndGgpICYmIChjb29yZDJbaV1bMV0gPCBsZW5ndGgp
IAogICAgICAgICAgICAmJiAoY29vcmQyW2ldWzBdID49IDApICYmIChjb29yZDJbaV1bMV0gPj0g
MCkpCiAgICAgICAgewogICAgICAgICAgICBjb29yZFtqXVswXSA9IGNvb3JkMltpXVswXTsKICAg
ICAgICAgICAgY29vcmRbal1bMV0gPSBjb29yZDJbaV1bMV07CiAgICAgICAgICAgICsrajsKICAg
ICAgICB9CiAgICB9Cn0KCnRlbXBsYXRlPGludCBOX2RpbWVuc2lvbnM+CnZvaWQgZ2VuZXJhdGVG
YXN0VHJhdmVyc2FsT3JkZXIoY29uc3QgVGlueVZlY3RvcjxpbnQsTl9kaW1lbnNpb25zPiYgc2l6
ZSkKewogICAgIDsKICAgICA7CgogICAgVHJhdmVyc2FsT3JkZXJDb2xsZWN0aW9uPDI+IHRyYXZD
b2w7CiAgICBpZiAodHJhdkNvbC5maW5kKHNpemUpKQogICAgICAgIHJldHVybjsKCiAgICBWZWN0
b3I8VGlueVZlY3RvcjxpbnQsMj4gPiBvcmRlcmluZyhzaXplWzBdKTsKCiAgICBNYWtlSGlsYmVy
dFRyYXZlcnNhbChvcmRlcmluZywgc2l6ZVswXSk7CiAgICB0cmF2Q29sLmluc2VydChUcmF2ZXJz
YWxPcmRlcjwyPihzaXplLCBvcmRlcmluZykpOwp9Cgp9IAoKCiMgMTY3ICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdHJhdmVyc2FsLmgiIDIKCgoKCgoKIyA2OCAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5LmgiIDIKCgoKCiAKIyAx
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovaW5kZXhleHByLmgiIDEK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX0lOREVYRVhQ
Ul9ICgoKCgoKCgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2Js
aXR6L2V0YmFzZS5oIiAxCgojZGVmaW5lIEJaX0VUQkFTRV9ICgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgRVRCYXNlIHsgCnB1YmxpYzoKICAgIEVUQmFzZSgp
IAogICAgeyB9CgogICAgRVRCYXNlKGNvbnN0IEVUQmFzZTxUPiYpCiAgICB7IH0KfTsKCn0gCgoK
CiMgNDkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9pbmRleGV4cHIu
aCIgMgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8aW50IE4+CmNsYXNzIEluZGV4
UGxhY2Vob2xkZXIgCgogIDogcHVibGljIEVUQmFzZTxJbmRleFBsYWNlaG9sZGVyPE4+ID4gCgp7
CnB1YmxpYzoKICAgIEluZGV4UGxhY2Vob2xkZXIoKQogICAgeyB9CgogICAgSW5kZXhQbGFjZWhv
bGRlcihjb25zdCBJbmRleFBsYWNlaG9sZGVyPE4+JikKICAgIHsgfQoKICAgIH5JbmRleFBsYWNl
aG9sZGVyKCkKICAgIHsgfQoKICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEluZGV4UGxhY2Vob2xk
ZXI8Tj4mKQogICAgeyB9CgogICAgdHlwZWRlZiBpbnQgVF9udW10eXBlOwogICAgdHlwZWRlZiBp
bnQgVF9jdG9yQXJnMTsgICAgICAKICAgIHR5cGVkZWYgaW50IFRfY3RvckFyZzI7ICAgICAgCgog
ICAgZW51bSB7IG51bUFycmF5T3BlcmFuZHMgPSAwLCBudW1JbmRleFBsYWNlaG9sZGVycyA9IDEs
CiAgICAgICAgcmFuayA9IE4rMSB9OwoKICAgICAKICAgICAKICAgICAKICAgICAKICAgIGludCBv
cGVyYXRvciooKQogICAgeyAKICAgICAgICAgOyAKICAgICAgICByZXR1cm4gMDsKICAgIH0KCgoK
CgoKICAgIHRlbXBsYXRlPGludCBOX3Jhbms+CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShjb25z
dCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgaSkKICAgIHsgcmV0dXJuIGlbTl07IH0KCgogICAg
aW50IGFzY2VuZGluZyhpbnQpIGNvbnN0CiAgICB7IHJldHVybiAoLSAyMTQ3NDgzNjQ3ICAtMSkg
OyB9CgogICAgaW50IG9yZGVyaW5nKGludCkgY29uc3QKICAgIHsgcmV0dXJuICgtIDIxNDc0ODM2
NDcgIC0xKSA7IH0KCiAgICBpbnQgbGJvdW5kKGludCkgY29uc3QKICAgIHsgcmV0dXJuICgtIDIx
NDc0ODM2NDcgIC0xKSA7IH0gICAgCgogICAgaW50IHVib3VuZChpbnQpIGNvbnN0CiAgICB7IHJl
dHVybiAyMTQ3NDgzNjQ3ICA7IH0gICAKCiAgICAgCiAgICB2b2lkIHB1c2goaW50KQogICAgeyAK
ICAgICAgICAgOyAKICAgIH0KCiAgICAgCiAgICB2b2lkIHBvcChpbnQpCiAgICB7IAogICAgICAg
ICA7IAogICAgfQoKICAgICAKICAgIHZvaWQgYWR2YW5jZSgpCiAgICB7IAogICAgICAgICA7IAog
ICAgfQoKICAgICAKICAgIHZvaWQgYWR2YW5jZShpbnQpCiAgICB7IAogICAgICAgICA7IAogICAg
fQoKICAgICAKICAgIHZvaWQgbG9hZFN0cmlkZShpbnQpCiAgICB7IAogICAgICAgICA7IAogICAg
fQoKICAgIGJvb2wgIGlzVW5pdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsgCiAgICAgICAg
IDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgdm9pZCBhZHZhbmNlVW5pdFN0cmlk
ZSgpCiAgICB7IAogICAgICAgICA7CiAgICB9CgogICAgYm9vbCAgY2FuQ29sbGFwc2UoaW50LGlu
dCkgY29uc3QKICAgIHsgICAKICAgICAgICAgOyAKICAgICAgICByZXR1cm4gZmFsc2UgOyAKICAg
IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3JbXShpbnQpCiAgICB7CiAgICAgICAgIDsKICAgICAg
ICByZXR1cm4gVF9udW10eXBlKCk7CiAgICB9CgogICAgVF9udW10eXBlIGZhc3RSZWFkKGludCkK
ICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBUX251bXR5cGUoKTsKICAgIH0KCiAgICBp
bnQgc3VnZ2VzdFN0cmlkZShpbnQpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1
cm4gMDsKICAgIH0KCiAgICBib29sICBpc1N0cmlkZShpbnQsaW50KSBjb25zdAogICAgewogICAg
ICAgICA7CiAgICAgICAgcmV0dXJuIHRydWUgOwogICAgfQoKICAgIHZvaWQgcHJldHR5UHJpbnQo
c3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQpIGNvbnN0CiAgICB7CiAgICAg
ICAgIAogICAgICAgIHN0ciArPSAiaW5kZXgtZXhwcltORUVEU19XT1JLXSI7CiAgICB9CgogICAg
dGVtcGxhdGU8Y2xhc3MgVF9zaGFwZT4KICAgIGJvb2wgIHNoYXBlQ2hlY2soY29uc3QgVF9zaGFw
ZSYgc2hhcGUpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHRydWUgOwogICAgfQp9OwoKdHlw
ZWRlZiBJbmRleFBsYWNlaG9sZGVyPDA+IGZpcnN0SW5kZXg7CnR5cGVkZWYgSW5kZXhQbGFjZWhv
bGRlcjwxPiBzZWNvbmRJbmRleDsKdHlwZWRlZiBJbmRleFBsYWNlaG9sZGVyPDI+IHRoaXJkSW5k
ZXg7CnR5cGVkZWYgSW5kZXhQbGFjZWhvbGRlcjwzPiBmb3VydGhJbmRleDsKdHlwZWRlZiBJbmRl
eFBsYWNlaG9sZGVyPDQ+IGZpZnRoSW5kZXg7CnR5cGVkZWYgSW5kZXhQbGFjZWhvbGRlcjw1PiBz
aXh0aEluZGV4Owp0eXBlZGVmIEluZGV4UGxhY2Vob2xkZXI8Nj4gc2V2ZW50aEluZGV4Owp0eXBl
ZGVmIEluZGV4UGxhY2Vob2xkZXI8Nz4gZWlnaHRoSW5kZXg7CnR5cGVkZWYgSW5kZXhQbGFjZWhv
bGRlcjw4PiBuaW50aEluZGV4Owp0eXBlZGVmIEluZGV4UGxhY2Vob2xkZXI8OT4gdGVudGhJbmRl
eDsKdHlwZWRlZiBJbmRleFBsYWNlaG9sZGVyPDEwPiBlbGV2ZW50aEluZGV4OwoKCgpuYW1lc3Bh
Y2UgIHRlbnNvciAgeyAKICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8MD4gaTsK
ICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8MT4gajsKICAgIGV4dGVybiAgYmxp
dHo6OkluZGV4UGxhY2Vob2xkZXI8Mj4gazsKICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vo
b2xkZXI8Mz4gbDsKICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8ND4gbTsKICAg
IGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8NT4gbjsKICAgIGV4dGVybiAgYmxpdHo6
OkluZGV4UGxhY2Vob2xkZXI8Nj4gbzsKICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xk
ZXI8Nz4gcDsKICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8OD4gcTsKICAgIGV4
dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8OT4gcjsKICAgIGV4dGVybiAgYmxpdHo6Oklu
ZGV4UGxhY2Vob2xkZXI8MTA+IHM7CiAgICBleHRlcm4gIGJsaXR6OjpJbmRleFBsYWNlaG9sZGVy
PDExPiB0Owp9ICAgCgoKCn0gCgoKCiMgNzIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9hcnJheS5oIiAyCgoKCgoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svaW5jbHVkZS9ibGl0ei9hcnJheS9zbGljZS5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9BUlJBWVNMSUNFX0gKCgoKCgpuYW1lc3BhY2UgIGJs
aXR6ICB7IAoKIAp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4KY2xhc3MgQXJyYXk7CgoKCmNsYXNz
IG5pbEFycmF5U2VjdGlvbiB7IH07Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBBcnJheVNlY3Rp
b25JbmZvIHsKcHVibGljOgogICAgZW51bSB7IGlzVmFsaWRUeXBlID0gMCwgcmFuayA9IDAsIGlz
UGljayA9IDAgfTsKfTsKCnRlbXBsYXRlPD4KY2xhc3MgQXJyYXlTZWN0aW9uSW5mbzxSYW5nZT4g
ewpwdWJsaWM6CiAgICBlbnVtIHsgaXNWYWxpZFR5cGUgPSAxLCByYW5rID0gMSwgaXNQaWNrID0g
MCB9Owp9OwoKdGVtcGxhdGU8PgpjbGFzcyBBcnJheVNlY3Rpb25JbmZvPGludD4gewpwdWJsaWM6
CiAgICBlbnVtIHsgaXNWYWxpZFR5cGUgPSAxLCByYW5rID0gMCwgaXNQaWNrID0gMCB9Owp9OwoK
dGVtcGxhdGU8PgpjbGFzcyBBcnJheVNlY3Rpb25JbmZvPG5pbEFycmF5U2VjdGlvbj4gewpwdWJs
aWM6CiAgICBlbnVtIHsgaXNWYWxpZFR5cGUgPSAxLCByYW5rID0gMCwgaXNQaWNrID0gMCB9Owp9
OwoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBjbGFzcyBUMSwgY2xhc3MgVDIgPSBuaWxBcnJh
eVNlY3Rpb24sIAogICAgY2xhc3MgVDMgPSBuaWxBcnJheVNlY3Rpb24sIGNsYXNzIFQ0ID0gbmls
QXJyYXlTZWN0aW9uLCAKICAgIGNsYXNzIFQ1ID0gbmlsQXJyYXlTZWN0aW9uLCBjbGFzcyBUNiA9
IG5pbEFycmF5U2VjdGlvbiwgCiAgICBjbGFzcyBUNyA9IG5pbEFycmF5U2VjdGlvbiwgY2xhc3Mg
VDggPSBuaWxBcnJheVNlY3Rpb24sIAogICAgY2xhc3MgVDkgPSBuaWxBcnJheVNlY3Rpb24sIGNs
YXNzIFQxMCA9IG5pbEFycmF5U2VjdGlvbiwgCiAgICBjbGFzcyBUMTEgPSBuaWxBcnJheVNlY3Rp
b24+CmNsYXNzIFNsaWNlSW5mbyB7CnB1YmxpYzoKICAgIGVudW0geyAKICAgICAgICBudW1WYWxp
ZFR5cGVzID0gQXJyYXlTZWN0aW9uSW5mbzxUMT46OmlzVmFsaWRUeXBlCiAgICAgICAgICAgICAg
ICAgICAgICArIEFycmF5U2VjdGlvbkluZm88VDI+Ojppc1ZhbGlkVHlwZQogICAgICAgICAgICAg
ICAgICAgICAgKyBBcnJheVNlY3Rpb25JbmZvPFQzPjo6aXNWYWxpZFR5cGUKICAgICAgICAgICAg
ICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUND46OmlzVmFsaWRUeXBlCiAgICAgICAgICAg
ICAgICAgICAgICArIEFycmF5U2VjdGlvbkluZm88VDU+Ojppc1ZhbGlkVHlwZQogICAgICAgICAg
ICAgICAgICAgICAgKyBBcnJheVNlY3Rpb25JbmZvPFQ2Pjo6aXNWYWxpZFR5cGUKICAgICAgICAg
ICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUNz46OmlzVmFsaWRUeXBlCiAgICAgICAg
ICAgICAgICAgICAgICArIEFycmF5U2VjdGlvbkluZm88VDg+Ojppc1ZhbGlkVHlwZQogICAgICAg
ICAgICAgICAgICAgICAgKyBBcnJheVNlY3Rpb25JbmZvPFQ5Pjo6aXNWYWxpZFR5cGUKICAgICAg
ICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUMTA+Ojppc1ZhbGlkVHlwZQogICAg
ICAgICAgICAgICAgICAgICAgKyBBcnJheVNlY3Rpb25JbmZvPFQxMT46OmlzVmFsaWRUeXBlLAoK
ICAgICAgICByYW5rICAgICAgICAgID0gQXJyYXlTZWN0aW9uSW5mbzxUMT46OnJhbmsKICAgICAg
ICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUMj46OnJhbmsKICAgICAgICAgICAg
ICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUMz46OnJhbmsKICAgICAgICAgICAgICAgICAg
ICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUND46OnJhbmsKICAgICAgICAgICAgICAgICAgICAgICsg
QXJyYXlTZWN0aW9uSW5mbzxUNT46OnJhbmsKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlT
ZWN0aW9uSW5mbzxUNj46OnJhbmsKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9u
SW5mbzxUNz46OnJhbmsKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxU
OD46OnJhbmsKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUOT46OnJh
bmsKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUMTA+OjpyYW5rCiAg
ICAgICAgICAgICAgICAgICAgICArIEFycmF5U2VjdGlvbkluZm88VDExPjo6cmFuaywKCiAgICAg
ICAgaXNQaWNrICAgICAgICA9IEFycmF5U2VjdGlvbkluZm88VDE+Ojppc1BpY2sKICAgICAgICAg
ICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUMj46OmlzUGljawogICAgICAgICAgICAg
ICAgICAgICAgKyBBcnJheVNlY3Rpb25JbmZvPFQzPjo6aXNQaWNrCiAgICAgICAgICAgICAgICAg
ICAgICArIEFycmF5U2VjdGlvbkluZm88VDQ+Ojppc1BpY2sKICAgICAgICAgICAgICAgICAgICAg
ICsgQXJyYXlTZWN0aW9uSW5mbzxUNT46OmlzUGljawogICAgICAgICAgICAgICAgICAgICAgKyBB
cnJheVNlY3Rpb25JbmZvPFQ2Pjo6aXNQaWNrCiAgICAgICAgICAgICAgICAgICAgICArIEFycmF5
U2VjdGlvbkluZm88VDc+Ojppc1BpY2sKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0
aW9uSW5mbzxUOD46OmlzUGljawogICAgICAgICAgICAgICAgICAgICAgKyBBcnJheVNlY3Rpb25J
bmZvPFQ5Pjo6aXNQaWNrCiAgICAgICAgICAgICAgICAgICAgICArIEFycmF5U2VjdGlvbkluZm88
VDEwPjo6aXNQaWNrCiAgICAgICAgICAgICAgICAgICAgICArIEFycmF5U2VjdGlvbkluZm88VDEx
Pjo6aXNQaWNrCiAgICAgICAgfTsKCiAgICB0eXBlZGVmIEFycmF5PFRfbnVtdHlwZSxudW1WYWxp
ZFR5cGVzPiBUX2FycmF5OwogICAgdHlwZWRlZiBBcnJheTxUX251bXR5cGUscmFuaz4gVF9zbGlj
ZTsKfTsKCn0gCgoKIyA3OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L2FycmF5LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L2FycmF5L21hcC5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfQVJSQVlNQVBfSAoKCgoKCm5hbWVzcGFjZSAgYmxpdHog
IHsgCgogCgoKCgp0ZW1wbGF0ZTxpbnQgTl9yYW5rPgpzdHJ1Y3QgX2J6X2RvQXJyYXlJbmRleE1h
cHBpbmcgewogICAgdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9kZXN0UmFuaz4KICAg
IHN0YXRpYyBUX251bXR5cGUgbWFwKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYsIAog
ICAgICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fZGVzdFJhbms+JiwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwKICAgICAgICBpbnQsIGludCwgaW50LCBpbnQsIGludCkKICAgIHsKICAg
ICAgICAgCiAgICAgICAgIAogICAgICAgICAKICAgICAgICAgOwogICAgfQp9OwoKdGVtcGxhdGU8
PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJbmRleE1hcHBpbmc8MT4gewogICAgdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlLCBpbnQgTl9kZXN0UmFuaz4KICAgIHN0YXRpYyBUX251bXR5cGUgbWFwKGNvbnN0
IEFycmF5PFRfbnVtdHlwZSwgMT4mIGFycmF5LAogICAgICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50
LE5fZGVzdFJhbms+JiBpbmRleCwgaW50IGkwLCBpbnQsIGludCwgaW50LCBpbnQsIAogICAgICAg
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5
KGluZGV4W2kwXSk7CiAgICB9Cn07CgoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJbmRl
eE1hcHBpbmc8Mj4gewogICAgdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9kZXN0UmFu
az4KICAgIHN0YXRpYyBUX251bXR5cGUgbWFwKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgMj4mIGFy
cmF5LAogICAgICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fZGVzdFJhbms+JiBpbmRleCwgaW50
IGkwLCBpbnQgaTEsIGludCwgCiAgICAgICAgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KGluZGV4W2kwXSwgaW5kZXhbaTFd
KTsKICAgIH0KfTsKCnRlbXBsYXRlPD4Kc3RydWN0IF9iel9kb0FycmF5SW5kZXhNYXBwaW5nPDM+
IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fZGVzdFJhbms+CiAgICBzdGF0
aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUsIDM+JiBhcnJheSwKICAgICAg
ICBjb25zdCBUaW55VmVjdG9yPGludCxOX2Rlc3RSYW5rPiYgaW5kZXgsIGludCBpMCwgaW50IGkx
LCBpbnQgaTIsCiAgICAgICAgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
CiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KGluZGV4W2kwXSwgaW5kZXhbaTFdLCBpbmRleFtp
Ml0pOwogICAgfQp9OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJbmRleE1hcHBpbmc8
ND4gewogICAgdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9kZXN0UmFuaz4KICAgIHN0
YXRpYyBUX251bXR5cGUgbWFwKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgND4mIGFycmF5LAogICAg
ICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fZGVzdFJhbms+JiBpbmRleCwgaW50IGkwLCBpbnQg
aTEsIGludCBpMiwKICAgICAgICBpbnQgaTMsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoaW5kZXhbaTBdLCBpbmRleFtpMV0sIGlu
ZGV4W2kyXSwgaW5kZXhbaTNdKTsKICAgIH0KfTsKCnRlbXBsYXRlPD4Kc3RydWN0IF9iel9kb0Fy
cmF5SW5kZXhNYXBwaW5nPDU+IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
ZGVzdFJhbms+CiAgICBzdGF0aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUs
IDU+JiBhcnJheSwKICAgICAgICBjb25zdCBUaW55VmVjdG9yPGludCxOX2Rlc3RSYW5rPiYgaW5k
ZXgsIGludCBpMCwgaW50IGkxLCBpbnQgaTIsCiAgICAgICAgaW50IGkzLCBpbnQgaTQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KGluZGV4
W2kwXSwgaW5kZXhbaTFdLCBpbmRleFtpMl0sIGluZGV4W2kzXSwgaW5kZXhbaTRdKTsKICAgIH0K
fTsKCnRlbXBsYXRlPD4Kc3RydWN0IF9iel9kb0FycmF5SW5kZXhNYXBwaW5nPDY+IHsKICAgIHRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fZGVzdFJhbms+CiAgICBzdGF0aWMgVF9udW10
eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUsIDY+JiBhcnJheSwKICAgICAgICBjb25zdCBU
aW55VmVjdG9yPGludCxOX2Rlc3RSYW5rPiYgaW5kZXgsIGludCBpMCwgaW50IGkxLCBpbnQgaTIs
CiAgICAgICAgaW50IGkzLCBpbnQgaTQsIGludCBpNSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
CiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KGluZGV4W2kwXSwgaW5kZXhbaTFdLCBpbmRleFtp
Ml0sIGluZGV4W2kzXSwgaW5kZXhbaTRdLAogICAgICAgICAgICBpbmRleFtpNV0pOwogICAgfQp9
OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJbmRleE1hcHBpbmc8Nz4gewogICAgdGVt
cGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9kZXN0UmFuaz4KICAgIHN0YXRpYyBUX251bXR5
cGUgbWFwKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgNz4mIGFycmF5LAogICAgICAgIGNvbnN0IFRp
bnlWZWN0b3I8aW50LE5fZGVzdFJhbms+JiBpbmRleCwgaW50IGkwLCBpbnQgaTEsIGludCBpMiwK
ICAgICAgICBpbnQgaTMsIGludCBpNCwgaW50IGk1LCBpbnQgaTYsIGludCwgaW50LCBpbnQsIGlu
dCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoaW5kZXhbaTBdLCBpbmRleFtpMV0sIGluZGV4
W2kyXSwgaW5kZXhbaTNdLCBpbmRleFtpNF0sCiAgICAgICAgICAgIGluZGV4W2k1XSwgaW5kZXhb
aTZdKTsKICAgIH0KfTsKCnRlbXBsYXRlPD4Kc3RydWN0IF9iel9kb0FycmF5SW5kZXhNYXBwaW5n
PDg+IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fZGVzdFJhbms+CiAgICBz
dGF0aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUsIDg+JiBhcnJheSwKICAg
ICAgICBjb25zdCBUaW55VmVjdG9yPGludCxOX2Rlc3RSYW5rPiYgaW5kZXgsIGludCBpMCwgaW50
IGkxLCBpbnQgaTIsCiAgICAgICAgaW50IGkzLCBpbnQgaTQsIGludCBpNSwgaW50IGk2LCBpbnQg
aTcsIGludCwgaW50LCBpbnQpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KGluZGV4W2kwXSwg
aW5kZXhbaTFdLCBpbmRleFtpMl0sIGluZGV4W2kzXSwgaW5kZXhbaTRdLAogICAgICAgICAgICBp
bmRleFtpNV0sIGluZGV4W2k2XSwgaW5kZXhbaTddKTsKICAgIH0KfTsKCnRlbXBsYXRlPD4Kc3Ry
dWN0IF9iel9kb0FycmF5SW5kZXhNYXBwaW5nPDk+IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVt
dHlwZSwgaW50IE5fZGVzdFJhbms+CiAgICBzdGF0aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJh
eTxUX251bXR5cGUsIDk+JiBhcnJheSwKICAgICAgICBjb25zdCBUaW55VmVjdG9yPGludCxOX2Rl
c3RSYW5rPiYgaW5kZXgsIGludCBpMCwgaW50IGkxLCBpbnQgaTIsCiAgICAgICAgaW50IGkzLCBp
bnQgaTQsIGludCBpNSwgaW50IGk2LCBpbnQgaTcsIGludCBpOCwgaW50LCBpbnQpCiAgICB7CiAg
ICAgICAgcmV0dXJuIGFycmF5KGluZGV4W2kwXSwgaW5kZXhbaTFdLCBpbmRleFtpMl0sIGluZGV4
W2kzXSwgaW5kZXhbaTRdLAogICAgICAgICAgICBpbmRleFtpNV0sIGluZGV4W2k2XSwgaW5kZXhb
aTddLCBpbmRleFtpOF0pOwogICAgfQp9OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJ
bmRleE1hcHBpbmc8MTA+IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fZGVz
dFJhbms+CiAgICBzdGF0aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUsIDEw
PiYgYXJyYXksCiAgICAgICAgY29uc3QgVGlueVZlY3RvcjxpbnQsTl9kZXN0UmFuaz4mIGluZGV4
LCBpbnQgaTAsIGludCBpMSwgaW50IGkyLAogICAgICAgIGludCBpMywgaW50IGk0LCBpbnQgaTUs
IGludCBpNiwgaW50IGk3LCBpbnQgaTgsIGludCBpOSwgaW50KQogICAgewogICAgICAgIHJldHVy
biBhcnJheShpbmRleFtpMF0sIGluZGV4W2kxXSwgaW5kZXhbaTJdLCBpbmRleFtpM10sIGluZGV4
W2k0XSwKICAgICAgICAgICAgaW5kZXhbaTVdLCBpbmRleFtpNl0sIGluZGV4W2k3XSwgaW5kZXhb
aThdLCBpbmRleFtpOV0pOwogICAgfQp9OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJ
bmRleE1hcHBpbmc8MTE+IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fZGVz
dFJhbms+CiAgICBzdGF0aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUsIDEx
PiYgYXJyYXksCiAgICAgICAgY29uc3QgVGlueVZlY3RvcjxpbnQsTl9kZXN0UmFuaz4mIGluZGV4
LCBpbnQgaTAsIGludCBpMSwgaW50IGkyLAogICAgICAgIGludCBpMywgaW50IGk0LCBpbnQgaTUs
IGludCBpNiwgaW50IGk3LCBpbnQgaTgsIGludCBpOSwgaW50IGkxMCkKICAgIHsKICAgICAgICBy
ZXR1cm4gYXJyYXkoaW5kZXhbaTBdLCBpbmRleFtpMV0sIGluZGV4W2kyXSwgaW5kZXhbaTNdLCBp
bmRleFtpNF0sCiAgICAgICAgICAgIGluZGV4W2k1XSwgaW5kZXhbaTZdLCBpbmRleFtpN10sIGlu
ZGV4W2k4XSwgaW5kZXhbaTldLAogICAgICAgICAgICBpbmRleFtpMTBdKTsKICAgIH0KfTsKCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaywgaW50IE5fbWFwMCwgaW50IE5fbWFw
MT0wLCBpbnQgTl9tYXAyPTAsCiAgICBpbnQgTl9tYXAzPTAsIGludCBOX21hcDQ9MCwgaW50IE5f
bWFwNT0wLCBpbnQgTl9tYXA2PTAsIGludCBOX21hcDc9MCwgCiAgICBpbnQgTl9tYXA4PTAsIGlu
dCBOX21hcDk9MCwgaW50IE5fbWFwMTA9MD4KY2xhc3MgQXJyYXlJbmRleE1hcHBpbmcgewpwdWJs
aWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZSBUX251bXR5cGU7CiAgICB0eXBlZGVmIGNvbnN0IEFy
cmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBUX2N0b3JBcmcxOwogICAgdHlwZWRlZiBpbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVF9jdG9yQXJnMjsgICAgIAoKICAgICAKCgoKCgogICAgZW51
bSB7CiAgICAgICAgbWF4UmFuazEgPSAoTl9tYXAwID4gTl9tYXAxKSA/IE5fbWFwMCA6IE5fbWFw
MSwKICAgICAgICBtYXhSYW5rMiA9IChOX21hcDIgPiBtYXhSYW5rMSkgPyBOX21hcDIgOiBtYXhS
YW5rMSwKICAgICAgICBtYXhSYW5rMyA9IChOX21hcDMgPiBtYXhSYW5rMikgPyBOX21hcDMgOiBt
YXhSYW5rMiwKICAgICAgICBtYXhSYW5rNCA9IChOX21hcDQgPiBtYXhSYW5rMykgPyBOX21hcDQg
OiBtYXhSYW5rMywKICAgICAgICBtYXhSYW5rNSA9IChOX21hcDUgPiBtYXhSYW5rNCkgPyBOX21h
cDUgOiBtYXhSYW5rNCwKICAgICAgICBtYXhSYW5rNiA9IChOX21hcDYgPiBtYXhSYW5rNSkgPyBO
X21hcDYgOiBtYXhSYW5rNSwKICAgICAgICBtYXhSYW5rNyA9IChOX21hcDcgPiBtYXhSYW5rNikg
PyBOX21hcDcgOiBtYXhSYW5rNiwKICAgICAgICBtYXhSYW5rOCA9IChOX21hcDggPiBtYXhSYW5r
NykgPyBOX21hcDggOiBtYXhSYW5rNywKICAgICAgICBtYXhSYW5rOSA9IChOX21hcDkgPiBtYXhS
YW5rOCkgPyBOX21hcDkgOiBtYXhSYW5rOCwKICAgICAgICBtYXhSYW5rMTAgPSAoTl9tYXAxMCA+
IG1heFJhbms5KSA/IE5fbWFwMTAgOiBtYXhSYW5rOQogICAgfTsKCiAgICBlbnVtIHsgbnVtQXJy
YXlPcGVyYW5kcyA9IDEsIG51bUluZGV4UGxhY2Vob2xkZXJzID0gMSwKICAgICAgICByYW5rID0g
bWF4UmFuazEwICsgMSB9OwoKICAgIEFycmF5SW5kZXhNYXBwaW5nKGNvbnN0IEFycmF5PFRfbnVt
dHlwZSwgTl9yYW5rPiYgYXJyYXkpCiAgICAgICAgOiBhcnJheV8oYXJyYXkpCiAgICB7IAogICAg
fQoKICAgIEFycmF5SW5kZXhNYXBwaW5nKGNvbnN0IEFycmF5SW5kZXhNYXBwaW5nPFRfbnVtdHlw
ZSxOX3JhbmssTl9tYXAwLAogICAgICAgIE5fbWFwMSxOX21hcDIsTl9tYXAzLE5fbWFwNCxOX21h
cDUsTl9tYXA2LE5fbWFwNyxOX21hcDgsTl9tYXA5LAogICAgICAgIE5fbWFwMTA+JiB6KQogICAg
ICAgIDogYXJyYXlfKHouYXJyYXlfKQogICAgeyAKICAgIH0KCiMgMjYwICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvbWFwLmgiCgogICAgdGVtcGxhdGU8aW50
IE5fZGVzdFJhbms+CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShjb25zdCBUaW55VmVjdG9yPGlu
dCwgTl9kZXN0UmFuaz4mIGkpCiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9kb0FycmF5SW5kZXhN
YXBwaW5nPE5fcmFuaz46Om1hcChhcnJheV8sIGksCiAgICAgICAgICAgIE5fbWFwMCwgTl9tYXAx
LCBOX21hcDIsIE5fbWFwMywgTl9tYXA0LCBOX21hcDUsIE5fbWFwNiwKICAgICAgICAgICAgTl9t
YXA3LCBOX21hcDgsIE5fbWFwOSwgTl9tYXAxMCk7CiAgICB9CgoKICAgIGludCBhc2NlbmRpbmco
aW50IHJhbmspCiAgICB7CiAgICAgICAgaWYgKE5fbWFwMCA9PSByYW5rKQogICAgICAgICAgICBy
ZXR1cm4gYXJyYXlfLmFzY2VuZGluZygwKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXAxID09IHJh
bmspICYmIChOX3JhbmsgPiAxKSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5hc2NlbmRpbmco
MSk7CiAgICAgICAgZWxzZSBpZiAoKE5fbWFwMiA9PSByYW5rKSAmJiAoTl9yYW5rID4gMikpCiAg
ICAgICAgICAgIHJldHVybiBhcnJheV8uYXNjZW5kaW5nKDIpOwogICAgICAgIGVsc2UgaWYgKChO
X21hcDMgPT0gcmFuaykgJiYgKE5fcmFuayA+IDMpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlf
LmFzY2VuZGluZygzKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA0ID09IHJhbmspICYmIChOX3Jh
bmsgPiA0KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5hc2NlbmRpbmcoNCk7CiAgICAgICAg
ZWxzZSBpZiAoKE5fbWFwNSA9PSByYW5rKSAmJiAoTl9yYW5rID4gNSkpCiAgICAgICAgICAgIHJl
dHVybiBhcnJheV8uYXNjZW5kaW5nKDUpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDYgPT0gcmFu
aykgJiYgKE5fcmFuayA+IDYpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmFzY2VuZGluZyg2
KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA3ID09IHJhbmspICYmIChOX3JhbmsgPiA3KSkKICAg
ICAgICAgICAgcmV0dXJuIGFycmF5Xy5hc2NlbmRpbmcoNyk7CiAgICAgICAgZWxzZSBpZiAoKE5f
bWFwOCA9PSByYW5rKSAmJiAoTl9yYW5rID4gOCkpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8u
YXNjZW5kaW5nKDgpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDkgPT0gcmFuaykgJiYgKE5fcmFu
ayA+IDkpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmFzY2VuZGluZyg5KTsKICAgICAgICBl
bHNlIGlmICgoTl9tYXAxMCA9PSByYW5rKSAmJiAoTl9yYW5rID4gMTApKQogICAgICAgICAgICBy
ZXR1cm4gYXJyYXlfLmFzY2VuZGluZygxMCk7CiAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1
cm4gKC0gMjE0NzQ4MzY0NyAgLTEpIDsgICAgCiAgICB9CgogICAgaW50IG9yZGVyaW5nKGludCBy
YW5rKQogICAgewogICAgICAgIGlmIChOX21hcDAgPT0gcmFuaykKICAgICAgICAgICAgcmV0dXJu
IGFycmF5Xy5vcmRlcmluZygwKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXAxID09IHJhbmspICYm
IChOX3JhbmsgPiAxKSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZygxKTsKICAg
ICAgICBlbHNlIGlmICgoTl9tYXAyID09IHJhbmspICYmIChOX3JhbmsgPiAyKSkKICAgICAgICAg
ICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZygyKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXAzID09
IHJhbmspICYmIChOX3JhbmsgPiAzKSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmlu
ZygzKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA0ID09IHJhbmspICYmIChOX3JhbmsgPiA0KSkK
ICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZyg0KTsKICAgICAgICBlbHNlIGlmICgo
Tl9tYXA1ID09IHJhbmspICYmIChOX3JhbmsgPiA1KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5
Xy5vcmRlcmluZyg1KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA2ID09IHJhbmspICYmIChOX3Jh
bmsgPiA2KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZyg2KTsKICAgICAgICBl
bHNlIGlmICgoTl9tYXA3ID09IHJhbmspICYmIChOX3JhbmsgPiA3KSkKICAgICAgICAgICAgcmV0
dXJuIGFycmF5Xy5vcmRlcmluZyg3KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA4ID09IHJhbmsp
ICYmIChOX3JhbmsgPiA4KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZyg4KTsK
ICAgICAgICBlbHNlIGlmICgoTl9tYXA5ID09IHJhbmspICYmIChOX3JhbmsgPiA5KSkKICAgICAg
ICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZyg5KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXAx
MCA9PSByYW5rKSAmJiAoTl9yYW5rID4gMTApKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLm9y
ZGVyaW5nKDEwKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiAoLSAyMTQ3NDgzNjQ3
ICAtMSkgOyAgICAKICAgIH0KCiAgICBpbnQgbGJvdW5kKGludCByYW5rKQogICAgeyAKICAgICAg
ICBpZiAoTl9tYXAwID09IHJhbmspICAgIAogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmxib3Vu
ZCgwKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXAxID09IHJhbmspICYmIChOX3JhbmsgPiAxKSkK
ICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5sYm91bmQoMSk7CiAgICAgICAgZWxzZSBpZiAoKE5f
bWFwMiA9PSByYW5rKSAmJiAoTl9yYW5rID4gMikpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8u
bGJvdW5kKDIpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDMgPT0gcmFuaykgJiYgKE5fcmFuayA+
IDMpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmxib3VuZCgzKTsKICAgICAgICBlbHNlIGlm
ICgoTl9tYXA0ID09IHJhbmspICYmIChOX3JhbmsgPiA0KSkKICAgICAgICAgICAgcmV0dXJuIGFy
cmF5Xy5sYm91bmQoNCk7CiAgICAgICAgZWxzZSBpZiAoKE5fbWFwNSA9PSByYW5rKSAmJiAoTl9y
YW5rID4gNSkpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8ubGJvdW5kKDUpOwogICAgICAgIGVs
c2UgaWYgKChOX21hcDYgPT0gcmFuaykgJiYgKE5fcmFuayA+IDYpKQogICAgICAgICAgICByZXR1
cm4gYXJyYXlfLmxib3VuZCg2KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA3ID09IHJhbmspICYm
IChOX3JhbmsgPiA3KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5sYm91bmQoNyk7CiAgICAg
ICAgZWxzZSBpZiAoKE5fbWFwOCA9PSByYW5rKSAmJiAoTl9yYW5rID4gOCkpCiAgICAgICAgICAg
IHJldHVybiBhcnJheV8ubGJvdW5kKDgpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDkgPT0gcmFu
aykgJiYgKE5fcmFuayA+IDkpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmxib3VuZCg5KTsK
ICAgICAgICBlbHNlIGlmICgoTl9tYXAxMCA9PSByYW5rKSAmJiAoTl9yYW5rID4gMTApKQogICAg
ICAgICAgICByZXR1cm4gYXJyYXlfLmxib3VuZCgxMCk7CiAgICAgICAgZWxzZQogICAgICAgICAg
ICByZXR1cm4gKC0gMjE0NzQ4MzY0NyAgLTEpIDsgICAgCiAgICB9CgogICAgaW50IHVib3VuZChp
bnQgcmFuaykKICAgIHsgICAKICAgICAgICBpZiAoTl9tYXAwID09IHJhbmspCiAgICAgICAgICAg
IHJldHVybiBhcnJheV8udWJvdW5kKDApOwogICAgICAgIGVsc2UgaWYgKChOX21hcDEgPT0gcmFu
aykgJiYgKE5fcmFuayA+IDEpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLnVib3VuZCgxKTsK
ICAgICAgICBlbHNlIGlmICgoTl9tYXAyID09IHJhbmspICYmIChOX3JhbmsgPiAyKSkKICAgICAg
ICAgICAgcmV0dXJuIGFycmF5Xy51Ym91bmQoMik7CiAgICAgICAgZWxzZSBpZiAoKE5fbWFwMyA9
PSByYW5rKSAmJiAoTl9yYW5rID4gMykpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8udWJvdW5k
KDMpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDQgPT0gcmFuaykgJiYgKE5fcmFuayA+IDQpKQog
ICAgICAgICAgICByZXR1cm4gYXJyYXlfLnVib3VuZCg0KTsKICAgICAgICBlbHNlIGlmICgoTl9t
YXA1ID09IHJhbmspICYmIChOX3JhbmsgPiA1KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy51
Ym91bmQoNSk7CiAgICAgICAgZWxzZSBpZiAoKE5fbWFwNiA9PSByYW5rKSAmJiAoTl9yYW5rID4g
NikpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8udWJvdW5kKDYpOwogICAgICAgIGVsc2UgaWYg
KChOX21hcDcgPT0gcmFuaykgJiYgKE5fcmFuayA+IDcpKQogICAgICAgICAgICByZXR1cm4gYXJy
YXlfLnVib3VuZCg3KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA4ID09IHJhbmspICYmIChOX3Jh
bmsgPiA4KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy51Ym91bmQoOCk7CiAgICAgICAgZWxz
ZSBpZiAoKE5fbWFwOSA9PSByYW5rKSAmJiAoTl9yYW5rID4gOSkpCiAgICAgICAgICAgIHJldHVy
biBhcnJheV8udWJvdW5kKDkpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDEwID09IHJhbmspICYm
IChOX3JhbmsgPiAxMCkpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8udWJvdW5kKDEwKTsKICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiAyMTQ3NDgzNjQ3ICA7ICAgIAogICAgfQoKICAg
ICAKICAgICAKICAgICAKICAgICAKICAgIGludCBvcGVyYXRvciooKQogICAgewogICAgICAgICA7
CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgIAogICAgdm9pZCBwdXNoKGludCkKICAgIHsK
ICAgICAgICAgOwogICAgfQoKICAgICAKICAgIHZvaWQgcG9wKGludCkKICAgIHsKICAgICAgICAg
OwogICAgfQoKICAgICAKICAgIHZvaWQgYWR2YW5jZSgpCiAgICB7CiAgICAgICAgIDsKICAgIH0K
CiAgICAgCiAgICB2b2lkIGFkdmFuY2UoaW50KQogICAgewogICAgICAgICA7CiAgICB9CgogICAg
IAogICAgdm9pZCBsb2FkU3RyaWRlKGludCkKICAgIHsKICAgICAgICAgOwogICAgfQoKICAgIGJv
b2wgIGlzVW5pdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAg
IHJldHVybiBmYWxzZTsKICAgIH0KCiAgICB2b2lkIGFkdmFuY2VVbml0U3RyaWRlKCkKICAgIHsK
ICAgICAgICAgOwogICAgfQoKICAgIGJvb2wgIGNhbkNvbGxhcHNlKGludCxpbnQpIGNvbnN0CiAg
ICB7ICAgIDsgIHJldHVybiBmYWxzZSA7IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3JbXShpbnQp
CiAgICB7ICAgCiAgICAgICAgIDsKICAgICAgICByZXR1cm4gVF9udW10eXBlKCk7CiAgICB9Cgog
ICAgVF9udW10eXBlIGZhc3RSZWFkKGludCkKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVy
biBUX251bXR5cGUoKTsKICAgIH0KCiAgICBpbnQgc3VnZ2VzdFN0cmlkZShpbnQpIGNvbnN0CiAg
ICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBib29sICBpc1N0cmlk
ZShpbnQsaW50KSBjb25zdAogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIHRydWUgOwog
ICAgfQoKICAgIHRlbXBsYXRlPGludCBOX3JhbmsyPgogICAgdm9pZCBtb3ZlVG8oY29uc3QgVGlu
eVZlY3RvcjxpbnQsTl9yYW5rMj4mIGkpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4g
OwogICAgfQoKICAgIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQpIGNvbnN0CiAgICB7CiAgICAgICAgIAogICAgICAgIHN0ciArPSAibWFwW05F
RURTX1dPUktdIjsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX3NoYXBlPgogICAgYm9vbCAg
c2hhcGVDaGVjayhjb25zdCBUX3NoYXBlJiBzaGFwZSkgY29uc3QKICAgIHsgCiAgICAgICAgIAog
ICAgICAgIHJldHVybiB0cnVlIDsgCiAgICB9Cgpwcml2YXRlOgogICAgQXJyYXlJbmRleE1hcHBp
bmcoKSB7IH0KCiAgICBjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5XzsKfTsK
Cn0gCgoKCiMgODAgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJh
eS5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJh
eS9tdWx0aS5oIiAxCiAKCgojZGVmaW5lIEJaX0FSUkFZTVVMVElfSAoKCgoKCm5hbWVzcGFjZSAg
YmxpdHogIHsgCgogCgoKCgoKCgoKCgogCnRlbXBsYXRlPGNsYXNzIFRfY29tcG9uZW50PgpzdHJ1
Y3QgbXVsdGljb21wb25lbnRfdHJhaXRzIHsKICAgIHR5cGVkZWYgVF9jb21wb25lbnQgVF9lbGVt
ZW50OwogICAgZW51bSB7IG51bUNvbXBvbmVudHMgPSAwIH07Cn07CgogCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kc3RydWN0IG11bHRpY29tcG9uZW50X3RyYWl0czxUaW55
VmVjdG9yPFRfbnVtdHlwZSxOX3Jhbms+ID4gewogICAgdHlwZWRlZiBUX251bXR5cGUgVF9lbGVt
ZW50OwogICAgZW51bSB7IG51bUNvbXBvbmVudHMgPSBOX3JhbmsgfTsKfTsKCgoKCgoKCgoKCiAK
IAoKI2RlZmluZSBCWl9ERUNMQVJFX01VTFRJQ09NUE9ORU5UX1RZUEUoVF90dXBsZSxULE4pIEJa
X05BTUVTUEFDRShibGl0eikgdGVtcGxhdGU8PiBzdHJ1Y3QgbXVsdGljb21wb25lbnRfdHJhaXRz
PFRfdHVwbGUgPiB7IHR5cGVkZWYgVCBUX2VsZW1lbnQ7IGVudW0geyBudW1Db21wb25lbnRzID0g
TiB9OyB9OyBCWl9OQU1FU1BBQ0VfRU5ECgoKCgoKCgoKfSAKCgojIDgxICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAxICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZG9tYWluLmgiIDEKCiNkZWZpbmUgQlpf
RE9NQUlOX0gKCgoKCgoKCgoKIAoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGlu
dCBOX3Jhbms+CmNsYXNzIFJlY3REb21haW4gewoKcHVibGljOgogICAgUmVjdERvbWFpbihjb25z
dCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBsYm91bmQsCiAgICAgICAgY29uc3QgVGlueVZlY3Rv
cjxpbnQsTl9yYW5rPiYgdWJvdW5kKQogICAgICA6IGxib3VuZF8obGJvdW5kKSwgdWJvdW5kXyh1
Ym91bmQpCiAgICB7IH0KCiAgICAgCiAgICAgCiAgICAgCgogICAgY29uc3QgVGlueVZlY3Rvcjxp
bnQsTl9yYW5rPiYgbGJvdW5kKCkgY29uc3QKICAgIHsgcmV0dXJuIGxib3VuZF87IH0KCiAgICBp
bnQgbGJvdW5kKGludCBpKSBjb25zdAogICAgeyByZXR1cm4gbGJvdW5kXyhpKTsgfQoKICAgIGNv
bnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHVib3VuZCgpIGNvbnN0CiAgICB7IHJldHVybiB1
Ym91bmRfOyB9CgogICAgaW50IHVib3VuZChpbnQgaSkgY29uc3QKICAgIHsgcmV0dXJuIHVib3Vu
ZF8oaSk7IH0KCiAgICBSYW5nZSBvcGVyYXRvcltdKGludCByYW5rKSBjb25zdAogICAgeyByZXR1
cm4gUmFuZ2UobGJvdW5kXyhyYW5rKSwgdWJvdW5kXyhyYW5rKSk7IH0KCiAgICB2b2lkIHNocmlu
ayhpbnQgYW1vdW50KQogICAgewogICAgICAgIGxib3VuZF8gKz0gYW1vdW50OwogICAgICAgIHVi
b3VuZF8gLT0gYW1vdW50OwogICAgfQoKICAgIHZvaWQgc2hyaW5rKGludCBkaW0sIGludCBhbW91
bnQpCiAgICB7CiAgICAgICAgbGJvdW5kXyhkaW0pICs9IGFtb3VudDsKICAgICAgICB1Ym91bmRf
KGRpbSkgLT0gYW1vdW50OwogICAgfQoKICAgIHZvaWQgZXhwYW5kKGludCBhbW91bnQpCiAgICB7
CiAgICAgICAgbGJvdW5kXyAtPSBhbW91bnQ7CiAgICAgICAgdWJvdW5kXyArPSBhbW91bnQ7CiAg
ICB9CgogICAgdm9pZCBleHBhbmQoaW50IGRpbSwgaW50IGFtb3VudCkKICAgIHsKICAgICAgICBs
Ym91bmRfKGRpbSkgLT0gYW1vdW50OwogICAgICAgIHVib3VuZF8oZGltKSArPSBhbW91bnQ7CiAg
ICB9Cgpwcml2YXRlOgogICAgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiBsYm91bmRfLCB1Ym91bmRf
Owp9OwoKdGVtcGxhdGU8aW50IE5fcmFuaz4KaW5saW5lIFJlY3REb21haW48Tl9yYW5rPiBzdHJp
cChjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzdGFydFBvc2l0aW9uLAogICAgaW50IHN0
cmlwRGltZW5zaW9uLCBpbnQgdWJvdW5kKQp7CiAgICAgOwogICAgIDsKCiAgICBUaW55VmVjdG9y
PGludCxOX3Jhbms+IGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgIGVuZFBvc2l0aW9u
KHN0cmlwRGltZW5zaW9uKSA9IHVib3VuZDsKICAgIHJldHVybiBSZWN0RG9tYWluPE5fcmFuaz4o
c3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwp9Cgp9IAoKCiMgODIgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9zdG9yYWdlLmgiIDEKCiNkZWZpbmUgQlpf
QVJSQVlfU1RPUkFHRV9ICgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCnRlbXBsYXRlPGludCBOX3Jhbms+CmNsYXNzIEdlbmVyYWxBcnJheVN0b3JhZ2UgewpwdWJs
aWM6CiAgICBjbGFzcyBub0luaXRpYWxpemVGbGFnIHsgfTsKCiAgICBHZW5lcmFsQXJyYXlTdG9y
YWdlKG5vSW5pdGlhbGl6ZUZsYWcpCiAgICB7IH0KCiAgICBHZW5lcmFsQXJyYXlTdG9yYWdlKCkK
ICAgIHsKICAgICAgICBvcmRlcmluZ18gPSBSYW5nZShOX3JhbmsgLSAxLCAwLCAtMSk7CiAgICAg
ICAgYXNjZW5kaW5nRmxhZ18gPSAxOwogICAgICAgIGJhc2VfID0gMDsKICAgIH0KCiAgICBHZW5l
cmFsQXJyYXlTdG9yYWdlKGNvbnN0IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiYgeCkKICAg
ICAgICA6IG9yZGVyaW5nXyh4Lm9yZGVyaW5nXyksIGFzY2VuZGluZ0ZsYWdfKHguYXNjZW5kaW5n
RmxhZ18pLAogICAgICAgICAgYmFzZV8oeC5iYXNlXykKICAgIHsgCiAgICB9CgogICAgR2VuZXJh
bEFycmF5U3RvcmFnZShUaW55VmVjdG9yPGludCxOX3Jhbms+IG9yZGVyaW5nLAogICAgICAgIFRp
bnlWZWN0b3I8Ym9vbCxOX3Jhbms+IGFzY2VuZGluZ0ZsYWcpCiAgICAgIDogb3JkZXJpbmdfKG9y
ZGVyaW5nKSwgYXNjZW5kaW5nRmxhZ18oYXNjZW5kaW5nRmxhZykKICAgIHsKICAgICAgICBiYXNl
XyA9IDA7CiAgICB9CgogICAgfkdlbmVyYWxBcnJheVN0b3JhZ2UoKQogICAgeyB9CgogICAgVGlu
eVZlY3RvcjxpbnQsIE5fcmFuaz4mIG9yZGVyaW5nKCkKICAgIHsgcmV0dXJuIG9yZGVyaW5nXzsg
fQoKICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50LCBOX3Jhbms+JiBvcmRlcmluZygpIGNvbnN0CiAg
ICB7IHJldHVybiBvcmRlcmluZ187IH0KCiAgICBpbnQgb3JkZXJpbmcoaW50IGkpIGNvbnN0CiAg
ICB7IHJldHVybiBvcmRlcmluZ19baV07IH0KCiAgICB2b2lkIHNldE9yZGVyaW5nKGludCBpLCBp
bnQgb3JkZXIpIAogICAgeyBvcmRlcmluZ19baV0gPSBvcmRlcjsgfQoKICAgIGJvb2wgIGFsbFJh
bmtzU3RvcmVkQXNjZW5kaW5nKCkgY29uc3QKICAgIHsKICAgICAgICBib29sICByZXN1bHQgPSB0
cnVlIDsKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBOX3Jhbms7ICsraSkKICAgICAgICAgICAg
cmVzdWx0ICY9IGFzY2VuZGluZ0ZsYWdfW2ldOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9
CgogICAgYm9vbCAgaXNSYW5rU3RvcmVkQXNjZW5kaW5nKGludCBpKSBjb25zdAogICAgeyByZXR1
cm4gYXNjZW5kaW5nRmxhZ19baV07IH0KCiAgICBUaW55VmVjdG9yPGJvb2wsIE5fcmFuaz4mIGFz
Y2VuZGluZ0ZsYWcoKSAKICAgIHsgcmV0dXJuIGFzY2VuZGluZ0ZsYWdfOyB9CgogICAgY29uc3Qg
VGlueVZlY3Rvcjxib29sLCBOX3Jhbms+JiBhc2NlbmRpbmdGbGFnKCkgY29uc3QKICAgIHsgcmV0
dXJuIGFzY2VuZGluZ0ZsYWdfOyB9CgogICAgdm9pZCBzZXRBc2NlbmRpbmdGbGFnKGludCBpLCBp
bnQgYXNjZW5kaW5nRmxhZykgCiAgICB7IGFzY2VuZGluZ0ZsYWdfW2ldID0gYXNjZW5kaW5nRmxh
ZzsgfQoKICAgIFRpbnlWZWN0b3I8aW50LCBOX3Jhbms+JiBiYXNlKCkKICAgIHsgcmV0dXJuIGJh
c2VfOyB9CgogICAgY29uc3QgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4mIGJhc2UoKSBjb25zdAog
ICAgeyByZXR1cm4gYmFzZV87IH0KCiAgICBpbnQgYmFzZShpbnQgaSkgY29uc3QKICAgIHsgcmV0
dXJuIGJhc2VfW2ldOyB9CgogICAgdm9pZCBzZXRCYXNlKGludCBpLCBpbnQgYmFzZSkKICAgIHsg
YmFzZV9baV0gPSBiYXNlOyB9CgogICAgdm9pZCBzZXRCYXNlKGNvbnN0IFRpbnlWZWN0b3I8aW50
LCBOX3Jhbms+JiBiYXNlKQogICAgeyBiYXNlXyA9IGJhc2U7IH0KCnByb3RlY3RlZDoKICAgICAK
CgoKCgoKCgoKCgoKCgoKCgoKCgogICAgVGlueVZlY3RvcjxpbnQsICBOX3Jhbms+IG9yZGVyaW5n
XzsKICAgIFRpbnlWZWN0b3I8Ym9vbCwgTl9yYW5rPiBhc2NlbmRpbmdGbGFnXzsKICAgIFRpbnlW
ZWN0b3I8aW50LCAgTl9yYW5rPiBiYXNlXzsKfTsKCiAKCgoKCgoKdGVtcGxhdGU8aW50IE5fcmFu
az4KY2xhc3MgRm9ydHJhbkFycmF5IDogcHVibGljIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5r
PiB7CnB1YmxpYzoKICAgIEZvcnRyYW5BcnJheSgpCiAgICAgICAgOiBHZW5lcmFsQXJyYXlTdG9y
YWdlPE5fcmFuaz4obm9Jbml0aWFsaXplRmxhZygpKQogICAgewogICAgICAgIG9yZGVyaW5nXyA9
IFJhbmdlKDAsIE5fcmFuayAtIDEpOwogICAgICAgIGFzY2VuZGluZ0ZsYWdfID0gMTsKICAgICAg
ICBiYXNlXyA9IDE7CiAgICB9Cn07CgoKIAogCiAKIAogCiAKCmNsYXNzIF9iel9mb3J0cmFuVGFn
IHsKcHVibGljOgogICAgb3BlcmF0b3IgR2VuZXJhbEFycmF5U3RvcmFnZTwxPigpCiAgICB7IHJl
dHVybiBGb3J0cmFuQXJyYXk8MT4oKTsgfQoKICAgIG9wZXJhdG9yIEdlbmVyYWxBcnJheVN0b3Jh
Z2U8Mj4oKQogICAgeyByZXR1cm4gRm9ydHJhbkFycmF5PDI+KCk7IH0KCiAgICBvcGVyYXRvciBH
ZW5lcmFsQXJyYXlTdG9yYWdlPDM+KCkKICAgIHsgcmV0dXJuIEZvcnRyYW5BcnJheTwzPigpOyB9
CgogICAgb3BlcmF0b3IgR2VuZXJhbEFycmF5U3RvcmFnZTw0PigpCiAgICB7IHJldHVybiBGb3J0
cmFuQXJyYXk8ND4oKTsgfQoKICAgIG9wZXJhdG9yIEdlbmVyYWxBcnJheVN0b3JhZ2U8NT4oKQog
ICAgeyByZXR1cm4gRm9ydHJhbkFycmF5PDU+KCk7IH0KCiAgICBvcGVyYXRvciBHZW5lcmFsQXJy
YXlTdG9yYWdlPDY+KCkKICAgIHsgcmV0dXJuIEZvcnRyYW5BcnJheTw2PigpOyB9CgogICAgb3Bl
cmF0b3IgR2VuZXJhbEFycmF5U3RvcmFnZTw3PigpCiAgICB7IHJldHVybiBGb3J0cmFuQXJyYXk8
Nz4oKTsgfQoKICAgIG9wZXJhdG9yIEdlbmVyYWxBcnJheVN0b3JhZ2U8OD4oKQogICAgeyByZXR1
cm4gRm9ydHJhbkFycmF5PDg+KCk7IH0KCiAgICBvcGVyYXRvciBHZW5lcmFsQXJyYXlTdG9yYWdl
PDk+KCkKICAgIHsgcmV0dXJuIEZvcnRyYW5BcnJheTw5PigpOyB9CgogICAgb3BlcmF0b3IgR2Vu
ZXJhbEFycmF5U3RvcmFnZTwxMD4oKQogICAgeyByZXR1cm4gRm9ydHJhbkFycmF5PDEwPigpOyB9
CgogICAgb3BlcmF0b3IgR2VuZXJhbEFycmF5U3RvcmFnZTwxMT4oKQogICAgeyByZXR1cm4gRm9y
dHJhbkFycmF5PDExPigpOyB9Cn07CgogCiAKCmV4dGVybiAgX2J6X2ZvcnRyYW5UYWcgZm9ydHJh
bkFycmF5OwoKCiAKCgoKCnRlbXBsYXRlPGludCBOX3Jhbms+CmNsYXNzIENvbHVtbk1ham9yQXJy
YXkgOiBwdWJsaWMgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHsKcHVibGljOgogICAgQ29s
dW1uTWFqb3JBcnJheSgpCiAgICAgICAgOiBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4obm9J
bml0aWFsaXplRmxhZygpKQogICAgewogICAgICAgIG9yZGVyaW5nXyA9IFJhbmdlKDAsIE5fcmFu
ayAtIDEpOwogICAgICAgIGFzY2VuZGluZ0ZsYWdfID0gMTsKICAgICAgICBiYXNlXyA9IDA7CiAg
ICB9Cn07Cgp9IAoKCgojIDgzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovYXJyYXkuaCIgMgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAoKCgp0ZW1wbGF0ZTxjbGFz
cyBUX251bXR5cGUsIGludCBOX3Jhbms+CmNsYXNzIEFycmF5SXRlcmF0b3I7Cgp0ZW1wbGF0ZTxj
bGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CmNsYXNzIENvbnN0QXJyYXlJdGVyYXRvcjsKCnRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4KY2xhc3MgRmFzdEFycmF5SXRlcmF0
b3I7Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmNsYXNzIF9iel9BcnJheUV4cHI7Cgp0ZW1wbGF0
ZTxjbGFzcyBUX2FycmF5LCBjbGFzcyBUX2luZGV4PgpjbGFzcyBJbmRpcmVjdEFycmF5OwoKY2xh
c3MgX2J6X2VuZFRhZzsKCgoKIAoKCgogCiAKIAoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBp
bnQgTl9yYW5rPgpjbGFzcyBBcnJheSA6IHB1YmxpYyBNZW1vcnlCbG9ja1JlZmVyZW5jZTxQX251
bXR5cGU+IAoKICAgICwgcHVibGljIEVUQmFzZTxBcnJheTxQX251bXR5cGUsTl9yYW5rPiA+Cgp7
CgpwdWJsaWM6CiAgICAgCiAgICAgCiAgICAgCgogICAgIAoKCgoKCgoKCgoKICAgIHR5cGVkZWYg
UF9udW10eXBlICAgICAgICAgICAgICAgIFRfbnVtdHlwZTsKICAgIHR5cGVkZWYgVGlueVZlY3Rv
cjxpbnQsIE5fcmFuaz4gIFRfaW5kZXg7CiAgICB0eXBlZGVmIEFycmF5PFRfbnVtdHlwZSwgTl9y
YW5rPiBUX2FycmF5OwogICAgdHlwZWRlZiBGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsIE5f
cmFuaz4gVF9pdGVyYXRvcjsKCiAgICB0eXBlZGVmIEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5f
cmFuaz4gaXRlcmF0b3I7CiAgICB0eXBlZGVmIENvbnN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUs
Tl9yYW5rPiBjb25zdF9pdGVyYXRvcjsKCiAgICBlbnVtIHsgX2J6X3JhbmsgPSBOX3JhbmsgfTsK
CiAgICAgCiAgICAgCiAgICAgCgogICAgCiAgICAgCgoKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4
cHI+CiAgICBleHBsaWNpdCAgQXJyYXkoX2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIpOwoKICAg
ICAKCgoKCgoKICAgIEFycmF5KEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0g
R2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdl
KQogICAgewogICAgICAgIGxlbmd0aF8gPSAwOwogICAgICAgIHN0cmlkZV8gPSAwOwogICAgICAg
IHplcm9PZmZzZXRfID0gMDsKICAgIH0KCiAgICBleHBsaWNpdCAgQXJyYXkoaW50IGxlbmd0aDAs
IAogICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFy
cmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewog
ICAgICAgIGxlbmd0aF9bMF0gPSBsZW5ndGgwOwogICAgICAgIHNldHVwU3RvcmFnZSgwKTsKICAg
IH0KCiAgICBBcnJheShpbnQgbGVuZ3RoMCwgaW50IGxlbmd0aDEsCiAgICAgICAgR2VuZXJhbEFy
cmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4o
KSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAgICAgICAgIDsKICAgICAgICAg
OwoKICAgICAgICAgOwoKICAgICAgICBsZW5ndGhfWzBdID0gbGVuZ3RoMDsKICAgICAgICBsZW5n
dGhfWzFdID0gbGVuZ3RoMTsKICAgICAgICBzZXR1cFN0b3JhZ2UoMSk7CiAgICB9CgogICAgQXJy
YXkoaW50IGxlbmd0aDAsIGludCBsZW5ndGgxLCBpbnQgbGVuZ3RoMiwKICAgICAgICBHZW5lcmFs
QXJyYXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5r
PigpKQogICAgICAgIDogc3RvcmFnZV8oc3RvcmFnZSkKICAgIHsKICAgICAgICAgOwogICAgICAg
IGxlbmd0aF9bMF0gPSBsZW5ndGgwOwogICAgICAgIGxlbmd0aF9bMV0gPSBsZW5ndGgxOwogICAg
ICAgIGxlbmd0aF9bMl0gPSBsZW5ndGgyOwogICAgICAgIHNldHVwU3RvcmFnZSgyKTsKICAgIH0K
CiAgICBBcnJheShpbnQgbGVuZ3RoMCwgaW50IGxlbmd0aDEsIGludCBsZW5ndGgyLCBpbnQgbGVu
Z3RoMywKICAgICAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVy
YWxBcnJheVN0b3JhZ2U8Tl9yYW5rPigpKQogICAgICAgIDogc3RvcmFnZV8oc3RvcmFnZSkKICAg
IHsKICAgICAgICAgOwogICAgICAgIGxlbmd0aF9bMF0gPSBsZW5ndGgwOwogICAgICAgIGxlbmd0
aF9bMV0gPSBsZW5ndGgxOwogICAgICAgIGxlbmd0aF9bMl0gPSBsZW5ndGgyOwogICAgICAgIGxl
bmd0aF9bM10gPSBsZW5ndGgzOwogICAgICAgIHNldHVwU3RvcmFnZSgzKTsKICAgIH0KCiAgICBB
cnJheShpbnQgbGVuZ3RoMCwgaW50IGxlbmd0aDEsIGludCBsZW5ndGgyLCBpbnQgbGVuZ3RoMywg
aW50IGxlbmd0aDQsCiAgICAgICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2Ug
PSBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4oKSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3Jh
Z2UpCiAgICB7CiAgICAgICAgIDsKICAgICAgICBsZW5ndGhfWzBdID0gbGVuZ3RoMDsKICAgICAg
ICBsZW5ndGhfWzFdID0gbGVuZ3RoMTsKICAgICAgICBsZW5ndGhfWzJdID0gbGVuZ3RoMjsKICAg
ICAgICBsZW5ndGhfWzNdID0gbGVuZ3RoMzsKICAgICAgICBsZW5ndGhfWzRdID0gbGVuZ3RoNDsK
ICAgICAgICBzZXR1cFN0b3JhZ2UoNCk7CiAgICB9CgogICAgQXJyYXkoaW50IGxlbmd0aDAsIGlu
dCBsZW5ndGgxLCBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMsIGludCBsZW5ndGg0LAogICAgICAg
IGludCBsZW5ndGg1LAogICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdl
ID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9y
YWdlKQogICAgewogICAgICAgICA7CiAgICAgICAgbGVuZ3RoX1swXSA9IGxlbmd0aDA7CiAgICAg
ICAgbGVuZ3RoX1sxXSA9IGxlbmd0aDE7CiAgICAgICAgbGVuZ3RoX1syXSA9IGxlbmd0aDI7CiAg
ICAgICAgbGVuZ3RoX1szXSA9IGxlbmd0aDM7CiAgICAgICAgbGVuZ3RoX1s0XSA9IGxlbmd0aDQ7
CiAgICAgICAgbGVuZ3RoX1s1XSA9IGxlbmd0aDU7CiAgICAgICAgc2V0dXBTdG9yYWdlKDUpOwog
ICAgfQoKICAgIEFycmF5KGludCBsZW5ndGgwLCBpbnQgbGVuZ3RoMSwgaW50IGxlbmd0aDIsIGlu
dCBsZW5ndGgzLCBpbnQgbGVuZ3RoNCwKICAgICAgICBpbnQgbGVuZ3RoNSwgaW50IGxlbmd0aDYs
CiAgICAgICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJy
YXlTdG9yYWdlPE5fcmFuaz4oKSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAg
ICAgICAgIDsKICAgICAgICBsZW5ndGhfWzBdID0gbGVuZ3RoMDsKICAgICAgICBsZW5ndGhfWzFd
ID0gbGVuZ3RoMTsKICAgICAgICBsZW5ndGhfWzJdID0gbGVuZ3RoMjsKICAgICAgICBsZW5ndGhf
WzNdID0gbGVuZ3RoMzsKICAgICAgICBsZW5ndGhfWzRdID0gbGVuZ3RoNDsKICAgICAgICBsZW5n
dGhfWzVdID0gbGVuZ3RoNTsKICAgICAgICBsZW5ndGhfWzZdID0gbGVuZ3RoNjsKICAgICAgICBz
ZXR1cFN0b3JhZ2UoNik7CiAgICB9CgogICAgQXJyYXkoaW50IGxlbmd0aDAsIGludCBsZW5ndGgx
LCBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMsIGludCBsZW5ndGg0LAogICAgICAgIGludCBsZW5n
dGg1LCBpbnQgbGVuZ3RoNiwgaW50IGxlbmd0aDcsCiAgICAgICAgR2VuZXJhbEFycmF5U3RvcmFn
ZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4oKSkKICAgICAg
ICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAgICAgICAgIDsKICAgICAgICBsZW5ndGhfWzBd
ID0gbGVuZ3RoMDsKICAgICAgICBsZW5ndGhfWzFdID0gbGVuZ3RoMTsKICAgICAgICBsZW5ndGhf
WzJdID0gbGVuZ3RoMjsKICAgICAgICBsZW5ndGhfWzNdID0gbGVuZ3RoMzsKICAgICAgICBsZW5n
dGhfWzRdID0gbGVuZ3RoNDsKICAgICAgICBsZW5ndGhfWzVdID0gbGVuZ3RoNTsKICAgICAgICBs
ZW5ndGhfWzZdID0gbGVuZ3RoNjsKICAgICAgICBsZW5ndGhfWzddID0gbGVuZ3RoNzsKICAgICAg
ICBzZXR1cFN0b3JhZ2UoNyk7CiAgICB9CgogICAgQXJyYXkoaW50IGxlbmd0aDAsIGludCBsZW5n
dGgxLCBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMsIGludCBsZW5ndGg0LAogICAgICAgIGludCBs
ZW5ndGg1LCBpbnQgbGVuZ3RoNiwgaW50IGxlbmd0aDcsIGludCBsZW5ndGg4LAogICAgICAgIEdl
bmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxO
X3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgICA7CiAg
ICAgICAgbGVuZ3RoX1swXSA9IGxlbmd0aDA7CiAgICAgICAgbGVuZ3RoX1sxXSA9IGxlbmd0aDE7
CiAgICAgICAgbGVuZ3RoX1syXSA9IGxlbmd0aDI7CiAgICAgICAgbGVuZ3RoX1szXSA9IGxlbmd0
aDM7CiAgICAgICAgbGVuZ3RoX1s0XSA9IGxlbmd0aDQ7CiAgICAgICAgbGVuZ3RoX1s1XSA9IGxl
bmd0aDU7CiAgICAgICAgbGVuZ3RoX1s2XSA9IGxlbmd0aDY7CiAgICAgICAgbGVuZ3RoX1s3XSA9
IGxlbmd0aDc7CiAgICAgICAgbGVuZ3RoX1s4XSA9IGxlbmd0aDg7CiAgICAgICAgc2V0dXBTdG9y
YWdlKDgpOwogICAgfQoKICAgIEFycmF5KGludCBsZW5ndGgwLCBpbnQgbGVuZ3RoMSwgaW50IGxl
bmd0aDIsIGludCBsZW5ndGgzLCBpbnQgbGVuZ3RoNCwKICAgICAgICBpbnQgbGVuZ3RoNSwgaW50
IGxlbmd0aDYsIGludCBsZW5ndGg3LCBpbnQgbGVuZ3RoOCwgaW50IGxlbmd0aDksCiAgICAgICAg
R2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdl
PE5fcmFuaz4oKSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAgICAgICAgIDsK
ICAgICAgICBsZW5ndGhfWzBdID0gbGVuZ3RoMDsKICAgICAgICBsZW5ndGhfWzFdID0gbGVuZ3Ro
MTsKICAgICAgICBsZW5ndGhfWzJdID0gbGVuZ3RoMjsKICAgICAgICBsZW5ndGhfWzNdID0gbGVu
Z3RoMzsKICAgICAgICBsZW5ndGhfWzRdID0gbGVuZ3RoNDsKICAgICAgICBsZW5ndGhfWzVdID0g
bGVuZ3RoNTsKICAgICAgICBsZW5ndGhfWzZdID0gbGVuZ3RoNjsKICAgICAgICBsZW5ndGhfWzdd
ID0gbGVuZ3RoNzsKICAgICAgICBsZW5ndGhfWzhdID0gbGVuZ3RoODsKICAgICAgICBsZW5ndGhf
WzldID0gbGVuZ3RoOTsKICAgICAgICBzZXR1cFN0b3JhZ2UoOSk7CiAgICB9CgogICAgQXJyYXko
aW50IGxlbmd0aDAsIGludCBsZW5ndGgxLCBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMsIGludCBs
ZW5ndGg0LAogICAgICAgIGludCBsZW5ndGg1LCBpbnQgbGVuZ3RoNiwgaW50IGxlbmd0aDcsIGlu
dCBsZW5ndGg4LCBpbnQgbGVuZ3RoOSwKICAgICAgICBpbnQgbGVuZ3RoMTAsCiAgICAgICAgR2Vu
ZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdlPE5f
cmFuaz4oKSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAgICAgICAgIDsKICAg
ICAgICBsZW5ndGhfWzBdID0gbGVuZ3RoMDsKICAgICAgICBsZW5ndGhfWzFdID0gbGVuZ3RoMTsK
ICAgICAgICBsZW5ndGhfWzJdID0gbGVuZ3RoMjsKICAgICAgICBsZW5ndGhfWzNdID0gbGVuZ3Ro
MzsKICAgICAgICBsZW5ndGhfWzRdID0gbGVuZ3RoNDsKICAgICAgICBsZW5ndGhfWzVdID0gbGVu
Z3RoNTsKICAgICAgICBsZW5ndGhfWzZdID0gbGVuZ3RoNjsKICAgICAgICBsZW5ndGhfWzddID0g
bGVuZ3RoNzsKICAgICAgICBsZW5ndGhfWzhdID0gbGVuZ3RoODsKICAgICAgICBsZW5ndGhfWzld
ID0gbGVuZ3RoOTsKICAgICAgICBsZW5ndGhfWzEwXSA9IGxlbmd0aDEwOwogICAgICAgIHNldHVw
U3RvcmFnZSgxMCk7CiAgICB9CgogICAgIAoKCgogICAgQXJyYXkoVF9udW10eXBlKiBfX3Jlc3Ry
aWN0X18gIGRhdGFGaXJzdCwgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4gc2hhcGUsCiAgICAgICAg
R2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdl
PE5fcmFuaz4oKSkKICAgICAgOiBNZW1vcnlCbG9ja1JlZmVyZW5jZTxUX251bXR5cGU+KHByb2R1
Y3Qoc2hhcGUpLCBkYXRhRmlyc3QsIAogICAgICAgICAgbmV2ZXJEZWxldGVEYXRhKSwKICAgICAg
ICBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgICA7CgogICAgICAgIGxlbmd0aF8gPSBz
aGFwZTsKICAgICAgICBjb21wdXRlU3RyaWRlcygpOwogICAgICAgIGRhdGFfICs9IHplcm9PZmZz
ZXRfOwogICAgfQoKICAgICAKCgoKCiAgICBBcnJheShUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAg
ZGF0YUZpcnN0LCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiBzaGFwZSwKICAgICAgICBUaW55VmVj
dG9yPGludCwgTl9yYW5rPiBzdHJpZGUsIAogICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9y
YW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgIDogTWVt
b3J5QmxvY2tSZWZlcmVuY2U8VF9udW10eXBlPihwcm9kdWN0KHNoYXBlKSwgZGF0YUZpcnN0LCAK
ICAgICAgICAgIG5ldmVyRGVsZXRlRGF0YSksCiAgICAgICAgc3RvcmFnZV8oc3RvcmFnZSkKICAg
IHsKICAgICAgICAgOwoKICAgICAgICBsZW5ndGhfID0gc2hhcGU7CiAgICAgICAgc3RyaWRlXyA9
IHN0cmlkZTsKICAgICAgICBjYWxjdWxhdGVaZXJvT2Zmc2V0KCk7CiAgICAgICAgZGF0YV8gKz0g
emVyb09mZnNldF87CiAgICB9CgogICAgIAoKCiAgICBBcnJheShUX251bXR5cGUqIF9fcmVzdHJp
Y3RfXyAgZGF0YUZpcnN0LCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiBzaGFwZSwKICAgICAgICBw
cmVleGlzdGluZ01lbW9yeVBvbGljeSBkZWxldGlvblBvbGljeSwKICAgICAgICBHZW5lcmFsQXJy
YXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPigp
KQogICAgICA6IE1lbW9yeUJsb2NrUmVmZXJlbmNlPFRfbnVtdHlwZT4ocHJvZHVjdChzaGFwZSks
IGRhdGFGaXJzdCwgCiAgICAgICAgICAgIGRlbGV0aW9uUG9saWN5KSwKICAgICAgICBzdG9yYWdl
XyhzdG9yYWdlKQogICAgewogICAgICAgICA7CgogICAgICAgIGxlbmd0aF8gPSBzaGFwZTsKICAg
ICAgICBjb21wdXRlU3RyaWRlcygpOwogICAgICAgIGRhdGFfICs9IHplcm9PZmZzZXRfOwoKICAg
ICAgICBpZiAoZGVsZXRpb25Qb2xpY3kgPT0gZHVwbGljYXRlRGF0YSkKICAgICAgICAgICAgcmVm
ZXJlbmNlKGNvcHkoKSk7CiAgICB9CgogICAgIAoKCgogICAgQXJyYXkoVF9udW10eXBlKiBfX3Jl
c3RyaWN0X18gIGRhdGFGaXJzdCwgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4gc2hhcGUsCiAgICAg
ICAgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4gc3RyaWRlLAogICAgICAgIHByZWV4aXN0aW5nTWVt
b3J5UG9saWN5IGRlbGV0aW9uUG9saWN5LAogICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9y
YW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgIDogTWVt
b3J5QmxvY2tSZWZlcmVuY2U8VF9udW10eXBlPihwcm9kdWN0KHNoYXBlKSwgZGF0YUZpcnN0LCAK
ICAgICAgICAgIGRlbGV0aW9uUG9saWN5KSwKICAgICAgICBzdG9yYWdlXyhzdG9yYWdlKQogICAg
ewogICAgICAgICA7CgogICAgICAgIGxlbmd0aF8gPSBzaGFwZTsKICAgICAgICBzdHJpZGVfID0g
c3RyaWRlOwogICAgICAgIGNhbGN1bGF0ZVplcm9PZmZzZXQoKTsKICAgICAgICBkYXRhXyArPSB6
ZXJvT2Zmc2V0XzsKCiAgICAgICAgaWYgKGRlbGV0aW9uUG9saWN5ID09IGR1cGxpY2F0ZURhdGEp
CiAgICAgICAgICAgIHJlZmVyZW5jZShjb3B5KCkpOwogICAgfQoKICAgICAKCgoKICAgIEFycmF5
KGNvbnN0IFRpbnlWZWN0b3I8aW50LCBOX3Jhbms+JiBleHRlbnQsIAogICAgICAgIEdlbmVyYWxB
cnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+
KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgIGxlbmd0aF8gPSBl
eHRlbnQ7CiAgICAgICAgc2V0dXBTdG9yYWdlKE5fcmFuayAtIDEpOwogICAgfQoKICAgICAKCgoK
CiAgICBBcnJheShjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgbGJvdW5kcywKICAgICAg
ICBjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgZXh0ZW50LAogICAgICAgIGNvbnN0IEdl
bmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiYgc3RvcmFnZSAKICAgICAgICAgICA9IEdlbmVyYWxB
cnJheVN0b3JhZ2U8Tl9yYW5rPigpKTsKCiAgICAgCgoKCgogICAgQXJyYXkoUmFuZ2UgcjAsIAog
ICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5
U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAg
ICAgICA7CgogICAgICAgIGxlbmd0aF9bMF0gPSByMC5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdl
Xy5zZXRCYXNlKDAsIHIwLmZpcnN0KCkpOwogICAgICAgIHNldHVwU3RvcmFnZSgwKTsKICAgIH0K
CiAgICBBcnJheShSYW5nZSByMCwgUmFuZ2UgcjEsCiAgICAgICAgR2VuZXJhbEFycmF5U3RvcmFn
ZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4oKSkKICAgICAg
ICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAgICAgICAgIDsKCgogICAgICAgIGxlbmd0aF9b
MF0gPSByMC5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDAsIHIwLmZpcnN0KCkp
OwogICAgICAgIGxlbmd0aF9bMV0gPSByMS5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRC
YXNlKDEsIHIxLmZpcnN0KCkpOwoKICAgICAgICBzZXR1cFN0b3JhZ2UoMSk7CiAgICB9CgogICAg
QXJyYXkoUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwKICAgICAgICBHZW5lcmFsQXJyYXlT
dG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPigpKQog
ICAgICAgIDogc3RvcmFnZV8oc3RvcmFnZSkKICAgIHsKICAgICAgICAgOwoKCiAgICAgICAgbGVu
Z3RoX1swXSA9IHIwLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMCwgcjAuZmly
c3QoKSk7CiAgICAgICAgbGVuZ3RoX1sxXSA9IHIxLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2Vf
LnNldEJhc2UoMSwgcjEuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1syXSA9IHIyLmxlbmd0aCgp
OwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMiwgcjIuZmlyc3QoKSk7CgogICAgICAgIHNldHVw
U3RvcmFnZSgyKTsKICAgIH0KCiAgICBBcnJheShSYW5nZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIy
LCBSYW5nZSByMywKICAgICAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9
IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPigpKQogICAgICAgIDogc3RvcmFnZV8oc3RvcmFn
ZSkKICAgIHsKICAgICAgICAgOwoKCgogICAgICAgIGxlbmd0aF9bMF0gPSByMC5sZW5ndGgoKTsK
ICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDAsIHIwLmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9b
MV0gPSByMS5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDEsIHIxLmZpcnN0KCkp
OwogICAgICAgIGxlbmd0aF9bMl0gPSByMi5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRC
YXNlKDIsIHIyLmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9bM10gPSByMy5sZW5ndGgoKTsKICAg
ICAgICBzdG9yYWdlXy5zZXRCYXNlKDMsIHIzLmZpcnN0KCkpOwoKICAgICAgICBzZXR1cFN0b3Jh
Z2UoMyk7CiAgICB9CgogICAgQXJyYXkoUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwgUmFu
Z2UgcjMsIFJhbmdlIHI0LAogICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9y
YWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhz
dG9yYWdlKQogICAgewogICAgICAgICA7CgoKCiAgICAgICAgbGVuZ3RoX1swXSA9IHIwLmxlbmd0
aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMCwgcjAuZmlyc3QoKSk7CiAgICAgICAgbGVu
Z3RoX1sxXSA9IHIxLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMSwgcjEuZmly
c3QoKSk7CiAgICAgICAgbGVuZ3RoX1syXSA9IHIyLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2Vf
LnNldEJhc2UoMiwgcjIuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1szXSA9IHIzLmxlbmd0aCgp
OwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMywgcjMuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3Ro
X1s0XSA9IHI0Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNCwgcjQuZmlyc3Qo
KSk7CgogICAgICAgIHNldHVwU3RvcmFnZSg0KTsKICAgIH0KCiAgICBBcnJheShSYW5nZSByMCwg
UmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsIFJhbmdlIHI1LAogICAgICAg
IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFn
ZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgICA7
CgoKCgogICAgICAgIGxlbmd0aF9bMF0gPSByMC5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5z
ZXRCYXNlKDAsIHIwLmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9bMV0gPSByMS5sZW5ndGgoKTsK
ICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDEsIHIxLmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9b
Ml0gPSByMi5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDIsIHIyLmZpcnN0KCkp
OwogICAgICAgIGxlbmd0aF9bM10gPSByMy5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRC
YXNlKDMsIHIzLmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9bNF0gPSByNC5sZW5ndGgoKTsKICAg
ICAgICBzdG9yYWdlXy5zZXRCYXNlKDQsIHI0LmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9bNV0g
PSByNS5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDUsIHI1LmZpcnN0KCkpOwoK
ICAgICAgICBzZXR1cFN0b3JhZ2UoNSk7CiAgICB9CgogICAgQXJyYXkoUmFuZ2UgcjAsIFJhbmdl
IHIxLCBSYW5nZSByMiwgUmFuZ2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSwKICAgICAgICBSYW5n
ZSByNiwKICAgICAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVy
YWxBcnJheVN0b3JhZ2U8Tl9yYW5rPigpKQogICAgICAgIDogc3RvcmFnZV8oc3RvcmFnZSkKICAg
IHsKICAgICAgICAgOwoKCgoKICAgICAgICBsZW5ndGhfWzBdID0gcjAubGVuZ3RoKCk7CiAgICAg
ICAgc3RvcmFnZV8uc2V0QmFzZSgwLCByMC5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzFdID0g
cjEubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgxLCByMS5maXJzdCgpKTsKICAg
ICAgICBsZW5ndGhfWzJdID0gcjIubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgy
LCByMi5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzNdID0gcjMubGVuZ3RoKCk7CiAgICAgICAg
c3RvcmFnZV8uc2V0QmFzZSgzLCByMy5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzRdID0gcjQu
bGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg0LCByNC5maXJzdCgpKTsKICAgICAg
ICBsZW5ndGhfWzVdID0gcjUubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg1LCBy
NS5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzZdID0gcjYubGVuZ3RoKCk7CiAgICAgICAgc3Rv
cmFnZV8uc2V0QmFzZSg2LCByNi5maXJzdCgpKTsKCiAgICAgICAgc2V0dXBTdG9yYWdlKDYpOwog
ICAgfQoKICAgIEFycmF5KFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBS
YW5nZSByNCwgUmFuZ2UgcjUsCiAgICAgICAgUmFuZ2UgcjYsIFJhbmdlIHI3LAogICAgICAgIEdl
bmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxO
X3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgICA7CgoK
CgoKICAgICAgICBsZW5ndGhfWzBdID0gcjAubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0
QmFzZSgwLCByMC5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzFdID0gcjEubGVuZ3RoKCk7CiAg
ICAgICAgc3RvcmFnZV8uc2V0QmFzZSgxLCByMS5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzJd
ID0gcjIubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgyLCByMi5maXJzdCgpKTsK
ICAgICAgICBsZW5ndGhfWzNdID0gcjMubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFz
ZSgzLCByMy5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzRdID0gcjQubGVuZ3RoKCk7CiAgICAg
ICAgc3RvcmFnZV8uc2V0QmFzZSg0LCByNC5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzVdID0g
cjUubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg1LCByNS5maXJzdCgpKTsKICAg
ICAgICBsZW5ndGhfWzZdID0gcjYubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg2
LCByNi5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzddID0gcjcubGVuZ3RoKCk7CiAgICAgICAg
c3RvcmFnZV8uc2V0QmFzZSg3LCByNy5maXJzdCgpKTsKCiAgICAgICAgc2V0dXBTdG9yYWdlKDcp
OwogICAgfQoKICAgIEFycmF5KFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIz
LCBSYW5nZSByNCwgUmFuZ2UgcjUsCiAgICAgICAgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5nZSBy
OCwKICAgICAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVyYWxB
cnJheVN0b3JhZ2U8Tl9yYW5rPigpKQogICAgICAgIDogc3RvcmFnZV8oc3RvcmFnZSkKICAgIHsK
ICAgICAgICAgOwoKCgoKCiAgICAgICAgbGVuZ3RoX1swXSA9IHIwLmxlbmd0aCgpOwogICAgICAg
IHN0b3JhZ2VfLnNldEJhc2UoMCwgcjAuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1sxXSA9IHIx
Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMSwgcjEuZmlyc3QoKSk7CiAgICAg
ICAgbGVuZ3RoX1syXSA9IHIyLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMiwg
cjIuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1szXSA9IHIzLmxlbmd0aCgpOwogICAgICAgIHN0
b3JhZ2VfLnNldEJhc2UoMywgcjMuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s0XSA9IHI0Lmxl
bmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNCwgcjQuZmlyc3QoKSk7CiAgICAgICAg
bGVuZ3RoX1s1XSA9IHI1Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNSwgcjUu
Zmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s2XSA9IHI2Lmxlbmd0aCgpOwogICAgICAgIHN0b3Jh
Z2VfLnNldEJhc2UoNiwgcjYuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s3XSA9IHI3Lmxlbmd0
aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNywgcjcuZmlyc3QoKSk7CiAgICAgICAgbGVu
Z3RoX1s4XSA9IHI4Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoOCwgcjguZmly
c3QoKSk7CgogICAgICAgIHNldHVwU3RvcmFnZSg4KTsKICAgIH0KCiAgICBBcnJheShSYW5nZSBy
MCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsIFJhbmdlIHI1LAogICAg
ICAgIFJhbmdlIHI2LCBSYW5nZSByNywgUmFuZ2UgcjgsIFJhbmdlIHI5LAogICAgICAgIEdlbmVy
YWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jh
bms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgICA7CgoKCgoK
CiAgICAgICAgbGVuZ3RoX1swXSA9IHIwLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJh
c2UoMCwgcjAuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1sxXSA9IHIxLmxlbmd0aCgpOwogICAg
ICAgIHN0b3JhZ2VfLnNldEJhc2UoMSwgcjEuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1syXSA9
IHIyLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMiwgcjIuZmlyc3QoKSk7CiAg
ICAgICAgbGVuZ3RoX1szXSA9IHIzLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2Uo
MywgcjMuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s0XSA9IHI0Lmxlbmd0aCgpOwogICAgICAg
IHN0b3JhZ2VfLnNldEJhc2UoNCwgcjQuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s1XSA9IHI1
Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNSwgcjUuZmlyc3QoKSk7CiAgICAg
ICAgbGVuZ3RoX1s2XSA9IHI2Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNiwg
cjYuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s3XSA9IHI3Lmxlbmd0aCgpOwogICAgICAgIHN0
b3JhZ2VfLnNldEJhc2UoNywgcjcuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s4XSA9IHI4Lmxl
bmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoOCwgcjguZmlyc3QoKSk7CiAgICAgICAg
bGVuZ3RoX1s5XSA9IHI5Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoOSwgcjku
Zmlyc3QoKSk7CgogICAgICAgIHNldHVwU3RvcmFnZSg5KTsKICAgIH0KCiAgICBBcnJheShSYW5n
ZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsIFJhbmdlIHI1LAog
ICAgICAgIFJhbmdlIHI2LCBSYW5nZSByNywgUmFuZ2UgcjgsIFJhbmdlIHI5LCBSYW5nZSByMTAs
CiAgICAgICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJy
YXlTdG9yYWdlPE5fcmFuaz4oKSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAg
ICAgICAgIDsKCgoKCgoKICAgICAgICBsZW5ndGhfWzBdID0gcjAubGVuZ3RoKCk7CiAgICAgICAg
c3RvcmFnZV8uc2V0QmFzZSgwLCByMC5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzFdID0gcjEu
bGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgxLCByMS5maXJzdCgpKTsKICAgICAg
ICBsZW5ndGhfWzJdID0gcjIubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgyLCBy
Mi5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzNdID0gcjMubGVuZ3RoKCk7CiAgICAgICAgc3Rv
cmFnZV8uc2V0QmFzZSgzLCByMy5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzRdID0gcjQubGVu
Z3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg0LCByNC5maXJzdCgpKTsKICAgICAgICBs
ZW5ndGhfWzVdID0gcjUubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg1LCByNS5m
aXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzZdID0gcjYubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFn
ZV8uc2V0QmFzZSg2LCByNi5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzddID0gcjcubGVuZ3Ro
KCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg3LCByNy5maXJzdCgpKTsKICAgICAgICBsZW5n
dGhfWzhdID0gcjgubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg4LCByOC5maXJz
dCgpKTsKICAgICAgICBsZW5ndGhfWzldID0gcjkubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8u
c2V0QmFzZSg5LCByOS5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzEwXSA9IHIxMC5sZW5ndGgo
KTsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDEwLCByMTAuZmlyc3QoKSk7CgogICAgICAgIHNl
dHVwU3RvcmFnZSgxMCk7CiAgICB9CgogICAgIAoKCiAgICBBcnJheShjb25zdCBBcnJheTxUX251
bXR5cGUsIE5fcmFuaz4mIGFycmF5KQogICAgewogICAgICAgICAKICAgICAgICByZWZlcmVuY2Uo
Y29uc3RfY2FzdDxUX2FycmF5Jj4oYXJyYXkpKTsKICAgIH0KCiAgICAgCgoKCiAgICBBcnJheShj
b25zdCBUaW55VmVjdG9yPGludCxOX3JhbmstMT4mIHNoYXBlLAogICAgICAgIGludCBsYXN0RXh0
ZW50LCBjb25zdCBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4mIHN0b3JhZ2UpOwogICAgIAog
ICAgIAoKICAgICAKCgoKCgoKCgogICAgQXJyYXkoQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBh
cnJheSwgUmFuZ2UgcjApCiAgICB7CiAgICAgICAgY29uc3RydWN0U3ViYXJyYXkoYXJyYXksIHIw
KTsKICAgIH0KCiAgICBBcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBSYW5n
ZSByMCwgUmFuZ2UgcjEpCiAgICB7CiAgICAgICAgY29uc3RydWN0U3ViYXJyYXkoYXJyYXksIHIw
LCByMSk7CiAgICB9CgogICAgQXJyYXkoQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwg
UmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMikKICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJh
cnJheShhcnJheSwgcjAsIHIxLCByMik7CiAgICB9CgogICAgQXJyYXkoQXJyYXk8VF9udW10eXBl
LCBOX3Jhbms+JiBhcnJheSwgUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwKICAgICAgICBS
YW5nZSByMykKICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJhcnJheShhcnJheSwgcjAsIHIxLCBy
MiwgcjMpOwogICAgfQoKICAgIEFycmF5KEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXks
IFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsCiAgICAgICAgUmFuZ2UgcjMsIFJhbmdlIHI0
KQogICAgewogICAgICAgIGNvbnN0cnVjdFN1YmFycmF5KGFycmF5LCByMCwgcjEsIHIyLCByMywg
cjQpOwogICAgfQoKICAgIEFycmF5KEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJh
bmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsCiAgICAgICAgUmFuZ2UgcjMsIFJhbmdlIHI0LCBS
YW5nZSByNSkKICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJhcnJheShhcnJheSwgcjAsIHIxLCBy
MiwgcjMsIHI0LCByNSk7CiAgICB9CgogICAgQXJyYXkoQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+
JiBhcnJheSwgUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwKICAgICAgICBSYW5nZSByMywg
UmFuZ2UgcjQsIFJhbmdlIHI1LCBSYW5nZSByNikKICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJh
cnJheShhcnJheSwgcjAsIHIxLCByMiwgcjMsIHI0LCByNSwgcjYpOwogICAgfQoKICAgIEFycmF5
KEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLCBSYW5nZSByMSwgUmFu
Z2UgcjIsCiAgICAgICAgUmFuZ2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsIFJh
bmdlIHI3KQogICAgewogICAgICAgIGNvbnN0cnVjdFN1YmFycmF5KGFycmF5LCByMCwgcjEsIHIy
LCByMywgcjQsIHI1LCByNiwgcjcpOwogICAgfQoKICAgIEFycmF5KEFycmF5PFRfbnVtdHlwZSwg
Tl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsCiAgICAgICAgUmFu
Z2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5nZSByOCkK
ICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJhcnJheShhcnJheSwgcjAsIHIxLCByMiwgcjMsIHI0
LCByNSwgcjYsIHI3LCByOCk7CiAgICB9CgogICAgQXJyYXkoQXJyYXk8VF9udW10eXBlLCBOX3Jh
bms+JiBhcnJheSwgUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwKICAgICAgICBSYW5nZSBy
MywgUmFuZ2UgcjQsIFJhbmdlIHI1LCBSYW5nZSByNiwgUmFuZ2UgcjcsIFJhbmdlIHI4LCBSYW5n
ZSByOSkKICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJhcnJheShhcnJheSwgcjAsIHIxLCByMiwg
cjMsIHI0LCByNSwgcjYsIHI3LCByOCwgcjkpOwogICAgfQoKICAgIEFycmF5KEFycmF5PFRfbnVt
dHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsCiAgICAg
ICAgUmFuZ2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5n
ZSByOCwgUmFuZ2UgcjksCiAgICAgICAgUmFuZ2UgcjEwKQogICAgewogICAgICAgIGNvbnN0cnVj
dFN1YmFycmF5KGFycmF5LCByMCwgcjEsIHIyLCByMywgcjQsIHI1LCByNiwgcjcsIHI4LCByOSwg
cjEwKTsKICAgIH0KCiAgICBBcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCAK
ICAgICAgICBjb25zdCBSZWN0RG9tYWluPE5fcmFuaz4mIHN1YmRvbWFpbikKICAgIHsKICAgICAg
ICBjb25zdHJ1Y3RTdWJhcnJheShhcnJheSwgc3ViZG9tYWluKTsKICAgIH0KCiAgICAgCgoKCgog
ICAgdGVtcGxhdGU8aW50IE5fcmFuazIsIGNsYXNzIFIwLCBjbGFzcyBSMSwgY2xhc3MgUjIsIGNs
YXNzIFIzLCBjbGFzcyBSNCwKICAgICAgICBjbGFzcyBSNSwgY2xhc3MgUjYsIGNsYXNzIFI3LCBj
bGFzcyBSOCwgY2xhc3MgUjksIGNsYXNzIFIxMD4KICAgIEFycmF5KEFycmF5PFRfbnVtdHlwZSxO
X3JhbmsyPiYgYXJyYXksIFIwIHIwLCBSMSByMSwgUjIgcjIsCiAgICAgICAgUjMgcjMsIFI0IHI0
LCBSNSByNSwgUjYgcjYsIFI3IHI3LCBSOCByOCwgUjkgcjksIFIxMCByMTApCiAgICB7CiAgICAg
ICAgY29uc3RydWN0U2xpY2UoYXJyYXksIHIwLCByMSwgcjIsIHIzLCByNCwgcjUsIHI2LCByNywg
cjgsIHI5LCByMTApOwogICAgfQoKICAgICAKICAgICAKICAgICAKCiAgICBjb25zdCBUaW55VmVj
dG9yPGludCwgTl9yYW5rPiYgICAgYmFzZSgpIGNvbnN0CiAgICB7IHJldHVybiBzdG9yYWdlXy5i
YXNlKCk7IH0KCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZShpbnQg
cmFuaykgY29uc3QKICAgIHsgcmV0dXJuIHN0b3JhZ2VfLmJhc2UocmFuayk7IH0KCiAgICBpdGVy
YXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4oKSAKICAgIHsgcmV0dXJuIGl0ZXJh
dG9yKCp0aGlzKTsgfQoKICAgIGNvbnN0X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICBiZWdp
bigpIGNvbnN0CiAgICB7IHJldHVybiBjb25zdF9pdGVyYXRvcigqdGhpcyk7IH0KCiAgICBUX2l0
ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5GYXN0KCkgY29uc3QKICAgIHsgcmV0
dXJuIFRfaXRlcmF0b3IoKnRoaXMpOyB9CgogICAgIAogICAgdGVtcGxhdGU8Y2xhc3MgVF9udW10
eXBlMj4KICAgIEFycmF5PFRfbnVtdHlwZTIsTl9yYW5rPiAgICAgICAgICBjaG9wQ29tcG9uZW50
KFRfbnVtdHlwZTIgYSwgaW50IGNvbXBOdW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBudW1Db21wb25lbnRzKSBjb25zdAogICAgeyByZXR1cm4gZXh0cmFj
dENvbXBvbmVudChhLCBjb21wTnVtLCBudW1Db21wb25lbnRzKTsgfQoKICAgIGludCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb2xzKCkgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF9b
MV07IH0KCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucygpIGNv
bnN0CiAgICB7IHJldHVybiBsZW5ndGhfWzFdOyB9CgogICAgVF9hcnJheSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvcHkoKSBjb25zdDsKCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAg
CgogICAgY29uc3QgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18gICAgICBkYXRhKCkgY29uc3QKICAg
IHsgcmV0dXJuIGRhdGFfICsgZG90KHN0b3JhZ2VfLmJhc2UoKSwgc3RyaWRlXyk7IH0KCiAgICBU
X251bXR5cGUqIF9fcmVzdHJpY3RfXyAgICAgICAgICAgIGRhdGEoKSAKICAgIHsgcmV0dXJuIGRh
dGFfICsgZG90KHN0b3JhZ2VfLmJhc2UoKSwgc3RyaWRlXyk7IH0KCiAgICAgCiAgICAgCiAgICAK
ICAgIGNvbnN0IFRfbnVtdHlwZSogX19yZXN0cmljdF9fICAgICAgZGF0YVplcm8oKSBjb25zdAog
ICAgeyByZXR1cm4gZGF0YV87IH0KCiAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgICAgICAg
ICAgIGRhdGFaZXJvKCkKICAgIHsgcmV0dXJuIGRhdGFfOyB9CgogICAgIAogICAgIAogICAgCiAg
ICBjb25zdCBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgICAgIGRhdGFGaXJzdCgpIGNvbnN0CiAg
ICB7CiAgICAgICAgcmV0dXJuIGRhdGFfICsgZG90KHN0b3JhZ2VfLmJhc2UoKSAKICAgICAgICAg
ICAgKyAoMSAtIHN0b3JhZ2VfLmFzY2VuZGluZ0ZsYWcoKSkgKiAobGVuZ3RoXyAtIDEpLCBzdHJp
ZGVfKTsKICAgIH0KCiAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgICAgICAgICAgIGRhdGFG
aXJzdCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGRhdGFfICsgZG90KHN0b3JhZ2VfLmJhc2UoKQog
ICAgICAgICAgICArICgxIC0gc3RvcmFnZV8uYXNjZW5kaW5nRmxhZygpKSAqIChsZW5ndGhfIC0g
MSksIHN0cmlkZV8pOwogICAgfQoKICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXB0aCgpIGNvbnN0CiAgICB7IHJldHVybiBsZW5ndGhfWzJdOyB9CgogICAgaW50ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbnMoKSBjb25zdAogICAgeyByZXR1cm4g
Tl9yYW5rOyB9CgogICAgUmVjdERvbWFpbjxOX3Jhbms+ICAgICAgICAgICAgICAgIGRvbWFpbigp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFJlY3REb21haW48Tl9yYW5rPihsYm91bmQoKSwg
dWJvdW5kKCkpOwogICAgfQoKICAgIHZvaWQgZHVtcFN0cnVjdHVyZUluZm9ybWF0aW9uKG9zdHJl
YW0mIG9zID0gY291dCkgY29uc3Q7CgogICAgaXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBfYnpfZW5kVGFn
KCkpOwogICAgfQoKICAgIGNvbnN0X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICBlbmQoKSBj
b25zdAogICAgewogICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcigqdGhpcywgX2J6X2VuZFRh
ZygpKTsKICAgIH0KCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW50
KGludCByYW5rKSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoX1tyYW5rXTsgfQoKICAgIGNvbnN0
IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mICAgICBleHRlbnQoKSBjb25zdAogICAgeyByZXR1cm4g
bGVuZ3RoXzsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTI+CiAgICBBcnJheTxUX251
bXR5cGUyLE5fcmFuaz4gICAgICAgICAgZXh0cmFjdENvbXBvbmVudChUX251bXR5cGUyLCBpbnQg
Y29tcE51bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51
bUNvbXBvbmVudHMpIGNvbnN0OwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmVlKCkgCiAgICB7CiAgICAgICAgY2hhbmdlVG9OdWxsQmxvY2soKTsKICAgICAgICBsZW5n
dGhfID0gMDsKICAgIH0KIAogICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWFq
b3JSYW5rKGludCByYW5rKSBjb25zdAogICAgeyByZXR1cm4gc3RvcmFnZV8ub3JkZXJpbmcocmFu
aykgPT0gMDsgfQoKICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01pbm9yUmFu
ayhpbnQgcmFuaykgY29uc3QKICAgIHsgcmV0dXJuIHN0b3JhZ2VfLm9yZGVyaW5nKHJhbmspICE9
IDA7IH0KCiAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSYW5rU3RvcmVkQXNj
ZW5kaW5nKGludCByYW5rKSBjb25zdAogICAgeyByZXR1cm4gc3RvcmFnZV8uaXNSYW5rU3RvcmVk
QXNjZW5kaW5nKHJhbmspOyB9CgogICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz
U3RvcmFnZUNvbnRpZ3VvdXMoKSBjb25zdDsKCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGJvdW5kKGludCByYW5rKSBjb25zdAogICAgeyByZXR1cm4gYmFzZShyYW5rKTsg
fQoKICAgIFRpbnlWZWN0b3I8aW50LE5fcmFuaz4gICAgICAgICAgICBsYm91bmQoKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiBiYXNlKCk7CiAgICB9CgogICAgaW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxlbmd0aChpbnQgcmFuaykgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0
aF9bcmFua107IH0KCiAgICBjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgICAgbGVuZ3Ro
KCkgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF87IH0KCiAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFrZVVuaXF1ZSgpOwoKICAgIGludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudW1FbGVtZW50cygpIGNvbnN0CiAgICB7IHJldHVybiBwcm9kdWN0KGxlbmd0
aF8pOyB9CgogICAgIAogICAgIAoKICAgICAKICAgICAKICAgICAKICAgICAKICAgICAKICAgIGlu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmluZyhpbnQgc3RvcmFnZVJhbmtJ
bmRleCkgY29uc3QKICAgIHsgcmV0dXJuIHN0b3JhZ2VfLm9yZGVyaW5nKHN0b3JhZ2VSYW5rSW5k
ZXgpOyB9CgogICAgY29uc3QgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4mICAgIG9yZGVyaW5nKCkg
Y29uc3QKICAgIHsgcmV0dXJuIHN0b3JhZ2VfLm9yZGVyaW5nKCk7IH0KCiAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlU2VsZihpbnQgcjAsIGludCByMSwgaW50
IHIyPTAsIAogICAgICAgIGludCByMz0wLCBpbnQgcjQ9MCwgaW50IHI1PTAsIGludCByNj0wLCBp
bnQgcjc9MCwgaW50IHI4PTAsIGludCAKICAgICAgICByOT0wLCBpbnQgcjEwPTApOwogICAgVF9h
cnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZShpbnQgcjAsIGludCByMSwg
aW50IHIyPTAsCiAgICAgICAgaW50IHIzPTAsIGludCByND0wLCBpbnQgcjU9MCwgaW50IHI2PTAs
IGludCByNz0wLCBpbnQgcjg9MCwgaW50CiAgICAgICAgcjk9MCwgaW50IHIxMD0wKTsKCiAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlU2VsZihjb25zdCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW55VmVjdG9yPGludCwgTl9y
YW5rPiYgKTsKICAgIFRfYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2Uo
Y29uc3QgCgkJCQkJIFRpbnlWZWN0b3I8aW50LCBOX3Jhbms+JiApOwoKICAgIGludCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByYW5rKCkgY29uc3QKICAgIHsgcmV0dXJuIE5fcmFuazsg
fQoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UoY29uc3Qg
VF9hcnJheSYpOwoKICAgICAKICAgIFRfYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWluZGV4KGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mKTsKICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWluZGV4U2VsZihjb25zdCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiYpOwoK
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemUoaW50IGV4dGVudCk7
CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplKGludCBleHRlbnQx
LCBpbnQgZXh0ZW50Mik7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
aXplKGludCBleHRlbnQxLCBpbnQgZXh0ZW50MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBleHRlbnQzKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNpemUoaW50IGV4dGVudDEsIGludCBleHRlbnQyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDMsIGludCBleHRlbnQ0KTsKICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemUoaW50IGV4dGVudDEsIGludCBl
eHRlbnQyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVu
dDMsIGludCBleHRlbnQ0LCBpbnQgZXh0ZW50NSk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzaXplKGludCBleHRlbnQxLCBpbnQgZXh0ZW50MiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQzLCBpbnQgZXh0ZW50NCwgaW50
IGV4dGVudDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0
ZW50Nik7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplKGludCBl
eHRlbnQxLCBpbnQgZXh0ZW50MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBleHRlbnQzLCBpbnQgZXh0ZW50NCwgaW50IGV4dGVudDUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcpOwogICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShpbnQgZXh0ZW50MSwgaW50
IGV4dGVudDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0
ZW50MywgaW50IGV4dGVudDQsIGludCBleHRlbnQ1LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGV4dGVudDYsIGludCBleHRlbnQ3LCBpbnQgZXh0ZW50OCk7CiAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplKGludCBleHRlbnQxLCBp
bnQgZXh0ZW50MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBl
eHRlbnQzLCBpbnQgZXh0ZW50NCwgaW50IGV4dGVudDUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcsIGludCBleHRlbnQ4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDkpOwogICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShpbnQgZXh0ZW50MSwgaW50
IGV4dGVudDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0
ZW50MywgaW50IGV4dGVudDQsIGludCBleHRlbnQ1LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGV4dGVudDYsIGludCBleHRlbnQ3LCBpbnQgZXh0ZW50OCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQ5LCBpbnQgZXh0
ZW50MTApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShpbnQg
ZXh0ZW50MSwgaW50IGV4dGVudDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZXh0ZW50MywgaW50IGV4dGVudDQsIGludCBleHRlbnQ1LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDYsIGludCBleHRlbnQ3LCBpbnQg
ZXh0ZW50OCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRl
bnQ5LCBpbnQgZXh0ZW50MTAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGV4dGVudDExKTsKCgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc2l6ZShSYW5nZSByMSk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzaXplKFJhbmdlIHIxLCBSYW5nZSByMik7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzaXplKFJhbmdlIHIxLCBSYW5nZSByMiwgUmFuZ2UgcjMpOwogICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShSYW5nZSByMSwgUmFuZ2UgcjIsIFJh
bmdlIHIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UgcjQp
OwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShSYW5nZSByMSwg
UmFuZ2UgcjIsIFJhbmdlIHIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmFuZ2UgcjQsIFJhbmdlIHI1KTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNpemUoUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYpOwog
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShSYW5nZSByMSwgUmFu
Z2UgcjIsIFJhbmdlIHIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmFuZ2UgcjQsIFJhbmdlIHI1LCBSYW5nZSByNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJhbmdlIHI3KTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNpemUoUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSByNywgUmFuZ2Ugcjgp
OwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShSYW5nZSByMSwg
UmFuZ2UgcjIsIFJhbmdlIHIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmFuZ2UgcjQsIFJhbmdlIHI1LCBSYW5nZSByNiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJhbmdlIHI3LCBSYW5nZSByOCwgUmFuZ2UgcjkpOwogICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShSYW5nZSByMSwgUmFuZ2UgcjIsIFJh
bmdlIHIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UgcjQs
IFJhbmdlIHI1LCBSYW5nZSByNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJhbmdlIHI3LCBSYW5nZSByOCwgUmFuZ2UgcjksIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmFuZ2UgcjEwKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXNpemUoUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2Ug
cjYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSByNywgUmFu
Z2UgcjgsIFJhbmdlIHI5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJhbmdlIHIxMCwgUmFuZ2UgcjExKTsKCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzaXplKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mKTsKIAoKICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVBbmRQcmVzZXJ2ZShpbnQgZXh0ZW50
KTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVBbmRQcmVzZXJ2
ZShpbnQgZXh0ZW50MSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZXh0ZW50Mik7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXpl
QW5kUHJlc2VydmUoaW50IGV4dGVudDEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzKTsKICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNpemVBbmRQcmVzZXJ2ZShpbnQgZXh0ZW50MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQyLCBpbnQgZXh0ZW50Mywg
aW50IGV4dGVudDQpOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6
ZUFuZFByZXNlcnZlKGludCBleHRlbnQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQgZXh0ZW50NCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQ1KTsKICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVBbmRQcmVzZXJ2ZShpbnQgZXh0ZW50MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQyLCBpbnQg
ZXh0ZW50MywgaW50IGV4dGVudDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZXh0ZW50NSwgaW50IGV4dGVudDYpOwogICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc2l6ZUFuZFByZXNlcnZlKGludCBleHRlbnQxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQg
ZXh0ZW50NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRl
bnQ1LCBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcpOwogICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc2l6ZUFuZFByZXNlcnZlKGludCBleHRlbnQxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQg
ZXh0ZW50NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRl
bnQ1LCBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgZXh0ZW50OCk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzaXplQW5kUHJlc2VydmUoaW50IGV4dGVudDEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50MiwgaW50IGV4dGVudDMsIGludCBleHRl
bnQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDUs
IGludCBleHRlbnQ2LCBpbnQgZXh0ZW50NywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBleHRlbnQ4LCBpbnQgZXh0ZW50OSk7CiAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzaXplQW5kUHJlc2VydmUoaW50IGV4dGVudDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50MiwgaW50IGV4dGVudDMs
IGludCBleHRlbnQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGV4dGVudDUsIGludCBleHRlbnQ2LCBpbnQgZXh0ZW50NywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQ4LCBpbnQgZXh0ZW50OSwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50MTApOwogICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZUFuZFByZXNlcnZlKGludCBleHRlbnQxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDIsIGludCBl
eHRlbnQzLCBpbnQgZXh0ZW50NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBleHRlbnQ1LCBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50OCwgaW50IGV4dGVudDksIGludCBl
eHRlbnQxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRl
bnQxMSk7CgogICAgIAogICAgIAogICAgIAoKICAgIFRfYXJyYXkgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXZlcnNlKGludCByYW5rKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXZlcnNlU2VsZihpbnQgcmFuayk7CgogICAgaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJvd3MoKSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoX1swXTsgfQoKICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZShpbnQgcmFuaywgUmFuZ2Ug
cik7CgogICAgY29uc3QgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4mICAgIHNoYXBlKCkgY29uc3QK
ICAgIHsgcmV0dXJuIGxlbmd0aF87IH0KCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZSgpIGNvbnN0CiAgICB7IHJldHVybiBudW1FbGVtZW50cygpOyB9CgogICAgY29u
c3QgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4mICAgIHN0cmlkZSgpIGNvbnN0CiAgICB7IHJldHVy
biBzdHJpZGVfOyB9CgogICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlk
ZShpbnQgcmFuaykgY29uc3QKICAgIHsgcmV0dXJuIHN0cmlkZV9bcmFua107IH0KCiAgICBpbnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWJvdW5kKGludCByYW5rKSBjb25zdAogICAg
eyByZXR1cm4gYmFzZShyYW5rKSArIGxlbmd0aF8ocmFuaykgLSAxOyB9CgogICAgVGlueVZlY3Rv
cjxpbnQsIE5fcmFuaz4gICAgICAgICAgIHVib3VuZCgpIGNvbnN0CiAgICB7IAogICAgICAgIFRp
bnlWZWN0b3I8aW50LCBOX3Jhbms+IHViOwogICAgICAgIHViID0gYmFzZSgpICsgZXh0ZW50KCkg
LSAxOwogICAgICAgIHJldHVybiB1YjsKICAgIH0KCiAgICBpbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgemVyb09mZnNldCgpIGNvbnN0CiAgICB7IHJldHVybiB6ZXJvT2Zmc2V0Xzsg
fQoKICAgICAKICAgICAKICAgICAKCiAgICBib29sICBpc0luUmFuZ2VGb3JEaW0oaW50IGksIGlu
dCBkKSBjb25zdAogICAgewogICAgICAgIHJldHVybiB1bnNpZ25lZChpIC0gYmFzZShkKSkgPCBs
ZW5ndGhfW2RdOwogICAgfQoKICAgIGJvb2wgIGlzSW5SYW5nZShpbnQgaTApIGNvbnN0CiAgICB7
CiAgICAgICAgcmV0dXJuIHVuc2lnbmVkKGkwIC0gYmFzZSgwKSkgPCBsZW5ndGhfWzBdOwogICAg
fQoKICAgIGJvb2wgIGlzSW5SYW5nZShpbnQgaTAsIGludCBpMSkgY29uc3QKICAgIHsKICAgICAg
ICByZXR1cm4gdW5zaWduZWQoaTAgLSBiYXNlKDApKSA8IGxlbmd0aF9bMF0KICAgICAgICAgICAg
JiYgdW5zaWduZWQoaTEgLSBiYXNlKDEpKSA8IGxlbmd0aF9bMV07CiAgICB9CgogICAgYm9vbCAg
aXNJblJhbmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0
dXJuIHVuc2lnbmVkKGkwIC0gYmFzZSgwKSkgPCBsZW5ndGhfWzBdCiAgICAgICAgICAgICYmIHVu
c2lnbmVkKGkxIC0gYmFzZSgxKSkgPCBsZW5ndGhfWzFdCiAgICAgICAgICAgICYmIHVuc2lnbmVk
KGkyIC0gYmFzZSgyKSkgPCBsZW5ndGhfWzJdOwogICAgfQoKICAgIGJvb2wgIGlzSW5SYW5nZShp
bnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IHVuc2lnbmVkKGkwIC0gYmFzZSgwKSkgPCBsZW5ndGhfWzBdCiAgICAgICAgICAgICYmIHVuc2ln
bmVkKGkxIC0gYmFzZSgxKSkgPCBsZW5ndGhfWzFdCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGky
IC0gYmFzZSgyKSkgPCBsZW5ndGhfWzJdCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGkzIC0gYmFz
ZSgzKSkgPCBsZW5ndGhfWzNdOwogICAgfQoKICAgIGJvb2wgIGlzSW5SYW5nZShpbnQgaTAsIGlu
dCBpMSwgaW50IGkyLCBpbnQgaTMsIGludCBpNCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4g
dW5zaWduZWQoaTAgLSBiYXNlKDApKSA8IGxlbmd0aF9bMF0KICAgICAgICAgICAgJiYgdW5zaWdu
ZWQoaTEgLSBiYXNlKDEpKSA8IGxlbmd0aF9bMV0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTIg
LSBiYXNlKDIpKSA8IGxlbmd0aF9bMl0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTMgLSBiYXNl
KDMpKSA8IGxlbmd0aF9bM10KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTQgLSBiYXNlKDQpKSA8
IGxlbmd0aF9bNF07CiAgICB9CgogICAgYm9vbCAgaXNJblJhbmdlKGludCBpMCwgaW50IGkxLCBp
bnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGludCBpNSkgY29uc3QKICAgIHsKICAgICAg
ICByZXR1cm4gdW5zaWduZWQoaTAgLSBiYXNlKDApKSA8IGxlbmd0aF9bMF0KICAgICAgICAgICAg
JiYgdW5zaWduZWQoaTEgLSBiYXNlKDEpKSA8IGxlbmd0aF9bMV0KICAgICAgICAgICAgJiYgdW5z
aWduZWQoaTIgLSBiYXNlKDIpKSA8IGxlbmd0aF9bMl0KICAgICAgICAgICAgJiYgdW5zaWduZWQo
aTMgLSBiYXNlKDMpKSA8IGxlbmd0aF9bM10KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTQgLSBi
YXNlKDQpKSA8IGxlbmd0aF9bNF0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTUgLSBiYXNlKDUp
KSA8IGxlbmd0aF9bNV07CiAgICB9CgogICAgYm9vbCAgaXNJblJhbmdlKGludCBpMCwgaW50IGkx
LCBpbnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGludCBpNSwgaW50IGk2KSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiB1bnNpZ25lZChpMCAtIGJhc2UoMCkpIDwgbGVuZ3RoX1swXQog
ICAgICAgICAgICAmJiB1bnNpZ25lZChpMSAtIGJhc2UoMSkpIDwgbGVuZ3RoX1sxXQogICAgICAg
ICAgICAmJiB1bnNpZ25lZChpMiAtIGJhc2UoMikpIDwgbGVuZ3RoX1syXQogICAgICAgICAgICAm
JiB1bnNpZ25lZChpMyAtIGJhc2UoMykpIDwgbGVuZ3RoX1szXQogICAgICAgICAgICAmJiB1bnNp
Z25lZChpNCAtIGJhc2UoNCkpIDwgbGVuZ3RoX1s0XQogICAgICAgICAgICAmJiB1bnNpZ25lZChp
NSAtIGJhc2UoNSkpIDwgbGVuZ3RoX1s1XQogICAgICAgICAgICAmJiB1bnNpZ25lZChpNiAtIGJh
c2UoNikpIDwgbGVuZ3RoX1s2XTsKICAgIH0KCiAgICBib29sICBpc0luUmFuZ2UoaW50IGkwLCBp
bnQgaTEsIGludCBpMiwgaW50IGkzLCBpbnQgaTQsCiAgICAgICAgaW50IGk1LCBpbnQgaTYsIGlu
dCBpNykgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdW5zaWduZWQoaTAgLSBiYXNlKDApKSA8
IGxlbmd0aF9bMF0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTEgLSBiYXNlKDEpKSA8IGxlbmd0
aF9bMV0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTIgLSBiYXNlKDIpKSA8IGxlbmd0aF9bMl0K
ICAgICAgICAgICAgJiYgdW5zaWduZWQoaTMgLSBiYXNlKDMpKSA8IGxlbmd0aF9bM10KICAgICAg
ICAgICAgJiYgdW5zaWduZWQoaTQgLSBiYXNlKDQpKSA8IGxlbmd0aF9bNF0KICAgICAgICAgICAg
JiYgdW5zaWduZWQoaTUgLSBiYXNlKDUpKSA8IGxlbmd0aF9bNV0KICAgICAgICAgICAgJiYgdW5z
aWduZWQoaTYgLSBiYXNlKDYpKSA8IGxlbmd0aF9bNl0KICAgICAgICAgICAgJiYgdW5zaWduZWQo
aTcgLSBiYXNlKDcpKSA8IGxlbmd0aF9bN107CiAgICB9CgogICAgYm9vbCAgaXNJblJhbmdlKGlu
dCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGludCBpNSwgaW50
IGk2LCBpbnQgaTcsIGludCBpOCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdW5zaWduZWQo
aTAgLSBiYXNlKDApKSA8IGxlbmd0aF9bMF0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTEgLSBi
YXNlKDEpKSA8IGxlbmd0aF9bMV0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTIgLSBiYXNlKDIp
KSA8IGxlbmd0aF9bMl0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTMgLSBiYXNlKDMpKSA8IGxl
bmd0aF9bM10KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTQgLSBiYXNlKDQpKSA8IGxlbmd0aF9b
NF0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTUgLSBiYXNlKDUpKSA8IGxlbmd0aF9bNV0KICAg
ICAgICAgICAgJiYgdW5zaWduZWQoaTYgLSBiYXNlKDYpKSA8IGxlbmd0aF9bNl0KICAgICAgICAg
ICAgJiYgdW5zaWduZWQoaTcgLSBiYXNlKDcpKSA8IGxlbmd0aF9bN10KICAgICAgICAgICAgJiYg
dW5zaWduZWQoaTggLSBiYXNlKDgpKSA8IGxlbmd0aF9bOF07CiAgICB9CgogICAgYm9vbCAgaXNJ
blJhbmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGlu
dCBpNSwgaW50IGk2LCBpbnQgaTcsIGludCBpOCwgaW50IGk5KSBjb25zdAogICAgewogICAgICAg
IHJldHVybiB1bnNpZ25lZChpMCAtIGJhc2UoMCkpIDwgbGVuZ3RoX1swXQogICAgICAgICAgICAm
JiB1bnNpZ25lZChpMSAtIGJhc2UoMSkpIDwgbGVuZ3RoX1sxXQogICAgICAgICAgICAmJiB1bnNp
Z25lZChpMiAtIGJhc2UoMikpIDwgbGVuZ3RoX1syXQogICAgICAgICAgICAmJiB1bnNpZ25lZChp
MyAtIGJhc2UoMykpIDwgbGVuZ3RoX1szXQogICAgICAgICAgICAmJiB1bnNpZ25lZChpNCAtIGJh
c2UoNCkpIDwgbGVuZ3RoX1s0XQogICAgICAgICAgICAmJiB1bnNpZ25lZChpNSAtIGJhc2UoNSkp
IDwgbGVuZ3RoX1s1XQogICAgICAgICAgICAmJiB1bnNpZ25lZChpNiAtIGJhc2UoNikpIDwgbGVu
Z3RoX1s2XQogICAgICAgICAgICAmJiB1bnNpZ25lZChpNyAtIGJhc2UoNykpIDwgbGVuZ3RoX1s3
XQogICAgICAgICAgICAmJiB1bnNpZ25lZChpOCAtIGJhc2UoOCkpIDwgbGVuZ3RoX1s4XQogICAg
ICAgICAgICAmJiB1bnNpZ25lZChpOSAtIGJhc2UoOSkpIDwgbGVuZ3RoX1s5XTsKICAgIH0KCiAg
ICBib29sICBpc0luUmFuZ2UoaW50IGkwLCBpbnQgaTEsIGludCBpMiwgaW50IGkzLCBpbnQgaTQs
CiAgICAgICAgaW50IGk1LCBpbnQgaTYsIGludCBpNywgaW50IGk4LCBpbnQgaTksIGludCBpMTAp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHVuc2lnbmVkKGkwIC0gYmFzZSgwKSkgPCBsZW5n
dGhfWzBdCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGkxIC0gYmFzZSgxKSkgPCBsZW5ndGhfWzFd
CiAgICAgICAgICAgICYmIHVuc2lnbmVkKGkyIC0gYmFzZSgyKSkgPCBsZW5ndGhfWzJdCiAgICAg
ICAgICAgICYmIHVuc2lnbmVkKGkzIC0gYmFzZSgzKSkgPCBsZW5ndGhfWzNdCiAgICAgICAgICAg
ICYmIHVuc2lnbmVkKGk0IC0gYmFzZSg0KSkgPCBsZW5ndGhfWzRdCiAgICAgICAgICAgICYmIHVu
c2lnbmVkKGk1IC0gYmFzZSg1KSkgPCBsZW5ndGhfWzVdCiAgICAgICAgICAgICYmIHVuc2lnbmVk
KGk2IC0gYmFzZSg2KSkgPCBsZW5ndGhfWzZdCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGk3IC0g
YmFzZSg3KSkgPCBsZW5ndGhfWzddCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGk4IC0gYmFzZSg4
KSkgPCBsZW5ndGhfWzhdCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGk5IC0gYmFzZSg5KSkgPCBs
ZW5ndGhfWzldCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGkxMCAtIGJhc2UoMTApKSA8IGxlbmd0
aF9bMTBdOwogICAgfQoKICAgIGJvb2wgIGlzSW5SYW5nZShjb25zdCBUX2luZGV4JiBpbmRleCkg
Y29uc3QKICAgIHsKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBOX3Jhbms7ICsraSkKICAgICAg
ICAgICAgaWYgKHVuc2lnbmVkKGluZGV4W2ldIC0gYmFzZShpKSkgPj0gbGVuZ3RoX1tpXSkKICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZSA7CgogICAgICAgIHJldHVybiB0cnVlIDsKICAgIH0K
CiAgICBib29sICBhc3NlcnRJblJhbmdlKGNvbnN0IFRfaW5kZXgmIGluZGV4KSBjb25zdAogICAg
ewogCiAgICAgICAKICAgICAgICBCWlNPRlRQUkVDSEVDSyhpc0luUmFuZ2UoaW5kZXgpLCAiQXJy
YXkgaW5kZXggb3V0IG9mIHJhbmdlOiAiIDw8IGluZGV4CiAgICAgICAgICAgIDw8IGVuZGwgPDwg
Ikxvd2VyIGJvdW5kczogIiA8PCBzdG9yYWdlXy5iYXNlKCkgPDwgZW5kbAogICAgICAgICAgICA8
PCAiVXBwZXIgYm91bmRzOiAiIDw8IChzdG9yYWdlXy5iYXNlKCkgKyBsZW5ndGhfIC0gMSkgPDwg
ZW5kbCk7CiAKICAgICAgICByZXR1cm4gdHJ1ZSA7CiAgICB9CgogICAgYm9vbCAgYXNzZXJ0SW5S
YW5nZShpbnQgaTApIGNvbnN0CiAgICB7CiAgICAgICAgIDsKCgogICAgICAgIHJldHVybiB0cnVl
IDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJhbmdlKGludCBpMCwgaW50IGkxKSBjb25zdAog
ICAgewogICAgICAgICA7CgoKCiAgICAgICAgcmV0dXJuIHRydWUgOwogICAgfQoKICAgIGJvb2wg
IGFzc2VydEluUmFuZ2UoaW50IGkwLCBpbnQgaTEsIGludCBpMikgY29uc3QKICAgIHsKICAgICAg
ICAgOwoKCgogICAgICAgIHJldHVybiB0cnVlIDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJh
bmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMykgY29uc3QKICAgIHsKICAgICAgICAg
OwoKCgogICAgICAgIHJldHVybiB0cnVlIDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJhbmdl
KGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywgaW50IGk0KSBjb25zdAogICAgewogICAg
ICAgICA7CgoKCgogICAgICAgIHJldHVybiB0cnVlIDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJ
blJhbmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywgaW50IGk0LCAKICAgICAgICBp
bnQgaTUpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKCgoKCiAgICAgICAgcmV0dXJuIHRydWUgOwog
ICAgfQoKICAgIGJvb2wgIGFzc2VydEluUmFuZ2UoaW50IGkwLCBpbnQgaTEsIGludCBpMiwgaW50
IGkzLCBpbnQgaTQsCiAgICAgICAgaW50IGk1LCBpbnQgaTYpIGNvbnN0CiAgICB7CiAgICAgICAg
IDsKCgoKCgogICAgICAgIHJldHVybiB0cnVlIDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJh
bmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGludCBp
NSwgaW50IGk2LCBpbnQgaTcpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKCgoKCgogICAgICAgIHJl
dHVybiB0cnVlIDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJhbmdlKGludCBpMCwgaW50IGkx
LCBpbnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGludCBpNSwgaW50IGk2LCBpbnQgaTcs
IGludCBpOCkgY29uc3QKICAgIHsKICAgICAgICAgOwoKCgoKCgogICAgICAgIHJldHVybiB0cnVl
IDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJhbmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIs
IGludCBpMywgaW50IGk0LAogICAgICAgIGludCBpNSwgaW50IGk2LCBpbnQgaTcsIGludCBpOCwg
aW50IGk5KSBjb25zdAogICAgewogICAgICAgICA7CgoKCgoKCiAgICAgICAgcmV0dXJuIHRydWUg
OwogICAgfQoKICAgIGJvb2wgIGFzc2VydEluUmFuZ2UoaW50IGkwLCBpbnQgaTEsIGludCBpMiwg
aW50IGkzLCBpbnQgaTQsCiAgICAgICAgaW50IGk1LCBpbnQgaTYsIGludCBpNywgaW50IGk4LCBp
bnQgaTksIGludCBpMTApIGNvbnN0CiAgICB7CiAgICAgICAgIDsKCgoKCgoKICAgICAgICByZXR1
cm4gdHJ1ZSA7CiAgICB9CgogICAgIAogICAgIAogICAgIAoKICAgIHRlbXBsYXRlPGludCBOX3Jh
bmsyPgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5r
Mj4mIGluZGV4KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXgpOwogICAg
ICAgIHJldHVybiBkYXRhX1tkb3QoaW5kZXgsIHN0cmlkZV8pXTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTxpbnQgTl9yYW5rMj4KICAgIFRfbnVtdHlwZSYgX19yZXN0cmljdF9fICBvcGVyYXRvcigpKGNv
bnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuazI+JiBpbmRleCkgCiAgICB7CiAgICAgICAgYXNzZXJ0
SW5SYW5nZShpbmRleCk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2RvdChpbmRleCwgc3RyaWRlXyld
OwogICAgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKFRpbnlWZWN0b3I8aW50LDE+IGluZGV4
KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXhbMF0pOwogICAgICAgIHJl
dHVybiBkYXRhX1tpbmRleFswXSAqIHN0cmlkZV9bMF1dOwogICAgfQoKICAgIFRfbnVtdHlwZSYg
b3BlcmF0b3IoKShUaW55VmVjdG9yPGludCwxPiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJ
blJhbmdlKGluZGV4WzBdKTsKICAgICAgICByZXR1cm4gZGF0YV9baW5kZXhbMF0gKiBzdHJpZGVf
WzBdXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShUaW55VmVjdG9yPGludCwyPiBp
bmRleCkgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGluZGV4WzBdLCBpbmRleFsx
XSk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFd
ICogc3RyaWRlX1sxXV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKFRpbnlWZWN0
b3I8aW50LDI+IGluZGV4KQogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXhbMF0sIGlu
ZGV4WzFdKTsKICAgICAgICByZXR1cm4gZGF0YV9baW5kZXhbMF0gKiBzdHJpZGVfWzBdICsgaW5k
ZXhbMV0gKiBzdHJpZGVfWzFdXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShUaW55
VmVjdG9yPGludCwzPiBpbmRleCkgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGlu
ZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0pOwogICAgICAgIHJldHVybiBkYXRhX1tpbmRleFsw
XSAqIHN0cmlkZV9bMF0gKyBpbmRleFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpbmRl
eFsyXSAqIHN0cmlkZV9bMl1dOwogICAgfQoKICAgIFRfbnVtdHlwZSYgb3BlcmF0b3IoKShUaW55
VmVjdG9yPGludCwzPiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGluZGV4WzBd
LCBpbmRleFsxXSwgaW5kZXhbMl0pOwogICAgICAgIHJldHVybiBkYXRhX1tpbmRleFswXSAqIHN0
cmlkZV9bMF0gKyBpbmRleFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpbmRleFsyXSAq
IHN0cmlkZV9bMl1dOwogICAgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGNvbnN0IFRpbnlW
ZWN0b3I8aW50LDQ+JiBpbmRleCkgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGlu
ZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdKTsKICAgICAgICByZXR1cm4gZGF0
YV9baW5kZXhbMF0gKiBzdHJpZGVfWzBdICsgaW5kZXhbMV0gKiBzdHJpZGVfWzFdCiAgICAgICAg
ICAgICsgaW5kZXhbMl0gKiBzdHJpZGVfWzJdICsgaW5kZXhbM10gKiBzdHJpZGVfWzNdXTsKICAg
IH0KCiAgICBUX251bXR5cGUmIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsND4mIGlu
ZGV4KQogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXhbMF0sIGluZGV4WzFdLCBpbmRl
eFsyXSwgaW5kZXhbM10pOwogICAgICAgIHJldHVybiBkYXRhX1tpbmRleFswXSAqIHN0cmlkZV9b
MF0gKyBpbmRleFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpbmRleFsyXSAqIHN0cmlk
ZV9bMl0gKyBpbmRleFszXSAqIHN0cmlkZV9bM11dOwogICAgfQoKICAgIFRfbnVtdHlwZSBvcGVy
YXRvcigpKGNvbnN0IFRpbnlWZWN0b3I8aW50LDU+JiBpbmRleCkgY29uc3QKICAgIHsKICAgICAg
ICBhc3NlcnRJblJhbmdlKGluZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAog
ICAgICAgICAgICBpbmRleFs0XSk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2luZGV4WzBdICogc3Ry
aWRlX1swXSArIGluZGV4WzFdICogc3RyaWRlX1sxXQogICAgICAgICAgICArIGluZGV4WzJdICog
c3RyaWRlX1syXSArIGluZGV4WzNdICogc3RyaWRlX1szXQogICAgICAgICAgICArIGluZGV4WzRd
ICogc3RyaWRlX1s0XV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKGNvbnN0IFRp
bnlWZWN0b3I8aW50LDU+JiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGluZGV4
WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAgICAgICBpbmRleFs0XSk7
CiAgICAgICAgcmV0dXJuIGRhdGFfW2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICog
c3RyaWRlX1sxXQogICAgICAgICAgICArIGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNd
ICogc3RyaWRlX1szXQogICAgICAgICAgICArIGluZGV4WzRdICogc3RyaWRlX1s0XV07CiAgICB9
CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsNj4mIGluZGV4
KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXhbMF0sIGluZGV4WzFdLCBp
bmRleFsyXSwgaW5kZXhbM10sCiAgICAgICAgICAgIGluZGV4WzRdLCBpbmRleFs1XSk7CiAgICAg
ICAgcmV0dXJuIGRhdGFfW2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3RyaWRl
X1sxXQogICAgICAgICAgICArIGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICogc3Ry
aWRlX1szXQogICAgICAgICAgICArIGluZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVdICog
c3RyaWRlX1s1XV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKGNvbnN0IFRpbnlW
ZWN0b3I8aW50LDY+JiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGluZGV4WzBd
LCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAgICAgICBpbmRleFs0XSwgaW5k
ZXhbNV0pOwogICAgICAgIHJldHVybiBkYXRhX1tpbmRleFswXSAqIHN0cmlkZV9bMF0gKyBpbmRl
eFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpbmRleFsyXSAqIHN0cmlkZV9bMl0gKyBp
bmRleFszXSAqIHN0cmlkZV9bM10KICAgICAgICAgICAgKyBpbmRleFs0XSAqIHN0cmlkZV9bNF0g
KyBpbmRleFs1XSAqIHN0cmlkZV9bNV1dOwogICAgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigp
KGNvbnN0IFRpbnlWZWN0b3I8aW50LDc+JiBpbmRleCkgY29uc3QKICAgIHsKICAgICAgICBhc3Nl
cnRJblJhbmdlKGluZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAg
ICAgICBpbmRleFs0XSwgaW5kZXhbNV0sIGluZGV4WzZdKTsKICAgICAgICByZXR1cm4gZGF0YV9b
aW5kZXhbMF0gKiBzdHJpZGVfWzBdICsgaW5kZXhbMV0gKiBzdHJpZGVfWzFdCiAgICAgICAgICAg
ICsgaW5kZXhbMl0gKiBzdHJpZGVfWzJdICsgaW5kZXhbM10gKiBzdHJpZGVfWzNdCiAgICAgICAg
ICAgICsgaW5kZXhbNF0gKiBzdHJpZGVfWzRdICsgaW5kZXhbNV0gKiBzdHJpZGVfWzVdCiAgICAg
ICAgICAgICsgaW5kZXhbNl0gKiBzdHJpZGVfWzZdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIG9w
ZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsNz4mIGluZGV4KQogICAgewogICAgICAgIGFz
c2VydEluUmFuZ2UoaW5kZXhbMF0sIGluZGV4WzFdLCBpbmRleFsyXSwgaW5kZXhbM10sCiAgICAg
ICAgICAgIGluZGV4WzRdLCBpbmRleFs1XSwgaW5kZXhbNl0pOwogICAgICAgIHJldHVybiBkYXRh
X1tpbmRleFswXSAqIHN0cmlkZV9bMF0gKyBpbmRleFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAg
ICAgKyBpbmRleFsyXSAqIHN0cmlkZV9bMl0gKyBpbmRleFszXSAqIHN0cmlkZV9bM10KICAgICAg
ICAgICAgKyBpbmRleFs0XSAqIHN0cmlkZV9bNF0gKyBpbmRleFs1XSAqIHN0cmlkZV9bNV0KICAg
ICAgICAgICAgKyBpbmRleFs2XSAqIHN0cmlkZV9bNl1dOwogICAgfQoKICAgIFRfbnVtdHlwZSBv
cGVyYXRvcigpKGNvbnN0IFRpbnlWZWN0b3I8aW50LDg+JiBpbmRleCkgY29uc3QKICAgIHsKICAg
ICAgICBhc3NlcnRJblJhbmdlKGluZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNd
LAogICAgICAgICAgICBpbmRleFs0XSwgaW5kZXhbNV0sIGluZGV4WzZdLCBpbmRleFs3XSk7CiAg
ICAgICAgcmV0dXJuIGRhdGFfW2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3Ry
aWRlX1sxXQogICAgICAgICAgICArIGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICog
c3RyaWRlX1szXQogICAgICAgICAgICArIGluZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVd
ICogc3RyaWRlX1s1XQogICAgICAgICAgICArIGluZGV4WzZdICogc3RyaWRlX1s2XSArIGluZGV4
WzddICogc3RyaWRlX1s3XV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKGNvbnN0
IFRpbnlWZWN0b3I8aW50LDg+JiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGlu
ZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAgICAgICBpbmRleFs0
XSwgaW5kZXhbNV0sIGluZGV4WzZdLCBpbmRleFs3XSk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2lu
ZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3RyaWRlX1sxXQogICAgICAgICAgICAr
IGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICogc3RyaWRlX1szXQogICAgICAgICAg
ICArIGluZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVdICogc3RyaWRlX1s1XQogICAgICAg
ICAgICArIGluZGV4WzZdICogc3RyaWRlX1s2XSArIGluZGV4WzddICogc3RyaWRlX1s3XV07CiAg
ICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsOT4mIGlu
ZGV4KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXhbMF0sIGluZGV4WzFd
LCBpbmRleFsyXSwgaW5kZXhbM10sCiAgICAgICAgICAgIGluZGV4WzRdLCBpbmRleFs1XSwgaW5k
ZXhbNl0sIGluZGV4WzddLCBpbmRleFs4XSk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2luZGV4WzBd
ICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3RyaWRlX1sxXQogICAgICAgICAgICArIGluZGV4
WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICogc3RyaWRlX1szXQogICAgICAgICAgICArIGlu
ZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVdICogc3RyaWRlX1s1XQogICAgICAgICAgICAr
IGluZGV4WzZdICogc3RyaWRlX1s2XSArIGluZGV4WzddICogc3RyaWRlX1s3XQogICAgICAgICAg
ICArIGluZGV4WzhdICogc3RyaWRlX1s4XV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRv
cigpKGNvbnN0IFRpbnlWZWN0b3I8aW50LDk+JiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJ
blJhbmdlKGluZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAgICAg
ICBpbmRleFs0XSwgaW5kZXhbNV0sIGluZGV4WzZdLCBpbmRleFs3XSwgaW5kZXhbOF0pOwogICAg
ICAgIHJldHVybiBkYXRhX1tpbmRleFswXSAqIHN0cmlkZV9bMF0gKyBpbmRleFsxXSAqIHN0cmlk
ZV9bMV0KICAgICAgICAgICAgKyBpbmRleFsyXSAqIHN0cmlkZV9bMl0gKyBpbmRleFszXSAqIHN0
cmlkZV9bM10KICAgICAgICAgICAgKyBpbmRleFs0XSAqIHN0cmlkZV9bNF0gKyBpbmRleFs1XSAq
IHN0cmlkZV9bNV0KICAgICAgICAgICAgKyBpbmRleFs2XSAqIHN0cmlkZV9bNl0gKyBpbmRleFs3
XSAqIHN0cmlkZV9bN10KICAgICAgICAgICAgKyBpbmRleFs4XSAqIHN0cmlkZV9bOF1dOwogICAg
fQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGNvbnN0IFRpbnlWZWN0b3I8aW50LDEwPiYgaW5k
ZXgpIGNvbnN0CiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5nZShpbmRleFswXSwgaW5kZXhbMV0s
IGluZGV4WzJdLCBpbmRleFszXSwKICAgICAgICAgICAgaW5kZXhbNF0sIGluZGV4WzVdLCBpbmRl
eFs2XSwgaW5kZXhbN10sIGluZGV4WzhdLCBpbmRleFs5XSk7CiAgICAgICAgcmV0dXJuIGRhdGFf
W2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3RyaWRlX1sxXQogICAgICAgICAg
ICArIGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICogc3RyaWRlX1szXQogICAgICAg
ICAgICArIGluZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVdICogc3RyaWRlX1s1XQogICAg
ICAgICAgICArIGluZGV4WzZdICogc3RyaWRlX1s2XSArIGluZGV4WzddICogc3RyaWRlX1s3XQog
ICAgICAgICAgICArIGluZGV4WzhdICogc3RyaWRlX1s4XSArIGluZGV4WzldICogc3RyaWRlX1s5
XV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKGNvbnN0IFRpbnlWZWN0b3I8aW50
LDEwPiYgaW5kZXgpCiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5nZShpbmRleFswXSwgaW5kZXhb
MV0sIGluZGV4WzJdLCBpbmRleFszXSwKICAgICAgICAgICAgaW5kZXhbNF0sIGluZGV4WzVdLCBp
bmRleFs2XSwgaW5kZXhbN10sIGluZGV4WzhdLCBpbmRleFs5XSk7CiAgICAgICAgcmV0dXJuIGRh
dGFfW2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3RyaWRlX1sxXQogICAgICAg
ICAgICArIGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICogc3RyaWRlX1szXQogICAg
ICAgICAgICArIGluZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVdICogc3RyaWRlX1s1XQog
ICAgICAgICAgICArIGluZGV4WzZdICogc3RyaWRlX1s2XSArIGluZGV4WzddICogc3RyaWRlX1s3
XQogICAgICAgICAgICArIGluZGV4WzhdICogc3RyaWRlX1s4XSArIGluZGV4WzldICogc3RyaWRl
X1s5XV07CiAgICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3Rvcjxp
bnQsMTE+JiBpbmRleCkgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGluZGV4WzBd
LCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAgICAgICBpbmRleFs0XSwgaW5k
ZXhbNV0sIGluZGV4WzZdLCBpbmRleFs3XSwgaW5kZXhbOF0sIGluZGV4WzldLAogICAgICAgICAg
ICBpbmRleFsxMF0pOwogICAgICAgIHJldHVybiBkYXRhX1tpbmRleFswXSAqIHN0cmlkZV9bMF0g
KyBpbmRleFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpbmRleFsyXSAqIHN0cmlkZV9b
Ml0gKyBpbmRleFszXSAqIHN0cmlkZV9bM10KICAgICAgICAgICAgKyBpbmRleFs0XSAqIHN0cmlk
ZV9bNF0gKyBpbmRleFs1XSAqIHN0cmlkZV9bNV0KICAgICAgICAgICAgKyBpbmRleFs2XSAqIHN0
cmlkZV9bNl0gKyBpbmRleFs3XSAqIHN0cmlkZV9bN10KICAgICAgICAgICAgKyBpbmRleFs4XSAq
IHN0cmlkZV9bOF0gKyBpbmRleFs5XSAqIHN0cmlkZV9bOV0KICAgICAgICAgICAgKyBpbmRleFsx
MF0gKiBzdHJpZGVfWzEwXV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKGNvbnN0
IFRpbnlWZWN0b3I8aW50LDExPiYgaW5kZXgpCiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5nZShp
bmRleFswXSwgaW5kZXhbMV0sIGluZGV4WzJdLCBpbmRleFszXSwKICAgICAgICAgICAgaW5kZXhb
NF0sIGluZGV4WzVdLCBpbmRleFs2XSwgaW5kZXhbN10sIGluZGV4WzhdLCBpbmRleFs5XSwKICAg
ICAgICAgICAgaW5kZXhbMTBdKTsKICAgICAgICByZXR1cm4gZGF0YV9baW5kZXhbMF0gKiBzdHJp
ZGVfWzBdICsgaW5kZXhbMV0gKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaW5kZXhbMl0gKiBz
dHJpZGVfWzJdICsgaW5kZXhbM10gKiBzdHJpZGVfWzNdCiAgICAgICAgICAgICsgaW5kZXhbNF0g
KiBzdHJpZGVfWzRdICsgaW5kZXhbNV0gKiBzdHJpZGVfWzVdCiAgICAgICAgICAgICsgaW5kZXhb
Nl0gKiBzdHJpZGVfWzZdICsgaW5kZXhbN10gKiBzdHJpZGVfWzddCiAgICAgICAgICAgICsgaW5k
ZXhbOF0gKiBzdHJpZGVfWzhdICsgaW5kZXhbOV0gKiBzdHJpZGVfWzldCiAgICAgICAgICAgICsg
aW5kZXhbMTBdICogc3RyaWRlX1sxMF1dOwogICAgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigp
KGludCBpMCkgY29uc3QKICAgIHsgCiAgICAgICAgYXNzZXJ0SW5SYW5nZShpMCk7CiAgICAgICAg
cmV0dXJuIGRhdGFfW2kwICogc3RyaWRlX1swXV07IAogICAgfQoKICAgIFRfbnVtdHlwZSYgX19y
ZXN0cmljdF9fICBvcGVyYXRvcigpKGludCBpMCkgCiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5n
ZShpMCk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kwICogc3RyaWRlX1swXV07CiAgICB9CgogICAg
VF9udW10eXBlIG9wZXJhdG9yKCkoaW50IGkwLCBpbnQgaTEpIGNvbnN0CiAgICB7IAogICAgICAg
IGFzc2VydEluUmFuZ2UoaTAsIGkxKTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVf
WzBdICsgaTEgKiBzdHJpZGVfWzFdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3Rf
XyAgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdl
KGkwLCBpMSk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kwICogc3RyaWRlX1swXSArIGkxICogc3Ry
aWRlX1sxXV07CiAgICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoaW50IGkwLCBpbnQgaTEs
IGludCBpMikgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGkwLCBpMSwgaTIpOwog
ICAgICAgIHJldHVybiBkYXRhX1tpMCAqIHN0cmlkZV9bMF0gKyBpMSAqIHN0cmlkZV9bMV0KICAg
ICAgICAgICAgKyBpMiAqIHN0cmlkZV9bMl1dOwogICAgfQoKICAgIFRfbnVtdHlwZSYgX19yZXN0
cmljdF9fICBvcGVyYXRvcigpKGludCBpMCwgaW50IGkxLCBpbnQgaTIpIAogICAgewogICAgICAg
IGFzc2VydEluUmFuZ2UoaTAsIGkxLCBpMik7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kwICogc3Ry
aWRlX1swXSArIGkxICogc3RyaWRlX1sxXQogICAgICAgICAgICArIGkyICogc3RyaWRlX1syXV07
CiAgICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoaW50IGkwLCBpbnQgaTEsIGludCBpMiwg
aW50IGkzKSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaTAsIGkxLCBpMiwgaTMp
OwogICAgICAgIHJldHVybiBkYXRhX1tpMCAqIHN0cmlkZV9bMF0gKyBpMSAqIHN0cmlkZV9bMV0K
ICAgICAgICAgICAgKyBpMiAqIHN0cmlkZV9bMl0gKyBpMyAqIHN0cmlkZV9bM11dOwogICAgfQoK
ICAgIFRfbnVtdHlwZSYgX19yZXN0cmljdF9fICBvcGVyYXRvcigpKGludCBpMCwgaW50IGkxLCBp
bnQgaTIsIGludCBpMykKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGkwLCBpMSwgaTIsIGkz
KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFd
CiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdXTsKICAgIH0K
CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMs
CiAgICAgICAgaW50IGk0KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaTAsIGkx
LCBpMiwgaTMsIGk0KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEg
KiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVf
WzNdICsgaTQgKiBzdHJpZGVfWzRdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3Rf
XyAgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50
IGk0KQogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaTAsIGkxLCBpMiwgaTMsIGk0KTsKICAg
ICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAg
ICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVf
WzRdXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50
IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBpbnQgaTUpIGNvbnN0CiAgICB7CiAgICAgICAg
YXNzZXJ0SW5SYW5nZShpMCwgaTEsIGkyLCBpMywgaTQsIGk1KTsKICAgICAgICByZXR1cm4gZGF0
YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBz
dHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAgICAg
ICsgaTUgKiBzdHJpZGVfWzVdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3RfXyAg
b3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0
LCBpbnQgaTUpCiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5nZShpMCwgaTEsIGkyLCBpMywgaTQs
IGk1KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVf
WzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQg
KiBzdHJpZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBzdHJpZGVfWzVdXTsKICAgIH0KCiAgICBU
X251bXR5cGUgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAg
ICAgaW50IGk0LCBpbnQgaTUsIGludCBpNikgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJh
bmdlKGkwLCBpMSwgaTIsIGkzLCBpNCwgaTUsIGk2KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAg
KiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVf
WzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAgICAgICsgaTUg
KiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9f
cmVzdHJpY3RfXyAgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAg
ICAgICAgaW50IGk0LCBpbnQgaTUsIGludCBpNikKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdl
KGkwLCBpMSwgaTIsIGkzLCBpNCwgaTUsIGk2KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBz
dHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJd
ICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBz
dHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0
b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBpbnQg
aTUsIGludCBpNiwgaW50IGk3KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaTAs
IGkxLCBpMiwgaTMsIGk0LCBpNSwgaTYsIGk3KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBz
dHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJd
ICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBz
dHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsgaTcgKiBzdHJpZGVfWzddXTsKICAgIH0KCiAg
ICBUX251bXR5cGUmIF9fcmVzdHJpY3RfXyAgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50
IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBpbnQgaTUsIGludCBpNiwgaW50IGk3KQogICAg
ewogICAgICAgIGFzc2VydEluUmFuZ2UoaTAsIGkxLCBpMiwgaTMsIGk0LCBpNSwgaTYsIGk3KTsK
ICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAg
ICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJp
ZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsg
aTcgKiBzdHJpZGVfWzddXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaTAs
IGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBpbnQgaTUsIGludCBpNiwg
aW50IGk3LCBpbnQgaTgpIGNvbnN0CiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5nZShpMCwgaTEs
IGkyLCBpMywgaTQsIGk1LCBpNiwgaTcsIGk4KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBz
dHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJd
ICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBz
dHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsgaTcgKiBzdHJpZGVfWzddCiAgICAgICAgICAg
ICsgaTggKiBzdHJpZGVfWzhdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3RfXyAg
b3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0
LCBpbnQgaTUsIGludCBpNiwgaW50IGk3LCBpbnQgaTgpCiAgICB7CiAgICAgICAgYXNzZXJ0SW5S
YW5nZShpMCwgaTEsIGkyLCBpMywgaTQsIGk1LCBpNiwgaTcsIGk4KTsKICAgICAgICByZXR1cm4g
ZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIg
KiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAg
ICAgICsgaTUgKiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsgaTcgKiBzdHJpZGVfWzdd
CiAgICAgICAgICAgICsgaTggKiBzdHJpZGVfWzhdXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3Bl
cmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBp
bnQgaTUsIGludCBpNiwgaW50IGk3LCBpbnQgaTgsIGludCBpOSkgY29uc3QKICAgIHsKICAgICAg
ICBhc3NlcnRJblJhbmdlKGkwLCBpMSwgaTIsIGkzLCBpNCwgaTUsIGk2LCBpNywgaTgsIGk5KTsK
ICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAg
ICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJp
ZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsg
aTcgKiBzdHJpZGVfWzddCiAgICAgICAgICAgICsgaTggKiBzdHJpZGVfWzhdICsgaTkgKiBzdHJp
ZGVfWzldXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3RfXyAgb3BlcmF0b3IoKShp
bnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBpbnQgaTUsIGlu
dCBpNiwgaW50IGk3LCBpbnQgaTgsIGludCBpOSkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdl
KGkwLCBpMSwgaTIsIGkzLCBpNCwgaTUsIGk2LCBpNywgaTgsIGk5KTsKICAgICAgICByZXR1cm4g
ZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIg
KiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAg
ICAgICsgaTUgKiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsgaTcgKiBzdHJpZGVfWzdd
CiAgICAgICAgICAgICsgaTggKiBzdHJpZGVfWzhdICsgaTkgKiBzdHJpZGVfWzldXTsKICAgIH0K
CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMs
CiAgICAgICAgaW50IGk0LCBpbnQgaTUsIGludCBpNiwgaW50IGk3LCBpbnQgaTgsIGludCBpOSwg
aW50IGkxMCkgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGkwLCBpMSwgaTIsIGkz
LCBpNCwgaTUsIGk2LCBpNywgaTgsIAogICAgICAgICAgICBpOSwgaTEwKTsKICAgICAgICByZXR1
cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsg
aTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAg
ICAgICAgICsgaTUgKiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsgaTcgKiBzdHJpZGVf
WzddCiAgICAgICAgICAgICsgaTggKiBzdHJpZGVfWzhdICsgaTkgKiBzdHJpZGVfWzldICsgaTEw
ICogc3RyaWRlX1sxMF1dOwogICAgfQoKICAgIFRfbnVtdHlwZSYgX19yZXN0cmljdF9fICBvcGVy
YXRvcigpKGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywKICAgICAgICBpbnQgaTQsIGlu
dCBpNSwgaW50IGk2LCBpbnQgaTcsIGludCBpOCwgaW50IGk5LCBpbnQgaTEwKQogICAgewogICAg
ICAgIGFzc2VydEluUmFuZ2UoaTAsIGkxLCBpMiwgaTMsIGk0LCBpNSwgaTYsIGk3LCBpOCwgCiAg
ICAgICAgICAgIGk5LCBpMTApOwogICAgICAgIHJldHVybiBkYXRhX1tpMCAqIHN0cmlkZV9bMF0g
KyBpMSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpMiAqIHN0cmlkZV9bMl0gKyBpMyAqIHN0
cmlkZV9bM10gKyBpNCAqIHN0cmlkZV9bNF0KICAgICAgICAgICAgKyBpNSAqIHN0cmlkZV9bNV0g
KyBpNiAqIHN0cmlkZV9bNl0gKyBpNyAqIHN0cmlkZV9bN10KICAgICAgICAgICAgKyBpOCAqIHN0
cmlkZV9bOF0gKyBpOSAqIHN0cmlkZV9bOV0gKyBpMTAgKiBzdHJpZGVfWzEwXV07CiAgICB9Cgog
ICAgIAoKCgoKICAgIFRfYXJyYXkmIG5vQ29uc3QoKSBjb25zdAogICAgeyByZXR1cm4gY29uc3Rf
Y2FzdDxUX2FycmF5Jj4oKnRoaXMpOyB9CgogICAgVF9hcnJheSBvcGVyYXRvcigpKGNvbnN0IFJl
Y3REb21haW48Tl9yYW5rPiYgc3ViZG9tYWluKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBU
X2FycmF5KG5vQ29uc3QoKSwgc3ViZG9tYWluKTsKICAgIH0KCiAgICBUX2FycmF5IG9wZXJhdG9y
KCkoUmFuZ2UgcjApIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFRfYXJyYXkobm9Db25zdCgp
LCByMCk7CiAgICB9CgogICAgVF9hcnJheSBvcGVyYXRvcigpKFJhbmdlIHIwLCBSYW5nZSByMSkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gVF9hcnJheShub0NvbnN0KCksIHIwLCByMSk7CiAg
ICB9CgogICAgVF9hcnJheSBvcGVyYXRvcigpKFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFRfYXJyYXkobm9Db25zdCgpLCByMCwgcjEsIHIy
KTsKICAgIH0KCiAgICBUX2FycmF5IG9wZXJhdG9yKCkoUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5n
ZSByMiwgUmFuZ2UgcjMpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFRfYXJyYXkobm9Db25z
dCgpLCByMCwgcjEsIHIyLCByMyk7CiAgICB9CgogICAgVF9hcnJheSBvcGVyYXRvcigpKFJhbmdl
IHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBSYW5nZSByNCkgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gVF9hcnJheShub0NvbnN0KCksIHIwLCByMSwgcjIsIHIzLCByNCk7CiAg
ICB9CgogICAgVF9hcnJheSBvcGVyYXRvcigpKFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIs
IFJhbmdlIHIzLCBSYW5nZSByNCwKICAgICAgICBSYW5nZSByNSkgY29uc3QKICAgIHsKICAgICAg
ICByZXR1cm4gVF9hcnJheShub0NvbnN0KCksIHIwLCByMSwgcjIsIHIzLCByNCwgcjUpOwogICAg
fQoKICAgIFRfYXJyYXkgb3BlcmF0b3IoKShSYW5nZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBS
YW5nZSByMywgUmFuZ2UgcjQsCiAgICAgICAgUmFuZ2UgcjUsIFJhbmdlIHI2KSBjb25zdAogICAg
ewogICAgICAgIHJldHVybiBUX2FycmF5KG5vQ29uc3QoKSwgcjAsIHIxLCByMiwgcjMsIHI0LCBy
NSwgcjYpOwogICAgfQoKICAgIFRfYXJyYXkgb3BlcmF0b3IoKShSYW5nZSByMCwgUmFuZ2UgcjEs
IFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsCiAgICAgICAgUmFuZ2UgcjUsIFJhbmdlIHI2
LCBSYW5nZSByNykgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gVF9hcnJheShub0NvbnN0KCks
IHIwLCByMSwgcjIsIHIzLCByNCwgcjUsIHI2LCByNyk7CiAgICB9CgogICAgVF9hcnJheSBvcGVy
YXRvcigpKFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBSYW5nZSByNCwK
ICAgICAgICBSYW5nZSByNSwgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5nZSByOCkgY29uc3QKICAg
IHsKICAgICAgICByZXR1cm4gVF9hcnJheShub0NvbnN0KCksIHIwLCByMSwgcjIsIHIzLCByNCwg
cjUsIHI2LCByNywgcjgpOwogICAgfQoKICAgIFRfYXJyYXkgb3BlcmF0b3IoKShSYW5nZSByMCwg
UmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsCiAgICAgICAgUmFuZ2UgcjUs
IFJhbmdlIHI2LCBSYW5nZSByNywgUmFuZ2UgcjgsIFJhbmdlIHI5KSBjb25zdAogICAgewogICAg
ICAgIHJldHVybiBUX2FycmF5KG5vQ29uc3QoKSwgcjAsIHIxLCByMiwgcjMsIHI0LCByNSwgcjYs
IHI3LCByOCwgcjkpOwogICAgfQoKICAgIFRfYXJyYXkgb3BlcmF0b3IoKShSYW5nZSByMCwgUmFu
Z2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsCiAgICAgICAgUmFuZ2UgcjUsIFJh
bmdlIHI2LCBSYW5nZSByNywgUmFuZ2UgcjgsIFJhbmdlIHI5LCBSYW5nZSByMTApIGNvbnN0CiAg
ICB7CiAgICAgICAgcmV0dXJuIFRfYXJyYXkobm9Db25zdCgpLCByMCwgcjEsIHIyLCByMywgcjQs
IHI1LCByNiwgcjcsIHI4LCByOSwgcjEwKTsKICAgIH0KCiAgICAgCiAgICAgCgogICAgIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogICAgdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgogICAgdHlw
ZW5hbWUgIFNsaWNlSW5mbzxUX251bXR5cGUsVDEsVDI+OjpUX3NsaWNlCiAgICBvcGVyYXRvcigp
KFQxIHIxLCBUMiByMikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gU2xpY2VJbmZvPFRfbnVt
dHlwZSxUMSxUMj46OlRfc2xpY2Uobm9Db25zdCgpLCByMSwgcjIsCiAgICAgICAgICAgIG5pbEFy
cmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0aW9uKCksCiAgICAg
ICAgICAgIG5pbEFycmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0
aW9uKCksCiAgICAgICAgICAgIG5pbEFycmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwg
bmlsQXJyYXlTZWN0aW9uKCkpOwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
MiwgY2xhc3MgVDM+CiAgICB0eXBlbmFtZSAgU2xpY2VJbmZvPFRfbnVtdHlwZSxUMSxUMixUMz46
OlRfc2xpY2UgCiAgICBvcGVyYXRvcigpKFQxIHIxLCBUMiByMiwgVDMgcjMpIGNvbnN0CiAgICB7
CiAgICAgICAgcmV0dXJuIFNsaWNlSW5mbzxUX251bXR5cGUsVDEsVDIsVDM+OjpUX3NsaWNlKG5v
Q29uc3QoKSwgcjEsIHIyLCByMywKICAgICAgICAgICAgbmlsQXJyYXlTZWN0aW9uKCksIG5pbEFy
cmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwKICAgICAgICAgICAgbmlsQXJyYXlTZWN0
aW9uKCksIG5pbEFycmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwKICAgICAgICAgICAg
bmlsQXJyYXlTZWN0aW9uKCksIG5pbEFycmF5U2VjdGlvbigpKTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUND4KICAgIHR5cGVuYW1lICBT
bGljZUluZm88VF9udW10eXBlLFQxLFQyLFQzLFQ0Pjo6VF9zbGljZQogICAgb3BlcmF0b3IoKShU
MSByMSwgVDIgcjIsIFQzIHIzLCBUNCByNCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gU2xp
Y2VJbmZvPFRfbnVtdHlwZSxUMSxUMixUMyxUND46OlRfc2xpY2Uobm9Db25zdCgpLCByMSwgcjIs
IHIzLAogICAgICAgICAgICByNCwgbmlsQXJyYXlTZWN0aW9uKCksIG5pbEFycmF5U2VjdGlvbigp
LAogICAgICAgICAgICBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0aW9uKCksIG5pbEFy
cmF5U2VjdGlvbigpLAogICAgICAgICAgICBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0
aW9uKCkpOwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMs
IGNsYXNzIFQ0LCBjbGFzcyBUNT4KICAgIHR5cGVuYW1lICBTbGljZUluZm88VF9udW10eXBlLFQx
LFQyLFQzLFQ0LFQ1Pjo6VF9zbGljZQogICAgb3BlcmF0b3IoKShUMSByMSwgVDIgcjIsIFQzIHIz
LCBUNCByNCwgVDUgcjUpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFNsaWNlSW5mbzxUX251
bXR5cGUsVDEsVDIsVDMsVDQsVDU+OjpUX3NsaWNlKG5vQ29uc3QoKSwgcjEsIHIyLCAKICAgICAg
ICAgICAgcjMsIHI0LCByNSwgbmlsQXJyYXlTZWN0aW9uKCksCiAgICAgICAgICAgIG5pbEFycmF5
U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0aW9uKCksCiAgICAgICAg
ICAgIG5pbEFycmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSk7CiAgICB9CgogICAgdGVt
cGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBj
bGFzcyBUNj4KICAgIHR5cGVuYW1lICBTbGljZUluZm88VF9udW10eXBlLFQxLFQyLFQzLFQ0LFQ1
LFQ2Pjo6VF9zbGljZQogICAgb3BlcmF0b3IoKShUMSByMSwgVDIgcjIsIFQzIHIzLCBUNCByNCwg
VDUgcjUsIFQ2IHI2KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBTbGljZUluZm88VF9udW10
eXBlLFQxLFQyLFQzLFQ0LFQ1LFQ2Pjo6VF9zbGljZShub0NvbnN0KCksIHIxLCAKICAgICAgICAg
ICAgcjIsIHIzLCByNCwgcjUsIHI2LCAKICAgICAgICAgICAgbmlsQXJyYXlTZWN0aW9uKCksIG5p
bEFycmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwKICAgICAgICAgICAgbmlsQXJyYXlT
ZWN0aW9uKCksIG5pbEFycmF5U2VjdGlvbigpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBU
MSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAogICAg
ICAgIGNsYXNzIFQ3PgogICAgdHlwZW5hbWUgIFNsaWNlSW5mbzxUX251bXR5cGUsVDEsVDIsVDMs
VDQsVDUsVDYsVDc+OjpUX3NsaWNlCiAgICBvcGVyYXRvcigpKFQxIHIxLCBUMiByMiwgVDMgcjMs
IFQ0IHI0LCBUNSByNSwgVDYgcjYsIFQ3IHI3KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBT
bGljZUluZm88VF9udW10eXBlLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3Pjo6VF9zbGljZShub0NvbnN0
KCksIAogICAgICAgICAgICByMSwgcjIsIHIzLCByNCwgcjUsIHI2LCByNywKICAgICAgICAgICAg
bmlsQXJyYXlTZWN0aW9uKCksIG5pbEFycmF5U2VjdGlvbigpLAogICAgICAgICAgICBuaWxBcnJh
eVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0aW9uKCkpOwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNz
IFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCiAg
ICAgICAgY2xhc3MgVDcsIGNsYXNzIFQ4PgogICAgdHlwZW5hbWUgIFNsaWNlSW5mbzxUX251bXR5
cGUsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDg+OjpUX3NsaWNlCiAgICBvcGVyYXRvcigpKFQxIHIx
LCBUMiByMiwgVDMgcjMsIFQ0IHI0LCBUNSByNSwgVDYgcjYsIFQ3IHI3LCBUOCByOCkgY29uc3QK
ICAgIHsKICAgICAgICByZXR1cm4gU2xpY2VJbmZvPFRfbnVtdHlwZSxUMSxUMixUMyxUNCxUNSxU
NixUNyxUOD46OlRfc2xpY2Uobm9Db25zdCgpLCAKICAgICAgICAgICAgcjEsIHIyLCByMywgcjQs
IHI1LCByNiwgcjcsIHI4LAogICAgICAgICAgICBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlT
ZWN0aW9uKCksIG5pbEFycmF5U2VjdGlvbigpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBU
MSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAogICAg
ICAgIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+CiAgICB0eXBlbmFtZSAgU2xpY2VJbmZv
PFRfbnVtdHlwZSxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOT46OlRfc2xpY2UKICAgIG9wZXJh
dG9yKCkoVDEgcjEsIFQyIHIyLCBUMyByMywgVDQgcjQsIFQ1IHI1LCBUNiByNiwgVDcgcjcsIFQ4
IHI4LCAKICAgICAgICBUOSByOSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gU2xpY2VJbmZv
PFRfbnVtdHlwZSxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOT4KICAgICAgICAgICAgOjpUX3Ns
aWNlKG5vQ29uc3QoKSwgCiAgICAgICAgICAgIHIxLCByMiwgcjMsIHI0LCByNSwgcjYsIHI3LCBy
OCwgcjksIAogICAgICAgICAgICBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0aW9uKCkp
OwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNz
IFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCiAgICAgICAgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFz
cyBUOSwgY2xhc3MgVDEwPgogICAgdHlwZW5hbWUgIFNsaWNlSW5mbzxUX251bXR5cGUsVDEsVDIs
VDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwPjo6VF9zbGljZQogICAgb3BlcmF0b3IoKShUMSByMSwg
VDIgcjIsIFQzIHIzLCBUNCByNCwgVDUgcjUsIFQ2IHI2LCBUNyByNywgVDggcjgsCiAgICAgICAg
VDkgcjksIFQxMCByMTApIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFNsaWNlSW5mbzxUX251
bXR5cGUsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksCiAgICAgICAgICAgIFQxMD46OlRfc2xp
Y2Uobm9Db25zdCgpLCByMSwgcjIsIHIzLCByNCwgcjUsIHI2LCByNywgcjgsIAogICAgICAgICAg
ICByOSwgcjEwLCBuaWxBcnJheVNlY3Rpb24oKSk7CiAgICB9CgogICAgdGVtcGxhdGU8Y2xhc3Mg
VDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNiwKICAg
ICAgICBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4K
ICAgIHR5cGVuYW1lICBTbGljZUluZm88VF9udW10eXBlLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4
LFQ5LFQxMCwKICAgICAgICBUMTE+OjpUX3NsaWNlCiAgICBvcGVyYXRvcigpKFQxIHIxLCBUMiBy
MiwgVDMgcjMsIFQ0IHI0LCBUNSByNSwgVDYgcjYsIFQ3IHI3LCBUOCByOCwKICAgICAgICBUOSBy
OSwgVDEwIHIxMCwgVDExIHIxMSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gU2xpY2VJbmZv
PFRfbnVtdHlwZSxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsCiAgICAgICAgICAgIFQx
MT46OlRfc2xpY2Uobm9Db25zdCgpLCByMSwgcjIsIHIzLCByNCwgcjUsIHI2LCByNywgcjgsIHI5
LCAKICAgICAgICAgICAgcjEwLCByMTEpOwogICAgfQoKCgogICAgIAoKCgoKCgoKCgoKICAgIHRl
bXBsYXRlPGludCBOMD4KICAgIF9iel9BcnJheUV4cHI8QXJyYXlJbmRleE1hcHBpbmc8VF9udW10
eXBlLCBOX3JhbmssIE4wPiA+CiAgICBvcGVyYXRvcigpKEluZGV4UGxhY2Vob2xkZXI8TjA+KSBj
b25zdAogICAgeyAKICAgICAgICByZXR1cm4gX2J6X0FycmF5RXhwcjxBcnJheUluZGV4TWFwcGlu
ZzxUX251bXR5cGUsIE5fcmFuaywgTjA+ID4KICAgICAgICAgICAgKG5vQ29uc3QoKSk7CiAgICB9
CgogICAgdGVtcGxhdGU8aW50IE4wLCBpbnQgTjE+CiAgICBfYnpfQXJyYXlFeHByPEFycmF5SW5k
ZXhNYXBwaW5nPFRfbnVtdHlwZSwgTl9yYW5rLCBOMCwgTjE+ID4KICAgIG9wZXJhdG9yKCkoSW5k
ZXhQbGFjZWhvbGRlcjxOMD4sIEluZGV4UGxhY2Vob2xkZXI8TjE+KSBjb25zdAogICAgewogICAg
ICAgIHJldHVybiBfYnpfQXJyYXlFeHByPEFycmF5SW5kZXhNYXBwaW5nPFRfbnVtdHlwZSwgTl9y
YW5rLCBOMCwKICAgICAgICAgICAgTjE+ID4obm9Db25zdCgpKTsKICAgIH0gCgogICAgdGVtcGxh
dGU8aW50IE4wLCBpbnQgTjEsIGludCBOMj4KICAgIF9iel9BcnJheUV4cHI8QXJyYXlJbmRleE1h
cHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLCBOMSwgTjI+ID4KICAgIG9wZXJhdG9yKCkoSW5k
ZXhQbGFjZWhvbGRlcjxOMD4sIEluZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxh
Y2Vob2xkZXI8TjI+KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBfYnpfQXJyYXlFeHByPEFy
cmF5SW5kZXhNYXBwaW5nPFRfbnVtdHlwZSwgTl9yYW5rLCBOMCwKICAgICAgICAgICAgTjEsIE4y
PiA+KG5vQ29uc3QoKSk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50IE4wLCBpbnQgTjEsIGludCBO
MiwgaW50IE4zPgogICAgX2J6X0FycmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5cGUs
IE5fcmFuaywgTjAsIE4xLCBOMiwgTjM+ID4KICAgIG9wZXJhdG9yKCkoSW5kZXhQbGFjZWhvbGRl
cjxOMD4sIEluZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjI+
LCBJbmRleFBsYWNlaG9sZGVyPE4zPikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5cGUsIE5fcmFuaywgTjAsCiAgICAgICAg
ICAgIE4xLCBOMiwgTjM+ID4obm9Db25zdCgpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxpbnQgTjAs
IGludCBOMSwgaW50IE4yLCBpbnQgTjMsIGludCBOND4KICAgIF9iel9BcnJheUV4cHI8QXJyYXlJ
bmRleE1hcHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLCBOMSwgTjIsIE4zLCBOND4gPgogICAg
b3BlcmF0b3IoKShJbmRleFBsYWNlaG9sZGVyPE4wPiwgSW5kZXhQbGFjZWhvbGRlcjxOMT4sCiAg
ICAgICAgSW5kZXhQbGFjZWhvbGRlcjxOMj4sIEluZGV4UGxhY2Vob2xkZXI8TjM+LCAKICAgICAg
ICBJbmRleFBsYWNlaG9sZGVyPE40PikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5cGUsIE5fcmFuaywgTjAsCiAgICAgICAg
ICAgIE4xLCBOMiwgTjMsIE40PiA+KG5vQ29uc3QoKSk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50
IE4wLCBpbnQgTjEsIGludCBOMiwgaW50IE4zLCBpbnQgTjQsIGludCBONT4KICAgIF9iel9BcnJh
eUV4cHI8QXJyYXlJbmRleE1hcHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLCBOMSwgTjIsIE4z
LCAKICAgICAgICBONCwgTjU+ID4KICAgIG9wZXJhdG9yKCkoSW5kZXhQbGFjZWhvbGRlcjxOMD4s
IEluZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjI+LCBJbmRl
eFBsYWNlaG9sZGVyPE4zPiwgSW5kZXhQbGFjZWhvbGRlcjxOND4sCiAgICAgICAgSW5kZXhQbGFj
ZWhvbGRlcjxONT4pIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9BcnJheUV4cHI8QXJy
YXlJbmRleE1hcHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLAogICAgICAgICAgICBOMSwgTjIs
IE4zLCBONCwgTjU+ID4obm9Db25zdCgpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxpbnQgTjAsIGlu
dCBOMSwgaW50IE4yLCBpbnQgTjMsIGludCBONCwgaW50IE41LCBpbnQgTjY+CiAgICBfYnpfQXJy
YXlFeHByPEFycmF5SW5kZXhNYXBwaW5nPFRfbnVtdHlwZSwgTl9yYW5rLCBOMCwgTjEsIE4yLCBO
MywKICAgICAgICBONCwgTjUsIE42PiA+CiAgICBvcGVyYXRvcigpKEluZGV4UGxhY2Vob2xkZXI8
TjA+LCBJbmRleFBsYWNlaG9sZGVyPE4xPiwKICAgICAgICBJbmRleFBsYWNlaG9sZGVyPE4yPiwg
SW5kZXhQbGFjZWhvbGRlcjxOMz4sIEluZGV4UGxhY2Vob2xkZXI8TjQ+LAogICAgICAgIEluZGV4
UGxhY2Vob2xkZXI8TjU+LCBJbmRleFBsYWNlaG9sZGVyPE42PikgY29uc3QKICAgIHsKICAgICAg
ICByZXR1cm4gX2J6X0FycmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5cGUsIE5fcmFu
aywgTjAsCiAgICAgICAgICAgIE4xLCBOMiwgTjMsIE40LCBONSwgTjY+ID4obm9Db25zdCgpKTsK
ICAgIH0KCiAgICB0ZW1wbGF0ZTxpbnQgTjAsIGludCBOMSwgaW50IE4yLCBpbnQgTjMsIGludCBO
NCwgaW50IE41LCBpbnQgTjYsCiAgICAgICAgaW50IE43PgogICAgX2J6X0FycmF5RXhwcjxBcnJh
eUluZGV4TWFwcGluZzxUX251bXR5cGUsIE5fcmFuaywgTjAsIE4xLCBOMiwgTjMsCiAgICAgICAg
TjQsIE41LCBONiwgTjc+ID4KICAgIG9wZXJhdG9yKCkoSW5kZXhQbGFjZWhvbGRlcjxOMD4sIElu
ZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjI+LCBJbmRleFBs
YWNlaG9sZGVyPE4zPiwgSW5kZXhQbGFjZWhvbGRlcjxOND4sCiAgICAgICAgSW5kZXhQbGFjZWhv
bGRlcjxONT4sIEluZGV4UGxhY2Vob2xkZXI8TjY+LCAKICAgICAgICBJbmRleFBsYWNlaG9sZGVy
PE43PikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gX2J6X0FycmF5RXhwcjxBcnJheUluZGV4
TWFwcGluZzxUX251bXR5cGUsIE5fcmFuaywgTjAsCiAgICAgICAgICAgIE4xLCBOMiwgTjMsIE40
LCBONSwgTjYsIE43PiA+KG5vQ29uc3QoKSk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50IE4wLCBp
bnQgTjEsIGludCBOMiwgaW50IE4zLCBpbnQgTjQsIGludCBONSwgaW50IE42LAogICAgICAgIGlu
dCBONywgaW50IE44PgogICAgX2J6X0FycmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5
cGUsIE5fcmFuaywgTjAsIE4xLCBOMiwgTjMsCiAgICAgICAgTjQsIE41LCBONiwgTjcsIE44PiA+
CiAgICBvcGVyYXRvcigpKEluZGV4UGxhY2Vob2xkZXI8TjA+LCBJbmRleFBsYWNlaG9sZGVyPE4x
PiwKICAgICAgICBJbmRleFBsYWNlaG9sZGVyPE4yPiwgSW5kZXhQbGFjZWhvbGRlcjxOMz4sIElu
ZGV4UGxhY2Vob2xkZXI8TjQ+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjU+LCBJbmRleFBs
YWNlaG9sZGVyPE42PiwgSW5kZXhQbGFjZWhvbGRlcjxONz4sCiAgICAgICAgSW5kZXhQbGFjZWhv
bGRlcjxOOD4pIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9BcnJheUV4cHI8QXJyYXlJ
bmRleE1hcHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLAogICAgICAgICAgICBOMSwgTjIsIE4z
LCBONCwgTjUsIE42LCBONywgTjg+ID4obm9Db25zdCgpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxp
bnQgTjAsIGludCBOMSwgaW50IE4yLCBpbnQgTjMsIGludCBONCwgaW50IE41LCBpbnQgTjYsCiAg
ICAgICAgaW50IE43LCBpbnQgTjgsIGludCBOOT4KICAgIF9iel9BcnJheUV4cHI8QXJyYXlJbmRl
eE1hcHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLCBOMSwgTjIsIE4zLAogICAgICAgIE40LCBO
NSwgTjYsIE43LCBOOCwgTjk+ID4KICAgIG9wZXJhdG9yKCkoSW5kZXhQbGFjZWhvbGRlcjxOMD4s
IEluZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjI+LCBJbmRl
eFBsYWNlaG9sZGVyPE4zPiwgSW5kZXhQbGFjZWhvbGRlcjxOND4sCiAgICAgICAgSW5kZXhQbGFj
ZWhvbGRlcjxONT4sIEluZGV4UGxhY2Vob2xkZXI8TjY+LCBJbmRleFBsYWNlaG9sZGVyPE43PiwK
ICAgICAgICBJbmRleFBsYWNlaG9sZGVyPE44PiwgSW5kZXhQbGFjZWhvbGRlcjxOOT4pIGNvbnN0
CiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9BcnJheUV4cHI8QXJyYXlJbmRleE1hcHBpbmc8VF9u
dW10eXBlLCBOX3JhbmssIE4wLAogICAgICAgICAgICBOMSwgTjIsIE4zLCBONCwgTjUsIE42LCBO
NywgTjgsIE45PiA+KG5vQ29uc3QoKSk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50IE4wLCBpbnQg
TjEsIGludCBOMiwgaW50IE4zLCBpbnQgTjQsIGludCBONSwgaW50IE42LAogICAgICAgIGludCBO
NywgaW50IE44LCBpbnQgTjksIGludCBOMTA+CiAgICBfYnpfQXJyYXlFeHByPEFycmF5SW5kZXhN
YXBwaW5nPFRfbnVtdHlwZSwgTl9yYW5rLCBOMCwgTjEsIE4yLCBOMywKICAgICAgICBONCwgTjUs
IE42LCBONywgTjgsIE45LCBOMTA+ID4KICAgIG9wZXJhdG9yKCkoSW5kZXhQbGFjZWhvbGRlcjxO
MD4sIEluZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjI+LCBJ
bmRleFBsYWNlaG9sZGVyPE4zPiwgSW5kZXhQbGFjZWhvbGRlcjxOND4sCiAgICAgICAgSW5kZXhQ
bGFjZWhvbGRlcjxONT4sIEluZGV4UGxhY2Vob2xkZXI8TjY+LCBJbmRleFBsYWNlaG9sZGVyPE43
PiwKICAgICAgICBJbmRleFBsYWNlaG9sZGVyPE44PiwgSW5kZXhQbGFjZWhvbGRlcjxOOT4sIAog
ICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjEwPikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4g
X2J6X0FycmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5cGUsIE5fcmFuaywgTjAsCiAg
ICAgICAgICAgIE4xLCBOMiwgTjMsIE40LCBONSwgTjYsIE43LCBOOCwgTjksIE4xMD4gPihub0Nv
bnN0KCkpOwogICAgfQoKICAgICAKICAgICAKICAgICAKCiAgICAgCgoKCgogICAgIAogICAgQXJy
YXk8IHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8VF9udW10eXBlPjo6VF9lbGVtZW50
LE5fcmFuaz4KICAgIG9wZXJhdG9yW10oaW50IGNvbXBvbmVudCkKICAgIHsKICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8VF9udW10eXBlPjo6VF9lbGVtZW50
IAogICAgICAgICAgICBUX2NvbXBUeXBlOwoKICAgICAgICByZXR1cm4gZXh0cmFjdENvbXBvbmVu
dChUX2NvbXBUeXBlKCksIAogICAgICAgICAgICBjb21wb25lbnQsIG11bHRpY29tcG9uZW50X3Ry
YWl0czxUX251bXR5cGU+OjpudW1Db21wb25lbnRzKTsKICAgIH0KCiAgICAgCiAgICAgCiAgICAg
CiAKICAgIHRlbXBsYXRlPGNsYXNzIFRfaW5kZXhDb250YWluZXI+CiAgICBJbmRpcmVjdEFycmF5
PFRfYXJyYXksIFRfaW5kZXhDb250YWluZXI+CiAgICBvcGVyYXRvcltdKGNvbnN0IFRfaW5kZXhD
b250YWluZXImIGluZGV4KQogICAgewogICAgICAgIHJldHVybiBJbmRpcmVjdEFycmF5PFRfYXJy
YXksIFRfaW5kZXhDb250YWluZXI+KCp0aGlzLAogICAgICAgICAgICBjb25zdF9jYXN0PFRfaW5k
ZXhDb250YWluZXImPihpbmRleCkpOwogICAgfQogCiAgICAgCiAgICAgCiAgICAgCgogICAgIAog
ICAgIAogICAgIAogICAgTGlzdEluaXRpYWxpemF0aW9uU3dpdGNoPFRfYXJyYXk+IG9wZXJhdG9y
PShUX251bXR5cGUgeCkKICAgIHsKICAgICAgICByZXR1cm4gTGlzdEluaXRpYWxpemF0aW9uU3dp
dGNoPFRfYXJyYXk+KCp0aGlzLCB4KTsKICAgIH0KCiAgICBUX2FycmF5JiBpbml0aWFsaXplKFRf
bnVtdHlwZSk7CgogICAgIAogICAgIAoKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHI+CiAgICBU
X2FycmF5JiBvcGVyYXRvcj0oY29uc3QgRVRCYXNlPFRfZXhwcj4mKTsKICAgIFRfYXJyYXkmIG9w
ZXJhdG9yPShjb25zdCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYpOwoKICAgIHRlbXBsYXRlPGNs
YXNzIFQ+IFRfYXJyYXkmIG9wZXJhdG9yKz0oY29uc3QgVCYpOwogICAgdGVtcGxhdGU8Y2xhc3Mg
VD4gVF9hcnJheSYgb3BlcmF0b3ItPShjb25zdCBUJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBU
X2FycmF5JiBvcGVyYXRvcio9KGNvbnN0IFQmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFRfYXJy
YXkmIG9wZXJhdG9yLz0oY29uc3QgVCYpOwogICAgdGVtcGxhdGU8Y2xhc3MgVD4gVF9hcnJheSYg
b3BlcmF0b3IlPShjb25zdCBUJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUX2FycmF5JiBvcGVy
YXRvcl49KGNvbnN0IFQmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFRfYXJyYXkmIG9wZXJhdG9y
Jj0oY29uc3QgVCYpOwogICAgdGVtcGxhdGU8Y2xhc3MgVD4gVF9hcnJheSYgb3BlcmF0b3J8PShj
b25zdCBUJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUX2FycmF5JiBvcGVyYXRvcj4+PShjb25z
dCBUJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUX2FycmF5JiBvcGVyYXRvcjw8PShjb25zdCBU
Jik7CgojIDIyNzUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJh
eS5oIgoKCnB1YmxpYzoKICAgICAKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGNsYXNzIFRf
dXBkYXRlPgogICAgaW5saW5lIFRfYXJyYXkmIGV2YWx1YXRlKFRfZXhwciBleHByLCBUX3VwZGF0
ZSk7CgoKICAgIHRlbXBsYXRlPGNsYXNzIFRfZXhwciwgY2xhc3MgVF91cGRhdGU+CiAgICBpbmxp
bmUgVF9hcnJheSYgZXZhbHVhdGVXaXRoRmFzdFRyYXZlcnNhbCgKICAgICAgICBjb25zdCBUcmF2
ZXJzYWxPcmRlcjxOX3JhbmsgLSAxPiYgb3JkZXIsIAogICAgICAgIFRfZXhwciBleHByLCBUX3Vw
ZGF0ZSk7CgoKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGNsYXNzIFRfdXBkYXRlPgogICAg
aW5saW5lIFRfYXJyYXkmIGV2YWx1YXRlV2l0aFRpbGVkMkRUcmF2ZXJzYWwoCiAgICAgICAgVF9l
eHByIGV4cHIsIFRfdXBkYXRlKTsKCgogICAgdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBU
X3VwZGF0ZT4KICAgIGlubGluZSBUX2FycmF5JiBldmFsdWF0ZVdpdGhJbmRleFRyYXZlcnNhbDEo
CiAgICAgICAgVF9leHByIGV4cHIsIFRfdXBkYXRlKTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4
cHIsIGNsYXNzIFRfdXBkYXRlPgogICAgaW5saW5lIFRfYXJyYXkmIGV2YWx1YXRlV2l0aEluZGV4
VHJhdmVyc2FsTigKICAgICAgICBUX2V4cHIgZXhwciwgVF91cGRhdGUpOwoKICAgIHRlbXBsYXRl
PGNsYXNzIFRfZXhwciwgY2xhc3MgVF91cGRhdGU+CiAgICBpbmxpbmUgVF9hcnJheSYgZXZhbHVh
dGVXaXRoU3RhY2tUcmF2ZXJzYWwxKAogICAgICAgIFRfZXhwciBleHByLCBUX3VwZGF0ZSk7Cgog
ICAgdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3VwZGF0ZT4KICAgIGlubGluZSBUX2Fy
cmF5JiBldmFsdWF0ZVdpdGhTdGFja1RyYXZlcnNhbE4oCiAgICAgICAgVF9leHByIGV4cHIsIFRf
dXBkYXRlKTsKCgogICAgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18gIGdldEluaXRpYWxpemF0aW9u
SXRlcmF0b3IoKQogICAgeyByZXR1cm4gZGF0YUZpcnN0KCk7IH0KCiAgICBib29sICBjYW5Db2xs
YXBzZShpbnQgb3V0ZXJSYW5rLCBpbnQgaW5uZXJSYW5rKSBjb25zdAogICAgeyAKCgoKCgogICAg
ICAgIHJldHVybiAoc3RyaWRlKGlubmVyUmFuaykgKiBleHRlbnQoaW5uZXJSYW5rKSA9PSBzdHJp
ZGUob3V0ZXJSYW5rKSk7IAogICAgfQoKcHJvdGVjdGVkOgogICAgIAogICAgIAogICAgIAoKICAg
IGlubGluZSAgdm9pZCBjb21wdXRlU3RyaWRlcygpOwogICAgaW5saW5lICB2b2lkIHNldHVwU3Rv
cmFnZShpbnQgcmFuayk7CiAgICB2b2lkIGNvbnN0cnVjdFN1YmFycmF5KEFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rPiYgYXJyYXksIAogICAgICAgIGNvbnN0IFJlY3REb21haW48Tl9yYW5rPiYpOwog
ICAgdm9pZCBjb25zdHJ1Y3RTdWJhcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5
LCBSYW5nZSByMCk7CiAgICB2b2lkIGNvbnN0cnVjdFN1YmFycmF5KEFycmF5PFRfbnVtdHlwZSwg
Tl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLCBSYW5nZSByMSk7CiAgICB2b2lkIGNvbnN0cnVjdFN1
YmFycmF5KEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLAogICAgICAg
IFJhbmdlIHIxLCBSYW5nZSByMik7CiAgICB2b2lkIGNvbnN0cnVjdFN1YmFycmF5KEFycmF5PFRf
bnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLAogICAgICAgIFJhbmdlIHIxLCBSYW5n
ZSByMiwgUmFuZ2UgcjMpOwogICAgdm9pZCBjb25zdHJ1Y3RTdWJhcnJheShBcnJheTxUX251bXR5
cGUsIE5fcmFuaz4mIGFycmF5LCBSYW5nZSByMCwKICAgICAgICBSYW5nZSByMSwgUmFuZ2UgcjIs
IFJhbmdlIHIzLCBSYW5nZSByNCk7CiAgICB2b2lkIGNvbnN0cnVjdFN1YmFycmF5KEFycmF5PFRf
bnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLAogICAgICAgIFJhbmdlIHIxLCBSYW5n
ZSByMiwgUmFuZ2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSk7CiAgICB2b2lkIGNvbnN0cnVjdFN1
YmFycmF5KEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLAogICAgICAg
IFJhbmdlIHIxLCBSYW5nZSByMiwgUmFuZ2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2Ug
cjYpOwogICAgdm9pZCBjb25zdHJ1Y3RTdWJhcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4m
IGFycmF5LCBSYW5nZSByMCwKICAgICAgICBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBS
YW5nZSByNCwgUmFuZ2UgcjUsIFJhbmdlIHI2LAogICAgICAgIFJhbmdlIHI3KTsKICAgIHZvaWQg
Y29uc3RydWN0U3ViYXJyYXkoQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFuZ2Ug
cjAsCiAgICAgICAgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsIFJhbmdl
IHI1LCBSYW5nZSByNiwKICAgICAgICBSYW5nZSByNywgUmFuZ2UgcjgpOwogICAgdm9pZCBjb25z
dHJ1Y3RTdWJhcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBSYW5nZSByMCwK
ICAgICAgICBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBSYW5nZSByNCwgUmFuZ2UgcjUs
IFJhbmdlIHI2LAogICAgICAgIFJhbmdlIHI3LCBSYW5nZSByOCwgUmFuZ2UgcjkpOwogICAgdm9p
ZCBjb25zdHJ1Y3RTdWJhcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBSYW5n
ZSByMCwKICAgICAgICBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBSYW5nZSByNCwgUmFu
Z2UgcjUsIFJhbmdlIHI2LAogICAgICAgIFJhbmdlIHI3LCBSYW5nZSByOCwgUmFuZ2UgcjksIFJh
bmdlIHIxMCk7CgogICAgdm9pZCBjYWxjdWxhdGVaZXJvT2Zmc2V0KCk7CgogICAgdGVtcGxhdGU8
aW50IE5fcmFuazIsIGNsYXNzIFIwLCBjbGFzcyBSMSwgY2xhc3MgUjIsIGNsYXNzIFIzLCBjbGFz
cyBSNCwgCiAgICAgICAgY2xhc3MgUjUsIGNsYXNzIFI2LCBjbGFzcyBSNywgY2xhc3MgUjgsIGNs
YXNzIFI5LCBjbGFzcyBSMTA+CiAgICB2b2lkIGNvbnN0cnVjdFNsaWNlKEFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rMj4mIGFycmF5LCBSMCByMCwgUjEgcjEsIFIyIHIyLCAKICAgICAgICBSMyByMywg
UjQgcjQsIFI1IHI1LCBSNiByNiwgUjcgcjcsIFI4IHI4LCBSOSByOSwgUjEwIHIxMCk7CgogICAg
dGVtcGxhdGU8aW50IE5fcmFuazI+CiAgICB2b2lkIHNsaWNlKGludCYgc2V0UmFuaywgUmFuZ2Ug
ciwgQXJyYXk8VF9udW10eXBlLE5fcmFuazI+JiBhcnJheSwKICAgICAgICBUaW55VmVjdG9yPGlu
dCxOX3JhbmsyPiYgcmFua01hcCwgaW50IHNvdXJjZVJhbmspOwoKICAgIHRlbXBsYXRlPGludCBO
X3JhbmsyPgogICAgdm9pZCBzbGljZShpbnQmIHNldFJhbmssIGludCBpLCBBcnJheTxUX251bXR5
cGUsTl9yYW5rMj4mIGFycmF5LAogICAgICAgIFRpbnlWZWN0b3I8aW50LE5fcmFuazI+JiByYW5r
TWFwLCBpbnQgc291cmNlUmFuayk7CgogICAgdGVtcGxhdGU8aW50IE5fcmFuazI+CiAgICB2b2lk
IHNsaWNlKGludCYgc2V0UmFuaywgbmlsQXJyYXlTZWN0aW9uLCBBcnJheTxUX251bXR5cGUsTl9y
YW5rMj4mIGFycmF5LAogICAgICAgIFRpbnlWZWN0b3I8aW50LE5fcmFuazI+JiByYW5rTWFwLCBp
bnQgc291cmNlUmFuaykKICAgIHsgfQoKICAgIHZvaWQgZG9UcmFuc3Bvc2UoaW50IGRlc3RSYW5r
LCBpbnQgc291cmNlUmFuaywgVF9hcnJheSYgYXJyYXkpOwoKcHJvdGVjdGVkOgogICAgIAogICAg
IAogICAgIAoKICAgICAKCiAgICAgCgoKCgoKCgoKCgoKCgoKICAgIEdlbmVyYWxBcnJheVN0b3Jh
Z2U8Tl9yYW5rPiBzdG9yYWdlXzsKICAgIFRpbnlWZWN0b3I8aW50LCBOX3Jhbms+IGxlbmd0aF87
CiAgICBUaW55VmVjdG9yPGludCwgTl9yYW5rPiBzdHJpZGVfOwogICAgaW50IHplcm9PZmZzZXRf
Owp9OwoKIAoKCgoKCgoKCgoKCmNvbnN0IGludCBmaXJzdFJhbmsgICAgPSAwOwpjb25zdCBpbnQg
c2Vjb25kUmFuayAgID0gMTsKY29uc3QgaW50IHRoaXJkUmFuayAgICA9IDI7CmNvbnN0IGludCBm
b3VydGhSYW5rICAgPSAzOwpjb25zdCBpbnQgZmlmdGhSYW5rICAgID0gNDsKY29uc3QgaW50IHNp
eHRoUmFuayAgICA9IDU7CmNvbnN0IGludCBzZXZlbnRoUmFuayAgPSA2Owpjb25zdCBpbnQgZWln
aHRoUmFuayAgID0gNzsKY29uc3QgaW50IG5pbnRoUmFuayAgICA9IDg7CmNvbnN0IGludCB0ZW50
aFJhbmsgICAgPSA5Owpjb25zdCBpbnQgZWxldmVudGhSYW5rID0gMTA7Cgpjb25zdCBpbnQgZmly
c3REaW0gICAgPSAwOwpjb25zdCBpbnQgc2Vjb25kRGltICAgPSAxOwpjb25zdCBpbnQgdGhpcmRE
aW0gICAgPSAyOwpjb25zdCBpbnQgZm91cnRoRGltICAgPSAzOwpjb25zdCBpbnQgZmlmdGhEaW0g
ICAgPSA0Owpjb25zdCBpbnQgc2l4dGhEaW0gICAgPSA1Owpjb25zdCBpbnQgc2V2ZW50aERpbSAg
PSA2Owpjb25zdCBpbnQgZWlnaHRoRGltICAgPSA3Owpjb25zdCBpbnQgbmludGhEaW0gICAgPSA4
Owpjb25zdCBpbnQgdGVudGhEaW0gICAgPSA5Owpjb25zdCBpbnQgZWxldmVudGhEaW0gPSAxMDsK
CiAKCgoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlPgpvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJl
YW0mLCBjb25zdCBBcnJheTxUX251bXR5cGUsMT4mKTsKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZT4Kb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiwgY29uc3QgQXJyYXk8VF9udW10eXBlLDI+
Jik7Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+Cm9zdHJlYW0mIG9wZXJh
dG9yPDwob3N0cmVhbSYsIGNvbnN0IEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+Jik7Cgp0ZW1wbGF0
ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CmlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVh
bSYgaXMsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiB4KTsKCn0gCgogCgoKCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9pdGVyLmgiIDEKCgoKCgoj
ZGVmaW5lIEJaX0FSUkFZX0lURVJfSAoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnN0cnVjdCBfYnpf
ZW5kVGFnIHsgfTsKCgp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4KY2xhc3MgQ29uc3RBcnJheUl0
ZXJhdG9yIHsKCnB1YmxpYzoKICAgIENvbnN0QXJyYXlJdGVyYXRvcihjb25zdCBBcnJheTxULE4+
JiBhcnJheSkKICAgIHsKICAgICAgICAgCiAgICAgICAgIAogICAgICAgIHN0cmlkZXNfID0gYXJy
YXkuc3RyaWRlKCk7CiAgICAgICAgbGJvdW5kXyA9IGFycmF5Lmxib3VuZCgpOwogICAgICAgIGV4
dGVudF8gPSBhcnJheS5leHRlbnQoKTsKICAgICAgICBvcmRlcl8gPSBhcnJheS5vcmRlcmluZygp
OwogICAgICAgIGZpcnN0XyA9IGNvbnN0X2Nhc3Q8VCo+KGFycmF5LmRhdGFGaXJzdCgpKTsKICAg
ICAgICBkYXRhXyA9IGZpcnN0XzsKCiAgICAgICAgbWF4UmFua18gPSBvcmRlcl8oMCk7CiAgICAg
ICAgc3RyaWRlXyA9IHN0cmlkZXNfKG1heFJhbmtfKTsKCiAgICAgICAgZm9yIChpbnQgaT0wOyBp
IDwgTjsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgc3RhY2tfW2ldID0gZGF0YV87CiAgICAg
ICAgICAgIGxhc3RfW2ldID0gZGF0YV8gKyBhcnJheS5leHRlbnQob3JkZXJfKGkpKSAgCiAgICAg
ICAgICAgICAgICAqIHN0cmlkZXNfKG9yZGVyXyhpKSk7CiAgICAgICAgfQoKICAgICAgICBwb3Nf
ID0gbGJvdW5kXzsKICAgIH0KCiAgICBDb25zdEFycmF5SXRlcmF0b3IoY29uc3QgQXJyYXk8VCxO
PiYgYXJyYXksIF9iel9lbmRUYWcpCiAgICB7CiAgICAgICAgIAogICAgICAgICAKICAgICAgICAg
CgogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAogICAgICAgIGRhdGFfID0gMDsKICAgIH0K
CiAgICBUIG9wZXJhdG9yKigpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKCiAgICAgICAgcmV0dXJu
ICpkYXRhXzsKICAgIH0KCiAgICBjb25zdCBUKiBfX3Jlc3RyaWN0X18gIG9wZXJhdG9yLT4oKSBj
b25zdAogICAgewogICAgICAgICA7CgogICAgICAgIHJldHVybiBkYXRhXzsKICAgIH0KCiAgICBD
b25zdEFycmF5SXRlcmF0b3I8VCxOPiYgb3BlcmF0b3IrKygpOwoKICAgICAKICAgICAKICAgICAK
ICAgICAKICAgICAKICAgICAKICAgICAKICAgICAKICAgICAKICAgICAKICAgIHZvaWQgb3BlcmF0
b3IrKyhpbnQpCiAgICB7ICsrKCp0aGlzKTsgfQoKICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50LE4+
JiBwb3NpdGlvbigpIGNvbnN0CiAgICB7IAogICAgICAgICA7CgogICAgICAgIHJldHVybiBwb3Nf
OyAKICAgIH0KICAgCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29uc3RBcnJheUl0ZXJhdG9y
PFQsTj4mIHgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGRhdGFfID09IHguZGF0YV87CiAg
ICB9CgogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbnN0QXJyYXlJdGVyYXRvcjxULE4+JiB4
KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBkYXRhXyAhPSB4LmRhdGFfOwogICAgfQogCnBy
aXZhdGU6CiAgICBDb25zdEFycmF5SXRlcmF0b3IoKSB7IH0KCnByaXZhdGU6CiAgICBUaW55VmVj
dG9yPGludCxOPiBzdHJpZGVzXywgbGJvdW5kXywgZXh0ZW50Xywgb3JkZXJfOwogICAgVCAqIHN0
YWNrX1tOXTsKICAgIFQgKiBsYXN0X1tOXTsKICAgIGludCBzdHJpZGVfOwogICAgaW50IG1heFJh
bmtfOwoKcHJvdGVjdGVkOgogICAgVGlueVZlY3RvcjxpbnQsTj4gcG9zXzsKICAgIFQgKiBfX3Jl
c3RyaWN0X18gIGRhdGFfOwogICAgVCAqIF9fcmVzdHJpY3RfXyAgZmlyc3RfOwp9OwoKCgp0ZW1w
bGF0ZTxjbGFzcyBULCBpbnQgTj4KY2xhc3MgQXJyYXlJdGVyYXRvciA6IHB1YmxpYyBDb25zdEFy
cmF5SXRlcmF0b3I8VCxOPiB7CiAgcHVibGljOgogICAgQXJyYXlJdGVyYXRvcihBcnJheTxULE4+
JiB4KQogICAgICA6IENvbnN0QXJyYXlJdGVyYXRvcjxULE4+KHgpCiAgICB7IH0KCiAgICBBcnJh
eUl0ZXJhdG9yKEFycmF5PFQsTj4mIHgsIF9iel9lbmRUYWcgeSkKICAgICAgOiBDb25zdEFycmF5
SXRlcmF0b3I8VCxOPih4LHkpCiAgICB7IH0KCiAgICBBcnJheUl0ZXJhdG9yPFQsTj4mIG9wZXJh
dG9yKysoKQogICAgewogICAgICAgIENvbnN0QXJyYXlJdGVyYXRvcjxULE4+OjpvcGVyYXRvcisr
KCk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIFQmIG9wZXJhdG9yKigpCiAgICB7
CiAgICAgICAgcmV0dXJuICpkYXRhXzsKICAgIH0KCiAgICBUKiBfX3Jlc3RyaWN0X18gIG9wZXJh
dG9yLT4oKSAKICAgIHsKICAgICAgICByZXR1cm4gZGF0YV87CiAgICB9Cn07CgoKCnRlbXBsYXRl
PGNsYXNzIFQsIGludCBOPgpDb25zdEFycmF5SXRlcmF0b3I8VCxOPiYgQ29uc3RBcnJheUl0ZXJh
dG9yPFQsTj46Om9wZXJhdG9yKysoKQp7CiAgICAgOwoKICAgIGRhdGFfICs9IHN0cmlkZV87Cgog
ICAgaWYgKGRhdGFfICE9IGxhc3RfWzBdKQogICAgewogICAgICAgICAKICAgICAgICArK3Bvc19b
bWF4UmFua19dOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICAgCiAgICAgCgogICAg
aW50IGogPSAxOwogICAgZm9yICg7IGogPCBOOyArK2opCiAgICB7CiAgICAgICAgaW50IHIgPSBv
cmRlcl8oaik7CiAgICAgICAgZGF0YV8gPSBzdGFja19bal07CiAgICAgICAgZGF0YV8gKz0gc3Ry
aWRlc19bcl07CiAgICAgICAgKytwb3NfKHIpOwoKICAgICAgICBpZiAoZGF0YV8gIT0gbGFzdF9b
al0pCiAgICAgICAgICAgIGJyZWFrOwogICAgfQoKICAgICAKICAgIGlmIChqID09IE4pCiAgICB7
CiAgICAgICAgIAogICAgICAgICAKICAgICAgICBkYXRhXyA9IDA7CiAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgfQoKICAgIHN0YWNrX1tqXSA9IGRhdGFfOwoKICAgICAKICAgIGZvciAoLS1qOyBq
ID49IDA7IC0taikKICAgIHsKICAgICAgICBpbnQgcjIgPSBvcmRlcl8oaik7CiAgICAgICAgc3Rh
Y2tfW2pdID0gZGF0YV87CiAgICAgICAgbGFzdF9bal0gPSBkYXRhXyArIGV4dGVudF8ocjIpICog
c3RyaWRlc18ocjIpOwogICAgICAgIHBvc18ocjIpID0gbGJvdW5kXyhyMik7CiAgICB9CgogICAg
cmV0dXJuICp0aGlzOwp9Cgp9IAoKCgojIDI0NjkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei9hcnJheS9mYXN0aXRlci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9BUlJBWV9GQVNUSVRFUl9ICgoKIAojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Ryc3RyZWFtIiAxIDMK
IAogCgoKI2RlZmluZSBfX1NUUlNUUkVBTV9fCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4v
Li4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJzdHJlYW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKI2RlZmluZSBfX1NUUlNUUkVBTV9ICgojcHJhZ21hIGludGVyZmFjZQoKCiMg
MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJmaWxl
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHZv
aWQgKigqX0lPX2FsbG9jX3R5cGUpICAoc2l6ZV90ICApICA7CnR5cGVkZWYgdm9pZCAoKl9JT19m
cmVlX3R5cGUpICAodm9pZCopICA7CgpzdHJ1Y3QgX0lPX3N0cl9maWVsZHMKewogIF9JT19hbGxv
Y190eXBlIF9hbGxvY2F0ZV9idWZmZXI7CiAgX0lPX2ZyZWVfdHlwZSBfZnJlZV9idWZmZXI7Cn07
CgogCgoKCgpzdHJ1Y3QgX0lPX3N0cmVhbWJ1Zgp7CiAgc3RydWN0IF9JT19GSUxFIF9mOwogIGNv
bnN0IHZvaWQgKl92dGFibGU7Cn07Cgp0eXBlZGVmIHN0cnVjdCBfSU9fc3RyZmlsZV8KewogIHN0
cnVjdCBfSU9fc3RyZWFtYnVmIF9zYmY7CiAgc3RydWN0IF9JT19zdHJfZmllbGRzIF9zOwp9IF9J
T19zdHJmaWxlOwoKIAoKI2RlZmluZSBfSU9fU1RSX0RZTkFNSUMoRlApICgoRlApLT5fcy5fYWxs
b2NhdGVfYnVmZmVyICE9IChfSU9fYWxsb2NfdHlwZSkwKQoKIAoKI2RlZmluZSBfSU9fU1RSX0ZS
T1pFTihGUCkgKChGUCktPl9mLl9JT19maWxlX2ZsYWdzICYgX0lPX1VTRVJfQlVGKQojIDMzICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cnN0cmVhbS5o
IiAyIDMKCgpleHRlcm4gIkMrKyIgewpjbGFzcyBzdHJzdHJlYW1idWYgOiBwdWJsaWMgc3RyZWFt
YnVmCnsKICBzdHJ1Y3QgX0lPX3N0cl9maWVsZHMgX3M7CiAgZnJpZW5kIGNsYXNzIGlzdHJzdHJl
YW07CgogICAgdm9pZCBpbml0X2R5bmFtaWMoX0lPX2FsbG9jX3R5cGUgYWxsb2MsIF9JT19mcmVl
X3R5cGUgZnJlZSwKCQkgICAgICBpbnQgaW5pdGlhbF9zaXplID0gMCk7CiAgICB2b2lkIGluaXRf
c3RhdGljKGNoYXIgKnB0ciwgaW50IHNpemUsIGNoYXIgKnBzdGFydCk7CiAgICB2b2lkIGluaXRf
cmVhZG9ubHkoY29uc3QgY2hhciAqcHRyLCBpbnQgc2l6ZSk7CiAgcHJvdGVjdGVkOgogICAgdmly
dHVhbCBpbnQgb3ZlcmZsb3coaW50ID0gKC0xKSApOwogICAgdmlydHVhbCBpbnQgdW5kZXJmbG93
KCk7CiAgICB2aXJ0dWFsIGludCBwYmFja2ZhaWwoaW50IGMpOwogIHB1YmxpYzoKICAgIHZpcnR1
YWwgfnN0cnN0cmVhbWJ1ZigpOwogICAgc3Ryc3RyZWFtYnVmKCkgeyBpbml0X2R5bmFtaWMoMCwg
MCk7IH0KICAgIHN0cnN0cmVhbWJ1ZihpbnQgaW5pdGlhbF9zaXplKSB7IGluaXRfZHluYW1pYygw
LCAwLCBpbml0aWFsX3NpemUpOyB9CiAgICBzdHJzdHJlYW1idWYodm9pZCAqKCpfX2FsbG9jKShz
aXplX3QgICksIHZvaWQgKCpfX2ZyZWUpKHZvaWQqKSkKCXsgaW5pdF9keW5hbWljKF9fYWxsb2Ms
IF9fZnJlZSk7IH0KICAgIHN0cnN0cmVhbWJ1ZihjaGFyICpwdHIsIGludCBzaXplLCBjaGFyICpw
c3RhcnQgPSBfX251bGwgKQoJeyBpbml0X3N0YXRpYyhwdHIsIHNpemUsIHBzdGFydCk7IH0KICAg
IHN0cnN0cmVhbWJ1Zih1bnNpZ25lZCBjaGFyICpwdHIsIGludCBzaXplLCB1bnNpZ25lZCBjaGFy
ICpwc3RhcnQgPSBfX251bGwgKQoJeyBpbml0X3N0YXRpYygoY2hhciopcHRyLCBzaXplLCAoY2hh
ciopcHN0YXJ0KTsgfQogICAgc3Ryc3RyZWFtYnVmKGNvbnN0IGNoYXIgKnB0ciwgaW50IHNpemUp
Cgl7IGluaXRfcmVhZG9ubHkocHRyLCBzaXplKTsgfQogICAgc3Ryc3RyZWFtYnVmKGNvbnN0IHVu
c2lnbmVkIGNoYXIgKnB0ciwgaW50IHNpemUpCgl7IGluaXRfcmVhZG9ubHkoKGNvbnN0IGNoYXIq
KXB0ciwgc2l6ZSk7IH0KICAgIHN0cnN0cmVhbWJ1ZihzaWduZWQgY2hhciAqcHRyLCBpbnQgc2l6
ZSwgc2lnbmVkIGNoYXIgKnBzdGFydCA9IF9fbnVsbCApCgl7IGluaXRfc3RhdGljKChjaGFyKilw
dHIsIHNpemUsIChjaGFyKilwc3RhcnQpOyB9CiAgICBzdHJzdHJlYW1idWYoY29uc3Qgc2lnbmVk
IGNoYXIgKnB0ciwgaW50IHNpemUpCgl7IGluaXRfcmVhZG9ubHkoKGNvbnN0IGNoYXIqKXB0ciwg
c2l6ZSk7IH0KICAgICAKICAgIGludCBmcm96ZW4oKSB7IHJldHVybiBfZmxhZ3MgJiAxICA/IDEg
OiAwOyB9CiAgICB2b2lkIGZyZWV6ZShpbnQgbj0xKQoJeyBpZiAoKCggdGhpcyApLT5fcy5fYWxs
b2NhdGVfYnVmZmVyICE9IChfSU9fYWxsb2NfdHlwZSkwKSApCgkgICAgeyBpZiAobikgX2ZsYWdz
IHw9IDEgOyBlbHNlIF9mbGFncyAmPSB+MSA7IH0gfQogICAgX19zc2l6ZV90ICAgcGNvdW50KCk7
CiAgICBjaGFyICpzdHIoKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2Zm
LCBfc2Vla19kaXIsIGludCBtb2RlPWlvczo6aW58aW9zOjpvdXQpOwp9OwoKY2xhc3Mgc3Ryc3Ry
ZWFtYmFzZSA6IHZpcnR1YWwgcHVibGljIGlvcyB7CiAgcHJvdGVjdGVkOgogICAgc3Ryc3RyZWFt
YnVmIF9fbXlfc2I7CiAgcHVibGljOgogICAgc3Ryc3RyZWFtYnVmKiByZGJ1ZigpIHsgcmV0dXJu
ICZfX215X3NiOyB9CiAgcHJvdGVjdGVkOgogICAgc3Ryc3RyZWFtYmFzZSgpIHsgaW5pdCAoJl9f
bXlfc2IpOyB9CiAgICBzdHJzdHJlYW1iYXNlKGNoYXIgKmNwLCBpbnQgbiwgaW50IG1vZGU9aW9z
OjpvdXQpOwp9OwoKY2xhc3MgaXN0cnN0cmVhbSA6IHB1YmxpYyBzdHJzdHJlYW1iYXNlLCBwdWJs
aWMgaXN0cmVhbSB7CiAgcHVibGljOgogICAgaXN0cnN0cmVhbShjb25zdCBjaGFyKiwgaW50PTAp
Owp9OwoKY2xhc3Mgb3N0cnN0cmVhbSA6IHB1YmxpYyBzdHJzdHJlYW1iYXNlLCBwdWJsaWMgb3N0
cmVhbSB7CiAgcHVibGljOgogICAgb3N0cnN0cmVhbSgpIHsgfQogICAgb3N0cnN0cmVhbShjaGFy
ICpjcCwgaW50IG4sIGludCBtb2RlPWlvczo6b3V0KSA6c3Ryc3RyZWFtYmFzZShjcCxuLG1vZGUp
e30KICAgIF9fc3NpemVfdCAgIHBjb3VudCgpIHsgcmV0dXJuICgoc3Ryc3RyZWFtYnVmKilfc3Ry
YnVmKS0+cGNvdW50KCk7IH0KICAgIGNoYXIgKnN0cigpIHsgcmV0dXJuICgoc3Ryc3RyZWFtYnVm
Kilfc3RyYnVmKS0+c3RyKCk7IH0KICAgIHZvaWQgZnJlZXplKGludCBuID0gMSkgeyAoKHN0cnN0
cmVhbWJ1ZiopX3N0cmJ1ZiktPmZyZWV6ZShuKTsgfQogICAgaW50IGZyb3plbigpIHsgcmV0dXJu
ICgoc3Ryc3RyZWFtYnVmKilfc3RyYnVmKS0+ZnJvemVuKCk7IH0KfTsKCmNsYXNzIHN0cnN0cmVh
bSA6IHB1YmxpYyBzdHJzdHJlYW1iYXNlLCBwdWJsaWMgaW9zdHJlYW0gewogIHB1YmxpYzoKICBz
dHJzdHJlYW0oKSB7IH0KICAgIHN0cnN0cmVhbShjaGFyICpjcCwgaW50IG4sIGludCBtb2RlPWlv
czo6b3V0KSA6c3Ryc3RyZWFtYmFzZShjcCxuLG1vZGUpe30KICAgIF9fc3NpemVfdCAgIHBjb3Vu
dCgpIHsgcmV0dXJuICgoc3Ryc3RyZWFtYnVmKilfc3RyYnVmKS0+cGNvdW50KCk7IH0KICAgIGNo
YXIgKnN0cigpIHsgcmV0dXJuICgoc3Ryc3RyZWFtYnVmKilfc3RyYnVmKS0+c3RyKCk7IH0KICAg
IHZvaWQgZnJlZXplKGludCBuID0gMSkgeyAoKHN0cnN0cmVhbWJ1ZiopX3N0cmJ1ZiktPmZyZWV6
ZShuKTsgfQogICAgaW50IGZyb3plbigpIHsgcmV0dXJuICgoc3Ryc3RyZWFtYnVmKilfc3RyYnVm
KS0+ZnJvemVuKCk7IH0KfTsKfSAgCgoKIyA2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8u
Li8uLi9pbmNsdWRlL2crKy0zL3N0cnN0cmVhbSIgMiAzCgoKIyA0MSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2Zhc3RpdGVyLmgiIDIKCgoKCgpuYW1lc3Bh
Y2UgIGJsaXR6ICB7IAoKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4K
Y2xhc3MgRmFzdEFycmF5SXRlcmF0b3IgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZSAg
ICAgICAgICAgICAgICBUX251bXR5cGU7CiAgICB0eXBlZGVmIEFycmF5PFRfbnVtdHlwZSwgTl9y
YW5rPiBUX2FycmF5OwogICAgdHlwZWRlZiBGYXN0QXJyYXlJdGVyYXRvcjxQX251bXR5cGUsIE5f
cmFuaz4gVF9pdGVyYXRvcjsKICAgIHR5cGVkZWYgY29uc3QgVF9hcnJheSYgVF9jdG9yQXJnMTsK
ICAgIHR5cGVkZWYgaW50ICAgICAgICAgICAgVF9jdG9yQXJnMjsgICAgIAoKICAgIGVudW0geyBu
dW1BcnJheU9wZXJhbmRzID0gMSwgbnVtSW5kZXhQbGFjZWhvbGRlcnMgPSAwLAogICAgICAgIHJh
bmsgPSBOX3JhbmsgfTsKCiAgICAgCiAgICAgCiAgICBGYXN0QXJyYXlJdGVyYXRvcihjb25zdCBG
YXN0QXJyYXlJdGVyYXRvcjxQX251bXR5cGUsIE5fcmFuaz4mIHgpCiAgICAgICAgOiBkYXRhXyh4
LmRhdGFfKSwgYXJyYXlfKHguYXJyYXlfKQogICAgeyB9CgogICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgRmFzdEFycmF5SXRlcmF0b3I8UF9udW10eXBlLCBOX3Jhbms+JiB4KQogICAgewogICAgICAg
IGFycmF5XyA9IHguYXJyYXlfOwogICAgICAgIGRhdGFfID0geC5kYXRhXzsKICAgICAgICBzdGFj
a18gPSB4LnN0YWNrXzsKICAgICAgICBzdHJpZGVfID0geC5zdHJpZGVfOwogICAgfQoKICAgIEZh
c3RBcnJheUl0ZXJhdG9yKGNvbnN0IFRfYXJyYXkmIGFycmF5KQogICAgICAgIDogYXJyYXlfKGFy
cmF5KQogICAgewogICAgICAgIGRhdGFfICAgPSBhcnJheS5kYXRhKCk7CiAgICB9CgogICAgfkZh
c3RBcnJheUl0ZXJhdG9yKCkKICAgIHsgfQoKCgoKCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShj
b25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgaSkKICAgIHsgcmV0dXJuIGFycmF5XyhpKTsg
fQoKCiAgICBpbnQgYXNjZW5kaW5nKGludCByYW5rKQogICAgewogICAgICAgIGlmIChyYW5rIDwg
Tl9yYW5rKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmlzUmFua1N0b3JlZEFzY2VuZGluZyhy
YW5rKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiAoLSAyMTQ3NDgzNjQ3ICAtMSkg
OyAgICAKICAgIH0KCiAgICBpbnQgb3JkZXJpbmcoaW50IHJhbmspCiAgICB7CiAgICAgICAgaWYg
KHJhbmsgPCBOX3JhbmspCiAgICAgICAgICAgIHJldHVybiBhcnJheV8ub3JkZXJpbmcocmFuayk7
CiAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gKC0gMjE0NzQ4MzY0NyAgLTEpIDsgICAg
CiAgICB9CgogICAgaW50IGxib3VuZChpbnQgcmFuaykKICAgIHsgCiAgICAgICAgaWYgKHJhbmsg
PCBOX3JhbmspCiAgICAgICAgICAgIHJldHVybiBhcnJheV8ubGJvdW5kKHJhbmspOyAKICAgICAg
ICBlbHNlCiAgICAgICAgICAgIHJldHVybiAoLSAyMTQ3NDgzNjQ3ICAtMSkgOyAgICAKICAgIH0K
CiAgICBpbnQgdWJvdW5kKGludCByYW5rKQogICAgeyAKICAgICAgICBpZiAocmFuayA8IE5fcmFu
aykKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy51Ym91bmQocmFuayk7IAogICAgICAgIGVsc2UK
ICAgICAgICAgICAgcmV0dXJuIDIxNDc0ODM2NDcgIDsgICAgCiAgICB9CgogICAgVF9udW10eXBl
IG9wZXJhdG9yKigpCiAgICB7IHJldHVybiAqZGF0YV87IH0KCiAgICBUX251bXR5cGUgb3BlcmF0
b3JbXShpbnQgaSkKICAgIHsgcmV0dXJuIGRhdGFfW2kgKiBzdHJpZGVfXTsgfQoKICAgIFRfbnVt
dHlwZSBmYXN0UmVhZChpbnQgaSkKICAgIHsgcmV0dXJuIGRhdGFfW2ldOyB9CgogICAgaW50IHN1
Z2dlc3RTdHJpZGUoaW50IHJhbmspIGNvbnN0CiAgICB7IHJldHVybiBhcnJheV8uc3RyaWRlKHJh
bmspOyB9CgogICAgYm9vbCAgaXNTdHJpZGUoaW50IHJhbmssIGludCBzdHJpZGUpIGNvbnN0CiAg
ICB7IHJldHVybiBhcnJheV8uc3RyaWRlKHJhbmspID09IHN0cmlkZTsgfQoKICAgIHZvaWQgcHVz
aChpbnQgcG9zaXRpb24pCiAgICB7CiAgICAgICAgc3RhY2tfW3Bvc2l0aW9uXSA9IGRhdGFfOwog
ICAgfQogIAogICAgdm9pZCBwb3AoaW50IHBvc2l0aW9uKQogICAgeyAKICAgICAgICBkYXRhXyA9
IHN0YWNrX1twb3NpdGlvbl07CiAgICB9CgogICAgdm9pZCBhZHZhbmNlKCkKICAgIHsKICAgICAg
ICBkYXRhXyArPSBzdHJpZGVfOwogICAgfQoKICAgIHZvaWQgYWR2YW5jZShpbnQgbikKICAgIHsK
ICAgICAgICBkYXRhXyArPSBuICogc3RyaWRlXzsKICAgIH0KCiAgICB2b2lkIGxvYWRTdHJpZGUo
aW50IHJhbmspCiAgICB7CiAgICAgICAgc3RyaWRlXyA9IGFycmF5Xy5zdHJpZGUocmFuayk7CiAg
ICB9CgogICAgY29uc3QgVF9udW10eXBlICogX19yZXN0cmljdF9fICBkYXRhKCkgY29uc3QKICAg
IHsgcmV0dXJuIGRhdGFfOyB9CgogICAgdm9pZCBfYnpfc2V0RGF0YShjb25zdCBUX251bXR5cGUq
IHB0cikKICAgIHsgZGF0YV8gPSBwdHI7IH0KCiAgICBpbnQgc3RyaWRlKCkgY29uc3QKICAgIHsg
cmV0dXJuIHN0cmlkZV87IH0KCiAgICBib29sICBpc1VuaXRTdHJpZGUoaW50IHJhbmspIGNvbnN0
CiAgICB7IHJldHVybiBhcnJheV8uc3RyaWRlKHJhbmspID09IDE7IH0KCiAgICB2b2lkIGFkdmFu
Y2VVbml0U3RyaWRlKCkKICAgIHsgKytkYXRhXzsgfQoKICAgIGJvb2wgIGNhbkNvbGxhcHNlKGlu
dCBvdXRlckxvb3BSYW5rLCBpbnQgaW5uZXJMb29wUmFuaykgY29uc3QKICAgIHsgcmV0dXJuIGFy
cmF5Xy5jYW5Db2xsYXBzZShvdXRlckxvb3BSYW5rLCBpbm5lckxvb3BSYW5rKTsgfQoKICAgIHZv
aWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQpIGNv
bnN0CiAgICB7CiAgICAgICAgaWYgKGZvcm1hdC50ZXJzZVByaW50aW5nU2VsZWN0ZWQoKSkKICAg
ICAgICAgICAgc3RyICs9IGZvcm1hdC5uZXh0QXJyYXlPcGVyYW5kU3ltYm9sKCk7CiAgICAgICAg
ZWxzZSBpZiAoZm9ybWF0LmR1bXBBcnJheVNoYXBlc01vZGUoKSkKICAgICAgICB7CiAgICAgICAg
ICAgIG9zdHJzdHJlYW0gb3N0cjsKICAgICAgICAgICAgb3N0ciA8PCBhcnJheV8uc2hhcGUoKTsK
ICAgICAgICAgICAgc3RyICs9IG9zdHIuc3RyKCk7CiAgICAgICAgfQogICAgICAgIGVsc2Ugewog
ICAgICAgICAgICBzdHIgKz0gIkFycmF5PCI7CiAgICAgICAgICAgIHN0ciArPSB0eXBlaWQoIFRf
bnVtdHlwZSApLm5hbWUoKSA7CiAgICAgICAgICAgIHN0ciArPSAiLCI7CgogICAgICAgICAgICBj
aGFyIHRtcEJ1ZlsxMF07CiAgICAgICAgICAgIHNwcmludGYodG1wQnVmLCAiJWQiLCBOX3Jhbmsp
OwoKICAgICAgICAgICAgc3RyICs9IHRtcEJ1ZjsKICAgICAgICAgICAgc3RyICs9ICI+IjsKICAg
ICAgICB9CiAgICB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVF9zaGFwZT4KICAgIGJvb2wgIHNoYXBl
Q2hlY2soY29uc3QgVF9zaGFwZSYgc2hhcGUpCiAgICB7IHJldHVybiBhcmVTaGFwZXNDb25mb3Jt
YWJsZShzaGFwZSwgYXJyYXlfLmxlbmd0aCgpKTsgfQoKCiAgICAgCiAgICBUX251bXR5cGUmIG9w
ZXJhdG9yKCkoaW50IGkpCiAgICB7CiAgICAgICAgcmV0dXJuIChUX251bXR5cGUmKWRhdGFfW2kq
YXJyYXlfLnN0cmlkZSgwKV07CiAgICB9CgogICAgIAogICAgVF9udW10eXBlJiBvcGVyYXRvcigp
KGludCBpLCBpbnQgaikKICAgIHsKICAgICAgICByZXR1cm4gKFRfbnVtdHlwZSYpZGF0YV9baSph
cnJheV8uc3RyaWRlKDApICsgaiphcnJheV8uc3RyaWRlKDEpXTsKICAgIH0KCiAgICAgCiAgICBU
X251bXR5cGUmIG9wZXJhdG9yKCkoaW50IGksIGludCBqLCBpbnQgaykKICAgIHsKICAgICAgICBy
ZXR1cm4gKFRfbnVtdHlwZSYpZGF0YV9baSphcnJheV8uc3RyaWRlKDApICsgaiphcnJheV8uc3Ry
aWRlKDEpCiAgICAgICAgICArIGsqYXJyYXlfLnN0cmlkZSgyKV07CiAgICB9CgogICAgIAoKICAg
IHZvaWQgbW92ZVRvKGludCBpLCBpbnQgaikKICAgIHsKICAgICAgICBkYXRhXyA9ICZjb25zdF9j
YXN0PFRfYXJyYXkmPihhcnJheV8pKGksaik7CiAgICB9CgogICAgdm9pZCBtb3ZlVG8oaW50IGks
IGludCBqLCBpbnQgaykKICAgIHsKICAgICAgICBkYXRhXyA9ICZjb25zdF9jYXN0PFRfYXJyYXkm
PihhcnJheV8pKGksaixrKTsKICAgIH0KCiAgICB2b2lkIG1vdmVUbyhjb25zdCBUaW55VmVjdG9y
PGludCxOX3Jhbms+JiBpKQogICAgewogICAgICAgIGRhdGFfID0gJmNvbnN0X2Nhc3Q8VF9hcnJh
eSY+KGFycmF5XykoaSk7CiAgICB9CgogICAgIAogICAgdm9pZCBvcGVyYXRvcj0oVF9udW10eXBl
IHgpCiAgeyAgICpjb25zdF9jYXN0PFRfbnVtdHlwZSogID4oZGF0YV8pID0geDsgfQoKICAgICAK
ICAgIHRlbXBsYXRlPGNsYXNzIFRfdmFsdWU+CiAgICB2b2lkIG9wZXJhdG9yPShUX3ZhbHVlIHgp
CiAgeyAgICpjb25zdF9jYXN0PFRfbnVtdHlwZSogID4oZGF0YV8pID0geDsgfQoKICAgICAKICAg
IHRlbXBsYXRlPGNsYXNzIFRfdmFsdWU+CiAgICB2b2lkIG9wZXJhdG9yKz0oVF92YWx1ZSB4KQog
IHsgKmNvbnN0X2Nhc3Q8VF9udW10eXBlKiAgPihkYXRhXykgKz0geDsgfQoKICAgICAKCiAgICAg
CiAgICBvcGVyYXRvciBUX251bXR5cGUoKSBjb25zdAogICAgeyByZXR1cm4gKmRhdGFfOyB9Cgog
ICAgIAogICAgVF9udW10eXBlIHNoaWZ0KGludCBvZmZzZXQsIGludCBkaW0pCiAgICB7CiAgICAg
ICAgcmV0dXJuIGRhdGFfW29mZnNldCphcnJheV8uc3RyaWRlKGRpbSldOwogICAgfQoKICAgICAK
ICAgIFRfbnVtdHlwZSBzaGlmdChpbnQgb2Zmc2V0MSwgaW50IGRpbTEsIGludCBvZmZzZXQyLCBp
bnQgZGltMikKICAgIHsKICAgICAgICByZXR1cm4gZGF0YV9bb2Zmc2V0MSphcnJheV8uc3RyaWRl
KGRpbTEpIAogICAgICAgICAgICArIG9mZnNldDIqYXJyYXlfLnN0cmlkZShkaW0yKV07CiAgICB9
Cgpwcml2YXRlOgogICAgY29uc3QgVF9udW10eXBlICogX19yZXN0cmljdF9fICAgICAgICAgICBk
YXRhXzsKICAgIGNvbnN0IFRfYXJyYXkmICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV87
CiAgICBjb25zdCBUX251bXR5cGUgKiAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tfW05fcmFu
a107CiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlXzsK
fTsKCn0gCgoKIyAyNDcwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
YXJyYXkuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
YXJyYXkvZXhwci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2Rl
ZmluZSBCWl9BUlJBWUVYUFJfSAoKCgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L29wcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKI2RlZmluZSBCWl9PUFNfSAoKCgoKCgoKCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfREVGSU5FX09QKG5h
bWUsb3Asc3ltYm9sKSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBjbGFzcyBUX251bXR5cGUy
PiBzdHJ1Y3QgbmFtZSB7IHR5cGVkZWYgQlpfUFJPTU9URShUX251bXR5cGUxLCBUX251bXR5cGUy
KSBUX251bXR5cGU7IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgYSwg
VF9udW10eXBlMiBiKSB7IHJldHVybiBhIG9wIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNz
IFQyPiBzdGF0aWMgaW5saW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVBy
aW50Rm9ybWF0JiBmb3JtYXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0ciArPSAi
KCI7IHQxLnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9IHN5bWJvbDsgdDIucHJldHR5
UHJpbnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH0KIyAxMDcgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9vcHMuaCIKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgQWRkICB7IHR5cGVkZWYgdHlwZW5hbWUgIHBy
b21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10eXBlMiA+OjpUX3Byb21vdGUgIFRfbnVt
dHlwZTsgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSBhLCBUX251bXR5
cGUyIGIpIHsgcmV0dXJuIGEgICsgIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBz
dGF0aWMgaW5saW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0ciArPSAiKCI7IHQx
LnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICAiKyIgOyB0Mi5wcmV0dHlQcmludChz
dHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEs
IGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgU3VidHJhY3QgIHsgdHlwZWRlZiB0eXBlbmFtZSAg
cHJvbW90ZV90cmFpdDwgVF9udW10eXBlMSAsICBUX251bXR5cGUyID46OlRfcHJvbW90ZSAgVF9u
dW10eXBlOyBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIGEsIFRfbnVt
dHlwZTIgYikgeyByZXR1cm4gYSAgLSAgYjsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+
IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRG
b3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsg
dDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gICItIiA7IHQyLnByZXR0eVByaW50
KHN0ciwgZm9ybWF0KTsgc3RyICs9ICIpIjsgfSB9IDsKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBl
MSwgY2xhc3MgVF9udW10eXBlMj4gc3RydWN0ICBNdWx0aXBseSAgeyB0eXBlZGVmIHR5cGVuYW1l
ICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBU
X251bXR5cGU7IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9u
dW10eXBlMiBiKSB7IHJldHVybiBhICAqICBiOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
Mj4gc3RhdGljIGlubGluZSB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MikgeyBzdHIgKz0gIigi
OyB0MS5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAgIioiIDsgdDIucHJldHR5UHJp
bnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH0gOwp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5
cGUxLCBjbGFzcyBUX251bXR5cGUyPiBzdHJ1Y3QgIERpdmlkZSAgeyB0eXBlZGVmIHR5cGVuYW1l
ICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBU
X251bXR5cGU7IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9u
dW10eXBlMiBiKSB7IHJldHVybiBhICAvICBiOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
Mj4gc3RhdGljIGlubGluZSB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MikgeyBzdHIgKz0gIigi
OyB0MS5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAgIi8iIDsgdDIucHJldHR5UHJp
bnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH0gOwp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5
cGUxLCBjbGFzcyBUX251bXR5cGUyPiBzdHJ1Y3QgIE1vZHVsbyAgeyB0eXBlZGVmIHR5cGVuYW1l
ICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBU
X251bXR5cGU7IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9u
dW10eXBlMiBiKSB7IHJldHVybiBhICAlICBiOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
Mj4gc3RhdGljIGlubGluZSB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MikgeyBzdHIgKz0gIigi
OyB0MS5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAgIiUiIDsgdDIucHJldHR5UHJp
bnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH0gOwp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5
cGUxLCBjbGFzcyBUX251bXR5cGUyPiBzdHJ1Y3QgIEJpdHdpc2VYb3IgIHsgdHlwZWRlZiB0eXBl
bmFtZSAgcHJvbW90ZV90cmFpdDwgVF9udW10eXBlMSAsICBUX251bXR5cGUyID46OlRfcHJvbW90
ZSAgVF9udW10eXBlOyBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIGEs
IFRfbnVtdHlwZTIgYikgeyByZXR1cm4gYSAgXiAgYjsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xh
c3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5
UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpIHsgc3RyICs9
ICIoIjsgdDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gICJeIiA7IHQyLnByZXR0
eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICIpIjsgfSB9IDsKdGVtcGxhdGU8Y2xhc3MgVF9u
dW10eXBlMSwgY2xhc3MgVF9udW10eXBlMj4gc3RydWN0ICBCaXR3aXNlQW5kICB7IHR5cGVkZWYg
dHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10eXBlMiA+OjpUX3By
b21vdGUgIFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBl
MSBhLCBUX251bXR5cGUyIGIpIHsgcmV0dXJuIGEgICYgIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEs
IGNsYXNzIFQyPiBzdGF0aWMgaW5saW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHBy
ZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0
ciArPSAiKCI7IHQxLnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICAiJiIgOyB0Mi5w
cmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgQml0d2lzZU9yICB7IHR5cGVk
ZWYgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10eXBlMiA+OjpU
X3Byb21vdGUgIFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10
eXBlMSBhLCBUX251bXR5cGUyIGIpIHsgcmV0dXJuIGEgIHwgIGI7IH0gdGVtcGxhdGU8Y2xhc3Mg
VDEsIGNsYXNzIFQyPiBzdGF0aWMgaW5saW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIs
IHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7
IHN0ciArPSAiKCI7IHQxLnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICAifCIgOyB0
Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgU2hpZnRSaWdodCAgeyB0
eXBlZGVmIHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIg
Pjo6VF9wcm9tb3RlICBUX251bXR5cGU7IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRf
bnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBhICA+PiAgYjsgfSB0ZW1wbGF0ZTxj
bGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQcmludChzdHJpbmcm
IHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYg
dDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gICI+
PiIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7IH0gfSA7CnRlbXBs
YXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgU2hpZnRMZWZ0
ICB7IHR5cGVkZWYgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10
eXBlMiA+OjpUX3Byb21vdGUgIFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBw
bHkoVF9udW10eXBlMSBhLCBUX251bXR5cGUyIGIpIHsgcmV0dXJuIGEgIDw8ICBiOyB9IHRlbXBs
YXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gc3RhdGljIGlubGluZSB2b2lkIHByZXR0eVByaW50KHN0
cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgdDEsIGNvbnN0
IFQyJiB0MikgeyBzdHIgKz0gIigiOyB0MS5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciAr
PSAgIjw8IiA7IHQyLnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICIpIjsgfSB9IDsK
CiNkZWZpbmUgQlpfREVGSU5FX0JPT0xfT1AobmFtZSxvcCxzeW1ib2wpIHRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCBuYW1lIHsgdHlwZWRlZiBib29s
IFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBib29sIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10
eXBlMiBiKSB7IHJldHVybiBhIG9wIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBz
dGF0aWMgaW5saW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0ciArPSAiKCI7IHQx
LnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9IHN5bWJvbDsgdDIucHJldHR5UHJpbnQo
c3RyLCBmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH0KIyAxMzkgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svaW5jbHVkZS9ibGl0ei9vcHMuaCIKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNs
YXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgR3JlYXRlciAgeyB0eXBlZGVmIGJvb2wgVF9udW10eXBl
OyBzdGF0aWMgaW5saW5lIGJvb2wgYXBwbHkoVF9udW10eXBlMSBhLCBUX251bXR5cGUyIGIpIHsg
cmV0dXJuIGEgID4gIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdGF0aWMgaW5s
aW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3Jt
YXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0ciArPSAiKCI7IHQxLnByZXR0eVBy
aW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICAiPiIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1h
dCk7IHN0ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRf
bnVtdHlwZTI+IHN0cnVjdCAgTGVzcyAgeyB0eXBlZGVmIGJvb2wgVF9udW10eXBlOyBzdGF0aWMg
aW5saW5lIGJvb2wgYXBwbHkoVF9udW10eXBlMSBhLCBUX251bXR5cGUyIGIpIHsgcmV0dXJuIGEg
IDwgIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdGF0aWMgaW5saW5lIHZvaWQg
cHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsIGNvbnN0
IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0ciArPSAiKCI7IHQxLnByZXR0eVByaW50KHN0ciwg
Zm9ybWF0KTsgc3RyICs9ICAiPCIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciAr
PSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+
IHN0cnVjdCAgR3JlYXRlck9yRXF1YWwgIHsgdHlwZWRlZiBib29sIFRfbnVtdHlwZTsgc3RhdGlj
IGlubGluZSBib29sIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBh
ICA+PSAgYjsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9p
ZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29u
c3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3Ry
LCBmb3JtYXQpOyBzdHIgKz0gICI+PSIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0
ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlw
ZTI+IHN0cnVjdCAgTGVzc09yRXF1YWwgIHsgdHlwZWRlZiBib29sIFRfbnVtdHlwZTsgc3RhdGlj
IGlubGluZSBib29sIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBh
ICA8PSAgYjsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9p
ZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29u
c3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3Ry
LCBmb3JtYXQpOyBzdHIgKz0gICI8PSIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0
ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlw
ZTI+IHN0cnVjdCAgRXF1YWwgIHsgdHlwZWRlZiBib29sIFRfbnVtdHlwZTsgc3RhdGljIGlubGlu
ZSBib29sIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBhICA9PSAg
YjsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0
dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEm
IHQxLCBjb25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3RyLCBmb3Jt
YXQpOyBzdHIgKz0gICI9PSIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAi
KSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0
cnVjdCAgTm90RXF1YWwgIHsgdHlwZWRlZiBib29sIFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBi
b29sIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBhICAhPSAgYjsg
fSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQ
cmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIHQx
LCBjb25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQp
OyBzdHIgKz0gICIhPSIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7
IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVj
dCAgTG9naWNhbEFuZCAgeyB0eXBlZGVmIGJvb2wgVF9udW10eXBlOyBzdGF0aWMgaW5saW5lIGJv
b2wgYXBwbHkoVF9udW10eXBlMSBhLCBUX251bXR5cGUyIGIpIHsgcmV0dXJuIGEgICYmICBiOyB9
IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gc3RhdGljIGlubGluZSB2b2lkIHByZXR0eVBy
aW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgdDEs
IGNvbnN0IFQyJiB0MikgeyBzdHIgKz0gIigiOyB0MS5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7
IHN0ciArPSAgIiYmIiA7IHQyLnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICIpIjsg
fSB9IDsKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMSwgY2xhc3MgVF9udW10eXBlMj4gc3RydWN0
ICBMb2dpY2FsT3IgIHsgdHlwZWRlZiBib29sIFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBib29s
IGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBhICB8fCAgYjsgfSB0
ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQcmlu
dChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIHQxLCBj
b25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOyBz
dHIgKz0gICJ8fCIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7IH0g
fSA7Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBjbGFzcyBUX2Nhc3Q+CnN0cnVjdCBDYXN0
IHsKICAgIHR5cGVkZWYgVF9jYXN0IFRfbnVtdHlwZTsKICAgIHN0YXRpYyBpbmxpbmUgVF9jYXN0
IGFwcGx5KFRfbnVtdHlwZTEgYSkKICAgIHsgcmV0dXJuIGE7IH0KCiAgICB0ZW1wbGF0ZTxjbGFz
cyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciAr
PSB0eXBlaWQoIFRfY2FzdCApLm5hbWUoKSA7CiAgICAgICAgc3RyICs9ICIoIjsKICAgICAgICBh
LnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoK
dGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMT4Kc3RydWN0IExvZ2ljYWxOb3QgewogICAgdHlwZWRl
ZiBib29sIFRfbnVtdHlwZTsKICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcHBseShUX251bXR5cGUx
IGEpCiAgICB7IHJldHVybiAhYTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGlj
IHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQs
CiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICIhIjsKICAgICAgICBh
LnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsKICAgIH0KfTsKCnRlbXBsYXRlPGNsYXNzIFRfbnVt
dHlwZTE+CnN0cnVjdCBCaXR3aXNlTm90IHsKICAgIHR5cGVkZWYgVF9udW10eXBlMSBUX251bXR5
cGU7CiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIGEpCiAgICB7
IHJldHVybiB+YTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJl
dHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAg
Y29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJ+IjsKICAgICAgICBhLnByZXR0eVBy
aW50KHN0cixmb3JtYXQpOwogICAgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMT4Kc3Ry
dWN0IE5lZ2F0ZSB7CiAgICB0eXBlZGVmIFRfbnVtdHlwZTEgVF9udW10eXBlOwogICAgc3RhdGlj
IGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSBhKQogICAgeyByZXR1cm4gLWE7IH0K
CiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmlu
ZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQog
ICAgewogICAgICAgIHN0ciArPSAiLSI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsIGZvcm1h
dCk7CiAgICB9Cn07Cn0gCgoKCgojIDQ1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovYXJyYXkvZXhwci5oIiAyCgoKCgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9zaGFwZWNoZWNrLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1NIQVBFQ0hFQ0tfSAoKbmFtZXNwYWNlICBibGl0
eiAgeyAKCiAKCgoKCgoKCgp0ZW1wbGF0ZTxjbGFzcyBUX3NoYXBlMSwgY2xhc3MgVF9zaGFwZTI+
CmlubGluZSBib29sICBhcmVTaGFwZXNDb25mb3JtYWJsZShjb25zdCBUX3NoYXBlMSYsIGNvbnN0
IFRfc2hhcGUyJikKewogICAgIAogICAgIAogICAgIAogICAgIAogICAgcmV0dXJuIGZhbHNlIDsK
fQoKdGVtcGxhdGU8Y2xhc3MgVF9zaGFwZT4KaW5saW5lIGJvb2wgIGFyZVNoYXBlc0NvbmZvcm1h
YmxlKGNvbnN0IFRfc2hhcGUmIGEsIGNvbnN0IFRfc2hhcGUmIGIpCnsKICAgICAKCiAgICAgCiAg
ICAgCiAgICAgCgogICAgZm9yICh1bnNpZ25lZCBpPTA7IGkgPCBhLmxlbmd0aCgpOyArK2kpCiAg
ICB7CiAgICAgICAgaWYgKGFbaV0gIT0gYltpXSkKICAgICAgICB7CiAgICAgICAgICAgICA7Cgog
ICAgICAgICAgICByZXR1cm4gZmFsc2UgOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdHJ1
ZSA7Cn0KCn0gCgoKIyA1MyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L2FycmF5L2V4cHIuaCIgMgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9udW1pbnF1aXJlLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfTlVNSU5RVUlSRV9ICgoKICAKIyAxICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbGltaXRzLWhhY2suaCIgMQog
CgoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgpuYW1lc3BhY2UgIHN0ZCAgeyAKCmVudW0gZmxv
YXRfcm91bmRfc3R5bGUgewogIHJvdW5kX2luZGV0ZXJtaW5hdGUgICAgICAgPSAtMSwKICByb3Vu
ZF90b3dhcmRfemVybyAgICAgICAgID0gIDAsCiAgcm91bmRfdG9fbmVhcmVzdCAgICAgICAgICA9
ICAxLAogIHJvdW5kX3Rvd2FyZF9pbmZpbml0eSAgICAgPSAgMiwKICByb3VuZF90b3dhcmRfbmVn
X2luZmluaXR5ID0gIDMKfTsKCmVudW0gZmxvYXRfZGVub3JtX3N0eWxlIHsKICBkZW5vcm1faW5k
ZXRlcm1pbmF0ZSA9IC0xLAogIGRlbm9ybV9hYnNlbnQgICAgICAgID0gIDAsCiAgZGVub3JtX3By
ZXNlbnQgICAgICAgPSAgMQp9OwoKIAoKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPgpjbGFzcyBf
TnVtZXJpY19saW1pdHNfYmFzZSB7CnB1YmxpYzoKICBzdGF0aWMgY29uc3QgYm9vbCBpc19zcGVj
aWFsaXplZCA9IGZhbHNlOwoKICBzdGF0aWMgX19udW1iZXIgbWluKCkgIHsgcmV0dXJuIF9fbnVt
YmVyKCk7IH0KICBzdGF0aWMgX19udW1iZXIgbWF4KCkgIHsgcmV0dXJuIF9fbnVtYmVyKCk7IH0K
CiAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMgICA9IDA7CiAgc3RhdGljIGNvbnN0IGludCBkaWdp
dHMxMCA9IDA7CgogIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCAgPSBmYWxzZTsKICBzdGF0
aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gZmFsc2U7CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNf
ZXhhY3QgICA9IGZhbHNlOwoKICBzdGF0aWMgY29uc3QgaW50IHJhZGl4ID0gMDsKCiAgc3RhdGlj
IF9fbnVtYmVyIGVwc2lsb24oKSAgICAgIHsgcmV0dXJuIF9fbnVtYmVyKCk7IH0KICBzdGF0aWMg
X19udW1iZXIgcm91bmRfZXJyb3IoKSAgeyByZXR1cm4gX19udW1iZXIoKTsgfQoKICBzdGF0aWMg
Y29uc3QgaW50IG1pbl9leHBvbmVudCAgID0gMDsKICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBv
bmVudDEwID0gMDsKICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudCAgID0gMDsKICBzdGF0
aWMgY29uc3QgaW50IG1heF9leHBvbmVudDEwID0gMDsKCiAgc3RhdGljIGNvbnN0IGJvb2wgaGFz
X2luZmluaXR5ICAgICAgPSBmYWxzZTsKICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFO
ICAgICA9IGZhbHNlOwogIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFs
c2U7CiAgc3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0gZGVub3Jt
X2Fic2VudDsKICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfZGVub3JtX2xvc3MgICA9IGZhbHNlOwoK
ICBzdGF0aWMgX19udW1iZXIgaW5maW5pdHkoKSAgICAgICB7IHJldHVybiBfX251bWJlcigpOyB9
CiAgc3RhdGljIF9fbnVtYmVyIHF1aWV0X05hTigpICAgICAgeyByZXR1cm4gX19udW1iZXIoKTsg
fQogIHN0YXRpYyBfX251bWJlciBzaWduYWxpbmdfTmFOKCkgIHsgcmV0dXJuIF9fbnVtYmVyKCk7
IH0KICBzdGF0aWMgX19udW1iZXIgZGVub3JtX21pbigpICAgICB7IHJldHVybiBfX251bWJlcigp
OyB9CgogIHN0YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSAgPSBmYWxzZTsKICBzdGF0aWMgY29u
c3QgYm9vbCBpc19ib3VuZGVkID0gZmFsc2U7CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfbW9kdWxv
ICA9IGZhbHNlOwoKICBzdGF0aWMgY29uc3QgYm9vbCB0cmFwcyAgICAgICAgICAgPSBmYWxzZTsK
ICBzdGF0aWMgY29uc3QgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICBzdGF0aWMgY29u
c3QgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUgPSByb3VuZF90b3dhcmRfemVybzsKfTsK
CiNkZWZpbmUgX19kZWNsYXJlX251bWVyaWNfYmFzZV9tZW1iZXIoX190eXBlLCBfX21lbSkgdGVt
cGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCBfX3R5cGUgX051bWVyaWNfbGltaXRzX2Jhc2U8
X19udW1iZXI+OjogX19tZW0KCgoKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9v
bCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19udW1iZXI+OjogICBpc19zcGVjaWFsaXplZCAgOwp0
ZW1wbGF0ZSA8Y2xhc3MgX19udW1iZXI+IGNvbnN0ICBpbnQgIF9OdW1lcmljX2xpbWl0c19iYXNl
PF9fbnVtYmVyPjo6ICAgZGlnaXRzICA7CnRlbXBsYXRlIDxjbGFzcyBfX251bWJlcj4gY29uc3Qg
IGludCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19udW1iZXI+OjogICBkaWdpdHMxMCAgOwp0ZW1w
bGF0ZSA8Y2xhc3MgX19udW1iZXI+IGNvbnN0ICBib29sICBfTnVtZXJpY19saW1pdHNfYmFzZTxf
X251bWJlcj46OiAgIGlzX3NpZ25lZCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19udW1iZXI+IGNvbnN0
ICBib29sICBfTnVtZXJpY19saW1pdHNfYmFzZTxfX251bWJlcj46OiAgIGlzX2ludGVnZXIgIDsK
dGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRzX2Jh
c2U8X19udW1iZXI+OjogICBpc19leGFjdCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19udW1iZXI+IGNv
bnN0ICBpbnQgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgcmFkaXggIDsKdGVt
cGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgaW50ICBfTnVtZXJpY19saW1pdHNfYmFzZTxf
X251bWJlcj46OiAgIG1pbl9leHBvbmVudCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19udW1iZXI+IGNv
bnN0ICBpbnQgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgbWF4X2V4cG9uZW50
ICA7CnRlbXBsYXRlIDxjbGFzcyBfX251bWJlcj4gY29uc3QgIGludCAgX051bWVyaWNfbGltaXRz
X2Jhc2U8X19udW1iZXI+OjogICBtaW5fZXhwb25lbnQxMCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19u
dW1iZXI+IGNvbnN0ICBpbnQgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgbWF4
X2V4cG9uZW50MTAgIDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9vbCAgX051
bWVyaWNfbGltaXRzX2Jhc2U8X19udW1iZXI+OjogICBoYXNfaW5maW5pdHkgIDsKdGVtcGxhdGUg
PGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19udW1i
ZXI+OjogICBoYXNfcXVpZXRfTmFOICA7CnRlbXBsYXRlIDxjbGFzcyBfX251bWJlcj4gY29uc3Qg
IGJvb2wgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgaGFzX3NpZ25hbGluZ19O
YU4gIDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgZmxvYXRfZGVub3JtX3N0eWxl
ICBfTnVtZXJpY19saW1pdHNfYmFzZTxfX251bWJlcj46OiAgIGhhc19kZW5vcm0gIDsKdGVtcGxh
dGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19u
dW1iZXI+OjogICBoYXNfZGVub3JtX2xvc3MgIDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBj
b25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19udW1iZXI+OjogICBpc19pZWM1NTkg
IDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRz
X2Jhc2U8X19udW1iZXI+OjogICBpc19ib3VuZGVkICA7CnRlbXBsYXRlIDxjbGFzcyBfX251bWJl
cj4gY29uc3QgIGJvb2wgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgaXNfbW9k
dWxvICA7CnRlbXBsYXRlIDxjbGFzcyBfX251bWJlcj4gY29uc3QgIGJvb2wgIF9OdW1lcmljX2xp
bWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgdHJhcHMgIDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVy
PiBjb25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19udW1iZXI+OjogICB0aW55bmVz
c19iZWZvcmUgIDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgZmxvYXRfcm91bmRf
c3R5bGUgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgcm91bmRfc3R5bGUgIDsK
CiN1bmRlZiBfX2RlY2xhcmVfbnVtZXJpY19iYXNlX21lbWJlcgoKIAoKdGVtcGxhdGUgPGNsYXNz
IF9JbnQsCiAgICAgICAgICBfSW50IF9faW1pbiwKICAgICAgICAgIF9JbnQgX19pbWF4LAogICAg
ICAgICAgaW50IF9faWRpZ2l0cyA9IC0xPgpjbGFzcyBfSW50ZWdlcl9saW1pdHMgOiBwdWJsaWMg
X051bWVyaWNfbGltaXRzX2Jhc2U8X0ludD4gCnsKcHVibGljOgogIHN0YXRpYyBjb25zdCBib29s
IGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgc3RhdGljIF9JbnQgbWluKCkgIHsgcmV0dXJuIF9f
aW1pbjsgfQogIHN0YXRpYyBfSW50IG1heCgpICB7IHJldHVybiBfX2ltYXg7IH0KCiAgc3RhdGlj
IGNvbnN0IGludCBkaWdpdHMgPSAKICAgIChfX2lkaWdpdHMgPCAwKSA/IHNpemVvZihfSW50KSAq
IDggIC0gKF9faW1pbiA9PSAwID8gMCA6IDEpIAogICAgICAgICAgICAgICAgICAgIDogX19pZGln
aXRzOwogIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzMTAgPSAoZGlnaXRzICogMzAxKSAvIDEwMDA7
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgc3RhdGljIGNvbnN0IGJvb2wg
aXNfc2lnbmVkID0gX19pbWluICE9IDA7CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9
IHRydWU7CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogIHN0YXRpYyBjb25z
dCBpbnQgcmFkaXggPSAyOwoKCiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfYm91bmRlZCA9IHRydWU7
CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfbW9kdWxvID0gdHJ1ZTsKfTsKCiNkZWZpbmUgX19kZWNs
YXJlX2ludGVnZXJfbGltaXRzX21lbWJlcihfX3R5cGUsIF9fbWVtKSB0ZW1wbGF0ZSA8Y2xhc3Mg
X0ludCwgX0ludCBfX2ltaW4sIF9JbnQgX19pbWF4LCBpbnQgX19pZGlnaXRzPiBjb25zdCBfX3R5
cGUgX0ludGVnZXJfbGltaXRzPF9JbnQsIF9faW1pbiwgX19pbWF4LCBfX2lkaWdpdHM+OjogX19t
ZW0KCgoKdGVtcGxhdGUgPGNsYXNzIF9JbnQsIF9JbnQgX19pbWluLCBfSW50IF9faW1heCwgaW50
IF9faWRpZ2l0cz4gY29uc3QgIGJvb2wgIF9JbnRlZ2VyX2xpbWl0czxfSW50LCBfX2ltaW4sIF9f
aW1heCwgX19pZGlnaXRzPjo6ICAgaXNfc3BlY2lhbGl6ZWQgIDsKdGVtcGxhdGUgPGNsYXNzIF9J
bnQsIF9JbnQgX19pbWluLCBfSW50IF9faW1heCwgaW50IF9faWRpZ2l0cz4gY29uc3QgIGludCAg
X0ludGVnZXJfbGltaXRzPF9JbnQsIF9faW1pbiwgX19pbWF4LCBfX2lkaWdpdHM+OjogICBkaWdp
dHMgIDsKdGVtcGxhdGUgPGNsYXNzIF9JbnQsIF9JbnQgX19pbWluLCBfSW50IF9faW1heCwgaW50
IF9faWRpZ2l0cz4gY29uc3QgIGludCAgX0ludGVnZXJfbGltaXRzPF9JbnQsIF9faW1pbiwgX19p
bWF4LCBfX2lkaWdpdHM+OjogICBkaWdpdHMxMCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ludCwgX0lu
dCBfX2ltaW4sIF9JbnQgX19pbWF4LCBpbnQgX19pZGlnaXRzPiBjb25zdCAgYm9vbCAgX0ludGVn
ZXJfbGltaXRzPF9JbnQsIF9faW1pbiwgX19pbWF4LCBfX2lkaWdpdHM+OjogICBpc19zaWduZWQg
IDsKdGVtcGxhdGUgPGNsYXNzIF9JbnQsIF9JbnQgX19pbWluLCBfSW50IF9faW1heCwgaW50IF9f
aWRpZ2l0cz4gY29uc3QgIGJvb2wgIF9JbnRlZ2VyX2xpbWl0czxfSW50LCBfX2ltaW4sIF9faW1h
eCwgX19pZGlnaXRzPjo6ICAgaXNfaW50ZWdlciAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ludCwgX0lu
dCBfX2ltaW4sIF9JbnQgX19pbWF4LCBpbnQgX19pZGlnaXRzPiBjb25zdCAgYm9vbCAgX0ludGVn
ZXJfbGltaXRzPF9JbnQsIF9faW1pbiwgX19pbWF4LCBfX2lkaWdpdHM+OjogICBpc19leGFjdCAg
Owp0ZW1wbGF0ZSA8Y2xhc3MgX0ludCwgX0ludCBfX2ltaW4sIF9JbnQgX19pbWF4LCBpbnQgX19p
ZGlnaXRzPiBjb25zdCAgaW50ICBfSW50ZWdlcl9saW1pdHM8X0ludCwgX19pbWluLCBfX2ltYXgs
IF9faWRpZ2l0cz46OiAgIHJhZGl4ICA7CnRlbXBsYXRlIDxjbGFzcyBfSW50LCBfSW50IF9faW1p
biwgX0ludCBfX2ltYXgsIGludCBfX2lkaWdpdHM+IGNvbnN0ICBib29sICBfSW50ZWdlcl9saW1p
dHM8X0ludCwgX19pbWluLCBfX2ltYXgsIF9faWRpZ2l0cz46OiAgIGlzX2JvdW5kZWQgIDsKdGVt
cGxhdGUgPGNsYXNzIF9JbnQsIF9JbnQgX19pbWluLCBfSW50IF9faW1heCwgaW50IF9faWRpZ2l0
cz4gY29uc3QgIGJvb2wgIF9JbnRlZ2VyX2xpbWl0czxfSW50LCBfX2ltaW4sIF9faW1heCwgX19p
ZGlnaXRzPjo6ICAgaXNfbW9kdWxvICA7CgojdW5kZWYgX19kZWNsYXJlX2ludGVnZXJfbGltaXRz
X21lbWJlcgoKIAp0ZW1wbGF0ZSA8Y2xhc3MgX19udW1iZXIsCiAgICAgICAgIGludCBfX0RpZ2l0
cywgaW50IF9fRGlnaXRzMTAsCiAgICAgICAgIGludCBfX01pbkV4cCwgaW50IF9fTWF4RXhwLAog
ICAgICAgICBpbnQgX19NaW5FeHAxMCwgaW50IF9fTWF4RXhwMTAsCiAgICAgICAgIHVuc2lnbmVk
IGludCBfX0luZmluaXR5V29yZCwKICAgICAgICAgdW5zaWduZWQgaW50IF9fUU5hTldvcmQsIHVu
c2lnbmVkIGludCBfX1NOYU5Xb3JkLAogICAgICAgICBib29sIF9fSXNJRUM1NTksCiAgICAgICAg
IGZsb2F0X3JvdW5kX3N0eWxlIF9fUm91bmRTdHlsZT4KY2xhc3MgX0Zsb2F0aW5nX2xpbWl0cyA6
IHB1YmxpYyBfTnVtZXJpY19saW1pdHNfYmFzZTxfX251bWJlcj4KewpwdWJsaWM6CiAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOwoKICBzdGF0aWMgY29uc3QgaW50IGRp
Z2l0cyAgID0gX19EaWdpdHM7CiAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMxMCA9IF9fRGlnaXRz
MTA7CgogIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9IHRydWU7CgogIHN0YXRpYyBjb25z
dCBpbnQgcmFkaXggPSAyOwoKICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudCAgID0gX19N
aW5FeHA7CiAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQgICA9IF9fTWF4RXhwOwogIHN0
YXRpYyBjb25zdCBpbnQgbWluX2V4cG9uZW50MTAgPSBfX01pbkV4cDEwOwogIHN0YXRpYyBjb25z
dCBpbnQgbWF4X2V4cG9uZW50MTAgPSBfX01heEV4cDEwOwoKICBzdGF0aWMgY29uc3QgYm9vbCBo
YXNfaW5maW5pdHkgICAgICA9IHRydWU7CiAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX3F1aWV0X05h
TiAgICAgPSB0cnVlOwogIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gdHJ1
ZTsKICBzdGF0aWMgY29uc3QgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0gPSBkZW5vcm1f
aW5kZXRlcm1pbmF0ZTsKICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfZGVub3JtX2xvc3MgICA9IGZh
bHNlOwoKICBzdGF0aWMgX19udW1iZXIgaW5maW5pdHkoKSAgewogICAgc3RhdGljIHVuc2lnbmVk
IGludCBfU19pbmZbc2l6ZW9mKF9fbnVtYmVyKSAvIHNpemVvZihpbnQpXSA9IAogICAgICB7IF9f
SW5maW5pdHlXb3JkIH07CiAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8X19udW1iZXIqPigm
X1NfaW5mKTsKICB9CiAgc3RhdGljIF9fbnVtYmVyIHF1aWV0X05hTigpICB7CiAgICBzdGF0aWMg
dW5zaWduZWQgaW50IF9TX25hbltzaXplb2YoX19udW1iZXIpIC8gc2l6ZW9mKGludCldID0gCiAg
ICAgIHsgX19RTmFOV29yZCB9OwogICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PF9fbnVtYmVy
Kj4oJl9TX25hbik7CiAgfQogIHN0YXRpYyBfX251bWJlciBzaWduYWxpbmdfTmFOKCkgIHsKICAg
IHN0YXRpYyB1bnNpZ25lZCBpbnQgX1NfbmFuW3NpemVvZihfX251bWJlcikgLyBzaXplb2YoaW50
KV0gPSAKICAgICAgeyBfX1NOYU5Xb3JkIH07CiAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
X19udW1iZXIqPigmX1NfbmFuKTsKICB9CgogIHN0YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSAg
ICAgICA9IF9fSXNJRUM1NTk7CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfYm91bmRlZCAgICAgID0g
dHJ1ZTsKICBzdGF0aWMgY29uc3QgYm9vbCB0cmFwcyAgICAgICAgICAgPSB0cnVlOwogIHN0YXRp
YyBjb25zdCBib29sIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlOwoKICBzdGF0aWMgY29uc3QgZmxv
YXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUgPSBfX1JvdW5kU3R5bGU7Cn07CgojZGVmaW5lIF9f
ZGVjbGFyZV9mbG9hdF9saW1pdHNfbWVtYmVyKF9fdHlwZSwgX19tZW0pIHRlbXBsYXRlIDxjbGFz
cyBfX051bSwgaW50IF9fRGlnLCBpbnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGlu
dCBfX01uWDEwLCBpbnQgX19NeFgxMCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQg
X19RTmFOLCB1bnNpZ25lZCBpbnQgX19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9z
dHlsZSBfX1N0eT4gY29uc3QgX190eXBlIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBf
X0RpZzEwLCBfX01uWCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9f
U05hTixfX0lzSUVFRSwgX19TdHk+OjogX19tZW0KCgoKCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX19O
dW0sIGludCBfX0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19N
blgxMCwgaW50IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5h
TiwgdW5zaWduZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUg
X19TdHk+IGNvbnN0ICBib29sICBfRmxvYXRpbmdfbGltaXRzPF9fTnVtLCBfX0RpZywgX19EaWcx
MCwgX19NblgsIF9fTXhYLCBfX01uWDEwLCBfX014WDEwLCBfX0luZiwgX19RTmFOLCBfX1NOYU4s
X19Jc0lFRUUsIF9fU3R5Pjo6ICAgaXNfc3BlY2lhbGl6ZWQgIDsgIAp0ZW1wbGF0ZSA8Y2xhc3Mg
X19OdW0sIGludCBfX0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQg
X19NblgxMCwgaW50IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9f
UU5hTiwgdW5zaWduZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5
bGUgX19TdHk+IGNvbnN0ICBpbnQgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0Rp
ZzEwLCBfX01uWCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05h
TixfX0lzSUVFRSwgX19TdHk+OjogICBkaWdpdHMgIDsgIAp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0s
IGludCBfX0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19Nblgx
MCwgaW50IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwg
dW5zaWduZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19T
dHk+IGNvbnN0ICBpbnQgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0RpZzEwLCBf
X01uWCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05hTixfX0lz
SUVFRSwgX19TdHk+OjogICBkaWdpdHMxMCAgOyAgCnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50
IF9fRGlnLCBpbnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBp
bnQgX19NeFgxMCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNp
Z25lZCBpbnQgX19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4g
Y29uc3QgIGJvb2wgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0RpZzEwLCBfX01u
WCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05hTixfX0lzSUVF
RSwgX19TdHk+OjogICBpc19zaWduZWQgIDsgIAp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0sIGludCBf
X0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19NblgxMCwgaW50
IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwgdW5zaWdu
ZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19TdHk+IGNv
bnN0ICBpbnQgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0RpZzEwLCBfX01uWCwg
X19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05hTixfX0lzSUVFRSwg
X19TdHk+OjogICByYWRpeCAgOyAgCnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50IF9fRGlnLCBp
bnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBpbnQgX19NeFgx
MCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNpZ25lZCBpbnQg
X19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4gY29uc3QgIGlu
dCAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9fRGlnMTAsIF9fTW5YLCBfX014WCwg
X19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19TTmFOLF9fSXNJRUVFLCBfX1N0eT46
OiAgIG1pbl9leHBvbmVudCAgOyAgCnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50IF9fRGlnLCBp
bnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBpbnQgX19NeFgx
MCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNpZ25lZCBpbnQg
X19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4gY29uc3QgIGlu
dCAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9fRGlnMTAsIF9fTW5YLCBfX014WCwg
X19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19TTmFOLF9fSXNJRUVFLCBfX1N0eT46
OiAgIG1heF9leHBvbmVudCAgOyAgCnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50IF9fRGlnLCBp
bnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBpbnQgX19NeFgx
MCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNpZ25lZCBpbnQg
X19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4gY29uc3QgIGlu
dCAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9fRGlnMTAsIF9fTW5YLCBfX014WCwg
X19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19TTmFOLF9fSXNJRUVFLCBfX1N0eT46
OiAgIG1pbl9leHBvbmVudDEwICA7ICAKdGVtcGxhdGUgPGNsYXNzIF9fTnVtLCBpbnQgX19EaWcs
IGludCBfX0RpZzEwLCBpbnQgX19NblgsIGludCBfX014WCwgaW50IF9fTW5YMTAsIGludCBfX014
WDEwLCB1bnNpZ25lZCBpbnQgX19JbmYsIHVuc2lnbmVkIGludCBfX1FOYU4sIHVuc2lnbmVkIGlu
dCBfX1NOYU4sIGJvb2wgX19Jc0lFRUUsIGZsb2F0X3JvdW5kX3N0eWxlIF9fU3R5PiBjb25zdCAg
aW50ICBfRmxvYXRpbmdfbGltaXRzPF9fTnVtLCBfX0RpZywgX19EaWcxMCwgX19NblgsIF9fTXhY
LCBfX01uWDEwLCBfX014WDEwLCBfX0luZiwgX19RTmFOLCBfX1NOYU4sX19Jc0lFRUUsIF9fU3R5
Pjo6ICAgbWF4X2V4cG9uZW50MTAgIDsgIAp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0sIGludCBfX0Rp
ZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19NblgxMCwgaW50IF9f
TXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwgdW5zaWduZWQg
aW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19TdHk+IGNvbnN0
ICBib29sICBfRmxvYXRpbmdfbGltaXRzPF9fTnVtLCBfX0RpZywgX19EaWcxMCwgX19NblgsIF9f
TXhYLCBfX01uWDEwLCBfX014WDEwLCBfX0luZiwgX19RTmFOLCBfX1NOYU4sX19Jc0lFRUUsIF9f
U3R5Pjo6ICAgaGFzX2luZmluaXR5ICA7CnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50IF9fRGln
LCBpbnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBpbnQgX19N
eFgxMCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNpZ25lZCBp
bnQgX19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4gY29uc3Qg
IGJvb2wgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0RpZzEwLCBfX01uWCwgX19N
eFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05hTixfX0lzSUVFRSwgX19T
dHk+OjogICBoYXNfcXVpZXRfTmFOICA7CnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50IF9fRGln
LCBpbnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBpbnQgX19N
eFgxMCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNpZ25lZCBp
bnQgX19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4gY29uc3Qg
IGJvb2wgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0RpZzEwLCBfX01uWCwgX19N
eFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05hTixfX0lzSUVFRSwgX19T
dHk+OjogICBoYXNfc2lnbmFsaW5nX05hTiAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0sIGludCBf
X0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19NblgxMCwgaW50
IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwgdW5zaWdu
ZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19TdHk+IGNv
bnN0ICBmbG9hdF9kZW5vcm1fc3R5bGUgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBf
X0RpZzEwLCBfX01uWCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9f
U05hTixfX0lzSUVFRSwgX19TdHk+OjogICBoYXNfZGVub3JtICA7CnRlbXBsYXRlIDxjbGFzcyBf
X051bSwgaW50IF9fRGlnLCBpbnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBf
X01uWDEwLCBpbnQgX19NeFgxMCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19R
TmFOLCB1bnNpZ25lZCBpbnQgX19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHls
ZSBfX1N0eT4gY29uc3QgIGJvb2wgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0Rp
ZzEwLCBfX01uWCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05h
TixfX0lzSUVFRSwgX19TdHk+OjogICBoYXNfZGVub3JtX2xvc3MgIDsKdGVtcGxhdGUgPGNsYXNz
IF9fTnVtLCBpbnQgX19EaWcsIGludCBfX0RpZzEwLCBpbnQgX19NblgsIGludCBfX014WCwgaW50
IF9fTW5YMTAsIGludCBfX014WDEwLCB1bnNpZ25lZCBpbnQgX19JbmYsIHVuc2lnbmVkIGludCBf
X1FOYU4sIHVuc2lnbmVkIGludCBfX1NOYU4sIGJvb2wgX19Jc0lFRUUsIGZsb2F0X3JvdW5kX3N0
eWxlIF9fU3R5PiBjb25zdCAgYm9vbCAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9f
RGlnMTAsIF9fTW5YLCBfX014WCwgX19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19T
TmFOLF9fSXNJRUVFLCBfX1N0eT46OiAgIGlzX2llYzU1OSAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19O
dW0sIGludCBfX0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19N
blgxMCwgaW50IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5h
TiwgdW5zaWduZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUg
X19TdHk+IGNvbnN0ICBib29sICBfRmxvYXRpbmdfbGltaXRzPF9fTnVtLCBfX0RpZywgX19EaWcx
MCwgX19NblgsIF9fTXhYLCBfX01uWDEwLCBfX014WDEwLCBfX0luZiwgX19RTmFOLCBfX1NOYU4s
X19Jc0lFRUUsIF9fU3R5Pjo6ICAgaXNfYm91bmRlZCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0s
IGludCBfX0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19Nblgx
MCwgaW50IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwg
dW5zaWduZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19T
dHk+IGNvbnN0ICBib29sICBfRmxvYXRpbmdfbGltaXRzPF9fTnVtLCBfX0RpZywgX19EaWcxMCwg
X19NblgsIF9fTXhYLCBfX01uWDEwLCBfX014WDEwLCBfX0luZiwgX19RTmFOLCBfX1NOYU4sX19J
c0lFRUUsIF9fU3R5Pjo6ICAgdHJhcHMgIDsKdGVtcGxhdGUgPGNsYXNzIF9fTnVtLCBpbnQgX19E
aWcsIGludCBfX0RpZzEwLCBpbnQgX19NblgsIGludCBfX014WCwgaW50IF9fTW5YMTAsIGludCBf
X014WDEwLCB1bnNpZ25lZCBpbnQgX19JbmYsIHVuc2lnbmVkIGludCBfX1FOYU4sIHVuc2lnbmVk
IGludCBfX1NOYU4sIGJvb2wgX19Jc0lFRUUsIGZsb2F0X3JvdW5kX3N0eWxlIF9fU3R5PiBjb25z
dCAgYm9vbCAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9fRGlnMTAsIF9fTW5YLCBf
X014WCwgX19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19TTmFOLF9fSXNJRUVFLCBf
X1N0eT46OiAgIHRpbnluZXNzX2JlZm9yZSAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0sIGludCBf
X0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19NblgxMCwgaW50
IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwgdW5zaWdu
ZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19TdHk+IGNv
bnN0ICBmbG9hdF9yb3VuZF9zdHlsZSAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9f
RGlnMTAsIF9fTW5YLCBfX014WCwgX19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19T
TmFOLF9fSXNJRUVFLCBfX1N0eT46OiAgIHJvdW5kX3N0eWxlICA7CgojdW5kZWYgX19kZWNsYXJl
X2Zsb2F0X2xpbWl0c19tZW1iZXIKCiAKCiAKCnRlbXBsYXRlPGNsYXNzIFQ+IApjbGFzcyBudW1l
cmljX2xpbWl0cyA6IHB1YmxpYyBfTnVtZXJpY19saW1pdHNfYmFzZTxUPiB7fTsKCiAKCgoKdGVt
cGxhdGU8PgpjbGFzcyBudW1lcmljX2xpbWl0czxib29sPgogIDogcHVibGljIF9JbnRlZ2VyX2xp
bWl0czxib29sLCBmYWxzZSwgdHJ1ZSwgMD4Ke307CgoKCnRlbXBsYXRlPD4KY2xhc3MgbnVtZXJp
Y19saW1pdHM8Y2hhcj4KICA6IHB1YmxpYyBfSW50ZWdlcl9saW1pdHM8Y2hhciwgKC0xMjgpICwg
MTI3ID4Ke307Cgp0ZW1wbGF0ZTw+CmNsYXNzIG51bWVyaWNfbGltaXRzPHNpZ25lZCBjaGFyPgog
IDogcHVibGljIF9JbnRlZ2VyX2xpbWl0czxzaWduZWQgY2hhciwgKC0xMjgpICwgMTI3ID4Ke307
Cgp0ZW1wbGF0ZTw+CmNsYXNzIG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+CiAgOiBwdWJs
aWMgX0ludGVnZXJfbGltaXRzPHVuc2lnbmVkIGNoYXIsIDAsIDI1NSA+Cnt9OwoKCgp0ZW1wbGF0
ZTw+CmNsYXNzIG51bWVyaWNfbGltaXRzPHdjaGFyX3Q+CiAgOiBwdWJsaWMgX0ludGVnZXJfbGlt
aXRzPHdjaGFyX3QsICgtIDIxNDc0ODM2NDcgIC0xKSAsIDIxNDc0ODM2NDcgID4Ke307CgoKCnRl
bXBsYXRlPD4KY2xhc3MgbnVtZXJpY19saW1pdHM8c2hvcnQ+CiAgOiBwdWJsaWMgX0ludGVnZXJf
bGltaXRzPHNob3J0LCAoLTMyNzY3LTEpICwgMzI3NjcgPgp7fTsKCnRlbXBsYXRlPD4KY2xhc3Mg
bnVtZXJpY19saW1pdHM8dW5zaWduZWQgc2hvcnQ+CiAgOiBwdWJsaWMgX0ludGVnZXJfbGltaXRz
PHVuc2lnbmVkIHNob3J0LCAwLCA2NTUzNSA+Cnt9OwoKdGVtcGxhdGU8PgpjbGFzcyBudW1lcmlj
X2xpbWl0czxpbnQ+CiAgOiBwdWJsaWMgX0ludGVnZXJfbGltaXRzPGludCwgKC0gMjE0NzQ4MzY0
NyAgLTEpICwgMjE0NzQ4MzY0NyAgPgp7fTsKCnRlbXBsYXRlPD4KY2xhc3MgbnVtZXJpY19saW1p
dHM8dW5zaWduZWQgaW50PgogIDogcHVibGljIF9JbnRlZ2VyX2xpbWl0czx1bnNpZ25lZCBpbnQs
IDAsICgyMTQ3NDgzNjQ3ICAgKiAyVSArIDEpID4Ke307Cgp0ZW1wbGF0ZTw+CmNsYXNzIG51bWVy
aWNfbGltaXRzPGxvbmc+CiAgOiBwdWJsaWMgX0ludGVnZXJfbGltaXRzPGxvbmcsICgtIDIxNDc0
ODM2NDdMICAtMSkgLCAyMTQ3NDgzNjQ3TCAgPgp7fTsKCnRlbXBsYXRlPD4KY2xhc3MgbnVtZXJp
Y19saW1pdHM8dW5zaWduZWQgbG9uZz4KICA6IHB1YmxpYyBfSW50ZWdlcl9saW1pdHM8dW5zaWdu
ZWQgbG9uZywgMCwgKDIxNDc0ODM2NDdMICAgKiAyVUwgKyAxKSA+Cnt9OwoKCiMgMzQyICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbGltaXRzLWhhY2suaCIKCgoKIAoK
dGVtcGxhdGU8PiBjbGFzcyBudW1lcmljX2xpbWl0czxmbG9hdD4KICA6IHB1YmxpYyBfRmxvYXRp
bmdfbGltaXRzPGZsb2F0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0ICwgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2ICwgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgtMTI1KSAsICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyOCAs
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMzcpICwgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMzggLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmODAw
MDAwdSwgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZjgxMDAwMHUsICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2ZjMTAwMDB1LCAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cnVlLCAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcm91bmRfdG9fbmVhcmVzdD4KewpwdWJsaWM6CiAgc3RhdGljIGZsb2F0IG1pbigpICB7
IHJldHVybiAxLjE3NTQ5NDM1ZS0zOEYgOyB9CiAgc3RhdGljIGZsb2F0IGRlbm9ybV9taW4oKSAg
eyByZXR1cm4gMS4xNzU0OTQzNWUtMzhGIDsgfQogIHN0YXRpYyBmbG9hdCBtYXgoKSAgeyByZXR1
cm4gMy40MDI4MjM0N2UrMzhGIDsgfQogIHN0YXRpYyBmbG9hdCBlcHNpbG9uKCkgIHsgcmV0dXJu
IDEuMTkyMDkyOTBlLTA3RiA7IH0KICBzdGF0aWMgZmxvYXQgcm91bmRfZXJyb3IoKSAgeyByZXR1
cm4gMC41ZjsgfSAgCn07Cgp0ZW1wbGF0ZTw+IGNsYXNzIG51bWVyaWNfbGltaXRzPGRvdWJsZT4K
ICA6IHB1YmxpYyBfRmxvYXRpbmdfbGltaXRzPGRvdWJsZSwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1MyAsICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUgLCAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xMDIxKSAsICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEwMjQgLCAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
LTMwNykgLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMDggLCAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDdmZjAwMDAwdSwgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg3ZmYxMDAwMHUsICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2Zm
OTAwMDB1LCAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRfdG9fbmVhcmVzdD4KewpwdWJsaWM6
CiAgc3RhdGljIGRvdWJsZSBtaW4oKSAgeyByZXR1cm4gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgg
OyB9CiAgc3RhdGljIGRvdWJsZSBkZW5vcm1fbWluKCkgIHsgcmV0dXJuIDIuMjI1MDczODU4NTA3
MjAxNGUtMzA4IDsgfQogIHN0YXRpYyBkb3VibGUgbWF4KCkgIHsgcmV0dXJuIDEuNzk3NjkzMTM0
ODYyMzE1N2UrMzA4IDsgfQogIHN0YXRpYyBkb3VibGUgZXBzaWxvbigpICB7IHJldHVybiAyLjIy
MDQ0NjA0OTI1MDMxMzFlLTE2IDsgfQogIHN0YXRpYyBkb3VibGUgcm91bmRfZXJyb3IoKSAgeyBy
ZXR1cm4gMC41OyB9ICAKfTsKCnRlbXBsYXRlPD4gY2xhc3MgbnVtZXJpY19saW1pdHM8bG9uZyBk
b3VibGU+CiAgOiBwdWJsaWMgX0Zsb2F0aW5nX2xpbWl0czxsb25nIGRvdWJsZSwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA2NCAsICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
OCAsICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTYzODEpICwgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNjM4NCAsICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKC00OTMxKSAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkzMiAsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZmYwMDAwMHUsICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4N2ZmMTAwMDB1LCAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDdmZjkwMDAwdSwgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2Us
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kX3RvX25lYXJlc3Q+
CnsKcHVibGljOgogIHN0YXRpYyBsb25nIGRvdWJsZSBtaW4oKSAgeyByZXR1cm4gKF9fZXh0ZW5z
aW9uX18gKCh1bmlvbiBfX2NvbnZlcnRfbG9uZ19kb3VibGUpIHtfX2NvbnZlcnRfbG9uZ19kb3Vi
bGVfaTogezB4MCwgMHg4MDAwMDAwMCwgMHgxLCAweDB9fSkuX19jb252ZXJ0X2xvbmdfZG91Ymxl
X2QpIDsgfQogIHN0YXRpYyBsb25nIGRvdWJsZSBkZW5vcm1fbWluKCkgIHsgcmV0dXJuIChfX2V4
dGVuc2lvbl9fICgodW5pb24gX19jb252ZXJ0X2xvbmdfZG91YmxlKSB7X19jb252ZXJ0X2xvbmdf
ZG91YmxlX2k6IHsweDAsIDB4ODAwMDAwMDAsIDB4MSwgMHgwfX0pLl9fY29udmVydF9sb25nX2Rv
dWJsZV9kKSA7IH0KICBzdGF0aWMgbG9uZyBkb3VibGUgbWF4KCkgIHsgcmV0dXJuIChfX2V4dGVu
c2lvbl9fICgodW5pb24gX19jb252ZXJ0X2xvbmdfZG91YmxlKSB7X19jb252ZXJ0X2xvbmdfZG91
YmxlX2k6IHsweGZmZmZmZmZmLCAweGZmZmZmZmZmLCAweDEwN2ZmZSwgMHgwfX0pLl9fY29udmVy
dF9sb25nX2RvdWJsZV9kKSA7IH0KICBzdGF0aWMgbG9uZyBkb3VibGUgZXBzaWxvbigpICB7IHJl
dHVybiAoX19leHRlbnNpb25fXyAoKHVuaW9uIF9fY29udmVydF9sb25nX2RvdWJsZSkge19fY29u
dmVydF9sb25nX2RvdWJsZV9pOiB7MHgwLCAweDgwMDAwMDAwLCAweDNmYzAsIDB4MH19KS5fX2Nv
bnZlcnRfbG9uZ19kb3VibGVfZCkgOyB9CiAgc3RhdGljIGxvbmcgZG91YmxlIHJvdW5kX2Vycm9y
KCkgIHsgcmV0dXJuIDQ7IH0gIAp9OwoKfSAKCiMgNTQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svaW5jbHVkZS9ibGl0ei9udW1pbnF1aXJlLmgiIDIKCgoKCgoKCgoKbmFtZXNwYWNlICBibGl0
eiAgeyAKCiAKCgoKCgoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlPgpzdHJ1Y3QgX2J6X09uZVpl
cm9UcmFpdHMgewogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgemVybygpIHsgcmV0dXJuIDA7
IH0KICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIG9uZSgpICB7IHJldHVybiAxOyB9Cn07CgoK
CnRlbXBsYXRlPD4Kc3RydWN0IF9iel9PbmVaZXJvVHJhaXRzPGNvbXBsZXg8ZmxvYXQ+ID4gewog
ICAgc3RhdGljIGlubGluZSBjb21wbGV4PGZsb2F0PiB6ZXJvKCkgeyByZXR1cm4gY29tcGxleDxm
bG9hdD4oMC4wZiwwLjBmKTsgfQogICAgc3RhdGljIGlubGluZSBjb21wbGV4PGZsb2F0PiBvbmUo
KSAgeyByZXR1cm4gY29tcGxleDxmbG9hdD4oMS4wZiwwLjBmKTsgfQp9OwoKdGVtcGxhdGU8Pgpz
dHJ1Y3QgX2J6X09uZVplcm9UcmFpdHM8Y29tcGxleDxkb3VibGU+ID4gewogICAgc3RhdGljIGlu
bGluZSBjb21wbGV4PGRvdWJsZT4gemVybygpIHsgcmV0dXJuIGNvbXBsZXg8ZG91YmxlPigwLjAs
MC4wKTsgfQogICAgc3RhdGljIGlubGluZSBjb21wbGV4PGRvdWJsZT4gb25lKCkgIHsgcmV0dXJu
IGNvbXBsZXg8ZG91YmxlPigxLjAsMC4wKTsgfQp9OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X09u
ZVplcm9UcmFpdHM8Y29tcGxleDxsb25nIGRvdWJsZT4gPiB7CiAgICBzdGF0aWMgaW5saW5lIGNv
bXBsZXg8bG9uZyBkb3VibGU+IHplcm8oKSAKICAgIHsgcmV0dXJuIGNvbXBsZXg8bG9uZyBkb3Vi
bGU+KDAuMCwwLjApOyB9CgogICAgc3RhdGljIGlubGluZSBjb21wbGV4PGxvbmcgZG91YmxlPiBv
bmUoKSAgCiAgICB7IHJldHVybiBjb21wbGV4PGxvbmcgZG91YmxlPigxLjAsMC4wKTsgfQp9OwoK
Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCB6ZXJvKFQpCnsKICAgIHJldHVybiBfYnpfT25l
WmVyb1RyYWl0czxUPjo6emVybygpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCBvbmUo
VCkKewogICAgcmV0dXJuIF9iel9PbmVaZXJvVHJhaXRzPFQ+OjpvbmUoKTsKfQoKdGVtcGxhdGU8
Y2xhc3MgVD4KaW5saW5lIGludCBkaWdpdHMoVCkKewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRz
PFQ+OjpkaWdpdHM7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBpbnQgZGlnaXRzMTAoVCkK
ewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMxMDsKfQoKdGVtcGxhdGU8Y2xh
c3MgVD4KaW5saW5lIFQgZXBzaWxvbihUKSAgCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxU
Pjo6ZXBzaWxvbigpOwp9CgogCiAKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFQgbmVnaHVnZShU
KSAgCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6aXNfaW50ZWdlciA/ICAgIG51bWVy
aWNfbGltaXRzPFQ+OjptaW4oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogLSBudW1lcmljX2xpbWl0czxUPjo6bWF4KCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+Cmlu
bGluZSBUIGh1Z2UoVCkgIAp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46Om1heCgpOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCB0aW55KFQpICAKewogICAgcmV0dXJuIG51bWVy
aWNfbGltaXRzPFQ+OjptaW4oKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIGludCBtYXhf
ZXhwb25lbnQoVCkKewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+OjptYXhfZXhwb25lbnQ7
Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBpbnQgbWluX2V4cG9uZW50KFQpCnsKICAgIHJl
dHVybiBudW1lcmljX2xpbWl0czxUPjo6bWluX2V4cG9uZW50Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBU
PgppbmxpbmUgaW50IG1pbl9leHBvbmVudDEwKFQpCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0
czxUPjo6bWluX2V4cG9uZW50MTA7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBpbnQgbWF4
X2V4cG9uZW50MTAoVCkKewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+OjptYXhfZXhwb25l
bnQxMDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIGludCBwcmVjaXNpb24oVCkKewogICAg
cmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMxMDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4K
aW5saW5lIGludCByYWRpeChUKQp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46OnJhZGl4
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgUmFuZ2UgcmFuZ2UoVCkKewogICAgcmV0dXJu
IFJhbmdlKG51bWVyaWNfbGltaXRzPFQ+OjptaW5fZXhwb25lbnQxMCwgCiAgICAgICAgbnVtZXJp
Y19saW1pdHM8VD46Om1heF9leHBvbmVudDEwKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5l
IGJvb2wgaXNfc2lnbmVkKFQpCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6aXNfc2ln
bmVkOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYm9vbCBpc19pbnRlZ2VyKFQpCnsKICAg
IHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6aXNfaW50ZWdlcjsKfQoKdGVtcGxhdGU8Y2xhc3Mg
VD4KaW5saW5lIGJvb2wgaXNfZXhhY3QoVCkKewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+
Ojppc19leGFjdDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFQgcm91bmRfZXJyb3IoVCkg
IAp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46OnJvdW5kX2Vycm9yKCk7Cn0KCnRlbXBs
YXRlPGNsYXNzIFQ+CmlubGluZSBib29sIGhhc19pbmZpbml0eShUKSAKewogICAgcmV0dXJuIG51
bWVyaWNfbGltaXRzPFQ+OjpoYXNfaW5maW5pdHk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGlu
ZSBib29sIGhhc19xdWlldF9OYU4oVCkKewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+Ojpo
YXNfcXVpZXRfTmFOOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYm9vbCBoYXNfc2lnbmFs
aW5nX05hTihUKQp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46Omhhc19zaWduYWxpbmdf
TmFOOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBib29sIGhhc19zaWduYWxsaW5nX05h
TihUKQp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46Omhhc19zaWduYWxpbmdfTmFOOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYm9vbCBoYXNfZGVub3JtKFQpCnsKICAgIHJldHVy
biBudW1lcmljX2xpbWl0czxUPjo6aGFzX2Rlbm9ybTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5s
aW5lIGJvb2wgaGFzX2Rlbm9ybV9sb3NzKFQpCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxU
Pjo6aGFzX2Rlbm9ybV9sb3NzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCBpbmZpbml0
eShUKSAgCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKTsKfQoKdGVt
cGxhdGU8Y2xhc3MgVD4KaW5saW5lIFQgcXVpZXRfTmFOKFQpICAKewogICAgcmV0dXJuIG51bWVy
aWNfbGltaXRzPFQ+OjpxdWlldF9OYU4oKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFQg
c2lnbmFsaW5nX05hTihUKSAgCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6c2lnbmFs
aW5nX05hTigpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCBzaWduYWxsaW5nX05hTihU
KSAgCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6c2lnbmFsaW5nX05hTigpOwp9Cgp0
ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCBkZW5vcm1fbWluKFQpICAKewogICAgcmV0dXJuIG51
bWVyaWNfbGltaXRzPFQ+OjpkZW5vcm1fbWluKCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGlu
ZSBib29sIGlzX2llYzU1OShUKQp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46OmlzX2ll
YzU1OTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIGJvb2wgaXNfYm91bmRlZChUKQp7CiAg
ICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46OmlzX2JvdW5kZWQ7Cn0KCnRlbXBsYXRlPGNsYXNz
IFQ+CmlubGluZSBib29sIGlzX21vZHVsbyhUKQp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8
VD46OmlzX21vZHVsbzsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIGJvb2wgdHJhcHMoVCkK
ewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+Ojp0cmFwczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
VD4KaW5saW5lIGJvb2wgdGlueW5lc3NfYmVmb3JlKFQpCnsKICAgIHJldHVybiBudW1lcmljX2xp
bWl0czxUPjo6dGlueW5lc3NfYmVmb3JlOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgc3Rk
OjogZmxvYXRfcm91bmRfc3R5bGUgICByb3VuZF9zdHlsZShUKQp7CiAgICByZXR1cm4gbnVtZXJp
Y19saW1pdHM8VD46OnJvdW5kX3N0eWxlOwp9Cgp9IAoKCgojIDU3ICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXhwci5oIiAyCgoKCiAKCgoKCgoKCgoKCgoK
Cm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+CmNsYXNz
IF9iel9FeHByUGFpciB7CnB1YmxpYzoKICAgIF9iel9FeHByUGFpcihjb25zdCBUMSYgYSwgY29u
c3QgVDImIGIpCiAgICAgICAgOiBmaXJzdF8oYSksIHNlY29uZF8oYikKICAgIHsgfQoKICAgIGNv
bnN0IFQxJiBmaXJzdCgpIGNvbnN0CiAgICB7IHJldHVybiBmaXJzdF87IH0KCiAgICBjb25zdCBU
MiYgc2Vjb25kKCkgY29uc3QKICAgIHsgcmV0dXJuIHNlY29uZF87IH0KCnByb3RlY3RlZDoKICAg
IFQxIGZpcnN0XzsKICAgIFQyIHNlY29uZF87Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3Mg
VDI+CmlubGluZSBfYnpfRXhwclBhaXI8VDEsVDI+IG1ha2VFeHByUGFpcihjb25zdCBUMSYgYSwg
Y29uc3QgVDImIGIpCnsKICAgIHJldHVybiBfYnpfRXhwclBhaXI8VDEsVDI+KGEsYik7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcj4KY2xhc3MgX2J6X0FycmF5RXhwciAKCiAgICA6IHB1YmxpYyBF
VEJhc2U8X2J6X0FycmF5RXhwcjxQX2V4cHI+ID4KCnsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9l
eHByIFRfZXhwcjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlIFRfbnVt
dHlwZTsKICAgIHR5cGVkZWYgVF9leHByIFRfY3RvckFyZzE7CiAgICB0eXBlZGVmIGludCAgICBU
X2N0b3JBcmcyOyAgICAgCgogICAgZW51bSB7IG51bUFycmF5T3BlcmFuZHMgPSAoaW50KSBQX2V4
cHI6Om51bUFycmF5T3BlcmFuZHMgICwKICAgICAgICBudW1JbmRleFBsYWNlaG9sZGVycyA9IChp
bnQpIFBfZXhwcjo6bnVtSW5kZXhQbGFjZWhvbGRlcnMgICwKICAgICAgICByYW5rID0gKGludCkg
UF9leHByOjpyYW5rICAgfTsKCiAgICBfYnpfQXJyYXlFeHByKGNvbnN0IF9iel9BcnJheUV4cHI8
UF9leHByPiYgYSkKICAgICAgICA6IGl0ZXJfKGEuaXRlcl8pCiAgICB7IH0KCgogICAgdGVtcGxh
dGU8Y2xhc3MgVD4KICAgIF9iel9BcnJheUV4cHIoY29uc3QgVCYgYSkKICAgICAgICA6IGl0ZXJf
KGEpCiAgICB7IH0KIyAxMzUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0
ei9hcnJheS9leHByLmgiCgoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4KICAgIF9i
el9BcnJheUV4cHIoY29uc3QgIFQxICYgIGEsIGNvbnN0ICBUMiAmICBiKQogICAgICAgIDogaXRl
cl8oYSwgYikKICAgIHsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3Mg
VDM+CiAgICBfYnpfQXJyYXlFeHByKGNvbnN0ICBUMSAmICBhLCBjb25zdCAgVDIgJiAgYiwgY29u
c3QgIFQzICYgIGMpCiAgICAgICAgOiBpdGVyXyhhLCBiLCBjKQogICAgeyB9CgogICAgdGVtcGxh
dGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgogICAgX2J6X0FycmF5RXhwcihjb25zdCBfYnpfRXhwclBh
aXI8VDEsVDI+JiBwYWlyKQogICAgICAgIDogaXRlcl8ocGFpci5maXJzdCgpLCBwYWlyLnNlY29u
ZCgpKQogICAgeyB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKigpCiAgICB7IHJldHVybiAqaXRl
cl87IH0KCgoKCgoKICAgIHRlbXBsYXRlPGludCBOX3Jhbms+CiAgICBUX251bXR5cGUgb3BlcmF0
b3IoKShjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgaSkKICAgIHsgcmV0dXJuIGl0ZXJf
KGkpOyB9CgoKICAgIGludCBhc2NlbmRpbmcoaW50IHJhbmspCiAgICB7IHJldHVybiBpdGVyXy5h
c2NlbmRpbmcocmFuayk7IH0KCiAgICBpbnQgb3JkZXJpbmcoaW50IHJhbmspCiAgICB7IHJldHVy
biBpdGVyXy5vcmRlcmluZyhyYW5rKTsgfQoKICAgIGludCBsYm91bmQoaW50IHJhbmspCiAgICB7
IHJldHVybiBpdGVyXy5sYm91bmQocmFuayk7IH0KCiAgICBpbnQgdWJvdW5kKGludCByYW5rKQog
ICAgeyByZXR1cm4gaXRlcl8udWJvdW5kKHJhbmspOyB9CgogICAgdm9pZCBwdXNoKGludCBwb3Np
dGlvbikKICAgIHsgaXRlcl8ucHVzaChwb3NpdGlvbik7IH0KCiAgICB2b2lkIHBvcChpbnQgcG9z
aXRpb24pCiAgICB7IGl0ZXJfLnBvcChwb3NpdGlvbik7IH0KCiAgICB2b2lkIGFkdmFuY2UoKQog
ICAgeyBpdGVyXy5hZHZhbmNlKCk7IH0KCiAgICB2b2lkIGFkdmFuY2UoaW50IG4pCiAgICB7IGl0
ZXJfLmFkdmFuY2Uobik7IH0KCiAgICB2b2lkIGxvYWRTdHJpZGUoaW50IHJhbmspCiAgICB7IGl0
ZXJfLmxvYWRTdHJpZGUocmFuayk7IH0KCiAgICBib29sICBpc1VuaXRTdHJpZGUoaW50IHJhbmsp
IGNvbnN0CiAgICB7IHJldHVybiBpdGVyXy5pc1VuaXRTdHJpZGUocmFuayk7IH0KCiAgICB2b2lk
IGFkdmFuY2VVbml0U3RyaWRlKCkKICAgIHsgaXRlcl8uYWR2YW5jZVVuaXRTdHJpZGUoKTsgfQoK
ICAgIGJvb2wgIGNhbkNvbGxhcHNlKGludCBvdXRlckxvb3BSYW5rLCBpbnQgaW5uZXJMb29wUmFu
aykgY29uc3QKICAgIHsgCiAgICAgICAgIAogICAgICAgIHJldHVybiBpdGVyXy5jYW5Db2xsYXBz
ZShvdXRlckxvb3BSYW5rLCBpbm5lckxvb3BSYW5rKTsgCiAgICB9CgogICAgVF9udW10eXBlIG9w
ZXJhdG9yW10oaW50IGkpCiAgICB7IHJldHVybiBpdGVyX1tpXTsgfQoKICAgIFRfbnVtdHlwZSBm
YXN0UmVhZChpbnQgaSkKICAgIHsgcmV0dXJuIGl0ZXJfLmZhc3RSZWFkKGkpOyB9CgogICAgaW50
IHN1Z2dlc3RTdHJpZGUoaW50IHJhbmspIGNvbnN0CiAgICB7IHJldHVybiBpdGVyXy5zdWdnZXN0
U3RyaWRlKHJhbmspOyB9CgogICAgYm9vbCAgaXNTdHJpZGUoaW50IHJhbmssIGludCBzdHJpZGUp
IGNvbnN0CiAgICB7IHJldHVybiBpdGVyXy5pc1N0cmlkZShyYW5rLHN0cmlkZSk7IH0KCiAgICB2
b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyKSBjb25zdAogICAgewogICAgICAgIHByZXR0eVBy
aW50Rm9ybWF0IGZvcm1hdCh0cnVlICk7ICAgCiAgICAgICAgaXRlcl8ucHJldHR5UHJpbnQoc3Ry
LCBmb3JtYXQpOwogICAgfQoKICAgIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0
eVByaW50Rm9ybWF0JiBmb3JtYXQpIGNvbnN0CiAgICB7IGl0ZXJfLnByZXR0eVByaW50KHN0ciwg
Zm9ybWF0KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFRfc2hhcGU+CiAgICBib29sICBzaGFwZUNo
ZWNrKGNvbnN0IFRfc2hhcGUmIHNoYXBlKQogICAgeyByZXR1cm4gaXRlcl8uc2hhcGVDaGVjayhz
aGFwZSk7IH0KCiAgICB0ZW1wbGF0ZTxpbnQgTl9yYW5rPgogICAgdm9pZCBtb3ZlVG8oY29uc3Qg
VGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgaSkKICAgIHsKICAgICAgICBpdGVyXy5tb3ZlVG8oaSk7
CiAgICB9Cgpwcm90ZWN0ZWQ6CiAgICBfYnpfQXJyYXlFeHByKCkgeyB9CgogICAgVF9leHByIGl0
ZXJfOwp9OwoKc3RydWN0IGJvdW5kcyB7CiAgICBzdGF0aWMgaW50IGNvbXB1dGVfYXNjZW5kaW5n
KGludCByYW5rLCBpbnQgYXNjZW5kaW5nMSwgaW50IGFzY2VuZGluZzIpCiAgICB7CiAgICAgICAg
IAogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAoKICAgICAgICBpZiAoYXNjZW5kaW5nMSA9
PSBhc2NlbmRpbmcyKQogICAgICAgICAgICByZXR1cm4gYXNjZW5kaW5nMTsKICAgICAgICBlbHNl
IGlmIChhc2NlbmRpbmcxID09ICgtIDIxNDc0ODM2NDcgIC0xKSApCiAgICAgICAgICAgIHJldHVy
biBhc2NlbmRpbmcyOwogICAgICAgIGVsc2UgaWYgKGFzY2VuZGluZzIgPT0gKC0gMjE0NzQ4MzY0
NyAgLTEpICkKICAgICAgICAgICAgcmV0dXJuIGFzY2VuZGluZzE7CgogICAgICAgICA7CgoKCiAg
ICAgICAgIDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBzdGF0aWMgaW50IGNvbXB1dGVf
b3JkZXJpbmcoaW50IHJhbmssIGludCBvcmRlcjEsIGludCBvcmRlcjIpCiAgICB7CiAgICAgICAg
IAogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAoKICAgICAgICBpZiAob3JkZXIxID09IG9y
ZGVyMikKICAgICAgICAgICAgcmV0dXJuIG9yZGVyMTsKICAgICAgICBlbHNlIGlmIChvcmRlcjEg
PT0gKC0gMjE0NzQ4MzY0NyAgLTEpICkKICAgICAgICAgICAgcmV0dXJuIG9yZGVyMjsKICAgICAg
ICBlbHNlIGlmIChvcmRlcjIgPT0gKC0gMjE0NzQ4MzY0NyAgLTEpICkKICAgICAgICAgICAgcmV0
dXJuIG9yZGVyMTsKCiAgICAgICAgIDsKCgogICAgICAgICA7CiAgICAgICAgcmV0dXJuIDA7CiAg
ICB9CgogICAgc3RhdGljIGludCBjb21wdXRlX2xib3VuZChpbnQgcmFuaywgaW50IGxib3VuZDEs
IGludCBsYm91bmQyKQogICAgewogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAogICAgICAg
ICAKCiAgICAgICAgaWYgKGxib3VuZDEgPT0gbGJvdW5kMikKICAgICAgICAgICAgcmV0dXJuIGxi
b3VuZDE7CiAgICAgICAgZWxzZSBpZiAobGJvdW5kMSA9PSAoLSAyMTQ3NDgzNjQ3ICAtMSkgKQog
ICAgICAgICAgICByZXR1cm4gbGJvdW5kMjsKICAgICAgICBlbHNlIGlmIChsYm91bmQyID09ICgt
IDIxNDc0ODM2NDcgIC0xKSApCiAgICAgICAgICAgIHJldHVybiBsYm91bmQxOwoKICAgICAgICAg
OwoKCiAgICAgICAgIDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBzdGF0aWMgaW50IGNv
bXB1dGVfdWJvdW5kKGludCByYW5rLCBpbnQgdWJvdW5kMSwgaW50IHVib3VuZDIpCiAgICB7CiAg
ICAgICAgIAogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAoKICAgICAgICBpZiAodWJvdW5k
MSA9PSB1Ym91bmQyKQogICAgICAgICAgICByZXR1cm4gdWJvdW5kMTsKICAgICAgICBlbHNlIGlm
ICh1Ym91bmQxID09IDIxNDc0ODM2NDcgICkKICAgICAgICAgICAgcmV0dXJuIHVib3VuZDI7CiAg
ICAgICAgZWxzZSBpZiAodWJvdW5kMiA9PSAyMTQ3NDgzNjQ3ICApCiAgICAgICAgICAgIHJldHVy
biB1Ym91bmQxOwoKICAgICAgICAgOwoKCiAgICAgICAgIDsKICAgICAgICByZXR1cm4gMDsKICAg
IH0KCn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyLCBjbGFzcyBQX29w
PgpjbGFzcyBfYnpfQXJyYXlFeHByT3AgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfZXhwcjEgVF9l
eHByMTsKICAgIHR5cGVkZWYgUF9leHByMiBUX2V4cHIyOwogICAgdHlwZWRlZiB0eXBlbmFtZSAg
VF9leHByMTo6VF9udW10eXBlIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4
cHIyOjpUX251bXR5cGUgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFBfb3A6OlRf
bnVtdHlwZSBUX251bXR5cGU7CiAgICB0eXBlZGVmIFBfb3AgVF9vcDsKICAgIHR5cGVkZWYgVF9l
eHByMSBUX2N0b3JBcmcxOwogICAgdHlwZWRlZiBUX2V4cHIyIFRfY3RvckFyZzI7CgogICAgZW51
bSB7IG51bUFycmF5T3BlcmFuZHMgPSAoaW50KSBQX2V4cHIxOjpudW1BcnJheU9wZXJhbmRzICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKGludCkgUF9leHByMjo6bnVtQXJyYXlPcGVy
YW5kcyAgLAogICAgICAgICAgIG51bUluZGV4UGxhY2Vob2xkZXJzID0gKGludCkgUF9leHByMTo6
bnVtSW5kZXhQbGFjZWhvbGRlcnMgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoaW50
KSBQX2V4cHIyOjpudW1JbmRleFBsYWNlaG9sZGVycyAgLAogICAgICAgICAgIHJhbmsgPSAoKGlu
dCkgUF9leHByMTo6cmFuayAgID4gKGludCkgUF9leHByMjo6cmFuayAgKSAKICAgICAgICAgICAg
ICAgID8gKGludCkgUF9leHByMTo6cmFuayAgIDogKGludCkgUF9leHByMjo6cmFuayAgCiAgICB9
OwoKICAgIF9iel9BcnJheUV4cHJPcChjb25zdCBfYnpfQXJyYXlFeHByT3A8UF9leHByMSwgUF9l
eHByMiwgUF9vcD4mIGEpCiAgICAgICAgOiBpdGVyMV8oYS5pdGVyMV8pLCBpdGVyMl8oYS5pdGVy
Ml8pCiAgICB7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+CiAgICBfYnpfQXJy
YXlFeHByT3AoY29uc3QgIFQxICYgIGEsIGNvbnN0ICBUMiAmICBiKQogICAgICAgIDogaXRlcjFf
KGEpLCBpdGVyMl8oYikKICAgIHsgfQoKIAogCiAKCiAgICBUX251bXR5cGUgb3BlcmF0b3IqKCkK
ICAgIHsgcmV0dXJuIFRfb3A6OmFwcGx5KCppdGVyMV8sICppdGVyMl8pOyB9CgoKCgoKCiAgICB0
ZW1wbGF0ZTxpbnQgTl9yYW5rPgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZl
Y3RvcjxpbnQsIE5fcmFuaz4mIGkpCiAgICB7IHJldHVybiBUX29wOjphcHBseShpdGVyMV8oaSks
IGl0ZXIyXyhpKSk7IH0KCgogICAgaW50IGFzY2VuZGluZyhpbnQgcmFuaykKICAgIHsKICAgICAg
ICByZXR1cm4gYm91bmRzOjpjb21wdXRlX2FzY2VuZGluZyhyYW5rLCBpdGVyMV8uYXNjZW5kaW5n
KHJhbmspLAogICAgICAgICAgICBpdGVyMl8uYXNjZW5kaW5nKHJhbmspKTsKICAgIH0KCiAgICBp
bnQgb3JkZXJpbmcoaW50IHJhbmspCiAgICB7CiAgICAgICAgcmV0dXJuIGJvdW5kczo6Y29tcHV0
ZV9vcmRlcmluZyhyYW5rLCBpdGVyMV8ub3JkZXJpbmcocmFuayksCiAgICAgICAgICAgIGl0ZXIy
Xy5vcmRlcmluZyhyYW5rKSk7CiAgICB9CgogICAgaW50IGxib3VuZChpbnQgcmFuaykKICAgIHsg
CiAgICAgICAgcmV0dXJuIGJvdW5kczo6Y29tcHV0ZV9sYm91bmQocmFuaywgaXRlcjFfLmxib3Vu
ZChyYW5rKSwKICAgICAgICAgICAgaXRlcjJfLmxib3VuZChyYW5rKSk7CiAgICB9CgogICAgaW50
IHVib3VuZChpbnQgcmFuaykKICAgIHsKICAgICAgICByZXR1cm4gYm91bmRzOjpjb21wdXRlX3Vi
b3VuZChyYW5rLCBpdGVyMV8udWJvdW5kKHJhbmspLAogICAgICAgICAgICBpdGVyMl8udWJvdW5k
KHJhbmspKTsKICAgIH0KCiAgICB2b2lkIHB1c2goaW50IHBvc2l0aW9uKQogICAgeyAKICAgICAg
ICBpdGVyMV8ucHVzaChwb3NpdGlvbik7IAogICAgICAgIGl0ZXIyXy5wdXNoKHBvc2l0aW9uKTsK
ICAgIH0KCiAgICB2b2lkIHBvcChpbnQgcG9zaXRpb24pCiAgICB7IAogICAgICAgIGl0ZXIxXy5w
b3AocG9zaXRpb24pOyAKICAgICAgICBpdGVyMl8ucG9wKHBvc2l0aW9uKTsKICAgIH0KCiAgICB2
b2lkIGFkdmFuY2UoKQogICAgeyAKICAgICAgICBpdGVyMV8uYWR2YW5jZSgpOyAKICAgICAgICBp
dGVyMl8uYWR2YW5jZSgpOwogICAgfQoKICAgIHZvaWQgYWR2YW5jZShpbnQgbikKICAgIHsKICAg
ICAgICBpdGVyMV8uYWR2YW5jZShuKTsKICAgICAgICBpdGVyMl8uYWR2YW5jZShuKTsKICAgIH0K
CiAgICB2b2lkIGxvYWRTdHJpZGUoaW50IHJhbmspCiAgICB7IAogICAgICAgIGl0ZXIxXy5sb2Fk
U3RyaWRlKHJhbmspOyAKICAgICAgICBpdGVyMl8ubG9hZFN0cmlkZShyYW5rKTsKICAgIH0KICAg
IAogICAgYm9vbCAgaXNVbml0U3RyaWRlKGludCByYW5rKSBjb25zdAogICAgeyByZXR1cm4gaXRl
cjFfLmlzVW5pdFN0cmlkZShyYW5rKSAmJiBpdGVyMl8uaXNVbml0U3RyaWRlKHJhbmspOyB9Cgog
ICAgdm9pZCBhZHZhbmNlVW5pdFN0cmlkZSgpCiAgICB7IAogICAgICAgIGl0ZXIxXy5hZHZhbmNl
VW5pdFN0cmlkZSgpOyAKICAgICAgICBpdGVyMl8uYWR2YW5jZVVuaXRTdHJpZGUoKTsKICAgIH0K
CiAgICBib29sICBjYW5Db2xsYXBzZShpbnQgb3V0ZXJMb29wUmFuaywgaW50IGlubmVyTG9vcFJh
bmspIGNvbnN0CiAgICB7IAogICAgICAgICAKICAgICAgICByZXR1cm4gaXRlcjFfLmNhbkNvbGxh
cHNlKG91dGVyTG9vcFJhbmssIGlubmVyTG9vcFJhbmspCiAgICAgICAgICAgICYmIGl0ZXIyXy5j
YW5Db2xsYXBzZShvdXRlckxvb3BSYW5rLCBpbm5lckxvb3BSYW5rKTsKICAgIH0gCgogICAgVF9u
dW10eXBlIG9wZXJhdG9yW10oaW50IGkpCiAgICB7IHJldHVybiBUX29wOjphcHBseShpdGVyMV9b
aV0sIGl0ZXIyX1tpXSk7IH0KCiAgICBUX251bXR5cGUgZmFzdFJlYWQoaW50IGkpCiAgICB7IHJl
dHVybiBUX29wOjphcHBseShpdGVyMV8uZmFzdFJlYWQoaSksIGl0ZXIyXy5mYXN0UmVhZChpKSk7
IH0KCiAgICBpbnQgc3VnZ2VzdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsKICAgICAgICBp
bnQgc3RyaWRlMSA9IGl0ZXIxXy5zdWdnZXN0U3RyaWRlKHJhbmspOwogICAgICAgIGludCBzdHJp
ZGUyID0gaXRlcjJfLnN1Z2dlc3RTdHJpZGUocmFuayk7CiAgICAgICAgcmV0dXJuIChzdHJpZGUx
ID4gc3RyaWRlMikgPyBzdHJpZGUxIDogc3RyaWRlMjsKICAgIH0KCiAgICBib29sICBpc1N0cmlk
ZShpbnQgcmFuaywgaW50IHN0cmlkZSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gaXRlcjFf
LmlzU3RyaWRlKHJhbmssc3RyaWRlKSAmJiBpdGVyMl8uaXNTdHJpZGUocmFuayxzdHJpZGUpOwog
ICAgfQoKICAgIHRlbXBsYXRlPGludCBOX3Jhbms+CiAgICB2b2lkIG1vdmVUbyhjb25zdCBUaW55
VmVjdG9yPGludCxOX3Jhbms+JiBpKQogICAgewogICAgICAgIGl0ZXIxXy5tb3ZlVG8oaSk7CiAg
ICAgICAgaXRlcjJfLm1vdmVUbyhpKTsKICAgIH0KCiAgICB2b2lkIHByZXR0eVByaW50KHN0cmlu
ZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0KSBjb25zdAogICAgewogICAgICAgIFRf
b3A6OnByZXR0eVByaW50KHN0ciwgZm9ybWF0LCBpdGVyMV8sIGl0ZXIyXyk7CiAgICB9CgogICAg
dGVtcGxhdGU8Y2xhc3MgVF9zaGFwZT4KICAgIGJvb2wgIHNoYXBlQ2hlY2soY29uc3QgVF9zaGFw
ZSYgc2hhcGUpCiAgICB7IHJldHVybiBpdGVyMV8uc2hhcGVDaGVjayhzaGFwZSkgJiYgaXRlcjJf
LnNoYXBlQ2hlY2soc2hhcGUpOyB9Cgpwcm90ZWN0ZWQ6CiAgICBfYnpfQXJyYXlFeHByT3AoKSB7
IH0KCiAgICBUX2V4cHIxIGl0ZXIxXzsKICAgIFRfZXhwcjIgaXRlcjJfOyAKfTsKCnRlbXBsYXRl
PGNsYXNzIFBfZXhwciwgY2xhc3MgUF9vcD4KY2xhc3MgX2J6X0FycmF5RXhwclVuYXJ5T3Agewpw
dWJsaWM6CiAgICB0eXBlZGVmIFBfZXhwciBUX2V4cHI7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBQ
X2V4cHI6OlRfbnVtdHlwZSBUX251bXR5cGUxOwogICAgdHlwZWRlZiB0eXBlbmFtZSAgUF9vcDo6
VF9udW10eXBlIFRfbnVtdHlwZTsKICAgIHR5cGVkZWYgUF9vcCBUX29wOwogICAgdHlwZWRlZiBU
X2V4cHIgVF9jdG9yQXJnMTsKICAgIHR5cGVkZWYgaW50ICAgIFRfY3RvckFyZzI7ICAgICAKCiAg
ICBlbnVtIHsgbnVtQXJyYXlPcGVyYW5kcyA9IChpbnQpIFRfZXhwcjo6bnVtQXJyYXlPcGVyYW5k
cyAgLAogICAgICAgIG51bUluZGV4UGxhY2Vob2xkZXJzID0gKGludCkgVF9leHByOjpudW1JbmRl
eFBsYWNlaG9sZGVycyAgLAogICAgICAgIHJhbmsgPSAoaW50KSBUX2V4cHI6OnJhbmsgICB9OwoK
ICAgIF9iel9BcnJheUV4cHJVbmFyeU9wKGNvbnN0IF9iel9BcnJheUV4cHJVbmFyeU9wPFRfZXhw
ciwgUF9vcD4mIGEpCiAgICAgICAgOiBpdGVyXyhhLml0ZXJfKQogICAgeyB9CgogICAgX2J6X0Fy
cmF5RXhwclVuYXJ5T3AoY29uc3QgIFRfZXhwciAmICBhKQogICAgICAgIDogaXRlcl8oYSkKICAg
IHsgfQoKICAgIF9iel9BcnJheUV4cHJVbmFyeU9wKHR5cGVuYW1lICBUX2V4cHI6OlRfY3RvckFy
ZzEgYSkKICAgICAgICA6IGl0ZXJfKGEpCiAgICB7IH0KCgoKCgoKCgogICAgaW50IGFzY2VuZGlu
ZyhpbnQgcmFuaykKICAgIHsgcmV0dXJuIGl0ZXJfLmFzY2VuZGluZyhyYW5rKTsgfQoKICAgIGlu
dCBvcmRlcmluZyhpbnQgcmFuaykKICAgIHsgcmV0dXJuIGl0ZXJfLm9yZGVyaW5nKHJhbmspOyB9
CgogICAgaW50IGxib3VuZChpbnQgcmFuaykKICAgIHsgcmV0dXJuIGl0ZXJfLmxib3VuZChyYW5r
KTsgfQoKICAgIGludCB1Ym91bmQoaW50IHJhbmspCiAgICB7IHJldHVybiBpdGVyXy51Ym91bmQo
cmFuayk7IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IqKCkKICAgIHsgcmV0dXJuIFRfb3A6OmFw
cGx5KCppdGVyXyk7IH0KCgoKCgoKICAgIHRlbXBsYXRlPGludCBOX3Jhbms+CiAgICBUX251bXR5
cGUgb3BlcmF0b3IoKShjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgaSkKICAgIHsgcmV0
dXJuIFRfb3A6OmFwcGx5KGl0ZXJfKGkpKTsgfQoKCiAgICB2b2lkIHB1c2goaW50IHBvc2l0aW9u
KQogICAgewogICAgICAgIGl0ZXJfLnB1c2gocG9zaXRpb24pOwogICAgfQoKICAgIHZvaWQgcG9w
KGludCBwb3NpdGlvbikKICAgIHsKICAgICAgICBpdGVyXy5wb3AocG9zaXRpb24pOwogICAgfQoK
ICAgIHZvaWQgYWR2YW5jZSgpCiAgICB7CiAgICAgICAgaXRlcl8uYWR2YW5jZSgpOwogICAgfQoK
ICAgIHZvaWQgYWR2YW5jZShpbnQgbikKICAgIHsKICAgICAgICBpdGVyXy5hZHZhbmNlKG4pOwog
ICAgfQoKICAgIHZvaWQgbG9hZFN0cmlkZShpbnQgcmFuaykKICAgIHsKICAgICAgICBpdGVyXy5s
b2FkU3RyaWRlKHJhbmspOwogICAgfQoKICAgIGJvb2wgIGlzVW5pdFN0cmlkZShpbnQgcmFuaykg
Y29uc3QKICAgIHsgcmV0dXJuIGl0ZXJfLmlzVW5pdFN0cmlkZShyYW5rKTsgfQoKICAgIHZvaWQg
YWR2YW5jZVVuaXRTdHJpZGUoKQogICAgewogICAgICAgIGl0ZXJfLmFkdmFuY2VVbml0U3RyaWRl
KCk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50IE5fcmFuaz4KICAgIHZvaWQgbW92ZVRvKGNvbnN0
IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIGkpCiAgICB7CiAgICAgICAgaXRlcl8ubW92ZVRvKGkp
OwogICAgfQoKICAgIGJvb2wgIGNhbkNvbGxhcHNlKGludCBvdXRlckxvb3BSYW5rLCBpbnQgaW5u
ZXJMb29wUmFuaykgY29uc3QKICAgIHsgCiAgICAgICAgIAogICAgICAgIHJldHVybiBpdGVyXy5j
YW5Db2xsYXBzZShvdXRlckxvb3BSYW5rLCBpbm5lckxvb3BSYW5rKTsgCiAgICB9CgogICAgVF9u
dW10eXBlIG9wZXJhdG9yW10oaW50IGkpCiAgICB7IHJldHVybiBUX29wOjphcHBseShpdGVyX1tp
XSk7IH0KCiAgICBUX251bXR5cGUgZmFzdFJlYWQoaW50IGkpCiAgICB7IHJldHVybiBUX29wOjph
cHBseShpdGVyXy5mYXN0UmVhZChpKSk7IH0KCiAgICBpbnQgc3VnZ2VzdFN0cmlkZShpbnQgcmFu
aykgY29uc3QKICAgIHsgcmV0dXJuIGl0ZXJfLnN1Z2dlc3RTdHJpZGUocmFuayk7IH0KCiAgICBi
b29sICBpc1N0cmlkZShpbnQgcmFuaywgaW50IHN0cmlkZSkgY29uc3QKICAgIHsgcmV0dXJuIGl0
ZXJfLmlzU3RyaWRlKHJhbmssc3RyaWRlKTsgfQoKICAgIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5n
JiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQpIGNvbnN0CiAgICB7IFRfb3A6OnByZXR0
eVByaW50KHN0ciwgZm9ybWF0LCBpdGVyXyk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX3NoYXBl
PgogICAgYm9vbCAgc2hhcGVDaGVjayhjb25zdCBUX3NoYXBlJiBzaGFwZSkKICAgIHsgcmV0dXJu
IGl0ZXJfLnNoYXBlQ2hlY2soc2hhcGUpOyB9Cgpwcm90ZWN0ZWQ6CiAgICBfYnpfQXJyYXlFeHBy
VW5hcnlPcCgpIHsgfQoKICAgIFRfZXhwciBpdGVyXzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZT4KY2xhc3MgX2J6X0FycmF5RXhwckNvbnN0YW50IHsKcHVibGljOgogICAgdHlwZWRlZiBQ
X251bXR5cGUgVF9udW10eXBlOwogICAgdHlwZWRlZiBUX251bXR5cGUgVF9jdG9yQXJnMTsKICAg
IHR5cGVkZWYgaW50ICAgICAgIFRfY3RvckFyZzI7ICAgICAKCiAgICBlbnVtIHsgbnVtQXJyYXlP
cGVyYW5kcyA9IDAsIG51bUluZGV4UGxhY2Vob2xkZXJzID0gMCwgcmFuayA9IDAgfTsKCiAgICBf
YnpfQXJyYXlFeHByQ29uc3RhbnQoY29uc3QgX2J6X0FycmF5RXhwckNvbnN0YW50PFRfbnVtdHlw
ZT4mIGEpCiAgICAgICAgOiB2YWx1ZV8oYS52YWx1ZV8pCiAgICB7IH0KCiAgICBfYnpfQXJyYXlF
eHByQ29uc3RhbnQoVF9udW10eXBlIHZhbHVlKQogICAgICAgIDogdmFsdWVfKCB2YWx1ZSAgKQog
ICAgeyAKICAgIH0KCiAgICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgaW50IGFzY2VuZGluZyhp
bnQpCiAgICB7IHJldHVybiAoLSAyMTQ3NDgzNjQ3ICAtMSkgOyB9CgogICAgaW50IG9yZGVyaW5n
KGludCkKICAgIHsgcmV0dXJuICgtIDIxNDc0ODM2NDcgIC0xKSA7IH0KCiAgICBpbnQgbGJvdW5k
KGludCkKICAgIHsgcmV0dXJuICgtIDIxNDc0ODM2NDcgIC0xKSA7IH0KCiAgICBpbnQgdWJvdW5k
KGludCkKICAgIHsgcmV0dXJuIDIxNDc0ODM2NDcgIDsgfQogICAgIAogICAgIAoKICAgIFRfbnVt
dHlwZSBvcGVyYXRvciooKQogICAgeyByZXR1cm4gdmFsdWVfOyB9CgoKCgoKCiAgICB0ZW1wbGF0
ZTxpbnQgTl9yYW5rPgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3Rvcjxp
bnQsTl9yYW5rPiYpCiAgICB7IHJldHVybiB2YWx1ZV87IH0KCgogICAgdm9pZCBwdXNoKGludCkg
eyB9CiAgICB2b2lkIHBvcChpbnQpIHsgfQogICAgdm9pZCBhZHZhbmNlKCkgeyB9CiAgICB2b2lk
IGFkdmFuY2UoaW50KSB7IH0KICAgIHZvaWQgbG9hZFN0cmlkZShpbnQpIHsgfQoKICAgIGJvb2wg
IGlzVW5pdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsgcmV0dXJuIHRydWUgOyB9CgogICAg
dm9pZCBhZHZhbmNlVW5pdFN0cmlkZSgpCiAgICB7IH0KCiAgICBib29sICBjYW5Db2xsYXBzZShp
bnQsaW50KSBjb25zdCAKICAgIHsgcmV0dXJuIHRydWUgOyB9CgogICAgVF9udW10eXBlIG9wZXJh
dG9yW10oaW50KQogICAgeyByZXR1cm4gdmFsdWVfOyB9CgogICAgVF9udW10eXBlIGZhc3RSZWFk
KGludCkKICAgIHsgcmV0dXJuIHZhbHVlXzsgfQoKICAgIGludCBzdWdnZXN0U3RyaWRlKGludCkg
Y29uc3QKICAgIHsgcmV0dXJuIDE7IH0KCiAgICBib29sICBpc1N0cmlkZShpbnQsaW50KSBjb25z
dAogICAgeyByZXR1cm4gdHJ1ZSA7IH0KCiAgICB0ZW1wbGF0ZTxpbnQgTl9yYW5rPgogICAgdm9p
ZCBtb3ZlVG8oY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgaSkKICAgIHsKICAgIH0KCiAg
ICB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0
KSBjb25zdAogICAgewogICAgICAgIGlmIChmb3JtYXQudGVyc2VQcmludGluZ1NlbGVjdGVkKCkp
CiAgICAgICAgICAgIHN0ciArPSBmb3JtYXQubmV4dFNjYWxhck9wZXJhbmRTeW1ib2woKTsKICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHN0ciArPSB0eXBlaWQoIFRfbnVtdHlwZSApLm5hbWUoKSA7
CiAgICB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVF9zaGFwZT4KICAgIGJvb2wgIHNoYXBlQ2hlY2so
Y29uc3QgVF9zaGFwZSYpCiAgICB7IHJldHVybiB0cnVlIDsgfQoKcHJvdGVjdGVkOgogICAgX2J6
X0FycmF5RXhwckNvbnN0YW50KCkgeyB9CgogICAgVF9udW10eXBlIHZhbHVlXzsKfTsKCn0gCgoj
IDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9hc2V4cHIu
aCIgMQoKI2RlZmluZSBCWl9BUlJBWUFTRVhQUl9ICgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAK
CiAKIAoKIAp0ZW1wbGF0ZTxjbGFzcyBUPgpzdHJ1Y3QgYXNFeHByIHsKICAgIHR5cGVkZWYgX2J6
X0FycmF5RXhwckNvbnN0YW50PFQ+IFRfZXhwcjsKfTsKCiAKdGVtcGxhdGU8Y2xhc3MgVD4Kc3Ry
dWN0IGFzRXhwcjxfYnpfQXJyYXlFeHByPFQ+ID4gewogICAgdHlwZWRlZiBfYnpfQXJyYXlFeHBy
PFQ+IFRfZXhwcjsKfTsKCiAKdGVtcGxhdGU8Y2xhc3MgVCwgaW50IE4+CnN0cnVjdCBhc0V4cHI8
QXJyYXk8VCxOPiA+IHsKICAgIHR5cGVkZWYgRmFzdEFycmF5SXRlcmF0b3I8VCxOPiBUX2V4cHI7
Cn07CgogCnRlbXBsYXRlPGludCBOPgpzdHJ1Y3QgYXNFeHByPEluZGV4UGxhY2Vob2xkZXI8Tj4g
PiB7CiAgICB0eXBlZGVmIEluZGV4UGxhY2Vob2xkZXI8Tj4gVF9leHByOwp9OwoKfSAKCgojIDcx
NiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2V4cHIuaCIg
MgoKCgoKIyAyNDcxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJy
YXkuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJy
YXkvbWV0aG9kcy5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX0FSUkFZTUVU
SE9EU19DQwoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUsIGludCBOX3Jhbms+IHRlbXBsYXRlPGNsYXNzIFRfZXhwcj4KQXJyYXk8UF9udW10eXBlLE5f
cmFuaz46OkFycmF5KF9iel9BcnJheUV4cHI8VF9leHByPiBleHByKQp7CiAgICAgCgogICAgVGlu
eVZlY3RvcjxpbnQsTl9yYW5rPiBsYm91bmQsIGV4dGVudCwgb3JkZXJpbmc7CiAgICBUaW55VmVj
dG9yPGJvb2wsTl9yYW5rPiBhc2NlbmRpbmdGbGFnOwoKICAgIGZvciAoaW50IGk9MDsgaSA8IE5f
cmFuazsgKytpKQogICAgewogICAgICAgIGxib3VuZChpKSA9IGV4cHIubGJvdW5kKGkpOwogICAg
ICAgIGludCB1Ym91bmQgPSBleHByLnVib3VuZChpKTsKICAgICAgICBleHRlbnQoaSkgPSB1Ym91
bmQgLSBsYm91bmQoaSkgKyAxOwogICAgICAgIG9yZGVyaW5nKGkpID0gZXhwci5vcmRlcmluZyhp
KTsKICAgICAgICBpbnQgYXNjZW5kaW5nID0gZXhwci5hc2NlbmRpbmcoaSk7CiAgICAgICAgYXNj
ZW5kaW5nRmxhZyhpKSA9IChhc2NlbmRpbmcgPT0gMSk7CgojIDU3ICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvbWV0aG9kcy5jYyIKCiAgICB9CgogICAgQXJy
YXk8UF9udW10eXBlLE5fcmFuaz4gQShsYm91bmQsZXh0ZW50LAogICAgICAgIEdlbmVyYWxBcnJh
eVN0b3JhZ2U8Tl9yYW5rPihvcmRlcmluZyxhc2NlbmRpbmdGbGFnKSk7CiAgICBBID0gZXhwcjsK
ICAgIHJlZmVyZW5jZShBKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5r
PgpBcnJheTxUX251bXR5cGUsTl9yYW5rPjo6QXJyYXkoY29uc3QgVGlueVZlY3RvcjxpbnQsIE5f
cmFuaz4mIGxib3VuZHMsCiAgICBjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgZXh0ZW50
LAogICAgY29uc3QgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+JiBzdG9yYWdlKQogICAgOiBz
dG9yYWdlXyhzdG9yYWdlKQp7CiAgICBsZW5ndGhfID0gZXh0ZW50OwogICAgc3RvcmFnZV8uc2V0
QmFzZShsYm91bmRzKTsKICAgIHNldHVwU3RvcmFnZShOX3JhbmsgLSAxKTsKfQoKCiAKCgoKCgp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX3Jhbms+CmlubGluZSAgdm9pZCBBcnJheTxQ
X251bXR5cGUsIE5fcmFuaz46OmNvbXB1dGVTdHJpZGVzKCkKewogICAgaWYgKE5fcmFuayA+IDEp
CiAgICB7CiAgICAgIGludCBzdHJpZGUgPSAxOwoKICAgICAgIAogICAgICAgCiAgICAgIGJvb2wg
IGFsbEFzY2VuZGluZyA9IHN0b3JhZ2VfLmFsbFJhbmtzU3RvcmVkQXNjZW5kaW5nKCk7CgogICAg
ICAgCiAgICAgIGludCBuOwogICAgICBmb3IgKG49MDsgbiA8IE5fcmFuazsgKytuKQogICAgICB7
CiAgICAgICAgICBpbnQgc3RyaWRlU2lnbiA9ICsxOwoKICAgICAgICAgICAKICAgICAgICAgICAK
ICAgICAgICAgIGlmICghYWxsQXNjZW5kaW5nKQogICAgICAgICAgewogICAgICAgICAgICBpZiAo
IWlzUmFua1N0b3JlZEFzY2VuZGluZyhvcmRlcmluZyhuKSkpCiAgICAgICAgICAgICAgICBzdHJp
ZGVTaWduID0gLTE7CiAgICAgICAgICB9CgogICAgICAgICAgIAogICAgICAgICAgIAogICAgICAg
ICAgc3RyaWRlX1tvcmRlcmluZyhuKV0gPSBzdHJpZGUgKiBzdHJpZGVTaWduOwoKICAgICAgICAg
IHN0cmlkZSAqPSBsZW5ndGhfW29yZGVyaW5nKG4pXTsKICAgICAgfQogICAgfQogICAgZWxzZSB7
CiAgICAgICAgIAogICAgICAgICAKICAgICAgICAgCgogICAgICAgIGlmIChpc1JhbmtTdG9yZWRB
c2NlbmRpbmcoMCkpCiAgICAgICAgICAgIHN0cmlkZV9bMF0gPSAxOwogICAgICAgIGVsc2UKICAg
ICAgICAgICAgc3RyaWRlX1swXSA9IC0xOwogICAgfQoKICAgIGNhbGN1bGF0ZVplcm9PZmZzZXQo
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRf
bnVtdHlwZSwgTl9yYW5rPjo6Y2FsY3VsYXRlWmVyb09mZnNldCgpCnsKICAgICAKICAgIHplcm9P
ZmZzZXRfID0gMDsKCiAgICAgCiAgICAgCiAgICBmb3IgKGludCBuPTA7IG4gPCBOX3Jhbms7ICsr
bikKICAgIHsKICAgICAgICBpZiAoIWlzUmFua1N0b3JlZEFzY2VuZGluZyhuKSkKICAgICAgICAg
ICAgemVyb09mZnNldF8gLT0gKGxlbmd0aF9bbl0gLSAxICsgYmFzZShuKSkgKiBzdHJpZGVfW25d
OwogICAgICAgIGVsc2UKICAgICAgICAgICAgemVyb09mZnNldF8gLT0gc3RyaWRlX1tuXSAqIGJh
c2Uobik7CiAgICB9Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4KYm9v
bCAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+Ojppc1N0b3JhZ2VDb250aWd1b3VzKCkgY29uc3QK
ewogICAgIAogICAgIAogICAgIAogICAgIAoKICAgICAKICAgICAKCiAgICBpbnQgbnVtU3RyaWRl
c01pc3NpbmcgPSAwOwogICAgYm9vbCBoYXZlVW5pdFN0cmlkZSA9IGZhbHNlIDsKCiAgICBmb3Ig
KGludCBpPTA7IGkgPCBOX3Jhbms7ICsraSkKICAgIHsKICAgICAgICBpbnQgc3RyaWRlID0gc3Rk
OjogYWJzICAoc3RyaWRlX1tpXSk7CiAgICAgICAgaWYgKHN0cmlkZSA9PSAxKQogICAgICAgICAg
ICBoYXZlVW5pdFN0cmlkZSA9IHRydWUgOwoKICAgICAgICBpbnQgdmkgPSBzdHJpZGUgKiBsZW5n
dGhfW2ldOwoKICAgICAgICBpbnQgaiA9IDA7CiAgICAgICAgZm9yIChqPTA7IGogPCBOX3Jhbms7
ICsraikKICAgICAgICAgICAgaWYgKHN0ZDo6IGFicyAgKHN0cmlkZV9bal0pID09IHZpKQogICAg
ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGlmIChqID09IE5fcmFuaykKICAgICAgICB7CiAg
ICAgICAgICAgICsrbnVtU3RyaWRlc01pc3Npbmc7CiAgICAgICAgICAgIGlmIChudW1TdHJpZGVz
TWlzc2luZyA9PSAyKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlIDsKICAgICAgICB9CiAg
ICB9CgogICAgcmV0dXJuIGhhdmVVbml0U3RyaWRlOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUsIGludCBOX3Jhbms+CnZvaWQgQXJyYXk8UF9udW10eXBlLCBOX3Jhbms+OjpkdW1wU3RydWN0
dXJlSW5mb3JtYXRpb24ob3N0cmVhbSYgb3MpIGNvbnN0CnsKICAgIG9zIDw8ICJEdW1wIG9mIEFy
cmF5PCIgPDwgdHlwZWlkKCBQX251bXR5cGUgKS5uYW1lKCkgIAogICAgICAgPDwgIiwgIiA8PCBO
X3JhbmsgPDwgIj46IiA8PCBlbmRsCiAgICAgICA8PCAib3JkZXJpbmdfICAgICAgPSAiIDw8IHN0
b3JhZ2VfLm9yZGVyaW5nKCkgPDwgZW5kbAogICAgICAgPDwgImFzY2VuZGluZ0ZsYWdfID0gIiA8
PCBzdG9yYWdlXy5hc2NlbmRpbmdGbGFnKCkgPDwgZW5kbAogICAgICAgPDwgImJhc2VfICAgICAg
ICAgID0gIiA8PCBzdG9yYWdlXy5iYXNlKCkgPDwgZW5kbAogICAgICAgPDwgImxlbmd0aF8gICAg
ICAgID0gIiA8PCBsZW5ndGhfIDw8IGVuZGwKICAgICAgIDw8ICJzdHJpZGVfICAgICAgICA9ICIg
PDwgc3RyaWRlXyA8PCBlbmRsCiAgICAgICA8PCAiemVyb09mZnNldF8gICAgPSAiIDw8IHplcm9P
ZmZzZXRfIDw8IGVuZGwKICAgICAgIDw8ICJudW1FbGVtZW50cygpICA9ICIgPDwgbnVtRWxlbWVu
dHMoKSA8PCBlbmRsCiAgICAgICA8PCAiaXNTdG9yYWdlQ29udGlndW91cygpID0gIiA8PCBpc1N0
b3JhZ2VDb250aWd1b3VzKCkgPDwgZW5kbDsKfQoKIAoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OnJlZmVyZW5jZShj
b25zdCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz4mIGFycmF5KQp7CiAgICBzdG9yYWdlXyA9IGFy
cmF5LnN0b3JhZ2VfOwogICAgbGVuZ3RoXyA9IGFycmF5Lmxlbmd0aF87CiAgICBzdHJpZGVfID0g
YXJyYXkuc3RyaWRlXzsKICAgIHplcm9PZmZzZXRfID0gYXJyYXkuemVyb09mZnNldF87CgogICAg
TWVtb3J5QmxvY2tSZWZlcmVuY2U8UF9udW10eXBlPjo6Y2hhbmdlQmxvY2soYXJyYXkubm9Db25z
dCgpLAogICAgICAgIGFycmF5Lnplcm9PZmZzZXRfKTsKCiAgICBkYXRhXyA9IGNvbnN0X2Nhc3Q8
UF9udW10eXBlKj4oYXJyYXkuZGF0YV8pOwp9CgogCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
LCBpbnQgTl9yYW5rPgppbmxpbmUgIHZvaWQgQXJyYXk8UF9udW10eXBlLCBOX3Jhbms+OjpzZXR1
cFN0b3JhZ2UoaW50IGxhc3RSYW5rSW5pdGlhbGl6ZWQpCnsKICAgICA7CgogICAgIDsKCiAgICAg
CgoKCgoKICAgIGZvciAoaW50IGk9bGFzdFJhbmtJbml0aWFsaXplZCArIDE7IGkgPCBOX3Jhbms7
ICsraSkKICAgIHsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKGksIHN0b3JhZ2VfLmJhc2UobGFz
dFJhbmtJbml0aWFsaXplZCkpOwogICAgICAgIGxlbmd0aF9baV0gPSBsZW5ndGhfW2xhc3RSYW5r
SW5pdGlhbGl6ZWRdOwogICAgfQoKICAgICAKICAgIGNvbXB1dGVTdHJpZGVzKCk7CgogICAgIAog
ICAgTWVtb3J5QmxvY2tSZWZlcmVuY2U8UF9udW10eXBlPjo6bmV3QmxvY2sobnVtRWxlbWVudHMo
KSk7CgogICAgIAogICAgIAogICAgZGF0YV8gKz0gemVyb09mZnNldF87Cn0KCnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4KQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+IEFycmF5
PFRfbnVtdHlwZSwgTl9yYW5rPjo6Y29weSgpIGNvbnN0CnsKICAgIGlmIChudW1FbGVtZW50cygp
KQogICAgewogICAgICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiB6KGxlbmd0aF8sIHN0b3Jh
Z2VfKTsKICAgICAgICB6ID0gKnRoaXM7CiAgICAgICAgcmV0dXJuIHo7CiAgICB9CiAgICBlbHNl
IHsKICAgICAgICAgCiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+Ojpt
YWtlVW5pcXVlKCkKewogICAgaWYgKG51bVJlZmVyZW5jZXMoKSA+IDEpCiAgICB7CiAgICAgICAg
VF9hcnJheSB0bXAgPSBjb3B5KCk7CiAgICAgICAgcmVmZXJlbmNlKHRtcCk7CiAgICB9Cn0KCnRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4KQXJyYXk8VF9udW10eXBlLCBOX3Jh
bms+IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6dHJhbnNwb3NlKGludCByMCwgaW50IHIxLCAK
ICAgIGludCByMiwgaW50IHIzLCBpbnQgcjQsIGludCByNSwgaW50IHI2LCBpbnQgcjcsIGludCBy
OCwgaW50IHI5LCBpbnQgcjEwKQp7CiAgICBUX2FycmF5IEIoKnRoaXMpOwogICAgQi50cmFuc3Bv
c2VTZWxmKHIwLHIxLHIyLHIzLHI0LHI1LHI2LHI3LHI4LHI5LHIxMCk7CiAgICByZXR1cm4gQjsK
fQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgpBcnJheTxUX251bXR5cGUs
IE5fcmFuaz4gQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+Ojp0cmFuc3Bvc2UoCiAgY29uc3QgVGlu
eVZlY3RvcjxpbnQsIE5fcmFuaz4mIHIpCnsKICAgIFRfYXJyYXkgQigqdGhpcyk7CiAgICBCLnRy
YW5zcG9zZVNlbGYocik7CiAgICByZXR1cm4gQjsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBl
LCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6dHJhbnNwb3NlU2Vs
ZihpbnQgcjAsIGludCByMSwgaW50IHIyLCBpbnQgcjMsCiAgICBpbnQgcjQsIGludCByNSwgaW50
IHI2LCBpbnQgcjcsIGludCByOCwgaW50IHI5LCBpbnQgcjEwKQp7CiAgICAgOwoKCgoKICAgICAK
ICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiB4KCp0aGlzKTsKCiAgICAgCiAgICBkb1RyYW5z
cG9zZSgwLCByMCwgeCk7CiAgICBkb1RyYW5zcG9zZSgxLCByMSwgeCk7CiAgICBkb1RyYW5zcG9z
ZSgyLCByMiwgeCk7CiAgICBkb1RyYW5zcG9zZSgzLCByMywgeCk7CiAgICBkb1RyYW5zcG9zZSg0
LCByNCwgeCk7CiAgICBkb1RyYW5zcG9zZSg1LCByNSwgeCk7CiAgICBkb1RyYW5zcG9zZSg2LCBy
NiwgeCk7CiAgICBkb1RyYW5zcG9zZSg3LCByNywgeCk7CiAgICBkb1RyYW5zcG9zZSg4LCByOCwg
eCk7CiAgICBkb1RyYW5zcG9zZSg5LCByOSwgeCk7CiAgICBkb1RyYW5zcG9zZSgxMCwgcjEwLCB4
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRf
bnVtdHlwZSwgTl9yYW5rPjo6dHJhbnNwb3NlU2VsZihjb25zdCBUaW55VmVjdG9yPGludCwgTl9y
YW5rPiYgcikKewogICAgIAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+IHgoKnRoaXMpOwoK
ICAgICAKICAgIGZvcihpbnQgaT0wOyBpPE5fcmFuazsgKytpKSB7CiAgICAgIGRvVHJhbnNwb3Nl
KGksIHJbaV0sIHgpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jh
bms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+Ojpkb1RyYW5zcG9zZShpbnQgZGVzdFJh
bmssIGludCBzb3VyY2VSYW5rLAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSkK
ewogICAgIAoKICAgIGlmIChkZXN0UmFuayA+PSBOX3JhbmspCiAgICAgICAgcmV0dXJuOwoKICAg
IGxlbmd0aF9bZGVzdFJhbmtdID0gYXJyYXkubGVuZ3RoX1tzb3VyY2VSYW5rXTsKICAgIHN0cmlk
ZV9bZGVzdFJhbmtdID0gYXJyYXkuc3RyaWRlX1tzb3VyY2VSYW5rXTsKICAgIHN0b3JhZ2VfLnNl
dEFzY2VuZGluZ0ZsYWcoZGVzdFJhbmssIAogICAgICAgIGFycmF5LmlzUmFua1N0b3JlZEFzY2Vu
ZGluZyhzb3VyY2VSYW5rKSk7CiAgICBzdG9yYWdlXy5zZXRCYXNlKGRlc3RSYW5rLCBhcnJheS5i
YXNlKHNvdXJjZVJhbmspKTsKCiAgICAgCiAgICAgCiAgICAgCgogICAgIAogICAgaW50IGk9MDsK
ICAgIGZvciAoOyBpIDwgTl9yYW5rOyArK2kpCiAgICAgICAgaWYgKGFycmF5LnN0b3JhZ2VfLm9y
ZGVyaW5nKGkpID09IHNvdXJjZVJhbmspCiAgICAgICAgICAgIGJyZWFrOwoKICAgIHN0b3JhZ2Vf
LnNldE9yZGVyaW5nKGksIGRlc3RSYW5rKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBp
bnQgTl9yYW5rPgp2b2lkIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6cmV2ZXJzZVNlbGYoaW50
IHJhbmspCnsKICAgICA7CgogICAgc3RvcmFnZV8uc2V0QXNjZW5kaW5nRmxhZyhyYW5rLCAhaXNS
YW5rU3RvcmVkQXNjZW5kaW5nKHJhbmspKTsKCiAgICBpbnQgYWRqdXN0bWVudCA9IHN0cmlkZV9b
cmFua10gKiAobGJvdW5kKHJhbmspICsgdWJvdW5kKHJhbmspKTsKICAgIHplcm9PZmZzZXRfICs9
IGFkanVzdG1lbnQ7CiAgICBkYXRhXyArPSBhZGp1c3RtZW50OwogICAgc3RyaWRlX1tyYW5rXSAq
PSAtMTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgpBcnJheTxUX251
bXR5cGUsIE5fcmFuaz4gQXJyYXk8VF9udW10eXBlLE5fcmFuaz46OnJldmVyc2UoaW50IHJhbmsp
CnsKICAgIFRfYXJyYXkgQigqdGhpcyk7CiAgICBCLnJldmVyc2VTZWxmKHJhbmspOwogICAgcmV0
dXJuIEI7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gdGVtcGxhdGU8
Y2xhc3MgVF9udW10eXBlMj4KQXJyYXk8VF9udW10eXBlMixOX3Jhbms+IEFycmF5PFRfbnVtdHlw
ZSxOX3Jhbms+OjpleHRyYWN0Q29tcG9uZW50KFRfbnVtdHlwZTIsIAogICAgaW50IGNvbXBvbmVu
dE51bWJlciwgaW50IG51bUNvbXBvbmVudHMpIGNvbnN0CnsKICAgICA7CgoKICAgIFRpbnlWZWN0
b3I8aW50LE5fcmFuaz4gc3RyaWRlMjsKICAgIHN0cmlkZTIgPSBzdHJpZGVfICogbnVtQ29tcG9u
ZW50czsKICAgIGNvbnN0IFRfbnVtdHlwZTIqIGRhdGFGaXJzdDIgPSAKICAgICAgICAoKGNvbnN0
IFRfbnVtdHlwZTIqKWRhdGFGaXJzdCgpKSArIGNvbXBvbmVudE51bWJlcjsKICAgIHJldHVybiBB
cnJheTxUX251bXR5cGUyLE5fcmFuaz4oY29uc3RfY2FzdDxUX251bXR5cGUyKj4oZGF0YUZpcnN0
MiksIAogICAgICAgIGxlbmd0aF8sIHN0cmlkZTIsIHN0b3JhZ2VfKTsKfQoKIAoKCgoKCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4KaW5saW5lICB2b2lkIEFycmF5PFBfbnVt
dHlwZSwgTl9yYW5rPjo6cmVpbmRleFNlbGYoY29uc3QgCiAgICBUaW55VmVjdG9yPGludCwgTl9y
YW5rPiYgbmV3QmFzZSkgCnsKICAgIGRhdGFfICs9IGRvdChiYXNlKCkgLSBuZXdCYXNlLCBzdHJp
ZGVfKTsKICAgIHN0b3JhZ2VfLnNldEJhc2UobmV3QmFzZSk7CiAgICBjYWxjdWxhdGVaZXJvT2Zm
c2V0KCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4KaW5saW5lICBB
cnJheTxQX251bXR5cGUsIE5fcmFuaz4gCkFycmF5PFBfbnVtdHlwZSwgTl9yYW5rPjo6cmVpbmRl
eChjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgbmV3QmFzZSkgCnsKICAgIFRfYXJyYXkg
QigqdGhpcyk7CiAgICBCLnJlaW5kZXhTZWxmKG5ld0Jhc2UpOwogICAgcmV0dXJuIEI7Cn0KCn0g
CgoKCiMgMjQ3MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5
LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5
L2V2YWwuY2MiIDEKIAoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX0FSUkFZRVZBTF9DQwoKCgoK
Cm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKdGVt
cGxhdGU8IGJvb2wgIGNhblRyeUZhc3RUcmF2ZXJzYWw+CnN0cnVjdCBfYnpfdHJ5RmFzdFRyYXZl
cnNhbCB7CiAgICB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3JhbmssIGNsYXNzIFRf
ZXhwciwgY2xhc3MgVF91cGRhdGU+CiAgICBzdGF0aWMgYm9vbCAgdHJ5RmFzdChBcnJheTxUX251
bXR5cGUsTl9yYW5rPiYgYXJyYXksIAogICAgICAgIGNvbnN0ICBUX2V4cHIgJiAgZXhwciwgVF91
cGRhdGUpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlIDsKICAgIH0KfTsKCnRlbXBsYXRlPD4K
c3RydWN0IF9iel90cnlGYXN0VHJhdmVyc2FsPCB0cnVlID4gewogICAgdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlLCBpbnQgTl9yYW5rLCBjbGFzcyBUX2V4cHIsIGNsYXNzIFRfdXBkYXRlPgogICAg
c3RhdGljIGJvb2wgIHRyeUZhc3QoQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGFycmF5LCAKICAg
ICAgICBjb25zdCAgVF9leHByICYgIGV4cHIsIFRfdXBkYXRlKQogICAgewogICAgICAgICAKICAg
ICAgICAgCiAgICAgICAgIAogICAgICAgICAKICAgICAgICBUcmF2ZXJzYWxPcmRlckNvbGxlY3Rp
b248Tl9yYW5rLTE+IHRyYXZlcnNhbHM7CiAgICAgICAgVGlueVZlY3RvcjxpbnQsIE5fcmFuayAt
IDE+IHRyYXZlcnNhbEdyaWRTaXplOwoKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBOX3Jhbmsg
LSAxOyArK2kpCiAgICAgICAgICAgIHRyYXZlcnNhbEdyaWRTaXplW2ldID0gYXJyYXkubGVuZ3Ro
KGFycmF5Lm9yZGVyaW5nKGkrMSkpOwoKCgoKCgogICAgICAgIGNvbnN0IFRyYXZlcnNhbE9yZGVy
PE5fcmFuay0xPiogb3JkZXIgPQogICAgICAgICAgICB0cmF2ZXJzYWxzLmZpbmQodHJhdmVyc2Fs
R3JpZFNpemUpOwoKICAgICAgICBpZiAob3JkZXIpCiAgICAgICAgewoKCgoKICAgICAgICAgICAg
IAogICAgICAgICAgICBhcnJheS5ldmFsdWF0ZVdpdGhGYXN0VHJhdmVyc2FsKCpvcmRlciwgZXhw
ciwgVF91cGRhdGUoKSk7CiAgICAgICAgICAgIHJldHVybiB0cnVlIDsKICAgICAgICB9CgogICAg
ICAgIHJldHVybiBmYWxzZSA7CiAgICB9Cn07CgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwg
aW50IE5fcmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3VwZGF0ZT4KaW5saW5l
IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgCkFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6ZXZh
bHVhdGUoVF9leHByIGV4cHIsIAogICAgVF91cGRhdGUpCnsKICAgICAKIyAxMzUgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9ldmFsLmNjIgoKCiAgICAgOwoK
CiAgICAgOwoKCgogICAgIAoKCgoKCgogICAgaWYgKG51bUVsZW1lbnRzKCkgPT0gMCkKICAgICAg
ICByZXR1cm4gKnRoaXM7CgoKCgoKCiAgICAgCiAgICAgCiAgICAgCgojIDE3NCAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2V2YWwuY2MiCgoKICAgICAKICAg
IGlmIChUX2V4cHI6Om51bUluZGV4UGxhY2Vob2xkZXJzID4gMCkKICAgIHsKICAgICAgICAgCiAg
ICAgICAgIAoKICAgICAgICBpZiAoTl9yYW5rID09IDEpCiAgICAgICAgICAgIHJldHVybiBldmFs
dWF0ZVdpdGhJbmRleFRyYXZlcnNhbDEoZXhwciwgVF91cGRhdGUoKSk7CiAgICAgICAgZWxzZQog
ICAgICAgICAgICByZXR1cm4gZXZhbHVhdGVXaXRoSW5kZXhUcmF2ZXJzYWxOKGV4cHIsIFRfdXBk
YXRlKCkpOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAog
ICAgICAgICAKCgoKICAgICAgICBlbnVtIHsgaXNTdGVuY2lsID0gKE5fcmFuayA+PSAzKSAmJiAo
VF9leHByOjpudW1BcnJheU9wZXJhbmRzID4gNikKICAgICAgICAgICAgJiYgKFRfZXhwcjo6bnVt
SW5kZXhQbGFjZWhvbGRlcnMgPT0gMCkgfTsKCiAgICAgICAgaWYgKF9iel90cnlGYXN0VHJhdmVy
c2FsPGlzU3RlbmNpbD46OnRyeUZhc3QoKnRoaXMsIGV4cHIsIFRfdXBkYXRlKCkpKQogICAgICAg
ICAgICByZXR1cm4gKnRoaXM7CgoKCgogICAgICAgICAKICAgICAgICAgCgogICAgICAgIGlmICgo
Tl9yYW5rID09IDIpICYmIChUX2V4cHI6Om51bUFycmF5T3BlcmFuZHMgPj0gNSkpCiAgICAgICAg
ewogICAgICAgICAgICAgCiAgICAgICAgICAgICAKICAgICAgICAgICAgIAogICAgICAgICAgICAg
CiAgICAgICAgICAgICAKCiAgICAgICAgICAgICAKICAgICAgICAgICAgIAogICAgICAgICAgICAg
CiAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGludCBjYWNoZU5lZWRlZCA9
IDMgKiAzICogc2l6ZW9mKFRfbnVtdHlwZSkgKiBsZW5ndGgob3JkZXJpbmcoMCkpOwogICAgICAg
ICAgICBpZiAoY2FjaGVOZWVkZWQgPiA4MTkyICkKICAgICAgICAgICAgICAgIHJldHVybiBldmFs
dWF0ZVdpdGhUaWxlZDJEVHJhdmVyc2FsKGV4cHIsIFRfdXBkYXRlKCkpOwogICAgICAgIH0KCgoK
ICAgICAgICAgCiAgICAgICAgIAogICAgICAgIGlmIChOX3JhbmsgPT0gMSkKICAgICAgICAgICAg
cmV0dXJuIGV2YWx1YXRlV2l0aFN0YWNrVHJhdmVyc2FsMShleHByLCBUX3VwZGF0ZSgpKTsKICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiBldmFsdWF0ZVdpdGhTdGFja1RyYXZlcnNhbE4o
ZXhwciwgVF91cGRhdGUoKSk7CiAgICB9Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50
IE5fcmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3VwZGF0ZT4KaW5saW5lIEFy
cmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYKQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpldmFsdWF0
ZVdpdGhTdGFja1RyYXZlcnNhbDEoCiAgICBUX2V4cHIgZXhwciwgVF91cGRhdGUpCnsKCgoKCiAg
ICBGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsIE5fcmFuaz4gaXRlcigqdGhpcyk7CiAgICBp
dGVyLmxvYWRTdHJpZGUoZmlyc3RSYW5rKTsKICAgIGV4cHIubG9hZFN0cmlkZShmaXJzdFJhbmsp
OwoKICAgIGJvb2wgIHVzZVVuaXRTdHJpZGUgPSBpdGVyLmlzVW5pdFN0cmlkZShmaXJzdFJhbmsp
CiAgICAgICAgICAmJiBleHByLmlzVW5pdFN0cmlkZShmaXJzdFJhbmspOwoKCiAgICBpbnQgY29t
bW9uU3RyaWRlID0gZXhwci5zdWdnZXN0U3RyaWRlKGZpcnN0UmFuayk7CiAgICBpZiAoaXRlci5z
dWdnZXN0U3RyaWRlKGZpcnN0UmFuaykgPiBjb21tb25TdHJpZGUpCiAgICAgICAgY29tbW9uU3Ry
aWRlID0gaXRlci5zdWdnZXN0U3RyaWRlKGZpcnN0UmFuayk7CiAgICBib29sIHVzZUNvbW1vblN0
cmlkZSA9IGl0ZXIuaXNTdHJpZGUoZmlyc3RSYW5rLGNvbW1vblN0cmlkZSkKICAgICAgICAmJiBl
eHByLmlzU3RyaWRlKGZpcnN0UmFuayxjb21tb25TdHJpZGUpOwoKIAoKCgoKCgoKCgogICAgY29u
c3QgVF9udW10eXBlICogbGFzdCA9IGl0ZXIuZGF0YSgpICsgbGVuZ3RoKGZpcnN0UmFuaykgCiAg
ICAgICAgKiBzdHJpZGUoZmlyc3RSYW5rKTsKCiAgICBpZiAodXNlVW5pdFN0cmlkZSB8fCB1c2VD
b21tb25TdHJpZGUpCiAgICB7CgoKCgoKICAgICAgICBpbnQgdWJvdW5kID0gbGVuZ3RoKGZpcnN0
UmFuaykgKiBjb21tb25TdHJpZGU7CiAgICAgICAgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18gIGRh
dGEgPSBjb25zdF9jYXN0PFRfbnVtdHlwZSo+KGl0ZXIuZGF0YSgpKTsKCiAgICAgICAgaWYgKGNv
bW1vblN0cmlkZSA9PSAxKQogICAgICAgIHsKIAogICAgICAgICAgICBmb3IgKGludCBpPTA7IGkg
PCB1Ym91bmQ7ICsraSkKICAgICAgICAgICAgICAgIFRfdXBkYXRlOjp1cGRhdGUoZGF0YVtpXSwg
ZXhwci5mYXN0UmVhZChpKSk7CiAKIyAzMTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9hcnJheS9ldmFsLmNjIgoKCiAgICAgICAgfQogCiAgICAgICAgZWxzZSB7Cgog
IAogICAgICAgICAgICBmb3IgKGludCBpPTA7IGkgPCB1Ym91bmQ7IGkgKz0gY29tbW9uU3RyaWRl
KQogICAgICAgICAgICAgICAgVF91cGRhdGU6OnVwZGF0ZShkYXRhW2ldLCBleHByLmZhc3RSZWFk
KGkpKTsKICAKIyAzNDYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9h
cnJheS9ldmFsLmNjIgoKICAgICAgICB9CiAKCiMgMzYxICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXZhbC5jYyIKCiAgICB9CiAgICBlbHNlIHsKICAgICAg
ICB3aGlsZSAoaXRlci5kYXRhKCkgIT0gbGFzdCkKICAgICAgICB7CiAgICAgICAgICAgIFRfdXBk
YXRlOjp1cGRhdGUoKmNvbnN0X2Nhc3Q8VF9udW10eXBlKj4oaXRlci5kYXRhKCkpLCAqZXhwcik7
CiAgICAgICAgICAgIGl0ZXIuYWR2YW5jZSgpOwogICAgICAgICAgICBleHByLmFkdmFuY2UoKTsK
ICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251
bXR5cGUsIGludCBOX3Jhbms+IHRlbXBsYXRlPGNsYXNzIFRfZXhwciwgY2xhc3MgVF91cGRhdGU+
CmlubGluZSBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mCkFycmF5PFRfbnVtdHlwZSwgTl9yYW5r
Pjo6ZXZhbHVhdGVXaXRoU3RhY2tUcmF2ZXJzYWxOKAogICAgVF9leHByIGV4cHIsIFRfdXBkYXRl
KQp7CiAgICAgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICAgIAoKCgoKCgoKCgoKCgogICAgY29u
c3QgaW50IG1heFJhbmsgPSBvcmRlcmluZygwKTsKICAgICAKCiAgICAgCiAgICBGYXN0QXJyYXlJ
dGVyYXRvcjxUX251bXR5cGUsIE5fcmFuaz4gaXRlcigqdGhpcyk7CgogICAgIAogICAgIAoKICAg
IGludCBpOwogICAgZm9yIChpPTE7IGkgPCBOX3Jhbms7ICsraSkKICAgIHsKICAgICAgICBpdGVy
LnB1c2goaSk7CiAgICAgICAgZXhwci5wdXNoKGkpOwogICAgfQoKICAgICAKICAgIGl0ZXIubG9h
ZFN0cmlkZShtYXhSYW5rKTsKICAgIGV4cHIubG9hZFN0cmlkZShtYXhSYW5rKTsKCiAgICAgCgoK
CgogICAgYm9vbCAgdXNlVW5pdFN0cmlkZSA9IGl0ZXIuaXNVbml0U3RyaWRlKG1heFJhbmspCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgZXhwci5pc1VuaXRTdHJpZGUobWF4UmFuayk7Cgog
ICAgIAoKCgoKCiAgICBpbnQgY29tbW9uU3RyaWRlID0gZXhwci5zdWdnZXN0U3RyaWRlKG1heFJh
bmspOwogICAgaWYgKGl0ZXIuc3VnZ2VzdFN0cmlkZShtYXhSYW5rKSA+IGNvbW1vblN0cmlkZSkK
ICAgICAgICBjb21tb25TdHJpZGUgPSBpdGVyLnN1Z2dlc3RTdHJpZGUobWF4UmFuayk7CiAgICBi
b29sIHVzZUNvbW1vblN0cmlkZSA9IGl0ZXIuaXNTdHJpZGUobWF4UmFuayxjb21tb25TdHJpZGUp
CiAgICAgICAgJiYgZXhwci5pc1N0cmlkZShtYXhSYW5rLGNvbW1vblN0cmlkZSk7CgoKCgoKCgoK
CgoKCiAgICAgCgoKCiAgICBjb25zdCBUX251bXR5cGUqIGxhc3RbTl9yYW5rXTsKCiAgICAgCiAg
ICBmb3IgKGk9MTsgaSA8IE5fcmFuazsgKytpKQogICAgICAgIGxhc3RbaV0gPSBpdGVyLmRhdGEo
KSArIGxlbmd0aChvcmRlcmluZyhpKSkgKiBzdHJpZGUob3JkZXJpbmcoaSkpOwoKICAgIGludCBs
YXN0TGVuZ3RoID0gbGVuZ3RoKG1heFJhbmspOwogICAgaW50IGZpcnN0Tm9uY29sbGFwc2VkTG9v
cCA9IDE7CgoKCiAgICAgCgoKCgoKCgoKCgogICAgIAogICAgZm9yIChpPTE7IGkgPCBOX3Jhbms7
ICsraSkKICAgIHsKICAgICAgICAgCiAgICAgICAgaW50IG91dGVyTG9vcFJhbmsgPSBvcmRlcmlu
ZyhpKTsKICAgICAgICBpbnQgaW5uZXJMb29wUmFuayA9IG9yZGVyaW5nKGktMSk7CgogICAgICAg
ICAKCgoKCgogICAgICAgIGlmIChjYW5Db2xsYXBzZShvdXRlckxvb3BSYW5rLGlubmVyTG9vcFJh
bmspIAogICAgICAgICAgJiYgZXhwci5jYW5Db2xsYXBzZShvdXRlckxvb3BSYW5rLGlubmVyTG9v
cFJhbmspKQogICAgICAgIHsKCgoKCiAgICAgICAgICAgIGxhc3RMZW5ndGggKj0gbGVuZ3RoKG91
dGVyTG9vcFJhbmspOwogICAgICAgICAgICBmaXJzdE5vbmNvbGxhcHNlZExvb3AgPSBpKzE7CiAg
ICAgICAgfQogICAgICAgIGVsc2UgIAogICAgICAgICAgICBicmVhazsKICAgIH0KCgoKICAgICAK
CgoKCgoKCiAgICB3aGlsZSAodHJ1ZSkgewoKICAgICAgICAgCgoKCgoKICAgICAgICBpZiAoKHVz
ZVVuaXRTdHJpZGUpIHx8ICh1c2VDb21tb25TdHJpZGUpKQogICAgICAgIHsKCgogICAgICAgICAg
ICAgCgoKCgoKCiAgICAgICAgICAgICAKICAgICAgICAgICAgaW50IHVib3VuZCA9IGxhc3RMZW5n
dGggKiBjb21tb25TdHJpZGU7CgogICAgICAgICAgICAgCgoKCgoKCgogICAgICAgICAgICBUX251
bXR5cGUqIF9fcmVzdHJpY3RfXyAgZGF0YSA9IGNvbnN0X2Nhc3Q8VF9udW10eXBlKj4oaXRlci5k
YXRhKCkpOwoKICAgICAgICAgICAgIAoKCiAgICAgICAgICAgIGlmIChjb21tb25TdHJpZGUgPT0g
MSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgdWJvdW5k
OyArK2kpCiAgICAgICAgICAgICAgICAgICAgVF91cGRhdGU6OnVwZGF0ZShkYXRhW2ldLCBleHBy
LmZhc3RSZWFkKGkpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICBmb3IgKGludCBpPTA7IGkgPCB1Ym91bmQ7IGkgKz0gY29tbW9uU3RyaWRlKQogICAg
ICAgICAgICAgICAgICAgIFRfdXBkYXRlOjp1cGRhdGUoZGF0YVtpXSwgZXhwci5mYXN0UmVhZChp
KSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAKCgoKCiAgICAgICAgICAgIGl0ZXIuYWR2
YW5jZShsYXN0TGVuZ3RoICogY29tbW9uU3RyaWRlKTsKICAgICAgICAgICAgZXhwci5hZHZhbmNl
KGxhc3RMZW5ndGggKiBjb21tb25TdHJpZGUpOwojIDU5NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2V2YWwuY2MiCgogICAgICAgIH0KICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIAoKCgoKICAgICAgICAgICAgVF9udW10eXBlICogX19yZXN0cmljdF9f
ICBlbmQgPSBjb25zdF9jYXN0PFRfbnVtdHlwZSo+KGl0ZXIuZGF0YSgpKQogICAgICAgICAgICAg
ICAgKyBsYXN0TGVuZ3RoICogc3RyaWRlKG1heFJhbmspOwoKICAgICAgICAgICAgd2hpbGUgKGl0
ZXIuZGF0YSgpICE9IGVuZCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVF91cGRhdGU6
OnVwZGF0ZSgqY29uc3RfY2FzdDxUX251bXR5cGUqPihpdGVyLmRhdGEoKSksICpleHByKTsKICAg
ICAgICAgICAgICAgIGl0ZXIuYWR2YW5jZSgpOwogICAgICAgICAgICAgICAgZXhwci5hZHZhbmNl
KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgoKICAgICAgICAgCgoKIAogICAgICAgIGludCBq
ID0gZmlyc3ROb25jb2xsYXBzZWRMb29wOwogICAgICAgIGZvciAoOyBqIDwgTl9yYW5rOyArK2op
CiAgICAgICAgewogICAgICAgICAgICAgCiAgICAgICAgICAgIGludCByID0gb3JkZXJpbmcoaik7
CgogICAgICAgICAgICAgCiAgICAgICAgICAgICAKICAgICAgICAgICAgaXRlci5wb3Aoaik7CiAg
ICAgICAgICAgIGV4cHIucG9wKGopOwoKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAg
ICAgICAgIGl0ZXIubG9hZFN0cmlkZShyKTsKICAgICAgICAgICAgZXhwci5sb2FkU3RyaWRlKHIp
OwogICAgICAgICAgICBpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgZXhwci5hZHZhbmNlKCk7
CgogICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChpdGVyLmRhdGEoKSAhPSBsYXN0W2pdKQog
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAgCiAgICAgICAgaWYgKGog
PT0gTl9yYW5rKQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgIAogICAgICAgIGZvciAoOyBq
ID49IGZpcnN0Tm9uY29sbGFwc2VkTG9vcDsgLS1qKQogICAgICAgIHsKICAgICAgICAgICAgaW50
IHIyID0gb3JkZXJpbmcoai0xKTsKICAgICAgICAgICAgaXRlci5wdXNoKGopOwogICAgICAgICAg
ICBleHByLnB1c2goaik7CiAgICAgICAgICAgIGxhc3Rbai0xXSA9IGl0ZXIuZGF0YSgpICsgbGVu
Z3RoKHIyKSAqIHN0cmlkZShyMik7CiAgICAgICAgfQoKICAgICAgICAgCiAgICAgICAgaXRlci5s
b2FkU3RyaWRlKG1heFJhbmspOwogICAgICAgIGV4cHIubG9hZFN0cmlkZShtYXhSYW5rKTsKICAg
IH0KCiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
cmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3VwZGF0ZT4KaW5saW5lIEFycmF5
PFRfbnVtdHlwZSwgTl9yYW5rPiYKQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpldmFsdWF0ZVdp
dGhJbmRleFRyYXZlcnNhbDEoCiAgICBUX2V4cHIgZXhwciwgVF91cGRhdGUpCnsKICAgIFRpbnlW
ZWN0b3I8aW50LE5fcmFuaz4gaW5kZXg7CgogICAgaWYgKHN0cmlkZShmaXJzdFJhbmspID09IDEp
CiAgICB7CiAgICAgICAgVF9udW10eXBlICogX19yZXN0cmljdF9fICBpdGVyID0gZGF0YV87CiAg
ICAgICAgaW50IGxhc3QgPSB1Ym91bmQoZmlyc3RSYW5rKTsKCiAgICAgICAgZm9yIChpbmRleFsw
XSA9IGxib3VuZChmaXJzdFJhbmspOyBpbmRleFswXSA8PSBsYXN0OwogICAgICAgICAgICArK2lu
ZGV4WzBdKQogICAgICAgIHsKICAgICAgICAgICAgVF91cGRhdGU6OnVwZGF0ZShpdGVyW2luZGV4
WzBdXSwgVF9udW10eXBlKGV4cHIoaW5kZXgpKSk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7
CiAgICAgICAgRmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLCBOX3Jhbms+IGl0ZXIoKnRoaXMp
OwogICAgICAgIGl0ZXIubG9hZFN0cmlkZSgwKTsKICAgICAgICBpbnQgbGFzdCA9IHVib3VuZChm
aXJzdFJhbmspOwoKICAgICAgICBmb3IgKGluZGV4WzBdID0gbGJvdW5kKGZpcnN0UmFuayk7IGlu
ZGV4WzBdIDw9IGxhc3Q7CiAgICAgICAgICAgICsraW5kZXhbMF0pCiAgICAgICAgewogICAgICAg
ICAgICBUX3VwZGF0ZTo6dXBkYXRlKCpjb25zdF9jYXN0PFRfbnVtdHlwZSo+KGl0ZXIuZGF0YSgp
KSwgCiAgICAgICAgICAgICAgICBleHByKGluZGV4KSk7CiAgICAgICAgICAgIGl0ZXIuYWR2YW5j
ZSgpOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3Vw
ZGF0ZT4KaW5saW5lIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYKQXJyYXk8VF9udW10eXBlLCBO
X3Jhbms+OjpldmFsdWF0ZVdpdGhJbmRleFRyYXZlcnNhbE4oCiAgICBUX2V4cHIgZXhwciwgVF91
cGRhdGUpCnsKICAgICAKICAgICAKICAgCiAgICBjb25zdCBpbnQgbWF4UmFuayA9IG9yZGVyaW5n
KDApOwoKCgoKCgoKCgoKICAgIEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSwgTl9yYW5rPiBp
dGVyKCp0aGlzKTsKICAgIGZvciAoaW50IGk9MTsgaSA8IE5fcmFuazsgKytpKQogICAgICAgIGl0
ZXIucHVzaChvcmRlcmluZyhpKSk7CgogICAgaXRlci5sb2FkU3RyaWRlKG1heFJhbmspOwoKICAg
IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4gaW5kZXgsIGxhc3Q7CgogICAgaW5kZXggPSBzdG9yYWdl
Xy5iYXNlKCk7CiAgICBsYXN0ID0gc3RvcmFnZV8uYmFzZSgpICsgbGVuZ3RoXzsKCiAgICAgCgog
ICAgd2hpbGUgKHRydWUpIHsKCiAgICAgICAgZm9yIChpbmRleFttYXhSYW5rXSA9IGJhc2UobWF4
UmFuayk7IAogICAgICAgICAgICAgaW5kZXhbbWF4UmFua10gPCBsYXN0W21heFJhbmtdOyAKICAg
ICAgICAgICAgICsraW5kZXhbbWF4UmFua10pCiAgICAgICAgewoKCgoKCgoKICAgICAgICAgICAg
VF91cGRhdGU6OnVwZGF0ZSgqY29uc3RfY2FzdDxUX251bXR5cGUqPihpdGVyLmRhdGEoKSksIGV4
cHIoaW5kZXgpKTsKICAgICAgICAgICAgaXRlci5hZHZhbmNlKCk7CiAgICAgICAgfQoKICAgICAg
ICBpbnQgaiA9IDE7CiAgICAgICAgZm9yICg7IGogPCBOX3Jhbms7ICsraikKICAgICAgICB7CiAg
ICAgICAgICAgIGl0ZXIucG9wKG9yZGVyaW5nKGopKTsKICAgICAgICAgICAgaXRlci5sb2FkU3Ry
aWRlKG9yZGVyaW5nKGopKTsKICAgICAgICAgICAgaXRlci5hZHZhbmNlKCk7CgogICAgICAgICAg
ICBpbmRleFtvcmRlcmluZyhqLTEpXSA9IGJhc2Uob3JkZXJpbmcoai0xKSk7CiAgICAgICAgICAg
ICsraW5kZXhbb3JkZXJpbmcoaildOwogICAgICAgICAgICBpZiAoaW5kZXhbb3JkZXJpbmcoaild
ICE9IGxhc3Rbb3JkZXJpbmcoaildKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoK
ICAgICAgICBpZiAoaiA9PSBOX3JhbmspCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBmb3Ig
KDsgaiA+IDA7IC0taikKICAgICAgICB7CiAgICAgICAgICAgIGl0ZXIucHVzaChvcmRlcmluZyhq
KSk7CiAgICAgICAgfQogICAgICAgIGl0ZXIubG9hZFN0cmlkZShtYXhSYW5rKTsKICAgIH0KCiAg
ICByZXR1cm4gKnRoaXM7IAp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
cmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3VwZGF0ZT4KaW5saW5lIEFycmF5
PFRfbnVtdHlwZSwgTl9yYW5rPiYKQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpldmFsdWF0ZVdp
dGhGYXN0VHJhdmVyc2FsKAogICAgY29uc3QgVHJhdmVyc2FsT3JkZXI8Tl9yYW5rIC0gMT4mIG9y
ZGVyLCAKICAgIFRfZXhwciBleHByLAogICAgVF91cGRhdGUpCnsKICAgIGNvbnN0IGludCBtYXhS
YW5rID0gb3JkZXJpbmcoMCk7CgoKCgoKCgoKICAgIEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlw
ZSwgTl9yYW5rPiBpdGVyKCp0aGlzKTsKICAgIGl0ZXIucHVzaCgwKTsKICAgIGV4cHIucHVzaCgw
KTsKCiAgICBib29sICB1c2VVbml0U3RyaWRlID0gaXRlci5pc1VuaXRTdHJpZGUobWF4UmFuaykg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgZXhwci5pc1VuaXRTdHJpZGUobWF4UmFuayk7
CgoKICAgIGludCBjb21tb25TdHJpZGUgPSBleHByLnN1Z2dlc3RTdHJpZGUobWF4UmFuayk7CiAg
ICBpZiAoaXRlci5zdWdnZXN0U3RyaWRlKG1heFJhbmspID4gY29tbW9uU3RyaWRlKQogICAgICAg
IGNvbW1vblN0cmlkZSA9IGl0ZXIuc3VnZ2VzdFN0cmlkZShtYXhSYW5rKTsKICAgIGJvb2wgdXNl
Q29tbW9uU3RyaWRlID0gaXRlci5pc1N0cmlkZShtYXhSYW5rLGNvbW1vblN0cmlkZSkKICAgICAg
ICAmJiBleHByLmlzU3RyaWRlKG1heFJhbmssY29tbW9uU3RyaWRlKTsKCgoKCgogICAgaW50IGxh
c3RMZW5ndGggPSBsZW5ndGgobWF4UmFuayk7CgogICAgZm9yIChpbnQgaT0wOyBpIDwgb3JkZXIu
bGVuZ3RoKCk7ICsraSkKICAgIHsKICAgICAgICBpdGVyLnBvcCgwKTsKICAgICAgICBleHByLnBv
cCgwKTsKCgoKCiAgICAgICAgIAogICAgICAgIGZvciAoaW50IGo9MTsgaiA8IE5fcmFuazsgKytq
KQogICAgICAgIHsKICAgICAgICAgICAgaXRlci5sb2FkU3RyaWRlKG9yZGVyaW5nKGopKTsKICAg
ICAgICAgICAgZXhwci5sb2FkU3RyaWRlKG9yZGVyaW5nKGopKTsKCiAgICAgICAgICAgIGludCBv
ZmZzZXQgPSBvcmRlcltpXVtqLTFdOwogICAgICAgICAgICBpdGVyLmFkdmFuY2Uob2Zmc2V0KTsK
ICAgICAgICAgICAgZXhwci5hZHZhbmNlKG9mZnNldCk7CiAgICAgICAgfQoKICAgICAgICBpdGVy
LmxvYWRTdHJpZGUobWF4UmFuayk7CiAgICAgICAgZXhwci5sb2FkU3RyaWRlKG1heFJhbmspOwoK
ICAgICAgICAgCgogICAgICAgIGlmICgodXNlVW5pdFN0cmlkZSkgfHwgKHVzZUNvbW1vblN0cmlk
ZSkpCiAgICAgICAgewogICAgICAgICAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgbGFzdCA9
IGNvbnN0X2Nhc3Q8VF9udW10eXBlKj4oaXRlci5kYXRhKCkpIAogICAgICAgICAgICAgICAgKyBs
YXN0TGVuZ3RoICogY29tbW9uU3RyaWRlOwoKCiAgICAgICAgICAgIGludCB1Ym91bmQgPSBsYXN0
TGVuZ3RoICogY29tbW9uU3RyaWRlOwogICAgICAgICAgICBUX251bXR5cGUqIF9fcmVzdHJpY3Rf
XyAgZGF0YSA9IGNvbnN0X2Nhc3Q8VF9udW10eXBlKj4oaXRlci5kYXRhKCkpOwoKICAgICAgICAg
ICAgaWYgKGNvbW1vblN0cmlkZSA9PSAxKQogICAgICAgICAgICB7ICAgICAgICAgICAgCiAKICAg
ICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHVib3VuZDsgKytpKQogICAgICAgICAgICAg
ICAgICAgIFRfdXBkYXRlOjp1cGRhdGUoZGF0YVtpXSwgZXhwci5mYXN0UmVhZChpKSk7CiAKIyA4
NjYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9ldmFsLmNj
IgoKICAgICAgICAgICAgfQogCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZm9y
IChpbnQgaT0wOyBpIDwgdWJvdW5kOyBpICs9IGNvbW1vblN0cmlkZSkKICAgICAgICAgICAgICAg
ICAgICBUX3VwZGF0ZTo6dXBkYXRlKGRhdGFbaV0sIGV4cHIuZmFzdFJlYWQoaSkpOwogICAgICAg
ICAgICB9CiAKCiAgICAgICAgICAgIGl0ZXIuYWR2YW5jZShsYXN0TGVuZ3RoICogY29tbW9uU3Ry
aWRlKTsKICAgICAgICAgICAgZXhwci5hZHZhbmNlKGxhc3RMZW5ndGggKiBjb21tb25TdHJpZGUp
OwoKCgoKCgoKCgogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIAoKICAgICAg
ICAgICAgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18gIGxhc3QgPSBjb25zdF9jYXN0PFRfbnVtdHlw
ZSo+KGl0ZXIuZGF0YSgpKSAKICAgICAgICAgICAgICAgICsgbGFzdExlbmd0aCAqIHN0cmlkZSht
YXhSYW5rKTsKCiAgICAgICAgICAgIHdoaWxlIChpdGVyLmRhdGEoKSAhPSBsYXN0KQogICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICBUX3VwZGF0ZTo6dXBkYXRlKCpjb25zdF9jYXN0PFRfbnVt
dHlwZSo+KGl0ZXIuZGF0YSgpKSwgKmV4cHIpOwogICAgICAgICAgICAgICAgaXRlci5hZHZhbmNl
KCk7CiAgICAgICAgICAgICAgICBleHByLmFkdmFuY2UoKTsKICAgICAgICAgICAgfQogICAgICAg
IH0KICAgIH0KCiAgICByZXR1cm4gKnRoaXM7Cn0KCgojIDExMDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9ldmFsLmNjIgoKCgoKCgoKCnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBU
X3VwZGF0ZT4KaW5saW5lIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgCkFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rPjo6ZXZhbHVhdGVXaXRoVGlsZWQyRFRyYXZlcnNhbCgKICAgIFRfZXhwciBleHBy
LCBUX3VwZGF0ZSkKewogICAgY29uc3QgaW50IG1pbm9yUmFuayA9IG9yZGVyaW5nKDApOwogICAg
Y29uc3QgaW50IG1ham9yUmFuayA9IG9yZGVyaW5nKDEpOwoKICAgIGNvbnN0IGludCBibG9ja1Np
emUgPSAxNjsKICAgIAogICAgRmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLCBOX3Jhbms+IGl0
ZXIoKnRoaXMpOwogICAgaXRlci5wdXNoKDApOwogICAgZXhwci5wdXNoKDApOwoKICAgIGJvb2wg
IHVzZVVuaXRTdHJpZGUgPSBpdGVyLmlzVW5pdFN0cmlkZShtaW5vclJhbmspCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgZXhwci5pc1VuaXRTdHJpZGUobWlub3JSYW5rKTsKCgogICAgaW50
IGNvbW1vblN0cmlkZSA9IGV4cHIuc3VnZ2VzdFN0cmlkZShtaW5vclJhbmspOwogICAgaWYgKGl0
ZXIuc3VnZ2VzdFN0cmlkZShtaW5vclJhbmspID4gY29tbW9uU3RyaWRlKQogICAgICAgIGNvbW1v
blN0cmlkZSA9IGl0ZXIuc3VnZ2VzdFN0cmlkZShtaW5vclJhbmspOwogICAgYm9vbCB1c2VDb21t
b25TdHJpZGUgPSBpdGVyLmlzU3RyaWRlKG1pbm9yUmFuayxjb21tb25TdHJpZGUpCiAgICAgICAg
JiYgZXhwci5pc1N0cmlkZShtaW5vclJhbmssY29tbW9uU3RyaWRlKTsKCgoKCgogICAgaW50IG1h
eGkgPSBsZW5ndGgobWFqb3JSYW5rKTsKICAgIGludCBtYXhqID0gbGVuZ3RoKG1pbm9yUmFuayk7
CgogICAgaW50IGJpLCBiajsKICAgIGZvciAoYmk9MDsgYmkgPCBtYXhpOyBiaSArPSBibG9ja1Np
emUpCiAgICB7CiAgICAgICAgaW50IG5pID0gYmkgKyBibG9ja1NpemU7CiAgICAgICAgaWYgKG5p
ID4gbWF4aSkKICAgICAgICAgICAgbmkgPSBtYXhpOwoKICAgICAgICBmb3IgKGJqPTA7IGJqIDwg
bWF4ajsgYmogKz0gYmxvY2tTaXplKQogICAgICAgIHsKICAgICAgICAgICAgaW50IG5qID0gYmog
KyBibG9ja1NpemU7CiAgICAgICAgICAgIGlmIChuaiA+IG1heGopCiAgICAgICAgICAgICAgICBu
aiA9IG1heGo7CgogICAgICAgICAgICAgCiAgICAgICAgICAgIGl0ZXIucG9wKDApOwogICAgICAg
ICAgICBleHByLnBvcCgwKTsKCiAgICAgICAgICAgICAKICAgICAgICAgICAgaXRlci5sb2FkU3Ry
aWRlKG1ham9yUmFuayk7CiAgICAgICAgICAgIGl0ZXIuYWR2YW5jZShiaSk7CiAgICAgICAgICAg
IGl0ZXIubG9hZFN0cmlkZShtaW5vclJhbmspOwogICAgICAgICAgICBpdGVyLmFkdmFuY2UoYmop
OwoKICAgICAgICAgICAgZXhwci5sb2FkU3RyaWRlKG1ham9yUmFuayk7CiAgICAgICAgICAgIGV4
cHIuYWR2YW5jZShiaSk7CiAgICAgICAgICAgIGV4cHIubG9hZFN0cmlkZShtaW5vclJhbmspOwog
ICAgICAgICAgICBleHByLmFkdmFuY2UoYmopOwoKICAgICAgICAgICAgIAogICAgICAgICAgICBm
b3IgKGludCBpPWJpOyBpIDwgbmk7ICsraSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgaXRlci5wdXNoKDEpOwogICAgICAgICAgICAgICAgZXhwci5wdXNo
KDEpOwoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGl0ZXIubG9hZFN0cmlkZSht
aW5vclJhbmspOwogICAgICAgICAgICAgICAgZXhwci5sb2FkU3RyaWRlKG1pbm9yUmFuayk7Cgog
ICAgICAgICAgICAgICAgaWYgKHVzZVVuaXRTdHJpZGUpCiAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18gIGRhdGEgPSBjb25zdF9jYXN0
PFRfbnVtdHlwZSo+CiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVyLmRhdGEoKSk7CgogICAg
ICAgICAgICAgICAgICAgIGludCB1Ym91bmQgPSAobmotYmopOwogICAgICAgICAgICAgICAgICAg
IGZvciAoaW50IGo9MDsgaiA8IHVib3VuZDsgKytqKQogICAgICAgICAgICAgICAgICAgICAgICBU
X3VwZGF0ZTo6dXBkYXRlKGRhdGFbal0sIGV4cHIuZmFzdFJlYWQoaikpOwogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVzZUNvbW1vblN0cmlkZSkKICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpbnQgdWJvdW5kID0gKG5qLWJqKSAqIGNvbW1v
blN0cmlkZTsKICAgICAgICAgICAgICAgICAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgZGF0
YSA9IGNvbnN0X2Nhc3Q8VF9udW10eXBlKj4KICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZXIu
ZGF0YSgpKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqIDwgdWJvdW5kOyBq
ICs9IGNvbW1vblN0cmlkZSkKICAgICAgICAgICAgICAgICAgICAgICAgVF91cGRhdGU6OnVwZGF0
ZShkYXRhW2pdLCBleHByLmZhc3RSZWFkKGopKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqPWJqOyBqIDwgbmo7
ICsraikKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgVF91cGRhdGU6OnVwZGF0ZSgqY29uc3RfY2FzdDxUX251bXR5
cGUqPihpdGVyLmRhdGEoKSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4cHIpOwog
ICAgICAgICAgICAgICAgICAgICAgICBpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgZXhwci5hZHZhbmNlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
IGl0ZXIucG9wKDEpOwogICAgICAgICAgICAgICAgaXRlci5sb2FkU3RyaWRlKG1ham9yUmFuayk7
CiAgICAgICAgICAgICAgICBpdGVyLmFkdmFuY2UoMSk7CgogICAgICAgICAgICAgICAgZXhwci5w
b3AoMSk7CiAgICAgICAgICAgICAgICBleHByLmxvYWRTdHJpZGUobWFqb3JSYW5rKTsKICAgICAg
ICAgICAgICAgIGV4cHIuYWR2YW5jZSgxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0K
CiAgICByZXR1cm4gKnRoaXM7Cn0KCgoKfSAKCgoKIyAyNDczICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvb3BzLmNjIiAxCgojZGVmaW5lIEJaX0FSUkFZT1BT
X0NDCgoKCgoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgoKCnRlbXBsYXRlPGNsYXNzIFRf
bnVtdHlwZSwgaW50IE5fcmFuaz4KaW5saW5lIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgQXJy
YXk8VF9udW10eXBlLE5fcmFuaz46OmluaXRpYWxpemUoCiAgICBUX251bXR5cGUgeCkKewogICAg
KCp0aGlzKSA9IF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwckNvbnN0YW50PFRfbnVtdHlwZT4g
Pih4KTsKICAgIHJldHVybiAqdGhpczsKfQoKCgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGlu
dCBOX3Jhbms+IHRlbXBsYXRlPGNsYXNzIFRfZXhwcj4KaW5saW5lIEFycmF5PFRfbnVtdHlwZSxO
X3Jhbms+JgpBcnJheTxUX251bXR5cGUsTl9yYW5rPjo6b3BlcmF0b3I9KGNvbnN0IEVUQmFzZTxU
X2V4cHI+JiBleHByKQp7CiAgICBldmFsdWF0ZShzdGF0aWNfY2FzdDxjb25zdCBUX2V4cHImPihl
eHByKSwgCiAgICAgICAgX2J6X3VwZGF0ZTxUX251bXR5cGUsIHR5cGVuYW1lICBUX2V4cHI6OlRf
bnVtdHlwZT4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZSwgaW50IE5fcmFuaz4KaW5saW5lIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYKQXJyYXk8VF9u
dW10eXBlLCBOX3Jhbms+OjpvcGVyYXRvcj0oY29uc3QgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4m
IHgpCnsKICAgICgqdGhpcykgPSBfYnpfQXJyYXlFeHByPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVt
dHlwZSwgTl9yYW5rPiA+CiAgICAgICAgKHguYmVnaW5GYXN0KCkpOwogICAgcmV0dXJuICp0aGlz
Owp9CgojZGVmaW5lIEJaX0FSUkFZX1VQREFURShvcCxuYW1lKSB0ZW1wbGF0ZTxjbGFzcyBUX251
bXR5cGUsIGludCBOX3Jhbms+IHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBBcnJheTxUX251bXR5
cGUsTl9yYW5rPiYgQXJyYXk8VF9udW10eXBlLE5fcmFuaz46Om9wZXJhdG9yIG9wKGNvbnN0IFQm
IGV4cHIpIHsgZXZhbHVhdGUoX2J6X3R5cGVuYW1lIGFzRXhwcjxUPjo6VF9leHByKGV4cHIpLCBu
YW1lPFRfbnVtdHlwZSwgX2J6X3R5cGVuYW1lIGFzRXhwcjxUPjo6VF9leHByOjpUX251bXR5cGU+
KCkpOyByZXR1cm4gKnRoaXM7IH0KIyA1NiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L2FycmF5L29wcy5jYyIKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
cmFuaz4gdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBB
cnJheTxUX251bXR5cGUsTl9yYW5rPjo6b3BlcmF0b3IgICs9IChjb25zdCBUJiBleHByKSB7IGV2
YWx1YXRlKHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcihleHByKSwgICBfYnpfcGx1c191cGRh
dGUgPFRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUPjo6VF9leHByOjpUX251bXR5cGU+KCkp
OyByZXR1cm4gKnRoaXM7IH0gCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4g
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBBcnJheTxU
X251bXR5cGUsTl9yYW5rPjo6b3BlcmF0b3IgIC09IChjb25zdCBUJiBleHByKSB7IGV2YWx1YXRl
KHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcihleHByKSwgICBfYnpfbWludXNfdXBkYXRlIDxU
X251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcjo6VF9udW10eXBlPigpKTsgcmV0
dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IHRlbXBs
YXRlPGNsYXNzIFQ+IGlubGluZSBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgQXJyYXk8VF9udW10
eXBlLE5fcmFuaz46Om9wZXJhdG9yICAqPSAoY29uc3QgVCYgZXhwcikgeyBldmFsdWF0ZSh0eXBl
bmFtZSAgYXNFeHByPFQ+OjpUX2V4cHIoZXhwciksICAgX2J6X211bHRpcGx5X3VwZGF0ZSA8VF9u
dW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQ+OjpUX2V4cHI6OlRfbnVtdHlwZT4oKSk7IHJldHVy
biAqdGhpczsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPiB0ZW1wbGF0
ZTxjbGFzcyBUPiBpbmxpbmUgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIEFycmF5PFRfbnVtdHlw
ZSxOX3Jhbms+OjpvcGVyYXRvciAgLz0gKGNvbnN0IFQmIGV4cHIpIHsgZXZhbHVhdGUodHlwZW5h
bWUgIGFzRXhwcjxUPjo6VF9leHByKGV4cHIpLCAgIF9iel9kaXZpZGVfdXBkYXRlIDxUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcjo6VF9udW10eXBlPigpKTsgcmV0dXJuICp0
aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IHRlbXBsYXRlPGNs
YXNzIFQ+IGlubGluZSBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgQXJyYXk8VF9udW10eXBlLE5f
cmFuaz46Om9wZXJhdG9yICAlPSAoY29uc3QgVCYgZXhwcikgeyBldmFsdWF0ZSh0eXBlbmFtZSAg
YXNFeHByPFQ+OjpUX2V4cHIoZXhwciksICAgX2J6X21vZF91cGRhdGUgPFRfbnVtdHlwZSwgdHlw
ZW5hbWUgIGFzRXhwcjxUPjo6VF9leHByOjpUX251bXR5cGU+KCkpOyByZXR1cm4gKnRoaXM7IH0g
CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gdGVtcGxhdGU8Y2xhc3MgVD4g
aW5saW5lIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBBcnJheTxUX251bXR5cGUsTl9yYW5rPjo6
b3BlcmF0b3IgIF49IChjb25zdCBUJiBleHByKSB7IGV2YWx1YXRlKHR5cGVuYW1lICBhc0V4cHI8
VD46OlRfZXhwcihleHByKSwgICBfYnpfeG9yX3VwZGF0ZSA8VF9udW10eXBlLCB0eXBlbmFtZSAg
YXNFeHByPFQ+OjpUX2V4cHI6OlRfbnVtdHlwZT4oKSk7IHJldHVybiAqdGhpczsgfSAKdGVtcGxh
dGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPiB0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUg
QXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+OjpvcGVyYXRv
ciAgJj0gKGNvbnN0IFQmIGV4cHIpIHsgZXZhbHVhdGUodHlwZW5hbWUgIGFzRXhwcjxUPjo6VF9l
eHByKGV4cHIpLCAgIF9iel9iaXRhbmRfdXBkYXRlIDxUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4
cHI8VD46OlRfZXhwcjo6VF9udW10eXBlPigpKTsgcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxj
bGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgQXJyYXk8VF9udW10eXBlLE5fcmFuaz46Om9wZXJhdG9yICB8
PSAoY29uc3QgVCYgZXhwcikgeyBldmFsdWF0ZSh0eXBlbmFtZSAgYXNFeHByPFQ+OjpUX2V4cHIo
ZXhwciksICAgX2J6X2JpdG9yX3VwZGF0ZSA8VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQ+
OjpUX2V4cHI6OlRfbnVtdHlwZT4oKSk7IHJldHVybiAqdGhpczsgfSAKdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlLCBpbnQgTl9yYW5rPiB0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgQXJyYXk8VF9u
dW10eXBlLE5fcmFuaz4mIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+OjpvcGVyYXRvciAgPDw9IChj
b25zdCBUJiBleHByKSB7IGV2YWx1YXRlKHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcihleHBy
KSwgICBfYnpfc2hpZnRsX3VwZGF0ZSA8VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQ+OjpU
X2V4cHI6OlRfbnVtdHlwZT4oKSk7IHJldHVybiAqdGhpczsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9u
dW10eXBlLCBpbnQgTl9yYW5rPiB0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgQXJyYXk8VF9udW10
eXBlLE5fcmFuaz4mIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+OjpvcGVyYXRvciAgPj49IChjb25z
dCBUJiBleHByKSB7IGV2YWx1YXRlKHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcihleHByKSwg
ICBfYnpfc2hpZnRyX3VwZGF0ZSA8VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQ+OjpUX2V4
cHI6OlRfbnVtdHlwZT4oKSk7IHJldHVybiAqdGhpczsgfSAKCiMgMzUxICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvb3BzLmNjIgoKCn0gCgoKIyAyNDc0ICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAxICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvaW8uY2MiIDEKCgoK
CgojZGVmaW5lIEJaX0FSUkFZSU9fQ0MKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxj
bGFzcyBUX251bXR5cGU+Cm9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgb3MsIGNvbnN0IEFy
cmF5PFRfbnVtdHlwZSwxPiYgeCkKewogICAgb3MgPDwgeC5leHRlbnQoZmlyc3RSYW5rKSA8PCBl
bmRsOwogICAgb3MgPDwgIiBbICI7CiAgICBmb3IgKGludCBpPXgubGJvdW5kKGZpcnN0UmFuayk7
IGkgPD0geC51Ym91bmQoZmlyc3RSYW5rKTsgKytpKQogICAgewogICAgICAgIG9zIDw8IHNldHco
OSkgPDwgeChpKSA8PCAiICI7CiAgICAgICAgaWYgKCEoKGkrMS14Lmxib3VuZChmaXJzdFJhbmsp
KSU3KSkKICAgICAgICAgICAgb3MgPDwgZW5kbCA8PCAiICAiOwogICAgfQogICAgb3MgPDwgIiBd
IjsKICAgIHJldHVybiBvczsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlPgpvc3RyZWFtJiBv
cGVyYXRvcjw8KG9zdHJlYW0mIG9zLCBjb25zdCBBcnJheTxUX251bXR5cGUsMj4mIHgpCnsKICAg
IG9zIDw8IHgucm93cygpIDw8ICIgeCAiIDw8IHguY29sdW1ucygpIDw8IGVuZGw7CiAgICBvcyA8
PCAiWyAiOwogICAgZm9yIChpbnQgaT14Lmxib3VuZChmaXJzdFJhbmspOyBpIDw9IHgudWJvdW5k
KGZpcnN0UmFuayk7ICsraSkKICAgIHsKICAgICAgICBmb3IgKGludCBqPXgubGJvdW5kKHNlY29u
ZFJhbmspOyBqIDw9IHgudWJvdW5kKHNlY29uZFJhbmspOyArK2opCiAgICAgICAgewogICAgICAg
ICAgICBvcyA8PCBzZXR3KDkpIDw8IHgoaSxqKSA8PCAiICI7CiAgICAgICAgICAgIGlmICghKChq
KzEteC5sYm91bmQoc2Vjb25kUmFuaykpICUgNykpCiAgICAgICAgICAgICAgICBvcyA8PCBlbmRs
IDw8ICIgICI7CiAgICAgICAgfQoKICAgICAgICBpZiAoaSAhPSB4LnVib3VuZChmaXJzdFJhbmsp
KQogICAgICAgICAgIG9zIDw8IGVuZGwgPDwgIiAgIjsKICAgIH0KCiAgICBvcyA8PCAiXSIgPDwg
ZW5kbDsKCiAgICByZXR1cm4gb3M7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
cmFuaz4Kb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgY29uc3QgQXJyYXk8VF9udW10
eXBlLE5fcmFuaz4mIHgpCnsKICAgIGZvciAoaW50IGk9MDsgaSA8IE5fcmFuazsgKytpKQogICAg
ewogICAgICAgIG9zIDw8IHguZXh0ZW50KGkpOwogICAgICAgIGlmIChpICE9IE5fcmFuayAtIDEp
CiAgICAgICAgICAgIG9zIDw8ICIgeCAiOwogICAgfQoKICAgIG9zIDw8IGVuZGwgPDwgIlsgIjsK
ICAgCiAgICB0eXBlZGVmIHR5cGVuYW1lICBBcnJheTxUX251bXR5cGUsIE5fcmFuaz46OmNvbnN0
X2l0ZXJhdG9yIAogICAgICAgICBBcnJheUNvbnN0SXRlcmF0b3I7CiAgICBBcnJheUNvbnN0SXRl
cmF0b3IgaXRlciA9IHguYmVnaW4oKSwgZW5kID0geC5lbmQoKTsKICAgIGludCBwID0gMDsKCiAg
ICB3aGlsZSAoaXRlciAhPSBlbmQpIHsKICAgICAgICBvcyA8PCBzZXR3KDkpIDw8ICgqaXRlcikg
PDwgIiAiOwogICAgICAgICsraXRlcjsKCiAgICAgICAgIAogICAgICAgICsrcDsKICAgICAgICBp
ZiAoIShwICUgNykpCiAgICAgICAgICAgIG9zIDw8IGVuZGwgPDwgIiAgIjsKICAgIH0KCiAgICBv
cyA8PCAiXSIgPDwgZW5kbDsKICAgIHJldHVybiBvczsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUsIGludCBOX3Jhbms+CmlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYgaXMsIEFy
cmF5PFRfbnVtdHlwZSxOX3Jhbms+JiB4KQp7CiAgICBUaW55VmVjdG9yPGludCxOX3Jhbms+IGV4
dGVudDsKICAgIGNoYXIgc2VwOwogCiAgICAgCiAgICAgCgogICAgZm9yIChpbnQgaT0wOyBpIDwg
Tl9yYW5rOyArK2kpCiAgICB7CiAgICAgICAgaXMgPj4gZXh0ZW50KGkpOwoKICAgICAgICAgOwoK
ICAgICAgICBpZiAoaSAhPSBOX3JhbmsgLSAxKQogICAgICAgIHsKICAgICAgICAgICAgaXMgPj4g
c2VwOwogICAgICAgICAgICAgOwoKICAgICAgICB9CiAgICB9CgogICAgaXMgPj4gc2VwOwogICAg
IDsKCgogICAgeC5yZXNpemUoZXh0ZW50KTsKCiAgICB0eXBlZGVmIHR5cGVuYW1lICBBcnJheTxU
X251bXR5cGUsTl9yYW5rPjo6aXRlcmF0b3IKICAgICAgICAgQXJyYXlJdGVyYXRvcjsKICAgIEFy
cmF5SXRlcmF0b3IgaXRlciA9IHguYmVnaW4oKSwgZW5kID0geC5lbmQoKTsKCiAgICB3aGlsZSAo
aXRlciAhPSBlbmQpIHsKICAgICAgICAgOwoKICAgICAgICBpcyA+PiAoKml0ZXIpOwogICAgICAg
ICsraXRlcjsKICAgIH0KCiAgICBpcyA+PiBzZXA7CiAgICAgOwoKCiAgICByZXR1cm4gaXM7Cn0K
Cn0gCgoKIyAyNDc1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJy
YXkuaCIgMgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L2FycmF5L2V0LmgiIDEKCiNkZWZpbmUgQlpfQVJSQVlfRVRfSAoKCgoKCgoKCgoKCgoKCgpuYW1l
c3BhY2UgIGJsaXR6ICB7IAoKIAoKCgoKCgojZGVmaW5lIEJaX0RFQ0xBUkVfQVJSQVlfRVQobmFt
ZSwgYXBwbGljKSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3Mg
VF9vdGhlcj4gX2J6X2lubGluZV9ldCBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0
QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgX2J6X3R5cGVuYW1lIGFzRXhwcjxU
X290aGVyPjo6VF9leHByLCBhcHBsaWM8VF9udW10eXBlMSwgX2J6X3R5cGVuYW1lIGFzRXhwcjxU
X290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiBuYW1lIChjb25zdCBBcnJheTxUX251bXR5
cGUxLE5fcmFuazE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+
LCBfYnpfdHlwZW5hbWUgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsIGFwcGxpYzxUX251bXR5cGUx
LCBfYnpfdHlwZW5hbWUgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChk
MS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhl
cj4gX2J6X2lubGluZV9ldCBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfQXJyYXlF
eHByPFRfZXhwcjE+LCBfYnpfdHlwZW5hbWUgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsIGFwcGxp
YzxfYnpfdHlwZW5hbWUgVF9leHByMTo6VF9udW10eXBlLCBfYnpfdHlwZW5hbWUgYXNFeHByPFRf
b3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IG5hbWUoY29uc3QgX2J6X0FycmF5RXhwcjxU
X2V4cHIxPiYgZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCBfYnpfdHlwZW5hbWUgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHIsIGFwcGxpYzxfYnpfdHlwZW5hbWUgVF9leHByMTo6VF9udW10eXBl
LCBfYnpfdHlwZW5hbWUgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQx
LGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IF9iel9pbmxpbmVfZXQgX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRfZXhwciwg
X2J6X3R5cGVuYW1lIGFzRXhwcjxUMj46OlRfZXhwciwgYXBwbGljPF9iel90eXBlbmFtZSBhc0V4
cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgX2J6X3R5cGVuYW1lIGFzRXhwcjxUMj46OlRfZXhw
cjo6VF9udW10eXBlPiA+ID4gbmFtZShjb25zdCBFVEJhc2U8VDE+JiBkMSwgY29uc3QgVDImIGQy
KSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfdHlwZW5hbWUgYXNF
eHByPFQxPjo6VF9leHByLCBfYnpfdHlwZW5hbWUgYXNFeHByPFQyPjo6VF9leHByLCBhcHBsaWM8
X2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCBfYnpfdHlwZW5hbWUg
YXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEm
PihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IF9iel9pbmxpbmVfZXQg
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRf
ZXhwciwgX2J6X3R5cGVuYW1lIGFzRXhwcjxUMj46OlRfZXhwciwgYXBwbGljPF9iel90eXBlbmFt
ZSBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgX2J6X3R5cGVuYW1lIGFzRXhwcjxUMj46
OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gbmFtZShjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxU
Mj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfdHlwZW5h
bWUgYXNFeHByPFQxPjo6VF9leHByLCBfYnpfdHlwZW5hbWUgYXNFeHByPFQyPjo6VF9leHByLCBh
cHBsaWM8X2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCBfYnpfdHlw
ZW5hbWUgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEsIHN0YXRpY19jYXN0
PGNvbnN0IFQyJj4oZDIpKTsgfSB0ZW1wbGF0ZTxpbnQgTjEsIGNsYXNzIFRfb3RoZXI+IF9iel9p
bmxpbmVfZXQgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRlcjxO
MT4sIF9iel90eXBlbmFtZSBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgYXBwbGljPGludCwgX2J6
X3R5cGVuYW1lIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiBuYW1lKElu
ZGV4UGxhY2Vob2xkZXI8TjE+IGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRlcjxOMT4sIF9iel90eXBlbmFt
ZSBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgYXBwbGljPGludCwgX2J6X3R5cGVuYW1lIGFzRXhw
cjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gCiMgMTA4ICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXQuaCIKCiAKIAogCgp0
ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUx
LCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBBZGQgPFRf
bnVtdHlwZTEsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4gIG9wZXJhdG9yKyAgKGNvbnN0IEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rMT4mIGQxLCBjb25z
dCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFz
dEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwciwgICAgQWRkIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3Ro
ZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxh
dGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJh
eUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+
OjpUX2V4cHIsICAgIEFkZCA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1l
ICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yKyAoY29u
c3QgX2J6X0FycmF5RXhwcjxUX2V4cHIxPiYgZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVy
biBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0
eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEFkZCA8IHR5cGVuYW1lICBUX2V4
cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10
eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlw
ZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQWRkIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46
OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAgb3BlcmF0b3IrIChjb25zdCBFVEJhc2U8VDE+JiBkMSwgY29uc3QgVDImIGQyKSB7
IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQWRkIDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6
VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsg
fSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+
OjpUX2V4cHIsICAgIEFkZCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9y
KyAoY29uc3QgVDEmIGQxLCBjb25zdCBFVEJhc2U8VDI+JiBkMikgeyByZXR1cm4gX2J6X0FycmF5
RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVu
YW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIEFkZCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpU
X2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25zdCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4x
LCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxh
Y2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEFkZCA8
aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBv
cGVyYXRvcisgKEluZGV4UGxhY2Vob2xkZXI8TjE+IGQxLCBjb25zdCBUX290aGVyJiBkMikgeyBy
ZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRlcjxOMT4s
IHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgQWRkIDxpbnQsIHR5cGVuYW1l
ICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1w
bGF0ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBO
X3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBTdWJ0cmFjdCA8
VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAgb3BlcmF0b3ItICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNv
bnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxG
YXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxU
X290aGVyPjo6VF9leHByLCAgICBTdWJ0cmFjdCA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9
IHRlbXBsYXRlPGNsYXNzIFRfZXhwcjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxf
YnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxU
X290aGVyPjo6VF9leHByLCAgICBTdWJ0cmFjdCA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9w
ZXJhdG9yLSAoY29uc3QgX2J6X0FycmF5RXhwcjxUX2V4cHIxPiYgZDEsIGNvbnN0IFRfb3RoZXIm
IGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHBy
PFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIFN1YnRyYWN0
IDwgdHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNs
YXNzIFQyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBTdWJ0cmFjdCA8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhw
cjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yLSAoY29uc3QgRVRCYXNlPFQx
PiYgZDEsIGNvbnN0IFQyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHBy
T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpU
X2V4cHIsICAgIFN1YnRyYWN0IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10
eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGlj
X2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpU
X2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIFN1YnRyYWN0IDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6
VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3ItIChjb25zdCBUMSYgZDEsIGNvbnN0IEVU
QmFzZTxUMj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlw
ZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwg
ICAgU3VidHJhY3QgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5
cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3RhdGljX2Nh
c3Q8Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhlcj4gICBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5h
bWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBTdWJ0cmFjdCA8aW50LCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvci0gKEluZGV4
UGxhY2Vob2xkZXI8TjE+IGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5
RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRlcjxOMT4sIHR5cGVuYW1lICBhc0V4
cHI8VF9vdGhlcj46OlRfZXhwciwgICAgU3VidHJhY3QgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxU
X290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZTEsIGludCBOX3JhbmsxLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0
eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIE11bHRpcGx5IDxUX251bXR5cGUx
LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVy
YXRvciogIChjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+JiBkMSwgY29uc3QgVF9vdGhl
ciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0
ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpU
X2V4cHIsICAgIE11bHRpcGx5IDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+
OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxhdGU8
Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpU
X2V4cHIsICAgIE11bHRpcGx5IDwgdHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5h
bWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3IqIChj
b25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0
dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4s
IHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgTXVsdGlwbHkgPCB0eXBlbmFt
ZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAg
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIE11bHRpcGx5IDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9l
eHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3IqIChjb25zdCBFVEJhc2U8VDE+JiBkMSwgY29u
c3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAg
TXVsdGlwbHkgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVu
YW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2FzdDxjb25z
dCBUMSY+KGQxKSwgZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlw
ZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgTXVsdGlwbHkgPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBvcGVyYXRvciogKGNvbnN0IFQxJiBkMSwgY29uc3QgRVRCYXNlPFQyPiYg
ZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNF
eHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBNdWx0aXBs
eSA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFz
RXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25zdCBU
MiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHIsICAgIE11bHRpcGx5IDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yKiAoSW5kZXhQbGFjZWhvbGRl
cjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9B
cnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByLCAgICBNdWx0aXBseSA8aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpU
X2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBl
MSwgaW50IE5fcmFuazEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByT3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBh
c0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgRGl2aWRlIDxUX251bXR5cGUxLCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvci8gIChjb25z
dCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0
dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVt
dHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIERp
dmlkZSA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251
bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFRfZXhwcjEs
IGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5
RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBEaXZp
ZGUgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3Ro
ZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvci8gKGNvbnN0IF9iel9BcnJheUV4
cHI8VF9leHByMT4mIGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhw
cjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgICBEaXZpZGUgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10
eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQx
LGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpf
QXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4
cHI8VDI+OjpUX2V4cHIsICAgIERpdmlkZSA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4g
IG9wZXJhdG9yLyAoY29uc3QgRVRCYXNlPFQxPiYgZDEsIGNvbnN0IFQyJiBkMikgeyByZXR1cm4g
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIERpdmlkZSA8IHR5cGVuYW1lICBh
c0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
cjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpLCBkMik7IH0gdGVt
cGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9w
PCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9l
eHByLCAgICBEaXZpZGUgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUs
IHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvci8g
KGNvbnN0IFQxJiBkMSwgY29uc3QgRVRCYXNlPFQyPiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFt
ZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBEaXZpZGUgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6
VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+IChkMSwgc3RhdGljX2Nhc3Q8Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBO
MSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBs
YWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBEaXZp
ZGUgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4g
PiAgb3BlcmF0b3IvIChJbmRleFBsYWNlaG9sZGVyPE4xPiBkMSwgY29uc3QgVF9vdGhlciYgZDIp
IHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8
TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIERpdmlkZSA8aW50LCB0
eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsg
fSAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMSwgaW50IE5fcmFuazEsIGNsYXNzIFRfb3RoZXI+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10
eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgTW9k
dWxvIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVt
dHlwZT4gPiA+ICBvcGVyYXRvciUgIChjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+JiBk
MSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhw
ck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIE1vZHVsbyA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFz
RXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIp
OyB9IHRlbXBsYXRlPGNsYXNzIFRfZXhwcjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhw
cjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgICBNb2R1bG8gPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10
eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBv
cGVyYXRvciUgKGNvbnN0IF9iel9BcnJheUV4cHI8VF9leHByMT4mIGQxLCBjb25zdCBUX290aGVy
JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhw
cjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBNb2R1bG8g
PCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+
OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xh
c3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8
VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIE1vZHVsbyA8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxU
Mj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yJSAoY29uc3QgRVRCYXNlPFQxPiYg
ZDEsIGNvbnN0IFQyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4
cHIsICAgIE1vZHVsbyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwg
dHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0
PGNvbnN0IFQxJj4oZDEpLCBkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiAgIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBNb2R1bG8gPCB0eXBlbmFtZSAgYXNF
eHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvciUgKGNvbnN0IFQxJiBkMSwgY29uc3QgRVRCYXNlPFQy
PiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAg
YXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBNb2R1
bG8gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBh
c0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
VDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgICBNb2R1bG8gPGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290
aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3IlIChJbmRleFBsYWNlaG9sZGVy
PE4xPiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0Fy
cmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+
OjpUX2V4cHIsICAgIE1vZHVsbyA8aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4
cHI6OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMSwg
aW50IE5fcmFuazEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHBy
T3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4
cHI8VF9vdGhlcj46OlRfZXhwciwgICAgQml0d2lzZVhvciA8VF9udW10eXBlMSwgdHlwZW5hbWUg
IGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3JeICAoY29u
c3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJl
dHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251
bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBC
aXR3aXNlWG9yIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9l
eHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpf
QXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAg
IEJpdHdpc2VYb3IgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcl4gKGNvbnN0IF9i
el9BcnJheUV4cHI8VF9leHByMT4mIGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5h
bWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBCaXR3aXNlWG9yIDwgdHlwZW5hbWUgIFRf
ZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251
bXR5cGU+ID4gPihkMSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiAgIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0
eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBCaXR3aXNlWG9yIDwgdHlwZW5hbWUgIGFz
RXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHBy
OjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3JeIChjb25zdCBFVEJhc2U8VDE+JiBkMSwgY29uc3Qg
VDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQml0
d2lzZVhvciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5h
bWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0
IFQxJj4oZDEpLCBkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiAgIF9iel9BcnJh
eUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBl
bmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBCaXR3aXNlWG9yIDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgb3BlcmF0b3JeIChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxUMj4m
IGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFz
RXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQml0d2lz
ZVhvciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUg
IGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25z
dCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJh
eUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VYb3IgPGludCwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3JeIChJbmRleFBsYWNl
aG9sZGVyPE4xPiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRf
b3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VYb3IgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290
aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gCnRlbXBsYXRlPGNsYXNzIFRf
bnVtdHlwZTEsIGludCBOX3JhbmsxLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6
X0FycmF5RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBl
bmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VBbmQgPFRfbnVtdHlwZTEs
IHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJh
dG9yJiAgKGNvbnN0IEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rMT4mIGQxLCBjb25zdCBUX290aGVy
JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFzdEFycmF5SXRl
cmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRf
ZXhwciwgICAgQml0d2lzZUFuZCA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9IHRlbXBsYXRl
PGNsYXNzIFRfZXhwcjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6
VF9leHByLCAgICBCaXR3aXNlQW5kIDwgdHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlw
ZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3Im
IChjb25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsg
cmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHBy
MT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgQml0d2lzZUFuZCA8IHR5
cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRf
ZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
Mj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46
OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQml0d2lzZUFuZCA8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxU
Mj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yJiAoY29uc3QgRVRCYXNlPFQxPiYg
ZDEsIGNvbnN0IFQyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4
cHIsICAgIEJpdHdpc2VBbmQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNf
Y2FzdDxjb25zdCBUMSY+KGQxKSwgZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQml0d2lzZUFuZCA8IHR5cGVu
YW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46
OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yJiAoY29uc3QgVDEmIGQxLCBjb25zdCBF
VEJhc2U8VDI+JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIs
ICAgIEJpdHdpc2VBbmQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUs
IHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhlcj4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlw
ZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBCaXR3aXNlQW5kIDxpbnQsIHR5cGVu
YW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yJiAo
SW5kZXhQbGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUg
IGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBCaXR3aXNlQW5kIDxpbnQsIHR5cGVuYW1lICBh
c0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1wbGF0
ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3Jh
bmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBCaXR3aXNlT3IgPFRf
bnVtdHlwZTEsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4gIG9wZXJhdG9yfCAgKGNvbnN0IEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rMT4mIGQxLCBjb25z
dCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFz
dEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwciwgICAgQml0d2lzZU9yIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0g
dGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRf
b3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VPciA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9w
ZXJhdG9yfCAoY29uc3QgX2J6X0FycmF5RXhwcjxUX2V4cHIxPiYgZDEsIGNvbnN0IFRfb3RoZXIm
IGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHBy
PFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VP
ciA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhl
cj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQml0d2lzZU9y
IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNF
eHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3J8IChjb25zdCBFVEJhc2U8
VDE+JiBkMSwgY29uc3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46
OlRfZXhwciwgICAgQml0d2lzZU9yIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9u
dW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3Rh
dGljX2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3Mg
VDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+
OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIEJpdHdpc2VPciA8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxU
Mj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yfCAoY29uc3QgVDEmIGQxLCBjb25z
dCBFVEJhc2U8VDI+JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4
cHIsICAgIEJpdHdpc2VPciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0
aWNfY2FzdDxjb25zdCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVy
PiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0
eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VPciA8aW50LCB0eXBl
bmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcnwg
KEluZGV4UGxhY2Vob2xkZXI8TjE+IGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRlcjxOMT4sIHR5cGVuYW1l
ICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgQml0d2lzZU9yIDxpbnQsIHR5cGVuYW1lICBh
c0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAogCiAKdGVt
cGxhdGU8Y2xhc3MgVF9udW10eXBlMSwgaW50IE5fcmFuazEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwg
Tl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgR3JlYXRlciA8
VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAgb3BlcmF0b3I+ICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNv
bnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxG
YXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxU
X290aGVyPjo6VF9leHByLCAgICBHcmVhdGVyIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0g
dGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRf
b3RoZXI+OjpUX2V4cHIsICAgIEdyZWF0ZXIgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBl
LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVy
YXRvcj4gKGNvbnN0IF9iel9BcnJheUV4cHI8VF9leHByMT4mIGQxLCBjb25zdCBUX290aGVyJiBk
MikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxU
X2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBHcmVhdGVyIDwg
dHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6
VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNz
IFQyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQx
Pjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBHcmVhdGVyIDwgdHlw
ZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQy
Pjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I+IChjb25zdCBFVEJhc2U8VDE+JiBk
MSwgY29uc3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwg
dHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
ciwgICAgR3JlYXRlciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwg
dHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0
PGNvbnN0IFQxJj4oZDEpLCBkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiAgIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBHcmVhdGVyIDwgdHlwZW5hbWUgIGFz
RXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHBy
OjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I+IChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxU
Mj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgR3Jl
YXRlciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUg
IGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25z
dCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJh
eUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEdyZWF0ZXIgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxU
X290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I+IChJbmRleFBsYWNlaG9s
ZGVyPE4xPiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6
X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3Ro
ZXI+OjpUX2V4cHIsICAgIEdyZWF0ZXIgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6
VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZTEsIGludCBOX3JhbmsxLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5
RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIExlc3MgPFRfbnVtdHlwZTEsIHR5cGVuYW1lICBh
c0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yPCAgKGNvbnN0
IEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rMT4mIGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1
cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10
eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgTGVz
cyA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFRfZXhwcjEsIGNs
YXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhw
cjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBMZXNzIDwg
dHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6
VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I8IChjb25zdCBfYnpfQXJyYXlFeHByPFRf
ZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6
X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwciwgICAgTGVzcyA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5
cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9
IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46
OlRfZXhwciwgICAgTGVzcyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9y
PCAoY29uc3QgRVRCYXNlPFQxPiYgZDEsIGNvbnN0IFQyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5
RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVu
YW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIExlc3MgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6
VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSwgZDIpOyB9IHRlbXBsYXRlPGNsYXNz
IFQxLCBjbGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgTGVz
cyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFz
RXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yPCAoY29uc3QgVDEmIGQx
LCBjb25zdCBFVEJhc2U8VDI+JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+
OjpUX2V4cHIsICAgIExlc3MgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3Rh
dGljX2Nhc3Q8Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhl
cj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwg
dHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBMZXNzIDxpbnQsIHR5cGVuYW1l
ICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yPCAoSW5k
ZXhQbGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFz
RXhwcjxUX290aGVyPjo6VF9leHByLCAgICBMZXNzIDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlw
ZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIEdyZWF0ZXJPckVxdWFsIDxUX251bXR5
cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBv
cGVyYXRvcj49ICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNvbnN0IFRf
b3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJy
YXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByLCAgIEdyZWF0ZXJPckVxdWFsIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0g
dGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRf
b3RoZXI+OjpUX2V4cHIsICAgR3JlYXRlck9yRXF1YWwgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9u
dW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+
ICBvcGVyYXRvcj49IChjb25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9v
dGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJh
eUV4cHI8VF9leHByMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICBHcmVh
dGVyT3JFcXVhbCA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4
cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNs
YXNzIFQxLCBjbGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBH
cmVhdGVyT3JFcXVhbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwg
dHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yPj0g
KGNvbnN0IEVUQmFzZTxUMT4mIGQxLCBjb25zdCBUMiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFt
ZSAgYXNFeHByPFQyPjo6VF9leHByLCAgIEdyZWF0ZXJPckVxdWFsIDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIs
ICAgR3JlYXRlck9yRXF1YWwgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRv
cj49IChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxUMj4mIGQyKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlw
ZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBHcmVhdGVyT3JFcXVhbCA8IHR5cGVuYW1lICBh
c0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
cjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25zdCBUMiY+KGQyKSk7IH0gdGVt
cGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhw
ck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4
cHIsICAgR3JlYXRlck9yRXF1YWwgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9l
eHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I+PSAoSW5kZXhQbGFjZWhvbGRlcjxOMT4gZDEs
IGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJP
cDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHBy
LCAgIEdyZWF0ZXJPckVxdWFsIDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhw
cjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBp
bnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJP
cDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgIExlc3NPckVxdWFsIDxUX251bXR5cGUxLCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcjw9ICAoY29u
c3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJl
dHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251
bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIExl
c3NPckVxdWFsIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9l
eHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpf
QXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAg
TGVzc09yRXF1YWwgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcjw9IChjb25zdCBf
YnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4sIHR5cGVu
YW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICBMZXNzT3JFcXVhbCA8IHR5cGVuYW1lICBU
X2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9u
dW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwg
dHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBMZXNzT3JFcXVhbCA8IHR5cGVuYW1lICBh
c0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
cjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yPD0gKGNvbnN0IEVUQmFzZTxUMT4mIGQxLCBjb25z
dCBUMiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFt
ZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgIExl
c3NPckVxdWFsIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBl
bmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29u
c3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5
cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgTGVzc09yRXF1YWwgPCB0eXBlbmFtZSAgYXNF
eHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcjw9IChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxU
Mj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBMZXNz
T3JFcXVhbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5h
bWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxj
b25zdCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgTGVzc09yRXF1YWwgPGludCwgdHlwZW5hbWUgIGFz
RXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I8PSAoSW5kZXhQ
bGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgIExlc3NPckVxdWFsIDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8
VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1wbGF0ZTxjbGFz
cyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHBy
PF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwg
dHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIEVxdWFsIDxUX251bXR5cGUxLCB0
eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRv
cj09ICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNvbnN0IFRfb3RoZXIm
IGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVy
YXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9l
eHByLCAgIEVxdWFsIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4
cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxhdGU8Y2xhc3Mg
VF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxf
YnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIs
ICAgRXF1YWwgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcj09IChjb25zdCBfYnpf
QXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4sIHR5cGVuYW1l
ICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICBFcXVhbCA8IHR5cGVuYW1lICBUX2V4cHIxOjpU
X251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBfYnpfQXJyYXlFeHBy
PF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUg
IGFzRXhwcjxUMj46OlRfZXhwciwgICBFcXVhbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4gIG9wZXJhdG9yPT0gKGNvbnN0IEVUQmFzZTxUMT4mIGQxLCBjb25zdCBUMiYgZDIpIHsgcmV0
dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6
VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgIEVxdWFsIDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9l
eHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0
ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHBy
T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpU
X2V4cHIsICAgRXF1YWwgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUs
IHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcj09
IChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxUMj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5h
bWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBFcXVhbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpU
X2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25zdCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4x
LCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxh
Y2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgRXF1YWwg
PGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAg
b3BlcmF0b3I9PSAoSW5kZXhQbGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7
IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4x
PiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIEVxdWFsIDxpbnQsIHR5cGVu
YW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0
ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUx
LCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIE5vdEVxdWFs
IDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+ICBvcGVyYXRvciE9ICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEs
IGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJP
cDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgIE5vdEVxdWFsIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7
IH0gdGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHBy
PF9iel9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHIsICAgTm90RXF1YWwgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10
eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBv
cGVyYXRvciE9IChjb25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhl
ciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4
cHI8VF9leHByMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICBOb3RFcXVh
bCA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhl
cj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBOb3RFcXVhbCA8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhw
cjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yIT0gKGNvbnN0IEVUQmFzZTxU
MT4mIGQxLCBjb25zdCBUMiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhw
ck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6
VF9leHByLCAgIE5vdEVxdWFsIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10
eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGlj
X2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpU
X2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgTm90RXF1YWwgPCB0eXBlbmFt
ZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpU
X2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvciE9IChjb25zdCBUMSYgZDEsIGNvbnN0IEVU
QmFzZTxUMj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlw
ZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwg
ICBOb3RFcXVhbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlw
ZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2Fz
dDxjb25zdCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFt
ZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgTm90RXF1YWwgPGludCwgdHlwZW5hbWUgIGFz
RXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3IhPSAoSW5kZXhQ
bGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgIE5vdEVxdWFsIDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlw
ZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIExvZ2ljYWxBbmQgPFRfbnVtdHlwZTEs
IHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJh
dG9yJiYgIChjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+JiBkMSwgY29uc3QgVF9vdGhl
ciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0
ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpU
X2V4cHIsICAgTG9naWNhbEFuZCA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9IHRlbXBsYXRl
PGNsYXNzIFRfZXhwcjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6
VF9leHByLCAgIExvZ2ljYWxBbmQgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBl
bmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvciYm
IChjb25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsg
cmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHBy
MT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICBMb2dpY2FsQW5kIDwgdHlw
ZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9l
eHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQy
PiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6
VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgIExvZ2ljYWxBbmQgPCB0eXBl
bmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+
OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvciYmIChjb25zdCBFVEJhc2U8VDE+JiBk
MSwgY29uc3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwg
dHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
ciwgICBMb2dpY2FsQW5kIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
LCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nh
c3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAg
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgTG9naWNhbEFuZCA8IHR5cGVuYW1l
ICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRf
ZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yJiYgKGNvbnN0IFQxJiBkMSwgY29uc3QgRVRC
YXNlPFQyPiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBl
bmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAg
IExvZ2ljYWxBbmQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5
cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3RhdGljX2Nh
c3Q8Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhlcj4gICBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5h
bWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIExvZ2ljYWxBbmQgPGludCwgdHlwZW5hbWUg
IGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3ImJiAoSW5k
ZXhQbGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFz
RXhwcjxUX290aGVyPjo6VF9leHByLCAgIExvZ2ljYWxBbmQgPGludCwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gCnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZTEsIGludCBOX3JhbmsxLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+
LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgTG9naWNhbE9yIDxUX251bXR5
cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBv
cGVyYXRvcnx8ICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNvbnN0IFRf
b3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJy
YXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByLCAgIExvZ2ljYWxPciA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290
aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9IHRlbXBs
YXRlPGNsYXNzIFRfZXhwcjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJy
YXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByLCAgIExvZ2ljYWxPciA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5
cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9y
fHwgKGNvbnN0IF9iel9BcnJheUV4cHI8VF9leHByMT4mIGQxLCBjb25zdCBUX290aGVyJiBkMikg
eyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4
cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIExvZ2ljYWxPciA8IHR5
cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRf
ZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
Mj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46
OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBMb2dpY2FsT3IgPCB0eXBl
bmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+
OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcnx8IChjb25zdCBFVEJhc2U8VDE+JiBk
MSwgY29uc3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwg
dHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
ciwgICBMb2dpY2FsT3IgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUs
IHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2Fz
dDxjb25zdCBUMSY+KGQxKSwgZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhw
ciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBMb2dpY2FsT3IgPCB0eXBlbmFtZSAg
YXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4
cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcnx8IChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFz
ZTxUMj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBM
b2dpY2FsT3IgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVu
YW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3RhdGljX2Nhc3Q8
Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUg
IGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIExvZ2ljYWxPciA8aW50LCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcnx8IChJbmRleFBs
YWNlaG9sZGVyPE4xPiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHIsICAgTG9naWNhbE9yIDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAoKdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlMSwgaW50IE5fcmFuazEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxf
YnpfQXJyYXlFeHByT3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5
cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgICAgIF9iel9hdGFuMiA8VF9udW10
eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAg
YXRhbjIgIChjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+JiBkMSwgY29uc3QgVF9vdGhl
ciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0
ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpU
X2V4cHIsICAgICAgICBfYnpfYXRhbjIgPFRfbnVtdHlwZTEsIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLmJlZ2luRmFzdCgpLGQyKTsgfSB0ZW1w
bGF0ZTxjbGFzcyBUX2V4cHIxLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6X0Fy
cmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhl
cj46OlRfZXhwciwgICAgICAgIF9iel9hdGFuMiA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIGF0
YW4yIChjb25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIp
IHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9l
eHByMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgICAgIF9iel9hdGFu
MiA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhl
cj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgICAgIF9iel9h
dGFuMiA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUg
IGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIGF0YW4yIChjb25zdCBFVEJhc2U8
VDE+JiBkMSwgY29uc3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46
OlRfZXhwciwgICAgICAgIF9iel9hdGFuMiA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4g
KHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpLCBkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNs
YXNzIFQyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICAgICAgX2J6X2F0
YW4yIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAg
YXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgYXRhbjIgKGNvbnN0IFQxJiBkMSwg
Y29uc3QgRVRCYXNlPFQyPiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhw
ck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6
VF9leHByLCAgICAgICAgX2J6X2F0YW4yIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6
VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAo
ZDEsIHN0YXRpY19jYXN0PGNvbnN0IFQyJj4oZDIpKTsgfSB0ZW1wbGF0ZTxpbnQgTjEsIGNsYXNz
IFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRl
cjxOMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgICAgIF9iel9hdGFu
MiA8aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+
ICBhdGFuMiAoSW5kZXhQbGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJl
dHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwg
dHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICAgICAgX2J6X2F0YW4yIDxpbnQs
IHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIp
OyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhl
cj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251
bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICAg
ICAgICBfYnpfcG93IDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4
cHI6OlRfbnVtdHlwZT4gPiA+ICBwb3cgIChjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+
JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5
RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgICAgICAgIF9iel9wb3cgPFRfbnVtdHlwZTEsIHR5
cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLmJlZ2lu
RmFzdCgpLGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIxLCBjbGFzcyBUX290aGVyPiAgIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4sIHR5cGVu
YW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgICAgICAgX2J6X3BvdyA8IHR5cGVuYW1l
ICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6
VF9udW10eXBlPiA+ID4gIHBvdyAoY29uc3QgX2J6X0FycmF5RXhwcjxUX2V4cHIxPiYgZDEsIGNv
bnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxf
YnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIs
ICAgICAgICAgIF9iel9wb3cgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFt
ZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsgfSB0ZW1w
bGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4
cHIsICAgICAgICAgIF9iel9wb3cgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251
bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBwb3cg
KGNvbnN0IEVUQmFzZTxUMT4mIGQxLCBjb25zdCBUMiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFt
ZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICAgICAgICBfYnpfcG93IDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIs
ICAgICAgICAgIF9iel9wb3cgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBwb3cgKGNv
bnN0IFQxJiBkMSwgY29uc3QgRVRCYXNlPFQyPiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAg
YXNFeHByPFQyPjo6VF9leHByLCAgICAgICAgICBfYnpfcG93IDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251
bXR5cGU+ID4gPiAoZDEsIHN0YXRpY19jYXN0PGNvbnN0IFQyJj4oZDIpKTsgfSB0ZW1wbGF0ZTxp
bnQgTjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5k
ZXhQbGFjZWhvbGRlcjxOMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAg
ICAgICAgX2J6X3BvdyA8aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBwb3cgKEluZGV4UGxhY2Vob2xkZXI8TjE+IGQxLCBjb25zdCBUX290aGVy
JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhv
bGRlcjxOMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgICAgICAgX2J6
X3BvdyA8aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4g
PiA+KGQxLGQyKTsgfSAKCgoKCgojIDE0OCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L2FycmF5L2V0LmgiCgoKIAoKCgojZGVmaW5lIEJaX0RFQ0xBUkVfQVJSQVlfRVRf
VU9QKG5hbWUsIGZ1bmN0b3IpIHRlbXBsYXRlPGNsYXNzIFQxPiBfYnpfaW5saW5lX2V0IF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IF9iel90eXBlbmFtZSBhc0V4cHI8VDE+OjpU
X2V4cHIsIGZ1bmN0b3I8X2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gbmFtZShjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxf
YnpfQXJyYXlFeHByVW5hcnlPcDwgX2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRfZXhwciwgZnVu
Y3RvcjxfYnpfdHlwZW5hbWUgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3Rh
dGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9CiMgMTY3ICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXQuaCIKCnRlbXBsYXRlPGNsYXNzIFQxPiAgIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgX2J6X25lZ2F0ZSA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+ICBvcGVyYXRvci0gKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCAgIF9iel9uZWdhdGUgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAoKIAoKdGVtcGxhdGU8Y2xhc3Mg
VDE+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwciwgICAgIF9iel9hYnMgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
OjpUX251bXR5cGU+ID4gPiAgYWJzIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgIF9iel9hYnMgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICBfYnpfYWNvcyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBhY29zIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgX2J6X2Fjb3MgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICBfYnpfYXNpbiA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBhc2luIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgX2J6X2FzaW4gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICBfYnpfYXRhbiA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBhdGFuIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgX2J6X2F0YW4gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICBfYnpfY2VpbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBjZWlsIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgX2J6X2NlaWwgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICBfYnpfY2V4cCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBjZXhwIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgX2J6X2NleHAgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICAgX2J6X2NvcyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBjb3MgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9l
eHByLCAgICAgX2J6X2NvcyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQx
PiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8
VDE+OjpUX2V4cHIsICAgIF9iel9jb3NoIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6
VF9udW10eXBlPiA+ID4gIGNvc2ggKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9l
eHByLCAgICBfYnpfY29zaCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQx
PiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8
VDE+OjpUX2V4cHIsICAgX2J6X2NzcXJ0IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6
VF9udW10eXBlPiA+ID4gIGNzcXJ0IChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICBfYnpfY3NxcnQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICAgX2J6X2V4cCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBleHAgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9l
eHByLCAgICAgX2J6X2V4cCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQx
PiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8
VDE+OjpUX2V4cHIsICAgIF9iel9hYnMgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgZmFicyAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9hYnMgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQx
Pjo6VF9leHByLCAgIF9iel9mbG9vciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBmbG9vciAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgX2J6X2Zsb29yIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgIF9iel9sb2cgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgbG9nIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhw
ciwgICAgIF9iel9sb2cgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQx
Pjo6VF9leHByLCAgIF9iel9sb2cxMCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBsb2cxMCAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgX2J6X2xvZzEwIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzIgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93MiAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3cyIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzMgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93MyAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3czIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93NCAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3c0IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzUgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93NSAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3c1IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzYgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93NiAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3c2IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzcgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93NyAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3c3IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzggPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93OCAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3c4IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgIF9iel9zaW4gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgc2luIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhw
ciwgICAgIF9iel9zaW4gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQx
Pjo6VF9leHByLCAgICBfYnpfc2luaCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBzaW5oIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhw
ciwgICAgX2J6X3NpbmggPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQx
Pjo6VF9leHByLCAgICAgX2J6X3NxciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBzcXIgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCAgICAgX2J6X3NxciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4g
PiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQxPiAg
IF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+
OjpUX2V4cHIsICAgIF9iel9zcXJ0IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9u
dW10eXBlPiA+ID4gIHNxcnQgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCAgICBfYnpfc3FydCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4g
PiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQxPiAg
IF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+
OjpUX2V4cHIsICAgICBfYnpfdGFuIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9u
dW10eXBlPiA+ID4gIHRhbiAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9BcnJh
eUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIs
ICAgICBfYnpfdGFuIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAg
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46
OlRfZXhwciwgICAgX2J6X3RhbmggPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251
bXR5cGU+ID4gPiAgdGFuaCAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9BcnJh
eUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIs
ICAgIF9iel90YW5oIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKCgoKCgoKCgoKCgoKCgoKCgogCnRl
bXBsYXRlPGNsYXNzIFQxPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hY29zaCA8IHR5cGVuYW1lICBhc0V4
cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBhY29zaCAoY29uc3QgRVRCYXNlPFQxPiYg
ZDEpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1l
ICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hY29zaCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+
OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0g
CnRlbXBsYXRlPGNsYXNzIFQxPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hc2luaCA8IHR5cGVuYW1lICBh
c0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBhc2luaCAoY29uc3QgRVRCYXNlPFQx
PiYgZDEpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVu
YW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hc2luaCA8IHR5cGVuYW1lICBhc0V4cHI8
VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7
IH0gCnRlbXBsYXRlPGNsYXNzIFQxPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5
T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hdGFuaCA8IHR5cGVuYW1l
ICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBhdGFuaCAoY29uc3QgRVRCYXNl
PFQxPiYgZDEpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hdGFuaCA8IHR5cGVuYW1lICBhc0V4
cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQx
KSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQxPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVu
YXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgICBfYnpfY2JydCA8IHR5cGVu
YW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBjYnJ0IChjb25zdCBFVEJh
c2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwg
dHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAgIF9iel9jYnJ0IDwgdHlwZW5hbWUgIGFz
RXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4o
ZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHBy
VW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAgX2J6X2V4cG0xIDwgdHlw
ZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIGV4cG0xIChjb25zdCBF
VEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlP
cDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAgX2J6X2V4cG0xIDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQx
Jj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAgICBfYnpfZXJmIDwg
dHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIGVyZiAoY29uc3Qg
RVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5
T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgICAgX2J6X2VyZiA8IHR5cGVuYW1l
ICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBU
MSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQxPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5
RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgICBfYnpfZXJmYyA8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBlcmZjIChjb25z
dCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5h
cnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAgIF9iel9lcmZjIDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0
IFQxJj4oZDEpKTsgfSAKIAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlFeHByPF9iel9B
cnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICBfYnpfaXNu
YW4gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgaXNuYW4g
KGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICBfYnpfaXNuYW4gPCB0
eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8
Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICAgICBf
YnpfajAgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgajAg
KGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICAgICBfYnpfajAgPCB0
eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8
Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICAgICBf
YnpfajEgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgajEg
KGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICAgICBfYnpfajEgPCB0
eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8
Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgIF9iel9s
Z2FtbWEgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgbGdh
bW1hIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJy
YXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICBfYnpfbGdhbW1h
IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19j
YXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAgX2J6X0FycmF5RXhw
cjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAg
IF9iel9sb2diIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4g
IGxvZ2IgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9B
cnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICAgX2J6X2xv
Z2IgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGlj
X2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAg
ICBfYnpfbG9nMXAgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4g
PiAgbG9nMXAgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICBfYnpf
bG9nMXAgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3Rh
dGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCAgICAgX2J6X3JpbnQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAgcmludCAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgICBf
YnpfcmludCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChz
dGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCiAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAgX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgICAgX2J6X3kwIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10
eXBlPiA+ID4gIHkwIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhw
cjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAg
ICAgX2J6X3kwIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4g
KHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAgX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgICAgX2J6X3kxIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10
eXBlPiA+ID4gIHkxIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhw
cjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAg
ICAgX2J6X3kxIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4g
KHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKCgoKIAoKCgojZGVmaW5lIEJaX0RFQ0xB
UkVfRlVOQ1RJT04obmFtZSkgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiBzdHJ1Y3QgbmFtZSAj
IyBfaW1wbCB7IHR5cGVkZWYgUF9udW10eXBlIFRfbnVtdHlwZTsgdGVtcGxhdGU8Y2xhc3MgVD4g
c3RhdGljIGlubGluZSBUIGFwcGx5KFQgeCkgeyByZXR1cm4gbmFtZSh4KTsgfSB0ZW1wbGF0ZTxj
bGFzcyBUMT4gc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50
Rm9ybWF0JiBmb3JtYXQsIGNvbnN0IFQxJiBhKSB7IHN0ciArPSAjbmFtZTsgc3RyICs9ICIoIjsg
YS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsgc3RyICs9ICIpIjsgfSB9OyBCWl9ERUNMQVJFX0FS
UkFZX0VUX1VPUChuYW1lLCBuYW1lICMjIF9pbXBsKQojIDI2MiAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2V0LmgiCgojZGVmaW5lIEJaX0RFQ0xBUkVfRlVO
Q1RJT05fUkVUKG5hbWUsIHJldHVybl90eXBlKSB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHN0
cnVjdCBuYW1lICMjIF9pbXBsIHsgdHlwZWRlZiByZXR1cm5fdHlwZSBUX251bXR5cGU7IHRlbXBs
YXRlPGNsYXNzIFQ+IHN0YXRpYyBpbmxpbmUgcmV0dXJuX3R5cGUgYXBwbHkoVCB4KSB7IHJldHVy
biBuYW1lKHgpOyB9IHRlbXBsYXRlPGNsYXNzIFQxPiBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChz
dHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIGEpIHsgc3Ry
ICs9ICNuYW1lOyBzdHIgKz0gIigiOyBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOyBzdHIgKz0g
IikiOyB9IH07IEJaX0RFQ0xBUkVfQVJSQVlfRVRfVU9QKG5hbWUsIG5hbWUgIyMgX2ltcGwpCiMg
MjgzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXQuaCIK
CgojZGVmaW5lIEJaX0RFQ0xBUkVfRlVOQ1RJT04yKG5hbWUpIHRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+IHN0cnVjdCBuYW1lICMjIF9pbXBsIHsgdHlwZWRlZiBf
YnpfdHlwZW5hbWUgcHJvbW90ZV90cmFpdDxQX251bXR5cGUxLCBQX251bXR5cGUyPjo6VF9wcm9t
b3RlIFRfbnVtdHlwZTsgdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdGF0aWMgaW5saW5l
IFRfbnVtdHlwZSBhcHBseShUMSB4LCBUMiB5KSB7IHJldHVybiBuYW1lKHgseSk7IH0gdGVtcGxh
dGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0
ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIGEsIGNvbnN0IFQyJiBiKSB7
IHN0ciArPSAjbmFtZTsgc3RyICs9ICIoIjsgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsgc3Ry
ICs9ICIsIjsgYi5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsgc3RyICs9ICIpIjsgfSB9OyBCWl9E
RUNMQVJFX0FSUkFZX0VUKG5hbWUsIG5hbWUgIyMgX2ltcGwpCiMgMzA4ICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXQuaCIKCiNkZWZpbmUgQlpfREVDTEFS
RV9GVU5DVElPTjJfUkVUKG5hbWUsIHJldHVybl90eXBlKSB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBjbGFzcyBQX251bXR5cGUyPiBzdHJ1Y3QgbmFtZSAjIyBfaW1wbCB7IHR5cGVkZWYgcmV0
dXJuX3R5cGUgVF9udW10eXBlOyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBp
bmxpbmUgVF9udW10eXBlIGFwcGx5KFQxIHgsIFQyIHkpIHsgcmV0dXJuIG5hbWUoeCx5KTsgfSB0
ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmlu
ZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgYSwgY29uc3QgVDIm
IGIpIHsgc3RyICs9ICNuYW1lOyBzdHIgKz0gIigiOyBhLnByZXR0eVByaW50KHN0cixmb3JtYXQp
OyBzdHIgKz0gIiwiOyBiLnByZXR0eVByaW50KHN0cixmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH07
IEJaX0RFQ0xBUkVfQVJSQVlfRVQobmFtZSwgbmFtZSAjIyBfaW1wbCkKIyAzMzEgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9ldC5oIgoKfSAKCgojIDI0Nzgg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgoKCgoK
CiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L21pc2Mu
Y2MiIDEKCiNkZWZpbmUgQlpfQVJSQVlNSVNDX0NDCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAK
CiNkZWZpbmUgQlpfQVJSQVlfREVDTEFSRV9VT1AoZm4sIGZub2JqKSB0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUsIGludCBOX3Jhbms+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJV
bmFyeU9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCBmbm9iajxUX251bXR5
cGU+ID4gPiBmbihjb25zdCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYXJyYXkpIHsgcmV0dXJu
IF9iel9BcnJheUV4cHJVbmFyeU9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+
LCBmbm9iajxUX251bXR5cGU+ID4oYXJyYXkuYmVnaW5GYXN0KCkpOyB9IHRlbXBsYXRlPGNsYXNz
IFRfZXhwcj4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8X2J6X0Fy
cmF5RXhwcjxUX2V4cHI+LCBmbm9iajxfYnpfdHlwZW5hbWUgVF9leHByOjpUX251bXR5cGU+ID4g
PiBmbihCWl9FVFBBUk0oX2J6X0FycmF5RXhwcjxUX2V4cHI+KSBleHByKSB7IHJldHVybiBfYnpf
QXJyYXlFeHByVW5hcnlPcDxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIGZub2JqPF9iel90eXBlbmFt
ZSBUX2V4cHI6OlRfbnVtdHlwZT4gPihleHByKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAzMCAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L21pc2MuY2MiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBl
LE5fcmFuaz4sICAgTG9naWNhbE5vdCA8VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yISAoY29uc3Qg
QXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpfQXJyYXlFeHByVW5h
cnlPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgICBMb2dpY2FsTm90IDxU
X251bXR5cGU+ID4oYXJyYXkuYmVnaW5GYXN0KCkpOyB9IHRlbXBsYXRlPGNsYXNzIFRfZXhwcj4g
aW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8X2J6X0FycmF5RXhwcjxU
X2V4cHI+LCAgIExvZ2ljYWxOb3QgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+ID4gPiAg
b3BlcmF0b3IhIChjb25zdCAgX2J6X0FycmF5RXhwcjxUX2V4cHI+ICYgIGV4cHIpIHsgcmV0dXJu
IF9iel9BcnJheUV4cHJVbmFyeU9wPF9iel9BcnJheUV4cHI8VF9leHByPiwgICBMb2dpY2FsTm90
IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+KGV4cHIpOyB9IAp0ZW1wbGF0ZTxjbGFz
cyBUX251bXR5cGUsIGludCBOX3Jhbms+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJVbmFyeU9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCAgIEJpdHdpc2VO
b3QgPFRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcn4gKGNvbnN0IEFycmF5PFRfbnVtdHlwZSxOX3Jh
bms+JiBhcnJheSkgeyByZXR1cm4gX2J6X0FycmF5RXhwclVuYXJ5T3A8RmFzdEFycmF5SXRlcmF0
b3I8VF9udW10eXBlLE5fcmFuaz4sICAgQml0d2lzZU5vdCA8VF9udW10eXBlPiA+KGFycmF5LmJl
Z2luRmFzdCgpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHI+IGlubGluZSBfYnpfQXJyYXlFeHBy
PF9iel9BcnJheUV4cHJVbmFyeU9wPF9iel9BcnJheUV4cHI8VF9leHByPiwgICBCaXR3aXNlTm90
IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yfiAoY29uc3QgIF9i
el9BcnJheUV4cHI8VF9leHByPiAmICBleHByKSB7IHJldHVybiBfYnpfQXJyYXlFeHByVW5hcnlP
cDxfYnpfQXJyYXlFeHByPFRfZXhwcj4sICAgQml0d2lzZU5vdCA8IHR5cGVuYW1lICBUX2V4cHI6
OlRfbnVtdHlwZT4gPihleHByKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9y
YW5rPiBpbmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDxGYXN0QXJyYXlJ
dGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgICBOZWdhdGUgPFRfbnVtdHlwZT4gPiA+ICBvcGVy
YXRvci0gKGNvbnN0IEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhcnJheSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwclVuYXJ5T3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFuaz4sICAg
TmVnYXRlIDxUX251bXR5cGU+ID4oYXJyYXkuYmVnaW5GYXN0KCkpOyB9IHRlbXBsYXRlPGNsYXNz
IFRfZXhwcj4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8X2J6X0Fy
cmF5RXhwcjxUX2V4cHI+LCAgIE5lZ2F0ZSA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4g
PiA+ICBvcGVyYXRvci0gKGNvbnN0ICBfYnpfQXJyYXlFeHByPFRfZXhwcj4gJiAgZXhwcikgeyBy
ZXR1cm4gX2J6X0FycmF5RXhwclVuYXJ5T3A8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCAgIE5lZ2F0
ZSA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPihleHByKTsgfSAKCiAKCgoKdGVtcGxh
dGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rLCBjbGFzcyBUX2Nhc3Q+CmlubGluZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCl9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8RmFzdEFycmF5SXRlcmF0b3I8
VF9udW10eXBlLE5fcmFuaz4sICAgCiAgICBDYXN0PFRfbnVtdHlwZSwgVF9jYXN0PiA+ID4KY2Fz
dChjb25zdCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYXJyYXksIFRfY2FzdCkKeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgIHJldHVybiBfYnpfQXJyYXlFeHByVW5hcnlPcDxGYXN0QXJyYXlJdGVyYXRvcjxU
X251bXR5cGUsTl9yYW5rPiwgICAgICAKICAgICAgICBDYXN0PFRfbnVtdHlwZSxUX2Nhc3Q+ID4o
YXJyYXkuYmVnaW5GYXN0KCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX2Nhc3Q+
CmlubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCl9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8X2J6X0Fy
cmF5RXhwcjxUX2V4cHI+LCAgICAgICAgICAgICAgCiAgICBDYXN0PCB0eXBlbmFtZSAgVF9leHBy
OjpUX251bXR5cGUsVF9jYXN0PiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIApjYXN0KGNv
bnN0ICBfYnpfQXJyYXlFeHByPFRfZXhwcj4gJiAgZXhwciwgVF9jYXN0KQp7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgcmV0dXJuIF9iel9BcnJheUV4cHJVbmFyeU9wPF9iel9BcnJheUV4cHI8VF9leHByPiwg
ICAgICAgICAgICAgICAgIAogICAgICAgIENhc3Q8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlw
ZSxUX2Nhc3Q+ID4oZXhwcik7ICAgICAgICAgICAgICAgICAKfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKfSAKCgoKIyAyNDg0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovYXJyYXkuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovYXJyYXkvcmVkdWNlLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiNkZWZpbmUgQlpfQVJSQVlSRURVQ0VfSAoKCgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4v
dXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3JlZHVjZS5oIiAxCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfUkVEVUNFX0gKCgoKCgoKCgoKCgoKCm5h
bWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQX3NvdXJjZXR5cGUsIGNsYXNzIFBf
cmVzdWx0dHlwZSA9IHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgUF9zb3VyY2V0eXBlID46
OlRfc3VtdHlwZSA+CmNsYXNzIFJlZHVjZVN1bSB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfc291
cmNldHlwZSBUX3NvdXJjZXR5cGU7CiAgICB0eXBlZGVmIFBfcmVzdWx0dHlwZSBUX3Jlc3VsdHR5
cGU7CiAgICB0eXBlZGVmIFRfcmVzdWx0dHlwZSBUX251bXR5cGU7CgogICAgZW51bSB7IG5lZWRJ
bmRleCA9IDAsIGNhblByb3ZpZGVJbml0aWFsVmFsdWUgPSAxIH07CgogICAgUmVkdWNlU3VtKCkK
ICAgIHsgcmVzZXQoKTsgfQoKICAgIFJlZHVjZVN1bShUX3Jlc3VsdHR5cGUgaW5pdGlhbFZhbHVl
KQogICAgeyBzdW1fID0gaW5pdGlhbFZhbHVlOyB9CgogICAgYm9vbCBvcGVyYXRvcigpKFRfc291
cmNldHlwZSB4KQogICAgeyAKICAgICAgICBzdW1fICs9IHg7IAogICAgICAgIHJldHVybiB0cnVl
OwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5cGUgeCwgaW50KQogICAgeyAK
ICAgICAgICBzdW1fICs9IHg7IAogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIFRfcmVz
dWx0dHlwZSByZXN1bHQoaW50KQogICAgeyByZXR1cm4gc3VtXzsgfQoKICAgIHZvaWQgcmVzZXQo
KQogICAgeyBzdW1fID0gemVybyhUX3Jlc3VsdHR5cGUoKSk7IH0KCiAgICB2b2lkIHJlc2V0KFRf
cmVzdWx0dHlwZSBpbml0aWFsVmFsdWUpCiAgICB7IHN1bV8gPSBpbml0aWFsVmFsdWU7IH0KIAog
ICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUoKQogICAgeyByZXR1cm4gInN1bSI7IH0KIApwcm90
ZWN0ZWQ6CiAgICBUX3Jlc3VsdHR5cGUgc3VtXzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBfc291cmNl
dHlwZSwgY2xhc3MgUF9yZXN1bHR0eXBlID0gdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQ
X3NvdXJjZXR5cGUgPjo6VF9mbG9hdHR5cGUgPgpjbGFzcyBSZWR1Y2VNZWFuIHsKCnB1YmxpYzoK
ICAgIHR5cGVkZWYgUF9zb3VyY2V0eXBlIFRfc291cmNldHlwZTsKICAgIHR5cGVkZWYgUF9yZXN1
bHR0eXBlIFRfcmVzdWx0dHlwZTsKICAgIHR5cGVkZWYgVF9yZXN1bHR0eXBlIFRfbnVtdHlwZTsK
CiAgICBlbnVtIHsgbmVlZEluZGV4ID0gMCwgY2FuUHJvdmlkZUluaXRpYWxWYWx1ZSA9IDAgfTsK
CiAgICBSZWR1Y2VNZWFuKCkKICAgIHsgcmVzZXQoKTsgfQoKICAgIFJlZHVjZU1lYW4oVF9yZXN1
bHR0eXBlKQogICAgeyAKICAgICAgICAgOwogICAgICAgIHJlc2V0KCk7CiAgICB9CgogICAgYm9v
bCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAgeyAKICAgICAgICBzdW1fICs9IHg7IAog
ICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5
cGUgeCwgaW50KQogICAgeyAKICAgICAgICBzdW1fICs9IHg7IAogICAgICAgIHJldHVybiB0cnVl
OwogICAgfQoKICAgIFRfcmVzdWx0dHlwZSByZXN1bHQoaW50IGNvdW50KQogICAgeyByZXR1cm4g
c3VtXyAvIGNvdW50OyB9CgogICAgdm9pZCByZXNldCgpCiAgICB7IHN1bV8gPSB6ZXJvKFRfcmVz
dWx0dHlwZSgpKTsgfQoKICAgIHZvaWQgcmVzZXQoVF9yZXN1bHR0eXBlKQogICAgeyAKICAgICAg
ICAgOwogICAgICAgIHJlc2V0KCk7CiAgICB9CgogICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUo
KSAKICAgIHsgcmV0dXJuICJtZWFuIjsgfQoKcHJvdGVjdGVkOgogICAgVF9yZXN1bHR0eXBlIHN1
bV87Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX3NvdXJjZXR5cGU+CmNsYXNzIFJlZHVjZU1pbiB7Cgpw
dWJsaWM6CiAgICB0eXBlZGVmIFBfc291cmNldHlwZSBUX3NvdXJjZXR5cGU7CiAgICB0eXBlZGVm
IFBfc291cmNldHlwZSBUX3Jlc3VsdHR5cGU7CiAgICB0eXBlZGVmIFRfcmVzdWx0dHlwZSBUX251
bXR5cGU7CgogICAgZW51bSB7IG5lZWRJbmRleCA9IDAsIGNhblByb3ZpZGVJbml0aWFsVmFsdWUg
PSAxIH07CgogICAgUmVkdWNlTWluKCkKICAgIHsgcmVzZXQoKTsgfQoKICAgIFJlZHVjZU1pbihU
X3Jlc3VsdHR5cGUgbWluKQogICAgewogICAgICAgIG1pbl8gPSBtaW47CiAgICB9CgogICAgYm9v
bCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAgeyAKICAgICAgICBpZiAoeCA8IG1pbl8p
CiAgICAgICAgICAgIG1pbl8gPSB4OwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGJv
b2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5cGUgeCwgaW50KQogICAgewogICAgICAgIGlmICh4IDwg
bWluXykKICAgICAgICAgICAgbWluXyA9IHg7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cgog
ICAgVF9yZXN1bHR0eXBlIHJlc3VsdChpbnQpCiAgICB7IHJldHVybiBtaW5fOyB9CgogICAgdm9p
ZCByZXNldCgpCiAgICB7IG1pbl8gPSBodWdlKFBfc291cmNldHlwZSgpKTsgfQoKICAgIHZvaWQg
cmVzZXQoVF9yZXN1bHR0eXBlIGluaXRpYWxWYWx1ZSkKICAgIHsgbWluXyA9IGluaXRpYWxWYWx1
ZTsgfQoKICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lKCkKICAgIHsgcmV0dXJuICJtaW4iOyB9
Cgpwcm90ZWN0ZWQ6CiAgICBUX3Jlc3VsdHR5cGUgbWluXzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBf
c291cmNldHlwZT4KY2xhc3MgUmVkdWNlTWF4IHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9zb3Vy
Y2V0eXBlIFRfc291cmNldHlwZTsKICAgIHR5cGVkZWYgUF9zb3VyY2V0eXBlIFRfcmVzdWx0dHlw
ZTsKICAgIHR5cGVkZWYgVF9yZXN1bHR0eXBlIFRfbnVtdHlwZTsKCiAgICBlbnVtIHsgbmVlZElu
ZGV4ID0gMCwgY2FuUHJvdmlkZUluaXRpYWxWYWx1ZSA9IDEgfTsKCiAgICBSZWR1Y2VNYXgoKQog
ICAgeyByZXNldCgpOyB9CgogICAgUmVkdWNlTWF4KFRfcmVzdWx0dHlwZSBtYXgpCiAgICB7CiAg
ICAgICAgbWF4XyA9IG1heDsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0eXBl
IHgpCiAgICB7CiAgICAgICAgaWYgKHggPiBtYXhfKQogICAgICAgICAgICBtYXhfID0geDsKICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0eXBl
IHgsIGludCkKICAgIHsKICAgICAgICBpZiAoeCA+IG1heF8pCiAgICAgICAgICAgIG1heF8gPSB4
OwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIFRfcmVzdWx0dHlwZSByZXN1bHQoaW50
KQogICAgeyByZXR1cm4gbWF4XzsgfQoKICAgIHZvaWQgcmVzZXQoKQogICAgeyBtYXhfID0gbmVn
aHVnZShQX3NvdXJjZXR5cGUoKSk7IH0KCiAgICB2b2lkIHJlc2V0KFRfcmVzdWx0dHlwZSBpbml0
aWFsVmFsdWUpCiAgICB7IG1heF8gPSBpbml0aWFsVmFsdWU7IH0KCiAgICBzdGF0aWMgY29uc3Qg
Y2hhciogbmFtZSgpCiAgICB7IHJldHVybiAibWF4IjsgfQoKcHJvdGVjdGVkOgogICAgVF9yZXN1
bHR0eXBlIG1heF87Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX3NvdXJjZXR5cGU+CmNsYXNzIFJlZHVj
ZU1pbkluZGV4IHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9zb3VyY2V0eXBlIFRfc291cmNldHlw
ZTsKICAgIHR5cGVkZWYgaW50ICAgICAgICAgIFRfcmVzdWx0dHlwZTsKICAgIHR5cGVkZWYgVF9y
ZXN1bHR0eXBlIFRfbnVtdHlwZTsKCiAgICBlbnVtIHsgbmVlZEluZGV4ID0gMSwgY2FuUHJvdmlk
ZUluaXRpYWxWYWx1ZSA9IDAgfTsKCiAgICBSZWR1Y2VNaW5JbmRleCgpCiAgICB7IHJlc2V0KCk7
IH0KCiAgICBSZWR1Y2VNaW5JbmRleChUX3Jlc3VsdHR5cGUgbWluKQogICAgewogICAgICAgIHJl
c2V0KG1pbik7CiAgICB9CgogICAgYm9vbCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAg
ewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0
b3IoKShUX3NvdXJjZXR5cGUgeCwgaW50IGluZGV4KQogICAgewogICAgICAgIGlmICh4IDwgbWlu
XykKICAgICAgICB7CiAgICAgICAgICAgIG1pbl8gPSB4OwogICAgICAgICAgICBpbmRleF8gPSBp
bmRleDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgVF9yZXN1bHR0
eXBlIHJlc3VsdChpbnQpCiAgICB7IHJldHVybiBpbmRleF87IH0KCiAgICB2b2lkIHJlc2V0KCkK
ICAgIHsgCiAgICAgICAgbWluXyA9IGh1Z2UoVF9zb3VyY2V0eXBlKCkpOwogICAgICAgIGluZGV4
XyA9IHRpbnkoaW50KCkpOyAgICAgICAgCiAgICB9CgogICAgdm9pZCByZXNldChUX3Jlc3VsdHR5
cGUpCiAgICB7IAogICAgICAgICA7CiAgICAgICAgcmVzZXQoKTsKICAgIH0KCiAgICBzdGF0aWMg
Y29uc3QgY2hhciogbmFtZSgpCiAgICB7IHJldHVybiAibWluSW5kZXgiOyB9Cgpwcm90ZWN0ZWQ6
CiAgICBUX3NvdXJjZXR5cGUgbWluXzsKICAgIGludCBpbmRleF87Cn07Cgp0ZW1wbGF0ZTxjbGFz
cyBQX3NvdXJjZXR5cGUsIGludCBOPgpjbGFzcyBSZWR1Y2VNaW5JbmRleFZlY3RvciB7CgpwdWJs
aWM6CiAgICB0eXBlZGVmIFBfc291cmNldHlwZSBUX3NvdXJjZXR5cGU7CiAgICB0eXBlZGVmIFRp
bnlWZWN0b3I8aW50LE4+IFRfcmVzdWx0dHlwZTsKICAgIHR5cGVkZWYgVF9yZXN1bHR0eXBlIFRf
bnVtdHlwZTsKCiAgICBlbnVtIHsgY2FuUHJvdmlkZUluaXRpYWxWYWx1ZSA9IDAgfTsKCiAgICBS
ZWR1Y2VNaW5JbmRleFZlY3RvcigpCiAgICB7IHJlc2V0KCk7IH0KCiAgICBSZWR1Y2VNaW5JbmRl
eFZlY3RvcihUX3Jlc3VsdHR5cGUgbWluKQogICAgewogICAgICAgIHJlc2V0KG1pbik7CiAgICB9
CgogICAgYm9vbCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAgewogICAgICAgICA7CiAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5
cGUsIGludCkKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAg
CiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0eXBlIHgsIGNvbnN0IFRpbnlWZWN0b3I8aW50
LE4+JiBpbmRleCkKICAgIHsKICAgICAgICBpZiAoeCA8IG1pbl8pCiAgICAgICAgewogICAgICAg
ICAgICBtaW5fID0geDsKICAgICAgICAgICAgaW5kZXhfID0gaW5kZXg7CiAgICAgICAgfQogICAg
ICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIFRfcmVzdWx0dHlwZSByZXN1bHQoaW50KQogICAg
eyByZXR1cm4gaW5kZXhfOyB9CgogICAgdm9pZCByZXNldCgpCiAgICB7CiAgICAgICAgbWluXyA9
IGh1Z2UoVF9zb3VyY2V0eXBlKCkpOwogICAgICAgIGluZGV4XyA9IHRpbnkoaW50KCkpOwogICAg
fQoKICAgIHZvaWQgcmVzZXQoVF9yZXN1bHR0eXBlKQogICAgewogICAgICAgICA7CiAgICAgICAg
cmVzZXQoKTsKICAgIH0KCiAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpCiAgICB7IHJldHVy
biAibWluSW5kZXgiOyB9Cgpwcm90ZWN0ZWQ6CiAgICBUX3NvdXJjZXR5cGUgbWluXzsKICAgIFRp
bnlWZWN0b3I8aW50LE4+IGluZGV4XzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBfc291cmNldHlwZT4K
Y2xhc3MgUmVkdWNlTWF4SW5kZXggewoKcHVibGljOgogICAgdHlwZWRlZiBQX3NvdXJjZXR5cGUg
VF9zb3VyY2V0eXBlOwogICAgdHlwZWRlZiBpbnQgICAgICAgICAgVF9yZXN1bHR0eXBlOwogICAg
dHlwZWRlZiBUX3Jlc3VsdHR5cGUgVF9udW10eXBlOwoKICAgIGVudW0geyBuZWVkSW5kZXggPSAx
LCBjYW5Qcm92aWRlSW5pdGlhbFZhbHVlID0gMCB9OwoKICAgIFJlZHVjZU1heEluZGV4KCkKICAg
IHsgcmVzZXQoKTsgfQoKICAgIFJlZHVjZU1heEluZGV4KFRfcmVzdWx0dHlwZSBtYXgpCiAgICB7
CiAgICAgICAgcmVzZXQobWF4KTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0
eXBlIHgpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAg
Ym9vbCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4LCBpbnQgaW5kZXgpCiAgICB7CiAgICAgICAg
aWYgKHggPiBtYXhfKQogICAgICAgIHsKICAgICAgICAgICAgbWF4XyA9IHg7CiAgICAgICAgICAg
IGluZGV4XyA9IGluZGV4OwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAg
ICBUX3Jlc3VsdHR5cGUgcmVzdWx0KGludCkKICAgIHsgcmV0dXJuIGluZGV4XzsgfQoKICAgIHZv
aWQgcmVzZXQoKQogICAgewogICAgICAgIG1heF8gPSBuZWdodWdlKFRfc291cmNldHlwZSgpKTsK
ICAgICAgICBpbmRleF8gPSB0aW55KGludCgpKTsKICAgIH0KCiAgICB2b2lkIHJlc2V0KFRfcmVz
dWx0dHlwZSkKICAgIHsKICAgICAgICAgOwogICAgICAgIHJlc2V0KCk7CiAgICB9CgogICAgc3Rh
dGljIGNvbnN0IGNoYXIqIG5hbWUoKQogICAgeyByZXR1cm4gIm1heEluZGV4IjsgfQoKcHJvdGVj
dGVkOgogICAgVF9zb3VyY2V0eXBlIG1heF87CiAgICBpbnQgaW5kZXhfOwp9OwoKdGVtcGxhdGU8
Y2xhc3MgUF9zb3VyY2V0eXBlLCBpbnQgTl9yYW5rPgpjbGFzcyBSZWR1Y2VNYXhJbmRleFZlY3Rv
ciB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfc291cmNldHlwZSBUX3NvdXJjZXR5cGU7CiAgICB0
eXBlZGVmIFRpbnlWZWN0b3I8aW50LE5fcmFuaz4gVF9yZXN1bHR0eXBlOwogICAgdHlwZWRlZiBU
X3Jlc3VsdHR5cGUgVF9udW10eXBlOwoKICAgIGVudW0geyBjYW5Qcm92aWRlSW5pdGlhbFZhbHVl
ID0gMCB9OwoKICAgIFJlZHVjZU1heEluZGV4VmVjdG9yKCkKICAgIHsgcmVzZXQoKTsgfQoKICAg
IFJlZHVjZU1heEluZGV4VmVjdG9yKFRfcmVzdWx0dHlwZSBtYXgpCiAgICB7CiAgICAgICAgcmVz
ZXQobWF4KTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0eXBlIHgpCiAgICB7
CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgYm9vbCBvcGVyYXRv
cigpKFRfc291cmNldHlwZSB4LCBjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBpbmRleCkK
ICAgIHsKICAgICAgICBpZiAoeCA+IG1heF8pCiAgICAgICAgewogICAgICAgICAgICBtYXhfID0g
eDsKICAgICAgICAgICAgaW5kZXhfID0gaW5kZXg7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0
cnVlOwogICAgfQoKICAgIFRfcmVzdWx0dHlwZSByZXN1bHQoaW50KQogICAgeyByZXR1cm4gaW5k
ZXhfOyB9CgogICAgdm9pZCByZXNldCgpCiAgICB7CiAgICAgICAgbWF4XyA9IG5lZ2h1Z2UoVF9z
b3VyY2V0eXBlKCkpOwogICAgICAgIGluZGV4XyA9IHRpbnkoaW50KCkpOwogICAgfQoKICAgIHZv
aWQgcmVzZXQoVF9yZXN1bHR0eXBlKQogICAgewogICAgICAgICA7CiAgICAgICAgcmVzZXQoKTsK
ICAgIH0KCiAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpCiAgICB7IHJldHVybiAibWF4SW5k
ZXgiOyB9Cgpwcm90ZWN0ZWQ6CiAgICBUX3NvdXJjZXR5cGUgbWF4XzsKICAgIFRpbnlWZWN0b3I8
aW50LE5fcmFuaz4gaW5kZXhfOwp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9zb3VyY2V0eXBlPgpjbGFz
cyBSZWR1Y2VGaXJzdCB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfc291cmNldHlwZSBUX3NvdXJj
ZXR5cGU7CiAgICB0eXBlZGVmIGludCAgICAgICAgICBUX3Jlc3VsdHR5cGU7CiAgICB0eXBlZGVm
IFRfcmVzdWx0dHlwZSBUX251bXR5cGU7CgogICAgZW51bSB7IG5lZWRJbmRleCA9IDEsIGNhblBy
b3ZpZGVJbml0aWFsVmFsdWUgPSAwIH07CgogICAgUmVkdWNlRmlyc3QoKQogICAgeyByZXNldCgp
OyB9CgogICAgUmVkdWNlRmlyc3QoVF9yZXN1bHR0eXBlKQogICAgewogICAgICAgICA7CiAgICB9
CgogICAgYm9vbCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAgewogICAgICAgICA7CiAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5
cGUgeCwgaW50IGluZGV4KQogICAgewogICAgICAgIGlmICh4KQogICAgICAgIHsKICAgICAgICAg
ICAgaW5kZXhfID0gaW5kZXg7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAg
ICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBUX3Jlc3VsdHR5
cGUgcmVzdWx0KGludCkKICAgIHsgcmV0dXJuIGluZGV4XzsgfQoKICAgIHZvaWQgcmVzZXQoKQog
ICAgewogICAgICAgIGluZGV4XyA9IHRpbnkoaW50KCkpOwogICAgfQoKICAgIHZvaWQgcmVzZXQo
VF9yZXN1bHR0eXBlKQogICAgewogICAgICAgICA7CiAgICAgICAgcmVzZXQoKTsKICAgIH0KCiAg
ICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpCiAgICB7IHJldHVybiAiZmlyc3QiOyB9Cgpwcm90
ZWN0ZWQ6CiAgICBpbnQgaW5kZXhfOwp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9zb3VyY2V0eXBlPgpj
bGFzcyBSZWR1Y2VMYXN0IHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9zb3VyY2V0eXBlIFRfc291
cmNldHlwZTsKICAgIHR5cGVkZWYgaW50ICAgICAgICAgIFRfcmVzdWx0dHlwZTsKICAgIHR5cGVk
ZWYgVF9yZXN1bHR0eXBlIFRfbnVtdHlwZTsKCiAgICBlbnVtIHsgbmVlZEluZGV4ID0gMSwgY2Fu
UHJvdmlkZUluaXRpYWxWYWx1ZSA9IDAgfTsKCiAgICBSZWR1Y2VMYXN0KCkKICAgIHsgcmVzZXQo
KTsgfQoKICAgIFJlZHVjZUxhc3QoVF9yZXN1bHR0eXBlKQogICAgewogICAgICAgICA7CiAgICB9
CgogICAgYm9vbCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAgewogICAgICAgICA7CiAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5
cGUgeCwgaW50IGluZGV4KQogICAgewogICAgICAgIGlmICh4KQogICAgICAgIHsKICAgICAgICAg
ICAgaW5kZXhfID0gaW5kZXg7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIFRfcmVzdWx0dHlw
ZSByZXN1bHQoaW50KQogICAgeyByZXR1cm4gaW5kZXhfOyB9CgogICAgdm9pZCByZXNldCgpCiAg
ICB7CiAgICAgICAgaW5kZXhfID0gaHVnZShpbnQoKSk7CiAgICB9CgogICAgdm9pZCByZXNldChU
X3Jlc3VsdHR5cGUpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXNldCgpOwogICAgfQoKICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lKCkKICAgIHsgcmV0dXJuICJsYXN0IjsgfQoKcHJvdGVj
dGVkOgogICAgaW50IGluZGV4XzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBfc291cmNldHlwZSwgY2xh
c3MgUF9yZXN1bHR0eXBlID0gdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX3NvdXJjZXR5
cGUgPjo6VF9zdW10eXBlID4KY2xhc3MgUmVkdWNlUHJvZHVjdCB7CgpwdWJsaWM6CiAgICB0eXBl
ZGVmIFBfc291cmNldHlwZSBUX3NvdXJjZXR5cGU7CiAgICB0eXBlZGVmIFBfcmVzdWx0dHlwZSBU
X3Jlc3VsdHR5cGU7CiAgICB0eXBlZGVmIFRfcmVzdWx0dHlwZSBUX251bXR5cGU7CgogICAgZW51
bSB7IG5lZWRJbmRleCA9IDAsIGNhblByb3ZpZGVJbml0aWFsVmFsdWUgPSAxIH07CgogICAgUmVk
dWNlUHJvZHVjdCgpCiAgICB7IHByb2R1Y3RfID0gb25lKFRfcmVzdWx0dHlwZSgpKTsgfQoKICAg
IFJlZHVjZVByb2R1Y3QoVF9yZXN1bHR0eXBlIGluaXRpYWxWYWx1ZSkKICAgIHsgcHJvZHVjdF8g
PSBpbml0aWFsVmFsdWU7IH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0eXBlIHgpCiAg
ICB7IAogICAgICAgIHByb2R1Y3RfICo9IHg7IAogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoK
ICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5cGUgeCwgaW50KQogICAgeyAKICAgICAgICBw
cm9kdWN0XyAqPSB4OyAKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBUX3Jlc3VsdHR5
cGUgcmVzdWx0KGludCkKICAgIHsgcmV0dXJuIHByb2R1Y3RfOyB9CgogICAgdm9pZCByZXNldCgp
CiAgICB7IHByb2R1Y3RfID0gb25lKFRfcmVzdWx0dHlwZSgpKTsgfQoKICAgIHZvaWQgcmVzZXQo
VF9yZXN1bHR0eXBlIGluaXRpYWxWYWx1ZSkKICAgIHsgcHJvZHVjdF8gPSBpbml0aWFsVmFsdWU7
IH0KCiAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpCiAgICB7IHJldHVybiAicHJvZHVjdCI7
IH0KCnByb3RlY3RlZDoKICAgIFRfcmVzdWx0dHlwZSBwcm9kdWN0XzsKfTsKCnRlbXBsYXRlPGNs
YXNzIFBfc291cmNldHlwZT4KY2xhc3MgUmVkdWNlQ291bnQgewoKcHVibGljOgogICAgdHlwZWRl
ZiBQX3NvdXJjZXR5cGUgVF9zb3VyY2V0eXBlOwogICAgdHlwZWRlZiBpbnQgICAgICAgICAgVF9y
ZXN1bHR0eXBlOwogICAgdHlwZWRlZiBUX3Jlc3VsdHR5cGUgVF9udW10eXBlOwoKICAgIGVudW0g
eyBuZWVkSW5kZXggPSAwLCBjYW5Qcm92aWRlSW5pdGlhbFZhbHVlID0gMSB9OwoKICAgIFJlZHVj
ZUNvdW50KCkKICAgIHsgcmVzZXQoKTsgfQoKICAgIFJlZHVjZUNvdW50KFRfcmVzdWx0dHlwZSBj
b3VudCkKICAgIHsKICAgICAgICBjb3VudF8gPSBjb3VudDsKICAgIH0KCiAgICBib29sIG9wZXJh
dG9yKCkoVF9zb3VyY2V0eXBlIHgpCiAgICB7CiAgICAgICAgaWYgKHgpCiAgICAgICAgICAgICsr
Y291bnRfOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShU
X3NvdXJjZXR5cGUgeCwgaW50KQogICAgewogICAgICAgIGlmICh4KQogICAgICAgICAgICArK2Nv
dW50XzsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBUX3Jlc3VsdHR5cGUgcmVzdWx0
KGludCkKICAgIHsgcmV0dXJuIGNvdW50XzsgfQoKICAgIHZvaWQgcmVzZXQoKQogICAgeyBjb3Vu
dF8gPSB6ZXJvKFRfcmVzdWx0dHlwZSgpKTsgfQoKICAgIHZvaWQgcmVzZXQoVF9yZXN1bHR0eXBl
IGluaXRpYWxWYWx1ZSkKICAgIHsgY291bnRfID0gaW5pdGlhbFZhbHVlOyB9CgogICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG5hbWUoKQogICAgeyByZXR1cm4gImNvdW50IjsgfQoKcHJvdGVjdGVkOgog
ICAgVF9yZXN1bHR0eXBlIGNvdW50XzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBfc291cmNldHlwZT4K
Y2xhc3MgUmVkdWNlQW55IHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9zb3VyY2V0eXBlIFRfc291
cmNldHlwZTsKICAgIHR5cGVkZWYgYm9vbCAgICAgIFRfcmVzdWx0dHlwZTsKICAgIHR5cGVkZWYg
VF9yZXN1bHR0eXBlIFRfbnVtdHlwZTsKCiAgICBlbnVtIHsgbmVlZEluZGV4ID0gMCwgY2FuUHJv
dmlkZUluaXRpYWxWYWx1ZSA9IDAgfTsKCiAgICBSZWR1Y2VBbnkoKQogICAgeyByZXNldCgpOyB9
CgogICAgUmVkdWNlQW55KFRfcmVzdWx0dHlwZSBpbml0aWFsVmFsdWUpCiAgICB7CiAgICAgICAg
cmVzZXQoaW5pdGlhbFZhbHVlKTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0
eXBlIHgpCiAgICB7CiAgICAgICAgaWYgKHgpCiAgICAgICAgewogICAgICAgICAgICBhbnlfID0g
dHJ1ZSA7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVy
biB0cnVlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5cGUgeCwgaW50KQog
ICAgewogICAgICAgIGlmICh4KQogICAgICAgIHsKICAgICAgICAgICAgYW55XyA9IHRydWUgOwog
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgIH0KCiAgICBUX3Jlc3VsdHR5cGUgcmVzdWx0KGludCkKICAgIHsgcmV0dXJuIGFueV87IH0K
CiAgICB2b2lkIHJlc2V0KCkKICAgIHsgYW55XyA9IGZhbHNlIDsgfQoKICAgIHZvaWQgcmVzZXQo
VF9yZXN1bHR0eXBlKQogICAgeyAKICAgICAgICAgOwogICAgICAgIHJlc2V0KCk7CiAgICB9Cgog
ICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUoKQogICAgeyByZXR1cm4gImFueSI7IH0KCnByb3Rl
Y3RlZDoKICAgIFRfcmVzdWx0dHlwZSBhbnlfOwp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9zb3VyY2V0
eXBlPgpjbGFzcyBSZWR1Y2VBbGwgewoKcHVibGljOgogICAgdHlwZWRlZiBQX3NvdXJjZXR5cGUg
VF9zb3VyY2V0eXBlOwogICAgdHlwZWRlZiBib29sICAgICAgVF9yZXN1bHR0eXBlOwogICAgdHlw
ZWRlZiBUX3Jlc3VsdHR5cGUgVF9udW10eXBlOwoKICAgIGVudW0geyBuZWVkSW5kZXggPSAwLCBj
YW5Qcm92aWRlSW5pdGlhbFZhbHVlID0gMCB9OwoKICAgIFJlZHVjZUFsbCgpCiAgICB7IHJlc2V0
KCk7IH0KCiAgICBSZWR1Y2VBbGwoVF9yZXN1bHR0eXBlIGluaXRpYWxWYWx1ZSkKICAgIHsKICAg
ICAgICByZXNldChpbml0aWFsVmFsdWUpOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3Nv
dXJjZXR5cGUgeCkKICAgIHsKICAgICAgICBpZiAoISBib29sICh4KSkKICAgICAgICB7CiAgICAg
ICAgICAgIGFsbF8gPSBmYWxzZSA7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9
CiAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBib29sIG9w
ZXJhdG9yKCkoVF9zb3VyY2V0eXBlIHgsIGludCkKICAgIHsKICAgICAgICBpZiAoISBib29sICh4
KSkKICAgICAgICB7CiAgICAgICAgICAgIGFsbF8gPSBmYWxzZSA7CiAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgIH0KCiAgICBUX3Jlc3VsdHR5cGUgcmVzdWx0KGludCkKICAgIHsgcmV0dXJuIGFsbF87IH0K
CiAgICB2b2lkIHJlc2V0KCkKICAgIHsgYWxsXyA9IHRydWUgOyB9CgogICAgdm9pZCByZXNldChU
X3Jlc3VsdHR5cGUpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXNldCgpOwogICAgfQoKICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lKCkKICAgIHsgcmV0dXJuICJhbGwiOyB9Cgpwcm90ZWN0
ZWQ6CiAgICBUX3Jlc3VsdHR5cGUgYWxsXzsKfTsgCgp9IAoKCiMgNDcgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9yZWR1Y2UuaCIgMgoKCgpuYW1lc3BhY2Ug
IGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBpbnQgTl9pbmRleCwgY2xhc3MgVF9y
ZWR1Y3Rpb24+CmNsYXNzIF9iel9BcnJheUV4cHJSZWR1Y2UgewoKcHVibGljOiAgIAogICAgdHlw
ZWRlZiB0eXBlbmFtZSAgVF9yZWR1Y3Rpb246OlRfbnVtdHlwZSBUX251bXR5cGU7CiAgICB0eXBl
ZGVmIFRfZXhwciAgICAgIFRfY3RvckFyZzE7CiAgICB0eXBlZGVmIFRfcmVkdWN0aW9uIFRfY3Rv
ckFyZzI7CgogICAgZW51bSB7IG51bUFycmF5T3BlcmFuZHMgPSAoaW50KSBUX2V4cHI6Om51bUFy
cmF5T3BlcmFuZHMgICwKICAgICAgICBudW1JbmRleFBsYWNlaG9sZGVycyA9IChpbnQpIFRfZXhw
cjo6bnVtSW5kZXhQbGFjZWhvbGRlcnMgICArIDEsCiAgICAgICAgcmFuayA9IChpbnQpIFRfZXhw
cjo6cmFuayAgIC0gMSB9OwoKICAgIF9iel9BcnJheUV4cHJSZWR1Y2UoY29uc3QgX2J6X0FycmF5
RXhwclJlZHVjZTxUX2V4cHIsTl9pbmRleCxUX3JlZHVjdGlvbj4mCiAgICAgICAgcmVkdWNlKQog
ICAgICAgIDogcmVkdWNlXyhyZWR1Y2UucmVkdWNlXyksIGl0ZXJfKHJlZHVjZS5pdGVyXykKICAg
IHsKICAgIH0KCiAgICBfYnpfQXJyYXlFeHByUmVkdWNlKFRfZXhwciBleHByKQogICAgICAgIDog
aXRlcl8oZXhwcikKICAgIHsgfQoKICAgIF9iel9BcnJheUV4cHJSZWR1Y2UoVF9leHByIGV4cHIs
IFRfcmVkdWN0aW9uIHJlZHVjZSkKICAgICAgICA6IGl0ZXJfKGV4cHIpLCByZWR1Y2VfKHJlZHVj
ZSkKICAgIHsgfQoKICAgIGludCBhc2NlbmRpbmcoaW50IHJhbmspCiAgICB7IHJldHVybiBpdGVy
Xy5hc2NlbmRpbmcocmFuayk7IH0KCiAgICBpbnQgb3JkZXJpbmcoaW50IHJhbmspCiAgICB7IHJl
dHVybiBpdGVyXy5vcmRlcmluZyhyYW5rKTsgfQoKICAgIGludCBsYm91bmQoaW50IHJhbmspCiAg
ICB7IHJldHVybiBpdGVyXy5sYm91bmQocmFuayk7IH0KCiAgICBpbnQgdWJvdW5kKGludCByYW5r
KQogICAgeyByZXR1cm4gaXRlcl8udWJvdW5kKHJhbmspOyB9CgogICAgdGVtcGxhdGU8aW50IE5f
ZGVzdFJhbms+CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShjb25zdCBUaW55VmVjdG9yPGludCwg
Tl9kZXN0UmFuaz4mIGRlc3RJbmRleCkKICAgIHsKICAgICAgICAgOwoKCgoKICAgICAgICBUaW55
VmVjdG9yPGludCwgTl9kZXN0UmFuayArIDE+IGluZGV4OwoKICAgICAgICAgCiAgICAgICAgX2J6
X21ldGFfdmVjQXNzaWduPE5faW5kZXgsIDA+Ojphc3NpZ24oaW5kZXgsIGRlc3RJbmRleCwgCiAg
ICAgICAgICAgIF9iel91cGRhdGU8aW50LGludD4oKSk7CgogICAgICAgIGludCBsYm91bmQgPSBp
dGVyXy5sYm91bmQoTl9pbmRleCk7CiAgICAgICAgaW50IHVib3VuZCA9IGl0ZXJfLnVib3VuZChO
X2luZGV4KTsKCiAgICAgICAgIAogICAgICAgICAKICAgICAgICAgOwoKCgoKCiAgICAgICAgcmVk
dWNlXy5yZXNldCgpOwoKICAgICAgICBmb3IgKGluZGV4W05faW5kZXhdID0gaXRlcl8ubGJvdW5k
KE5faW5kZXgpOwogICAgICAgICAgICBpbmRleFtOX2luZGV4XSA8PSB1Ym91bmQ7ICsraW5kZXhb
Tl9pbmRleF0pCiAgICAgICAgewogICAgICAgICAgICBpZiAoIXJlZHVjZV8oaXRlcl8oaW5kZXgp
LCBpbmRleFtOX2luZGV4XSkpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAg
ICAgIHJldHVybiByZWR1Y2VfLnJlc3VsdCh1Ym91bmQtbGJvdW5kKzEpOwogICAgfQoKICAgICAK
ICAgICAKICAgICAKICAgICAKICAgIGludCBvcGVyYXRvciooKQogICAgewogICAgICAgICA7CiAg
ICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgIAogICAgdm9pZCBwdXNoKGludCkKICAgIHsKICAg
ICAgICAgOwogICAgfQoKICAgICAKICAgIHZvaWQgcG9wKGludCkKICAgIHsKICAgICAgICAgOwog
ICAgfQoKICAgICAKICAgIHZvaWQgYWR2YW5jZSgpCiAgICB7CiAgICAgICAgIDsKICAgIH0KCiAg
ICAgCiAgICB2b2lkIGFkdmFuY2UoaW50KQogICAgewogICAgICAgICA7CiAgICB9CgogICAgIAog
ICAgdm9pZCBsb2FkU3RyaWRlKGludCkKICAgIHsKICAgICAgICAgOwogICAgfQoKICAgIGJvb2wg
IGlzVW5pdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAgIHJl
dHVybiBmYWxzZTsKICAgIH0KCiAgICB2b2lkIGFkdmFuY2VVbml0U3RyaWRlKCkKICAgIHsKICAg
ICAgICAgOwogICAgfQoKICAgIGJvb2wgIGNhbkNvbGxhcHNlKGludCxpbnQpIGNvbnN0CiAgICB7
ICAgIDsgcmV0dXJuIGZhbHNlIDsgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcltdKGludCkKICAg
IHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBUX251bXR5cGUoKTsKICAgIH0KCiAgICBUX251
bXR5cGUgZmFzdFJlYWQoaW50KQogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIFRfbnVt
dHlwZSgpOwogICAgfQoKICAgIGludCBzdWdnZXN0U3RyaWRlKGludCkgY29uc3QKICAgIHsKICAg
ICAgICAgOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGJvb2wgIGlzU3RyaWRlKGludCxp
bnQpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gdHJ1ZSA7CiAgICB9Cgog
ICAgdGVtcGxhdGU8aW50IE5fcmFuaz4KICAgIHZvaWQgbW92ZVRvKGNvbnN0IFRpbnlWZWN0b3I8
aW50LE5fcmFuaz4mIGkpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm47CiAgICB9Cgog
ICAgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1h
dCkgY29uc3QKICAgIHsKICAgICAgICAgCiAgICAgICAgc3RyICs9ICJyZWR1Y2VbTkVFRFNfV09S
S10oIjsKICAgICAgICBpdGVyXy5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIg
Kz0gIikiOwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFRfc2hhcGU+CiAgICBib29sICBzaGFw
ZUNoZWNrKGNvbnN0IFRfc2hhcGUmIHNoYXBlKSBjb25zdAogICAgeyAKICAgICAgICAgCiAgICAg
ICAgcmV0dXJuIHRydWUgOyAKICAgIH0KCnByaXZhdGU6IAogICAgX2J6X0FycmF5RXhwclJlZHVj
ZSgpIHsgfQoKICAgIFRfcmVkdWN0aW9uIHJlZHVjZV87CiAgICBUX2V4cHIgaXRlcl87Cn07Cgoj
ZGVmaW5lIEJaX0RFQ0xfQVJSQVlfUEFSVElBTF9SRURVQ0UoZm4scmVkdWN0aW9uKSB0ZW1wbGF0
ZTxjbGFzcyBUX2V4cHIsIGludCBOX2luZGV4PiBpbmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJy
YXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRleCwgcmVkdWN0aW9uPF9i
el90eXBlbmFtZSBUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IGZuKF9iel9BcnJheUV4cHI8VF9leHBy
PiBleHByLCBjb25zdCBJbmRleFBsYWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwclJlZHVjZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIE5faW5kZXgsIHJlZHVjdGlvbjxf
YnpfdHlwZW5hbWUgVF9leHByOjpUX251bXR5cGU+ID4oZXhwcik7IH0gdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlLCBpbnQgTl9yYW5rLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwclJlZHVjZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwg
Tl9pbmRleCwgcmVkdWN0aW9uPFRfbnVtdHlwZT4gPiA+IGZuKGNvbnN0IEFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rPiYgYXJyYXksIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7IHJl
dHVybiBfYnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jh
bms+LCBOX2luZGV4LCByZWR1Y3Rpb248VF9udW10eXBlPiA+IChhcnJheS5iZWdpbkZhc3QoKSk7
IH0gICAgICAgICAgICAgICAgICAgICAgICAKIyAyNTUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svaW5jbHVkZS9ibGl0ei9hcnJheS9yZWR1Y2UuaCIKCnRlbXBsYXRlPGNsYXNzIFRfZXhwciwg
aW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8X2J6
X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgICAgICAgUmVkdWNlU3VtIDwgdHlwZW5hbWUg
IFRfZXhwcjo6VF9udW10eXBlPiA+ID4gIHN1bSAoX2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIs
IGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7IHJldHVybiBfYnpfQXJyYXlFeHBy
UmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRleCwgICAgICAgIFJlZHVjZVN1bSA8
IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPihleHByKTsgfSB0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUsIGludCBOX3JhbmssIGludCBOX2luZGV4PiBpbmxpbmUgX2J6X0FycmF5RXhwcjxf
YnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCBO
X2luZGV4LCAgICAgICAgUmVkdWNlU3VtIDxUX251bXR5cGU+ID4gPiAgc3VtIChjb25zdCBBcnJh
eTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBjb25zdCBJbmRleFBsYWNlaG9sZGVyPE5faW5k
ZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251
bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICAgICAgIFJlZHVjZVN1bSA8VF9udW10eXBlPiA+IChh
cnJheS5iZWdpbkZhc3QoKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFRfZXhwciwgaW50IE5faW5kZXg+
IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxU
X2V4cHI+LCBOX2luZGV4LCAgICAgICBSZWR1Y2VNZWFuIDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9u
dW10eXBlPiA+ID4gIG1lYW4gKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByLCBjb25zdCBJbmRl
eFBsYWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxfYnpf
QXJyYXlFeHByPFRfZXhwcj4sIE5faW5kZXgsICAgICAgIFJlZHVjZU1lYW4gPCB0eXBlbmFtZSAg
VF9leHByOjpUX251bXR5cGU+ID4oZXhwcik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBp
bnQgTl9yYW5rLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhw
clJlZHVjZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICAg
ICAgUmVkdWNlTWVhbiA8VF9udW10eXBlPiA+ID4gIG1lYW4gKGNvbnN0IEFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rPiYgYXJyYXksIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7IHJl
dHVybiBfYnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jh
bms+LCBOX2luZGV4LCAgICAgICBSZWR1Y2VNZWFuIDxUX251bXR5cGU+ID4gKGFycmF5LmJlZ2lu
RmFzdCgpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBpbnQgTl9pbmRleD4gaW5saW5lIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwclJlZHVjZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIE5f
aW5kZXgsICAgICAgICBSZWR1Y2VNaW4gPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+ID4g
PiAgbWluIChfYnpfQXJyYXlFeHByPFRfZXhwcj4gZXhwciwgY29uc3QgSW5kZXhQbGFjZWhvbGRl
cjxOX2luZGV4PiYpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxU
X2V4cHI+LCBOX2luZGV4LCAgICAgICAgUmVkdWNlTWluIDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9u
dW10eXBlPiA+KGV4cHIpOyB9IHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaywg
aW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8RmFz
dEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFuaz4sIE5faW5kZXgsICAgICAgICBSZWR1Y2VN
aW4gPFRfbnVtdHlwZT4gPiA+ICBtaW4gKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYg
YXJyYXksIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCBOX2luZGV4
LCAgICAgICAgUmVkdWNlTWluIDxUX251bXR5cGU+ID4gKGFycmF5LmJlZ2luRmFzdCgpKTsgfSAK
dGVtcGxhdGU8Y2xhc3MgVF9leHByLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwclJlZHVjZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIE5faW5kZXgsICAgUmVk
dWNlTWluSW5kZXggPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+ID4gPiAgbWluSW5kZXgg
KF9iel9BcnJheUV4cHI8VF9leHByPiBleHByLCBjb25zdCBJbmRleFBsYWNlaG9sZGVyPE5faW5k
ZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4s
IE5faW5kZXgsICAgUmVkdWNlTWluSW5kZXggPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+
ID4oZXhwcik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rLCBpbnQgTl9p
bmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclJlZHVjZTxGYXN0QXJyYXlJ
dGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICBSZWR1Y2VNaW5JbmRleCA8VF9u
dW10eXBlPiA+ID4gIG1pbkluZGV4IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFy
cmF5LCBjb25zdCBJbmRleFBsYWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5
RXhwclJlZHVjZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwg
ICBSZWR1Y2VNaW5JbmRleCA8VF9udW10eXBlPiA+IChhcnJheS5iZWdpbkZhc3QoKSk7IH0gCnRl
bXBsYXRlPGNsYXNzIFRfZXhwciwgaW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgICAgICAg
UmVkdWNlTWF4IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG1heCAoX2J6X0Fy
cmF5RXhwcjxUX2V4cHI+IGV4cHIsIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7
IHJldHVybiBfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRl
eCwgICAgICAgIFJlZHVjZU1heCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPihleHBy
KTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3JhbmssIGludCBOX2luZGV4PiBp
bmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9y
PFRfbnVtdHlwZSxOX3Jhbms+LCBOX2luZGV4LCAgICAgICAgUmVkdWNlTWF4IDxUX251bXR5cGU+
ID4gPiAgbWF4IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBjb25zdCBJ
bmRleFBsYWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxG
YXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICAgICAgIFJlZHVj
ZU1heCA8VF9udW10eXBlPiA+IChhcnJheS5iZWdpbkZhc3QoKSk7IH0gCnRlbXBsYXRlPGNsYXNz
IFRfZXhwciwgaW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJS
ZWR1Y2U8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgIFJlZHVjZU1heEluZGV4IDwg
dHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG1heEluZGV4IChfYnpfQXJyYXlFeHBy
PFRfZXhwcj4gZXhwciwgY29uc3QgSW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJu
IF9iel9BcnJheUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgIFJl
ZHVjZU1heEluZGV4IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+KGV4cHIpOyB9IHRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaywgaW50IE5faW5kZXg+IGlubGluZSBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10
eXBlLE5fcmFuaz4sIE5faW5kZXgsICAgUmVkdWNlTWF4SW5kZXggPFRfbnVtdHlwZT4gPiA+ICBt
YXhJbmRleCAoY29uc3QgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgY29uc3QgSW5k
ZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJSZWR1Y2U8RmFz
dEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFuaz4sIE5faW5kZXgsICAgUmVkdWNlTWF4SW5k
ZXggPFRfbnVtdHlwZT4gPiAoYXJyYXkuYmVnaW5GYXN0KCkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
X2V4cHIsIGludCBOX2luZGV4PiBpbmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVk
dWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRleCwgICAgUmVkdWNlUHJvZHVjdCA8IHR5
cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBwcm9kdWN0IChfYnpfQXJyYXlFeHByPFRf
ZXhwcj4gZXhwciwgY29uc3QgSW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJuIF9i
el9BcnJheUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgICBSZWR1
Y2VQcm9kdWN0IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+KGV4cHIpOyB9IHRlbXBs
YXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaywgaW50IE5faW5kZXg+IGlubGluZSBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBl
LE5fcmFuaz4sIE5faW5kZXgsICAgIFJlZHVjZVByb2R1Y3QgPFRfbnVtdHlwZT4gPiA+ICBwcm9k
dWN0IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBjb25zdCBJbmRleFBs
YWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxGYXN0QXJy
YXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICAgUmVkdWNlUHJvZHVjdCA8
VF9udW10eXBlPiA+IChhcnJheS5iZWdpbkZhc3QoKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFRfZXhw
ciwgaW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8
X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgICAgIFJlZHVjZUNvdW50IDwgdHlwZW5h
bWUgIFRfZXhwcjo6VF9udW10eXBlPiA+ID4gIGNvdW50IChfYnpfQXJyYXlFeHByPFRfZXhwcj4g
ZXhwciwgY29uc3QgSW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJuIF9iel9BcnJh
eUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgICAgIFJlZHVjZUNv
dW50IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+KGV4cHIpOyB9IHRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaywgaW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFu
az4sIE5faW5kZXgsICAgICAgUmVkdWNlQ291bnQgPFRfbnVtdHlwZT4gPiA+ICBjb3VudCAoY29u
c3QgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgY29uc3QgSW5kZXhQbGFjZWhvbGRl
cjxOX2luZGV4PiYpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0
b3I8VF9udW10eXBlLE5fcmFuaz4sIE5faW5kZXgsICAgICAgUmVkdWNlQ291bnQgPFRfbnVtdHlw
ZT4gPiAoYXJyYXkuYmVnaW5GYXN0KCkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGludCBO
X2luZGV4PiBpbmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJh
eUV4cHI8VF9leHByPiwgTl9pbmRleCwgICAgICAgIFJlZHVjZUFueSA8IHR5cGVuYW1lICBUX2V4
cHI6OlRfbnVtdHlwZT4gPiA+ICBhbnkgKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByLCBjb25z
dCBJbmRleFBsYWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVj
ZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIE5faW5kZXgsICAgICAgICBSZWR1Y2VBbnkgPCB0eXBl
bmFtZSAgVF9leHByOjpUX251bXR5cGU+ID4oZXhwcik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10
eXBlLCBpbnQgTl9yYW5rLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0Fy
cmF5RXhwclJlZHVjZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRl
eCwgICAgICAgIFJlZHVjZUFueSA8VF9udW10eXBlPiA+ID4gIGFueSAoY29uc3QgQXJyYXk8VF9u
dW10eXBlLCBOX3Jhbms+JiBhcnJheSwgY29uc3QgSW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYp
IHsgcmV0dXJuIF9iel9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBl
LE5fcmFuaz4sIE5faW5kZXgsICAgICAgICBSZWR1Y2VBbnkgPFRfbnVtdHlwZT4gPiAoYXJyYXku
YmVnaW5GYXN0KCkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGludCBOX2luZGV4PiBpbmxp
bmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHBy
PiwgTl9pbmRleCwgICAgICAgIFJlZHVjZUFsbCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+ICBhbGwgKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByLCBjb25zdCBJbmRleFBsYWNl
aG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxfYnpfQXJyYXlF
eHByPFRfZXhwcj4sIE5faW5kZXgsICAgICAgICBSZWR1Y2VBbGwgPCB0eXBlbmFtZSAgVF9leHBy
OjpUX251bXR5cGU+ID4oZXhwcik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9y
YW5rLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclJlZHVj
ZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICAgICAgIFJl
ZHVjZUFsbCA8VF9udW10eXBlPiA+ID4gIGFsbCAoY29uc3QgQXJyYXk8VF9udW10eXBlLCBOX3Jh
bms+JiBhcnJheSwgY29uc3QgSW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJuIF9i
el9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFuaz4sIE5f
aW5kZXgsICAgICAgICBSZWR1Y2VBbGwgPFRfbnVtdHlwZT4gPiAoYXJyYXkuYmVnaW5GYXN0KCkp
OyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGludCBOX2luZGV4PiBpbmxpbmUgX2J6X0FycmF5
RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRleCwg
ICAgICBSZWR1Y2VGaXJzdCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBmaXJz
dCAoX2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIsIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9p
bmRleD4mKSB7IHJldHVybiBfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHBy
PiwgTl9pbmRleCwgICAgICBSZWR1Y2VGaXJzdCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlw
ZT4gPihleHByKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3JhbmssIGludCBO
X2luZGV4PiBpbmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJh
eUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCBOX2luZGV4LCAgICAgIFJlZHVjZUZpcnN0IDxU
X251bXR5cGU+ID4gPiAgZmlyc3QgKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJy
YXksIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7IHJldHVybiBfYnpfQXJyYXlF
eHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCBOX2luZGV4LCAg
ICAgIFJlZHVjZUZpcnN0IDxUX251bXR5cGU+ID4gKGFycmF5LmJlZ2luRmFzdCgpKTsgfSAKdGVt
cGxhdGU8Y2xhc3MgVF9leHByLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6
X0FycmF5RXhwclJlZHVjZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIE5faW5kZXgsICAgICAgIFJl
ZHVjZUxhc3QgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+ID4gPiAgbGFzdCAoX2J6X0Fy
cmF5RXhwcjxUX2V4cHI+IGV4cHIsIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7
IHJldHVybiBfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRl
eCwgICAgICAgUmVkdWNlTGFzdCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPihleHBy
KTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3JhbmssIGludCBOX2luZGV4PiBp
bmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9y
PFRfbnVtdHlwZSxOX3Jhbms+LCBOX2luZGV4LCAgICAgICBSZWR1Y2VMYXN0IDxUX251bXR5cGU+
ID4gPiAgbGFzdCAoY29uc3QgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgY29uc3Qg
SW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJSZWR1Y2U8
RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFuaz4sIE5faW5kZXgsICAgICAgIFJlZHVj
ZUxhc3QgPFRfbnVtdHlwZT4gPiAoYXJyYXkuYmVnaW5GYXN0KCkpOyB9IAoKIAoKCgogCnRlbXBs
YXRlPGNsYXNzIFRfZXhwciwgY2xhc3MgVF9yZWR1Y3Rpb24+CnR5cGVuYW1lICBUX3JlZHVjdGlv
bjo6VF9yZXN1bHR0eXBlCl9iel9BcnJheUV4cHJGdWxsUmVkdWNlKFRfZXhwciBleHByLCBUX3Jl
ZHVjdGlvbiByZWR1Y3Rpb24pOwoKI2RlZmluZSBCWl9ERUNMX0FSUkFZX0ZVTExfUkVEVUNFKGZu
LHJlZHVjdGlvbikgdGVtcGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgX2J6X3R5cGVuYW1lIHJl
ZHVjdGlvbjxfYnpfdHlwZW5hbWUgVF9leHByOjpUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgZm4o
X2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVk
dWNlKGV4cHIsIHJlZHVjdGlvbjxfYnpfdHlwZW5hbWUgVF9leHByOjpUX251bXR5cGU+KCkpOyB9
IHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIF9iel90eXBlbmFt
ZSByZWR1Y3Rpb248VF9udW10eXBlPjo6VF9yZXN1bHR0eXBlIGZuKGNvbnN0IEFycmF5PFRfbnVt
dHlwZSwgTl9yYW5rPiYgYXJyYXkpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVkdWNlKGFy
cmF5LmJlZ2luRmFzdCgpLCByZWR1Y3Rpb248VF9udW10eXBlPigpKTsgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoj
IDI5NiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L3JlZHVj
ZS5oIgoKdGVtcGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgdHlwZW5hbWUgICAgICAgICBSZWR1
Y2VTdW0gPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIHN1bSAo
X2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVk
dWNlKGV4cHIsICAgICAgICBSZWR1Y2VTdW0gPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+
KCkpOyB9IHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIHR5cGVu
YW1lICAgICAgICAgUmVkdWNlU3VtIDxUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIHN1bSAoY29u
c3QgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSkgeyByZXR1cm4gX2J6X0FycmF5RXhw
ckZ1bGxSZWR1Y2UoYXJyYXkuYmVnaW5GYXN0KCksICAgICAgICBSZWR1Y2VTdW0gPFRfbnVtdHlw
ZT4oKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFRfZXhwcj4gaW5saW5lIHR5cGVuYW1lICAgICAgICBS
ZWR1Y2VNZWFuIDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPjo6VF9yZXN1bHR0eXBlICBt
ZWFuIChfYnpfQXJyYXlFeHByPFRfZXhwcj4gZXhwcikgeyByZXR1cm4gX2J6X0FycmF5RXhwckZ1
bGxSZWR1Y2UoZXhwciwgICAgICAgUmVkdWNlTWVhbiA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVt
dHlwZT4oKSk7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPiBpbmxpbmUg
dHlwZW5hbWUgICAgICAgIFJlZHVjZU1lYW4gPFRfbnVtdHlwZT46OlRfcmVzdWx0dHlwZSAgbWVh
biAoY29uc3QgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSkgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwckZ1bGxSZWR1Y2UoYXJyYXkuYmVnaW5GYXN0KCksICAgICAgIFJlZHVjZU1lYW4gPFRf
bnVtdHlwZT4oKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFRfZXhwcj4gaW5saW5lIHR5cGVuYW1lICAg
ICAgICAgUmVkdWNlTWluIDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPjo6VF9yZXN1bHR0
eXBlICBtaW4gKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByKSB7IHJldHVybiBfYnpfQXJyYXlF
eHByRnVsbFJlZHVjZShleHByLCAgICAgICAgUmVkdWNlTWluIDwgdHlwZW5hbWUgIFRfZXhwcjo6
VF9udW10eXBlPigpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IGlu
bGluZSB0eXBlbmFtZSAgICAgICAgIFJlZHVjZU1pbiA8VF9udW10eXBlPjo6VF9yZXN1bHR0eXBl
ICBtaW4gKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXkpIHsgcmV0dXJuIF9i
el9BcnJheUV4cHJGdWxsUmVkdWNlKGFycmF5LmJlZ2luRmFzdCgpLCAgICAgICAgUmVkdWNlTWlu
IDxUX251bXR5cGU+KCkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHI+IGlubGluZSB0eXBlbmFt
ZSAgICAgICAgIFJlZHVjZU1heCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT46OlRfcmVz
dWx0dHlwZSAgbWF4IChfYnpfQXJyYXlFeHByPFRfZXhwcj4gZXhwcikgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwckZ1bGxSZWR1Y2UoZXhwciwgICAgICAgIFJlZHVjZU1heCA8IHR5cGVuYW1lICBUX2V4
cHI6OlRfbnVtdHlwZT4oKSk7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5r
PiBpbmxpbmUgdHlwZW5hbWUgICAgICAgICBSZWR1Y2VNYXggPFRfbnVtdHlwZT46OlRfcmVzdWx0
dHlwZSAgbWF4IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5KSB7IHJldHVy
biBfYnpfQXJyYXlFeHByRnVsbFJlZHVjZShhcnJheS5iZWdpbkZhc3QoKSwgICAgICAgIFJlZHVj
ZU1heCA8VF9udW10eXBlPigpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgdHlw
ZW5hbWUgICAgIFJlZHVjZVByb2R1Y3QgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+OjpU
X3Jlc3VsdHR5cGUgIHByb2R1Y3QgKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByKSB7IHJldHVy
biBfYnpfQXJyYXlFeHByRnVsbFJlZHVjZShleHByLCAgICBSZWR1Y2VQcm9kdWN0IDwgdHlwZW5h
bWUgIFRfZXhwcjo6VF9udW10eXBlPigpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGlu
dCBOX3Jhbms+IGlubGluZSB0eXBlbmFtZSAgICAgUmVkdWNlUHJvZHVjdCA8VF9udW10eXBlPjo6
VF9yZXN1bHR0eXBlICBwcm9kdWN0IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFy
cmF5KSB7IHJldHVybiBfYnpfQXJyYXlFeHByRnVsbFJlZHVjZShhcnJheS5iZWdpbkZhc3QoKSwg
ICAgUmVkdWNlUHJvZHVjdCA8VF9udW10eXBlPigpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9leHBy
PiBpbmxpbmUgdHlwZW5hbWUgICAgICAgUmVkdWNlQ291bnQgPCB0eXBlbmFtZSAgVF9leHByOjpU
X251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIGNvdW50IChfYnpfQXJyYXlFeHByPFRfZXhwcj4gZXhw
cikgeyByZXR1cm4gX2J6X0FycmF5RXhwckZ1bGxSZWR1Y2UoZXhwciwgICAgICBSZWR1Y2VDb3Vu
dCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4oKSk7IH0gdGVtcGxhdGU8Y2xhc3MgVF9u
dW10eXBlLCBpbnQgTl9yYW5rPiBpbmxpbmUgdHlwZW5hbWUgICAgICAgUmVkdWNlQ291bnQgPFRf
bnVtdHlwZT46OlRfcmVzdWx0dHlwZSAgY291bnQgKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9y
YW5rPiYgYXJyYXkpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVkdWNlKGFycmF5LmJlZ2lu
RmFzdCgpLCAgICAgIFJlZHVjZUNvdW50IDxUX251bXR5cGU+KCkpOyB9IAp0ZW1wbGF0ZTxjbGFz
cyBUX2V4cHI+IGlubGluZSB0eXBlbmFtZSAgICAgICAgIFJlZHVjZUFueSA8IHR5cGVuYW1lICBU
X2V4cHI6OlRfbnVtdHlwZT46OlRfcmVzdWx0dHlwZSAgYW55IChfYnpfQXJyYXlFeHByPFRfZXhw
cj4gZXhwcikgeyByZXR1cm4gX2J6X0FycmF5RXhwckZ1bGxSZWR1Y2UoZXhwciwgICAgICAgIFJl
ZHVjZUFueSA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4oKSk7IH0gdGVtcGxhdGU8Y2xh
c3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPiBpbmxpbmUgdHlwZW5hbWUgICAgICAgICBSZWR1Y2VB
bnkgPFRfbnVtdHlwZT46OlRfcmVzdWx0dHlwZSAgYW55IChjb25zdCBBcnJheTxUX251bXR5cGUs
IE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpfQXJyYXlFeHByRnVsbFJlZHVjZShhcnJheS5i
ZWdpbkZhc3QoKSwgICAgICAgIFJlZHVjZUFueSA8VF9udW10eXBlPigpKTsgfSAKdGVtcGxhdGU8
Y2xhc3MgVF9leHByPiBpbmxpbmUgdHlwZW5hbWUgICAgICAgICBSZWR1Y2VBbGwgPCB0eXBlbmFt
ZSAgVF9leHByOjpUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIGFsbCAoX2J6X0FycmF5RXhwcjxU
X2V4cHI+IGV4cHIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVkdWNlKGV4cHIsICAgICAg
ICBSZWR1Y2VBbGwgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+KCkpOyB9IHRlbXBsYXRl
PGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIHR5cGVuYW1lICAgICAgICAgUmVk
dWNlQWxsIDxUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIGFsbCAoY29uc3QgQXJyYXk8VF9udW10
eXBlLCBOX3Jhbms+JiBhcnJheSkgeyByZXR1cm4gX2J6X0FycmF5RXhwckZ1bGxSZWR1Y2UoYXJy
YXkuYmVnaW5GYXN0KCksICAgICAgICBSZWR1Y2VBbGwgPFRfbnVtdHlwZT4oKSk7IH0gCnRlbXBs
YXRlPGNsYXNzIFRfZXhwcj4gaW5saW5lIHR5cGVuYW1lICAgICAgIFJlZHVjZUZpcnN0IDwgdHlw
ZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPjo6VF9yZXN1bHR0eXBlICBmaXJzdCAoX2J6X0FycmF5
RXhwcjxUX2V4cHI+IGV4cHIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVkdWNlKGV4cHIs
ICAgICAgUmVkdWNlRmlyc3QgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+KCkpOyB9IHRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIHR5cGVuYW1lICAgICAg
IFJlZHVjZUZpcnN0IDxUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIGZpcnN0IChjb25zdCBBcnJh
eTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpfQXJyYXlFeHByRnVsbFJl
ZHVjZShhcnJheS5iZWdpbkZhc3QoKSwgICAgICBSZWR1Y2VGaXJzdCA8VF9udW10eXBlPigpKTsg
fSAKdGVtcGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgdHlwZW5hbWUgICAgICAgIFJlZHVjZUxh
c3QgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIGxhc3QgKF9i
el9BcnJheUV4cHI8VF9leHByPiBleHByKSB7IHJldHVybiBfYnpfQXJyYXlFeHByRnVsbFJlZHVj
ZShleHByLCAgICAgICBSZWR1Y2VMYXN0IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPigp
KTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IGlubGluZSB0eXBlbmFt
ZSAgICAgICAgUmVkdWNlTGFzdCA8VF9udW10eXBlPjo6VF9yZXN1bHR0eXBlICBsYXN0IChjb25z
dCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpfQXJyYXlFeHBy
RnVsbFJlZHVjZShhcnJheS5iZWdpbkZhc3QoKSwgICAgICAgUmVkdWNlTGFzdCA8VF9udW10eXBl
PigpKTsgfSAKCiAKIAoKI2RlZmluZSBCWl9ERUNMX0FSUkFZX0ZVTExfUkVEVUNFX0lOREVYVkVD
VE9SKGZuLHJlZHVjdGlvbikgdGVtcGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgX2J6X3R5cGVu
YW1lIHJlZHVjdGlvbjxfYnpfdHlwZW5hbWUgVF9leHByOjpUX251bXR5cGUsIFRfZXhwcjo6cmFu
az46OlRfcmVzdWx0dHlwZSBmbihfYnpfQXJyYXlFeHByPFRfZXhwcj4gZXhwcikgeyByZXR1cm4g
X2J6X3JlZHVjZVdpdGhJbmRleFZlY3RvclRyYXZlcnNhbChleHByLCByZWR1Y3Rpb248X2J6X3R5
cGVuYW1lIFRfZXhwcjo6VF9udW10eXBlLCBUX2V4cHI6OnJhbms+KCkpOyB9IHRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIF9iel90eXBlbmFtZSByZWR1Y3Rpb248
VF9udW10eXBlLE5fcmFuaz46OlRfcmVzdWx0dHlwZSBmbihjb25zdCBBcnJheTxUX251bXR5cGUs
IE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpfcmVkdWNlV2l0aEluZGV4VmVjdG9yVHJhdmVy
c2FsKCBhcnJheS5iZWdpbkZhc3QoKSwgcmVkdWN0aW9uPFRfbnVtdHlwZSxOX3Jhbms+KCkpOyB9
CiMgMzMwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvcmVk
dWNlLmgiCgp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHI+IGlubGluZSB0eXBlbmFtZSAgICBSZWR1Y2VN
aW5JbmRleFZlY3RvciA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZSwgVF9leHByOjpyYW5r
Pjo6VF9yZXN1bHR0eXBlICBtaW5JbmRleCAoX2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIpIHsg
cmV0dXJuIF9iel9yZWR1Y2VXaXRoSW5kZXhWZWN0b3JUcmF2ZXJzYWwoZXhwciwgICBSZWR1Y2VN
aW5JbmRleFZlY3RvciA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZSwgVF9leHByOjpyYW5r
PigpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IGlubGluZSB0eXBl
bmFtZSAgICBSZWR1Y2VNaW5JbmRleFZlY3RvciA8VF9udW10eXBlLE5fcmFuaz46OlRfcmVzdWx0
dHlwZSAgbWluSW5kZXggKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXkpIHsg
cmV0dXJuIF9iel9yZWR1Y2VXaXRoSW5kZXhWZWN0b3JUcmF2ZXJzYWwoIGFycmF5LmJlZ2luRmFz
dCgpLCAgIFJlZHVjZU1pbkluZGV4VmVjdG9yIDxUX251bXR5cGUsTl9yYW5rPigpKTsgfSAKdGVt
cGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgdHlwZW5hbWUgICAgUmVkdWNlTWF4SW5kZXhWZWN0
b3IgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGUsIFRfZXhwcjo6cmFuaz46OlRfcmVzdWx0
dHlwZSAgbWF4SW5kZXggKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByKSB7IHJldHVybiBfYnpf
cmVkdWNlV2l0aEluZGV4VmVjdG9yVHJhdmVyc2FsKGV4cHIsICAgUmVkdWNlTWF4SW5kZXhWZWN0
b3IgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGUsIFRfZXhwcjo6cmFuaz4oKSk7IH0gdGVt
cGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPiBpbmxpbmUgdHlwZW5hbWUgICAgUmVk
dWNlTWF4SW5kZXhWZWN0b3IgPFRfbnVtdHlwZSxOX3Jhbms+OjpUX3Jlc3VsdHR5cGUgIG1heElu
ZGV4IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpf
cmVkdWNlV2l0aEluZGV4VmVjdG9yVHJhdmVyc2FsKCBhcnJheS5iZWdpbkZhc3QoKSwgICBSZWR1
Y2VNYXhJbmRleFZlY3RvciA8VF9udW10eXBlLE5fcmFuaz4oKSk7IH0gCgp9IAoKIyAxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvcmVkdWNlLmNjIiAxCgoK
CgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3Jl
ZHVjdGlvbj4KdHlwZW5hbWUgIFRfcmVkdWN0aW9uOjpUX3Jlc3VsdHR5cGUKX2J6X3JlZHVjZVdp
dGhJbmRleFRyYXZlcnNhbChUX2V4cHIgZXhwciwgVF9yZWR1Y3Rpb24gcmVkdWN0aW9uKTsKCnRl
bXBsYXRlPGNsYXNzIFRfZXhwciwgY2xhc3MgVF9yZWR1Y3Rpb24+CnR5cGVuYW1lICBUX3JlZHVj
dGlvbjo6VF9yZXN1bHR0eXBlCl9iel9yZWR1Y2VXaXRoU3RhY2tUcmF2ZXJzYWwoVF9leHByIGV4
cHIsIFRfcmVkdWN0aW9uIHJlZHVjdGlvbik7Cgp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGNsYXNz
IFRfcmVkdWN0aW9uPgp0eXBlbmFtZSAgVF9yZWR1Y3Rpb246OlRfcmVzdWx0dHlwZQpfYnpfQXJy
YXlFeHByRnVsbFJlZHVjZShUX2V4cHIgZXhwciwgVF9yZWR1Y3Rpb24gcmVkdWN0aW9uKQp7CiMg
MzIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9yZWR1Y2Uu
Y2MiCgoKICAgIHJldHVybiBfYnpfcmVkdWNlV2l0aEluZGV4VHJhdmVyc2FsKGV4cHIsIHJlZHVj
dGlvbik7CgojIDQ3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJy
YXkvcmVkdWNlLmNjIgoKfQoKdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3JlZHVjdGlv
bj4KdHlwZW5hbWUgIFRfcmVkdWN0aW9uOjpUX3Jlc3VsdHR5cGUKX2J6X3JlZHVjZVdpdGhJbmRl
eFRyYXZlcnNhbChUX2V4cHIgZXhwciwgVF9yZWR1Y3Rpb24gcmVkdWN0aW9uKQp7CiAgICAgCgog
ICAgcmVkdWN0aW9uLnJlc2V0KCk7CgogICAgY29uc3QgaW50IHJhbmsgPSBUX2V4cHI6OnJhbms7
CgogICAgVGlueVZlY3RvcjxpbnQscmFuaz4gaW5kZXgsIGZpcnN0LCBsYXN0OwoKICAgIHVuc2ln
bmVkIGxvbmcgY291bnQgPSAxOwoKICAgIGZvciAoaW50IGk9MDsgaSA8IHJhbms7ICsraSkKICAg
IHsKICAgICAgICBpbmRleChpKSA9IGV4cHIubGJvdW5kKGkpOwogICAgICAgIGZpcnN0KGkpID0g
aW5kZXgoaSk7CiAgICAgICAgbGFzdChpKSA9IGV4cHIudWJvdW5kKGkpICsgMTsKICAgICAgICBj
b3VudCAqPSBsYXN0KGkpIC0gZmlyc3QoaSk7CiAgICB9CgogICAgY29uc3QgaW50IG1heFJhbmsg
PSByYW5rIC0gMTsKICAgIGludCBsYXN0bGJvdW5kID0gZXhwci5sYm91bmQobWF4UmFuayk7CiAg
ICBpbnQgbGFzdHVib3VuZCA9IGV4cHIudWJvdW5kKG1heFJhbmspOwoKICAgIGludCBsYXN0SW5k
ZXggPSBsYXN0dWJvdW5kICsgMTsKCiAgICBib29sICBsb29wRmxhZyA9IHRydWUgOwoKICAgIHdo
aWxlKGxvb3BGbGFnKSB7CiAgICAgICAgZm9yIChpbmRleFttYXhSYW5rXSA9IGxhc3RsYm91bmQ7
IGluZGV4W21heFJhbmtdIDwgbGFzdEluZGV4OwogICAgICAgICAgICArK2luZGV4W21heFJhbmtd
KQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCFyZWR1Y3Rpb24oZXhwcihpbmRleCksIGluZGV4
W21heFJhbmtdKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbG9vcEZsYWcgPSBmYWxz
ZSA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAg
ICAgaW50IGogPSByYW5rLTI7CiAgICAgICAgZm9yICg7IGogPj0gMDsgLS1qKQogICAgICAgIHsK
ICAgICAgICAgICAgaW5kZXgoaisxKSA9IGZpcnN0KGorMSk7CiAgICAgICAgICAgICsraW5kZXgo
aik7CiAgICAgICAgICAgIGlmIChpbmRleChqKSAhPSBsYXN0KGopKQogICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAoaiA8IDApCiAgICAgICAgICAgIGJyZWFrOwog
ICAgfQoKICAgIHJldHVybiByZWR1Y3Rpb24ucmVzdWx0KGNvdW50KTsKfQoKCnRlbXBsYXRlPGNs
YXNzIFRfZXhwciwgY2xhc3MgVF9yZWR1Y3Rpb24+CnR5cGVuYW1lICBUX3JlZHVjdGlvbjo6VF9y
ZXN1bHR0eXBlCl9iel9yZWR1Y2VXaXRoSW5kZXhWZWN0b3JUcmF2ZXJzYWwoVF9leHByIGV4cHIs
IFRfcmVkdWN0aW9uIHJlZHVjdGlvbikKewogICAgIAogICAgIAoKICAgIHJlZHVjdGlvbi5yZXNl
dCgpOwoKICAgIGNvbnN0IGludCByYW5rID0gVF9leHByOjpyYW5rOwoKICAgIFRpbnlWZWN0b3I8
aW50LHJhbms+IGluZGV4LCBmaXJzdCwgbGFzdDsKCiAgICB1bnNpZ25lZCBsb25nIGNvdW50ID0g
MTsKCiAgICBmb3IgKGludCBpPTA7IGkgPCByYW5rOyArK2kpCiAgICB7CiAgICAgICAgaW5kZXgo
aSkgPSBleHByLmxib3VuZChpKTsKICAgICAgICBmaXJzdChpKSA9IGluZGV4KGkpOwogICAgICAg
IGxhc3QoaSkgPSBleHByLnVib3VuZChpKSArIDE7CiAgICAgICAgY291bnQgKj0gbGFzdChpKSAt
IGZpcnN0KGkpOwogICAgfQoKICAgIGNvbnN0IGludCBtYXhSYW5rID0gcmFuayAtIDE7CiAgICBp
bnQgbGFzdGxib3VuZCA9IGV4cHIubGJvdW5kKG1heFJhbmspOwogICAgaW50IGxhc3R1Ym91bmQg
PSBleHByLnVib3VuZChtYXhSYW5rKTsKCiAgICBpbnQgbGFzdEluZGV4ID0gbGFzdHVib3VuZCAr
IDE7CgogICAgYm9vbCAgbG9vcEZsYWcgPSB0cnVlIDsKCiAgICB3aGlsZShsb29wRmxhZykgewog
ICAgICAgIGZvciAoaW5kZXhbbWF4UmFua10gPSBsYXN0bGJvdW5kOyBpbmRleFttYXhSYW5rXSA8
IGxhc3RJbmRleDsKICAgICAgICAgICAgKytpbmRleFttYXhSYW5rXSkKICAgICAgICB7CiAgICAg
ICAgICAgIGlmICghcmVkdWN0aW9uKGV4cHIoaW5kZXgpLCBpbmRleCkpCiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgIGxvb3BGbGFnID0gZmFsc2UgOwogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGludCBqID0gcmFuay0yOwogICAgICAg
IGZvciAoOyBqID49IDA7IC0taikKICAgICAgICB7CiAgICAgICAgICAgIGluZGV4KGorMSkgPSBm
aXJzdChqKzEpOwogICAgICAgICAgICArK2luZGV4KGopOwogICAgICAgICAgICBpZiAoaW5kZXgo
aikgIT0gbGFzdChqKSkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAg
aWYgKGogPCAwKQogICAgICAgICAgICBicmVhazsKICAgIH0KCiAgICByZXR1cm4gcmVkdWN0aW9u
LnJlc3VsdChjb3VudCk7Cn0KCn0gCgojIDMzNiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L2FycmF5L3JlZHVjZS5oIiAyCgoKCiMgMjQ4NSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2ludGVybGFjZS5jYyIgMQogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX0FSUkFZSU5URVJMQUNFX0NDCgoKCgoK
CiAKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvc2hh
cGUuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfQVJS
QVlTSEFQRV9ICgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCiAKCgoKCgoKCgoKCmlubGluZSBU
aW55VmVjdG9yPGludCwxPiBzaGFwZShpbnQgbjEpCnsgcmV0dXJuIFRpbnlWZWN0b3I8aW50LDE+
KG4xKTsgfQoKaW5saW5lIFRpbnlWZWN0b3I8aW50LDI+IHNoYXBlKGludCBuMSwgaW50IG4yKQp7
IHJldHVybiBUaW55VmVjdG9yPGludCwyPihuMSxuMik7IH0KCmlubGluZSBUaW55VmVjdG9yPGlu
dCwzPiBzaGFwZShpbnQgbjEsIGludCBuMiwgaW50IG4zKQp7IHJldHVybiBUaW55VmVjdG9yPGlu
dCwzPihuMSxuMixuMyk7IH0KCmlubGluZSBUaW55VmVjdG9yPGludCw0PiBzaGFwZShpbnQgbjEs
IGludCBuMiwgaW50IG4zLCBpbnQgbjQpCnsgcmV0dXJuIFRpbnlWZWN0b3I8aW50LDQ+KG4xLG4y
LG4zLG40KTsgfQoKaW5saW5lIFRpbnlWZWN0b3I8aW50LDU+IHNoYXBlKGludCBuMSwgaW50IG4y
LCBpbnQgbjMsIGludCBuNCwKICAgIGludCBuNSkKeyByZXR1cm4gVGlueVZlY3RvcjxpbnQsNT4o
bjEsbjIsbjMsbjQsbjUpOyB9CgppbmxpbmUgVGlueVZlY3RvcjxpbnQsNj4gc2hhcGUoaW50IG4x
LCBpbnQgbjIsIGludCBuMywgaW50IG40LAogICAgaW50IG41LCBpbnQgbjYpCnsgcmV0dXJuIFRp
bnlWZWN0b3I8aW50LDY+KG4xLG4yLG4zLG40LG41LG42KTsgfQoKaW5saW5lIFRpbnlWZWN0b3I8
aW50LDc+IHNoYXBlKGludCBuMSwgaW50IG4yLCBpbnQgbjMsIGludCBuNCwKICAgIGludCBuNSwg
aW50IG42LCBpbnQgbjcpCnsgcmV0dXJuIFRpbnlWZWN0b3I8aW50LDc+KG4xLG4yLG4zLG40LG41
LG42LG43KTsgfQoKaW5saW5lIFRpbnlWZWN0b3I8aW50LDg+IHNoYXBlKGludCBuMSwgaW50IG4y
LCBpbnQgbjMsIGludCBuNCwKICAgIGludCBuNSwgaW50IG42LCBpbnQgbjcsIGludCBuOCkKeyBy
ZXR1cm4gVGlueVZlY3RvcjxpbnQsOD4objEsbjIsbjMsbjQsbjUsbjYsbjcsbjgpOyB9Cgppbmxp
bmUgVGlueVZlY3RvcjxpbnQsOT4gc2hhcGUoaW50IG4xLCBpbnQgbjIsIGludCBuMywgaW50IG40
LAogICAgaW50IG41LCBpbnQgbjYsIGludCBuNywgaW50IG44LCBpbnQgbjkpCnsgcmV0dXJuIFRp
bnlWZWN0b3I8aW50LDk+KG4xLG4yLG4zLG40LG41LG42LG43LG44LG45KTsgfQoKaW5saW5lIFRp
bnlWZWN0b3I8aW50LDEwPiBzaGFwZShpbnQgbjEsIGludCBuMiwgaW50IG4zLCBpbnQgbjQsCiAg
ICBpbnQgbjUsIGludCBuNiwgaW50IG43LCBpbnQgbjgsIGludCBuOSwgaW50IG4xMCkKeyByZXR1
cm4gVGlueVZlY3RvcjxpbnQsMTA+KG4xLG4yLG4zLG40LG41LG42LG43LG44LG45LG4xMCk7IH0K
CmlubGluZSBUaW55VmVjdG9yPGludCwxMT4gc2hhcGUoaW50IG4xLCBpbnQgbjIsIGludCBuMywg
aW50IG40LAogICAgaW50IG41LCBpbnQgbjYsIGludCBuNywgaW50IG44LCBpbnQgbjksIGludCBu
MTAsIGludCBuMTEpCnsgcmV0dXJuIFRpbnlWZWN0b3I8aW50LDExPihuMSxuMixuMyxuNCxuNSxu
NixuNyxuOCxuOSxuMTAsbjExKTsgfQoKfSAKCgoKIyA0MCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2ludGVybGFjZS5jYyIgMgoKCgpuYW1lc3BhY2UgIGJs
aXR6ICB7IAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCgogCiAKIAogCiAKCnRlbXBsYXRl
PGNsYXNzIFRfbnVtdHlwZT4Kdm9pZCBtYWtlSW50ZXJsYWNlZEFycmF5KEFycmF5PFRfbnVtdHlw
ZSwyPiYgbWFpbkFycmF5LAogICAgQXJyYXk8VF9udW10eXBlLDE+JiBzdWJhcnJheSwgaW50IHNs
aWNlKQp7CiAgICBBcnJheTxUX251bXR5cGUsMT4gdG1wID0gbWFpbkFycmF5KFJhbmdlOjphbGwo
KSwgc2xpY2UpOwogICAgc3ViYXJyYXkucmVmZXJlbmNlKHRtcCk7Cn0KCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZT4Kdm9pZCBtYWtlSW50ZXJsYWNlZEFycmF5KEFycmF5PFRfbnVtdHlwZSwzPiYg
bWFpbkFycmF5LAogICAgQXJyYXk8VF9udW10eXBlLDI+JiBzdWJhcnJheSwgaW50IHNsaWNlKQp7
CiAgICBBcnJheTxUX251bXR5cGUsMj4gdG1wID0gbWFpbkFycmF5KFJhbmdlOjphbGwoKSwgUmFu
Z2U6OmFsbCgpLCAKICAgICAgICBzbGljZSk7CiAgICBzdWJhcnJheS5yZWZlcmVuY2UodG1wKTsK
fQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlPgp2b2lkIG1ha2VJbnRlcmxhY2VkQXJyYXkoQXJy
YXk8VF9udW10eXBlLDQ+JiBtYWluQXJyYXksCiAgICBBcnJheTxUX251bXR5cGUsMz4mIHN1YmFy
cmF5LCBpbnQgc2xpY2UpCnsKICAgIEFycmF5PFRfbnVtdHlwZSwzPiB0bXAgPSBtYWluQXJyYXko
UmFuZ2U6OmFsbCgpLCBSYW5nZTo6YWxsKCksIAogICAgICAgIFJhbmdlOjphbGwoKSwgc2xpY2Up
OwogICAgc3ViYXJyYXkucmVmZXJlbmNlKHRtcCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgVF9udW10
eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGludGVybGFjZUFycmF5cyhjb25zdCBUaW55VmVjdG9yPGlu
dCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMSwgQXJyYXk8
VF9udW10eXBlLE5fcmFuaz4mIGEyKQp7CiAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaysx
PiBzdG9yYWdlOwogICAgQXJyYXk8VF9udW10eXBlLCBOX3JhbmsrMT4gYXJyYXkoc2hhcGUsIDIs
IHN0b3JhZ2UpOwogICAgbWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTEsIDApOwogICAgbWFr
ZUludGVybGFjZWRBcnJheShhcnJheSwgYTIsIDEpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5
cGUsIGludCBOX3Jhbms+CnZvaWQgaW50ZXJsYWNlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50
LE5fcmFuaz4mIHNoYXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJheTxU
X251bXR5cGUsTl9yYW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTMpCnsK
ICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rKzE+IHN0b3JhZ2U7CiAgICBBcnJheTxUX251
bXR5cGUsIE5fcmFuaysxPiBhcnJheShzaGFwZSwgMywgc3RvcmFnZSk7CiAgICBtYWtlSW50ZXJs
YWNlZEFycmF5KGFycmF5LCBhMSwgMCk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBh
MiwgMSk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMywgMik7Cn0KCnRlbXBsYXRl
PGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBpbnRlcmxhY2VBcnJheXMoY29uc3Qg
VGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgc2hhcGUsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5r
PiYgYTEsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMiwKICAgIEFycmF5PFRfbnVtdHlwZSxO
X3Jhbms+JiBhMywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE0KQp7CiAgICBHZW5lcmFsQXJy
YXlTdG9yYWdlPE5fcmFuaysxPiBzdG9yYWdlOwogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbmsr
MT4gYXJyYXkoc2hhcGUsIDQsIHN0b3JhZ2UpOwogICAgbWFrZUludGVybGFjZWRBcnJheShhcnJh
eSwgYTEsIDApOwogICAgbWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTIsIDEpOwogICAgbWFr
ZUludGVybGFjZWRBcnJheShhcnJheSwgYTMsIDIpOwogICAgbWFrZUludGVybGFjZWRBcnJheShh
cnJheSwgYTQsIDMpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZv
aWQgaW50ZXJsYWNlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNoYXBlLAog
ICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYg
YTIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTMsIEFycmF5PFRfbnVtdHlwZSxOX3Jh
bms+JiBhNCwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNSkKewogICAgR2VuZXJhbEFy
cmF5U3RvcmFnZTxOX3JhbmsrMT4gc3RvcmFnZTsKICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5r
KzE+IGFycmF5KHNoYXBlLCA1LCBzdG9yYWdlKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJy
YXksIGExLCAwKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEyLCAxKTsKICAgIG1h
a2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEzLCAyKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXko
YXJyYXksIGE0LCAzKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE1LCA0KTsKfQoK
dGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGludGVybGFjZUFycmF5
cyhjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlw
ZSxOX3Jhbms+JiBhMSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8VF9u
dW10eXBlLE5fcmFuaz4mIGEzLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgYTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNikKewog
ICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3JhbmsrMT4gc3RvcmFnZTsKICAgIEFycmF5PFRfbnVt
dHlwZSwgTl9yYW5rKzE+IGFycmF5KHNoYXBlLCA2LCBzdG9yYWdlKTsKICAgIG1ha2VJbnRlcmxh
Y2VkQXJyYXkoYXJyYXksIGExLCAwKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEy
LCAxKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEzLCAyKTsKICAgIG1ha2VJbnRl
cmxhY2VkQXJyYXkoYXJyYXksIGE0LCAzKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXks
IGE1LCA0KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE2LCA1KTsKfQoKdGVtcGxh
dGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGludGVybGFjZUFycmF5cyhjb25z
dCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jh
bms+JiBhMSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8VF9udW10eXBl
LE5fcmFuaz4mIGEzLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBBcnJheTxUX251
bXR5cGUsTl9yYW5rPiYgYTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNiwKICAgIEFycmF5
PFRfbnVtdHlwZSxOX3Jhbms+JiBhNykKewogICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbmsr
MT4gc3RvcmFnZTsKICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rKzE+IGFycmF5KHNoYXBlLCA3
LCBzdG9yYWdlKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGExLCAwKTsKICAgIG1h
a2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEyLCAxKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXko
YXJyYXksIGEzLCAyKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE0LCAzKTsKICAg
IG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE1LCA0KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJy
YXkoYXJyYXksIGE2LCA1KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE3LCA2KTsK
fQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGludGVybGFjZUFy
cmF5cyhjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVt
dHlwZSxOX3Jhbms+JiBhMSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8
VF9udW10eXBlLE5fcmFuaz4mIGEzLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBB
cnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNiwK
ICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4m
IGE4KQp7CiAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaysxPiBzdG9yYWdlOwogICAgQXJy
YXk8VF9udW10eXBlLCBOX3JhbmsrMT4gYXJyYXkoc2hhcGUsIDgsIHN0b3JhZ2UpOwogICAgbWFr
ZUludGVybGFjZWRBcnJheShhcnJheSwgYTEsIDApOwogICAgbWFrZUludGVybGFjZWRBcnJheShh
cnJheSwgYTIsIDEpOwogICAgbWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTMsIDIpOwogICAg
bWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTQsIDMpOwogICAgbWFrZUludGVybGFjZWRBcnJh
eShhcnJheSwgYTUsIDQpOwogICAgbWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTYsIDUpOwog
ICAgbWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTcsIDYpOwogICAgbWFrZUludGVybGFjZWRB
cnJheShhcnJheSwgYTgsIDcpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jh
bms+CnZvaWQgaW50ZXJsYWNlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNo
YXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9y
YW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTMsIEFycmF5PFRfbnVtdHlw
ZSxOX3Jhbms+JiBhNCwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNSwgQXJyYXk8VF9u
dW10eXBlLE5fcmFuaz4mIGE2LAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE3LCBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgYTgsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTkp
CnsKICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rKzE+IHN0b3JhZ2U7CiAgICBBcnJheTxU
X251bXR5cGUsIE5fcmFuaysxPiBhcnJheShzaGFwZSwgOSwgc3RvcmFnZSk7CiAgICBtYWtlSW50
ZXJsYWNlZEFycmF5KGFycmF5LCBhMSwgMCk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5
LCBhMiwgMSk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMywgMik7CiAgICBtYWtl
SW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNCwgMyk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFy
cmF5LCBhNSwgNCk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNiwgNSk7CiAgICBt
YWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNywgNik7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5
KGFycmF5LCBhOCwgNyk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhOSwgOCk7Cn0K
CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBpbnRlcmxhY2VBcnJh
eXMoY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgc2hhcGUsCiAgICBBcnJheTxUX251bXR5
cGUsTl9yYW5rPiYgYTEsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMiwKICAgIEFycmF5PFRf
bnVtdHlwZSxOX3Jhbms+JiBhMywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE0LAogICAgQXJy
YXk8VF9udW10eXBlLE5fcmFuaz4mIGE1LCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTYsCiAg
ICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTcsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBh
OCwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhOSwgQXJyYXk8VF9udW10eXBlLE5fcmFu
az4mIGExMCkKewogICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3JhbmsrMT4gc3RvcmFnZTsKICAg
IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rKzE+IGFycmF5KHNoYXBlLCAxMCwgc3RvcmFnZSk7CiAg
ICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMSwgMCk7CiAgICBtYWtlSW50ZXJsYWNlZEFy
cmF5KGFycmF5LCBhMiwgMSk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMywgMik7
CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNCwgMyk7CiAgICBtYWtlSW50ZXJsYWNl
ZEFycmF5KGFycmF5LCBhNSwgNCk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNiwg
NSk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNywgNik7CiAgICBtYWtlSW50ZXJs
YWNlZEFycmF5KGFycmF5LCBhOCwgNyk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBh
OSwgOCk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMTAsIDkpOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgaW50ZXJsYWNlQXJyYXlzKGNvbnN0
IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNoYXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFu
az4mIGExLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5cGUs
Tl9yYW5rPiYgYTMsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNCwKICAgIEFycmF5PFRfbnVt
dHlwZSxOX3Jhbms+JiBhNSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE2LAogICAgQXJyYXk8
VF9udW10eXBlLE5fcmFuaz4mIGE3LCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTgsCiAgICBB
cnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTksIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMTAs
CiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTExKQp7CiAgICBHZW5lcmFsQXJyYXlTdG9y
YWdlPE5fcmFuaysxPiBzdG9yYWdlOwogICAgQXJyYXk8VF9udW10eXBlLCBOX3JhbmsrMT4gYXJy
YXkoc2hhcGUsIDExLCBzdG9yYWdlKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEx
LCAwKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEyLCAxKTsKICAgIG1ha2VJbnRl
cmxhY2VkQXJyYXkoYXJyYXksIGEzLCAyKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXks
IGE0LCAzKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE1LCA0KTsKICAgIG1ha2VJ
bnRlcmxhY2VkQXJyYXkoYXJyYXksIGE2LCA1KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJy
YXksIGE3LCA2KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE4LCA3KTsKICAgIG1h
a2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE5LCA4KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXko
YXJyYXksIGExMCwgOSk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMTEsIDEwKTsK
fQoKIAogCiAKCiAKIAoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lk
IGFsbG9jYXRlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNoYXBlLAogICAg
QXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTIp
CnsKCgoKICAgIGExLnJlc2l6ZShzaGFwZSk7CiAgICBhMi5yZXNpemUoc2hhcGUpOwoKfQoKdGVt
cGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGFsbG9jYXRlQXJyYXlzKGNv
bnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNoYXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5f
cmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5
cGUsTl9yYW5rPiYgYTMpCnsKCgoKICAgIGExLnJlc2l6ZShzaGFwZSk7CiAgICBhMi5yZXNpemUo
c2hhcGUpOwogICAgYTMucmVzaXplKHNoYXBlKTsKCn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZSwgaW50IE5fcmFuaz4Kdm9pZCBhbGxvY2F0ZUFycmF5cyhjb25zdCBUaW55VmVjdG9yPGludCxO
X3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMSwgQXJyYXk8VF9u
dW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEzLCBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgYTQpCnsKCgoKICAgIGExLnJlc2l6ZShzaGFwZSk7CiAgICBh
Mi5yZXNpemUoc2hhcGUpOwogICAgYTMucmVzaXplKHNoYXBlKTsKICAgIGE0LnJlc2l6ZShzaGFw
ZSk7Cgp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgYWxsb2Nh
dGVBcnJheXMoY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgc2hhcGUsCiAgICBBcnJheTxU
X251bXR5cGUsTl9yYW5rPiYgYTEsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMiwKICAgIEFy
cmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE0LAog
ICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE1KQp7CgoKCiAgICBhMS5yZXNpemUoc2hhcGUp
OwogICAgYTIucmVzaXplKHNoYXBlKTsKICAgIGEzLnJlc2l6ZShzaGFwZSk7CiAgICBhNC5yZXNp
emUoc2hhcGUpOwogICAgYTUucmVzaXplKHNoYXBlKTsKCn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVt
dHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBhbGxvY2F0ZUFycmF5cyhjb25zdCBUaW55VmVjdG9yPGlu
dCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMSwgQXJyYXk8
VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEzLCBB
cnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYg
YTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNikKewoKCgogICAgYTEucmVzaXplKHNoYXBl
KTsKICAgIGEyLnJlc2l6ZShzaGFwZSk7CiAgICBhMy5yZXNpemUoc2hhcGUpOwogICAgYTQucmVz
aXplKHNoYXBlKTsKICAgIGE1LnJlc2l6ZShzaGFwZSk7CiAgICBhNi5yZXNpemUoc2hhcGUpOwoK
fQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGFsbG9jYXRlQXJy
YXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNoYXBlLAogICAgQXJyYXk8VF9udW10
eXBlLE5fcmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTIsCiAgICBBcnJheTxU
X251bXR5cGUsTl9yYW5rPiYgYTMsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNCwKICAgIEFy
cmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE2LAog
ICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE3KQp7CgoKCiAgICBhMS5yZXNpemUoc2hhcGUp
OwogICAgYTIucmVzaXplKHNoYXBlKTsKICAgIGEzLnJlc2l6ZShzaGFwZSk7CiAgICBhNC5yZXNp
emUoc2hhcGUpOwogICAgYTUucmVzaXplKHNoYXBlKTsKICAgIGE2LnJlc2l6ZShzaGFwZSk7CiAg
ICBhNy5yZXNpemUoc2hhcGUpOwoKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9y
YW5rPgp2b2lkIGFsbG9jYXRlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNo
YXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9y
YW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTMsIEFycmF5PFRfbnVtdHlw
ZSxOX3Jhbms+JiBhNCwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNSwgQXJyYXk8VF9u
dW10eXBlLE5fcmFuaz4mIGE2LAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE3LCBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgYTgpCnsKCgoKICAgIGExLnJlc2l6ZShzaGFwZSk7CiAgICBh
Mi5yZXNpemUoc2hhcGUpOwogICAgYTMucmVzaXplKHNoYXBlKTsKICAgIGE0LnJlc2l6ZShzaGFw
ZSk7CiAgICBhNS5yZXNpemUoc2hhcGUpOwogICAgYTYucmVzaXplKHNoYXBlKTsKICAgIGE3LnJl
c2l6ZShzaGFwZSk7CiAgICBhOC5yZXNpemUoc2hhcGUpOwoKfQoKdGVtcGxhdGU8Y2xhc3MgVF9u
dW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGFsbG9jYXRlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8
aW50LE5fcmFuaz4mIHNoYXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTMs
IEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNCwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+
JiBhNSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE2LAogICAgQXJyYXk8VF9udW10eXBlLE5f
cmFuaz4mIGE3LCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTgsCiAgICBBcnJheTxUX251bXR5
cGUsTl9yYW5rPiYgYTkpCnsKCgoKICAgIGExLnJlc2l6ZShzaGFwZSk7CiAgICBhMi5yZXNpemUo
c2hhcGUpOwogICAgYTMucmVzaXplKHNoYXBlKTsKICAgIGE0LnJlc2l6ZShzaGFwZSk7CiAgICBh
NS5yZXNpemUoc2hhcGUpOwogICAgYTYucmVzaXplKHNoYXBlKTsKICAgIGE3LnJlc2l6ZShzaGFw
ZSk7CiAgICBhOC5yZXNpemUoc2hhcGUpOwogICAgYTkucmVzaXplKHNoYXBlKTsKCn0KCnRlbXBs
YXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBhbGxvY2F0ZUFycmF5cyhjb25z
dCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jh
bms+JiBhMSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8VF9udW10eXBl
LE5fcmFuaz4mIGEzLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBBcnJheTxUX251
bXR5cGUsTl9yYW5rPiYgYTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNiwKICAgIEFycmF5
PFRfbnVtdHlwZSxOX3Jhbms+JiBhNywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE4LAogICAg
QXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE5LCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTEw
KQp7CgoKCiAgICBhMS5yZXNpemUoc2hhcGUpOwogICAgYTIucmVzaXplKHNoYXBlKTsKICAgIGEz
LnJlc2l6ZShzaGFwZSk7CiAgICBhNC5yZXNpemUoc2hhcGUpOwogICAgYTUucmVzaXplKHNoYXBl
KTsKICAgIGE2LnJlc2l6ZShzaGFwZSk7CiAgICBhNy5yZXNpemUoc2hhcGUpOwogICAgYTgucmVz
aXplKHNoYXBlKTsKICAgIGE5LnJlc2l6ZShzaGFwZSk7CiAgICBhMTAucmVzaXplKHNoYXBlKTsK
Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBhbGxvY2F0ZUFy
cmF5cyhjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVt
dHlwZSxOX3Jhbms+JiBhMSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8
VF9udW10eXBlLE5fcmFuaz4mIGEzLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBB
cnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNiwK
ICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4m
IGE4LAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE5LCBBcnJheTxUX251bXR5cGUsTl9y
YW5rPiYgYTEwLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExMSkKewoKCgogICAgYTEu
cmVzaXplKHNoYXBlKTsKICAgIGEyLnJlc2l6ZShzaGFwZSk7CiAgICBhMy5yZXNpemUoc2hhcGUp
OwogICAgYTQucmVzaXplKHNoYXBlKTsKICAgIGE1LnJlc2l6ZShzaGFwZSk7CiAgICBhNi5yZXNp
emUoc2hhcGUpOwogICAgYTcucmVzaXplKHNoYXBlKTsKICAgIGE4LnJlc2l6ZShzaGFwZSk7CiAg
ICBhOS5yZXNpemUoc2hhcGUpOwogICAgYTEwLnJlc2l6ZShzaGFwZSk7CiAgICBhMTEucmVzaXpl
KHNoYXBlKTsKCn0KCiAKCiAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgpB
cnJheTxUX251bXR5cGUsTl9yYW5rPjo6QXJyYXkoY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5r
LTE+JiBzaGFwZSwKICAgIGludCBsYXN0RXh0ZW50LCBjb25zdCBHZW5lcmFsQXJyYXlTdG9yYWdl
PE5fcmFuaz4mIHN0b3JhZ2UpCiAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCnsKICAgICAKICAgICAK
ICAgICAKCiAgICBpZiAob3JkZXJpbmcoMCkgPT0gMCkKICAgIHsKICAgICAgICAgCiAgICAgICAg
bGVuZ3RoX1swXSA9IGxhc3RFeHRlbnQ7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgwLDApOwog
ICAgICAgIGZvciAoaW50IGk9MTsgaSA8IE5fcmFuazsgKytpKQogICAgICAgICAgICBsZW5ndGhf
W2ldID0gc2hhcGVbaS0xXTsKICAgIH0KICAgIGVsc2UgaWYgKG9yZGVyaW5nKDApID09IE5fcmFu
ay0xKQogICAgewogICAgICAgICAKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBOX3JhbmstMTsg
KytpKQogICAgICAgICAgICBsZW5ndGhfW2ldID0gc2hhcGVbaV07CiAgICAgICAgbGVuZ3RoX1tO
X3JhbmstMV0gPSBsYXN0RXh0ZW50OwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoTl9yYW5rLTEs
IDApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgIDsKICAgIH0KCiAgICBzZXR1cFN0b3JhZ2Uo
Tl9yYW5rLTEpOwp9CgogCiMgNTQ3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovYXJyYXkvaW50ZXJsYWNlLmNjIgoKCn0gCgoKCiMgMjQ4NiAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L3Jlc2l6ZS5jYyIgMQoKI2RlZmluZSBCWl9B
UlJBWVJFU0laRV9DQwoKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L21pbm1heC5oIiAxCgojZGVmaW5lIEJaX01JTk1BWF9ICgoKCm5hbWVzcGFjZSAgYmxp
dHogIHsgCgogCgoKCgpuYW1lc3BhY2UgIG1pbm1heCAgeyAKCnRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBUMj4KdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFQxICwgVDIgPjo6VF9wcm9tb3RlICBt
aW4oY29uc3QgVDEmIGEsIGNvbnN0IFQyJiBiKQp7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBwcm9t
b3RlX3RyYWl0PCBUMSAsIFQyID46OlRfcHJvbW90ZSAgVF9wcm9tb3RlOwoKICAgIGlmIChhIDw9
IGIpCiAgICAgICAgcmV0dXJuIFRfcHJvbW90ZShhKTsKICAgIGVsc2UKICAgICAgICByZXR1cm4g
VF9wcm9tb3RlKGIpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+CnR5cGVuYW1lICBw
cm9tb3RlX3RyYWl0PCBUMSAsIFQyID46OlRfcHJvbW90ZSAgbWF4KGNvbnN0IFQxJiBhLCBjb25z
dCBUMiYgYikKewogICAgdHlwZWRlZiB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgVDEgLCBUMiA+
OjpUX3Byb21vdGUgIFRfcHJvbW90ZTsKCiAgICBpZiAoYSA+PSBiKQogICAgICAgIHJldHVybiBU
X3Byb21vdGUoYSk7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIFRfcHJvbW90ZShiKTsKfQoKfSAK
Cn0gCgoKIyA4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkv
cmVzaXplLmNjIiAyCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFRfbnVt
dHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz46OnJlc2l6ZShp
bnQgbGVuZ3RoMCkKewogICAgIDsKICAgICA7CgogICAgaWYgKGxlbmd0aDAgIT0gbGVuZ3RoX1tm
aXJzdFJhbmtdKQogICAgewogICAgICAgIGxlbmd0aF9bZmlyc3RSYW5rXSA9IGxlbmd0aDA7CiAg
ICAgICAgc2V0dXBTdG9yYWdlKDApOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUs
IGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoaW50IGV4
dGVudDAsIGludCBleHRlbnQxKQp7CiAgICAgOwogICAgIDsKCiAgICBpZiAoKGV4dGVudDAgIT0g
bGVuZ3RoX1swXSkgfHwgKGV4dGVudDEgIT0gbGVuZ3RoX1sxXSkpCiAgICB7CiAgICAgICAgbGVu
Z3RoX1swXSA9IGV4dGVudDA7CiAgICAgICAgbGVuZ3RoX1sxXSA9IGV4dGVudDE7CiAgICAgICAg
c2V0dXBTdG9yYWdlKDEpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBO
X3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoaW50IGV4dGVudDAs
IGludCBleHRlbnQxLAogICAgaW50IGV4dGVudDIpCnsKICAgICA7CiAgICAgOwoKICAgIGlmICgo
ZXh0ZW50MCAhPSBsZW5ndGhfWzBdKSB8fCAoZXh0ZW50MSAhPSBsZW5ndGhfWzFdKQogICAgICAg
IHx8IChleHRlbnQyICE9IGxlbmd0aF9bMl0pKQogICAgewogICAgICAgIGxlbmd0aF9bMF0gPSBl
eHRlbnQwOwogICAgICAgIGxlbmd0aF9bMV0gPSBleHRlbnQxOwogICAgICAgIGxlbmd0aF9bMl0g
PSBleHRlbnQyOwogICAgICAgIHNldHVwU3RvcmFnZSgyKTsKICAgIH0KfQoKCnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz46
OnJlc2l6ZShpbnQgZXh0ZW50MCwgaW50IGV4dGVudDEsCiAgICBpbnQgZXh0ZW50MiwgaW50IGV4
dGVudDMpCnsKICAgICA7CgogICAgIDsKCiAgICBpZiAoKGV4dGVudDAgIT0gbGVuZ3RoX1swXSkg
fHwgKGV4dGVudDEgIT0gbGVuZ3RoX1sxXSkKICAgICAgICB8fCAoZXh0ZW50MiAhPSBsZW5ndGhf
WzJdKSB8fCAoZXh0ZW50MyAhPSBsZW5ndGhfWzNdKSkKICAgIHsKICAgICAgICBsZW5ndGhfWzBd
ID0gZXh0ZW50MDsKICAgICAgICBsZW5ndGhfWzFdID0gZXh0ZW50MTsKICAgICAgICBsZW5ndGhf
WzJdID0gZXh0ZW50MjsKICAgICAgICBsZW5ndGhfWzNdID0gZXh0ZW50MzsKICAgICAgICBzZXR1
cFN0b3JhZ2UoMyk7CiAgICB9Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFu
az4Kdm9pZCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz46OnJlc2l6ZShpbnQgZXh0ZW50MCwgaW50
IGV4dGVudDEsCiAgICBpbnQgZXh0ZW50MiwgaW50IGV4dGVudDMsIGludCBleHRlbnQ0KQp7CiAg
ICAgOwoKICAgICA7CgogICAgaWYgKChleHRlbnQwICE9IGxlbmd0aF9bMF0pIHx8IChleHRlbnQx
ICE9IGxlbmd0aF9bMV0pCiAgICAgICAgfHwgKGV4dGVudDIgIT0gbGVuZ3RoX1syXSkgfHwgKGV4
dGVudDMgIT0gbGVuZ3RoX1szXSkKICAgICAgICB8fCAoZXh0ZW50NCAhPSBsZW5ndGhfWzRdKSkK
ICAgIHsKICAgICAgICBsZW5ndGhfWzBdID0gZXh0ZW50MDsKICAgICAgICBsZW5ndGhfWzFdID0g
ZXh0ZW50MTsKICAgICAgICBsZW5ndGhfWzJdID0gZXh0ZW50MjsKICAgICAgICBsZW5ndGhfWzNd
ID0gZXh0ZW50MzsKICAgICAgICBsZW5ndGhfWzRdID0gZXh0ZW50NDsKICAgICAgICBzZXR1cFN0
b3JhZ2UoNCk7CiAgICB9Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4K
dm9pZCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz46OnJlc2l6ZShpbnQgZXh0ZW50MCwgaW50IGV4
dGVudDEsCiAgICBpbnQgZXh0ZW50MiwgaW50IGV4dGVudDMsIGludCBleHRlbnQ0LCBpbnQgZXh0
ZW50NSkKewogICAgIDsKCiAgICAgOwoKICAgIGlmICgoZXh0ZW50MCAhPSBsZW5ndGhfWzBdKSB8
fCAoZXh0ZW50MSAhPSBsZW5ndGhfWzFdKQogICAgICAgIHx8IChleHRlbnQyICE9IGxlbmd0aF9b
Ml0pIHx8IChleHRlbnQzICE9IGxlbmd0aF9bM10pCiAgICAgICAgfHwgKGV4dGVudDQgIT0gbGVu
Z3RoX1s0XSkgfHwgKGV4dGVudDUgIT0gbGVuZ3RoX1s1XSkpCiAgICB7CiAgICAgICAgbGVuZ3Ro
X1swXSA9IGV4dGVudDA7CiAgICAgICAgbGVuZ3RoX1sxXSA9IGV4dGVudDE7CiAgICAgICAgbGVu
Z3RoX1syXSA9IGV4dGVudDI7CiAgICAgICAgbGVuZ3RoX1szXSA9IGV4dGVudDM7CiAgICAgICAg
bGVuZ3RoX1s0XSA9IGV4dGVudDQ7CiAgICAgICAgbGVuZ3RoX1s1XSA9IGV4dGVudDU7CiAgICAg
ICAgc2V0dXBTdG9yYWdlKDUpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGlu
dCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoaW50IGV4dGVu
dDAsIGludCBleHRlbnQxLAogICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQgZXh0ZW50
NCwgaW50IGV4dGVudDUsCiAgICBpbnQgZXh0ZW50NikKewogICAgIDsKCgogICAgIDsKCiAgICBp
ZiAoKGV4dGVudDAgIT0gbGVuZ3RoX1swXSkgfHwgKGV4dGVudDEgIT0gbGVuZ3RoX1sxXSkKICAg
ICAgICB8fCAoZXh0ZW50MiAhPSBsZW5ndGhfWzJdKSB8fCAoZXh0ZW50MyAhPSBsZW5ndGhfWzNd
KQogICAgICAgIHx8IChleHRlbnQ0ICE9IGxlbmd0aF9bNF0pIHx8IChleHRlbnQ1ICE9IGxlbmd0
aF9bNV0pCiAgICAgICAgfHwgKGV4dGVudDYgIT0gbGVuZ3RoX1s2XSkpCiAgICB7CiAgICAgICAg
bGVuZ3RoX1swXSA9IGV4dGVudDA7CiAgICAgICAgbGVuZ3RoX1sxXSA9IGV4dGVudDE7CiAgICAg
ICAgbGVuZ3RoX1syXSA9IGV4dGVudDI7CiAgICAgICAgbGVuZ3RoX1szXSA9IGV4dGVudDM7CiAg
ICAgICAgbGVuZ3RoX1s0XSA9IGV4dGVudDQ7CiAgICAgICAgbGVuZ3RoX1s1XSA9IGV4dGVudDU7
CiAgICAgICAgbGVuZ3RoX1s2XSA9IGV4dGVudDY7CiAgICAgICAgc2V0dXBTdG9yYWdlKDYpOwog
ICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgQXJyYXk8
VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoaW50IGV4dGVudDAsIGludCBleHRlbnQxLAogICAg
aW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQgZXh0ZW50NCwgaW50IGV4dGVudDUsCiAgICBp
bnQgZXh0ZW50NiwgaW50IGV4dGVudDcpCnsKICAgICA7CgoKICAgICA7CgogICAgaWYgKChleHRl
bnQwICE9IGxlbmd0aF9bMF0pIHx8IChleHRlbnQxICE9IGxlbmd0aF9bMV0pCiAgICAgICAgfHwg
KGV4dGVudDIgIT0gbGVuZ3RoX1syXSkgfHwgKGV4dGVudDMgIT0gbGVuZ3RoX1szXSkKICAgICAg
ICB8fCAoZXh0ZW50NCAhPSBsZW5ndGhfWzRdKSB8fCAoZXh0ZW50NSAhPSBsZW5ndGhfWzVdKQog
ICAgICAgIHx8IChleHRlbnQ2ICE9IGxlbmd0aF9bNl0pIHx8IChleHRlbnQ3ICE9IGxlbmd0aF9b
N10pKQogICAgewogICAgICAgIGxlbmd0aF9bMF0gPSBleHRlbnQwOwogICAgICAgIGxlbmd0aF9b
MV0gPSBleHRlbnQxOwogICAgICAgIGxlbmd0aF9bMl0gPSBleHRlbnQyOwogICAgICAgIGxlbmd0
aF9bM10gPSBleHRlbnQzOwogICAgICAgIGxlbmd0aF9bNF0gPSBleHRlbnQ0OwogICAgICAgIGxl
bmd0aF9bNV0gPSBleHRlbnQ1OwogICAgICAgIGxlbmd0aF9bNl0gPSBleHRlbnQ2OwogICAgICAg
IGxlbmd0aF9bN10gPSBleHRlbnQ3OwogICAgICAgIHNldHVwU3RvcmFnZSg3KTsKICAgIH0KfQoK
dGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rPjo6cmVzaXplKGludCBleHRlbnQwLCBpbnQgZXh0ZW50MSwKICAgIGludCBleHRl
bnQyLCBpbnQgZXh0ZW50MywgaW50IGV4dGVudDQsIGludCBleHRlbnQ1LAogICAgaW50IGV4dGVu
dDYsIGludCBleHRlbnQ3LCBpbnQgZXh0ZW50OCkKewogICAgIDsKCgogICAgIDsKCiAgICBpZiAo
KGV4dGVudDAgIT0gbGVuZ3RoX1swXSkgfHwgKGV4dGVudDEgIT0gbGVuZ3RoX1sxXSkKICAgICAg
ICB8fCAoZXh0ZW50MiAhPSBsZW5ndGhfWzJdKSB8fCAoZXh0ZW50MyAhPSBsZW5ndGhfWzNdKQog
ICAgICAgIHx8IChleHRlbnQ0ICE9IGxlbmd0aF9bNF0pIHx8IChleHRlbnQ1ICE9IGxlbmd0aF9b
NV0pCiAgICAgICAgfHwgKGV4dGVudDYgIT0gbGVuZ3RoX1s2XSkgfHwgKGV4dGVudDcgIT0gbGVu
Z3RoX1s3XSkKICAgICAgICB8fCAoZXh0ZW50OCAhPSBsZW5ndGhfWzhdKSkKICAgIHsKICAgICAg
ICBsZW5ndGhfWzBdID0gZXh0ZW50MDsKICAgICAgICBsZW5ndGhfWzFdID0gZXh0ZW50MTsKICAg
ICAgICBsZW5ndGhfWzJdID0gZXh0ZW50MjsKICAgICAgICBsZW5ndGhfWzNdID0gZXh0ZW50MzsK
ICAgICAgICBsZW5ndGhfWzRdID0gZXh0ZW50NDsKICAgICAgICBsZW5ndGhfWzVdID0gZXh0ZW50
NTsKICAgICAgICBsZW5ndGhfWzZdID0gZXh0ZW50NjsKICAgICAgICBsZW5ndGhfWzddID0gZXh0
ZW50NzsKICAgICAgICBsZW5ndGhfWzhdID0gZXh0ZW50ODsKICAgICAgICBzZXR1cFN0b3JhZ2Uo
OCk7CiAgICB9Cn0KCgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQg
QXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoaW50IGV4dGVudDAsIGludCBleHRlbnQx
LAogICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQgZXh0ZW50NCwgaW50IGV4dGVudDUs
CiAgICBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcsIGludCBleHRlbnQ4LCBpbnQgZXh0ZW50OSkK
ewogICAgIDsKCgoKICAgICA7CgogICAgaWYgKChleHRlbnQwICE9IGxlbmd0aF9bMF0pIHx8IChl
eHRlbnQxICE9IGxlbmd0aF9bMV0pCiAgICAgICAgfHwgKGV4dGVudDIgIT0gbGVuZ3RoX1syXSkg
fHwgKGV4dGVudDMgIT0gbGVuZ3RoX1szXSkKICAgICAgICB8fCAoZXh0ZW50NCAhPSBsZW5ndGhf
WzRdKSB8fCAoZXh0ZW50NSAhPSBsZW5ndGhfWzVdKQogICAgICAgIHx8IChleHRlbnQ2ICE9IGxl
bmd0aF9bNl0pIHx8IChleHRlbnQ3ICE9IGxlbmd0aF9bN10pCiAgICAgICAgfHwgKGV4dGVudDgg
IT0gbGVuZ3RoX1s4XSkgfHwgKGV4dGVudDkgIT0gbGVuZ3RoX1s5XSkpCiAgICB7CiAgICAgICAg
bGVuZ3RoX1swXSA9IGV4dGVudDA7CiAgICAgICAgbGVuZ3RoX1sxXSA9IGV4dGVudDE7CiAgICAg
ICAgbGVuZ3RoX1syXSA9IGV4dGVudDI7CiAgICAgICAgbGVuZ3RoX1szXSA9IGV4dGVudDM7CiAg
ICAgICAgbGVuZ3RoX1s0XSA9IGV4dGVudDQ7CiAgICAgICAgbGVuZ3RoX1s1XSA9IGV4dGVudDU7
CiAgICAgICAgbGVuZ3RoX1s2XSA9IGV4dGVudDY7CiAgICAgICAgbGVuZ3RoX1s3XSA9IGV4dGVu
dDc7CiAgICAgICAgbGVuZ3RoX1s4XSA9IGV4dGVudDg7CiAgICAgICAgbGVuZ3RoX1s5XSA9IGV4
dGVudDk7CiAgICAgICAgc2V0dXBTdG9yYWdlKDkpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNp
emUoaW50IGV4dGVudDAsIGludCBleHRlbnQxLAogICAgaW50IGV4dGVudDIsIGludCBleHRlbnQz
LCBpbnQgZXh0ZW50NCwgaW50IGV4dGVudDUsCiAgICBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcs
IGludCBleHRlbnQ4LCBpbnQgZXh0ZW50OSwKICAgIGludCBleHRlbnQxMCkKewogICAgIDsKCgoK
ICAgICA7CgogICAgaWYgKChleHRlbnQwICE9IGxlbmd0aF9bMF0pIHx8IChleHRlbnQxICE9IGxl
bmd0aF9bMV0pCiAgICAgICAgfHwgKGV4dGVudDIgIT0gbGVuZ3RoX1syXSkgfHwgKGV4dGVudDMg
IT0gbGVuZ3RoX1szXSkKICAgICAgICB8fCAoZXh0ZW50NCAhPSBsZW5ndGhfWzRdKSB8fCAoZXh0
ZW50NSAhPSBsZW5ndGhfWzVdKQogICAgICAgIHx8IChleHRlbnQ2ICE9IGxlbmd0aF9bNl0pIHx8
IChleHRlbnQ3ICE9IGxlbmd0aF9bN10pCiAgICAgICAgfHwgKGV4dGVudDggIT0gbGVuZ3RoX1s4
XSkgfHwgKGV4dGVudDkgIT0gbGVuZ3RoX1s5XSkKICAgICAgICB8fCAoZXh0ZW50MTAgIT0gbGVu
Z3RoX1sxMF0pKQogICAgewogICAgICAgIGxlbmd0aF9bMF0gPSBleHRlbnQwOwogICAgICAgIGxl
bmd0aF9bMV0gPSBleHRlbnQxOwogICAgICAgIGxlbmd0aF9bMl0gPSBleHRlbnQyOwogICAgICAg
IGxlbmd0aF9bM10gPSBleHRlbnQzOwogICAgICAgIGxlbmd0aF9bNF0gPSBleHRlbnQ0OwogICAg
ICAgIGxlbmd0aF9bNV0gPSBleHRlbnQ1OwogICAgICAgIGxlbmd0aF9bNl0gPSBleHRlbnQ2Owog
ICAgICAgIGxlbmd0aF9bN10gPSBleHRlbnQ3OwogICAgICAgIGxlbmd0aF9bOF0gPSBleHRlbnQ4
OwogICAgICAgIGxlbmd0aF9bOV0gPSBleHRlbnQ5OwogICAgICAgIGxlbmd0aF9bMTBdID0gZXh0
ZW50MTA7CiAgICAgICAgc2V0dXBTdG9yYWdlKDEwKTsKICAgIH0KfQoKdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6cmVz
aXplQW5kUHJlc2VydmUoaW50IGxlbmd0aDApCnsKICAgICA7CiAgICAgOwoKICAgIGlmIChsZW5n
dGgwICE9IGxlbmd0aF9bZmlyc3RSYW5rXSkKICAgIHsKIyAyOTEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9yZXNpemUuY2MiCgogICAgICAgIFRfYXJyYXkg
QihiYXNlKCksIGJsaXR6Ojogc2hhcGUgIChsZW5ndGgwKSwgc3RvcmFnZV8pOyAgIAoKICAgICAg
ICBpZiAobnVtRWxlbWVudHMoKSkKICAgICAgICB7CiAgICAgICAgICAgIFJhbmdlIG92ZXJsYXAw
ID0gUmFuZ2UoZnJvbVN0YXJ0LCBtaW5tYXg6Om1pbihCLnVib3VuZCgwKSwgCiAgICAgICAgICAg
ICAgdWJvdW5kKDApKSk7CiAgICAgICAgICAgIEIob3ZlcmxhcDApID0gKCp0aGlzKShvdmVybGFw
MCk7CiAgICAgICAgfQogICAgICAgIHJlZmVyZW5jZShCKTsKICAgIH0KfQoKdGVtcGxhdGU8Y2xh
c3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6
cmVzaXplQW5kUHJlc2VydmUoaW50IGxlbmd0aDAsIGludCBsZW5ndGgxKQp7CiAgICAgOwogICAg
IDsKCiAgICBpZiAoKGxlbmd0aDAgIT0gbGVuZ3RoX1swXSkgfHwgKGxlbmd0aDEgIT0gbGVuZ3Ro
X1sxXSkpCiAgICB7CiAgICAgICAgVF9hcnJheSBCKGJhc2UoKSwgYmxpdHo6OiBzaGFwZSAgKGxl
bmd0aDAsIGxlbmd0aDEpLCBzdG9yYWdlXyk7CgogICAgICAgIGlmIChudW1FbGVtZW50cygpKQog
ICAgICAgIHsKICAgICAgICAgICAgUmFuZ2Ugb3ZlcmxhcDAgPSBSYW5nZShmcm9tU3RhcnQsIG1p
bm1heDo6bWluKEIudWJvdW5kKDApLCAKICAgICAgICAgICAgICAgIHVib3VuZCgwKSkpOwogICAg
ICAgICAgICBSYW5nZSBvdmVybGFwMSA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51
Ym91bmQoMSksIAogICAgICAgICAgICAgICAgdWJvdW5kKDEpKSk7CiAgICAgICAgICAgIEIob3Zl
cmxhcDAsIG92ZXJsYXAxKSA9ICgqdGhpcykob3ZlcmxhcDAsIG92ZXJsYXAxKTsKICAgICAgICB9
CiAgICAgICAgcmVmZXJlbmNlKEIpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUs
IGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemVBbmRQcmVz
ZXJ2ZShpbnQgbGVuZ3RoMCwgaW50IGxlbmd0aDEsCiAgICBpbnQgbGVuZ3RoMikKewogICAgIDsK
ICAgICA7CgogICAgaWYgKChsZW5ndGgwICE9IGxlbmd0aF9bMF0pIHx8IChsZW5ndGgxICE9IGxl
bmd0aF9bMV0pCiAgICAgICAgfHwgKGxlbmd0aDIgIT0gbGVuZ3RoX1syXSkpCiAgICB7CiAgICAg
ICAgVF9hcnJheSBCKGJhc2UoKSwgYmxpdHo6OiBzaGFwZSAgKGxlbmd0aDAsIGxlbmd0aDEsIGxl
bmd0aDIpLCAKICAgICAgICAgICAgc3RvcmFnZV8pOwogICAgICAgIGlmIChudW1FbGVtZW50cygp
KQogICAgICAgIHsKICAgICAgICAgICAgUmFuZ2Ugb3ZlcmxhcDAgPSBSYW5nZShmcm9tU3RhcnQs
IG1pbm1heDo6bWluKEIudWJvdW5kKDApLCAKICAgICAgICAgICAgICAgIHVib3VuZCgwKSkpOwog
ICAgICAgICAgICBSYW5nZSBvdmVybGFwMSA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4o
Qi51Ym91bmQoMSksIAogICAgICAgICAgICAgICAgdWJvdW5kKDEpKSk7CiAgICAgICAgICAgIFJh
bmdlIG92ZXJsYXAyID0gUmFuZ2UoZnJvbVN0YXJ0LCBtaW5tYXg6Om1pbihCLnVib3VuZCgyKSwg
CiAgICAgICAgICAgICAgICB1Ym91bmQoMikpKTsKICAgICAgICAgICAgQihvdmVybGFwMCwgb3Zl
cmxhcDEsIG92ZXJsYXAyKSA9ICgqdGhpcykob3ZlcmxhcDAsIG92ZXJsYXAxLCAKICAgICAgICAg
ICAgICAgIG92ZXJsYXAyKTsKICAgICAgICB9CiAgICAgICAgcmVmZXJlbmNlKEIpOwogICAgfQp9
Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10
eXBlLCBOX3Jhbms+OjpyZXNpemVBbmRQcmVzZXJ2ZShpbnQgbGVuZ3RoMCwgaW50IGxlbmd0aDEs
CiAgICBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMpCnsKICAgICA7CgogICAgIDsKCiAgICBpZiAo
KGxlbmd0aDAgIT0gbGVuZ3RoX1swXSkgfHwgKGxlbmd0aDEgIT0gbGVuZ3RoX1sxXSkKICAgICAg
ICB8fCAobGVuZ3RoMiAhPSBsZW5ndGhfWzJdKSB8fCAobGVuZ3RoMyAhPSBsZW5ndGhfWzNdKSkK
ICAgIHsKICAgICAgICBUX2FycmF5IEIoYmFzZSgpLCBibGl0ejo6IHNoYXBlICAobGVuZ3RoMCwg
bGVuZ3RoMSwKICAgICAgICAgICAgbGVuZ3RoMiwgbGVuZ3RoMyksIHN0b3JhZ2VfKTsKCiAgICAg
ICAgaWYgKG51bUVsZW1lbnRzKCkpCiAgICAgICAgewogICAgICAgICAgICBSYW5nZSBvdmVybGFw
MCA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQoMCksIHVib3VuZCgwKSkp
OwogICAgICAgICAgICBSYW5nZSBvdmVybGFwMSA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4Ojpt
aW4oQi51Ym91bmQoMSksIHVib3VuZCgxKSkpOwogICAgICAgICAgICBSYW5nZSBvdmVybGFwMiA9
IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQoMiksIHVib3VuZCgyKSkpOwog
ICAgICAgICAgICBSYW5nZSBvdmVybGFwMyA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4o
Qi51Ym91bmQoMyksIHVib3VuZCgzKSkpOwogICAgICAgICAgICBCKG92ZXJsYXAwLCBvdmVybGFw
MSwgb3ZlcmxhcDIsIG92ZXJsYXAzKSA9ICgqdGhpcykob3ZlcmxhcDAsCiAgICAgICAgICAgICAg
ICBvdmVybGFwMSwgb3ZlcmxhcDIsIG92ZXJsYXAzKTsKICAgICAgICB9CiAgICAgICAgcmVmZXJl
bmNlKEIpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZv
aWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemVBbmRQcmVzZXJ2ZShpbnQgbGVuZ3Ro
MCwgaW50IGxlbmd0aDEsCiAgICBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMsIGludCBsZW5ndGg0
KQp7CiAgICAgOwoKICAgICA7CgogICAgaWYgKChsZW5ndGgwICE9IGxlbmd0aF9bMF0pIHx8IChs
ZW5ndGgxICE9IGxlbmd0aF9bMV0pCiAgICAgICAgfHwgKGxlbmd0aDIgIT0gbGVuZ3RoX1syXSkg
fHwgKGxlbmd0aDMgIT0gbGVuZ3RoX1szXSkKICAgICAgICB8fCAobGVuZ3RoNCAhPSBsZW5ndGhf
WzRdKSkKICAgIHsKICAgICAgICBUX2FycmF5IEIoYmFzZSgpLCBibGl0ejo6IHNoYXBlICAobGVu
Z3RoMCwgbGVuZ3RoMSwgCiAgICAgICAgICAgIGxlbmd0aDIsIGxlbmd0aDMsIGxlbmd0aDQpLCBz
dG9yYWdlXyk7CgogICAgICAgIGlmIChudW1FbGVtZW50cygpKQogICAgICAgIHsKICAgICAgICAg
ICAgUmFuZ2Ugb3ZlcmxhcDAgPSBSYW5nZShmcm9tU3RhcnQsIG1pbm1heDo6bWluKEIudWJvdW5k
KDApLCB1Ym91bmQoMCkpKTsKICAgICAgICAgICAgUmFuZ2Ugb3ZlcmxhcDEgPSBSYW5nZShmcm9t
U3RhcnQsIG1pbm1heDo6bWluKEIudWJvdW5kKDEpLCB1Ym91bmQoMSkpKTsKICAgICAgICAgICAg
UmFuZ2Ugb3ZlcmxhcDIgPSBSYW5nZShmcm9tU3RhcnQsIG1pbm1heDo6bWluKEIudWJvdW5kKDIp
LCB1Ym91bmQoMikpKTsKICAgICAgICAgICAgUmFuZ2Ugb3ZlcmxhcDMgPSBSYW5nZShmcm9tU3Rh
cnQsIG1pbm1heDo6bWluKEIudWJvdW5kKDMpLCB1Ym91bmQoMykpKTsKICAgICAgICAgICAgUmFu
Z2Ugb3ZlcmxhcDQgPSBSYW5nZShmcm9tU3RhcnQsIG1pbm1heDo6bWluKEIudWJvdW5kKDQpLCB1
Ym91bmQoNCkpKTsKICAgICAgICAgICAgQihvdmVybGFwMCwgb3ZlcmxhcDEsIG92ZXJsYXAyLCBv
dmVybGFwMywgb3ZlcmxhcDQpID0gKCp0aGlzKQogICAgICAgICAgICAgICAgKG92ZXJsYXAwLCBv
dmVybGFwMSwgb3ZlcmxhcDIsIG92ZXJsYXAzLCBvdmVybGFwNCk7CiAgICAgICAgfQogICAgICAg
IHJlZmVyZW5jZShCKTsKICAgIH0KfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9y
YW5rPgp2b2lkIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6cmVzaXplQW5kUHJlc2VydmUoaW50
IGxlbmd0aDAsIGludCBsZW5ndGgxLAogICAgaW50IGxlbmd0aDIsIGludCBsZW5ndGgzLCBpbnQg
bGVuZ3RoNCwgaW50IGxlbmd0aDUpCnsKICAgICA7CgogICAgIDsKCiAgICBpZiAoKGxlbmd0aDAg
IT0gbGVuZ3RoX1swXSkgfHwgKGxlbmd0aDEgIT0gbGVuZ3RoX1sxXSkKICAgICAgICB8fCAobGVu
Z3RoMiAhPSBsZW5ndGhfWzJdKSB8fCAobGVuZ3RoMyAhPSBsZW5ndGhfWzNdKQogICAgICAgIHx8
IChsZW5ndGg0ICE9IGxlbmd0aF9bNF0pIHx8IChsZW5ndGg1ICE9IGxlbmd0aF9bNV0pKQogICAg
ewogICAgICAgIFRfYXJyYXkgQihiYXNlKCksIGJsaXR6Ojogc2hhcGUgIChsZW5ndGgwLCBsZW5n
dGgxLCBsZW5ndGgyLCAKICAgICAgICAgICAgbGVuZ3RoMywgbGVuZ3RoNCwgbGVuZ3RoNSksIHN0
b3JhZ2VfKTsKCiAgICAgICAgaWYgKG51bUVsZW1lbnRzKCkpCiAgICAgICAgewogICAgICAgICAg
ICBSYW5nZSBvdmVybGFwMCA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQo
MCksIHVib3VuZCgwKSkpOwogICAgICAgICAgICBSYW5nZSBvdmVybGFwMSA9IFJhbmdlKGZyb21T
dGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQoMSksIHVib3VuZCgxKSkpOwogICAgICAgICAgICBS
YW5nZSBvdmVybGFwMiA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQoMiks
IHVib3VuZCgyKSkpOwogICAgICAgICAgICBSYW5nZSBvdmVybGFwMyA9IFJhbmdlKGZyb21TdGFy
dCwgbWlubWF4OjptaW4oQi51Ym91bmQoMyksIHVib3VuZCgzKSkpOwogICAgICAgICAgICBSYW5n
ZSBvdmVybGFwNCA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQoNCksIHVi
b3VuZCg0KSkpOwogICAgICAgICAgICBSYW5nZSBvdmVybGFwNSA9IFJhbmdlKGZyb21TdGFydCwg
bWlubWF4OjptaW4oQi51Ym91bmQoNSksIHVib3VuZCg1KSkpOwogICAgICAgICAgICBCKG92ZXJs
YXAwLCBvdmVybGFwMSwgb3ZlcmxhcDIsIG92ZXJsYXAzLCBvdmVybGFwNCwgb3ZlcmxhcDUpCiAg
ICAgICAgICAgICAgICA9ICgqdGhpcykob3ZlcmxhcDAsIG92ZXJsYXAxLCBvdmVybGFwMiwgb3Zl
cmxhcDMsIG92ZXJsYXA0LAogICAgICAgICAgICAgICAgb3ZlcmxhcDUpOwogICAgICAgIH0KICAg
ICAgICByZWZlcmVuY2UoQik7CiAgICB9Cn0KCgogCgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUs
IGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoY29uc3Qg
VGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgZXh0ZW50KQp7CiAKIAogCiAKICAgICAgICBsZW5ndGhf
ID0gZXh0ZW50OwogICAgICAgIHNldHVwU3RvcmFnZShOX3JhbmspOwogCn0KCn0gCgoKIyAyNDg3
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAx
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvc2xpY2luZy5j
YyIgMQoKI2RlZmluZSBCWl9BUlJBWVNMSUNJTkdfQ0MKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKIAoKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5
PFBfbnVtdHlwZSwgTl9yYW5rPjo6Y29uc3RydWN0U3ViYXJyYXkoCiAgICBBcnJheTxUX251bXR5
cGUsIE5fcmFuaz4mIGFycmF5LCBjb25zdCBSZWN0RG9tYWluPE5fcmFuaz4mIHN1YmRvbWFpbikK
ewogICAgcmVmZXJlbmNlKGFycmF5KTsKICAgIGZvciAoaW50IGk9MDsgaSA8IE5fcmFuazsgKytp
KQogICAgICAgIHNsaWNlKGksIHN1YmRvbWFpbltpXSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OmNvbnN0cnVj
dFN1YmFycmF5KAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFuZ2UgcjAp
CnsKICAgIHJlZmVyZW5jZShhcnJheSk7CiAgICBzbGljZSgwLCByMCk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46
OmNvbnN0cnVjdFN1YmFycmF5KAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwg
UmFuZ2UgcjAsIFJhbmdlIHIxKQp7CiAgICByZWZlcmVuY2UoYXJyYXkpOwogICAgc2xpY2UoMCwg
cjApOwogICAgc2xpY2UoMSwgcjEpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBO
X3Jhbms+CnZvaWQgQXJyYXk8UF9udW10eXBlLCBOX3Jhbms+Ojpjb25zdHJ1Y3RTdWJhcnJheSgK
ICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLCBSYW5nZSByMSwg
UmFuZ2UgcjIpCnsKICAgIHJlZmVyZW5jZShhcnJheSk7CiAgICBzbGljZSgwLCByMCk7CiAgICBz
bGljZSgxLCByMSk7CiAgICBzbGljZSgyLCByMik7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OmNvbnN0cnVjdFN1
YmFycmF5KAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFuZ2UgcjAsIFJh
bmdlIHIxLCBSYW5nZSByMiwgUmFuZ2UgcjMpCnsKICAgIHJlZmVyZW5jZShhcnJheSk7CiAgICBz
bGljZSgwLCByMCk7CiAgICBzbGljZSgxLCByMSk7CiAgICBzbGljZSgyLCByMik7CiAgICBzbGlj
ZSgzLCByMyk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBB
cnJheTxQX251bXR5cGUsIE5fcmFuaz46OmNvbnN0cnVjdFN1YmFycmF5KAogICAgQXJyYXk8VF9u
dW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwgUmFu
Z2UgcjMsCiAgICBSYW5nZSByNCkKewogICAgcmVmZXJlbmNlKGFycmF5KTsKICAgIHNsaWNlKDAs
IHIwKTsKICAgIHNsaWNlKDEsIHIxKTsKICAgIHNsaWNlKDIsIHIyKTsKICAgIHNsaWNlKDMsIHIz
KTsKICAgIHNsaWNlKDQsIHI0KTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9y
YW5rPgp2b2lkIEFycmF5PFBfbnVtdHlwZSwgTl9yYW5rPjo6Y29uc3RydWN0U3ViYXJyYXkoCiAg
ICBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBSYW5nZSByMCwgUmFuZ2UgcjEsIFJh
bmdlIHIyLCBSYW5nZSByMywKICAgIFJhbmdlIHI0LCBSYW5nZSByNSkKewogICAgcmVmZXJlbmNl
KGFycmF5KTsKICAgIHNsaWNlKDAsIHIwKTsKICAgIHNsaWNlKDEsIHIxKTsKICAgIHNsaWNlKDIs
IHIyKTsKICAgIHNsaWNlKDMsIHIzKTsKICAgIHNsaWNlKDQsIHI0KTsKICAgIHNsaWNlKDUsIHI1
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFBf
bnVtdHlwZSwgTl9yYW5rPjo6Y29uc3RydWN0U3ViYXJyYXkoCiAgICBBcnJheTxUX251bXR5cGUs
IE5fcmFuaz4mIGFycmF5LCBSYW5nZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywK
ICAgIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYpCnsKICAgIHJlZmVyZW5jZShhcnJheSk7
CiAgICBzbGljZSgwLCByMCk7CiAgICBzbGljZSgxLCByMSk7CiAgICBzbGljZSgyLCByMik7CiAg
ICBzbGljZSgzLCByMyk7CiAgICBzbGljZSg0LCByNCk7CiAgICBzbGljZSg1LCByNSk7CiAgICBz
bGljZSg2LCByNik7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9p
ZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OmNvbnN0cnVjdFN1YmFycmF5KAogICAgQXJyYXk8
VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwg
UmFuZ2UgcjMsCiAgICBSYW5nZSByNCwgUmFuZ2UgcjUsIFJhbmdlIHI2LCBSYW5nZSByNykKewog
ICAgcmVmZXJlbmNlKGFycmF5KTsKICAgIHNsaWNlKDAsIHIwKTsKICAgIHNsaWNlKDEsIHIxKTsK
ICAgIHNsaWNlKDIsIHIyKTsKICAgIHNsaWNlKDMsIHIzKTsKICAgIHNsaWNlKDQsIHI0KTsKICAg
IHNsaWNlKDUsIHI1KTsKICAgIHNsaWNlKDYsIHI2KTsKICAgIHNsaWNlKDcsIHI3KTsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFBfbnVtdHlwZSwg
Tl9yYW5rPjo6Y29uc3RydWN0U3ViYXJyYXkoCiAgICBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4m
IGFycmF5LCBSYW5nZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywKICAgIFJhbmdl
IHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5nZSByOCkKewogICAgcmVmZXJl
bmNlKGFycmF5KTsKICAgIHNsaWNlKDAsIHIwKTsKICAgIHNsaWNlKDEsIHIxKTsKICAgIHNsaWNl
KDIsIHIyKTsKICAgIHNsaWNlKDMsIHIzKTsKICAgIHNsaWNlKDQsIHI0KTsKICAgIHNsaWNlKDUs
IHI1KTsKICAgIHNsaWNlKDYsIHI2KTsKICAgIHNsaWNlKDcsIHI3KTsKICAgIHNsaWNlKDgsIHI4
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFBf
bnVtdHlwZSwgTl9yYW5rPjo6Y29uc3RydWN0U3ViYXJyYXkoCiAgICBBcnJheTxUX251bXR5cGUs
IE5fcmFuaz4mIGFycmF5LCBSYW5nZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywK
ICAgIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5nZSByOCwgUmFu
Z2UgcjkpCnsKICAgIHJlZmVyZW5jZShhcnJheSk7CiAgICBzbGljZSgwLCByMCk7CiAgICBzbGlj
ZSgxLCByMSk7CiAgICBzbGljZSgyLCByMik7CiAgICBzbGljZSgzLCByMyk7CiAgICBzbGljZSg0
LCByNCk7CiAgICBzbGljZSg1LCByNSk7CiAgICBzbGljZSg2LCByNik7CiAgICBzbGljZSg3LCBy
Nyk7CiAgICBzbGljZSg4LCByOCk7CiAgICBzbGljZSg5LCByOSk7Cn0KCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OmNv
bnN0cnVjdFN1YmFycmF5KAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFu
Z2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwgUmFuZ2UgcjMsCiAgICBSYW5nZSByNCwgUmFuZ2Ug
cjUsIFJhbmdlIHI2LCBSYW5nZSByNywgUmFuZ2UgcjgsIFJhbmdlIHI5LCBSYW5nZSByMTApCnsK
ICAgIHJlZmVyZW5jZShhcnJheSk7CiAgICBzbGljZSgwLCByMCk7CiAgICBzbGljZSgxLCByMSk7
CiAgICBzbGljZSgyLCByMik7CiAgICBzbGljZSgzLCByMyk7CiAgICBzbGljZSg0LCByNCk7CiAg
ICBzbGljZSg1LCByNSk7CiAgICBzbGljZSg2LCByNik7CiAgICBzbGljZSg3LCByNyk7CiAgICBz
bGljZSg4LCByOCk7CiAgICBzbGljZSg5LCByOSk7CiAgICBzbGljZSgxMCwgcjEwKTsKfQoKIAoK
CgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9yYW5rPiB0ZW1wbGF0ZTxpbnQgTl9y
YW5rMiwgY2xhc3MgUjAsCiAgICBjbGFzcyBSMSwgY2xhc3MgUjIsIGNsYXNzIFIzLCBjbGFzcyBS
NCwgY2xhc3MgUjUsIGNsYXNzIFI2LCBjbGFzcyBSNywKICAgIGNsYXNzIFI4LCBjbGFzcyBSOSwg
Y2xhc3MgUjEwPgp2b2lkIEFycmF5PFBfbnVtdHlwZSwgTl9yYW5rPjo6Y29uc3RydWN0U2xpY2Uo
QXJyYXk8VF9udW10eXBlLCBOX3JhbmsyPiYgYXJyYXksCiAgICBSMCByMCwgUjEgcjEsIFIyIHIy
LCBSMyByMywgUjQgcjQsIFI1IHI1LCBSNiByNiwgUjcgcjcsIFI4IHI4LCBSOSByOSwKICAgIFIx
MCByMTApCnsKICAgIE1lbW9yeUJsb2NrUmVmZXJlbmNlPFBfbnVtdHlwZT46OmNoYW5nZUJsb2Nr
KGFycmF5LCBhcnJheS56ZXJvT2Zmc2V0KCkpOwogICAgZGF0YV8gPSBhcnJheS5kYXRhWmVybygp
OwoKICAgIGludCBzZXRSYW5rID0gMDsKCiAgICBUaW55VmVjdG9yPGludCwgTl9yYW5rMj4gcmFu
a01hcDsKCiAgICBzbGljZShzZXRSYW5rLCByMCwgYXJyYXksIHJhbmtNYXAsIDApOwogICAgc2xp
Y2Uoc2V0UmFuaywgcjEsIGFycmF5LCByYW5rTWFwLCAxKTsKICAgIHNsaWNlKHNldFJhbmssIHIy
LCBhcnJheSwgcmFua01hcCwgMik7CiAgICBzbGljZShzZXRSYW5rLCByMywgYXJyYXksIHJhbmtN
YXAsIDMpOwogICAgc2xpY2Uoc2V0UmFuaywgcjQsIGFycmF5LCByYW5rTWFwLCA0KTsKICAgIHNs
aWNlKHNldFJhbmssIHI1LCBhcnJheSwgcmFua01hcCwgNSk7CiAgICBzbGljZShzZXRSYW5rLCBy
NiwgYXJyYXksIHJhbmtNYXAsIDYpOwogICAgc2xpY2Uoc2V0UmFuaywgcjcsIGFycmF5LCByYW5r
TWFwLCA3KTsKICAgIHNsaWNlKHNldFJhbmssIHI4LCBhcnJheSwgcmFua01hcCwgOCk7CiAgICBz
bGljZShzZXRSYW5rLCByOSwgYXJyYXksIHJhbmtNYXAsIDkpOwogICAgc2xpY2Uoc2V0UmFuaywg
cjEwLCBhcnJheSwgcmFua01hcCwgMTApOwoKICAgICAKICAgICAKICAgIGludCBqID0gMDsKICAg
IGZvciAoaW50IGk9MDsgaSA8IE5fcmFuazI7ICsraSkKICAgIHsKICAgICAgICBpZiAocmFua01h
cFthcnJheS5vcmRlcmluZyhpKV0gIT0gLTEpCiAgICAgICAgICAgIHN0b3JhZ2VfLnNldE9yZGVy
aW5nKGorKywgcmFua01hcFthcnJheS5vcmRlcmluZyhpKV0pOwogICAgfQoKICAgIGNhbGN1bGF0
ZVplcm9PZmZzZXQoKTsKfQoKIAoKCgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
cmFuaz4gdGVtcGxhdGU8aW50IE5fcmFuazI+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+
OjpzbGljZShpbnQmIHNldFJhbmssIFJhbmdlIHIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5r
Mj4mIGFycmF5LCBUaW55VmVjdG9yPGludCxOX3JhbmsyPiYgcmFua01hcCwKICAgIGludCBzb3Vy
Y2VSYW5rKQp7CiAgICAgCiAgICAgCgoKCgoKCgogICAgcmFua01hcFtzb3VyY2VSYW5rXSA9IHNl
dFJhbms7CiAgICBsZW5ndGhfW3NldFJhbmtdID0gYXJyYXkubGVuZ3RoKHNvdXJjZVJhbmspOwog
ICAgc3RyaWRlX1tzZXRSYW5rXSA9IGFycmF5LnN0cmlkZShzb3VyY2VSYW5rKTsKICAgIHN0b3Jh
Z2VfLnNldEFzY2VuZGluZ0ZsYWcoc2V0UmFuaywgYXJyYXkuaXNSYW5rU3RvcmVkQXNjZW5kaW5n
KHNvdXJjZVJhbmspKTsKICAgIHN0b3JhZ2VfLnNldEJhc2Uoc2V0UmFuaywgYXJyYXkuYmFzZShz
b3VyY2VSYW5rKSk7CiAgICBzbGljZShzZXRSYW5rLCByKTsKICAgICsrc2V0UmFuazsKfQoKIAoK
CgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gdGVtcGxhdGU8aW50IE5f
cmFuazI+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpzbGljZShpbnQmIHNldFJhbmss
IGludCBpLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuazI+JiBhcnJheSwgVGlueVZlY3Rvcjxp
bnQsTl9yYW5rMj4mIHJhbmtNYXAsCiAgICBpbnQgc291cmNlUmFuaykKewoKCgoKCgogICAgIDsK
CgoKCiAgICByYW5rTWFwW3NvdXJjZVJhbmtdID0gLTE7CiAgICBkYXRhXyArPSBpICogYXJyYXku
c3RyaWRlKHNvdXJjZVJhbmspOwoKCgp9CgogCgoKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OnNsaWNlKGludCBy
YW5rLCBSYW5nZSByKQp7CiAgICAgOwoKICAgIGludCBmaXJzdCA9IHIuZmlyc3QobGJvdW5kKHJh
bmspKTsKICAgIGludCBsYXN0ICA9IHIubGFzdCh1Ym91bmQocmFuaykpOwogICAgaW50IHN0cmlk
ZSA9IHIuc3RyaWRlKCk7CgoKCgoKCgogICAgIDsKCgoKCgoKCgogICAgIAogICAgIAogICAgIAog
ICAgIAoKICAgIGxlbmd0aF9bcmFua10gPSAobGFzdCAtIGZpcnN0KSAvIHN0cmlkZSArIDE7Cgog
ICAgIAogICAgaW50IG9mZnNldCA9IC1iYXNlKHJhbmspICogc3RyaWRlX1tyYW5rXSAqIHN0cmlk
ZQogICAgICAgICAgICAgICAgICsgZmlyc3QgKiBzdHJpZGVfW3JhbmtdOwogICAgIAogICAgZGF0
YV8gKz0gb2Zmc2V0OwogICAgemVyb09mZnNldF8gLT0gb2Zmc2V0OwoKICAgIHN0cmlkZV9bcmFu
a10gKj0gc3RyaWRlOwp9Cgp9IAoKCiMgMjQ4OCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L2FycmF5LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L2FycmF5L2N5Y2xlLmNjIiAxCgojZGVmaW5lIEJaX0FSUkFZQ1lDTEVfQ0MK
CgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQg
Tl9yYW5rPgp2b2lkIGN5Y2xlQXJyYXlzKEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYSwgQXJy
YXk8VF9udW10eXBlLCBOX3Jhbms+JiBiKQp7CiAgICBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4g
dG1wKGEpOwogICAgYS5yZWZlcmVuY2UoYik7CiAgICBiLnJlZmVyZW5jZSh0bXApOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgY3ljbGVBcnJheXMoQXJyYXk8
VF9udW10eXBlLCBOX3Jhbms+JiBhLCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGIsCiAgICBB
cnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGMpCnsKICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5r
PiB0bXAoYSk7CiAgICBhLnJlZmVyZW5jZShiKTsKICAgIGIucmVmZXJlbmNlKGMpOwogICAgYy5y
ZWZlcmVuY2UodG1wKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2
b2lkIGN5Y2xlQXJyYXlzKEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYSwgQXJyYXk8VF9udW10
eXBlLCBOX3Jhbms+JiBiLAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBjLCBBcnJheTxU
X251bXR5cGUsIE5fcmFuaz4mIGQpCnsKICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiB0bXAo
YSk7CiAgICBhLnJlZmVyZW5jZShiKTsKICAgIGIucmVmZXJlbmNlKGMpOwogICAgYy5yZWZlcmVu
Y2UoZCk7CiAgICBkLnJlZmVyZW5jZSh0bXApOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUs
IGludCBOX3Jhbms+CnZvaWQgY3ljbGVBcnJheXMoQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBh
LCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGIsCiAgICBBcnJheTxUX251bXR5cGUsIE5fcmFu
az4mIGMsIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgZCwKICAgIEFycmF5PFRfbnVtdHlwZSwg
Tl9yYW5rPiYgZSkKewogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+IHRtcChhKTsKICAgIGEu
cmVmZXJlbmNlKGIpOwogICAgYi5yZWZlcmVuY2UoYyk7CiAgICBjLnJlZmVyZW5jZShkKTsKICAg
IGQucmVmZXJlbmNlKGUpOwogICAgZS5yZWZlcmVuY2UodG1wKTsKfQoKfSAKCgojIDI0ODkgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgojIDEgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9jb21wbGV4LmNjIiAx
CiAKCgojZGVmaW5lIEJaX0FSUkFZQ09NUExFWF9DQwoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsg
CgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4KaW5saW5lIEFycmF5PFRf
bnVtdHlwZSwgTl9yYW5rPiByZWFsKGNvbnN0IEFycmF5PGNvbXBsZXg8VF9udW10eXBlPixOX3Jh
bms+JiBBKQp7CiAgICByZXR1cm4gQS5leHRyYWN0Q29tcG9uZW50KFRfbnVtdHlwZSgpLCAwLCAy
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgppbmxpbmUgQXJyYXk8
VF9udW10eXBlLCBOX3Jhbms+IGltYWcoY29uc3QgQXJyYXk8Y29tcGxleDxUX251bXR5cGU+LE5f
cmFuaz4mIEEpCnsKICAgIHJldHVybiBBLmV4dHJhY3RDb21wb25lbnQoVF9udW10eXBlKCksIDEs
IDIpOwp9CgoKCgp9IAoKCgojIDI0OTAgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9hcnJheS5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9hcnJheS96aXAuaCIgMQoKI2RlZmluZSBCWl9BUlJBWVpJUF9ICgoKCgoKbmFtZXNw
YWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFBfY29tcG9uZW50LCBjbGFzcyBUMSwgY2xh
c3MgVDI+CnN0cnVjdCBaaXAyIHsKICAgIHR5cGVkZWYgUF9jb21wb25lbnQgVF9udW10eXBlOwoK
ICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFQxIGEsIFQyIGIpCiAgICB7IHJldHVy
biBUX251bXR5cGUoYSxiKTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFRfbGVmdCwgY2xhc3MgVF9y
aWdodD4KICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwKICAg
ICAgICBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUX2xlZnQmIHQxLAogICAgICAg
IGNvbnN0IFRfcmlnaHQmIHQyKQogICAgewogICAgICAgIHN0ciArPSAiemlwKCI7CiAgICAgICAg
dDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOwogICAgICAgIHN0ciArPSAiLCI7CiAgICAgICAg
dDIucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07
Cgp0ZW1wbGF0ZTxjbGFzcyBUX2NvbXBvbmVudCwgY2xhc3MgVDEsIGNsYXNzIFQyPgppbmxpbmUg
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsIAogICAgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgWmlwMjxUX2NvbXBvbmVudCwg
CiAgICB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsCiAgICB0eXBlbmFt
ZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPgp6aXAoY29uc3QgVDEmIGEsIGNv
bnN0IFQyJiBiLCBUX2NvbXBvbmVudCkKewogICAgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0Fy
cmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLAogICAgICAgIHR5cGVuYW1l
ICBhc0V4cHI8VDI+OjpUX2V4cHIsIFppcDI8VF9jb21wb25lbnQsIAogICAgICAgIHR5cGVuYW1l
ICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwKICAgICAgICB0eXBlbmFtZSAgYXNFeHBy
PFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPihhLGIpOwp9Cgp9IAoKCgojIDI0OTEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS93aGVyZS5oIiAxCgojZGVm
aW5lIEJaX0FSUkFZV0hFUkVfSAoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyLCBjbGFzcyBQX2V4cHIzPgpjbGFzcyBfYnpfQXJy
YXlXaGVyZSB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfZXhwcjEgVF9leHByMTsKICAgIHR5cGVk
ZWYgUF9leHByMiBUX2V4cHIyOwogICAgdHlwZWRlZiBQX2V4cHIzIFRfZXhwcjM7CiAgICB0eXBl
ZGVmIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5cGUgVF9udW10eXBlMjsKICAgIHR5cGVkZWYg
dHlwZW5hbWUgIFRfZXhwcjM6OlRfbnVtdHlwZSBUX251bXR5cGUzOwogICAgdHlwZWRlZiB0eXBl
bmFtZSAgcHJvbW90ZV90cmFpdDwgVF9udW10eXBlMiAsICBUX251bXR5cGUzID46OlRfcHJvbW90
ZSAgVF9udW10eXBlOwogICAgdHlwZWRlZiBUX2V4cHIxIFRfY3RvckFyZzE7CiAgICB0eXBlZGVm
IFRfZXhwcjIgVF9jdG9yQXJnMjsKICAgIHR5cGVkZWYgVF9leHByMyBUX2N0b3JBcmczOwoKICAg
IGVudW0geyBudW1BcnJheU9wZXJhbmRzID0gKGludCkgUF9leHByMTo6bnVtQXJyYXlPcGVyYW5k
cyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChpbnQpIFBfZXhwcjI6Om51bUFycmF5
T3BlcmFuZHMgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoaW50KSBQX2V4cHIzOjpu
dW1BcnJheU9wZXJhbmRzICAsCiAgICAgICAgICAgbnVtSW5kZXhQbGFjZWhvbGRlcnMgPSAoaW50
KSBQX2V4cHIxOjpudW1JbmRleFBsYWNlaG9sZGVycyAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICArIChpbnQpIFBfZXhwcjI6Om51bUluZGV4UGxhY2Vob2xkZXJzICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsgKGludCkgUF9leHByMzo6bnVtSW5kZXhQbGFjZWhvbGRlcnMgICwK
ICAgICAgICAgICByYW5rID0gX2J6X21ldGFfbWF4PF9iel9tZXRhX21heDxQX2V4cHIxOjpyYW5r
LFBfZXhwcjI6OnJhbms+OjptYXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQX2V4cHIz
OjpyYW5rPjo6bWF4CiAgICB9OwoKICAgIF9iel9BcnJheVdoZXJlKGNvbnN0IF9iel9BcnJheVdo
ZXJlPFRfZXhwcjEsVF9leHByMixUX2V4cHIzPiYgYSkKICAgICAgOiBpdGVyMV8oYS5pdGVyMV8p
LCBpdGVyMl8oYS5pdGVyMl8pLCBpdGVyM18oYS5pdGVyM18pCiAgICB7IH0KCiAgICB0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgogICAgX2J6X0FycmF5V2hlcmUoY29uc3Qg
IFQxICYgIGEsIGNvbnN0ICBUMiAmICBiLCBjb25zdCAgVDMgJiAgYykKICAgICAgOiBpdGVyMV8o
YSksIGl0ZXIyXyhiKSwgaXRlcjNfKGMpCiAgICB7IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3Iq
KCkKICAgIHsgcmV0dXJuICgqaXRlcjFfKSA/ICgqaXRlcjJfKSA6ICgqaXRlcjNfKTsgfQoKICAg
IHRlbXBsYXRlPGludCBOX3Jhbms+CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShjb25zdCBUaW55
VmVjdG9yPGludCwgTl9yYW5rPiYgaSkKICAgIHsgcmV0dXJuIGl0ZXIxXyhpKSA/IGl0ZXIyXyhp
KSA6IGl0ZXIzXyhpKTsgfQoKICAgIGludCBhc2NlbmRpbmcoaW50IHJhbmspCiAgICB7CiAgICAg
ICAgcmV0dXJuIGJvdW5kczo6Y29tcHV0ZV9hc2NlbmRpbmcocmFuaywgYm91bmRzOjpjb21wdXRl
X2FzY2VuZGluZygKICAgICAgICAgIHJhbmssIGl0ZXIxXy5hc2NlbmRpbmcocmFuayksIGl0ZXIy
Xy5hc2NlbmRpbmcocmFuaykpLAogICAgICAgICAgaXRlcjNfLmFzY2VuZGluZyhyYW5rKSk7CiAg
ICB9CgogICAgaW50IG9yZGVyaW5nKGludCByYW5rKQogICAgewogICAgICAgIHJldHVybiBib3Vu
ZHM6OmNvbXB1dGVfb3JkZXJpbmcocmFuaywgYm91bmRzOjpjb21wdXRlX29yZGVyaW5nKAogICAg
ICAgICAgcmFuaywgaXRlcjFfLm9yZGVyaW5nKHJhbmspLCBpdGVyMl8ub3JkZXJpbmcocmFuaykp
LAogICAgICAgICAgaXRlcjNfLm9yZGVyaW5nKHJhbmspKTsKICAgIH0KCiAgICBpbnQgbGJvdW5k
KGludCByYW5rKQogICAgewogICAgICAgIHJldHVybiBib3VuZHM6OmNvbXB1dGVfbGJvdW5kKHJh
bmssIGJvdW5kczo6Y29tcHV0ZV9sYm91bmQoCiAgICAgICAgICByYW5rLCBpdGVyMV8ubGJvdW5k
KHJhbmspLCBpdGVyMl8ubGJvdW5kKHJhbmspKSwgCiAgICAgICAgICBpdGVyM18ubGJvdW5kKHJh
bmspKTsKICAgIH0KICAgCiAgICBpbnQgdWJvdW5kKGludCByYW5rKQogICAgewogICAgICAgIHJl
dHVybiBib3VuZHM6OmNvbXB1dGVfdWJvdW5kKHJhbmssIGJvdW5kczo6Y29tcHV0ZV91Ym91bmQo
CiAgICAgICAgICByYW5rLCBpdGVyMV8udWJvdW5kKHJhbmspLCBpdGVyMl8udWJvdW5kKHJhbmsp
KSwgCiAgICAgICAgICBpdGVyM18udWJvdW5kKHJhbmspKTsKICAgIH0gCgogICAgdm9pZCBwdXNo
KGludCBwb3NpdGlvbikKICAgIHsKICAgICAgICBpdGVyMV8ucHVzaChwb3NpdGlvbik7CiAgICAg
ICAgaXRlcjJfLnB1c2gocG9zaXRpb24pOwogICAgICAgIGl0ZXIzXy5wdXNoKHBvc2l0aW9uKTsK
ICAgIH0KCiAgICB2b2lkIHBvcChpbnQgcG9zaXRpb24pCiAgICB7CiAgICAgICAgaXRlcjFfLnBv
cChwb3NpdGlvbik7CiAgICAgICAgaXRlcjJfLnBvcChwb3NpdGlvbik7CiAgICAgICAgaXRlcjNf
LnBvcChwb3NpdGlvbik7CiAgICB9CgogICAgdm9pZCBhZHZhbmNlKCkKICAgIHsKICAgICAgICBp
dGVyMV8uYWR2YW5jZSgpOwogICAgICAgIGl0ZXIyXy5hZHZhbmNlKCk7CiAgICAgICAgaXRlcjNf
LmFkdmFuY2UoKTsKICAgIH0KCiAgICB2b2lkIGFkdmFuY2UoaW50IG4pCiAgICB7CiAgICAgICAg
aXRlcjFfLmFkdmFuY2Uobik7CiAgICAgICAgaXRlcjJfLmFkdmFuY2Uobik7CiAgICAgICAgaXRl
cjNfLmFkdmFuY2Uobik7CiAgICB9CgogICAgdm9pZCBsb2FkU3RyaWRlKGludCByYW5rKQogICAg
ewogICAgICAgIGl0ZXIxXy5sb2FkU3RyaWRlKHJhbmspOwogICAgICAgIGl0ZXIyXy5sb2FkU3Ry
aWRlKHJhbmspOwogICAgICAgIGl0ZXIzXy5sb2FkU3RyaWRlKHJhbmspOwogICAgfQoKICAgIGJv
b2wgIGlzVW5pdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsgCiAgICAgICAgcmV0dXJuIGl0
ZXIxXy5pc1VuaXRTdHJpZGUocmFuaykgCiAgICAgICAgICAgICYmIGl0ZXIyXy5pc1VuaXRTdHJp
ZGUocmFuaykgCiAgICAgICAgICAgICYmIGl0ZXIzXy5pc1VuaXRTdHJpZGUocmFuayk7CiAgICB9
CgogICAgdm9pZCBhZHZhbmNlVW5pdFN0cmlkZSgpCiAgICB7CiAgICAgICAgaXRlcjFfLmFkdmFu
Y2VVbml0U3RyaWRlKCk7CiAgICAgICAgaXRlcjJfLmFkdmFuY2VVbml0U3RyaWRlKCk7CiAgICAg
ICAgaXRlcjNfLmFkdmFuY2VVbml0U3RyaWRlKCk7CiAgICB9CgogICAgYm9vbCAgY2FuQ29sbGFw
c2UoaW50IG91dGVyTG9vcFJhbmssIGludCBpbm5lckxvb3BSYW5rKSBjb25zdAogICAgewogICAg
ICAgICAKICAgICAgICByZXR1cm4gaXRlcjFfLmNhbkNvbGxhcHNlKG91dGVyTG9vcFJhbmssIGlu
bmVyTG9vcFJhbmspCiAgICAgICAgICAgICYmIGl0ZXIyXy5jYW5Db2xsYXBzZShvdXRlckxvb3BS
YW5rLCBpbm5lckxvb3BSYW5rKQogICAgICAgICAgICAmJiBpdGVyM18uY2FuQ29sbGFwc2Uob3V0
ZXJMb29wUmFuaywgaW5uZXJMb29wUmFuayk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50IE5fcmFu
az4KICAgIHZvaWQgbW92ZVRvKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIGkpCiAgICB7
CiAgICAgICAgaXRlcjFfLm1vdmVUbyhpKTsKICAgICAgICBpdGVyMl8ubW92ZVRvKGkpOwogICAg
ICAgIGl0ZXIzXy5tb3ZlVG8oaSk7CiAgICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yW10oaW50
IGkpCiAgICB7IHJldHVybiBpdGVyMV9baV0gPyBpdGVyMl9baV0gOiBpdGVyM19baV07IH0KCiAg
ICBUX251bXR5cGUgZmFzdFJlYWQoaW50IGkpCiAgICB7IHJldHVybiBpdGVyMV8uZmFzdFJlYWQo
aSkgPyBpdGVyMl8uZmFzdFJlYWQoaSkgOiBpdGVyM18uZmFzdFJlYWQoaSk7IH0KCiAgICBpbnQg
c3VnZ2VzdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsKICAgICAgICBpbnQgc3RyaWRlMSA9
IGl0ZXIxXy5zdWdnZXN0U3RyaWRlKHJhbmspOwogICAgICAgIGludCBzdHJpZGUyID0gaXRlcjJf
LnN1Z2dlc3RTdHJpZGUocmFuayk7CiAgICAgICAgaW50IHN0cmlkZTMgPSBpdGVyM18uc3VnZ2Vz
dFN0cmlkZShyYW5rKTsKICAgICAgICByZXR1cm4gbWlubWF4OjptYXgobWlubWF4OjptYXgoc3Ry
aWRlMSxzdHJpZGUyKSxzdHJpZGUzKTsKICAgIH0KCiAgICBib29sICBpc1N0cmlkZShpbnQgcmFu
aywgaW50IHN0cmlkZSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gaXRlcjFfLmlzU3RyaWRl
KHJhbmssc3RyaWRlKSAKICAgICAgICAgICAgJiYgaXRlcjJfLmlzU3RyaWRlKHJhbmssc3RyaWRl
KQogICAgICAgICAgICAmJiBpdGVyM18uaXNTdHJpZGUocmFuayxzdHJpZGUpOwogICAgfQoKICAg
IHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQp
IGNvbnN0CiAgICB7CiAgICAgICAgc3RyICs9ICJ3aGVyZSgiOwogICAgICAgIGl0ZXIxXy5wcmV0
dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIiwiOwogICAgICAgIGl0ZXIyXy5w
cmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIiwiOwogICAgICAgIGl0ZXIz
Xy5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQoKICAg
IHRlbXBsYXRlPGNsYXNzIFRfc2hhcGU+CiAgICBib29sICBzaGFwZUNoZWNrKGNvbnN0IFRfc2hh
cGUmIHNoYXBlKQogICAgeyAKICAgICAgICBpbnQgdDEgPSBpdGVyMV8uc2hhcGVDaGVjayhzaGFw
ZSk7CiAgICAgICAgaW50IHQyID0gaXRlcjJfLnNoYXBlQ2hlY2soc2hhcGUpOwogICAgICAgIGlu
dCB0MyA9IGl0ZXIzXy5zaGFwZUNoZWNrKHNoYXBlKTsKCiAgICAgICAgcmV0dXJuIHQxICYmIHQy
ICYmIHQzOwogICAgfQoKcHJpdmF0ZToKICAgIF9iel9BcnJheVdoZXJlKCkgeyB9CgogICAgVF9l
eHByMSBpdGVyMV87CiAgICBUX2V4cHIyIGl0ZXIyXzsKICAgIFRfZXhwcjMgaXRlcjNfOwp9OwoK
dGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz4KaW5saW5lCl9iel9BcnJheUV4
cHI8X2J6X0FycmF5V2hlcmU8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsCiAgICB0eXBl
bmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQzPjo6VF9leHByPiA+
CndoZXJlKGNvbnN0IFQxJiBhLCBjb25zdCBUMiYgYiwgY29uc3QgVDMmIGMpCnsKICAgIHJldHVy
biBfYnpfQXJyYXlFeHByPF9iel9BcnJheVdoZXJlPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9l
eHByLAogICAgICAgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgCiAgICAgICB0eXBlbmFt
ZSAgYXNFeHByPFQzPjo6VF9leHByPiA+KGEsYixjKTsKfQoKfSAKCgoKIyAyNDkyICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAxICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvc3RlbmNpbC5oIiAxCgojZGVm
aW5lIEJaX0FSUkFZU1RFTkNJTF9ICgoKCgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2luY2x1ZGUvYmxpdHovYXJyYXkvc3RlbmNpbG9wcy5oIiAxCgojZGVmaW5lIEJaX0FSUkFZU1RF
TkNJTE9QU19ICgogCiAKCgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9hcnJheS9nZW9tZXRyeS5oIiAxCgojZGVmaW5lIEJaX0dFT01FVFJZX0gKCgoK
CgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdHlwZWRlZiBkb3VibGUgVF9kZWZhdWx0U3BhdGlhbENv
b3JkaW5hdGU7Cgp0ZW1wbGF0ZTxpbnQgTl9kaW0sIGNsYXNzIFQgPSBUX2RlZmF1bHRTcGF0aWFs
Q29vcmRpbmF0ZT4KY2xhc3MgVW5pZm9ybU9ydGhvR2VvbWV0cnkgewpwdWJsaWM6Cn07Cgp0ZW1w
bGF0ZTxpbnQgTl9kaW0sIGNsYXNzIFQgPSBUX2RlZmF1bHRTcGF0aWFsQ29vcmRpbmF0ZT4KY2xh
c3MgVW5pZm9ybUN1YmljR2VvbWV0cnkgewogICAgVCBoXzsKICAgIFQgcmVjaXBfaF87CiAgICBU
IHJlY2lwMl9oXzsKICAgIFQgcmVjaXAzX2hfOwogICAgVGlueVZlY3RvcjxULE5fZGltPiB6ZXJv
XzsKCnB1YmxpYzoKICAgIHR5cGVkZWYgVCBUX2Nvb3JkOwoKICAgIFVuaWZvcm1DdWJpY0dlb21l
dHJ5KCkKICAgIHsKICAgICAgICBoXyA9IDAuMDsKICAgICAgICByZWNpcF9oXyA9IDAuMDsKICAg
ICAgICByZWNpcDJfaF8gPSAwLjA7CiAgICAgICAgcmVjaXAzX2hfID0gMC4wOwogICAgICAgIHpl
cm9fID0gMC4wOwogICAgfQoKICAgIFVuaWZvcm1DdWJpY0dlb21ldHJ5KFQgc3BhdGlhbFN0ZXAp
CiAgICB7CiAgICAgICAgaF8gPSBzcGF0aWFsU3RlcDsKICAgICAgICB6ZXJvXyA9IFQoMCk7CiAg
ICAgICAgc2V0dXAoKTsKICAgIH0KCiAgICBVbmlmb3JtQ3ViaWNHZW9tZXRyeShUIHNwYXRpYWxT
dGVwLCBUaW55VmVjdG9yPFQsTl9kaW0+IHplcm9Db29yZGluYXRlcykKICAgIHsgICAKICAgICAg
ICBoXyA9IHNwYXRpYWxTdGVwOwogICAgICAgIHplcm9fID0gemVyb0Nvb3JkaW5hdGVzOwogICAg
ICAgIHNldHVwKCk7CiAgICB9ICAgIAoKICAgIFRpbnlWZWN0b3I8VCxOX2RpbT4gdG9TcGF0aWFs
KFRpbnlWZWN0b3I8aW50LE5fZGltPiBsb2dpY2FsQ29vcmQpIGNvbnN0CiAgICB7CiAgICAgICAg
cmV0dXJuIHplcm9fICsgaF8gKiBsb2dpY2FsQ29vcmQ7CiAgICB9CgogICAgVCBzcGF0aWFsU3Rl
cCgpIGNvbnN0CiAgICB7IHJldHVybiBoXzsgfQoKICAgIFQgcmVjaXBTcGF0aWFsU3RlcCgpIGNv
bnN0CiAgICB7IHJldHVybiByZWNpcF9oXzsgfQoKICAgIFQgcmVjaXBTcGF0aWFsU3RlcFBvdzIo
KSBjb25zdAogICAgeyByZXR1cm4gcmVjaXAyX2hfOyB9Cgpwcml2YXRlOgogICAgdm9pZCBzZXR1
cCgpCiAgICB7CiAgICAgICAgcmVjaXBfaF8gPSAxLjAgLyBoXzsKICAgICAgICByZWNpcDJfaF8g
PSAxLjAgLyBwb3cyKGhfKTsKICAgICAgICByZWNpcDNfaF8gPSAxLjAgLyBwb3czKGhfKTsKICAg
IH0KfTsKCnRlbXBsYXRlPGludCBOX2RpbSwgY2xhc3MgVCA9IFRfZGVmYXVsdFNwYXRpYWxDb29y
ZGluYXRlPgpjbGFzcyBUZW5zb3JQcm9kdWN0R2VvbWV0cnkgewpwdWJsaWM6Cn07Cgp9IAoKCiMg
MTIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9zdGVuY2ls
b3BzLmgiIDIKCgoKCiAKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovdGlueW1hdC5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2Rl
ZmluZSBCWl9USU5ZTUFUX0gKCgoKCgoKCgoKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L3RpbnltYXRleHByLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1RJTllNQVRFWFBSX0gKCgoKCgpuYW1lc3BhY2Ug
IGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgVF9leHByPgpjbGFzcyBfYnpfdGlueU1hdEV4cHIg
ewpwdWJsaWM6CiAgICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZSBUX251bXR5
cGU7CgogICAgZW51bSB7CiAgICAgICAgcm93cyA9IFRfZXhwcjo6cm93cywKICAgICAgICBjb2x1
bW5zID0gVF9leHByOjpjb2x1bW5zCiAgICB9OwoKICAgIF9iel90aW55TWF0RXhwcihUX2V4cHIg
ZXhwcikKICAgICAgICA6IGV4cHJfKGV4cHIpCiAgICB7IH0KCiAgICBfYnpfdGlueU1hdEV4cHIo
Y29uc3QgX2J6X3RpbnlNYXRFeHByPFRfZXhwcj4mIHgpCiAgICAgICAgOiBleHByXyh4LmV4cHJf
KQogICAgeyB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoaW50IGksIGludCBqKSBjb25zdAog
ICAgeyByZXR1cm4gZXhwcl8oaSxqKTsgfQoKcHJvdGVjdGVkOgogICAgVF9leHByIGV4cHJfOwp9
OwoKfSAKCgoKIyA1MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rp
bnltYXQuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
bWV0YS9tYXRhc3NpZ24uaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgojZGVmaW5lIEJaX01FVEFfTUFUQVNTSUdOX0gKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1w
bGF0ZTxpbnQgTl9yb3dzLCBpbnQgTl9jb2x1bW5zLCBpbnQgSSwgaW50IEo+CmNsYXNzIF9iel9t
ZXRhX21hdEFzc2lnbjIgewpwdWJsaWM6CiAgICBlbnVtIHsgZ28gPSAoSiA8IE5fY29sdW1ucyAt
IDEpID8gMSA6IDAgfTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX21hdHJpeCwgY2xhc3MgVF9leHBy
LCBjbGFzcyBUX3VwZGF0ZXI+CiAgICBzdGF0aWMgaW5saW5lIHZvaWQgZihUX21hdHJpeCYgbWF0
LCBUX2V4cHIgZXhwciwgVF91cGRhdGVyIHUpCiAgICB7CiAgICAgICAgdS51cGRhdGUobWF0KEks
SiksIGV4cHIoSSxKKSk7CiAgICAgICAgX2J6X21ldGFfbWF0QXNzaWduMjxOX3Jvd3MgKiBnbywg
Tl9jb2x1bW5zICogZ28sIEkgKiBnbywgKEorMSkgKiBnbz4KICAgICAgICAgICAgOjpmKG1hdCwg
ZXhwciwgdSk7CiAgICB9Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9tZXRhX21hdEFzc2lnbjI8
MCwwLDAsMD4gewpwdWJsaWM6CiAgICB0ZW1wbGF0ZTxjbGFzcyBUX21hdHJpeCwgY2xhc3MgVF9l
eHByLCBjbGFzcyBUX3VwZGF0ZXI+CiAgICBzdGF0aWMgaW5saW5lIHZvaWQgZihUX21hdHJpeCYg
bWF0LCBUX2V4cHIgZXhwciwgVF91cGRhdGVyIHUpCiAgICB7IH0KfTsKCnRlbXBsYXRlPGludCBO
X3Jvd3MsIGludCBOX2NvbHVtbnMsIGludCBJPiAKY2xhc3MgX2J6X21ldGFfbWF0QXNzaWduIHsK
cHVibGljOgogICAgZW51bSB7IGdvID0gKEkgPCBOX3Jvd3MtMSkgPyAxIDogMCB9OwoKICAgIHRl
bXBsYXRlPGNsYXNzIFRfbWF0cml4LCBjbGFzcyBUX2V4cHIsIGNsYXNzIFRfdXBkYXRlcj4KICAg
IHN0YXRpYyBpbmxpbmUgdm9pZCBmKFRfbWF0cml4JiBtYXQsIFRfZXhwciBleHByLCBUX3VwZGF0
ZXIgdSkKICAgIHsKICAgICAgICBfYnpfbWV0YV9tYXRBc3NpZ24yPE5fcm93cywgTl9jb2x1bW5z
LCBJLCAwPjo6ZihtYXQsIGV4cHIsIHUpOwogICAgICAgIF9iel9tZXRhX21hdEFzc2lnbjxOX3Jv
d3MgKiBnbywgTl9jb2x1bW5zICogZ28sIChJKzEpICogZ28+CiAgICAgICAgICAgIDo6ZihtYXQs
IGV4cHIsIHUpOwogICAgfQp9OwoKdGVtcGxhdGU8PgpjbGFzcyBfYnpfbWV0YV9tYXRBc3NpZ248
MCwwLDA+IHsKcHVibGljOgogICAgdGVtcGxhdGU8Y2xhc3MgVF9tYXRyaXgsIGNsYXNzIFRfZXhw
ciwgY2xhc3MgVF91cGRhdGVyPgogICAgc3RhdGljIGlubGluZSB2b2lkIGYoVF9tYXRyaXgmIG1h
dCwgVF9leHByIGV4cHIsIFRfdXBkYXRlciB1KQogICAgeyB9Cn07CgoKfSAKCgojIDUzICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdGlueW1hdC5oIiAyCgoKbmFtZXNw
YWNlICBibGl0eiAgeyAKCiAKdGVtcGxhdGU8Y2xhc3MgVF9leHByPgpjbGFzcyBfYnpfdGlueU1h
dEV4cHI7Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jvd3MsIGludCBOX2NvbHVt
bnMsIGludCBOX3Jvd1N0cmlkZSwKICAgIGludCBOX2NvbFN0cmlkZT4KY2xhc3MgX2J6X3RpbnlN
YXRyaXhSZWYgewoKcHVibGljOgogICAgX2J6X3RpbnlNYXRyaXhSZWYoVF9udW10eXBlKiBfX3Jl
c3RyaWN0X18gIGNvbnN0IGRhdGEpCiAgICAgICAgOiBkYXRhXyhkYXRhKQogICAgeyB9CgogICAg
VF9udW10eXBlICogX19yZXN0cmljdF9fICBkYXRhKCkKICAgIHsgcmV0dXJuIChUX251bXR5cGUg
KiBfX3Jlc3RyaWN0X18gKWRhdGFfOyB9CgogICAgVF9udW10eXBlJiBfX3Jlc3RyaWN0X18gIG9w
ZXJhdG9yKCkoaW50IGksIGludCBqKQogICAgeyByZXR1cm4gZGF0YV9baSAqIE5fcm93U3RyaWRl
ICsgaiAqIE5fY29sU3RyaWRlXTsgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGludCBpLCBp
bnQgaikgY29uc3QKICAgIHsgcmV0dXJuIGRhdGFfW2kgKiBOX3Jvd1N0cmlkZSArIGogKiBOX2Nv
bFN0cmlkZV07IH0KCnByb3RlY3RlZDoKICAgIFRfbnVtdHlwZSAqIF9fcmVzdHJpY3RfXyAgY29u
c3QgZGF0YV87Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX3Jvd3MsIGludCBO
X2NvbHVtbnM+CmNsYXNzIFRpbnlNYXRyaXggewoKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5
cGUgVF9udW10eXBlOwogICAgdHlwZWRlZiBfYnpfdGlueU1hdHJpeFJlZjxUX251bXR5cGUsIE5f
cm93cywgTl9jb2x1bW5zLCBOX2NvbHVtbnMsIDE+IAogICAgICAgIFRfcmVmZXJlbmNlOwogICAg
dHlwZWRlZiBUaW55TWF0cml4PFRfbnVtdHlwZSwgTl9yb3dzLCBOX2NvbHVtbnM+IFRfbWF0cml4
OwoKICAgIFRpbnlNYXRyaXgoKSB7IH0KCiAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgZGF0
YSgpCiAgICB7IHJldHVybiBkYXRhXzsgfQoKICAgIGNvbnN0IFRfbnVtdHlwZSogX19yZXN0cmlj
dF9fICBkYXRhKCkgY29uc3QKICAgIHsgcmV0dXJuIGRhdGFfOyB9CgogICAgVF9udW10eXBlKiBf
X3Jlc3RyaWN0X18gIGRhdGFGaXJzdCgpCiAgICB7IHJldHVybiBkYXRhXzsgfQoKICAgIGNvbnN0
IFRfbnVtdHlwZSogX19yZXN0cmljdF9fICBkYXRhRmlyc3QoKSBjb25zdAogICAgeyByZXR1cm4g
ZGF0YV87IH0KCiAgICAgCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3RfXyAgb3BlcmF0b3IoKShp
bnQgaSwgaW50IGopCiAgICB7IHJldHVybiBkYXRhX1tpKk5fY29sdW1ucyArIGpdOyB9CgogICAg
VF9udW10eXBlIG9wZXJhdG9yKCkoaW50IGksIGludCBqKSBjb25zdAogICAgeyByZXR1cm4gZGF0
YV9baSpOX2NvbHVtbnMgKyBqXTsgfQoKICAgIFRfcmVmZXJlbmNlIGdldFJlZigpCiAgICB7IHJl
dHVybiBUX3JlZmVyZW5jZSgoVF9udW10eXBlKilkYXRhXyk7IH0KCiAgICBjb25zdCBUX3JlZmVy
ZW5jZSBnZXRSZWYoKSBjb25zdAogICAgeyByZXR1cm4gVF9yZWZlcmVuY2UoKFRfbnVtdHlwZSop
ZGF0YV8pOyB9CgogICAgIAogICAgTGlzdEluaXRpYWxpemF0aW9uU3dpdGNoPFRfbWF0cml4Pgog
ICAgb3BlcmF0b3I9KFRfbnVtdHlwZSB4KQogICAgewogICAgICAgIHJldHVybiBMaXN0SW5pdGlh
bGl6YXRpb25Td2l0Y2g8VF9tYXRyaXg+KCp0aGlzLCB4KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxj
bGFzcyBUX2V4cHI+CiAgICBUaW55TWF0cml4PFRfbnVtdHlwZSwgTl9yb3dzLCBOX2NvbHVtbnM+
JgogICAgb3BlcmF0b3I9KF9iel90aW55TWF0RXhwcjxUX2V4cHI+IGV4cHIpCiAgICB7CiAgICAg
ICAgX2J6X21ldGFfbWF0QXNzaWduPE5fcm93cywgTl9jb2x1bW5zLCAwPjo6ZigqdGhpcywgZXhw
ciwKICAgICAgICAgICAgX2J6X3VwZGF0ZTxUX251bXR5cGUsIHR5cGVuYW1lICBUX2V4cHI6OlRf
bnVtdHlwZT4oKSk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIHZvaWQgaW5pdGlh
bGl6ZShUX251bXR5cGUgeCkKICAgIHsgCiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgTl9yb3dz
OyArK2kpCiAgICAgICAgICBmb3IgKGludCBqPTA7IGogPCBOX2NvbHVtbnM7ICsraikKICAgICAg
ICAgICAgKCp0aGlzKShpLGopID0geDsKICAgIH0KCiAgICBUX251bXR5cGUqIF9fcmVzdHJpY3Rf
XyAgZ2V0SW5pdGlhbGl6YXRpb25JdGVyYXRvcigpCiAgICB7IHJldHVybiBkYXRhRmlyc3QoKTsg
fQoKcHJvdGVjdGVkOgogICAgVF9udW10eXBlIGRhdGFfW05fcm93cyAqIE5fY29sdW1uc107Cn07
Cgp9IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWV0YS9t
YXR2ZWMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZp
bmUgQlpfTUVUQV9NQVRWRUNfSAoKCgoKCgoKCgoKIAoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgog
CnRlbXBsYXRlPGludCBOX3Jvd3MsIGludCBOX2NvbHVtbnMsIGludCBOX3Jvd1N0cmlkZSwgaW50
IE5fY29sU3RyaWRlLAogICAgaW50IE5fdmVjU3RyaWRlLCBpbnQgSj4KY2xhc3MgX2J6X21ldGFf
bWF0cml4VmVjdG9yUHJvZHVjdDI7CgoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMSwgY2xhc3Mg
VF9udW10eXBlMiwgaW50IE5fcm93cywgaW50IE5fY29sdW1ucywgCiAgICBpbnQgTl9yb3dTdHJp
ZGUsIGludCBOX2NvbFN0cmlkZSwgaW50IE5fdmVjU3RyaWRlPgpjbGFzcyBfYnpfdGlueU1hdHJp
eFZlY3RvclByb2R1Y3QgewpwdWJsaWM6CiAgICB0eXBlZGVmIHR5cGVuYW1lICBwcm9tb3RlX3Ry
YWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBUX251bXR5cGU7CiAg
ICAKICAgIF9iel90aW55TWF0cml4VmVjdG9yUHJvZHVjdChjb25zdCBfYnpfdGlueU1hdHJpeFZl
Y3RvclByb2R1Y3Q8VF9udW10eXBlMSwKICAgICAgICBUX251bXR5cGUyLCBOX3Jvd3MsIE5fY29s
dW1ucywgTl9yb3dTdHJpZGUsIE5fY29sU3RyaWRlLCAKICAgICAgICBOX3ZlY1N0cmlkZT4mIHop
CiAgICAgICAgICAgIDogbWF0cml4Xyh6Lm1hdHJpeF8pLCB2ZWN0b3JfKHoudmVjdG9yXykKICAg
IHsgfQoKICAgIF9iel90aW55TWF0cml4VmVjdG9yUHJvZHVjdChjb25zdCBUX251bXR5cGUxKiBt
YXRyaXgsIAogICAgICAgIGNvbnN0IFRfbnVtdHlwZTIqIHZlY3RvcikKICAgICAgICA6IG1hdHJp
eF8obWF0cml4KSwgdmVjdG9yXyh2ZWN0b3IpCiAgICB7IH0KCiAgICBUX251bXR5cGUgb3BlcmF0
b3JbXSh1bnNpZ25lZCBpKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBfYnpfbWV0YV9tYXRy
aXhWZWN0b3JQcm9kdWN0MjxOX3Jvd3MsIE5fY29sdW1ucywgTl9yb3dTdHJpZGUsCiAgICAgICAg
ICAgIE5fY29sU3RyaWRlLCBOX3ZlY1N0cmlkZSwgMD46OmYobWF0cml4XywgdmVjdG9yXywgaSk7
CiAgICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkodW5zaWduZWQgaSkgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gX2J6X21ldGFfbWF0cml4VmVjdG9yUHJvZHVjdDI8Tl9yb3dzLCBOX2Nv
bHVtbnMsIE5fcm93U3RyaWRlLAogICAgICAgICAgICBOX2NvbFN0cmlkZSwgTl92ZWNTdHJpZGUs
IDA+OjpmKG1hdHJpeF8sIHZlY3Rvcl8sIGkpOwogICAgfQoKICAgIGVudW0gewogICAgICAgIF9i
el9zdGF0aWNMZW5ndGhDb3VudCA9IDEsCiAgICAgICAgX2J6X2R5bmFtaWNMZW5ndGhDb3VudCA9
IDAsCiAgICAgICAgX2J6X3N0YXRpY0xlbmd0aCA9IE5fcm93cwoKCgoKCgoKICAgIH07CgogICAg
dW5zaWduZWQgX2J6X3N1Z2dlc3RMZW5ndGgoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBO
X3Jvd3M7CiAgICB9CgogICAgYm9vbCAgX2J6X2hhc0Zhc3RBY2Nlc3MoKSBjb25zdAogICAgeyBy
ZXR1cm4gdHJ1ZSA7IH0KCiAgICBUX251bXR5cGUgX2J6X2Zhc3RBY2Nlc3ModW5zaWduZWQgaSkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gX2J6X21ldGFfbWF0cml4VmVjdG9yUHJvZHVjdDI8
Tl9yb3dzLCBOX2NvbHVtbnMsIE5fcm93U3RyaWRlLAogICAgICAgICAgICBOX2NvbFN0cmlkZSwg
Tl92ZWNTdHJpZGUsIDA+OjpmKG1hdHJpeF8sIHZlY3Rvcl8sIGkpOwogICAgfQoKICAgIHVuc2ln
bmVkIGxlbmd0aCh1bnNpZ25lZCByZWNvbW1lbmRlZExlbmd0aCkgY29uc3QKICAgIHsgcmV0dXJu
IE5fcm93czsgfQoKICAgIGNvbnN0IFRfbnVtdHlwZTEqIG1hdHJpeCgpIGNvbnN0CiAgICB7IHJl
dHVybiBtYXRyaXhfOyB9CgogICAgY29uc3QgVF9udW10eXBlMiogdmVjdG9yKCkgY29uc3QKICAg
IHsgcmV0dXJuIHZlY3Rvcl87IH0KCnByb3RlY3RlZDoKICAgIGNvbnN0IFRfbnVtdHlwZTEqIG1h
dHJpeF87CiAgICBjb25zdCBUX251bXR5cGUyKiB2ZWN0b3JfOwp9OwoKdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlMSwgY2xhc3MgVF9udW10eXBlMiwgaW50IE5fcm93cywgaW50IE5fY29sdW1ucz4K
aW5saW5lIF9iel9WZWNFeHByPF9iel90aW55TWF0cml4VmVjdG9yUHJvZHVjdDxUX251bXR5cGUx
LCBUX251bXR5cGUyLCAKICAgIE5fcm93cywgTl9jb2x1bW5zLCBOX2NvbHVtbnMsIDEsIDE+ID4K
cHJvZHVjdChjb25zdCBUaW55TWF0cml4PFRfbnVtdHlwZTEsIE5fcm93cywgTl9jb2x1bW5zPiYg
bWF0cml4LAogICAgY29uc3QgVGlueVZlY3RvcjxUX251bXR5cGUyLCBOX2NvbHVtbnM+JiB2ZWN0
b3IpCnsKICAgIHR5cGVkZWYgX2J6X3RpbnlNYXRyaXhWZWN0b3JQcm9kdWN0PFRfbnVtdHlwZTEs
IFRfbnVtdHlwZTIsIE5fcm93cywgCiAgICAgICAgTl9jb2x1bW5zLCBOX2NvbHVtbnMsIDEsIDE+
IFRfZXhwcjsKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihtYXRyaXguZGF0
YSgpLCB2ZWN0b3IuZGF0YSgpKSk7Cn0KCiAKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNs
YXNzIFRfbnVtdHlwZTIsIGludCBOX3Jvd3MsIGludCBOX2NvbHVtbnM+CmlubGluZSBfYnpfVmVj
RXhwcjxfYnpfdGlueU1hdHJpeFZlY3RvclByb2R1Y3Q8VF9udW10eXBlMSwgVF9udW10eXBlMiwK
ICAgIE5fY29sdW1ucywgTl9yb3dzLCAxLCBOX2NvbHVtbnMsIDE+ID4KcHJvZHVjdFRyYW5zcG9z
ZShjb25zdCBUaW55TWF0cml4PFRfbnVtdHlwZTEsIE5fcm93cywgTl9jb2x1bW5zPiYgbWF0cml4
LAogICAgY29uc3QgVGlueVZlY3RvcjxUX251bXR5cGUyLCBOX3Jvd3M+JiB2ZWN0b3IpCnsKICAg
IHR5cGVkZWYgX2J6X3RpbnlNYXRyaXhWZWN0b3JQcm9kdWN0PFRfbnVtdHlwZTEsIFRfbnVtdHlw
ZTIsCiAgICAgICAgTl9jb2x1bW5zLCBOX3Jvd3MsIDEsIE5fY29sdW1ucywgMT4gVF9leHByOwog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKG1hdHJpeC5kYXRhKCksIHZlY3Rv
ci5kYXRhKCkpKTsKfQoKCiAKCnRlbXBsYXRlPGludCBOX3Jvd3MsIGludCBOX2NvbHVtbnMsIGlu
dCBOX3Jvd1N0cmlkZSwgaW50IE5fY29sU3RyaWRlLAogICAgaW50IE5fdmVjU3RyaWRlLCBpbnQg
Sj4KY2xhc3MgX2J6X21ldGFfbWF0cml4VmVjdG9yUHJvZHVjdDIgewoKcHVibGljOgogICAgZW51
bSB7IGdvID0gSiA8IChOX2NvbHVtbnMtMSkgfTsKICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX251
bXR5cGUxLCBjbGFzcyBUX251bXR5cGUyPiAKICAgIHN0YXRpYyBpbmxpbmUgdHlwZW5hbWUgIHBy
b21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10eXBlMiA+OjpUX3Byb21vdGUgCiAgICBm
KGNvbnN0IFRfbnVtdHlwZTEqIG1hdHJpeCwgY29uc3QgVF9udW10eXBlMiogdmVjdG9yLCBpbnQg
aSkKICAgIHsKICAgICAgICByZXR1cm4gbWF0cml4W2kgKiBOX3Jvd1N0cmlkZSArIEogKiBOX2Nv
bFN0cmlkZV0KICAgICAgICAgICAgKiB2ZWN0b3JbSiAqIE5fdmVjU3RyaWRlXQoKICAgICAgICAg
ICAgKyBfYnpfbWV0YV9tYXRyaXhWZWN0b3JQcm9kdWN0MjxOX3Jvd3MgKiBnbywgTl9jb2x1bW5z
ICogZ28sCiAgICAgICAgICAgICAgICBOX3Jvd1N0cmlkZSAqIGdvLCBOX2NvbFN0cmlkZSAqIGdv
LCBOX3ZlY1N0cmlkZSAqIGdvLCAoSisxKSpnbz4KICAgICAgICAgICAgICAgIDo6ZihtYXRyaXgs
IHZlY3RvciwgaSk7CiAgICB9CiAgICAKfTsKCnRlbXBsYXRlPD4KY2xhc3MgX2J6X21ldGFfbWF0
cml4VmVjdG9yUHJvZHVjdDI8MCwwLDAsMCwwLDA+IHsKcHVibGljOgogICAgc3RhdGljIGlubGlu
ZSBfYnpfbWV0YV9udWxsT3BlcmFuZCBmKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKiwgaW50KQog
ICAgeyByZXR1cm4gX2J6X21ldGFfbnVsbE9wZXJhbmQoKTsgfQp9OwoKdGVtcGxhdGU8aW50IE5f
cm93cywgaW50IE5fY29sdW1ucywgaW50IE5fcm93U3RyaWRlLCBpbnQgTl9jb2xTdHJpZGUsCiAg
ICBpbnQgTl92ZWNTdHJpZGUsIGludCBJPgpjbGFzcyBfYnpfbWV0YV9tYXRyaXhWZWN0b3JQcm9k
dWN0IHsKcHVibGljOgogICAgZW51bSB7IGdvID0gSSA8IChOX3Jvd3MgLSAxKSB9OwoKICAgIHRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTIsIGNsYXNzIFRfbnVtdHlw
ZTM+CiAgICBzdGF0aWMgaW5saW5lIHZvaWQgZihUaW55VmVjdG9yPFRfbnVtdHlwZTMsIE5fcm93
cz4mIHJlc3VsdCwKICAgICAgICBjb25zdCBUX251bXR5cGUxKiBtYXRyaXgsIGNvbnN0IFRfbnVt
dHlwZTIqIHZlY3RvcikKICAgIHsKICAgICAgICByZXN1bHRbSV0gPSBfYnpfbWV0YV9tYXRyaXhW
ZWN0b3JQcm9kdWN0MjxOX3Jvd3MsIE5fY29sdW1ucywKICAgICAgICAgICAgTl9yb3dTdHJpZGUs
IE5fY29sU3RyaWRlLCBOX3ZlY1N0cmlkZSwgMD46OmYobWF0cml4LHZlY3RvciwgSSk7CgogICAg
ICAgIF9iel9tZXRhX21hdHJpeFZlY3RvclByb2R1Y3Q8Tl9yb3dzICogZ28sIE5fY29sdW1ucyAq
IGdvLAogICAgICAgICAgICBOX3Jvd1N0cmlkZSAqIGdvLCBOX2NvbFN0cmlkZSAqIGdvLCBOX3Zl
Y1N0cmlkZSAqIGdvLCAoSSsxKSpnbz4KICAgICAgICAgICAgICA6OmYocmVzdWx0LCBtYXRyaXgs
IHZlY3Rvcik7CiAgICB9Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9tZXRhX21hdHJpeFZlY3Rv
clByb2R1Y3Q8MCwwLDAsMCwwLDA+IHsKcHVibGljOgogICAgc3RhdGljIGlubGluZSB2b2lkIGYo
Y29uc3QgX2J6X3RpbnlCYXNlJiwgY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqKQogICAgeyB9Cn07
Cgp9IAoKCgojIDE1MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rp
bnltYXQuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
bWV0YS9tYXRtYXQuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiNkZWZpbmUgQlpfTUVUQV9NQVRNQVRfSAoKCgoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgog
CnRlbXBsYXRlPGludCBOX3Jvd3MxLCBpbnQgTl9jb2x1bW5zLCBpbnQgTl9jb2x1bW5zMiwgaW50
IE5fcm93U3RyaWRlMSwKICAgIGludCBOX2NvbFN0cmlkZTEsIGludCBOX3Jvd1N0cmlkZTIsIGlu
dCBOX2NvbFN0cmlkZTIsIGludCBLPgpjbGFzcyBfYnpfbWV0YV9tYXRyaXhNYXRyaXhQcm9kdWN0
IHsKcHVibGljOgogICAgZW51bSB7IGdvID0gKEsgIT0gTl9jb2x1bW5zIC0gMSkgfTsKCiAgICB0
ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBjbGFzcyBUX251bXR5cGUyPgogICAgc3RhdGljIGlu
bGluZSB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgVF9udW10eXBlMSAsICBUX251bXR5cGUyID46
OlRfcHJvbW90ZSAKICAgIGYoY29uc3QgVF9udW10eXBlMSogbWF0cml4MSwgY29uc3QgVF9udW10
eXBlMiogbWF0cml4MiwgaW50IGksIGludCBqKQogICAgewogICAgICAgIHJldHVybiBtYXRyaXgx
W2kgKiBOX3Jvd1N0cmlkZTEgKyBLICogTl9jb2xTdHJpZGUxXQogICAgICAgICAgICAqIG1hdHJp
eDJbSyAqIE5fcm93U3RyaWRlMiArIGogKiBOX2NvbFN0cmlkZTJdCiAgICAgICAgICAgICsgX2J6
X21ldGFfbWF0cml4TWF0cml4UHJvZHVjdDxOX3Jvd3MxICogZ28sIE5fY29sdW1ucyAqIGdvLAog
ICAgICAgICAgICAgICAgTl9jb2x1bW5zMiAqIGdvLCBOX3Jvd1N0cmlkZTEgKiBnbywgTl9jb2xT
dHJpZGUxICogZ28sCiAgICAgICAgICAgICAgICBOX3Jvd1N0cmlkZTIgKiBnbywgTl9jb2xTdHJp
ZGUyICogZ28sIChLKzEpICogZ28+CiAgICAgICAgICAgICAgOjpmKG1hdHJpeDEsIG1hdHJpeDIs
IGksIGopOwogICAgfQp9OwoKdGVtcGxhdGU8PgpjbGFzcyBfYnpfbWV0YV9tYXRyaXhNYXRyaXhQ
cm9kdWN0PDAsMCwwLDAsMCwwLDAsMD4gewpwdWJsaWM6CiAgICBzdGF0aWMgaW5saW5lIF9iel9t
ZXRhX251bGxPcGVyYW5kIGYoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqLCBpbnQsIGludCkKICAg
IHsgcmV0dXJuIF9iel9tZXRhX251bGxPcGVyYW5kKCk7IH0KfTsKCgoKCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTIsIGludCBOX3Jvd3MxLCBpbnQgTl9jb2x1bW5z
LAogICAgaW50IE5fY29sdW1uczIsIGludCBOX3Jvd1N0cmlkZTEsIGludCBOX2NvbFN0cmlkZTEs
CiAgICBpbnQgTl9yb3dTdHJpZGUyLCBpbnQgTl9jb2xTdHJpZGUyPgpjbGFzcyBfYnpfdGlueU1h
dHJpeE1hdHJpeFByb2R1Y3QgewpwdWJsaWM6CiAgICB0eXBlZGVmIHR5cGVuYW1lICBwcm9tb3Rl
X3RyYWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBUX251bXR5cGU7
CgogICAgZW51bSB7IHJvd3MgPSBOX3Jvd3MxLCBjb2x1bW5zID0gTl9jb2x1bW5zMiB9OwoKICAg
IF9iel90aW55TWF0cml4TWF0cml4UHJvZHVjdChjb25zdCBUX251bXR5cGUxKiBtYXRyaXgxLAog
ICAgICAgIGNvbnN0IFRfbnVtdHlwZTIqIG1hdHJpeDIpCiAgICAgICAgOiBtYXRyaXgxXyhtYXRy
aXgxKSwgbWF0cml4Ml8obWF0cml4MikKICAgIHsgfQoKICAgIF9iel90aW55TWF0cml4TWF0cml4
UHJvZHVjdChjb25zdCBfYnpfdGlueU1hdHJpeE1hdHJpeFByb2R1Y3Q8VF9udW10eXBlMSwKICAg
ICAgICBUX251bXR5cGUyLCBOX3Jvd3MxLCBOX2NvbHVtbnMsIE5fY29sdW1uczIsIE5fcm93U3Ry
aWRlMSwgTl9jb2xTdHJpZGUxLAogICAgICAgIE5fcm93U3RyaWRlMiwgTl9jb2xTdHJpZGUyPiYg
eCkKICAgICAgICA6IG1hdHJpeDFfKHgubWF0cml4MV8pLCBtYXRyaXgyXyh4Lm1hdHJpeDJfKQog
ICAgeyB9CgogICAgY29uc3QgVF9udW10eXBlMSogbWF0cml4MSgpIGNvbnN0CiAgICB7IHJldHVy
biBtYXRyaXgxXzsgfQoKICAgIGNvbnN0IFRfbnVtdHlwZTIqIG1hdHJpeDIoKSBjb25zdAogICAg
eyByZXR1cm4gbWF0cml4Ml87IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaSwgaW50
IGopIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9tZXRhX21hdHJpeE1hdHJpeFByb2R1
Y3Q8Tl9yb3dzMSwgTl9jb2x1bW5zLAogICAgICAgICAgICBOX2NvbHVtbnMyLCBOX3Jvd1N0cmlk
ZTEsIE5fY29sU3RyaWRlMSwgTl9yb3dTdHJpZGUyLAogICAgICAgICAgICBOX2NvbFN0cmlkZTIs
IDA+OjpmKG1hdHJpeDFfLCBtYXRyaXgyXywgaSwgaik7CiAgICB9Cgpwcm90ZWN0ZWQ6CiAgICBj
b25zdCBUX251bXR5cGUxKiBtYXRyaXgxXzsKICAgIGNvbnN0IFRfbnVtdHlwZTIqIG1hdHJpeDJf
OyAgICAKfTsKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTIsIGlu
dCBOX3Jvd3MxLCBpbnQgTl9jb2x1bW5zMSwKICAgIGludCBOX2NvbHVtbnMyPgppbmxpbmUKX2J6
X3RpbnlNYXRFeHByPF9iel90aW55TWF0cml4TWF0cml4UHJvZHVjdDxUX251bXR5cGUxLCBUX251
bXR5cGUyLCBOX3Jvd3MxLCAKICAgIE5fY29sdW1uczEsIE5fY29sdW1uczIsIE5fY29sdW1uczEs
IDEsIE5fY29sdW1uczIsIDE+ID4KcHJvZHVjdChjb25zdCBUaW55TWF0cml4PFRfbnVtdHlwZTEs
IE5fcm93czEsIE5fY29sdW1uczE+JiBhLAogICAgY29uc3QgVGlueU1hdHJpeDxUX251bXR5cGUy
LCBOX2NvbHVtbnMxLCBOX2NvbHVtbnMyPiYgYikKewogICAgdHlwZWRlZiBfYnpfdGlueU1hdHJp
eE1hdHJpeFByb2R1Y3Q8VF9udW10eXBlMSwgVF9udW10eXBlMiwKICAgICAgICBOX3Jvd3MxLCBO
X2NvbHVtbnMxLCBOX2NvbHVtbnMyLCBOX2NvbHVtbnMxLCAxLCBOX2NvbHVtbnMyLCAxPiBUX2V4
cHI7CiAgICByZXR1cm4gX2J6X3RpbnlNYXRFeHByPFRfZXhwcj4oVF9leHByKGEuZGF0YSgpLCBi
LmRhdGEoKSkpOwp9Cgp9IAoKCgojIDE1MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L3RpbnltYXQuaCIgMgoKCgoKIyAxNiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L2FycmF5L3N0ZW5jaWxvcHMuaCIgMgoKCgpuYW1lc3BhY2UgIGJsaXR6
ICB7IAoKI2RlZmluZSBCWl9ERUNMQVJFX1NURU5DSUxfT1BFUkFUT1IxKG5hbWUsQSkgdGVtcGxh
dGU8Y2xhc3MgVD4gaW5saW5lIF9iel90eXBlbmFtZSBUOjpUX251bXR5cGUgbmFtZShUJiBBKSB7
CgoKCgojZGVmaW5lIEJaX0VORF9TVEVOQ0lMX09QRVJBVE9SICAgfQoKI2RlZmluZSBCWl9ERUNM
QVJFX1NURU5DSUxfT1BFUkFUT1IyKG5hbWUsQSxCKSB0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUg
X2J6X3R5cGVuYW1lIFQ6OlRfbnVtdHlwZSBuYW1lKFQmIEEsIFQmIEIpIHsKCgoKCiNkZWZpbmUg
QlpfREVDTEFSRV9TVEVOQ0lMX09QRVJBVE9SMyhuYW1lLEEsQixDKSB0ZW1wbGF0ZTxjbGFzcyBU
PiBpbmxpbmUgX2J6X3R5cGVuYW1lIFQ6OlRfbnVtdHlwZSBuYW1lKFQmIEEsIFQmIEIsIFQmIEMp
IHsKCgoKCiAKY29uc3QgZG91YmxlIHJlY2lwXzIgPSAuNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwOwpjb25zdCBkb3VibGUgcmVjaXBfNCA9IC4yNTAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA7CmNvbnN0IGRvdWJsZSByZWNpcF82
ID0gLjE2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NzsKY29uc3Qg
ZG91YmxlIHJlY2lwXzggPSAuMTI1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwOwpjb25zdCBkb3VibGUgcmVjaXBfMTIgPSAuMDgzMzMzMzMzMzMzMzMzMzMzMzMzMzMz
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzsKY29uc3QgZG91YmxlIHJlY2lwXzE0NCA9IC4wMDY5NDQ0
NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDsKCiAKCgoKdGVtcGxhdGU8
Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIExhcGxhY2lhbjJEIChUJiAg
IEEgKSB7IAogICAgcmV0dXJuIC00LjAgKiBBICsgQS5zaGlmdCgtMSwwKSArIEEuc2hpZnQoMSww
KSArIEEuc2hpZnQoLTEsMSkKICAgICAgKyBBLnNoaWZ0KDEsMSk7Cn0gCgp0ZW1wbGF0ZTxjbGFz
cyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgTGFwbGFjaWFuM0QgKFQmICAgQSAp
IHsgCiAgICByZXR1cm4gLTYuMCAqIEEgCiAgICAgICsgQS5zaGlmdCgtMSwwKSArIEEuc2hpZnQo
MSwwKSAKICAgICAgKyBBLnNoaWZ0KC0xLDEpICsgQS5zaGlmdCgxLDEpCiAgICAgICsgQS5zaGlm
dCgtMSwyKSArIEEuc2hpZnQoMSwyKTsKfSAKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBl
bmFtZSAgVDo6VF9udW10eXBlICBMYXBsYWNpYW4yRDQgKFQmICAgQSApIHsgCiAgICByZXR1cm4g
LTYwLiAqIEEgCiAgICAgICsgMTYuKihBLnNoaWZ0KC0xLDApICsgQS5zaGlmdCgxLDApICsgQS5z
aGlmdCgtMSwxKSArIEEuc2hpZnQoMSwxKSkKICAgICAgLSAgICAgKEEuc2hpZnQoLTIsMCkgKyBB
LnNoaWZ0KDIsMCkgKyBBLnNoaWZ0KC0yLDEpICsgQS5zaGlmdCgyLDEpKTsKfSAKCnRlbXBsYXRl
PGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBMYXBsYWNpYW4yRDRuIChU
JiAgIEEgKSB7IAogICAgcmV0dXJuIExhcGxhY2lhbjJENChBKSAqIHJlY2lwXzEyOwp9IAoKdGVt
cGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIExhcGxhY2lhbjNE
NCAoVCYgICBBICkgeyAKICAgIHJldHVybiAtOTAuICogQSAKICAgICAgKyAxNi4qKEEuc2hpZnQo
LTEsMCkgKyBBLnNoaWZ0KDEsMCkgKyBBLnNoaWZ0KC0xLDEpICsgQS5zaGlmdCgxLDEpCiAgICAg
ICAgICAgKyBBLnNoaWZ0KC0xLDIpICsgQS5zaGlmdCgxLDIpKQogICAgICAtICAgICAoQS5zaGlm
dCgtMiwwKSArIEEuc2hpZnQoMiwwKSArIEEuc2hpZnQoLTIsMSkgKyBBLnNoaWZ0KDIsMSkKICAg
ICAgICAgICArIEEuc2hpZnQoLTIsMikgKyBBLnNoaWZ0KDIsMikpOwp9IAoKdGVtcGxhdGU8Y2xh
c3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIExhcGxhY2lhbjNENG4gKFQmICAg
QSApIHsgCiAgICByZXR1cm4gTGFwbGFjaWFuM0Q0KEEpICogcmVjaXBfMTI7Cn0gCgogCgoKCiNk
ZWZpbmUgQlpfREVDTEFSRV9ESUZGKG5hbWUpIHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBfYnpf
dHlwZW5hbWUgVDo6VF9udW10eXBlIG5hbWUoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKQoKCgoj
ZGVmaW5lIEJaX0RFQ0xBUkVfTVVMVElESUZGKG5hbWUpIHRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSBfYnpfdHlwZW5hbWUgbXVsdGljb21wb25lbnRfdHJhaXRzPF9iel90eXBlbmFtZSBUOjpUX251
bXR5cGU+OjpUX2VsZW1lbnQgbmFtZShUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkKCgoKCiAKCgoK
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGNlbnRyYWwx
MiAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVybiBBLnNoaWZ0KDEsZGltKSAt
IEEuc2hpZnQoLTEsZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBU
OjpUX251bXR5cGUgIGNlbnRyYWwyMiAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJl
dHVybiBBLnNoaWZ0KC0xLGRpbSkgLSAyLiAqIEEgKyBBLnNoaWZ0KCsxLGRpbSk7Cn0KCnRlbXBs
YXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBjZW50cmFsMzIgKFQm
IEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4gLUEuc2hpZnQoLTIsZGltKSArIDIu
KihBLnNoaWZ0KC0xLGRpbSkgLSBBLnNoaWZ0KCsxLGRpbSkpCiAgICArIEEuc2hpZnQoKzIsZGlt
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGNl
bnRyYWw0MiAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVybiBBLnNoaWZ0KC0y
LGRpbSkgKyBBLnNoaWZ0KDIsZGltKSAtNC4qKEEuc2hpZnQoLTEsZGltKStBLnNoaWZ0KCsxLGRp
bSkpIAogICAgKzYuKkEuc2hpZnQoMCxkaW0pOwp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlu
bGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10
eXBlPjo6VF9lbGVtZW50ICBjZW50cmFsMTIgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewog
IHJldHVybiBBLnNoaWZ0KDEsZGltKVtjb21wXSAtIEEuc2hpZnQoLTEsZGltKVtjb21wXTsKfQoK
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8
IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGNlbnRyYWwyMiAoVCYgQSwgaW50
IGNvbXAsIGludCBkaW0pICB7CiAgcmV0dXJuIEEuc2hpZnQoLTEsZGltKVtjb21wXSAtIDIuICog
KCpBKVtjb21wXSArIEEuc2hpZnQoKzEsZGltKVtjb21wXTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4g
aW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251
bXR5cGU+OjpUX2VsZW1lbnQgIGNlbnRyYWwzMiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7
CiAgcmV0dXJuIC1BLnNoaWZ0KC0yLGRpbSlbY29tcF0gKyAyLipBLnNoaWZ0KC0xLGRpbSlbY29t
cF0gCiAgICAtMi4qQS5zaGlmdCgrMSxkaW0pW2NvbXBdICsgQS5zaGlmdCgrMixkaW0pW2NvbXBd
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3Ry
YWl0czwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgY2VudHJhbDQyIChUJiBB
LCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1cm4gQS5zaGlmdCgtMixkaW0pW2NvbXBdIC00
LipBLnNoaWZ0KC0xLGRpbSlbY29tcF0gCiAgICArNi4qQS5zaGlmdCgwLGRpbSlbY29tcF0gLTQu
KkEuc2hpZnQoMSxkaW0pW2NvbXBdICtBLnNoaWZ0KDIsZGltKVtjb21wXTsKfQoKIAoKCgp0ZW1w
bGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgY2VudHJhbDEybiAo
VCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVybiBjZW50cmFsMTIoQSxkaW0pICog
cmVjaXBfMjsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5
cGUgIGNlbnRyYWwyMm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4gY2Vu
dHJhbDIyKEEsZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGUgIGNlbnRyYWwzMm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1
cm4gY2VudHJhbDMyKEEsZGltKSAqIHJlY2lwXzI7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBjZW50cmFsNDJuIChUJiBBLCBpbnQgZGltID0gZmly
c3REaW0pICB7CiAgcmV0dXJuIGNlbnRyYWw0MihBLGRpbSk7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xh
c3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBU
OjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGNlbnRyYWwxMm4gKFQmIEEsIGludCBjb21wLCBpbnQg
ZGltKSAgewogIHJldHVybiBjZW50cmFsMTIoQSxjb21wLGRpbSkgKiByZWNpcF8yOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlw
ZW5hbWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgY2VudHJhbDIybiAoVCYgQSwgaW50IGNv
bXAsIGludCBkaW0pICB7CiAgcmV0dXJuIGNlbnRyYWwyMihBLGNvbXAsZGltKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVu
YW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGNlbnRyYWwzMm4gKFQmIEEsIGludCBjb21w
LCBpbnQgZGltKSAgewogIHJldHVybiBjZW50cmFsMzIoQSxjb21wLGRpbSkgKiByZWNpcF8yOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0
czwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgY2VudHJhbDQybiAoVCYgQSwg
aW50IGNvbXAsIGludCBkaW0pICB7CiAgcmV0dXJuIGNlbnRyYWw0MihBLGNvbXAsZGltKTsKfQoK
IAoKCgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgY2Vu
dHJhbDE0IChUJiBBLCBpbnQgZGltID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIChBLnNoaWZ0KC0y
LGRpbSkgLSBBLnNoaWZ0KDIsZGltKSkgCiAgICAgKyA4LiooQS5zaGlmdCgxLGRpbSktQS5zaGlm
dCgtMSxkaW0pKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251
bXR5cGUgIGNlbnRyYWwyNCAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVybiAt
MzAuKkEgKyAxNi4qKEEuc2hpZnQoLTEsZGltKStBLnNoaWZ0KDEsZGltKSkKICAgIC0gKEEuc2hp
ZnQoLTIsZGltKStBLnNoaWZ0KDIsZGltKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0
eXBlbmFtZSAgVDo6VF9udW10eXBlICBjZW50cmFsMzQgKFQmIEEsIGludCBkaW0gPSBmaXJzdERp
bSkgIHsKICByZXR1cm4gQS5zaGlmdCgtMyxkaW0pIC0gOC4qQS5zaGlmdCgtMixkaW0pICsxMy4q
QS5zaGlmdCgtMSxkaW0pIAogICAgIC0xMy4qQS5zaGlmdCgxLGRpbSkrOC4qQS5zaGlmdCgyLGRp
bSktQS5zaGlmdCgzLGRpbSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAg
VDo6VF9udW10eXBlICBjZW50cmFsNDQgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICBy
ZXR1cm4gLTEuKkEuc2hpZnQoLTMsZGltKSsxMi4qQS5zaGlmdCgtMixkaW0pLTM5LipBLnNoaWZ0
KC0xLGRpbSkKICAgICs1Ni4qQS0zOS4qQS5zaGlmdCgxLGRpbSkrMTIuKkEuc2hpZnQoMixkaW0p
LUEuc2hpZnQoMyxkaW0pOwp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFt
ZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVt
ZW50ICBjZW50cmFsMTQgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJldHVybiBBLnNo
aWZ0KC0yLGRpbSlbY29tcF0gLSA4LiAqIEEuc2hpZnQoLTEsZGltKVtjb21wXSAKICAgICsgOC4g
KiBBLnNoaWZ0KDEsZGltKVtjb21wXSAtIEEuc2hpZnQoMixkaW0pW2NvbXBdOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgY2VudHJhbDI0IChUJiBBLCBpbnQgY29tcCwg
aW50IGRpbSkgIHsKICByZXR1cm4gLSBBLnNoaWZ0KC0yLGRpbSlbY29tcF0gKyAxNi4qQS5zaGlm
dCgtMSxkaW0pW2NvbXBdIC0gMzAuKigqQSlbY29tcF0KICAgICsgMTYuKkEuc2hpZnQoMSxkaW0p
W2NvbXBdIC0gQS5zaGlmdCgyLGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBl
Pjo6VF9lbGVtZW50ICBjZW50cmFsMzQgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJl
dHVybiBBLnNoaWZ0KC0zLGRpbSlbY29tcF0gLSA4LipBLnNoaWZ0KC0yLGRpbSlbY29tcF0gCiAg
ICArMTMuKkEuc2hpZnQoLTEsZGltKVtjb21wXSAtIDEzLipBLnNoaWZ0KDEsZGltKVtjb21wXSAK
ICAgICsgOC4qQS5zaGlmdCgyLGRpbSlbY29tcF0gLSBBLnNoaWZ0KDMsZGltKVtjb21wXTsKfQoK
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8
IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGNlbnRyYWw0NCAoVCYgQSwgaW50
IGNvbXAsIGludCBkaW0pICB7CiAgcmV0dXJuIC0xLipBLnNoaWZ0KC0zLGRpbSlbY29tcF0rMTIu
KkEuc2hpZnQoLTIsZGltKVtjb21wXQogICAgLTM5LipBLnNoaWZ0KC0xLGRpbSlbY29tcF0gKzU2
LiooKkEpW2NvbXBdLTM5LipBLnNoaWZ0KDEsZGltKVtjb21wXQogICAgKzEyLipBLnNoaWZ0KDIs
ZGltKVtjb21wXS1BLnNoaWZ0KDMsZGltKVtjb21wXTsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBU
PiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgY2VudHJhbDE0biAoVCYgQSwgaW50IGRp
bSA9IGZpcnN0RGltKSAgewogIHJldHVybiBjZW50cmFsMTQoQSxkaW0pICogcmVjaXBfMTI7Cn0K
CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBjZW50cmFs
MjRuIChUJiBBLCBpbnQgZGltID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIGNlbnRyYWwyNChBLGRp
bSkgKiByZWNpcF8xMjsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGUgIGNlbnRyYWwzNG4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1
cm4gY2VudHJhbDM0KEEsZGltKSAqIHJlY2lwXzg7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBjZW50cmFsNDRuIChUJiBBLCBpbnQgZGltID0gZmly
c3REaW0pICB7CiAgcmV0dXJuIGNlbnRyYWw0NChBLGRpbSkgKiByZWNpcF82Owp9CgogCgoKCnRl
bXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0
eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50ICBjZW50cmFsMTRuIChUJiBBLCBpbnQg
Y29tcCwgaW50IGRpbSkgIHsKICByZXR1cm4gY2VudHJhbDE0KEEsY29tcCxkaW0pICogcmVjaXBf
MTI7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRf
dHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50ICBjZW50cmFsMjRuIChU
JiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1cm4gY2VudHJhbDI0KEEsY29tcCxkaW0p
ICogcmVjaXBfMTI7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgbXVsdGlj
b21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50ICBjZW50
cmFsMzRuIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1cm4gY2VudHJhbDM0KEEs
Y29tcCxkaW0pICogcmVjaXBfODsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1l
ICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1l
bnQgIGNlbnRyYWw0NG4gKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJldHVybiBjZW50
cmFsNDQoQSxjb21wLGRpbSkgKiByZWNpcF82Owp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlu
bGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBiYWNrd2FyZDExIChUJiBBLCBpbnQgZGltID0g
Zmlyc3REaW0pICB7CiAgcmV0dXJuIEEgLSBBLnNoaWZ0KC0xLGRpbSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBiYWNrd2FyZDIxIChUJiBBLCBp
bnQgZGltID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIEEgLTIuKkEuc2hpZnQoLTEsZGltKSArIEEu
c2hpZnQoLTIsZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGUgIGJhY2t3YXJkMzEgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1
cm4gQSAtMy4qQS5zaGlmdCgtMSxkaW0pICsgMy4qQS5zaGlmdCgtMixkaW0pLUEuc2hpZnQoLTMs
ZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUg
IGJhY2t3YXJkNDEgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4gQSAtIDQu
KkEuc2hpZnQoLTEsZGltKSArIDYuKkEuc2hpZnQoLTIsZGltKSAtNC4qQS5zaGlmdCgtMyxkaW0p
IAogICAgKyBBLnNoaWZ0KC00LGRpbSk7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5l
IHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+
OjpUX2VsZW1lbnQgIGJhY2t3YXJkMTEgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJl
dHVybiAoKkEpW2NvbXBdIC0gQS5zaGlmdCgtMSxkaW0pW2NvbXBdOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgYmFja3dhcmQyMSAoVCYgQSwgaW50IGNvbXAsIGludCBk
aW0pICB7CiAgcmV0dXJuICgqQSlbY29tcF0gLTIuKkEuc2hpZnQoLTEsZGltKVtjb21wXSArIEEu
c2hpZnQoLTIsZGltKVtjb21wXTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1l
ICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1l
bnQgIGJhY2t3YXJkMzEgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJldHVybiAoKkEp
W2NvbXBdIC0zLipBLnNoaWZ0KC0xLGRpbSlbY29tcF0gKyAzLipBLnNoaWZ0KC0yLGRpbSlbY29t
cF0KICAgIC1BLnNoaWZ0KC0zLGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBl
Pjo6VF9lbGVtZW50ICBiYWNrd2FyZDQxIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICBy
ZXR1cm4gKCpBKVtjb21wXSAtIDQuKkEuc2hpZnQoLTEsZGltKVtjb21wXSArIDYuKkEuc2hpZnQo
LTIsZGltKVtjb21wXQogICAgLTQuKkEuc2hpZnQoLTMsZGltKVtjb21wXSArIEEuc2hpZnQoLTQs
ZGltKVtjb21wXTsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZSAgYmFja3dhcmQxMW4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0
dXJuIGJhY2t3YXJkMTEoQSxkaW0pOyB9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFt
ZSAgVDo6VF9udW10eXBlICBiYWNrd2FyZDIxbiAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAg
eyByZXR1cm4gYmFja3dhcmQyMShBLGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5
cGVuYW1lICBUOjpUX251bXR5cGUgIGJhY2t3YXJkMzFuIChUJiBBLCBpbnQgZGltID0gZmlyc3RE
aW0pICB7IHJldHVybiBiYWNrd2FyZDMxKEEsZGltKTsgfQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxp
bmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgYmFja3dhcmQ0MW4gKFQmIEEsIGludCBkaW0gPSBm
aXJzdERpbSkgIHsgcmV0dXJuIGJhY2t3YXJkNDEoQSxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNs
YXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAg
VDo6VF9udW10eXBlPjo6VF9lbGVtZW50ICBiYWNrd2FyZDExbiAoVCYgQSwgaW50IGNvbXAsIGlu
dCBkaW0pICB7IHJldHVybiBiYWNrd2FyZDExKEEsY29tcCxkaW0pOyB9CnRlbXBsYXRlPGNsYXNz
IFQ+IGlubGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6
VF9udW10eXBlPjo6VF9lbGVtZW50ICBiYWNrd2FyZDIxbiAoVCYgQSwgaW50IGNvbXAsIGludCBk
aW0pICB7IHJldHVybiBiYWNrd2FyZDIxKEEsY29tcCxkaW0pOyB9CnRlbXBsYXRlPGNsYXNzIFQ+
IGlubGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9u
dW10eXBlPjo6VF9lbGVtZW50ICBiYWNrd2FyZDMxbiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0p
ICB7IHJldHVybiBiYWNrd2FyZDMxKEEsY29tcCxkaW0pOyB9CnRlbXBsYXRlPGNsYXNzIFQ+IGlu
bGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10
eXBlPjo6VF9lbGVtZW50ICBiYWNrd2FyZDQxbiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7
IHJldHVybiBiYWNrd2FyZDQxKEEsY29tcCxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+
IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBiYWNrd2FyZDEyIChUJiBBLCBpbnQgZGlt
ID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIDMuKkEgLTQuKkEuc2hpZnQoLTEsZGltKSArIEEuc2hp
ZnQoLTIsZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251
bXR5cGUgIGJhY2t3YXJkMjIgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4g
Mi4qQSAtNS4qQS5zaGlmdCgtMSxkaW0pICsgNC4qQS5zaGlmdCgtMixkaW0pIC1BLnNoaWZ0KC0z
LGRpbSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBl
ICBiYWNrd2FyZDMyIChUJiBBLCBpbnQgZGltID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIDUuKkEg
LSAxOC4qQS5zaGlmdCgtMSxkaW0pICsgMjQuKkEuc2hpZnQoLTIsZGltKSAtMTQuKkEuc2hpZnQo
LTMsZGltKSAKICAgICsgMy4qQS5zaGlmdCgtNCxkaW0pOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBp
bmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgYmFja3dhcmQ0MiAoVCYgQSwgaW50IGRpbSA9
IGZpcnN0RGltKSAgewogIHJldHVybiAzLipBIC0xNC4qQS5zaGlmdCgtMSxkaW0pICsgMjYuKkEu
c2hpZnQoLTIsZGltKSAtMjQuKkEuc2hpZnQoLTMsZGltKSAKICAgICsgMTEuKkEuc2hpZnQoLTQs
ZGltKSAtMi4qQS5zaGlmdCgtNSxkaW0pOwp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBl
Pjo6VF9lbGVtZW50ICBiYWNrd2FyZDEyIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICBy
ZXR1cm4gMy4qKCpBKVtjb21wXSAtNC4qQS5zaGlmdCgtMSxkaW0pW2NvbXBdICsgQS5zaGlmdCgt
MixkaW0pW2NvbXBdOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRp
Y29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgYmFj
a3dhcmQyMiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7CiAgcmV0dXJuIDIuKigqQSlbY29t
cF0gLTUuKkEuc2hpZnQoLTEsZGltKVtjb21wXSArIDQuKkEuc2hpZnQoLTIsZGltKVtjb21wXQog
ICAgIC1BLnNoaWZ0KC0zLGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0
eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6
VF9lbGVtZW50ICBiYWNrd2FyZDMyIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1
cm4gNS4qKCpBKVtjb21wXSAtIDE4LipBLnNoaWZ0KC0xLGRpbSlbY29tcF0gKyAyNC4qQS5zaGlm
dCgtMixkaW0pW2NvbXBdCiAgICAgLTE0LipBLnNoaWZ0KC0zLGRpbSlbY29tcF0gKyAzLipBLnNo
aWZ0KC00LGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAg
bXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50
ICBiYWNrd2FyZDQyIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1cm4gMy4qKCpB
KVtjb21wXSAtMTQuKkEuc2hpZnQoLTEsZGltKVtjb21wXSArIDI2LipBLnNoaWZ0KC0yLGRpbSlb
Y29tcF0KICAgIC0yNC4qQS5zaGlmdCgtMyxkaW0pW2NvbXBdICsgMTEuKkEuc2hpZnQoLTQsZGlt
KVtjb21wXSAKICAgIC0yLipBLnNoaWZ0KC01LGRpbSlbY29tcF07Cn0KCiAKCgoKdGVtcGxhdGU8
Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGJhY2t3YXJkMTJuIChUJiBB
LCBpbnQgZGltID0gZmlyc3REaW0pICB7IHJldHVybiBiYWNrd2FyZDEyKEEsZGltKSAqIHJlY2lw
XzI7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGJh
Y2t3YXJkMjJuIChUJiBBLCBpbnQgZGltID0gZmlyc3REaW0pICB7IHJldHVybiBiYWNrd2FyZDIy
KEEsZGltKTsgfQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlw
ZSAgYmFja3dhcmQzMm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJuIGJhY2t3
YXJkMzIoQSxkaW0pICogcmVjaXBfMjsgfQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZSAgYmFja3dhcmQ0Mm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkg
IHsgcmV0dXJuIGJhY2t3YXJkNDIoQSxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlu
bGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10
eXBlPjo6VF9lbGVtZW50ICBiYWNrd2FyZDEybiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7
IHJldHVybiBiYWNrd2FyZDEyKEEsY29tcCxkaW0pICogcmVjaXBfMjsgfQp0ZW1wbGF0ZTxjbGFz
cyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgYmFja3dhcmQyMm4gKFQmIEEsIGludCBjb21wLCBpbnQg
ZGltKSAgeyByZXR1cm4gYmFja3dhcmQyMihBLGNvbXAsZGltKTsgfQp0ZW1wbGF0ZTxjbGFzcyBU
PiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6OlRf
bnVtdHlwZT46OlRfZWxlbWVudCAgYmFja3dhcmQzMm4gKFQmIEEsIGludCBjb21wLCBpbnQgZGlt
KSAgeyByZXR1cm4gYmFja3dhcmQzMihBLGNvbXAsZGltKSAqIHJlY2lwXzI7IH0KdGVtcGxhdGU8
Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1l
ICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGJhY2t3YXJkNDJuIChUJiBBLCBpbnQgY29tcCwg
aW50IGRpbSkgIHsgcmV0dXJuIGJhY2t3YXJkNDIoQSxjb21wLGRpbSk7IH0KCiAKCgoKdGVtcGxh
dGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGZvcndhcmQxMSAoVCYg
QSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVybiBBLnNoaWZ0KDEsZGltKSAtIEE7Cn0K
CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBmb3J3YXJk
MjEgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4gQSAtIDIuKkEuc2hpZnQo
MSxkaW0pICsgQS5zaGlmdCgyLGRpbSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBl
bmFtZSAgVDo6VF9udW10eXBlICBmb3J3YXJkMzEgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkg
IHsKICByZXR1cm4gLUEgKyAzLipBLnNoaWZ0KDEsZGltKSAtMy4qQS5zaGlmdCgyLGRpbSkgKyBB
LnNoaWZ0KDMsZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGUgIGZvcndhcmQ0MSAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVy
biBBIC00LipBLnNoaWZ0KDEsZGltKSArIDYuKkEuc2hpZnQoMixkaW0pIC00LipBLnNoaWZ0KDMs
ZGltKSAKICAgICsgQS5zaGlmdCg0LGRpbSk7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5s
aW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5
cGU+OjpUX2VsZW1lbnQgIGZvcndhcmQxMSAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7CiAg
cmV0dXJuIC0oKkEpW2NvbXBdK0Euc2hpZnQoMSxkaW0pW2NvbXBdOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgZm9yd2FyZDIxIChUJiBBLCBpbnQgY29tcCwgaW50IGRp
bSkgIHsKICByZXR1cm4gKCpBKVtjb21wXSAtIDIuKkEuc2hpZnQoMSxkaW0pW2NvbXBdICsgQS5z
aGlmdCgyLGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAg
bXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50
ICBmb3J3YXJkMzEgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJldHVybiAtKCpBKVtj
b21wXSArIDMuKkEuc2hpZnQoMSxkaW0pW2NvbXBdIC0zLipBLnNoaWZ0KDIsZGltKVtjb21wXSAK
ICAgICsgQS5zaGlmdCgzLGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0
eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6
VF9lbGVtZW50ICBmb3J3YXJkNDEgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJldHVy
biAoKkEpW2NvbXBdIC00LipBLnNoaWZ0KDEsZGltKVtjb21wXSArIDYuKkEuc2hpZnQoMixkaW0p
W2NvbXBdIAogICAgLTQuKkEuc2hpZnQoMyxkaW0pW2NvbXBdICsgQS5zaGlmdCg0LGRpbSlbY29t
cF07Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5
cGUgIGZvcndhcmQxMW4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJuIGZvcndh
cmQxMShBLGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251
bXR5cGUgIGZvcndhcmQyMW4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJuIGZv
cndhcmQyMShBLGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGUgIGZvcndhcmQzMW4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJu
IGZvcndhcmQzMShBLGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBU
OjpUX251bXR5cGUgIGZvcndhcmQ0MW4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0
dXJuIGZvcndhcmQ0MShBLGRpbSk7IH0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5
cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpU
X2VsZW1lbnQgIGZvcndhcmQxMW4gKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgeyByZXR1cm4g
Zm9yd2FyZDExKEEsY29tcCxkaW0pOyB9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFt
ZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVt
ZW50ICBmb3J3YXJkMjFuIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsgcmV0dXJuIGZvcndh
cmQyMShBLGNvbXAsZGltKTsgfQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11
bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAg
Zm9yd2FyZDMxbiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7IHJldHVybiBmb3J3YXJkMzEo
QSxjb21wLGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNv
bXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGZvcndh
cmQ0MW4gKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgeyByZXR1cm4gZm9yd2FyZDQxKEEsY29t
cCxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9u
dW10eXBlICBmb3J3YXJkMTIgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4g
LTMuKkEgKyA0LipBLnNoaWZ0KDEsZGltKSAtIEEuc2hpZnQoMixkaW0pOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZm9yd2FyZDIyIChUJiBBLCBp
bnQgZGltID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIDIuKkEgLTUuKkEuc2hpZnQoMSxkaW0pICsg
NC4qQS5zaGlmdCgyLGRpbSkgLUEuc2hpZnQoMyxkaW0pOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBp
bmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZm9yd2FyZDMyIChUJiBBLCBpbnQgZGltID0g
Zmlyc3REaW0pICB7CiAgcmV0dXJuIC01LipBICsgMTguKkEuc2hpZnQoMSxkaW0pIC0yNC4qQS5z
aGlmdCgyLGRpbSkgCiAgICArIDE0LipBLnNoaWZ0KDMsZGltKSAtMy4qQS5zaGlmdCg0LGRpbSk7
Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBmb3J3
YXJkNDIgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4gMy4qQSAtMTQuKkEu
c2hpZnQoMSxkaW0pICsgMjYuKkEuc2hpZnQoMixkaW0pIC0yNC4qQS5zaGlmdCgzLGRpbSkgCiAg
ICArMTEuKkEuc2hpZnQoNCxkaW0pIC0yLipBLnNoaWZ0KDUsZGltKTsKfQoKIAoKCgp0ZW1wbGF0
ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgZm9yd2FyZDEyIChUJiBBLCBpbnQgY29tcCwg
aW50IGRpbSkgIHsKICByZXR1cm4gLTMuKigqQSlbY29tcF0gKyA0LipBLnNoaWZ0KDEsZGltKVtj
b21wXSAtIEEuc2hpZnQoMixkaW0pW2NvbXBdOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUg
dHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZT46
OlRfZWxlbWVudCAgZm9yd2FyZDIyIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1
cm4gMi4qKCpBKVtjb21wXSAtNS4qQS5zaGlmdCgxLGRpbSlbY29tcF0gKyA0LipBLnNoaWZ0KDIs
ZGltKVtjb21wXSAKICAgIC1BLnNoaWZ0KDMsZGltKVtjb21wXTsKfQoKdGVtcGxhdGU8Y2xhc3Mg
VD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpU
X251bXR5cGU+OjpUX2VsZW1lbnQgIGZvcndhcmQzMiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0p
ICB7CiAgcmV0dXJuIC01LiooKkEpW2NvbXBdICsgMTguKkEuc2hpZnQoMSxkaW0pW2NvbXBdIC0y
NC4qQS5zaGlmdCgyLGRpbSlbY29tcF0KICAgICsgMTQuKkEuc2hpZnQoMyxkaW0pW2NvbXBdIC0z
LipBLnNoaWZ0KDQsZGltKVtjb21wXTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVu
YW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2Vs
ZW1lbnQgIGZvcndhcmQ0MiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7CiAgcmV0dXJuIDMu
KigqQSlbY29tcF0gLTE0LipBLnNoaWZ0KDEsZGltKVtjb21wXSArIDI2LipBLnNoaWZ0KDIsZGlt
KVtjb21wXSAKICAgIC0yNC4qQS5zaGlmdCgzLGRpbSlbY29tcF0gKzExLipBLnNoaWZ0KDQsZGlt
KVtjb21wXSAKICAgICsgMTEuKkEuc2hpZnQoNSxkaW0pW2NvbXBdOwp9CgoKIAoKCgp0ZW1wbGF0
ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZm9yd2FyZDEybiAoVCYg
QSwgaW50IGRpbSA9IGZpcnN0RGltKSAgeyByZXR1cm4gZm9yd2FyZDEyKEEsZGltKSAqIHJlY2lw
XzI7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGZv
cndhcmQyMm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJuIGZvcndhcmQyMihB
LGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUg
IGZvcndhcmQzMm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJuIGZvcndhcmQz
MihBLGRpbSkgKiByZWNpcF8yOyB9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAg
VDo6VF9udW10eXBlICBmb3J3YXJkNDJuIChUJiBBLCBpbnQgZGltID0gZmlyc3REaW0pICB7IHJl
dHVybiBmb3J3YXJkNDIoQSxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0
eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6
VF9lbGVtZW50ICBmb3J3YXJkMTJuIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsgcmV0dXJu
IGZvcndhcmQxMihBLGNvbXAsZGltKSAqIHJlY2lwXzI7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5s
aW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5
cGU+OjpUX2VsZW1lbnQgIGZvcndhcmQyMm4gKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgeyBy
ZXR1cm4gZm9yd2FyZDIyKEEsY29tcCxkaW0pOyB9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0
eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6
VF9lbGVtZW50ICBmb3J3YXJkMzJuIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsgcmV0dXJu
IGZvcndhcmQzMihBLGNvbXAsZGltKSAqIHJlY2lwXzI7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5s
aW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5
cGU+OjpUX2VsZW1lbnQgIGZvcndhcmQ0Mm4gKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgeyBy
ZXR1cm4gZm9yd2FyZDQyKEEsY29tcCxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+Cmlu
bGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDI+IGdyYWQyRChUJiBBKSB7
CiAgcmV0dXJuIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMj4oCiAgICBjZW50
cmFsMTIoQSxmaXJzdERpbSksCiAgICBjZW50cmFsMTIoQSxzZWNvbmREaW0pKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMj4g
Z3JhZDJENChUJiBBKSB7CiAgcmV0dXJuIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5
cGUsMj4oCiAgICBjZW50cmFsMTQoQSxmaXJzdERpbSksCiAgICBjZW50cmFsMTQoQSxzZWNvbmRE
aW0pKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBU
OjpUX251bXR5cGUsMz4gZ3JhZDNEKFQmIEEpIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZSwzPigKICAgIGNlbnRyYWwxMihBLGZpcnN0RGltKSwKICAgIGNlbnRy
YWwxMihBLHNlY29uZERpbSksCiAgICBjZW50cmFsMTIoQSx0aGlyZERpbSkpOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBUPgppbmxpbmUgVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwzPiBn
cmFkM0Q0KFQmIEEpIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlw
ZSwzPigKICAgIGNlbnRyYWwxNChBLGZpcnN0RGltKSwKICAgIGNlbnRyYWwxNChBLHNlY29uZERp
bSksCiAgICBjZW50cmFsMTQoQSx0aGlyZERpbSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxp
bmUgVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwyPiBncmFkMkRuKFQmIEEpIHsK
ICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwyPigKICAgIGNlbnRy
YWwxMm4oQSxmaXJzdERpbSksCiAgICBjZW50cmFsMTJuKEEsc2Vjb25kRGltKSk7Cn0KCnRlbXBs
YXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDI+
IGdyYWQyRDRuKFQmIEEpIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVt
dHlwZSwyPigKICAgIGNlbnRyYWwxNG4oQSxmaXJzdERpbSksCiAgICBjZW50cmFsMTRuKEEsc2Vj
b25kRGltKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFt
ZSAgVDo6VF9udW10eXBlLDM+IGdyYWQzRG4oVCYgQSkgewogIHJldHVybiBUaW55VmVjdG9yPCB0
eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+KAogICAgY2VudHJhbDEybihBLGZpcnN0RGltKSwKICAg
IGNlbnRyYWwxMm4oQSxzZWNvbmREaW0pLAogICAgY2VudHJhbDEybihBLHRoaXJkRGltKSk7Cn0K
CnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10
eXBlLDM+IGdyYWQzRDRuKFQmIEEpIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZSwzPigKICAgIGNlbnRyYWwxNG4oQSxmaXJzdERpbSksCiAgICBjZW50cmFsMTRu
KEEsc2Vjb25kRGltKSwKICAgIGNlbnRyYWwxNG4oQSx0aGlyZERpbSkpOwp9CgogCgoKCnRlbXBs
YXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDI+
IGdyYWRTcXIyRChUJiBBKSB7CiAgcmV0dXJuIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251
bXR5cGUsMj4oCiAgICBjZW50cmFsMjIoQSxmaXJzdERpbSksCiAgICBjZW50cmFsMjIoQSxzZWNv
bmREaW0pKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1l
ICBUOjpUX251bXR5cGUsMj4gZ3JhZFNxcjJENChUJiBBKSB7CiAgcmV0dXJuIFRpbnlWZWN0b3I8
IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMj4oCiAgICBjZW50cmFsMjQoQSxmaXJzdERpbSksCiAg
ICBjZW50cmFsMjQoQSxzZWNvbmREaW0pKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRp
bnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMz4gZ3JhZFNxcjNEKFQmIEEpIHsKICBy
ZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwzPigKICAgIGNlbnRyYWwy
MihBLGZpcnN0RGltKSwKICAgIGNlbnRyYWwyMihBLHNlY29uZERpbSksCiAgICBjZW50cmFsMjIo
QSx0aGlyZERpbSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVGlueVZlY3RvcjwgdHlw
ZW5hbWUgIFQ6OlRfbnVtdHlwZSwzPiBncmFkU3FyM0Q0KFQmIEEpIHsKICByZXR1cm4gVGlueVZl
Y3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwzPigKICAgIGNlbnRyYWwyNChBLGZpcnN0RGlt
KSwKICAgIGNlbnRyYWwyNChBLHNlY29uZERpbSksCiAgICBjZW50cmFsMjQoQSx0aGlyZERpbSkp
Owp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAg
VDo6VF9udW10eXBlLDI+IGdyYWRTcXIyRG4oVCYgQSkgewogIHJldHVybiBncmFkU3FyMkQoQSk7
Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9u
dW10eXBlLDI+IGdyYWRTcXIyRDRuKFQmIEEpIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZSwyPigKICAgIGNlbnRyYWwyNChBLGZpcnN0RGltKSAqIHJlY2lwXzEy
LAogICAgY2VudHJhbDI0KEEsc2Vjb25kRGltKSAqIHJlY2lwXzEyKTsKfQoKdGVtcGxhdGU8Y2xh
c3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMz4gZ3JhZFNx
cjNEbihUJiBBKSB7CiAgcmV0dXJuIGdyYWRTcXIzRChBKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4K
aW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMz4gZ3JhZFNxcjNENG4o
VCYgQSkgewogIHJldHVybiBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+KAog
ICAgY2VudHJhbDI0KEEsZmlyc3REaW0pICogcmVjaXBfMTIsCiAgICBjZW50cmFsMjQoQSxzZWNv
bmREaW0pICogcmVjaXBfMTIsCiAgICBjZW50cmFsMjQoQSx0aGlyZERpbSkgKiByZWNpcF8xMik7
Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlNYXRyaXg8IHR5cGVuYW1lICBt
dWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICAKICAgIFQ6OlRfbnVtdHlwZT46OlRfZWxl
bWVudCwgMywgMz4KSmFjb2JpYW4zRChUJiBBKQp7CiAgICBjb25zdCBpbnQgeD0wLCB5PTEsIHo9
MjsKICAgIGNvbnN0IGludCB1PTAsIHY9MSwgdz0yOwoKICAgIFRpbnlNYXRyaXg8IHR5cGVuYW1l
ICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICAKICAgICAgICBUOjpUX251bXR5cGU+
OjpUX2VsZW1lbnQsIDMsIDM+IGdyYWQ7CgogICAgZ3JhZCh1LHgpID0gY2VudHJhbDEyKEEsdSx4
KTsKICAgIGdyYWQodSx5KSA9IGNlbnRyYWwxMihBLHUseSk7CiAgICBncmFkKHUseikgPSBjZW50
cmFsMTIoQSx1LHopOwogICAgZ3JhZCh2LHgpID0gY2VudHJhbDEyKEEsdix4KTsKICAgIGdyYWQo
dix5KSA9IGNlbnRyYWwxMihBLHYseSk7CiAgICBncmFkKHYseikgPSBjZW50cmFsMTIoQSx2LHop
OwogICAgZ3JhZCh3LHgpID0gY2VudHJhbDEyKEEsdyx4KTsKICAgIGdyYWQodyx5KSA9IGNlbnRy
YWwxMihBLHcseSk7CiAgICBncmFkKHcseikgPSBjZW50cmFsMTIoQSx3LHopOwoKICAgIHJldHVy
biBncmFkOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVGlueU1hdHJpeDwgdHlwZW5hbWUg
IG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIAogICAgVDo6VF9udW10eXBlPjo6VF9l
bGVtZW50LCAzLCAzPgpKYWNvYmlhbjNEbihUJiBBKQp7CiAgICBjb25zdCBpbnQgeD0wLCB5PTEs
IHo9MjsKICAgIGNvbnN0IGludCB1PTAsIHY9MSwgdz0yOwoKICAgIFRpbnlNYXRyaXg8IHR5cGVu
YW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICAKICAgICAgICBUOjpUX251bXR5
cGU+OjpUX2VsZW1lbnQsIDMsIDM+IGdyYWQ7CiAgICAKICAgIGdyYWQodSx4KSA9IGNlbnRyYWwx
Mm4oQSx1LHgpOwogICAgZ3JhZCh1LHkpID0gY2VudHJhbDEybihBLHUseSk7CiAgICBncmFkKHUs
eikgPSBjZW50cmFsMTJuKEEsdSx6KTsKICAgIGdyYWQodix4KSA9IGNlbnRyYWwxMm4oQSx2LHgp
OwogICAgZ3JhZCh2LHkpID0gY2VudHJhbDEybihBLHYseSk7CiAgICBncmFkKHYseikgPSBjZW50
cmFsMTJuKEEsdix6KTsKICAgIGdyYWQodyx4KSA9IGNlbnRyYWwxMm4oQSx3LHgpOwogICAgZ3Jh
ZCh3LHkpID0gY2VudHJhbDEybihBLHcseSk7CiAgICBncmFkKHcseikgPSBjZW50cmFsMTJuKEEs
dyx6KTsKCiAgICByZXR1cm4gZ3JhZDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlN
YXRyaXg8IHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lIAogICAgVDo6
VF9udW10eXBlPjo6VF9lbGVtZW50LCAzLCAzPgpKYWNvYmlhbjNENChUJiBBKQp7CiAgICBjb25z
dCBpbnQgeD0wLCB5PTEsIHo9MjsKICAgIGNvbnN0IGludCB1PTAsIHY9MSwgdz0yOwoKICAgIFRp
bnlNYXRyaXg8IHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICAKICAg
ICAgICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQsIDMsIDM+IGdyYWQ7CiAgICAKICAgIGdyYWQo
dSx4KSA9IGNlbnRyYWwxNChBLHUseCk7CiAgICBncmFkKHUseSkgPSBjZW50cmFsMTQoQSx1LHkp
OwogICAgZ3JhZCh1LHopID0gY2VudHJhbDE0KEEsdSx6KTsKICAgIGdyYWQodix4KSA9IGNlbnRy
YWwxNChBLHYseCk7CiAgICBncmFkKHYseSkgPSBjZW50cmFsMTQoQSx2LHkpOwogICAgZ3JhZCh2
LHopID0gY2VudHJhbDE0KEEsdix6KTsKICAgIGdyYWQodyx4KSA9IGNlbnRyYWwxNChBLHcseCk7
CiAgICBncmFkKHcseSkgPSBjZW50cmFsMTQoQSx3LHkpOwogICAgZ3JhZCh3LHopID0gY2VudHJh
bDE0KEEsdyx6KTsKCiAgICByZXR1cm4gZ3JhZDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5l
IFRpbnlNYXRyaXg8IHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lIAog
ICAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50LCAzLCAzPgpKYWNvYmlhbjNENG4oVCYgQSkKewog
ICAgY29uc3QgaW50IHg9MCwgeT0xLCB6PTI7CiAgICBjb25zdCBpbnQgdT0wLCB2PTEsIHc9MjsK
CiAgICBUaW55TWF0cml4PCB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFt
ZSAgCiAgICAgICAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50LCAzLCAzPiBncmFkOwogICAgCiAg
ICBncmFkKHUseCkgPSBjZW50cmFsMTRuKEEsdSx4KTsKICAgIGdyYWQodSx5KSA9IGNlbnRyYWwx
NG4oQSx1LHkpOwogICAgZ3JhZCh1LHopID0gY2VudHJhbDE0bihBLHUseik7CiAgICBncmFkKHYs
eCkgPSBjZW50cmFsMTRuKEEsdix4KTsKICAgIGdyYWQodix5KSA9IGNlbnRyYWwxNG4oQSx2LHkp
OwogICAgZ3JhZCh2LHopID0gY2VudHJhbDE0bihBLHYseik7CiAgICBncmFkKHcseCkgPSBjZW50
cmFsMTRuKEEsdyx4KTsKICAgIGdyYWQodyx5KSA9IGNlbnRyYWwxNG4oQSx3LHkpOwogICAgZ3Jh
ZCh3LHopID0gY2VudHJhbDE0bihBLHcseik7CgogICAgcmV0dXJuIGdyYWQ7Cn0KCiAKCgoKIAoK
dGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5
cGUsMz4gCmN1cmwoVCYgdngsIFQmIHZ5LCBUJiB2eikgewogIGNvbnN0IGludCB4ID0gZmlyc3RE
aW0sIHkgPSBzZWNvbmREaW0sIHogPSB0aGlyZERpbTsKCiAgcmV0dXJuIFRpbnlWZWN0b3I8IHR5
cGVuYW1lICBUOjpUX251bXR5cGUsMz4oCiAgICBjZW50cmFsMTIodnoseSktY2VudHJhbDEyKHZ5
LHopLAogICAgY2VudHJhbDEyKHZ4LHopLWNlbnRyYWwxMih2eix4KSwKICAgIGNlbnRyYWwxMih2
eSx4KS1jZW50cmFsMTIodngseSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55
VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+CmN1cmxuKFQmIHZ4LCBUJiB2eSwgVCYg
dnopIHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltLCB6ID0gdGhpcmRE
aW07CgogIHJldHVybiBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+KAogICAg
KGNlbnRyYWwxMih2eix5KS1jZW50cmFsMTIodnkseikpICogcmVjaXBfMiwKICAgIChjZW50cmFs
MTIodngseiktY2VudHJhbDEyKHZ6LHgpKSAqIHJlY2lwXzIsCiAgICAoY2VudHJhbDEyKHZ5LHgp
LWNlbnRyYWwxMih2eCx5KSkgKiByZWNpcF8yKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxp
bmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSBjdXJsKFQmIEEpIHsKICBjb25zdCBpbnQgeCA9IGZp
cnN0RGltLCB5ID0gc2Vjb25kRGltLCB6ID0gdGhpcmREaW07CgogIHJldHVybiBUOjpUX251bXR5
cGUoCiAgICBjZW50cmFsMTIoQSx6LHkpLWNlbnRyYWwxMihBLHkseiksCiAgICBjZW50cmFsMTIo
QSx4LHopLWNlbnRyYWwxMihBLHoseCksCiAgICBjZW50cmFsMTIoQSx5LHgpLWNlbnRyYWwxMihB
LHgseSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10
eXBlIGN1cmxuKFQmIEEpIHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGlt
LCB6ID0gdGhpcmREaW07CgogIHJldHVybiBUOjpUX251bXR5cGUoCiAgICAoY2VudHJhbDEyKEEs
eix5KS1jZW50cmFsMTIoQSx5LHopKSAqIHJlY2lwXzIsCiAgICAoY2VudHJhbDEyKEEseCx6KS1j
ZW50cmFsMTIoQSx6LHgpKSAqIHJlY2lwXzIsCiAgICAoY2VudHJhbDEyKEEseSx4KS1jZW50cmFs
MTIoQSx4LHkpKSAqIHJlY2lwXzIpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55
VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+CmN1cmw0KFQmIHZ4LCBUJiB2eSwgVCYg
dnopIHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltLCB6ID0gdGhpcmRE
aW07CgogIHJldHVybiBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+KAogICAg
Y2VudHJhbDE0KHZ6LHkpLWNlbnRyYWwxNCh2eSx6KSwKICAgIGNlbnRyYWwxNCh2eCx6KS1jZW50
cmFsMTQodnoseCksCiAgICBjZW50cmFsMTQodnkseCktY2VudHJhbDE0KHZ4LHkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZQpjdXJsNChUJiBB
KSB7CiAgY29uc3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbSwgeiA9IHRoaXJkRGlt
OwoKICByZXR1cm4gVDo6VF9udW10eXBlKAogICAgY2VudHJhbDE0KEEseix5KS1jZW50cmFsMTQo
QSx5LHopLAogICAgY2VudHJhbDE0KEEseCx6KS1jZW50cmFsMTQoQSx6LHgpLAogICAgY2VudHJh
bDE0KEEseSx4KS1jZW50cmFsMTQoQSx4LHkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxp
bmUgVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwzPgpjdXJsNG4oVCYgdngsIFQm
IHZ5LCBUJiB2eikgewogIGNvbnN0IGludCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW0sIHog
PSB0aGlyZERpbTsKCiAgcmV0dXJuIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUs
Mz4oCiAgICAoY2VudHJhbDE0KHZ6LHkpLWNlbnRyYWwxNCh2eSx6KSkgKiByZWNpcF8yLAogICAg
KGNlbnRyYWwxNCh2eCx6KS1jZW50cmFsMTQodnoseCkpICogcmVjaXBfMiwKICAgIChjZW50cmFs
MTQodnkseCktY2VudHJhbDE0KHZ4LHkpKSAqIHJlY2lwXzIpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlCmN1cmw0bihUJiBBKSB7CiAgY29uc3Qg
aW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbSwgeiA9IHRoaXJkRGltOwoKICByZXR1cm4g
VDo6VF9udW10eXBlKAogICAgKGNlbnRyYWwxNChBLHoseSktY2VudHJhbDE0KEEseSx6KSkgKiBy
ZWNpcF8yLAogICAgKGNlbnRyYWwxNChBLHgseiktY2VudHJhbDE0KEEseix4KSkgKiByZWNpcF8y
LAogICAgKGNlbnRyYWwxNChBLHkseCktY2VudHJhbDE0KEEseCx5KSkgKiByZWNpcF8yKTsKfQoK
CgogCgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZQpjdXJs
KFQmIHZ4LCBUJiB2eSkgewogIGNvbnN0IGludCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW07
CgogIHJldHVybiBjZW50cmFsMTIodnkseCktY2VudHJhbDEyKHZ4LHkpOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZQpjdXJsbihUJiB2eCwgVCYgdnkp
IHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltOwoKICByZXR1cm4gKGNl
bnRyYWwxMih2eSx4KS1jZW50cmFsMTIodngseSkpICogcmVjaXBfMjsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlIGN1cmwyRChU
JiBBKSB7CiAgY29uc3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbTsKICByZXR1cm4g
Y2VudHJhbDEyKEEseSx4KS1jZW50cmFsMTIoQSx4LHkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpp
bmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlIGN1cmwyRG4oVCYgQSkgewog
IGNvbnN0IGludCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW07CiAgcmV0dXJuIChjZW50cmFs
MTIoQSx5LHgpLWNlbnRyYWwxMihBLHgseSkpICogcmVjaXBfMjsKfQoKCiAKCnRlbXBsYXRlPGNs
YXNzIFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlCmN1cmw0KFQmIHZ4LCBUJiB2eSkg
ewogIGNvbnN0IGludCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW07CgogIHJldHVybiBjZW50
cmFsMTQodnkseCktY2VudHJhbDE0KHZ4LHkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUg
dHlwZW5hbWUgIFQ6OlRfbnVtdHlwZQpjdXJsNG4oVCYgdngsIFQmIHZ5KSB7CiAgY29uc3QgaW50
IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbTsKCiAgcmV0dXJuIChjZW50cmFsMTQodnkseCkt
Y2VudHJhbDE0KHZ4LHkpKSAqIHJlY2lwXzEyOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGlu
ZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlOjpUX251bXR5cGUgY3VybDJENChUJiBBKSB7CiAgY29u
c3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbTsKICByZXR1cm4gY2VudHJhbDE0KEEs
eSx4KS1jZW50cmFsMTQoQSx4LHkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlIGN1cmwyRDRuKFQmIEEpIHsKICBjb25zdCBpbnQg
eCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltOwogIHJldHVybiAoY2VudHJhbDE0KEEseSx4KS1j
ZW50cmFsMTQoQSx4LHkpKSAqIHJlY2lwXzEyOwp9CgogCgoKCgp0ZW1wbGF0ZTxjbGFzcyBUPiBp
bmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZGl2IChUJiAgdnggLCBUJiAgdnkgKSB7IAog
IHJldHVybiBjZW50cmFsMTIodngsZmlyc3REaW0pICsgY2VudHJhbDEyKHZ5LHNlY29uZERpbSk7
Cn0gCgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZGl2
biAoVCYgIHZ4ICwgVCYgIHZ5ICkgeyAKICByZXR1cm4gKGNlbnRyYWwxMih2eCxmaXJzdERpbSkg
KyBjZW50cmFsMTIodnksc2Vjb25kRGltKSkKICAgICAqIHJlY2lwXzI7Cn0gCgp0ZW1wbGF0ZTxj
bGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZGl2NCAoVCYgIHZ4ICwgVCYg
IHZ5ICkgeyAKICByZXR1cm4gY2VudHJhbDE0KHZ4LGZpcnN0RGltKSArIGNlbnRyYWwxNCh2eSxz
ZWNvbmREaW0pOwp9IAoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251
bXR5cGUgIGRpdjRuIChUJiAgdnggLCBUJiAgdnkgKSB7IAogIHJldHVybiAoY2VudHJhbDE0KHZ4
LGZpcnN0RGltKSArIGNlbnRyYWwxNCh2eSxzZWNvbmREaW0pKQogICAgKiByZWNpcF8xMjsKfSAK
CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBkaXYgKFQm
ICB2eCAsIFQmICB2eSAsIFQmICB2eiApIHsgCiAgcmV0dXJuIGNlbnRyYWwxMih2eCxmaXJzdERp
bSkgKyBjZW50cmFsMTIodnksc2Vjb25kRGltKSAKICAgICsgY2VudHJhbDEyKHZ6LHRoaXJkRGlt
KTsKfSAKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBk
aXZuIChUJiAgdnggLCBUJiAgdnkgLCBUJiAgdnogKSB7IAogIHJldHVybiAoY2VudHJhbDEyKHZ4
LGZpcnN0RGltKSArIGNlbnRyYWwxMih2eSxzZWNvbmREaW0pIAogICAgKyBjZW50cmFsMTIodnos
dGhpcmREaW0pKSAqIHJlY2lwXzI7Cn0gCgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZSAgZGl2NCAoVCYgIHZ4ICwgVCYgIHZ5ICwgVCYgIHZ6ICkgeyAKICBy
ZXR1cm4gY2VudHJhbDE0KHZ4LGZpcnN0RGltKSArIGNlbnRyYWwxNCh2eSxzZWNvbmREaW0pIAog
ICAgKyBjZW50cmFsMTQodnosdGhpcmREaW0pOwp9IAoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5l
IHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGRpdjRuIChUJiAgdnggLCBUJiAgdnkgLCBUJiAgdnog
KSB7IAogIHJldHVybiAoY2VudHJhbDE0KHZ4LGZpcnN0RGltKSArIGNlbnRyYWwxNCh2eSxzZWNv
bmREaW0pCiAgICArIGNlbnRyYWwxNCh2eix0aGlyZERpbSkpICogcmVjaXBfMTI7Cn0gCgp0ZW1w
bGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlCmRp
djJEKFQmIEEpIHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltOwogIHJl
dHVybiBjZW50cmFsMTIoQSx4LHgpICsgY2VudHJhbDEyKEEseSx5KTsKfQoKdGVtcGxhdGU8Y2xh
c3MgVD4KaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGU6OlRfbnVtdHlwZQpkaXYyRDQoVCYg
QSkgewogIGNvbnN0IGludCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW07CiAgcmV0dXJuIGNl
bnRyYWwxNChBLHgseCkgKyBjZW50cmFsMTQoQSx5LHkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpp
bmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlCmRpdjJEbihUJiBBKSB7CiAg
Y29uc3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbTsKICByZXR1cm4gKGNlbnRyYWwx
MihBLHgseCkgKyBjZW50cmFsMTIoQSx5LHkpKSAqIHJlY2lwXzI7Cn0KCnRlbXBsYXRlPGNsYXNz
IFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlOjpUX251bXR5cGUKZGl2MkQ0bihUJiBB
KSB7CiAgY29uc3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbTsKICByZXR1cm4gKGNl
bnRyYWwxNChBLHgseCkgKyBjZW50cmFsMTQoQSx5LHkpKSAqIHJlY2lwXzEyOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlCmRpdjNE
KFQmIEEpIHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltLCB6ID0gdGhp
cmREaW07CiAgcmV0dXJuIGNlbnRyYWwxMihBLHgseCkgKyBjZW50cmFsMTIoQSx5LHkpICsgY2Vu
dHJhbDEyKEEseix6KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGU6OlRfbnVtdHlwZQpkaXYzRDQoVCYgQSkgewogIGNvbnN0IGludCB4ID0gZmlyc3RE
aW0sIHkgPSBzZWNvbmREaW0sIHogPSB0aGlyZERpbTsKICByZXR1cm4gY2VudHJhbDE0KEEseCx4
KSArIGNlbnRyYWwxNChBLHkseSkgKyBjZW50cmFsMTQoQSx6LHopOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlCmRpdjNEbihUJiBB
KSB7CiAgY29uc3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbSwgeiA9IHRoaXJkRGlt
OwogIHJldHVybiAoY2VudHJhbDEyKEEseCx4KSArIGNlbnRyYWwxMihBLHkseSkgKyBjZW50cmFs
MTIoQSx6LHopKQogICAgKiByZWNpcF8yOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlw
ZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlCmRpdjNENG4oVCYgQSkgewogIGNvbnN0IGlu
dCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW0sIHogPSB0aGlyZERpbTsKICByZXR1cm4gKGNl
bnRyYWwxNChBLHgseCkgKyBjZW50cmFsMTQoQSx5LHkpICsgY2VudHJhbDE0KEEseix6KSkKICAg
ICogcmVjaXBfMTI7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHR5cGVuYW1lICBU
OjpUX251bXR5cGUKbWl4ZWQyMihUJiBBLCBpbnQgeCwgaW50IHkpCnsKICAgIHJldHVybiBBLnNo
aWZ0KC0xLHgsLTEseSkgLSBBLnNoaWZ0KC0xLHgsMSx5KQogICAgICAgIC1BLnNoaWZ0KDEseCwt
MSx5KSArIEEuc2hpZnQoMSx4LDEseSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSB0eXBl
bmFtZSAgVDo6VF9udW10eXBlCm1peGVkMjJuKFQmIEEsIGludCB4LCBpbnQgeSkKewogICAgcmV0
dXJuIG1peGVkMjIoQSwgeCwgeSkgKiByZWNpcF80Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxp
bmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZQptaXhlZDI0KFQmIEEsIGludCB4LCBpbnQgeSkKewog
ICAgcmV0dXJuIDY0LiooQS5zaGlmdCgtMSx4LC0xLHkpIC0gQS5zaGlmdCgtMSx4LDEseSkKICAg
ICAgICAtQS5zaGlmdCgxLHgsLTEseSkgKyBBLnNoaWZ0KDEseCwxLHkpKQogICAgICAgICsgKEEu
c2hpZnQoLTIseCwrMSx5KSAtIEEuc2hpZnQoLTEseCwyLHkpCiAgICAgICAgLSBBLnNoaWZ0KDEs
eCwyLHkpLUEuc2hpZnQoMix4LDEseSkKICAgICAgICArIEEuc2hpZnQoMix4LC0xLHkpK0Euc2hp
ZnQoMSx4LC0yLHkpCiAgICAgICAgLSBBLnNoaWZ0KC0xLHgsLTIseSkrQS5zaGlmdCgtMix4LC0x
LHkpKQogICAgICAgICsgOC4qKEEuc2hpZnQoLTEseCwxLHkpK0Euc2hpZnQoLTEseCwyLHkpCiAg
ICAgICAgLUEuc2hpZnQoMix4LC0yLHkpICsgQS5zaGlmdCgyLHgsMix5KSk7Cn0KCnRlbXBsYXRl
PGNsYXNzIFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlCm1peGVkMjRuKFQmIEEsIGlu
dCB4LCBpbnQgeSkKewogICAgcmV0dXJuIG1peGVkMjQoQSx4LHkpICogcmVjaXBfMTQ0Owp9Cgog
CgoKCiAKIAogCiAKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHR5cGVuYW1lICBtdWx0
aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lIAogICAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50
IGRpdjNEVmVjNChUJiBBLCAKICAgIGNvbnN0IFVuaWZvcm1DdWJpY0dlb21ldHJ5PDM+JiBnZW9t
KQp7CiAgICBjb25zdCBpbnQgeCA9IDAsIHkgPSAxLCB6ID0gMjsKCiAgICByZXR1cm4gKGNlbnRy
YWwxNChBLCB4LCBmaXJzdERpbSkgKyBjZW50cmFsMTQoQSwgeSwgc2Vjb25kRGltKQogICAgICAg
ICsgY2VudHJhbDE0KEEsIHosIHRoaXJkRGltKSkgKiByZWNpcF8xMiAqIGdlb20ucmVjaXBTcGF0
aWFsU3RlcCgpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVt
dHlwZSBMYXBsYWNpYW4zRDQoVCYgQSwgCiAgICBjb25zdCBVbmlmb3JtQ3ViaWNHZW9tZXRyeTwz
PiYgZ2VvbSkKewogICAgcmV0dXJuIExhcGxhY2lhbjNENG4oQSkgKiBnZW9tLnJlY2lwU3BhdGlh
bFN0ZXBQb3cyKCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9u
dW10eXBlIExhcGxhY2lhbjNEVmVjNChUJiBBLAogICAgY29uc3QgVW5pZm9ybUN1YmljR2VvbWV0
cnk8Mz4mIGdlb20pCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSB2ZWN0b3Iz
ZDsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czx2ZWN0b3IzZD46
OlRfZWxlbWVudCAKICAgICAgICBUX2VsZW1lbnQ7CiAgICBjb25zdCBpbnQgdSA9IDAsIHYgPSAx
LCB3ID0gMjsKICAgIGNvbnN0IGludCB4ID0gMCwgeSA9IDEsIHogPSAyOwoKICAgICAKICAgICAK
CiAgICBUX2VsZW1lbnQgdDEgPSAoY2VudHJhbDI0KEEsdSx4KSArIGNlbnRyYWwyNChBLHUseSkg
KyBjZW50cmFsMjQoQSx1LHopKQogICAgICAgICogcmVjaXBfMTIgKiBnZW9tLnJlY2lwU3BhdGlh
bFN0ZXBQb3cyKCk7CgogICAgVF9lbGVtZW50IHQyID0gKGNlbnRyYWwyNChBLHYseCkgKyBjZW50
cmFsMjQoQSx2LHkpICsgY2VudHJhbDI0KEEsdix6KSkKICAgICAgICAqIHJlY2lwXzEyICogZ2Vv
bS5yZWNpcFNwYXRpYWxTdGVwUG93MigpOwoKICAgIFRfZWxlbWVudCB0MyA9IChjZW50cmFsMjQo
QSx3LHgpICsgY2VudHJhbDI0KEEsdyx5KSArIGNlbnRyYWwyNChBLHcseikpCiAgICAgICAgKiBy
ZWNpcF8xMiAqIGdlb20ucmVjaXBTcGF0aWFsU3RlcFBvdzIoKTsKCiAgICByZXR1cm4gdmVjdG9y
M2QodDEsdDIsdDMpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVGlueU1hdHJpeDwgdHlw
ZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgCiAgICBUOjpUX251bXR5cGU+
OjpUX2VsZW1lbnQsIDMsIDM+CmdyYWQzRFZlYzQoVCYgQSwgY29uc3QgVW5pZm9ybUN1YmljR2Vv
bWV0cnk8Mz4mIGdlb20pCnsKICAgIGNvbnN0IGludCB4PTAsIHk9MSwgej0yOwogICAgY29uc3Qg
aW50IHU9MCwgdj0xLCB3PTI7CgogICAgVGlueU1hdHJpeDwgdHlwZW5hbWUgIG11bHRpY29tcG9u
ZW50X3RyYWl0czwgdHlwZW5hbWUgCiAgICAgICAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50LCAz
LCAzPiBncmFkOwoKICAgICAKICAgIGdyYWQodSx4KSA9IGNlbnRyYWwxNG4oQSx1LHgpICogZ2Vv
bS5yZWNpcFNwYXRpYWxTdGVwKCk7CiAgICBncmFkKHUseSkgPSBjZW50cmFsMTRuKEEsdSx5KSAq
IGdlb20ucmVjaXBTcGF0aWFsU3RlcCgpOwogICAgZ3JhZCh1LHopID0gY2VudHJhbDE0bihBLHUs
eikgKiBnZW9tLnJlY2lwU3BhdGlhbFN0ZXAoKTsKICAgIGdyYWQodix4KSA9IGNlbnRyYWwxNG4o
QSx2LHgpICogZ2VvbS5yZWNpcFNwYXRpYWxTdGVwKCk7CiAgICBncmFkKHYseSkgPSBjZW50cmFs
MTRuKEEsdix5KSAqIGdlb20ucmVjaXBTcGF0aWFsU3RlcCgpOwogICAgZ3JhZCh2LHopID0gY2Vu
dHJhbDE0bihBLHYseikgKiBnZW9tLnJlY2lwU3BhdGlhbFN0ZXAoKTsKICAgIGdyYWQodyx4KSA9
IGNlbnRyYWwxNG4oQSx3LHgpICogZ2VvbS5yZWNpcFNwYXRpYWxTdGVwKCk7CiAgICBncmFkKHcs
eSkgPSBjZW50cmFsMTRuKEEsdyx5KSAqIGdlb20ucmVjaXBTcGF0aWFsU3RlcCgpOwogICAgZ3Jh
ZCh3LHopID0gY2VudHJhbDE0bihBLHcseikgKiBnZW9tLnJlY2lwU3BhdGlhbFN0ZXAoKTsKCiAg
ICByZXR1cm4gZ3JhZDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5
cGVuYW1lICBUOjpUX251bXR5cGUsMz4gZ3JhZDNENChUJiBBLAogICAgY29uc3QgVW5pZm9ybUN1
YmljR2VvbWV0cnk8Mz4mIGdlb20pIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZSwzPigKICAgIGNlbnRyYWwxNChBLGZpcnN0RGltKSAqIHJlY2lwXzEyICogZ2Vv
bS5yZWNpcFNwYXRpYWxTdGVwKCksCiAgICBjZW50cmFsMTQoQSxzZWNvbmREaW0pICogcmVjaXBf
MTIgKiBnZW9tLnJlY2lwU3BhdGlhbFN0ZXAoKSwKICAgIGNlbnRyYWwxNChBLHRoaXJkRGltKSAq
IHJlY2lwXzEyICogZ2VvbS5yZWNpcFNwYXRpYWxTdGVwKCkpOwp9Cgp9IAoKCgojIDggIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9zdGVuY2lsLmgiIDIKCgpu
YW1lc3BhY2UgIGJsaXR6ICB7IAoKIAogCiAKIAoKIAoKCgoKCgoKCiNkZWZpbmUgQlpfREVDTEFS
RV9TVEVOQ0lMMihuYW1lLEEsQikgc3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xh
c3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywg
Y2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2
b2lkIGFwcGx5KFQxJiBBLCBUMiYgQiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExKSB7CgoKCgoKCiNkZWZpbmUgQlpfRU5EX1NURU5DSUxfV0lUSF9TSEFQRShNSU5TLE1BWFMp
IH0gdGVtcGxhdGU8aW50IE4+IHZvaWQgZ2V0RXh0ZW50KFRpbnlWZWN0b3I8aW50LE4+JiBtaW5i
LCBUaW55VmVjdG9yPGludCxOPiYgbWF4YikgY29uc3QgeyBtaW5iID0gTUlOUzsgbWF4YiA9IE1B
WFM7IH0gZW51bSB7IGhhc0V4dGVudCA9IDEgfTsgfTsKIyA0MiAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L3N0ZW5jaWwuaCIKCiNkZWZpbmUgQlpfRU5EX1NU
RU5DSUwgfSBlbnVtIHsgaGFzRXh0ZW50ID0gMCB9OyB9OwojZGVmaW5lIEJaX1NURU5DSUxfRU5E
IEJaX0VORF9TVEVOQ0lMCgojZGVmaW5lIEJaX0RFQ0xBUkVfU1RFTkNJTDMobmFtZSxBLEIsQykg
c3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFz
cyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBj
bGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2b2lkIGFwcGx5KFQxJiBBLCBUMiYg
QiwgVDMmIEMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExKSB7CgoKCgoKCgojZGVm
aW5lIEJaX0RFQ0xBUkVfU1RFTkNJTDQobmFtZSxBLEIsQyxEKSBzdHJ1Y3QgbmFtZSB7IHRlbXBs
YXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xh
c3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDksIGNsYXNzIFQxMCwgY2xhc3MgVDEx
PiBzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHkoVDEmIEEsIFQyJiBCLCBUMyYgQywgVDQmIEQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEpIHsKCgoKCgoKCiNkZWZpbmUgQlpfREVDTEFSRV9T
VEVOQ0lMNShuYW1lLEEsQixDLEQsRSkgc3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwg
Y2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBU
NywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGlu
ZSB2b2lkIGFwcGx5KFQxJiBBLCBUMiYgQiwgVDMmIEMsIFQ0JiBELCBUNSYgRSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExKSB7CgoKCgoKCgojZGVmaW5lIEJaX0RFQ0xBUkVfU1RFTkNJTDYobmFt
ZSxBLEIsQyxELEUsRikgc3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDIs
IGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3Mg
VDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2b2lkIGFw
cGx5KFQxJiBBLCBUMiYgQiwgVDMmIEMsIFQ0JiBELCBUNSYgRSwgVDYmIEYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExKSB7CgoKCgoKCgojZGVmaW5lIEJaX0RFQ0xBUkVfU1RFTkNJTDcobmFtZSxBLEIs
QyxELEUsRixHKSBzdHJ1Y3QgbmFtZSB7IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xh
c3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwg
Y2xhc3MgVDksIGNsYXNzIFQxMCwgY2xhc3MgVDExPiBzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHko
VDEmIEEsIFQyJiBCLCBUMyYgQywgVDQmIEQsIFQ1JiBFLCBUNiYgRiwgVDcmIEcsIFQ4LCBUOSwg
VDEwLCBUMTEpIHsKCgoKCgoKCiNkZWZpbmUgQlpfREVDTEFSRV9TVEVOQ0lMOChuYW1lLEEsQixD
LEQsRSxGLEcsSCkgc3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGNs
YXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgs
IGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2b2lkIGFwcGx5
KFQxJiBBLCBUMiYgQiwgVDMmIEMsIFQ0JiBELCBUNSYgRSwgVDYmIEYsIFQ3JiBHLCBUOCYgSCwg
VDksIFQxMCwgVDExKSB7CgoKCgoKCgojZGVmaW5lIEJaX0RFQ0xBUkVfU1RFTkNJTDkobmFtZSxB
LEIsQyxELEUsRixHLEgsSSkgc3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3Mg
VDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xh
c3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2b2lk
IGFwcGx5KFQxJiBBLCBUMiYgQiwgVDMmIEMsIFQ0JiBELCBUNSYgRSwgVDYmIEYsIFQ3JiBHLCBU
OCYgSCwgVDkmIEksIFQxMCwgVDExKSB7CgoKCgoKCgoKI2RlZmluZSBCWl9ERUNMQVJFX1NURU5D
SUwxMChuYW1lLEEsQixDLEQsRSxGLEcsSCxJLEopIHN0cnVjdCBuYW1lIHsgdGVtcGxhdGU8Y2xh
c3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNiwg
Y2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOSwgY2xhc3MgVDEwLCBjbGFzcyBUMTE+IHN0YXRp
YyBpbmxpbmUgdm9pZCBhcHBseShUMSYgQSwgVDImIEIsIFQzJiBDLCBUNCYgRCwgVDUmIEUsIFQ2
JiBGLCBUNyYgRywgVDgmIEgsIFQ5JiBJLCBUMTAmIEosIFQxMSkgewoKCgoKCgoKI2RlZmluZSBC
Wl9ERUNMQVJFX1NURU5DSUwxMShuYW1lLEEsQixDLEQsRSxGLEcsSCxJLEosSykgc3RydWN0IG5h
bWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xh
c3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAs
IGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2b2lkIGFwcGx5KFQxJiBBLCBUMiYgQiwgVDMmIEMs
IFQ0JiBELCBUNSYgRSwgVDYmIEYsIFQ3JiBHLCBUOCYgSCwgVDkmIEksIFQxMCYgSiwgVDExJiBL
KSB7CgoKCgoKCgoKCgogCgoKCgp0ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBkdW1teTsKCnN0cnVj
dCBkdW1teUFycmF5IHsKICAgIHR5cGVkZWYgZHVtbXk8ZG91YmxlPiBUX2l0ZXJhdG9yOwoKICAg
IGNvbnN0IGR1bW15QXJyYXkmIHNoYXBlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KfTsKCmV4
dGVybiAgZHVtbXlBcnJheSBfZHVtbXlBcnJheTsKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xh
c3MgZHVtbXkgewpwdWJsaWM6CiAgICBkdW1teSgpIHsgfQoKICAgIGR1bW15KFQgdmFsdWUpCiAg
ICAgIDogdmFsdWVfKHZhbHVlKQogICAgeyB9CgogICAgZHVtbXkoY29uc3QgZHVtbXlBcnJheSYp
CiAgICB7IH0KCiAgICBvcGVyYXRvciBUKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9OwoKICAg
IHRlbXBsYXRlPGNsYXNzIFQyPgogICAgdm9pZCBvcGVyYXRvcj0oVDIpIHsgfQoKICAgIHR5cGVu
YW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8VD46OlRfZWxlbWVudCBvcGVyYXRvcltdKGludCBp
KSBjb25zdAogICAgeyByZXR1cm4gdmFsdWVfW2ldOyB9CgogICAgdm9pZCBsb2FkU3RyaWRlKGlu
dCkgeyB9CiAgICB2b2lkIG1vdmVUbyhpbnQpIHsgfQogICAgdm9pZCBtb3ZlVG8oaW50LGludCkg
eyB9CiAgICB2b2lkIG1vdmVUbyhpbnQsaW50LGludCkgeyB9CiAgICB2b2lkIG1vdmVUbyhpbnQs
aW50LGludCxpbnQpIHsgfQogICAgdm9pZCBhZHZhbmNlKCkgeyB9CiAgICB2b2lkIGFkdmFuY2Uo
aW50KSB7IH0KICAgIFQgc2hpZnQoaW50LGludCkgeyByZXR1cm4gVCgpOyB9Cgpwcml2YXRlOgog
ICAgVCB2YWx1ZV87Cn07CgoKIAoKCgoKCgp0ZW1wbGF0ZTxpbnQgTl9yYW5rLCBjbGFzcyBQX251
bXR5cGU+CmNsYXNzIHN0ZW5jaWxFeHRlbnQgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlw
ZSBUX251bXR5cGU7CgogICAgc3RlbmNpbEV4dGVudCgpCiAgICB7CiAgICAgICAgbWluXyA9IDA7
CiAgICAgICAgbWF4XyA9IDA7CiAgICB9CiAgCiAgICBkdW1teTxUX251bXR5cGU+IG9wZXJhdG9y
KCkoaW50IGkpCiAgICB7CiAgICAgICAgdXBkYXRlKDAsIGkpOwogICAgICAgIHJldHVybiBkdW1t
eTxUX251bXR5cGU+KDEpOwogICAgfQogCiAgICBkdW1teTxUX251bXR5cGU+IG9wZXJhdG9yKCko
aW50IGksIGludCBqKQogICAgewogICAgICAgIHVwZGF0ZSgwLCBpKTsKICAgICAgICB1cGRhdGUo
MSwgaik7CiAgICAgICAgcmV0dXJuIGR1bW15PFRfbnVtdHlwZT4oMSk7CiAgICB9CgogICAgZHVt
bXk8VF9udW10eXBlPiBvcGVyYXRvcigpKGludCBpLCBpbnQgaiwgaW50IGspCiAgICB7CiAgICAg
ICAgdXBkYXRlKDAsIGkpOwogICAgICAgIHVwZGF0ZSgxLCBqKTsKICAgICAgICB1cGRhdGUoMiwg
ayk7CiAgICAgICAgcmV0dXJuIGR1bW15PFRfbnVtdHlwZT4oMSk7CiAgICB9CgogICAgZHVtbXk8
VF9udW10eXBlPiBzaGlmdChpbnQgb2Zmc2V0LCBpbnQgZGltKQogICAgewogICAgICAgIHVwZGF0
ZShkaW0sIG9mZnNldCk7CiAgICAgICAgcmV0dXJuIGR1bW15PFRfbnVtdHlwZT4oMSk7CiAgICB9
CiAgCiAgICBkdW1teTxUX251bXR5cGU+IHNoaWZ0KGludCBvZmZzZXQxLCBpbnQgZGltMSwgaW50
IG9mZnNldDIsIGludCBkaW0yKQogICAgewogICAgICAgIHVwZGF0ZShkaW0xLCBvZmZzZXQxKTsK
ICAgICAgICB1cGRhdGUoZGltMiwgb2Zmc2V0Mik7CiAgICAgICAgcmV0dXJuIGR1bW15PFRfbnVt
dHlwZT4oMSk7CiAgICB9CiAKICAgIGR1bW15PCB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJh
aXRzPFRfbnVtdHlwZT46OlRfZWxlbWVudD4gCiAgICAgICAgb3BlcmF0b3JbXShpbnQpCiAgICB7
CiAgICAgICAgcmV0dXJuIGR1bW15PCB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPFRf
bnVtdHlwZT46OlRfZWxlbWVudD4KICAgICAgICAgICAgKDEpOwogICAgfQogCiAgICB2b2lkIHVw
ZGF0ZShpbnQgcmFuaywgaW50IG9mZnNldCkKICAgIHsKICAgICAgICBpZiAob2Zmc2V0IDwgbWlu
X1tyYW5rXSkKICAgICAgICAgICAgbWluX1tyYW5rXSA9IG9mZnNldDsKICAgICAgICBpZiAob2Zm
c2V0ID4gbWF4X1tyYW5rXSkKICAgICAgICAgICAgbWF4X1tyYW5rXSA9IG9mZnNldDsKICAgIH0K
CiAgICB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUyPgogICAgdm9pZCBjb21iaW5lKGNvbnN0IHN0
ZW5jaWxFeHRlbnQ8Tl9yYW5rLFRfbnVtdHlwZTI+JiB4KQogICAgewogICAgICAgIGZvciAoaW50
IGk9MDsgaSA8IE5fcmFuazsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgbWluX1tpXSA9IG1p
bm1heDo6bWluKG1pbl9baV0sIHgubWluKGkpKTsKICAgICAgICAgICAgbWF4X1tpXSA9IG1pbm1h
eDo6bWF4KG1heF9baV0sIHgubWF4KGkpKTsKICAgICAgICB9CiAgICB9CgogICAgdGVtcGxhdGU8
Y2xhc3MgVF9udW10eXBlMj4KICAgIHZvaWQgY29tYmluZShjb25zdCBkdW1teTxUX251bXR5cGUy
PiYpCiAgICB7IH0KCiAgICBpbnQgbWluKGludCBpKSBjb25zdAogICAgeyByZXR1cm4gbWluX1tp
XTsgfQoKICAgIGludCBtYXgoaW50IGkpIGNvbnN0CiAgICB7IHJldHVybiBtYXhfW2ldOyB9Cgog
ICAgY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgbWluKCkgY29uc3QKICAgIHsgcmV0dXJu
IG1pbl87IH0KCiAgICBjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBtYXgoKSBjb25zdAog
ICAgeyByZXR1cm4gbWF4XzsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICB2b2lkIG9wZXJh
dG9yPShUKQogICAgeyB9CgogICAgIAogICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBvcGVyYXRv
cis9KFQpIHsgfQogICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBvcGVyYXRvci09KFQpIHsgfQog
ICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBvcGVyYXRvcio9KFQpIHsgfQogICAgdGVtcGxhdGU8
Y2xhc3MgVD4gdm9pZCBvcGVyYXRvci89KFQpIHsgfQoKICAgIG9wZXJhdG9yIFRfbnVtdHlwZSgp
CiAgICB7IHJldHVybiBUX251bXR5cGUoMSk7IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IqKCkK
ICAgIHsgcmV0dXJuIFRfbnVtdHlwZSgxKTsgfQogCnByaXZhdGU6CiAgICBtdXRhYmxlICBUaW55
VmVjdG9yPGludCxOX3Jhbms+IG1pbl8sIG1heF87Cn07CgoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBU
PgpzdHJ1Y3Qgc3RlbmNpbEV4dGVudF90cmFpdHMgewogICAgdHlwZWRlZiBkdW1teTxkb3VibGU+
IFRfc3RlbmNpbEV4dGVudDsKfTsKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFu
az4Kc3RydWN0IHN0ZW5jaWxFeHRlbnRfdHJhaXRzPEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+ID4g
ewogICAgdHlwZWRlZiBzdGVuY2lsRXh0ZW50PE5fcmFuayxUX251bXR5cGU+IFRfc3RlbmNpbEV4
dGVudDsKfTsKCiAKCgoKCnRlbXBsYXRlPGNsYXNzIFRfc2hhcGUxPgppbmxpbmUgYm9vbCAgYXJl
U2hhcGVzQ29uZm9ybWFibGUoY29uc3QgVF9zaGFwZTEmLCBjb25zdCBkdW1teUFycmF5JikKewog
ICAgcmV0dXJuIHRydWUgOwp9Cgp9IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovYXJyYXkvc3RlbmNpbC5jYyIgMQoKI2RlZmluZSBCWl9BUlJBWVNURU5DSUxf
Q0MKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAogCiAKIAogCiAKIAogCgogCgoKCgoKCgoK
CgoKCgoKCgoKCnRlbXBsYXRlPGludCBOX3JhbmssIGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRf
YXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNsYXNzIFRfYXJyYXk0LCBjbGFzcyBUX2FycmF5
NSwgY2xhc3MgVF9hcnJheTYsCiAgICBjbGFzcyBUX2FycmF5NywgY2xhc3MgVF9hcnJheTgsIGNs
YXNzIFRfYXJyYXk5LCBjbGFzcyBUX2FycmF5MTAsCiAgICBjbGFzcyBUX2FycmF5MTE+CnZvaWQg
Y2hlY2tTaGFwZXMoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3Jhbms+JiBBLAogICAgY29uc3Qg
VF9hcnJheTImIEIsIGNvbnN0IFRfYXJyYXkzJiBDLCBjb25zdCBUX2FycmF5NCYgRCwgCiAgICBj
b25zdCBUX2FycmF5NSYgRSwgY29uc3QgVF9hcnJheTYmIEYsIGNvbnN0IFRfYXJyYXk3JiBHLCAK
ICAgIGNvbnN0IFRfYXJyYXk4JiBILCBjb25zdCBUX2FycmF5OSYgSSwgY29uc3QgVF9hcnJheTEw
JiBKLCAKICAgIGNvbnN0IFRfYXJyYXkxMSYgSykKewogICAgIDsKIyA1OCAiL3Vmcy9uZXdtYW4v
dXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L3N0ZW5jaWwuY2MiCn0KCnRlbXBsYXRl
PGNsYXNzIFRfZXh0ZW50LCBpbnQgTl9yYW5rLCAKICAgIGNsYXNzIFRfc3RlbmNpbCwgY2xhc3Mg
VF9udW10eXBlMSwgY2xhc3MgVF9hcnJheTIsCiAgICBjbGFzcyBUX2FycmF5MywgY2xhc3MgVF9h
cnJheTQsIGNsYXNzIFRfYXJyYXk1LCBjbGFzcyBUX2FycmF5NiwKICAgIGNsYXNzIFRfYXJyYXk3
LCBjbGFzcyBUX2FycmF5OCwgY2xhc3MgVF9hcnJheTksIGNsYXNzIFRfYXJyYXkxMCwKICAgIGNs
YXNzIFRfYXJyYXkxMT4Kdm9pZCBjYWxjU3RlbmNpbEV4dGVudChUX2V4dGVudCYgQXQsIGNvbnN0
IFRfc3RlbmNpbCYgc3RlbmNpbCwgCiAgICBjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4m
IEEsCiAgICBjb25zdCBUX2FycmF5MiYgQiwgY29uc3QgVF9hcnJheTMmIEMsIGNvbnN0IFRfYXJy
YXk0JiBELCBjb25zdCBUX2FycmF5NSYgRSwgCiAgICBjb25zdCBUX2FycmF5NiYgRiwgY29uc3Qg
VF9hcnJheTcmIEcsIGNvbnN0IFRfYXJyYXk4JiBILCBjb25zdCBUX2FycmF5OSYgSSwgCiAgICBj
b25zdCBUX2FycmF5MTAmIEosIGNvbnN0IFRfYXJyYXkxMSYgSykKewogICAgIAogICAgdHlwZW5h
bWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXkyPjo6VF9zdGVuY2lsRXh0ZW50IEJ0Owog
ICAgdHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXkzPjo6VF9zdGVuY2lsRXh0
ZW50IEN0OwogICAgdHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXk0Pjo6VF9z
dGVuY2lsRXh0ZW50IER0OwogICAgdHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJy
YXk1Pjo6VF9zdGVuY2lsRXh0ZW50IEV0OwogICAgdHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJh
aXRzPFRfYXJyYXk2Pjo6VF9zdGVuY2lsRXh0ZW50IEZ0OwogICAgdHlwZW5hbWUgIHN0ZW5jaWxF
eHRlbnRfdHJhaXRzPFRfYXJyYXk3Pjo6VF9zdGVuY2lsRXh0ZW50IEd0OwogICAgdHlwZW5hbWUg
IHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXk4Pjo6VF9zdGVuY2lsRXh0ZW50IEh0OwogICAg
dHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXk5Pjo6VF9zdGVuY2lsRXh0ZW50
IEl0OwogICAgdHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXkxMD46OlRfc3Rl
bmNpbEV4dGVudCBKdDsKICAgIHR5cGVuYW1lICBzdGVuY2lsRXh0ZW50X3RyYWl0czxUX2FycmF5
MTE+OjpUX3N0ZW5jaWxFeHRlbnQgS3Q7CgogICAgc3RlbmNpbC5hcHBseShBdCwgQnQsIEN0LCBE
dCwgRXQsIEZ0LCBHdCwgSHQsIEl0LCBKdCwgS3QpOwogICAgQXQuY29tYmluZShCdCk7CiAgICBB
dC5jb21iaW5lKEN0KTsKICAgIEF0LmNvbWJpbmUoRHQpOwogICAgQXQuY29tYmluZShFdCk7CiAg
ICBBdC5jb21iaW5lKEZ0KTsKICAgIEF0LmNvbWJpbmUoR3QpOwogICAgQXQuY29tYmluZShIdCk7
CiAgICBBdC5jb21iaW5lKEl0KTsKICAgIEF0LmNvbWJpbmUoSnQpOwogICAgQXQuY29tYmluZShL
dCk7Cn0KCnRlbXBsYXRlPGludCBOX3JhbmssIGNsYXNzIFRfc3RlbmNpbCwgY2xhc3MgVF9udW10
eXBlMSwgY2xhc3MgVF9hcnJheTI+ClJlY3REb21haW48Tl9yYW5rPiBpbnRlcmlvckRvbWFpbihj
b25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsCiAgICBjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFu
az4mIEEsCiAgICBjb25zdCBUX2FycmF5MiYgQikKewogICAgUmVjdERvbWFpbjxOX3Jhbms+IGRv
bWFpbiA9IEEuZG9tYWluKCk7CgogICAgIAogICAgc3RlbmNpbEV4dGVudDwzLCBUX251bXR5cGUx
PiBBdDsKICAgIGNhbGNTdGVuY2lsRXh0ZW50KEF0LCBzdGVuY2lsLCBBLCBCLCBfZHVtbXlBcnJh
eSwgX2R1bW15QXJyYXksIAogICAgICAgIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15
QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgCiAgICAgICAgX2R1bW15QXJyYXksIF9k
dW1teUFycmF5KTsKCiAgICAgCiAgICBUaW55VmVjdG9yPGludCxOX3Jhbms+IGxib3VuZCwgdWJv
dW5kOwogICAgbGJvdW5kID0gZG9tYWluLmxib3VuZCgpIC0gQXQubWluKCk7CiAgICB1Ym91bmQg
PSBkb21haW4udWJvdW5kKCkgLSBBdC5tYXgoKTsKICAgIHJldHVybiBSZWN0RG9tYWluPE5fcmFu
az4obGJvdW5kLHVib3VuZCk7Cn0KCnRlbXBsYXRlPGludCBoYXNFeHRlbnRzPgpzdHJ1Y3QgX2dl
dFN0ZW5jaWxFeHRlbnQgewp0ZW1wbGF0ZTxpbnQgTl9yYW5rLAogICAgY2xhc3MgVF9zdGVuY2ls
LCBjbGFzcyBUX251bXR5cGUxLCBjbGFzcyBUX2FycmF5MiwKICAgIGNsYXNzIFRfYXJyYXkzLCBj
bGFzcyBUX2FycmF5NCwgY2xhc3MgVF9hcnJheTUsIGNsYXNzIFRfYXJyYXk2LAogICAgY2xhc3Mg
VF9hcnJheTcsIGNsYXNzIFRfYXJyYXk4LCBjbGFzcyBUX2FycmF5OSwgY2xhc3MgVF9hcnJheTEw
LAogICAgY2xhc3MgVF9hcnJheTExPgpzdGF0aWMgdm9pZCBnZXRTdGVuY2lsRXh0ZW50KFRpbnlW
ZWN0b3I8aW50LE5fcmFuaz4mIG1pbmIsCiAgICBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBtYXhi
LAogICAgY29uc3QgVF9zdGVuY2lsJiBzdGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4m
IEEsCiAgICBUX2FycmF5MiYgQiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBELCBUX2FycmF5NSYg
RSwgVF9hcnJheTYmIEYsCiAgICBUX2FycmF5NyYgRywgVF9hcnJheTgmIEgsIFRfYXJyYXk5JiBJ
LCBUX2FycmF5MTAmIEosIFRfYXJyYXkxMSYgSykKewogICAgIAogICAgc3RlbmNpbEV4dGVudDxO
X3JhbmssIFRfbnVtdHlwZTE+IEF0OwogICAgY2FsY1N0ZW5jaWxFeHRlbnQoQXQsIHN0ZW5jaWws
IEEsIEIsIEMsIEQsIEUsIEYsIEcsIEgsIEksIEosIEspOwogICAgbWluYiA9IEF0Lm1pbigpOwog
ICAgbWF4YiA9IEF0Lm1heCgpOwp9Cn07Cgp0ZW1wbGF0ZTw+CnN0cnVjdCBfZ2V0U3RlbmNpbEV4
dGVudDwxPiB7CnRlbXBsYXRlPGludCBOX3JhbmssCiAgICBjbGFzcyBUX3N0ZW5jaWwsIGNsYXNz
IFRfbnVtdHlwZTEsIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNsYXNzIFRf
YXJyYXk0LCBjbGFzcyBUX2FycmF5NSwgY2xhc3MgVF9hcnJheTYsCiAgICBjbGFzcyBUX2FycmF5
NywgY2xhc3MgVF9hcnJheTgsIGNsYXNzIFRfYXJyYXk5LCBjbGFzcyBUX2FycmF5MTAsCiAgICBj
bGFzcyBUX2FycmF5MTE+CnN0YXRpYyBpbmxpbmUgdm9pZCBnZXRTdGVuY2lsRXh0ZW50KFRpbnlW
ZWN0b3I8aW50LE5fcmFuaz4mIG1pbmIsCiAgICBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBtYXhi
LAogICAgY29uc3QgVF9zdGVuY2lsJiBzdGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4m
IEEsCiAgICBUX2FycmF5MiYgQiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBELCBUX2FycmF5NSYg
RSwgVF9hcnJheTYmIEYsCiAgICBUX2FycmF5NyYgRywgVF9hcnJheTgmIEgsIFRfYXJyYXk5JiBJ
LCBUX2FycmF5MTAmIEosIFRfYXJyYXkxMSYgSykKewogICAgc3RlbmNpbC5nZXRFeHRlbnQobWlu
YiwgbWF4Yik7Cn0KfTsKCnRlbXBsYXRlPGludCBOX3JhbmssCiAgICBjbGFzcyBUX3N0ZW5jaWws
IGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNs
YXNzIFRfYXJyYXk0LCBjbGFzcyBUX2FycmF5NSwgY2xhc3MgVF9hcnJheTYsCiAgICBjbGFzcyBU
X2FycmF5NywgY2xhc3MgVF9hcnJheTgsIGNsYXNzIFRfYXJyYXk5LCBjbGFzcyBUX2FycmF5MTAs
CiAgICBjbGFzcyBUX2FycmF5MTE+CmlubGluZSB2b2lkIGdldFN0ZW5jaWxFeHRlbnQoVGlueVZl
Y3RvcjxpbnQsTl9yYW5rPiYgbWluYiwKICAgIFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIG1heGIs
CiAgICBjb25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYg
QSwKICAgIFRfYXJyYXkyJiBCLCBUX2FycmF5MyYgQywgVF9hcnJheTQmIEQsIFRfYXJyYXk1JiBF
LCBUX2FycmF5NiYgRiwKICAgIFRfYXJyYXk3JiBHLCBUX2FycmF5OCYgSCwgVF9hcnJheTkmIEks
IFRfYXJyYXkxMCYgSiwgVF9hcnJheTExJiBLKQp7CiAgICBfZ2V0U3RlbmNpbEV4dGVudDxUX3N0
ZW5jaWw6Omhhc0V4dGVudD46OmdldFN0ZW5jaWxFeHRlbnQoCiAgICAgICAgbWluYiwgbWF4Yiwg
c3RlbmNpbCwgQSwgQiwgQywgRCwgRSwgRiwgRywgSCwgSSwgSiwgSyk7Cn0KCiAKCgoKCnRlbXBs
YXRlPGNsYXNzIFRfc3RlbmNpbCwgY2xhc3MgVF9udW10eXBlMSwgY2xhc3MgVF9hcnJheTIsCiAg
ICBjbGFzcyBUX2FycmF5MywgY2xhc3MgVF9hcnJheTQsIGNsYXNzIFRfYXJyYXk1LCBjbGFzcyBU
X2FycmF5NiwKICAgIGNsYXNzIFRfYXJyYXk3LCBjbGFzcyBUX2FycmF5OCwgY2xhc3MgVF9hcnJh
eTksIGNsYXNzIFRfYXJyYXkxMCwKICAgIGNsYXNzIFRfYXJyYXkxMT4Kdm9pZCBhcHBseVN0ZW5j
aWxfaW1wKGNvbnN0IFRfc3RlbmNpbCYgc3RlbmNpbCwgQXJyYXk8VF9udW10eXBlMSwzPiYgQSwK
ICAgIFRfYXJyYXkyJiBCLCBUX2FycmF5MyYgQywgVF9hcnJheTQmIEQsIFRfYXJyYXk1JiBFLCBU
X2FycmF5NiYgRiwKICAgIFRfYXJyYXk3JiBHLCBUX2FycmF5OCYgSCwgVF9hcnJheTkmIEksIFRf
YXJyYXkxMCYgSiwgVF9hcnJheTExJiBLKQp7CiAgICBjaGVja1NoYXBlcyhBLEIsQyxELEUsRixH
LEgsSSxKLEspOwogCiAgICAgCiAgICBUaW55VmVjdG9yPGludCwzPiBtaW5iLCBtYXhiOwogICAg
Z2V0U3RlbmNpbEV4dGVudChtaW5iLCBtYXhiLCBzdGVuY2lsLCBBLCBCLCBDLCBELCBFLCBGLCBH
LCBILCBJLCBKLCBLKTsKCiAgICAgCiAgICAgCiAgICAgCiAgICBpbnQgc3RlbmNpbF9sYm91bmQw
ID0gbWluYigwKTsKICAgIGludCBzdGVuY2lsX2xib3VuZDEgPSBtaW5iKDEpOwogICAgaW50IHN0
ZW5jaWxfbGJvdW5kMiA9IG1pbmIoMik7CgogICAgaW50IHN0ZW5jaWxfdWJvdW5kMCA9IG1heGIo
MCk7CiAgICBpbnQgc3RlbmNpbF91Ym91bmQxID0gbWF4YigxKTsKICAgIGludCBzdGVuY2lsX3Vi
b3VuZDIgPSBtYXhiKDIpOwoKICAgIGludCBsYm91bmQwID0gbWlubWF4OjptYXgoQS5sYm91bmQo
MCksIEEubGJvdW5kKDApIC0gc3RlbmNpbF9sYm91bmQwKTsKICAgIGludCBsYm91bmQxID0gbWlu
bWF4OjptYXgoQS5sYm91bmQoMSksIEEubGJvdW5kKDEpIC0gc3RlbmNpbF9sYm91bmQxKTsKICAg
IGludCBsYm91bmQyID0gbWlubWF4OjptYXgoQS5sYm91bmQoMiksIEEubGJvdW5kKDIpIC0gc3Rl
bmNpbF9sYm91bmQyKTsKCiAgICBpbnQgdWJvdW5kMCA9IG1pbm1heDo6bWluKEEudWJvdW5kKDAp
LCBBLnVib3VuZCgwKSAtIHN0ZW5jaWxfdWJvdW5kMCk7CiAgICBpbnQgdWJvdW5kMSA9IG1pbm1h
eDo6bWluKEEudWJvdW5kKDEpLCBBLnVib3VuZCgxKSAtIHN0ZW5jaWxfdWJvdW5kMSk7CiAgICBp
bnQgdWJvdW5kMiA9IG1pbm1heDo6bWluKEEudWJvdW5kKDIpLCBBLnVib3VuZCgyKSAtIHN0ZW5j
aWxfdWJvdW5kMik7CgoKCgoKCgoKICAgICAKICAgIEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlw
ZTEsMz4gQWl0ZXIoQSk7CiAgICB0eXBlbmFtZSAgVF9hcnJheTI6OlRfaXRlcmF0b3IgQml0ZXIo
Qik7CiAgICB0eXBlbmFtZSAgVF9hcnJheTM6OlRfaXRlcmF0b3IgQ2l0ZXIoQyk7CiAgICB0eXBl
bmFtZSAgVF9hcnJheTQ6OlRfaXRlcmF0b3IgRGl0ZXIoRCk7CiAgICB0eXBlbmFtZSAgVF9hcnJh
eTU6OlRfaXRlcmF0b3IgRWl0ZXIoRSk7CiAgICB0eXBlbmFtZSAgVF9hcnJheTY6OlRfaXRlcmF0
b3IgRml0ZXIoRik7CiAgICB0eXBlbmFtZSAgVF9hcnJheTc6OlRfaXRlcmF0b3IgR2l0ZXIoRyk7
CiAgICB0eXBlbmFtZSAgVF9hcnJheTg6OlRfaXRlcmF0b3IgSGl0ZXIoSCk7CiAgICB0eXBlbmFt
ZSAgVF9hcnJheTk6OlRfaXRlcmF0b3IgSWl0ZXIoSSk7CiAgICB0eXBlbmFtZSAgVF9hcnJheTEw
OjpUX2l0ZXJhdG9yIEppdGVyKEopOwogICAgdHlwZW5hbWUgIFRfYXJyYXkxMTo6VF9pdGVyYXRv
ciBLaXRlcihLKTsKCiAgICAgCiAgICBBaXRlci5sb2FkU3RyaWRlKDIpOwogICAgQml0ZXIubG9h
ZFN0cmlkZSgyKTsKICAgIENpdGVyLmxvYWRTdHJpZGUoMik7CiAgICBEaXRlci5sb2FkU3RyaWRl
KDIpOwogICAgRWl0ZXIubG9hZFN0cmlkZSgyKTsKICAgIEZpdGVyLmxvYWRTdHJpZGUoMik7CiAg
ICBHaXRlci5sb2FkU3RyaWRlKDIpOwogICAgSGl0ZXIubG9hZFN0cmlkZSgyKTsKICAgIElpdGVy
LmxvYWRTdHJpZGUoMik7CiAgICBKaXRlci5sb2FkU3RyaWRlKDIpOwogICAgS2l0ZXIubG9hZFN0
cmlkZSgyKTsKCiAgICBmb3IgKGludCBpPWxib3VuZDA7IGkgPD0gdWJvdW5kMDsgKytpKQogICAg
ewogICAgICBmb3IgKGludCBqPWxib3VuZDE7IGogPD0gdWJvdW5kMTsgKytqKQogICAgICB7CiAg
ICAgICAgQWl0ZXIubW92ZVRvKGksaixsYm91bmQyKTsKICAgICAgICBCaXRlci5tb3ZlVG8oaSxq
LGxib3VuZDIpOwogICAgICAgIENpdGVyLm1vdmVUbyhpLGosbGJvdW5kMik7CiAgICAgICAgRGl0
ZXIubW92ZVRvKGksaixsYm91bmQyKTsKICAgICAgICBFaXRlci5tb3ZlVG8oaSxqLGxib3VuZDIp
OwogICAgICAgIEZpdGVyLm1vdmVUbyhpLGosbGJvdW5kMik7CiAgICAgICAgR2l0ZXIubW92ZVRv
KGksaixsYm91bmQyKTsKICAgICAgICBIaXRlci5tb3ZlVG8oaSxqLGxib3VuZDIpOwogICAgICAg
IElpdGVyLm1vdmVUbyhpLGosbGJvdW5kMik7CiAgICAgICAgSml0ZXIubW92ZVRvKGksaixsYm91
bmQyKTsKICAgICAgICBLaXRlci5tb3ZlVG8oaSxqLGxib3VuZDIpOwoKICAgICAgICBmb3IgKGlu
dCBrPWxib3VuZDI7IGsgPD0gdWJvdW5kMjsgKytrKQogICAgICAgIHsKICAgICAgICAgICAgc3Rl
bmNpbC5hcHBseShBaXRlciwgQml0ZXIsIENpdGVyLCBEaXRlciwgRWl0ZXIsIEZpdGVyLCBHaXRl
ciwKICAgICAgICAgICAgICAgIEhpdGVyLCBJaXRlciwgSml0ZXIsIEtpdGVyKTsKCiAgICAgICAg
ICAgIEFpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgQml0ZXIuYWR2YW5jZSgpOwogICAgICAg
ICAgICBDaXRlci5hZHZhbmNlKCk7CiAgICAgICAgICAgIERpdGVyLmFkdmFuY2UoKTsKICAgICAg
ICAgICAgRWl0ZXIuYWR2YW5jZSgpOwogICAgICAgICAgICBGaXRlci5hZHZhbmNlKCk7CiAgICAg
ICAgICAgIEdpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgSGl0ZXIuYWR2YW5jZSgpOwogICAg
ICAgICAgICBJaXRlci5hZHZhbmNlKCk7CiAgICAgICAgICAgIEppdGVyLmFkdmFuY2UoKTsKICAg
ICAgICAgICAgS2l0ZXIuYWR2YW5jZSgpOwogICAgICAgIH0KICAgICAgfQogICAgfQp9CgogCgoK
Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfYXJy
YXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNsYXNzIFRfYXJyYXk0LCBjbGFzcyBUX2FycmF5NSwg
Y2xhc3MgVF9hcnJheTYsCiAgICBjbGFzcyBUX2FycmF5NywgY2xhc3MgVF9hcnJheTgsIGNsYXNz
IFRfYXJyYXk5LCBjbGFzcyBUX2FycmF5MTAsCiAgICBjbGFzcyBUX2FycmF5MTE+CnZvaWQgYXBw
bHlTdGVuY2lsX2ltcChjb25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEs
Mj4mIEEsCiAgICBUX2FycmF5MiYgQiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBELCBUX2FycmF5
NSYgRSwgVF9hcnJheTYmIEYsIAogICAgVF9hcnJheTcmIEcsIFRfYXJyYXk4JiBILCBUX2FycmF5
OSYgSSwgVF9hcnJheTEwJiBKLCBUX2FycmF5MTEmIEspCnsKICAgIGNoZWNrU2hhcGVzKEEsQixD
LEQsRSxGLEcsSCxJLEosSyk7CgogICAgIAogICAgVGlueVZlY3RvcjxpbnQsMj4gbWluYiwgbWF4
YjsKICAgIGdldFN0ZW5jaWxFeHRlbnQobWluYiwgbWF4Yiwgc3RlbmNpbCwgQSwgQiwgQywgRCwg
RSwgRiwgRywgSCwgSSwgSiwgSyk7CgogICAgIAogICAgIAogICAgIAogICAgaW50IHN0ZW5jaWxf
bGJvdW5kMCA9IG1pbmIoMCk7CiAgICBpbnQgc3RlbmNpbF9sYm91bmQxID0gbWluYigxKTsKCiAg
ICBpbnQgc3RlbmNpbF91Ym91bmQwID0gbWF4YigwKTsKICAgIGludCBzdGVuY2lsX3Vib3VuZDEg
PSBtYXhiKDEpOwoKICAgIGludCBsYm91bmQwID0gbWlubWF4OjptYXgoQS5sYm91bmQoMCksIEEu
bGJvdW5kKDApIC0gc3RlbmNpbF9sYm91bmQwKTsKICAgIGludCBsYm91bmQxID0gbWlubWF4Ojpt
YXgoQS5sYm91bmQoMSksIEEubGJvdW5kKDEpIC0gc3RlbmNpbF9sYm91bmQxKTsKCiAgICBpbnQg
dWJvdW5kMCA9IG1pbm1heDo6bWluKEEudWJvdW5kKDApLCBBLnVib3VuZCgwKSAtIHN0ZW5jaWxf
dWJvdW5kMCk7CiAgICBpbnQgdWJvdW5kMSA9IG1pbm1heDo6bWluKEEudWJvdW5kKDEpLCBBLnVi
b3VuZCgxKSAtIHN0ZW5jaWxfdWJvdW5kMSk7CgoKCgoKCgogICAgIAogICAgRmFzdEFycmF5SXRl
cmF0b3I8VF9udW10eXBlMSwyPiBBaXRlcihBKTsKICAgIHR5cGVuYW1lICBUX2FycmF5Mjo6VF9p
dGVyYXRvciBCaXRlcihCKTsKICAgIHR5cGVuYW1lICBUX2FycmF5Mzo6VF9pdGVyYXRvciBDaXRl
cihDKTsKICAgIHR5cGVuYW1lICBUX2FycmF5NDo6VF9pdGVyYXRvciBEaXRlcihEKTsKICAgIHR5
cGVuYW1lICBUX2FycmF5NTo6VF9pdGVyYXRvciBFaXRlcihFKTsKICAgIHR5cGVuYW1lICBUX2Fy
cmF5Njo6VF9pdGVyYXRvciBGaXRlcihGKTsKICAgIHR5cGVuYW1lICBUX2FycmF5Nzo6VF9pdGVy
YXRvciBHaXRlcihHKTsKICAgIHR5cGVuYW1lICBUX2FycmF5ODo6VF9pdGVyYXRvciBIaXRlcihI
KTsKICAgIHR5cGVuYW1lICBUX2FycmF5OTo6VF9pdGVyYXRvciBJaXRlcihJKTsKICAgIHR5cGVu
YW1lICBUX2FycmF5MTA6OlRfaXRlcmF0b3IgSml0ZXIoSik7CiAgICB0eXBlbmFtZSAgVF9hcnJh
eTExOjpUX2l0ZXJhdG9yIEtpdGVyKEspOwoKICAgICAKICAgIEFpdGVyLmxvYWRTdHJpZGUoMSk7
CiAgICBCaXRlci5sb2FkU3RyaWRlKDEpOwogICAgQ2l0ZXIubG9hZFN0cmlkZSgxKTsKICAgIERp
dGVyLmxvYWRTdHJpZGUoMSk7CiAgICBFaXRlci5sb2FkU3RyaWRlKDEpOwogICAgRml0ZXIubG9h
ZFN0cmlkZSgxKTsKICAgIEdpdGVyLmxvYWRTdHJpZGUoMSk7CiAgICBIaXRlci5sb2FkU3RyaWRl
KDEpOwogICAgSWl0ZXIubG9hZFN0cmlkZSgxKTsKICAgIEppdGVyLmxvYWRTdHJpZGUoMSk7CiAg
ICBLaXRlci5sb2FkU3RyaWRlKDEpOwoKICAgIGZvciAoaW50IGk9bGJvdW5kMDsgaSA8PSB1Ym91
bmQwOyArK2kpCiAgICB7CiAgICAgICAgQWl0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAg
Qml0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAgQ2l0ZXIubW92ZVRvKGksbGJvdW5kMSk7
CiAgICAgICAgRGl0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAgRWl0ZXIubW92ZVRvKGks
bGJvdW5kMSk7CiAgICAgICAgRml0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAgR2l0ZXIu
bW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAgSGl0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAg
ICAgSWl0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAgSml0ZXIubW92ZVRvKGksbGJvdW5k
MSk7CiAgICAgICAgS2l0ZXIubW92ZVRvKGksbGJvdW5kMSk7CgogICAgICAgIGZvciAoaW50IGs9
bGJvdW5kMTsgayA8PSB1Ym91bmQxOyArK2spCiAgICAgICAgewogICAgICAgICAgICBzdGVuY2ls
LmFwcGx5KEFpdGVyLCBCaXRlciwgQ2l0ZXIsIERpdGVyLCBFaXRlciwgRml0ZXIsIEdpdGVyLAog
ICAgICAgICAgICAgICAgSGl0ZXIsIElpdGVyLCBKaXRlciwgS2l0ZXIpOwoKICAgICAgICAgICAg
QWl0ZXIuYWR2YW5jZSgpOwogICAgICAgICAgICBCaXRlci5hZHZhbmNlKCk7CiAgICAgICAgICAg
IENpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgRGl0ZXIuYWR2YW5jZSgpOwogICAgICAgICAg
ICBFaXRlci5hZHZhbmNlKCk7CiAgICAgICAgICAgIEZpdGVyLmFkdmFuY2UoKTsKICAgICAgICAg
ICAgR2l0ZXIuYWR2YW5jZSgpOwogICAgICAgICAgICBIaXRlci5hZHZhbmNlKCk7CiAgICAgICAg
ICAgIElpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgSml0ZXIuYWR2YW5jZSgpOwogICAgICAg
ICAgICBLaXRlci5hZHZhbmNlKCk7CiAgICAgICAgfQogICAgfQp9CgogCgoKCgp0ZW1wbGF0ZTxj
bGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfYXJyYXkyLAogICAgY2xh
c3MgVF9hcnJheTMsIGNsYXNzIFRfYXJyYXk0LCBjbGFzcyBUX2FycmF5NSwgY2xhc3MgVF9hcnJh
eTYsCiAgICBjbGFzcyBUX2FycmF5NywgY2xhc3MgVF9hcnJheTgsIGNsYXNzIFRfYXJyYXk5LCBj
bGFzcyBUX2FycmF5MTAsCiAgICBjbGFzcyBUX2FycmF5MTE+CnZvaWQgYXBwbHlTdGVuY2lsX2lt
cChjb25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsMT4mIEEsCiAgICBU
X2FycmF5MiYgQiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBELCBUX2FycmF5NSYgRSwgVF9hcnJh
eTYmIEYsIAogICAgVF9hcnJheTcmIEcsIFRfYXJyYXk4JiBILCBUX2FycmF5OSYgSSwgVF9hcnJh
eTEwJiBKLCBUX2FycmF5MTEmIEspCnsKICAgIGNoZWNrU2hhcGVzKEEsQixDLEQsRSxGLEcsSCxJ
LEosSyk7CgogICAgIAogICAgVGlueVZlY3RvcjxpbnQsMT4gbWluYiwgbWF4YjsKICAgIGdldFN0
ZW5jaWxFeHRlbnQobWluYiwgbWF4Yiwgc3RlbmNpbCwgQSwgQiwgQywgRCwgRSwgRiwgRywgSCwg
SSwgSiwgSyk7CgogICAgIAogICAgIAogICAgIAogICAgaW50IHN0ZW5jaWxfbGJvdW5kMCA9IG1p
bmIoMCk7CiAgICBpbnQgc3RlbmNpbF91Ym91bmQwID0gbWF4YigwKTsKCiAgICBpbnQgbGJvdW5k
MCA9IG1pbm1heDo6bWF4KEEubGJvdW5kKDApLCBBLmxib3VuZCgwKSAtIHN0ZW5jaWxfbGJvdW5k
MCk7CiAgICBpbnQgdWJvdW5kMCA9IG1pbm1heDo6bWluKEEudWJvdW5kKDApLCBBLnVib3VuZCgw
KSAtIHN0ZW5jaWxfdWJvdW5kMCk7CgoKCgoKCiAgICAgCiAgICBGYXN0QXJyYXlJdGVyYXRvcjxU
X251bXR5cGUxLDE+IEFpdGVyKEEpOwogICAgdHlwZW5hbWUgIFRfYXJyYXkyOjpUX2l0ZXJhdG9y
IEJpdGVyKEIpOwogICAgdHlwZW5hbWUgIFRfYXJyYXkzOjpUX2l0ZXJhdG9yIENpdGVyKEMpOwog
ICAgdHlwZW5hbWUgIFRfYXJyYXk0OjpUX2l0ZXJhdG9yIERpdGVyKEQpOwogICAgdHlwZW5hbWUg
IFRfYXJyYXk1OjpUX2l0ZXJhdG9yIEVpdGVyKEUpOwogICAgdHlwZW5hbWUgIFRfYXJyYXk2OjpU
X2l0ZXJhdG9yIEZpdGVyKEYpOwogICAgdHlwZW5hbWUgIFRfYXJyYXk3OjpUX2l0ZXJhdG9yIEdp
dGVyKEcpOwogICAgdHlwZW5hbWUgIFRfYXJyYXk4OjpUX2l0ZXJhdG9yIEhpdGVyKEgpOwogICAg
dHlwZW5hbWUgIFRfYXJyYXk5OjpUX2l0ZXJhdG9yIElpdGVyKEkpOwogICAgdHlwZW5hbWUgIFRf
YXJyYXkxMDo6VF9pdGVyYXRvciBKaXRlcihKKTsKICAgIHR5cGVuYW1lICBUX2FycmF5MTE6OlRf
aXRlcmF0b3IgS2l0ZXIoSyk7CgogICAgIAogICAgQWl0ZXIubG9hZFN0cmlkZSgwKTsKICAgIEJp
dGVyLmxvYWRTdHJpZGUoMCk7CiAgICBDaXRlci5sb2FkU3RyaWRlKDApOwogICAgRGl0ZXIubG9h
ZFN0cmlkZSgwKTsKICAgIEVpdGVyLmxvYWRTdHJpZGUoMCk7CiAgICBGaXRlci5sb2FkU3RyaWRl
KDApOwogICAgR2l0ZXIubG9hZFN0cmlkZSgwKTsKICAgIEhpdGVyLmxvYWRTdHJpZGUoMCk7CiAg
ICBJaXRlci5sb2FkU3RyaWRlKDApOwogICAgSml0ZXIubG9hZFN0cmlkZSgwKTsKICAgIEtpdGVy
LmxvYWRTdHJpZGUoMCk7CgogICAgQWl0ZXIubW92ZVRvKGxib3VuZDApOwogICAgQml0ZXIubW92
ZVRvKGxib3VuZDApOwogICAgQ2l0ZXIubW92ZVRvKGxib3VuZDApOwogICAgRGl0ZXIubW92ZVRv
KGxib3VuZDApOwogICAgRWl0ZXIubW92ZVRvKGxib3VuZDApOwogICAgRml0ZXIubW92ZVRvKGxi
b3VuZDApOwogICAgR2l0ZXIubW92ZVRvKGxib3VuZDApOwogICAgSGl0ZXIubW92ZVRvKGxib3Vu
ZDApOwogICAgSWl0ZXIubW92ZVRvKGxib3VuZDApOwogICAgSml0ZXIubW92ZVRvKGxib3VuZDAp
OwogICAgS2l0ZXIubW92ZVRvKGxib3VuZDApOwoKICAgIGZvciAoaW50IGk9bGJvdW5kMDsgaSA8
PSB1Ym91bmQwOyArK2kpCiAgICB7CiAgICAgICAgc3RlbmNpbC5hcHBseShBaXRlciwgQml0ZXIs
IENpdGVyLCBEaXRlciwgRWl0ZXIsIEZpdGVyLCBHaXRlciwKICAgICAgICAgICAgSGl0ZXIsIElp
dGVyLCBKaXRlciwgS2l0ZXIpOwoKICAgICAgICBBaXRlci5hZHZhbmNlKCk7CiAgICAgICAgQml0
ZXIuYWR2YW5jZSgpOwogICAgICAgIENpdGVyLmFkdmFuY2UoKTsKICAgICAgICBEaXRlci5hZHZh
bmNlKCk7CiAgICAgICAgRWl0ZXIuYWR2YW5jZSgpOwogICAgICAgIEZpdGVyLmFkdmFuY2UoKTsK
ICAgICAgICBHaXRlci5hZHZhbmNlKCk7CiAgICAgICAgSGl0ZXIuYWR2YW5jZSgpOwogICAgICAg
IElpdGVyLmFkdmFuY2UoKTsKICAgICAgICBKaXRlci5hZHZhbmNlKCk7CiAgICAgICAgS2l0ZXIu
YWR2YW5jZSgpOwogICAgfQp9CgogCgoKCgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNz
IFRfbnVtdHlwZTEsIGludCBOX3Jhbms+CmlubGluZSB2b2lkIGFwcGx5U3RlbmNpbChjb25zdCBU
X3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYgQSkKewogICAgYXBw
bHlTdGVuY2lsX2ltcChzdGVuY2lsLCBBLCBfZHVtbXlBcnJheSwgX2R1bW15QXJyYXksCiAgICAg
ICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15QXJyYXksCiAg
ICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15QXJyYXkp
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRfbnVtdHlwZTEsIGludCBOX3Jh
bmssIGNsYXNzIFRfYXJyYXkyPgppbmxpbmUgdm9pZCBhcHBseVN0ZW5jaWwoY29uc3QgVF9zdGVu
Y2lsJiBzdGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4mIEEsCiAgICBUX2FycmF5MiYg
QikKewogICAgYXBwbHlTdGVuY2lsX2ltcChzdGVuY2lsLCBBLCBCLCBfZHVtbXlBcnJheSwgX2R1
bW15QXJyYXksCiAgICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwg
X2R1bW15QXJyYXksCiAgICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJh
eSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfc3RlbmNpbCwgY2xhc3MgVF9udW10eXBlMSwgaW50IE5f
cmFuaywgY2xhc3MgVF9hcnJheTIsCiAgICBjbGFzcyBUX2FycmF5Mz4KaW5saW5lIHZvaWQgYXBw
bHlTdGVuY2lsKGNvbnN0IFRfc3RlbmNpbCYgc3RlbmNpbCwgQXJyYXk8VF9udW10eXBlMSxOX3Jh
bms+JiBBLAogICAgVF9hcnJheTImIEIsIFRfYXJyYXkzJiBDKQp7CiAgICBhcHBseVN0ZW5jaWxf
aW1wKHN0ZW5jaWwsIEEsIEIsIEMsIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwKICAgICAgICBf
ZHVtbXlBcnJheSwgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15
QXJyYXksCiAgICAgICAgX2R1bW15QXJyYXkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWws
IGNsYXNzIFRfbnVtdHlwZTEsIGludCBOX3JhbmssIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3Mg
VF9hcnJheTMsIGNsYXNzIFRfYXJyYXk0PgppbmxpbmUgdm9pZCBhcHBseVN0ZW5jaWwoY29uc3Qg
VF9zdGVuY2lsJiBzdGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4mIEEsCiAgICBUX2Fy
cmF5MiYgQiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBEKQp7CiAgICBhcHBseVN0ZW5jaWxfaW1w
KHN0ZW5jaWwsIEEsIEIsIEMsIEQsIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwKICAgICAgICBf
ZHVtbXlBcnJheSwgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15
QXJyYXkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRfbnVtdHlwZTEsIGlu
dCBOX3JhbmssIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNsYXNzIFRfYXJy
YXk0LCBjbGFzcyBUX2FycmF5NT4KaW5saW5lIHZvaWQgYXBwbHlTdGVuY2lsKGNvbnN0IFRfc3Rl
bmNpbCYgc3RlbmNpbCwgQXJyYXk8VF9udW10eXBlMSxOX3Jhbms+JiBBLAogICBUX2FycmF5MiYg
QiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBELCBUX2FycmF5NSYgRSkKewogICAgYXBwbHlTdGVu
Y2lsX2ltcChzdGVuY2lsLCBBLCBCLCBDLCBELCBFLCBfZHVtbXlBcnJheSwKICAgICAgICBfZHVt
bXlBcnJheSwgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15QXJy
YXkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRfbnVtdHlwZTEsIGludCBO
X3JhbmssIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNsYXNzIFRfYXJyYXk0
LCBjbGFzcyBUX2FycmF5NSwgY2xhc3MgVF9hcnJheTY+CmlubGluZSB2b2lkIGFwcGx5U3RlbmNp
bChjb25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYgQSwK
ICAgVF9hcnJheTImIEIsIFRfYXJyYXkzJiBDLCBUX2FycmF5NCYgRCwgVF9hcnJheTUmIEUsIFRf
YXJyYXk2JiBGKQp7CiAgICBhcHBseVN0ZW5jaWxfaW1wKHN0ZW5jaWwsIEEsIEIsIEMsIEQsIEUs
IEYsCiAgICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15
QXJyYXksIF9kdW1teUFycmF5KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9zdGVuY2lsLCBjbGFzcyBU
X251bXR5cGUxLCBpbnQgTl9yYW5rLCBjbGFzcyBUX2FycmF5MiwKICAgIGNsYXNzIFRfYXJyYXkz
LCBjbGFzcyBUX2FycmF5NCwgY2xhc3MgVF9hcnJheTUsIGNsYXNzIFRfYXJyYXk2LAogICAgY2xh
c3MgVF9hcnJheTc+CmlubGluZSB2b2lkIGFwcGx5U3RlbmNpbChjb25zdCBUX3N0ZW5jaWwmIHN0
ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYgQSwKICAgVF9hcnJheTImIEIsIFRfYXJy
YXkzJiBDLCBUX2FycmF5NCYgRCwgVF9hcnJheTUmIEUsIFRfYXJyYXk2JiBGLAogICBUX2FycmF5
NyYgRykKewogICAgYXBwbHlTdGVuY2lsX2ltcChzdGVuY2lsLCBBLCBCLCBDLCBELCBFLCBGLCBH
LAogICAgICAgIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15QXJyYXksIF9kdW1teUFy
cmF5KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9zdGVuY2lsLCBjbGFzcyBUX251bXR5cGUxLCBpbnQg
Tl9yYW5rLCBjbGFzcyBUX2FycmF5MiwKICAgIGNsYXNzIFRfYXJyYXkzLCBjbGFzcyBUX2FycmF5
NCwgY2xhc3MgVF9hcnJheTUsIGNsYXNzIFRfYXJyYXk2LAogICAgY2xhc3MgVF9hcnJheTcsIGNs
YXNzIFRfYXJyYXk4PgppbmxpbmUgdm9pZCBhcHBseVN0ZW5jaWwoY29uc3QgVF9zdGVuY2lsJiBz
dGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4mIEEsCiAgIFRfYXJyYXkyJiBCLCBUX2Fy
cmF5MyYgQywgVF9hcnJheTQmIEQsIFRfYXJyYXk1JiBFLCBUX2FycmF5NiYgRiwKICAgVF9hcnJh
eTcmIEcsIFRfYXJyYXk4JiBIKQp7CiAgICBhcHBseVN0ZW5jaWxfaW1wKHN0ZW5jaWwsIEEsIEIs
IEMsIEQsIEUsIEYsIEcsIEgsCiAgICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVt
bXlBcnJheSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfc3RlbmNpbCwgY2xhc3MgVF9udW10eXBlMSwg
aW50IE5fcmFuaywgY2xhc3MgVF9hcnJheTIsCiAgICBjbGFzcyBUX2FycmF5MywgY2xhc3MgVF9h
cnJheTQsIGNsYXNzIFRfYXJyYXk1LCBjbGFzcyBUX2FycmF5NiwKICAgIGNsYXNzIFRfYXJyYXk3
LCBjbGFzcyBUX2FycmF5OCwgY2xhc3MgVF9hcnJheTk+CmlubGluZSB2b2lkIGFwcGx5U3RlbmNp
bChjb25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYgQSwK
ICAgVF9hcnJheTImIEIsIFRfYXJyYXkzJiBDLCBUX2FycmF5NCYgRCwgVF9hcnJheTUmIEUsIFRf
YXJyYXk2JiBGLAogICBUX2FycmF5NyYgRywgVF9hcnJheTgmIEgsIFRfYXJyYXk5JiBJKQp7CiAg
ICBhcHBseVN0ZW5jaWxfaW1wKHN0ZW5jaWwsIEEsIEIsIEMsIEQsIEUsIEYsIEcsIEgsIEksCiAg
ICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9zdGVu
Y2lsLCBjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rLCBjbGFzcyBUX2FycmF5MiwKICAgIGNs
YXNzIFRfYXJyYXkzLCBjbGFzcyBUX2FycmF5NCwgY2xhc3MgVF9hcnJheTUsIGNsYXNzIFRfYXJy
YXk2LAogICAgY2xhc3MgVF9hcnJheTcsIGNsYXNzIFRfYXJyYXk4LCBjbGFzcyBUX2FycmF5OSwg
Y2xhc3MgVF9hcnJheTEwPgppbmxpbmUgdm9pZCBhcHBseVN0ZW5jaWwoY29uc3QgVF9zdGVuY2ls
JiBzdGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4mIEEsCiAgIFRfYXJyYXkyJiBCLCBU
X2FycmF5MyYgQywgVF9hcnJheTQmIEQsIFRfYXJyYXk1JiBFLCBUX2FycmF5NiYgRiwKICAgVF9h
cnJheTcmIEcsIFRfYXJyYXk4JiBILCBUX2FycmF5OSYgSSwgVF9hcnJheTEwJiBKKQp7CiAgICBh
cHBseVN0ZW5jaWxfaW1wKHN0ZW5jaWwsIEEsIEIsIEMsIEQsIEUsIEYsIEcsIEgsIEksIEosCiAg
ICAgICAgX2R1bW15QXJyYXkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRf
bnVtdHlwZTEsIGludCBOX3JhbmssIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMs
IGNsYXNzIFRfYXJyYXk0LCBjbGFzcyBUX2FycmF5NSwgY2xhc3MgVF9hcnJheTYsCiAgICBjbGFz
cyBUX2FycmF5NywgY2xhc3MgVF9hcnJheTgsIGNsYXNzIFRfYXJyYXk5LCBjbGFzcyBUX2FycmF5
MTAsCiAgICBjbGFzcyBUX2FycmF5MTE+CmlubGluZSB2b2lkIGFwcGx5U3RlbmNpbChjb25zdCBU
X3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYgQSwKICAgVF9hcnJh
eTImIEIsIFRfYXJyYXkzJiBDLCBUX2FycmF5NCYgRCwgVF9hcnJheTUmIEUsIFRfYXJyYXk2JiBG
LAogICBUX2FycmF5NyYgRywgVF9hcnJheTgmIEgsIFRfYXJyYXk5JiBJLCBUX2FycmF5MTAmIEos
IFRfYXJyYXkxMSYgSykKewogICAgYXBwbHlTdGVuY2lsX2ltcChzdGVuY2lsLCBBLCBCLCBDLCBE
LCBFLCBGLCBHLCBILCBJLCBKLCBLKTsKfQoKfSAKCgojIDMxNiAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L3N0ZW5jaWwuaCIgMgoKCgoKIyAyNDkzICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvaW5kaXJlY3QuaCIgMQoK
I2RlZmluZSBCWl9BUlJBWV9JTkRJUkVDVF9ICgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvY2FydGVzaWFuLmgiIDEKCiNkZWZpbmUgQlpfQVJSQVlf
Q0FSVEVTSUFOX0gKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgoKCgogCnRlbXBsYXRlPGNsYXNz
IFRfdHVwbGUsIGNsYXNzIFRfY29udGFpbmVyLCBpbnQgTl9jb250YWluZXJzPgpjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0SXRlcmF0b3I7CgpzdHJ1Y3QgX2NwX2VuZF90YWcgeyB9OwoKdGVtcGxhdGU8
Y2xhc3MgVF90dXBsZSwgY2xhc3MgVF9jb250YWluZXIsIGludCBOX2NvbnRhaW5lcnM+CmNsYXNz
IENhcnRlc2lhblByb2R1Y3QgewpwdWJsaWM6CiAgICB0eXBlZGVmIFRfdHVwbGUgdmFsdWVfdHlw
ZTsKICAgIHR5cGVkZWYgVF90dXBsZSYgcmVmZXJlbmNlOwogICAgdHlwZWRlZiBjb25zdCBUX3R1
cGxlJiBjb25zdF9yZWZlcmVuY2U7CiAgICB0eXBlZGVmIENhcnRlc2lhblByb2R1Y3RJdGVyYXRv
cjxUX3R1cGxlLFRfY29udGFpbmVyLE5fY29udGFpbmVycz4gaXRlcmF0b3I7CiAgICB0eXBlZGVm
IGludCBkaWZmZXJlbmNlX3R5cGU7CiAgICB0eXBlZGVmIGludCBzaXplX3R5cGU7CgogICAgaXRl
cmF0b3IgYmVnaW4oKQogICAgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMpOyB9CgogICAgaXRlcmF0
b3IgZW5kKCkKICAgIHsgcmV0dXJuIGl0ZXJhdG9yKF9jcF9lbmRfdGFnKCkpOyB9CgogICAgQ2Fy
dGVzaWFuUHJvZHVjdChjb25zdCBUX2NvbnRhaW5lciYgY29udGFpbmVyMCwgCiAgICAgICAgY29u
c3QgVF9jb250YWluZXImIGNvbnRhaW5lcjEpCiAgICB7IAogICAgICAgICA7CiAgICAgICAgY29u
dGFpbmVyc19bMF0gPSAmY29udGFpbmVyMDsKICAgICAgICBjb250YWluZXJzX1sxXSA9ICZjb250
YWluZXIxOwogICAgfQoKICAgIENhcnRlc2lhblByb2R1Y3QoY29uc3QgVF9jb250YWluZXImIGNv
bnRhaW5lcjAsIAogICAgICAgIGNvbnN0IFRfY29udGFpbmVyJiBjb250YWluZXIxLAogICAgICAg
IGNvbnN0IFRfY29udGFpbmVyJiBjb250YWluZXIyKQogICAgeyAKICAgICAgICAgOwogICAgICAg
IGNvbnRhaW5lcnNfWzBdID0gJmNvbnRhaW5lcjA7CiAgICAgICAgY29udGFpbmVyc19bMV0gPSAm
Y29udGFpbmVyMTsKICAgICAgICBjb250YWluZXJzX1syXSA9ICZjb250YWluZXIyOwogICAgfQoK
ICAgIGNvbnN0IFRfY29udGFpbmVyJiBvcGVyYXRvcltdKGludCBpKQogICAgeyByZXR1cm4gKihj
b250YWluZXJzX1tpXSk7IH0KCiAgICB2b2lkIGRlYnVnRHVtcCgpOwoKcHJvdGVjdGVkOgogICAg
Y29uc3QgVF9jb250YWluZXIqIGNvbnRhaW5lcnNfW05fY29udGFpbmVyc107IAp9OwoKdGVtcGxh
dGU8Y2xhc3MgVF90dXBsZSwgY2xhc3MgVF9jb250YWluZXIsIGludCBOX2NvbnRhaW5lcnM+CnZv
aWQgQ2FydGVzaWFuUHJvZHVjdDxUX3R1cGxlLFRfY29udGFpbmVyLE5fY29udGFpbmVycz46OmRl
YnVnRHVtcCgpCnsKICAgIGNvdXQgPDwgIkR1bXAgb2YgQ2FydGVzaWFuUHJvZHVjdDwuLiwuLiwi
IDw8IE5fY29udGFpbmVycyA8PCAiPiIgPDwgZW5kbDsKICAgIGZvciAoaW50IGk9MDsgaSA8IE5f
Y29udGFpbmVyczsgKytpKQogICAgewogICAgICAgIGNvdXQgPDwgIkNvbnRhaW5lciAiIDw8IChp
KzEpIDw8ICI6ICI7CiAgICAgICAgdHlwZW5hbWUgIFRfY29udGFpbmVyOjpjb25zdF9pdGVyYXRv
ciBpdGVyID0gY29udGFpbmVyc19baV0tPmJlZ2luKCksCiAgICAgICAgICAgIGVuZCA9IGNvbnRh
aW5lcnNfW2ldLT5lbmQoKTsKICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAg
ICAgICAgICAgY291dCA8PCAoKml0ZXIpIDw8ICdcdCc7IAogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUX3R1cGxlLCBjbGFzcyBUX2NvbnRhaW5lciwgaW50IE5fY29udGFpbmVycz4KY2xhc3MgQ2Fy
dGVzaWFuUHJvZHVjdEl0ZXJhdG9yIHsKcHVibGljOgogICAgdHlwZWRlZiB0eXBlbmFtZSAgVF9j
b250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGNpdGVyYXRvcjsKICAgIHR5cGVkZWYgQ2FydGVzaWFu
UHJvZHVjdEl0ZXJhdG9yPFRfdHVwbGUsVF9jb250YWluZXIsTl9jb250YWluZXJzPiBpdGVyYXRv
cjsKICAgIHR5cGVkZWYgQ2FydGVzaWFuUHJvZHVjdDxUX3R1cGxlLFRfY29udGFpbmVyLE5fY29u
dGFpbmVycz4gVF9jcDsKCiAgICBDYXJ0ZXNpYW5Qcm9kdWN0SXRlcmF0b3IoVF9jcCYgY29udGFp
bmVyKQogICAgewogICAgICAgIGZvciAoaW50IGk9MDsgaSA8IE5fY29udGFpbmVyczsgKytpKQog
ICAgICAgIHsKICAgICAgICAgICAgZmlyc3RpdGVyc19baV0gPSBjb250YWluZXJbaV0uYmVnaW4o
KTsKICAgICAgICAgICAgaXRlcnNfW2ldID0gZmlyc3RpdGVyc19baV07CiAgICAgICAgICAgIGVu
ZGl0ZXJzX1tpXSA9IGNvbnRhaW5lcltpXS5lbmQoKTsKICAgICAgICAgICAgdHVwbGVfW2ldID0g
Kml0ZXJzX1tpXTsKICAgICAgICB9CgogICAgICAgIGVuZGZsYWdfID0gZmFsc2UgOwogICAgfQoK
ICAgIHZvaWQgb3BlcmF0b3IrKygpOwoKICAgIENhcnRlc2lhblByb2R1Y3RJdGVyYXRvcihfY3Bf
ZW5kX3RhZykKICAgIHsKICAgICAgICBlbmRmbGFnXyA9IHRydWUgOwogICAgfQoKICAgIGJvb2wg
IG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIHgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IChlbmRmbGFnXyA9PSB4LmVuZGZsYWdfKTsKICAgIH0KCiAgICBib29sICBvcGVyYXRvciE9KGNv
bnN0IGl0ZXJhdG9yJiB4KSBjb25zdAogICAgeyAgIAogICAgICAgIHJldHVybiBlbmRmbGFnXyAh
PSB4LmVuZGZsYWdfOwogICAgfQoKICAgIGNvbnN0IFRfdHVwbGUmIG9wZXJhdG9yKigpIGNvbnN0
CiAgICB7IHJldHVybiB0dXBsZV87IH0KCnByb3RlY3RlZDoKICAgIGNpdGVyYXRvciBpdGVyc19b
Tl9jb250YWluZXJzXTsKICAgIGNpdGVyYXRvciBmaXJzdGl0ZXJzX1tOX2NvbnRhaW5lcnNdOwog
ICAgY2l0ZXJhdG9yIGVuZGl0ZXJzX1tOX2NvbnRhaW5lcnNdOwogICAgVF90dXBsZSB0dXBsZV87
CiAgICBib29sICBlbmRmbGFnXzsKfTsKCnRlbXBsYXRlPGNsYXNzIFRfdHVwbGUsIGNsYXNzIFRf
Y29udGFpbmVyLCBpbnQgTl9jb250YWluZXJzPgp2b2lkIENhcnRlc2lhblByb2R1Y3RJdGVyYXRv
cjxUX3R1cGxlLCBUX2NvbnRhaW5lciwgCiAgICBOX2NvbnRhaW5lcnM+OjpvcGVyYXRvcisrKCkK
ewogICAgIAogICAgIAoKICAgICAKICAgIGNvbnN0IGludCBObWludXMxID0gTl9jb250YWluZXJz
IC0gMTsKCiAgICBpbnQgaSA9IE5taW51czE7CgogICAgZm9yICg7IGkgPj0gMDsgLS1pKQogICAg
ewogICAgICAgICsraXRlcnNfW2ldOwogICAgICAgIGlmIChpdGVyc19baV0gIT0gZW5kaXRlcnNf
W2ldKQogICAgICAgICAgICBicmVhazsKICAgIH0KCiAgICBpZiAoaSA9PSAtMSkKICAgIHsKICAg
ICAgICBlbmRmbGFnXyA9IHRydWUgOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB0dXBsZV9b
aV0gPSAqaXRlcnNfW2ldOwoKICAgIGZvciAoKytpOyBpIDwgTl9jb250YWluZXJzOyArK2kpICAK
ICAgIHsKICAgICAgICBpdGVyc19baV0gPSBmaXJzdGl0ZXJzX1tpXTsKICAgICAgICB0dXBsZV9b
aV0gPSAqaXRlcnNfW2ldOwogICAgfQp9Cgp9IAoKCgojIDUgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9pbmRpcmVjdC5oIiAyCgoKbmFtZXNwYWNlICBibGl0
eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFRfYXJyYXksIGNsYXNzIFRfaW5kZXg+CmNsYXNzIEluZGly
ZWN0QXJyYXkgewoKcHVibGljOgogICAgSW5kaXJlY3RBcnJheShUX2FycmF5JiBhcnJheSwgVF9p
bmRleCYgaW5kZXgpCiAgICAgICAgOiBhcnJheV8oYXJyYXkpLCBpbmRleF8oaW5kZXgpCiAgICB7
IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHI+CiAgICB2b2lkIG9wZXJhdG9yPShUX2V4cHIg
ZXhwcik7Cgpwcm90ZWN0ZWQ6CiAgICBUX2FycmF5JiBhcnJheV87CiAgICBUX2luZGV4JiBpbmRl
eF87Cn07CgogCnRlbXBsYXRlPGNsYXNzIFRfYXJyYXksIGNsYXNzIFRfYXJyYXlpdGVyLCBjbGFz
cyBUX3N1YmRvbWFpbiwgY2xhc3MgVF9leHByPgppbmxpbmUgdm9pZCBhcHBseU92ZXJTdWJkb21h
aW4oY29uc3QgVF9hcnJheSYgYXJyYXksIFRfYXJyYXlpdGVyJiBhcnJheUl0ZXIsCiAgICBUX3N1
YmRvbWFpbiBzdWJkb21haW4sIFRfZXhwciBleHByKTsKdGVtcGxhdGU8Y2xhc3MgVF9hcnJheSwg
Y2xhc3MgVF9hcnJheWl0ZXIsIGludCBOX3JhbmssIGNsYXNzIFRfZXhwcj4KaW5saW5lIHZvaWQg
YXBwbHlPdmVyU3ViZG9tYWluKGNvbnN0IFRfYXJyYXkmIGFycmF5LCBUX2FycmF5aXRlciYgYXJy
YXlJdGVyLAogICAgUmVjdERvbWFpbjxOX3Jhbms+IHN1YmRvbWFpbiwKICAgIFRfZXhwciBleHBy
KTsKCnRlbXBsYXRlPGNsYXNzIFRfYXJyYXksIGNsYXNzIFRfaW5kZXg+IHRlbXBsYXRlPGNsYXNz
IFRfcmhzPgp2b2lkIEluZGlyZWN0QXJyYXk8VF9hcnJheSwgVF9pbmRleD46Om9wZXJhdG9yPShU
X3JocyByaHMpCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIGFzRXhwcjxUX3Jocz46OlRfZXhwciBU
X2V4cHI7CiAgICBUX2V4cHIgZXhwcihyaHMpOwoKICAgIHR5cGVuYW1lICBUX2FycmF5OjpUX2l0
ZXJhdG9yIGFycmF5SXRlcihhcnJheV8pOwoKICAgIHR5cGVuYW1lICBUX2luZGV4OjppdGVyYXRv
ciBpdGVyID0gaW5kZXhfLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gaW5k
ZXhfLmVuZCgpOwoKICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgewogICAgICAg
IHR5cGVuYW1lICBUX2luZGV4Ojp2YWx1ZV90eXBlIHN1YmRvbWFpbiA9ICppdGVyOwogICAgICAg
IGFwcGx5T3ZlclN1YmRvbWFpbihhcnJheV8sIGFycmF5SXRlciwgc3ViZG9tYWluLCBleHByKTsK
ICAgIH0KfQoKdGVtcGxhdGU8Y2xhc3MgVF9hcnJheSwgY2xhc3MgVF9hcnJheWl0ZXIsIGNsYXNz
IFRfc3ViZG9tYWluLCBjbGFzcyBUX2V4cHI+CmlubGluZSB2b2lkIGFwcGx5T3ZlclN1YmRvbWFp
bihjb25zdCBUX2FycmF5JiBhcnJheSwgVF9hcnJheWl0ZXImIGFycmF5SXRlciwgCiAgICBUX3N1
YmRvbWFpbiBzdWJkb21haW4sIFRfZXhwciBleHByKQp7CiAgICAgCgoKCgoKCiAgICBhcnJheUl0
ZXIubW92ZVRvKHN1YmRvbWFpbik7CiAgICBleHByLm1vdmVUbyhzdWJkb21haW4pOwoKICAgICpj
b25zdF9jYXN0PCB0eXBlbmFtZSAgVF9hcnJheWl0ZXI6OlRfbnVtdHlwZSo+KGFycmF5SXRlci5k
YXRhKCkpID0gKmV4cHI7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgVF9hcnJheSwgY2xhc3MgVF9hcnJh
eWl0ZXIsIGludCBOX3JhbmssIGNsYXNzIFRfZXhwcj4KaW5saW5lIHZvaWQgYXBwbHlPdmVyU3Vi
ZG9tYWluKGNvbnN0IFRfYXJyYXkmIGFycmF5LCBUX2FycmF5aXRlciYgYXJyYXlJdGVyLCAKICAg
IFJlY3REb21haW48Tl9yYW5rPiBzdWJkb21haW4sCiAgICBUX2V4cHIgZXhwcikKewogICAgdHlw
ZWRlZiB0eXBlbmFtZSAgVF9hcnJheTo6VF9udW10eXBlIFRfbnVtdHlwZTsKCiAgICAgCiAgICAg
CiAgICAgCiAgICAgCgogICAgc3RhdGljIGludCBzdHJpcERpbSA9IDA7CgogICAgaWYgKHN1YmRv
bWFpbi5sYm91bmQoc3RyaXBEaW0pID09IHN1YmRvbWFpbi51Ym91bmQoc3RyaXBEaW0pKQogICAg
ewogICAgICAgICAKICAgICAgICBmb3IgKHN0cmlwRGltPTA7IHN0cmlwRGltIDwgTl9yYW5rOyAr
K3N0cmlwRGltKQogICAgICAgICAgaWYgKHN1YmRvbWFpbi5sYm91bmQoc3RyaXBEaW0pICE9IHN1
YmRvbWFpbi51Ym91bmQoc3RyaXBEaW0pKQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgIAog
ICAgICAgIGlmIChzdHJpcERpbSA9PSBOX3JhbmspCiAgICAgICAgICAgIHN0cmlwRGltID0gMDsK
ICAgIH0KCiMgMTA1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJy
YXkvaW5kaXJlY3QuaCIKCgogICAgIAogICAgIAoKCgoKCgoKICAgICAKCgoKCgoKCiAgICAgCiAg
ICBhcnJheUl0ZXIubW92ZVRvKHN1YmRvbWFpbi5sYm91bmQoKSk7CiAgICBleHByLm1vdmVUbyhz
dWJkb21haW4ubGJvdW5kKCkpOwoKICAgICAKCgoKICAgIGJvb2wgIHVzZVVuaXRTdHJpZGUgPSBh
cnJheUl0ZXIuaXNVbml0U3RyaWRlKHN0cmlwRGltKQogICAgICAgICAgJiYgZXhwci5pc1VuaXRT
dHJpZGUoc3RyaXBEaW0pOwoKICAgIGludCBsYm91bmQgPSBzdWJkb21haW4ubGJvdW5kKHN0cmlw
RGltKTsgCiAgICBpbnQgdWJvdW5kID0gc3ViZG9tYWluLnVib3VuZChzdHJpcERpbSk7CgogICAg
aWYgKHVzZVVuaXRTdHJpZGUpCiAgICB7CiAgICAgICAgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18g
IGRhdGEgPSBjb25zdF9jYXN0PFRfbnVtdHlwZSo+KGFycmF5SXRlci5kYXRhKCkpOwoKICAgICAg
ICBpbnQgbGVuZ3RoID0gdWJvdW5kIC0gbGJvdW5kICsgMTsKICAgICAgICBmb3IgKGludCBpPTA7
IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgICAgZGF0YVtpXSA9IGV4cHIuZmFzdFJlYWQoaSk7
CiAgICB9CiAgICBlbHNlIHsKCgogICAgYXJyYXlJdGVyLmxvYWRTdHJpZGUoc3RyaXBEaW0pOwog
ICAgZXhwci5sb2FkU3RyaWRlKHN0cmlwRGltKTsKCiAgICBmb3IgKGludCBpPWxib3VuZDsgaSA8
PSB1Ym91bmQ7ICsraSkKICAgIHsKICAgICAgICAqY29uc3RfY2FzdDwgdHlwZW5hbWUgIFRfYXJy
YXlpdGVyOjpUX251bXR5cGUqPihhcnJheUl0ZXIuZGF0YSgpKSAKICAgICAgICAgICAgPSAqZXhw
cjsKICAgICAgICBleHByLmFkdmFuY2UoKTsKICAgICAgICBhcnJheUl0ZXIuYWR2YW5jZSgpOwog
ICAgfQoKCiAgICB9Cgp9CgogCnRlbXBsYXRlPGNsYXNzIFRfY29udGFpbmVyPgpDYXJ0ZXNpYW5Q
cm9kdWN0PFRpbnlWZWN0b3I8aW50LDI+LFRfY29udGFpbmVyLDI+CmluZGV4U2V0KGNvbnN0IFRf
Y29udGFpbmVyJiBjb250YWluZXIwLCBjb25zdCBUX2NvbnRhaW5lciYgY29udGFpbmVyMSkKewog
ICAgcmV0dXJuIENhcnRlc2lhblByb2R1Y3Q8VGlueVZlY3RvcjxpbnQsMj4sVF9jb250YWluZXIs
Mj4oCiAgICAgICAgY29uc3RfY2FzdDxUX2NvbnRhaW5lciY+KGNvbnRhaW5lcjApLCAKICAgICAg
ICBjb25zdF9jYXN0PFRfY29udGFpbmVyJj4oY29udGFpbmVyMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUX2NvbnRhaW5lcj4KQ2FydGVzaWFuUHJvZHVjdDxUaW55VmVjdG9yPGludCwzPixUX2NvbnRh
aW5lciwzPgppbmRleFNldChjb25zdCBUX2NvbnRhaW5lciYgY29udGFpbmVyMCwgY29uc3QgVF9j
b250YWluZXImIGNvbnRhaW5lcjEsCiAgICBjb25zdCBUX2NvbnRhaW5lciYgY29udGFpbmVyMikK
ewogICAgcmV0dXJuIENhcnRlc2lhblByb2R1Y3Q8VGlueVZlY3RvcjxpbnQsMz4sVF9jb250YWlu
ZXIsMz4oCiAgICAgICAgY29uc3RfY2FzdDxUX2NvbnRhaW5lciY+KGNvbnRhaW5lcjApLCAKICAg
ICAgICBjb25zdF9jYXN0PFRfY29udGFpbmVyJj4oY29udGFpbmVyMSksIAogICAgICAgIGNvbnN0
X2Nhc3Q8VF9jb250YWluZXImPihjb250YWluZXIyKSk7Cn0KCiAKCiAKIAogCiAKIAogCiAKIAoK
dGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz1pbnQsIGNsYXNzIFQ0PWludD4K
c3RydWN0IGNwX2ZpbmRDb250YWluZXJUeXBlIHsKICAgIHR5cGVkZWYgVDEgVF9jb250YWluZXI7
Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PgpzdHJ1Y3QgY3BfZmlu
ZENvbnRhaW5lclR5cGU8aW50LFQyLFQzLFQ0PiB7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBjcF9m
aW5kQ29udGFpbmVyVHlwZTxUMixUMyxUND46OlRfY29udGFpbmVyIFRfY29udGFpbmVyOwp9OwoK
CiAKIAogCiAKIAogCiAKIAoKdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVDI+CnN0cnVjdCBjcF90
cmFpdHMgewogICAgdHlwZWRlZiBUIFRfY29udGFpbmVyOwoKICAgIHN0YXRpYyBjb25zdCBUX2Nv
bnRhaW5lciYgbWFrZShjb25zdCBUJiB4KQogICAgeyByZXR1cm4geDsgfQp9OwoKdGVtcGxhdGU8
Y2xhc3MgVDI+CnN0cnVjdCBjcF90cmFpdHM8aW50LFQyPiB7CiAgICB0eXBlZGVmIFQyIFRfY29u
dGFpbmVyOwoKICAgIHN0YXRpYyBUMiBtYWtlKGludCB4KQogICAgeyAKICAgICAgICBUMiBzaW5n
bGV0b247CiAgICAgICAgc2luZ2xldG9uLnB1c2hfYmFjayh4KTsKICAgICAgICByZXR1cm4gc2lu
Z2xldG9uOwogICAgfQp9OwoKIAogCiAKCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4KQ2Fy
dGVzaWFuUHJvZHVjdDxUaW55VmVjdG9yPGludCwyPiwgdHlwZW5hbWUgIAogICAgY3BfZmluZENv
bnRhaW5lclR5cGU8VDEsVDI+OjpUX2NvbnRhaW5lciwyPiAKaW5kZXhTZXQoY29uc3QgVDEmIGMx
LCBjb25zdCBUMiYgYzIpCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIGNwX2ZpbmRDb250YWluZXJU
eXBlPFQxLFQyPjo6VF9jb250YWluZXIKICAgICAgICBUX2NvbnRhaW5lcjsKCiAgICByZXR1cm4g
Q2FydGVzaWFuUHJvZHVjdDxUaW55VmVjdG9yPGludCwyPiwgVF9jb250YWluZXIsIDI+KAogICAg
ICAgICAgY3BfdHJhaXRzPFQxLFRfY29udGFpbmVyPjo6bWFrZShjMSksCiAgICAgICAgICBjcF90
cmFpdHM8VDIsVF9jb250YWluZXI+OjptYWtlKGMyKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBUMiwgY2xhc3MgVDM+CkNhcnRlc2lhblByb2R1Y3Q8VGlueVZlY3RvcjxpbnQsMz4sIHR5
cGVuYW1lIAogICAgY3BfZmluZENvbnRhaW5lclR5cGU8VDEsVDIsVDM+OjpUX2NvbnRhaW5lciwg
Mz4KaW5kZXhTZXQoY29uc3QgVDEmIGMxLCBjb25zdCBUMiYgYzIsIGNvbnN0IFQzJiBjMykKewog
ICAgdHlwZWRlZiB0eXBlbmFtZSAgY3BfZmluZENvbnRhaW5lclR5cGU8VDEsVDIsVDM+OjpUX2Nv
bnRhaW5lcgogICAgICAgIFRfY29udGFpbmVyOwoKICAgIHJldHVybiBDYXJ0ZXNpYW5Qcm9kdWN0
PFRpbnlWZWN0b3I8aW50LDM+LCBUX2NvbnRhaW5lciwgMz4oCiAgICAgICAgICBjcF90cmFpdHM8
VDEsVF9jb250YWluZXI+OjptYWtlKGMxKSwKICAgICAgICAgIGNwX3RyYWl0czxUMixUX2NvbnRh
aW5lcj46Om1ha2UoYzIpLAogICAgICAgICAgY3BfdHJhaXRzPFQzLFRfY29udGFpbmVyPjo6bWFr
ZShjMykpOwp9Cgp9IAoKCiMgMjQ5NCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L2FycmF5LmgiIDIKCgoKCiMgNSAiSW50ZXJwb2xhdGlvbi5oIiAyCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2luY2x1ZGUvc3N0cmVhbSIgMQogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCiNkZWZpbmUgX19TU1RSRUFNCgoKCgoKbmFtZXNwYWNlIHN0ZAp7CiAg
Y2xhc3Mgc3RyaW5nc3RyZWFtYnVmIDogcHVibGljIHN0cmVhbWJ1ZgogIHsKICAgIHN0ZDo6c3Ry
aW5nCQlidWY7CiAgICBpb3M6Om9wZW5fbW9kZQltb2RlOwogIHByb3RlY3RlZDoKICAgIGlubGlu
ZSB2aXJ0dWFsIGludCBzeW5jKCk7CiAgICBpbmxpbmUgdmlydHVhbCBpbnQgb3ZlcmZsb3coaW50
ID0gKC0xKSApOwogICAgaW5saW5lIHZpcnR1YWwgaW50IHVuZGVyZmxvdygpOwogIHB1YmxpYzoK
ICAgIHN0cmluZ3N0cmVhbWJ1ZihpbnQgbT1pb3M6OmlufGlvczo6b3V0KSA6CiAgICAgIGJ1Zigp
LCBtb2RlKHN0YXRpY19jYXN0PGlvczo6b3Blbl9tb2RlPihtKSkKICAgIHsgfQoJCiAgICBzdHJp
bmdzdHJlYW1idWYoY29uc3Qgc3RkOjpzdHJpbmcgJnMsIGludCBtPWlvczo6aW58aW9zOjpvdXQp
IDoKICAgICAgYnVmKHMpLCBtb2RlKHN0YXRpY19jYXN0PGlvczo6b3Blbl9tb2RlPihtKSkKICAg
IHsgfQoJCiAgICBfX3NzaXplX3QgICBwY291bnQoKSB7IHJldHVybiBidWYuc2l6ZSgpOyB9CiAg
ICBzdGQ6OnN0cmluZyBzdHIoKSB7IHN5bmMoKTsgcmV0dXJuIGJ1ZjsgfTsKICAgIHZvaWQgc3Ry
KGNvbnN0IHN0ZDo6c3RyaW5nJiBzKQogICAgewogICAgICBwYnVtcChwYmFzZSgpIC0gcHB0cigp
KTsKICAgICAgZ2J1bXAoZWdwdHIoKSAtIGdwdHIoKSk7CiAgICAgIGJ1ZiA9IHM7CiAgICB9CiAg
fTsKCiAgY2xhc3Mgc3RyaW5nc3RyZWFtYmFzZSA6IHZpcnR1YWwgcHVibGljIGlvcyB7CiAgcHJv
dGVjdGVkOgogICAgc3RyaW5nc3RyZWFtYnVmIF9fbXlfc2I7CiAgcHVibGljOgogICAgc3RkOjpz
dHJpbmcgc3RyKCkgY29uc3QKICAgIHsgcmV0dXJuIGR5bmFtaWNfY2FzdDxzdHJpbmdzdHJlYW1i
dWYqPihfc3RyYnVmKS0+c3RyKCk7IH0KICAgIHZvaWQgc3RyKGNvbnN0IHN0ZDo6c3RyaW5nJiBz
KQogICAgeyByZXR1cm4gZHluYW1pY19jYXN0PHN0cmluZ3N0cmVhbWJ1Zio+KF9zdHJidWYpLT5z
dHIocyk7IH0KCQogICAgc3RyaW5nc3RyZWFtYnVmKiByZGJ1ZigpIHsgcmV0dXJuICZfX215X3Ni
OyB9CiAgcHJvdGVjdGVkOgogICAgc3RyaW5nc3RyZWFtYmFzZShpbnQgbSkgOgogICAgICBfX215
X3NiKG0pCiAgICB7IGluaXQgKCZfX215X3NiKTsgfQoJCiAgICBzdHJpbmdzdHJlYW1iYXNlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzLCBpbnQgbSkgOgogICAgICBfX215X3NiKHMsIG0pCiAgICB7IGlu
aXQgKCZfX215X3NiKTsgfQogIH07CiAgICAKICBjbGFzcyBpc3RyaW5nc3RyZWFtIDogcHVibGlj
IHN0cmluZ3N0cmVhbWJhc2UsIHB1YmxpYyBpc3RyZWFtIHsKICBwdWJsaWM6CiAgICBpc3RyaW5n
c3RyZWFtKHN0ZDo6c3RyaW5nJiBzKSA6CiAgICAgIHN0cmluZ3N0cmVhbWJhc2UocywgaW9zOjpp
bikKICAgIHsgfQogICAgdm9pZCBzdHIoY29uc3Qgc3RkOjpzdHJpbmcmIHMpCiAgICB7IHJldHVy
biBkeW5hbWljX2Nhc3Q8c3RyaW5nc3RyZWFtYnVmKj4oX3N0cmJ1ZiktPnN0cihzKTsgfQkKICB9
OwogICAgCiAgY2xhc3Mgb3N0cmluZ3N0cmVhbSA6IHB1YmxpYyBzdHJpbmdzdHJlYW1iYXNlLCBw
dWJsaWMgb3N0cmVhbSB7CiAgcHVibGljOgogICAgb3N0cmluZ3N0cmVhbShpbnQgbT1pb3M6Om91
dCkgOgogICAgICBzdHJpbmdzdHJlYW1iYXNlKG0pCiAgICB7IH0KCQogICAgb3N0cmluZ3N0cmVh
bShjb25zdCBzdGQ6OnN0cmluZyYgcywgaW50IG09aW9zOjpvdXQpIDoKICAgICAgc3RyaW5nc3Ry
ZWFtYmFzZShzLCBtKQogICAgeyB9CgogICAgc3RkOjpzdHJpbmcgc3RyKCkgY29uc3QKICAgIHsg
cmV0dXJuIGR5bmFtaWNfY2FzdDxzdHJpbmdzdHJlYW1idWYqPihfc3RyYnVmKS0+c3RyKCk7IH0K
ICB9OwogICAgCiAgY2xhc3Mgc3RyaW5nc3RyZWFtIDogcHVibGljIHN0cmluZ3N0cmVhbWJhc2Us
IHB1YmxpYyBpb3N0cmVhbSB7CiAgcHVibGljOgogICAgc3RyaW5nc3RyZWFtKGludCBtPWlvczo6
aW58aW9zOjpvdXQpIDoKICAgICAgc3RyaW5nc3RyZWFtYmFzZShtKQogICAgeyB9CiAgICBzdHJp
bmdzdHJlYW0oY29uc3Qgc3RkOjpzdHJpbmcgJnMsIGludCBtPWlvczo6aW58aW9zOjpvdXQpIDoK
ICAgICAgc3RyaW5nc3RyZWFtYmFzZShzLCBtKQogICAgeyB9CgkKICAgIHN0ZDo6c3RyaW5nIHN0
cigpIGNvbnN0CiAgICB7IHJldHVybiBkeW5hbWljX2Nhc3Q8c3RyaW5nc3RyZWFtYnVmKj4oX3N0
cmJ1ZiktPnN0cigpOyB9CiAgICB2b2lkIHN0cihjb25zdCBzdGQ6OnN0cmluZyYgcykKICAgIHsg
cmV0dXJuIGR5bmFtaWNfY2FzdDxzdHJpbmdzdHJlYW1idWYqPihfc3RyYnVmKS0+c3RyKHMpOyB9
CgkKICAgIF9fc3NpemVfdCAgIHBjb3VudCgpCiAgICB7IHJldHVybiBkeW5hbWljX2Nhc3Q8c3Ry
aW5nc3RyZWFtYnVmKj4oX3N0cmJ1ZiktPnBjb3VudCgpOyB9CiAgfTsKfQoKaW5saW5lIGludCBz
dGQ6OnN0cmluZ3N0cmVhbWJ1Zjo6c3luYygpCnsKICBpZigobW9kZSAmIGlvczo6b3V0KSA9PSAw
KQogICAgcmV0dXJuICgtMSkgOwogIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgb2xkU2l6ZSA9IGJ1
Zi5zaXplKCk7CiAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSAgbiA9IHBwdHIoKSAtIHBiYXNlKCk7
CiAgaWYobikKICAgIHsKICAgICAgYnVmLmFwcGVuZChwYmFzZSgpLCBwcHRyKCkpOwogICAgICBp
ZihidWYuc2l6ZSgpIC0gb2xkU2l6ZSAhPSBuKQoJcmV0dXJuICgtMSkgOwogICAgfQogIHJldHVy
biAwOwp9CgppbmxpbmUgaW50IHN0ZDo6c3RyaW5nc3RyZWFtYnVmOjpvdmVyZmxvdyhpbnQgY2gp
CnsKICBpZigobW9kZSAmIGlvczo6b3V0KSA9PSAwKQogICAgcmV0dXJuICgtMSkgOwogIHN0cmVh
bXNpemUgbiA9IHBwdHIoKSAtIHBiYXNlKCk7CgogIGlmKG4gJiYgc3luYygpKQogICAgcmV0dXJu
ICgtMSkgOwogIGlmKGNoICE9ICgtMSkgKQogICAgewogICAgICBjaGFyIGNidWZbMV07CiAgICAg
IHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgb2xkU2l6ZSA9IGJ1Zi5zaXplKCk7CgkKICAgICAgY2J1
ZlswXSA9IGNoOwogICAgICBidWYuYXBwZW5kKGNidWYsIDEpOwogICAgICBpZihidWYuc2l6ZSgp
IC0gb2xkU2l6ZSAhPSAxKQoJcmV0dXJuICgtMSkgOwogICAgfQogIHBidW1wKC1uKTsKICByZXR1
cm4gMDsKfQoKaW5saW5lIGludCBzdGQ6OnN0cmluZ3N0cmVhbWJ1Zjo6dW5kZXJmbG93KCkKewog
IGlmKChtb2RlICYgaW9zOjppbikgPT0gMCkKICAgIHJldHVybiAoLTEpIDsKICBzdGQ6OnN0cmlu
Zzo6c2l6ZV90eXBlIG4gPSBlZ3B0cigpIC0gZWJhY2soKTsKICBzdGQ6OnN0cmluZzo6c2l6ZV90
eXBlIHM7CiAgICAKICBpZihidWYuc2l6ZSgpIDwgbikKICAgIHMgPSBidWYuY29weShlZ3B0cigp
IC0gYnVmLnNpemUoKSwgYnVmLnNpemUoKSk7CiAgZWxzZQogICAgcyA9IGJ1Zi5jb3B5KGViYWNr
KCksIG4pOwogIGdidW1wKGVncHRyKCkgLSBncHRyKCkgLSBzKTsKICByZXR1cm4gMDsKfQoKCiMg
NiAiSW50ZXJwb2xhdGlvbi5oIiAyCgojIDEgIi4uL2hlYWRlcnMvZGV4Y2VwdGlvbi5oIiAxCgoj
ZGVmaW5lIGRleGNlcHRpb25fbgoKCmNsYXNzIGRleGNlcHRpb24gewpwdWJsaWM6CiAgZGV4Y2Vw
dGlvbigpIHsgfQogIHZpcnR1YWwgfmRleGNlcHRpb24oKSB7IH0KICB2aXJ0dWFsIHN0ZDo6c3Ry
aW5nIG5hbWUoKSBjb25zdCA9IDA7CiAgdmlydHVhbCBzdGQ6OnN0cmluZyBzdW1tYXJ5KCkgY29u
c3QgeyByZXR1cm4gbmFtZSgpOyB9CiAgdmlydHVhbCBzdGQ6OnN0cmluZyBkZXRhaWwoKSBjb25z
dCB7IHJldHVybiBzdW1tYXJ5KCk7IH0KfTsKCgojIDcgIkludGVycG9sYXRpb24uaCIgMgoKIyAx
ICIuLi9leHByVGVtcC9leHByVGVtcC5oIiAxCgojZGVmaW5lIEVYUFJURU1QSAoKCiMgMSAiLi4v
ZXhwclRlbXAvbXlhcHBsaWNzLmgiIDEKbmFtZXNwYWNlIGJsaXR6IHsKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgpjbGFzcyBfYnpfdW5wbHVzIDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2
ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBlMTsK
ICB0eXBlZGVmIFRfbnVtdHlwZTEgVF9wcm9tb3RlOwogIHR5cGVkZWYgVF9wcm9tb3RlIFRfbnVt
dHlwZTsKCiAgc3RhdGljIGlubGluZSBQX251bXR5cGUgYXBwbHkoUF9udW10eXBlIHgpIAogIHsg
cmV0dXJuICt4OyB9Cn07Cn0KIyA1ICIuLi9leHByVGVtcC9leHByVGVtcC5oIiAyCgoKbmFtZXNw
YWNlIGJsaXR6IHsKCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjIsIGNsYXNz
IFBfb3A+CmNsYXNzIF9iel9CaW5FeHByT3Agewpwcml2YXRlOgogIFBfZXhwcjEgZXhwcjE7CiAg
UF9leHByMiBleHByMjsKCnB1YmxpYzoKICB0eXBlZGVmIFBfZXhwcjEgVF9leHByMTsKICB0eXBl
ZGVmIFBfZXhwcjIgVF9leHByMjsKICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5
cGUgVF9udW10eXBlMTsKICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5cGUgVF9u
dW10eXBlMjsKICB0eXBlZGVmIHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwg
IFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBUX251bXR5cGU7CiAgdHlwZWRlZiBQX29wICAgIFRf
b3A7CiAgIAogIAogIF9iel9CaW5FeHByT3AoY29uc3QgVF9leHByMSYgYSwgY29uc3QgVF9leHBy
MiYgYikgCiAgICA6IGV4cHIxKGEpLCBleHByMihiKSB7IH0KCiAgVF9udW10eXBlIG9wZXJhdG9y
KCkoVF9udW10eXBlIHgpIGNvbnN0IHsKICAgIHJldHVybiBUX29wOjphcHBseShleHByMSh4KSwg
ZXhwcjIoeCkpOwogIH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfZXhwciwgY2xhc3MgUF91bmFyeU9w
PgpjbGFzcyBfYnpfVW5hcnlFeHByT3Agewpwcml2YXRlOgogIFBfZXhwciBleHByOwoKcHVibGlj
OgogIHR5cGVkZWYgUF9leHByIFRfZXhwcjsKICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4cHI6OlRf
bnVtdHlwZSBUX251bXR5cGVfaW47CiAgdHlwZWRlZiBQX3VuYXJ5T3AgICAgVF91bmFyeU9wOwog
IHR5cGVkZWYgdHlwZW5hbWUgIFRfdW5hcnlPcDo6VF9udW10eXBlIFRfbnVtdHlwZTsKICAKICBf
YnpfVW5hcnlFeHByT3AoY29uc3QgVF9leHByJiBhKQogICAgOiBleHByKGEpIHsgfQoKICBUX251
bXR5cGUgb3BlcmF0b3IoKShUX251bXR5cGVfaW4geCkgY29uc3QgewogICAgcmV0dXJuIFRfdW5h
cnlPcDo6YXBwbHkoZXhwcih4KSk7CiAgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpj
bGFzcyBfYnpfRXhwcjAgewpwdWJsaWM6CiAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBlOwoK
ICBfYnpfRXhwcjAoKSB7IH0KICAKICBUX251bXR5cGUgb3BlcmF0b3IoKShUX251bXR5cGUpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KICBfYnpfRXhwcjA8VF9udW10eXBlPiBkZXJpdmF0aXZlKCkgeyBy
ZXR1cm4gX2J6X0V4cHIwPFRfbnVtdHlwZT4oKTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlPgpjbGFzcyBfYnpfRXhwcjEgewpwdWJsaWM6CiAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10
eXBlOwoKICBfYnpfRXhwcjEoKSB7IH0KICAKICBUX251bXR5cGUgb3BlcmF0b3IoKShUX251bXR5
cGUpIGNvbnN0IHsgcmV0dXJuIDE7IH0KICBfYnpfRXhwcjA8VF9udW10eXBlPiBkZXJpdmF0aXZl
KCkgeyByZXR1cm4gX2J6X0V4cHIwPFRfbnVtdHlwZT4oKTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgpjbGFzcyBfYnpfRXhwckNvbnN0YW50IHsKcHJpdmF0ZToKICBQX251bXR5cGUg
dmFsdWU7CgpwdWJsaWM6CiAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBlOwoKICBfYnpfRXhw
ckNvbnN0YW50KFBfbnVtdHlwZSBfdmFsdWUpCiAgICA6IHZhbHVlKCBfdmFsdWUgICkgeyB9CiAg
CiAgVF9udW10eXBlIG9wZXJhdG9yKCkoVF9udW10eXBlKSBjb25zdCB7IHJldHVybiB2YWx1ZTsg
fQogIF9iel9FeHByMDxUX251bXR5cGU+IGRlcml2YXRpdmUoKSB7IHJldHVybiBfYnpfRXhwcjA8
VF9udW10eXBlPigpOyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIsIGNsYXNzIFBfdW5hcnlP
cD4KY2xhc3MgX2J6X1VuYXJ5Q2xhc3NFeHByT3AyIHsKcHJpdmF0ZToKICBQX2V4cHIgZXhwcjsK
ICBjb25zdCBQX3VuYXJ5T3AmIG9wRnVuY3RvcjsKCnB1YmxpYzoKICB0eXBlZGVmIFBfZXhwciBU
X2V4cHI7CiAgdHlwZWRlZiB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGUgVF9udW10eXBlX2lu
OwogIHR5cGVkZWYgUF91bmFyeU9wICAgIFRfdW5hcnlPcDsKICB0eXBlZGVmIHR5cGVuYW1lICBU
X3VuYXJ5T3A6OlRfbnVtdHlwZSBUX251bXR5cGU7CiAgCiAgX2J6X1VuYXJ5Q2xhc3NFeHByT3Ay
KGNvbnN0IFRfdW5hcnlPcCYgb3AsIGNvbnN0IFRfZXhwciYgYSkKICAgIDogb3BGdW5jdG9yKG9w
KSwgZXhwcihhKSB7IH0KCiAgVF9udW10eXBlIG9wZXJhdG9yKCkoVF9udW10eXBlX2luIHgpIGNv
bnN0IHsKICAgIHJldHVybiBvcEZ1bmN0b3IoZXhwcih4KSk7CiAgfQp9OwoKdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgRXhwcj4KY2xhc3MgRnVuY3RvckV4cHIgOiBwdWJsaWMg
RVRCYXNlPCBGdW5jdG9yRXhwcjwgRnVuY3RvciwgRXhwciA+ID4gewpwdWJsaWM6CiAgdHlwZWRl
ZiB0eXBlbmFtZSBGdW5jdG9yOjpUX251bXR5cGUgVF9udW10eXBlOwogIHR5cGVkZWYgRnVuY3Rv
ckV4cHI8IEZ1bmN0b3IsIEV4cHI+IFRfZXhwcjsKICB0eXBlZGVmIEZ1bmN0b3IgVF9jdG9yQXJn
MTsKICB0eXBlZGVmIEV4cHIgVF9jdG9yQXJnMjsKCiAgZW51bSB7IG51bUFycmF5T3BlcmFuZHMg
PSAoaW50KSBFeHByOjpudW1BcnJheU9wZXJhbmRzICAsCgkgbnVtSW5kZXhQbGFjZWhvbGRlcnMg
PSAoaW50KSBFeHByOjpudW1JbmRleFBsYWNlaG9sZGVycyAgLAoJIHJhbmsgPSAoaW50KSBFeHBy
OjpyYW5rICAgfTsKICAKICB0ZW1wbGF0ZTxjbGFzcyBUPgogIEZ1bmN0b3JFeHByKGNvbnN0IEZ1
bmN0b3ImIGYsIGNvbnN0IFQmIGEpIDogZl8oZiksIGl0ZXJfKGEpIHsgfQoKICBUX251bXR5cGUg
b3BlcmF0b3IqKCkgeyByZXR1cm4gZl8oKml0ZXJfKTsgfQoKCgoKCgogIHRlbXBsYXRlPGludCBO
X3Jhbms+CiAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsIE5fcmFu
az4mIGkpCiAgeyByZXR1cm4gZl8oaXRlcl8oaSkpOyB9CgoKICBpbnQgYXNjZW5kaW5nKGludCBy
YW5rKQogIHsgcmV0dXJuIGl0ZXJfLmFzY2VuZGluZyhyYW5rKTsgfQoKICBpbnQgb3JkZXJpbmco
aW50IHJhbmspCiAgeyByZXR1cm4gaXRlcl8ub3JkZXJpbmcocmFuayk7IH0KCiAgaW50IGxib3Vu
ZChpbnQgcmFuaykKICB7IHJldHVybiBpdGVyXy5sYm91bmQocmFuayk7IH0KCiAgaW50IHVib3Vu
ZChpbnQgcmFuaykKICB7IHJldHVybiBpdGVyXy51Ym91bmQocmFuayk7IH0KICAKICB2b2lkIHB1
c2goaW50IHBvc2l0aW9uKQogIHsgaXRlcl8ucHVzaChwb3NpdGlvbik7IH0KCiAgdm9pZCBwb3Ao
aW50IHBvc2l0aW9uKQogIHsgaXRlcl8ucG9wKHBvc2l0aW9uKTsgfQoKICB2b2lkIGFkdmFuY2Uo
KQogIHsgaXRlcl8uYWR2YW5jZSgpOyB9CgogIHZvaWQgYWR2YW5jZShpbnQgbikKICB7IGl0ZXJf
LmFkdmFuY2Uobik7IH0KCiAgdm9pZCBsb2FkU3RyaWRlKGludCByYW5rKQogIHsgaXRlcl8ubG9h
ZFN0cmlkZShyYW5rKTsgfQoKICBib29sICBpc1VuaXRTdHJpZGUoaW50IHJhbmspIGNvbnN0CiAg
eyByZXR1cm4gaXRlcl8uaXNVbml0U3RyaWRlKHJhbmspOyB9CgogIHZvaWQgYWR2YW5jZVVuaXRT
dHJpZGUoKQogIHsgaXRlcl8uYWR2YW5jZVVuaXRTdHJpZGUoKTsgfQogIGJvb2wgIGNhbkNvbGxh
cHNlKGludCBvdXRlckxvb3BSYW5rLCBpbnQgaW5uZXJMb29wUmFuaykgY29uc3QKICB7IAogICAg
cmV0dXJuIGl0ZXJfLmNhbkNvbGxhcHNlKG91dGVyTG9vcFJhbmssIGlubmVyTG9vcFJhbmspOyAK
ICB9CgogIFRfbnVtdHlwZSBvcGVyYXRvcltdKGludCBpKQogIHsgcmV0dXJuIGZfKGl0ZXJfW2ld
KTsgfQoKICBUX251bXR5cGUgZmFzdFJlYWQoaW50IGkpCiAgeyByZXR1cm4gZl8oaXRlcl8uZmFz
dFJlYWQoaSkpOyB9CgogIGludCBzdWdnZXN0U3RyaWRlKGludCByYW5rKSBjb25zdAogIHsgcmV0
dXJuIGl0ZXJfLnN1Z2dlc3RTdHJpZGUocmFuayk7IH0KCiAgYm9vbCAgaXNTdHJpZGUoaW50IHJh
bmssIGludCBzdHJpZGUpIGNvbnN0CiAgeyByZXR1cm4gaXRlcl8uaXNTdHJpZGUocmFuayxzdHJp
ZGUpOyB9CgogIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIpIGNvbnN0CiAgewogICAgcHJl
dHR5UHJpbnRGb3JtYXQgZm9ybWF0KHRydWUgKTsgICAKICAgIGl0ZXJfLnByZXR0eVByaW50KHN0
ciwgZm9ybWF0KTsKICB9CgoKICB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQ
cmludEZvcm1hdCYgZm9ybWF0KSBjb25zdAogIHsgaXRlcl8ucHJldHR5UHJpbnQoc3RyLCBmb3Jt
YXQpOyB9CgogIHRlbXBsYXRlPGNsYXNzIFRfc2hhcGU+CiAgYm9vbCAgc2hhcGVDaGVjayhjb25z
dCBUX3NoYXBlJiBzaGFwZSkKICB7IHJldHVybiBpdGVyXy5zaGFwZUNoZWNrKHNoYXBlKTsgfQoK
ICB0ZW1wbGF0ZTxpbnQgTl9yYW5rPgogIHZvaWQgbW92ZVRvKGNvbnN0IFRpbnlWZWN0b3I8aW50
LE5fcmFuaz4mIGkpCiAgewogICAgaXRlcl8ubW92ZVRvKGkpOwogIH0KCnByb3RlY3RlZDoKICBG
dW5jdG9yRXhwcigpIHsgfQoKICBjb25zdCBGdW5jdG9yJiBmXzsKICBFeHByIGl0ZXJfOwp9OwoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX0V4cHI+CmNsYXNzIF9iel9FeHByIHsKcHJpdmF0ZToKICBQX0V4
cHIgZXhwcjsKCnB1YmxpYzoKICB0eXBlZGVmIFBfRXhwciBUX0V4cHI7CiAgdHlwZWRlZiB0eXBl
bmFtZSAgVF9FeHByOjpUX251bXR5cGUgVF9udW10eXBlOwoKICBfYnpfRXhwcihjb25zdCBUX0V4
cHImIF9leHByKSA6IGV4cHIoX2V4cHIpIHsgfQoKICBUX251bXR5cGUgb3BlcmF0b3IoKShUX251
bXR5cGUgeCkgY29uc3QgewogICAgcmV0dXJuIGV4cHIoeCk7IH0KICAKICB0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxPgogIF9iel9FeHByPCBfYnpfVW5hcnlDbGFzc0V4cHJPcDI8IF9iel9FeHByPFBf
ZXhwcjE+LCBfYnpfRXhwciA+ID4KICBvcGVyYXRvcigpKF9iel9FeHByPCBQX2V4cHIxID4gZDEp
IGNvbnN0IHsKICAgIHR5cGVkZWYgX2J6X1VuYXJ5Q2xhc3NFeHByT3AyPCBfYnpfRXhwcjxQX2V4
cHIxPiwgX2J6X0V4cHI+IFRfZXhwcjsKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhw
cigqdGhpcywgZDEpKTsKICB9CgogIHRlbXBsYXRlPGNsYXNzIFBfRXhwcjI+CiAgX2J6X0FycmF5
RXhwcjwgRnVuY3RvckV4cHI8IFBfRXhwciwgdHlwZW5hbWUgYXNFeHByPFBfRXhwcjI+OjpUX2V4
cHIgPiA+CiAgb3BlcmF0b3IoKShjb25zdCBFVEJhc2U8UF9FeHByMj4mIGEpIGNvbnN0IHsKICAg
IHJldHVybiBfYnpfQXJyYXlFeHByPCAKICAgICAgICAgICAgIEZ1bmN0b3JFeHByPCBQX0V4cHIs
IHR5cGVuYW1lIGFzRXhwcjxQX0V4cHIyPjo6VF9leHByID4gPgogICAgICAoZXhwciwgc3RhdGlj
X2Nhc3Q8Y29uc3QgUF9FeHByMiY+KGEpKTsKICB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGU+Cl9iel9FeHByPCBfYnpfRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gPiAKTWFrZUNvbnN0YW50
RnVuY3Rpb24oY29uc3QgUF9udW10eXBlJiB2YWx1ZSkgewogIHJldHVybiBfYnpfRXhwcjxfYnpf
RXhwckNvbnN0YW50PFBfbnVtdHlwZT4gPgogICAgKF9iel9FeHByQ29uc3RhbnQ8UF9udW10eXBl
Pih2YWx1ZSkpOwp9CiAgCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgX2J6X0V4cHJJ
ZGVudGl0eSB7CnB1YmxpYzoKICB0eXBlZGVmIFBfbnVtdHlwZSBUX251bXR5cGU7CgogIF9iel9F
eHBySWRlbnRpdHkoKSB7IH0KICBUX251bXR5cGUgb3BlcmF0b3IoKShQX251bXR5cGUgeCkgY29u
c3QgewogICAgcmV0dXJuIHg7CiAgfQogIF9iel9FeHByMTxUX251bXR5cGU+IGRlcml2YXRpdmUo
KSBjb25zdCB7IHJldHVybiBfYnpfRXhwcjE8VF9udW10eXBlPigpOyB9Cn07Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGU+CmNsYXNzIF9iel9FeHByPF9iel9FeHBySWRlbnRpdHk8UF9udW10eXBl
PiA+IHsKcHVibGljOgogIHR5cGVkZWYgX2J6X0V4cHJJZGVudGl0eTxQX251bXR5cGU+IFRfZXhw
cjsKICB0eXBlZGVmIFBfbnVtdHlwZSBUX251bXR5cGU7Cgpwcml2YXRlOgogIFRfZXhwciBleHBy
OwoKcHVibGljOgogIF9iel9FeHByKCkgOiBleHByKCkgeyB9CgogIFRfbnVtdHlwZSBvcGVyYXRv
cigpKFRfbnVtdHlwZSB4KSBjb25zdCB7CiAgICByZXR1cm4gZXhwcih4KTsgfQogIHRlbXBsYXRl
PCBjbGFzcyBQX2V4cHIgPgogIF9iel9FeHByPCBQX2V4cHIgPiBvcGVyYXRvcigpKF9iel9FeHBy
PCBQX2V4cHIgPiB4KSB7CiAgICByZXR1cm4geDsKICB9Cn07CgoKI2RlZmluZSBNYWtlVmFyVHlw
ZSh0eXBlbmFtZSwgcHJlZml4bmFtZSkgdHlwZWRlZiBfYnpfRXhwcjwgX2J6X0V4cHJJZGVudGl0
eTwgdHlwZW5hbWUgPiA+IHByZWZpeG5hbWUgIyMgVmFyCgp0eXBlZGVmIF9iel9FeHByPCBfYnpf
RXhwcklkZW50aXR5PCAgYm9vbCAgPiA+ICAgYm9vbFZhciA7CnR5cGVkZWYgX2J6X0V4cHI8IF9i
el9FeHBySWRlbnRpdHk8ICBjaGFyICA+ID4gICBjaGFyVmFyIDsKdHlwZWRlZiBfYnpfRXhwcjwg
X2J6X0V4cHJJZGVudGl0eTwgIGludCAgPiA+ICAgaW50VmFyIDsKdHlwZWRlZiBfYnpfRXhwcjwg
X2J6X0V4cHJJZGVudGl0eTwgIGZsb2F0ICA+ID4gICBmbG9hdFZhciA7CnR5cGVkZWYgX2J6X0V4
cHI8IF9iel9FeHBySWRlbnRpdHk8ICBkb3VibGUgID4gPiAgIGRvdWJsZVZhciA7CnR5cGVkZWYg
X2J6X0V4cHI8IF9iel9FeHBySWRlbnRpdHk8ICBzaG9ydCAgPiA+ICAgc2hvcnRWYXIgOwp0eXBl
ZGVmIF9iel9FeHByPCBfYnpfRXhwcklkZW50aXR5PCAgbG9uZyAgPiA+ICAgbG9uZ1ZhciA7CnR5
cGVkZWYgX2J6X0V4cHI8IF9iel9FeHBySWRlbnRpdHk8ICB1bnNpZ25lZCBjaGFyICA+ID4gICB1
Y2hhclZhciA7CnR5cGVkZWYgX2J6X0V4cHI8IF9iel9FeHBySWRlbnRpdHk8ICBzaWduZWQgY2hh
ciAgPiA+ICAgc2NoYXJWYXIgOwp0eXBlZGVmIF9iel9FeHByPCBfYnpfRXhwcklkZW50aXR5PCAg
dW5zaWduZWQgc2hvcnQgID4gPiAgIHVzaG9ydFZhciA7CnR5cGVkZWYgX2J6X0V4cHI8IF9iel9F
eHBySWRlbnRpdHk8ICB1bnNpZ25lZCBsb25nICA+ID4gICB1bG9uZ1ZhciA7CnR5cGVkZWYgX2J6
X0V4cHI8IF9iel9FeHBySWRlbnRpdHk8ICB1bnNpZ25lZCBpbnQgID4gPiAgIHVpbnRWYXIgOwp0
eXBlZGVmIF9iel9FeHByPCBfYnpfRXhwcklkZW50aXR5PCAgbG9uZyBkb3VibGUgID4gPiAgIGxk
b3VibGVWYXIgOwoKI3VuZGVmIE1ha2VWYXJUeXBlCgp0ZW1wbGF0ZTwgY2xhc3MgUF9udW10eXBl
LCBjbGFzcyBQX29iamVjdCA+CmNsYXNzIF9iel9GdW5jdGlvbk9iamVjdCA6IHB1YmxpYyBPbmVP
cGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHJpdmF0ZToKICBjb25zdCBQX29iamVj
dCYgb2JqZWN0OwoKcHVibGljOgogIHR5cGVkZWYgUF9udW10eXBlIFRfbnVtdHlwZTsKICB0eXBl
ZGVmIFRfbnVtdHlwZSBUX3Byb21vdGU7CiAgdHlwZWRlZiBUX251bXR5cGUgVF9udW10eXBlMTsK
ICB0eXBlZGVmIFBfb2JqZWN0IFRfb2JqZWN0OwogIAogIF9iel9GdW5jdGlvbk9iamVjdChjb25z
dCBQX29iamVjdCYgX29iamVjdCkgOiBvYmplY3QoX29iamVjdCkgeyB9CgogIGlubGluZSBQX251
bXR5cGUgYXBwbHkoUF9udW10eXBlIHgpIGNvbnN0IHsgcmV0dXJuIG9iamVjdCh4KTsgfQp9OwoK
dGVtcGxhdGU8IGNsYXNzIFBfbnVtdHlwZSwgY2xhc3MgUF9vYmplY3QgPgpjbGFzcyBfYnpfRnVu
Y3Rpb25PYmplY3RBcmIgOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFz
ZSB7CnByaXZhdGU6CiAgY29uc3QgUF9vYmplY3QmIG9iamVjdDsKICBQX251bXR5cGUgKFBfb2Jq
ZWN0OjoqZnVuYykoUF9udW10eXBlKSBjb25zdDsKCnB1YmxpYzoKICB0eXBlZGVmIFBfbnVtdHlw
ZSBUX251bXR5cGU7CiAgdHlwZWRlZiBUX251bXR5cGUgVF9wcm9tb3RlOwogIHR5cGVkZWYgVF9u
dW10eXBlIFRfbnVtdHlwZTE7CiAgdHlwZWRlZiBQX29iamVjdCBUX29iamVjdDsKICB0eXBlZGVm
IFBfbnVtdHlwZSAoUF9vYmplY3Q6OipUX2Z1bmN0eXBlKShQX251bXR5cGUpIGNvbnN0OwogIAog
IF9iel9GdW5jdGlvbk9iamVjdEFyYihjb25zdCBQX29iamVjdCYgX29iamVjdCwgVF9mdW5jdHlw
ZSBfZnVuYykgCiAgICA6IG9iamVjdChfb2JqZWN0KSwgZnVuYyhfZnVuYykgeyB9CgogIGlubGlu
ZSBQX251bXR5cGUgYXBwbHkoUF9udW10eXBlIHgpIGNvbnN0IHsgcmV0dXJuIChvYmplY3QuKmZ1
bmMpKHgpOyB9Cn07Cgp0ZW1wbGF0ZTwgY2xhc3MgUF9udW10eXBlLCBjbGFzcyBQX29iamVjdCA+
CmNsYXNzIF9iel9GdW5jdGlvbk9iamVjdDIgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZl
VGVtcGxhdGVzQmFzZSB7CnByaXZhdGU6CiAgY29uc3QgUF9vYmplY3QmIG9iamVjdDsKCnB1Ymxp
YzoKICB0eXBlZGVmIFBfbnVtdHlwZSBUX251bXR5cGU7CiAgdHlwZWRlZiBUX251bXR5cGUgVF9w
cm9tb3RlOwogIHR5cGVkZWYgVF9udW10eXBlIFRfbnVtdHlwZTE7CiAgdHlwZWRlZiBUX251bXR5
cGUgVF9udW10eXBlMjsKICAKICBfYnpfRnVuY3Rpb25PYmplY3QyKGNvbnN0IFBfb2JqZWN0JiBf
b2JqZWN0KSA6IG9iamVjdChfb2JqZWN0KSB7IH0KCiAgaW5saW5lIFBfbnVtdHlwZSBhcHBseShQ
X251bXR5cGUgeCwgCgkJCSBQX251bXR5cGUgeSkgY29uc3QgeyByZXR1cm4gb2JqZWN0KHgseSk7
IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfZXhwciwgY2xhc3MgUF91bmFyeU9wPgpjbGFzcyBfYnpf
VW5hcnlDbGFzc0V4cHJPcCB7CnByaXZhdGU6CiAgUF9leHByIGV4cHI7CiAgY29uc3QgUF91bmFy
eU9wJiBvcEZ1bmN0b3I7CgpwdWJsaWM6CiAgdHlwZWRlZiBQX2V4cHIgVF9leHByOwogIHR5cGVk
ZWYgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlIFRfbnVtdHlwZV9pbjsKICB0eXBlZGVmIFBf
dW5hcnlPcCAgICBUX3VuYXJ5T3A7CiAgdHlwZWRlZiB0eXBlbmFtZSAgVF91bmFyeU9wOjpUX251
bXR5cGUgVF9udW10eXBlOwogIAogIF9iel9VbmFyeUNsYXNzRXhwck9wKGNvbnN0IFRfdW5hcnlP
cCYgb3AsIGNvbnN0IFRfZXhwciYgYSkKICAgIDogb3BGdW5jdG9yKG9wKSwgZXhwcihhKSB7IH0K
CiAgVF9udW10eXBlIG9wZXJhdG9yKCkoVF9udW10eXBlX2luIHgpIGNvbnN0IHsKICAgIHJldHVy
biBvcEZ1bmN0b3IuYXBwbHkoZXhwcih4KSk7CiAgfQp9OwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjIsIGNsYXNzIFBfYmluYXJ5T3A+
CmNsYXNzIF9iel9CaW5hcnlDbGFzc0V4cHJPcCB7CnByaXZhdGU6CiAgUF9leHByMSBleHByMTsK
ICBQX2V4cHIyIGV4cHIyOwogIGNvbnN0IFBfYmluYXJ5T3AmIG9wRnVuY3RvcjsKCnB1YmxpYzoK
ICB0eXBlZGVmIFBfZXhwcjEgVF9leHByMTsKICB0eXBlZGVmIFBfZXhwcjIgVF9leHByMjsKICB0
eXBlZGVmIHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUgVF9udW10eXBlX2luMTsKICB0eXBl
ZGVmIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5cGUgVF9udW10eXBlX2luMjsKICB0eXBlZGVm
IFBfYmluYXJ5T3AgICAgVF9iaW5hcnlPcDsKICB0eXBlZGVmIHR5cGVuYW1lICBUX2JpbmFyeU9w
OjpUX251bXR5cGUgVF9udW10eXBlOwogIAogIF9iel9CaW5hcnlDbGFzc0V4cHJPcChjb25zdCBU
X2JpbmFyeU9wJiBvcCwgCgkJCWNvbnN0IFRfZXhwcjEmIGEsIGNvbnN0IFRfZXhwcjImIGIpCiAg
ICA6IG9wRnVuY3RvcihvcCksIGV4cHIxKGEpLCBleHByMihiKSB7IH0KCiAgVF9udW10eXBlIG9w
ZXJhdG9yKCkoVF9udW10eXBlX2luMSB4LCBUX251bXR5cGVfaW4yIHkpIGNvbnN0IHsKICAgIHJl
dHVybiBvcEZ1bmN0b3IuYXBwbHkoZXhwcjEoeCksIGV4cHIyKHkpKTsKICB9Cn07Cgp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyLCBjbGFzcyBQX2JpbmFyeU9wPgpjbGFzcyBf
YnpfQmluYXJ5Q2xhc3NFeHByT3AyIHsKcHJpdmF0ZToKICBQX2V4cHIxIGV4cHIxOwogIFBfZXhw
cjIgZXhwcjI7CiAgY29uc3QgUF9iaW5hcnlPcCYgb3BGdW5jdG9yOwoKcHVibGljOgogIHR5cGVk
ZWYgUF9leHByMSBUX2V4cHIxOwogIHR5cGVkZWYgUF9leHByMiBUX2V4cHIyOwogIHR5cGVkZWYg
dHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSBUX251bXR5cGVfaW4xOwogIHR5cGVkZWYgdHlw
ZW5hbWUgIFRfZXhwcjI6OlRfbnVtdHlwZSBUX251bXR5cGVfaW4yOwogIHR5cGVkZWYgUF9iaW5h
cnlPcCAgICBUX2JpbmFyeU9wOwogIHR5cGVkZWYgdHlwZW5hbWUgIFRfYmluYXJ5T3A6OlRfbnVt
dHlwZSBUX251bXR5cGU7CiAgCiAgX2J6X0JpbmFyeUNsYXNzRXhwck9wMihjb25zdCBUX2JpbmFy
eU9wJiBvcCwgCgkJCWNvbnN0IFRfZXhwcjEmIGEsIGNvbnN0IFRfZXhwcjImIGIpCiAgICA6IG9w
RnVuY3RvcihvcCksIGV4cHIxKGEpLCBleHByMihiKSB7IH0KCiAgVF9udW10eXBlIG9wZXJhdG9y
KCkoVF9udW10eXBlIHgpIGNvbnN0IHsKICAgIHJldHVybiBvcEZ1bmN0b3IoZXhwcjEoeCksIGV4
cHIyKHgpKTsKICB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyLCBj
bGFzcyBQX2V4cHIzLCBjbGFzcyBQX3Rlcm5hcnlPcD4KY2xhc3MgX2J6X1Rlcm5hcnlDbGFzc0V4
cHJPcDIgewpwcml2YXRlOgogIFBfZXhwcjEgZXhwcjE7CiAgUF9leHByMiBleHByMjsKICBQX2V4
cHIzIGV4cHIzOwogIGNvbnN0IFBfdGVybmFyeU9wJiBvcEZ1bmN0b3I7CgpwdWJsaWM6CiAgdHlw
ZWRlZiBQX2V4cHIxIFRfZXhwcjE7CiAgdHlwZWRlZiBQX2V4cHIyIFRfZXhwcjI7CiAgdHlwZWRl
ZiBQX2V4cHIzIFRfZXhwcjM7CiAgdHlwZWRlZiB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBl
IFRfbnVtdHlwZV9pbjE7CiAgdHlwZWRlZiB0eXBlbmFtZSAgVF9leHByMjo6VF9udW10eXBlIFRf
bnVtdHlwZV9pbjI7CiAgdHlwZWRlZiB0eXBlbmFtZSAgVF9leHByMzo6VF9udW10eXBlIFRfbnVt
dHlwZV9pbjM7CiAgdHlwZWRlZiBQX3Rlcm5hcnlPcCAgICBUX3Rlcm5hcnlPcDsKICB0eXBlZGVm
IHR5cGVuYW1lICBUX3Rlcm5hcnlPcDo6VF9udW10eXBlIFRfbnVtdHlwZTsKICAKICBfYnpfVGVy
bmFyeUNsYXNzRXhwck9wMihjb25zdCBUX3Rlcm5hcnlPcCYgb3AsIAoJCQljb25zdCBUX2V4cHIx
JiBhLCBjb25zdCBUX2V4cHIyJiBiLCBjb25zdCBUX2V4cHIzJiBjKQogICAgOiBvcEZ1bmN0b3Io
b3ApLCBleHByMShhKSwgZXhwcjIoYiksIGV4cHIzKGMpIHsgfQoKICBUX251bXR5cGUgb3BlcmF0
b3IoKShUX251bXR5cGUgeCkgY29uc3QgewogICAgcmV0dXJuIG9wRnVuY3RvcihleHByMSh4KSwg
ZXhwcjIoeCksIGV4cHIzKHgpKTsKICB9Cn07Cgp0ZW1wbGF0ZTwgY2xhc3MgUF91bmFyeU9wID4K
Y2xhc3MgX2J6X0Z1bmN0aW9uT2JqZWN0RnVuY3RvcnMgewpwcml2YXRlOgogIFBfdW5hcnlPcCBv
cEZ1bmN0b3I7CnB1YmxpYzoKICB0eXBlZGVmIGRvdWJsZSBUX251bXR5cGU7CgogIF9iel9GdW5j
dGlvbk9iamVjdEZ1bmN0b3JzKGNvbnN0IFBfdW5hcnlPcCYgb3ApIAogICAgOiBvcEZ1bmN0b3Io
b3ApIHsgfQoKICBkb3VibGUgb3BlcmF0b3IoKShkb3VibGUgeCkgY29uc3QgeyByZXR1cm4gb3BG
dW5jdG9yLmFwcGx5KHgpOyB9CiAgdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KICBfYnpfRXhwcjxf
YnpfVW5hcnlDbGFzc0V4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgICBQX3VuYXJ5T3AgPiA+
CiAgb3BlcmF0b3IoKShfYnpfRXhwcjxQX2V4cHIxPiBkMSkgewogICAgdHlwZWRlZiBfYnpfVW5h
cnlDbGFzc0V4cHJPcDwgX2J6X0V4cHI8UF9leHByMT4gLAogICAgICBQX3VuYXJ5T3AgPiBUX2V4
cHI7CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIob3BGdW5jdG9yLGQxKSk7CiAg
fQoKICB0ZW1wbGF0ZTxjbGFzcyBQX0V4cHIyPgogIF9iel9BcnJheUV4cHI8IEZ1bmN0b3JFeHBy
PCBfYnpfRnVuY3Rpb25PYmplY3RGdW5jdG9yczxQX3VuYXJ5T3A+LCAKICAgIHR5cGVuYW1lIGFz
RXhwcjxQX0V4cHIyPjo6VF9leHByID4gPgogIG9wZXJhdG9yKCkoY29uc3QgRVRCYXNlPFBfRXhw
cjI+JiBhKSB7CiAgICByZXR1cm4gX2J6X0FycmF5RXhwcjwgRnVuY3RvckV4cHI8IF9iel9GdW5j
dGlvbk9iamVjdEZ1bmN0b3JzPFBfdW5hcnlPcD4sIAogICAgICB0eXBlbmFtZSBhc0V4cHI8UF9F
eHByMj46OlRfZXhwciA+ID4oKnRoaXMsIAoJCQkJCSAgIHN0YXRpY19jYXN0PGNvbnN0IFBfRXhw
cjImPihhKSk7CiAgfQoKICAgCiAgIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAKfTsKCiAgICAK
dGVtcGxhdGU8IGNsYXNzIFBfYmluYXJ5T3AgPgpjbGFzcyBfYnpfRnVuY3Rpb25PYmplY3RGdW5j
dG9yczIgewpwcml2YXRlOgogIGNvbnN0IFBfYmluYXJ5T3AmIG9wRnVuY3RvcjsKCnB1YmxpYzoK
ICBfYnpfRnVuY3Rpb25PYmplY3RGdW5jdG9yczIoY29uc3QgUF9iaW5hcnlPcCYgb3ApIAogICAg
OiBvcEZ1bmN0b3Iob3ApIHsgfQoKICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4
cHIyPgogIF9iel9FeHByPF9iel9CaW5hcnlDbGFzc0V4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwg
X2J6X0V4cHI8UF9leHByMj4sIAogICAgIFBfYmluYXJ5T3AgPiA+CiAgb3BlcmF0b3IoKShfYnpf
RXhwcjxQX2V4cHIxPiBkMSwgX2J6X0V4cHI8UF9leHByMj4gZDIpIHsKICAgIHR5cGVkZWYgX2J6
X0JpbmFyeUNsYXNzRXhwck9wPCBfYnpfRXhwcjxQX2V4cHIxPiAsIF9iel9FeHByPFBfZXhwcjI+
LCAKICAgICAgUF9iaW5hcnlPcCA+IFRfZXhwcjsKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihvcEZ1bmN0b3IsZDEsZDIpKTsKICB9Cn07CgogCiAKIAogCiAKIAogCiNkZWZpbmUg
RGVmaW5lRnVuY3Rpb25PYmplY3QodmFyaWFibGUsIGJhc2VvYmplY3QsIFBfbnVtdHlwZSkgYmxp
dHo6Ol9iel9GdW5jdGlvbk9iamVjdEZ1bmN0b3JzPCBibGl0ejo6X2J6X0Z1bmN0aW9uT2JqZWN0
PCBQX251bXR5cGUsIHR5cGVvZihiYXNlb2JqZWN0KSA+ID52YXJpYWJsZShiYXNlb2JqZWN0KQoK
CgoKI2RlZmluZSBEZWZpbmVGdW5jdGlvbk9iamVjdEFyYih2YXJpYWJsZSwgYmFzZW9iamVjdCwg
UF9udW10eXBlLCBmdW5jbmFtZSkgYmxpdHo6Ol9iel9GdW5jdGlvbk9iamVjdEZ1bmN0b3JzPCBi
bGl0ejo6X2J6X0Z1bmN0aW9uT2JqZWN0QXJiPCBQX251bXR5cGUsIHR5cGVvZihiYXNlb2JqZWN0
KSA+ID4gdmFyaWFibGUoYmFzZW9iamVjdCwgJmJsaXR6OjpfYnpfRnVuY3Rpb25PYmplY3RBcmI8
IFBfbnVtdHlwZSwgdHlwZW9mKGJhc2VvYmplY3QpID46OlRfb2JqZWN0OjpmdW5jbmFtZSkKCgoK
CgoKCiNkZWZpbmUgRGVmaW5lRnVuY3Rpb25PYmplY3QyKHZhcmlhYmxlLCBiYXNlb2JqZWN0LCBQ
X251bXR5cGUpIGJsaXR6OjpfYnpfRnVuY3Rpb25PYmplY3RGdW5jdG9yczI8IGJsaXR6OjpfYnpf
RnVuY3Rpb25PYmplY3QyPCBQX251bXR5cGUsIHR5cGVvZihiYXNlb2JqZWN0KSA+ID4gdmFyaWFi
bGUoYmFzZW9iamVjdCkKCgoKICAgICAgICAgCiAKIAogCiAKIAogCiNkZWZpbmUgU2V0dXBDbGFz
c0FzRnVuY3Rpb25PYmplY3QgdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4gYmxpdHo6Ol9iel9FeHBy
PGJsaXR6OjpfYnpfVW5hcnlDbGFzc0V4cHJPcDI8YmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+LCBU
X3RoaXNDbGFzcyA+ID4gb3BlcmF0b3IoKShibGl0ejo6X2J6X0V4cHI8UF9leHByMT4gZDEpIHsg
dHlwZWRlZiBibGl0ejo6X2J6X1VuYXJ5Q2xhc3NFeHByT3AyPCBibGl0ejo6X2J6X0V4cHI8UF9l
eHByMT4gLCBUX3RoaXNDbGFzcyA+IFRfZXhwcjsgcmV0dXJuIGJsaXR6OjpfYnpfRXhwcjxUX2V4
cHI+KFRfZXhwcigqdGhpcyxkMSkpOyB9IHRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+IGJsaXR6Ojpf
YnpfQXJyYXlFeHByPCBibGl0ejo6RnVuY3RvckV4cHI8IFRfdGhpc0NsYXNzLCB0eXBlbmFtZSBi
bGl0ejo6YXNFeHByPFBfZXhwcjI+OjpUX2V4cHI+ID4gb3BlcmF0b3IoKShjb25zdCBibGl0ejo6
RVRCYXNlPFBfZXhwcjI+JiBhKSBjb25zdCB7IHJldHVybiBibGl0ejo6X2J6X0FycmF5RXhwcjwg
YmxpdHo6OkZ1bmN0b3JFeHByPCBUX3RoaXNDbGFzcywgdHlwZW5hbWUgYmxpdHo6OmFzRXhwcjxQ
X2V4cHIyPjo6VF9leHByPiA+KCp0aGlzLCBzdGF0aWNfY2FzdDxjb25zdCBQX2V4cHIyJj4oYSkp
OyB9CiMgNTkyICIuLi9leHByVGVtcC9leHByVGVtcC5oIgoKdGVtcGxhdGU8Y2xhc3MgRiwgY2xh
c3MgUF9leHByMj4KYmxpdHo6Ol9iel9BcnJheUV4cHI8IGJsaXR6OjpGdW5jdG9yRXhwcjwgRiwK
ICB0eXBlbmFtZSBibGl0ejo6YXNFeHByPFBfZXhwcjI+OjpUX2V4cHI+ID4KYXBwbHlGdW5jdG9y
KGNvbnN0IEYmIGYsIGNvbnN0IGJsaXR6OjpFVEJhc2U8UF9leHByMj4mIGEpIHsKICByZXR1cm4g
YmxpdHo6Ol9iel9BcnJheUV4cHI8IGJsaXR6OjpGdW5jdG9yRXhwcjwgRiwKICAgIHR5cGVuYW1l
IGJsaXR6Ojphc0V4cHI8UF9leHByMj46OlRfZXhwcj4gPihmLAoJCQkJCSAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBQX2V4cHIyJj4oYSkpOwp9CgogCiAKIAogCiNkZWZpbmUgU2V0dXBDbGFzc0Fz
RnVuY3Rpb25PYmplY3QyIHRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+IGJs
aXR6OjpfYnpfRXhwcjxibGl0ejo6X2J6X0JpbmFyeUNsYXNzRXhwck9wMjwgYmxpdHo6Ol9iel9F
eHByPFBfZXhwcjE+LCBibGl0ejo6X2J6X0V4cHI8UF9leHByMj4sIFRfdGhpc0NsYXNzID4gPiBv
cGVyYXRvcigpKGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIxPiBkMSwgYmxpdHo6Ol9iel9FeHByPFBf
ZXhwcjI+IGQyKSB7IHR5cGVkZWYgYmxpdHo6Ol9iel9CaW5hcnlDbGFzc0V4cHJPcDI8IGJsaXR6
OjpfYnpfRXhwcjxQX2V4cHIxPiAsIGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIyPiwgVF90aGlzQ2xh
c3MgPiBUX2V4cHI7IHJldHVybiBibGl0ejo6X2J6X0V4cHI8VF9leHByPihUX2V4cHIoKnRoaXMs
ZDEsZDIpKTsgfQojIDYxNyAiLi4vZXhwclRlbXAvZXhwclRlbXAuaCIKCiAKIAogCiAKI2RlZmlu
ZSBTZXR1cENsYXNzQXNGdW5jdGlvbk9iamVjdDMgdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xh
c3MgUF9leHByMiwgY2xhc3MgUF9leHByMz4gYmxpdHo6Ol9iel9FeHByPGJsaXR6OjpfYnpfVGVy
bmFyeUNsYXNzRXhwck9wMjwgYmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+LCBibGl0ejo6X2J6X0V4
cHI8UF9leHByMj4sIGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIzPiwgVF90aGlzQ2xhc3MgPiA+IG9w
ZXJhdG9yKCkoYmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+IGQxLCBibGl0ejo6X2J6X0V4cHI8UF9l
eHByMj4gZDIsIGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIzPiBkMykgeyB0eXBlZGVmIGJsaXR6Ojpf
YnpfVGVybmFyeUNsYXNzRXhwck9wMjwgYmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+LCBibGl0ejo6
X2J6X0V4cHI8UF9leHByMj4sIGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIzPiwgVF90aGlzQ2xhc3Mg
PiBUX2V4cHI7IHJldHVybiBibGl0ejo6X2J6X0V4cHI8VF9leHByPihUX2V4cHIoKnRoaXMsZDEs
ZDIsZDMpKTsgfQojIDYzNiAiLi4vZXhwclRlbXAvZXhwclRlbXAuaCIKCnRlbXBsYXRlPGNsYXNz
IFQ+CiAgc3RydWN0IFRvRnVuY3Rpb25PYmplY3QgewogICAgdHlwZWRlZiBfYnpfRXhwcjwgX2J6
X0V4cHJDb25zdGFudDwgVCA+ID4gdHlwZTsKICB9OwoKdGVtcGxhdGU8Y2xhc3MgVD4KICBzdHJ1
Y3QgVG9GdW5jdGlvbk9iamVjdDwgX2J6X0V4cHI8VD4gPiB7CiAgICB0eXBlZGVmIF9iel9FeHBy
PCBUID4gdHlwZTsKICB9OwoKI2RlZmluZSBEZWZpbmVGdW5jdGlvbih2YXJOYW1lLCBGdW5jdGlv
bkV4cHIpIFRvRnVuY3Rpb25PYmplY3Q8dHlwZW9mKEZ1bmN0aW9uRXhwcik+Ojp0eXBlICh2YXJO
YW1lKShGdW5jdGlvbkV4cHIpCgoKdGVtcGxhdGU8Y2xhc3MgRnVuY3RvciwgY2xhc3MgUF9udW10
eXBlLCBpbnQgTl9yYW5rPgogIGlubGluZQogIHZvaWQKICBGdW5jdGlvbk9iamVjdE9mT3Zlcndy
aXRlKCBjb25zdCBGdW5jdG9yJiBmLCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz4mIGEpIHsKICAg
IGZvcihBcnJheTxQX251bXR5cGUsIE5fcmFuaz46Oml0ZXJhdG9yIGkgPSBhLmJlZ2luKCk7Cglp
ICE9IGEuZW5kKCk7ICsraSkKICAgICAgKmkgPSBmKCppKTsKfQoKIAoKCgoKCgoKCiAKIAogCnRl
bXBsYXRlPGNsYXNzIEZ1bmN0b3IsIGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4KICBpbmxp
bmUKICBBcnJheTwgUF9udW10eXBlLCBOX3JhbmsgPgogIEZ1bmN0aW9uT2JqZWN0T2YoIGNvbnN0
IEZ1bmN0b3ImIGYsIEFycmF5PCBQX251bXR5cGUsIE5fcmFuayA+IGEpIHsKICAgIGEubWFrZVVu
aXF1ZSgpOwogICAgRnVuY3Rpb25PYmplY3RPZk92ZXJ3cml0ZShmLCBhKTsKICAgIHJldHVybiBh
Owp9CiAgICAKdGVtcGxhdGU8Y2xhc3MgRnVuY3RvciwgY2xhc3MgRXhwcj4KaW5saW5lIHR5cGVu
YW1lICBGdW5jdG9yOjpUX251bXR5cGUKYXBwbHlGdW5jdG9yKGNvbnN0IEZ1bmN0b3ImIEYsIGNv
bnN0IEV4cHImIFUpIHsKICByZXR1cm4gKCpGKSgqVSk7Cn0KCiMgMSAiLi4vZXhwclRlbXAvZXhw
clRlbXBPcHMuaCIgMQogCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhwcjxQX2V4cHIxPiwgX2J6X0V4
cHI8UF9leHByMj4sCl9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yKyhfYnpfRXhwcjxQX2V4cHIx
PiBkMSwgCgkgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgIF9iel9BZGQ8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5F
eHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sCiAg
ICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVy
YXRvcisoX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAg
X2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAg
X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yKyhfYnpfRXhwcjxQX2V4cHIxPiBkMSwg
CiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9l
eHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9BZGQ8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0
PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6
X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91
YmxlPiwKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91Ymxl
ID4gPiA+Cm9wZXJhdG9yKyhfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHBy
PihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAg
ICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+
ID4Kb3BlcmF0b3IrKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3Vi
bGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5l
Cl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3IrKF9iel9FeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4g
PiAsIAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4
PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfQWRkPGlu
dCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcisoaW50IGQxLCAK
ICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxf
YnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9i
el9BZGQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQxKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHBy
PF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X0FkZDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcisoZmxvYXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQWRkPGZsb2F0LCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0Fk
ZDxkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IrKGRv
dWJsZSBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9C
aW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHBy
Mj4sIAogICAgICBfYnpfQWRkPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29u
c3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9BZGQ8bG9uZyBkb3Vi
bGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IrKGxvbmcgZG91
YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0Jp
bkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0FkZDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9i
el9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHBy
T3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhw
cjI+LAogICAgICBfYnpfQWRkPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+ID4gPgpvcGVyYXRvcisoY29tcGxleDxUMT4gZDEsIAogICAgICBfYnpfRXhwcjxQX2V4
cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29t
cGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9BZGQ8Y29t
cGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQx
PiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xh
c3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhw
cjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X1N1YnRyYWN0PCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4KID4gPgpvcGVyYXRvci0o
X2J6X0V4cHI8UF9leHByMT4gZDEsIAoJICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICBfYnpfRXhwcjxQX2V4cHIy
PiwgCiAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5s
aW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpf
RXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yLShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAg
ICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1N1YnRyYWN0PCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4
cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LAog
ICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0ID4g
PiA+Cm9wZXJhdG9yLShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9F
eHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpf
U3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVy
YXRvci0oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6
X1N1YnRyYWN0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJsZSA+ID4g
PgpvcGVyYXRvci0oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+Cmlu
bGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X1N1YnRyYWN0PCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3ItKF9iel9F
eHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29t
cGxleDxUMj4gPiAsIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikp
KTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5F
eHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAg
ICAgIF9iel9TdWJ0cmFjdDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3ItKGludCBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfU3VidHJhY3Q8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxm
bG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1N1YnRyYWN0PGZsb2F0
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLShmbG9hdCBkMSwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9TdWJ0cmFjdDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8
ZmxvYXQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5s
aW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3ItKGRvdWJsZSBkMSwgCiAgICAgIF9i
el9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU3Vi
dHJhY3Q8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+
KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1N1YnRyYWN0PGxvbmcgZG91YmxlLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLShsb25nIGRvdWJsZSBkMSwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwg
CiAgICAgIF9iel9TdWJ0cmFjdDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9F
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+
LAogICAgICBfYnpfU3VidHJhY3Q8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlID4gPiA+Cm9wZXJhdG9yLShjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxj
b21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X1N1YnRy
YWN0PGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8Y29t
cGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhw
cjxQX2V4cHIxPiwgX2J6X0V4cHI8UF9leHByMj4sCl9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+CiA+ID4Kb3Bl
cmF0b3IqKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsK
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8
UF9leHByMj4sIAogICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvciooX2J6X0V4cHI8UF9leHByMT4g
ZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9NdWx0aXBs
eTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGlu
dD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZs
b2F0PiwKICAgICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBm
bG9hdCA+ID4gPgpvcGVyYXRvciooX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBk
MikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAg
X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJP
cDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAg
ICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBkb3VibGUgPiA+
ID4Kb3BlcmF0b3IqKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAg
ICAgIF9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3Vi
bGUgPiA+ID4Kb3BlcmF0b3IqKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9uZyBkb3Vi
bGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAg
ICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X011bHRpcGx5PCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFu
dDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNz
IFQyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAg
ICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9NdWx0aXBseTwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9y
KihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4g
PiAoZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhw
cjI+LAogICAgICBfYnpfTXVsdGlwbHk8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
ID4gPiA+Cm9wZXJhdG9yKihpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewog
ICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9i
el9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X011bHRpcGx5PGludCwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9l
eHByKF9iel9FeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29u
c3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9NdWx0aXBs
eTxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciooZmxv
YXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4s
IAogICAgICBfYnpfTXVsdGlwbHk8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNv
bnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZG91Ymxl
PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfTXVsdGlwbHk8ZG91YmxlLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yKihkb3VibGUgZDEsIAog
ICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9i
el9FeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X011bHRpcGx5PGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8
ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+Cmlu
bGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9NdWx0aXBseTxsb25nIGRvdWJs
ZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcioobG9uZyBkb3Vi
bGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9l
eHByMj4sIAogICAgICBfYnpfTXVsdGlwbHk8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgoKCiAK
dGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X011bHRpcGx5PGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciooY29tcGxleDxUMT4gZDEsIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29u
c3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9i
el9NdWx0aXBseTxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDwg
X2J6X0V4cHI8UF9leHByMT4sIF9iel9FeHByPFBfZXhwcjI+LApfYnpfRGl2aWRlPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4KID4g
PgpvcGVyYXRvci8oX2J6X0V4cHI8UF9leHByMT4gZDEsIAoJICBfYnpfRXhwcjxQX2V4cHIyPiBk
MikKewogIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICBfYnpf
RXhwcjxQX2V4cHIyPiwgCiAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3IvKF9iel9FeHByPFBfZXhwcjE+
IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRGl2aWRl
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50
PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6
X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Zmxv
YXQ+LAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9h
dCA+ID4gPgpvcGVyYXRvci8oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9i
el9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVy
YXRvci8oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBf
ZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9E
aXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9w
ZXJhdG9yLyhfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpf
YnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yLyhfYnpfRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+
ID4gLCAKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29t
cGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpf
RXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0Rp
dmlkZTxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKGlu
dCBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5F
eHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAog
ICAgICBfYnpfRGl2aWRlPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8
aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGlu
ZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAg
X2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9EaXZpZGU8ZmxvYXQsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKGZsb2F0IGQxLCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50
PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0RpdmlkZTxmbG9h
dCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9C
aW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHBy
Mj4sCiAgICAgIF9iel9EaXZpZGU8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
ID4gPiA+Cm9wZXJhdG9yLyhkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAg
ICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0RpdmlkZTxkb3VibGUsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxf
YnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAog
ICAgICBfYnpfRGl2aWRlPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
ID4gPiA+Cm9wZXJhdG9yLyhsb25nIGRvdWJsZSBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9EaXZpZGU8bG9uZyBk
b3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihk
MSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxU
MT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0RpdmlkZTxjb21wbGV4
PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKGNvbXBs
ZXg8VDE+IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfRGl2aWRlPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsK
fQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpf
RXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhwcjxQX2V4cHIxPiwgX2J6X0V4cHI8UF9leHByMj4s
Cl9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yJShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCgkgIF9i
el9FeHByPFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBf
ZXhwcjE+LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9Nb2Q8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvciUoX2J6X0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAg
IF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpf
RXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxmbG9hdD4sCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGZsb2F0ID4gPiA+Cm9wZXJhdG9yJShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAg
ICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxf
YnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAg
X2J6X01vZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJh
dG9yJShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRl
ZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X01vZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
ZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHBy
MT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X01vZDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3Il
KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X01vZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNv
bXBsZXg8VDI+ID4gLAogICAgICBfYnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3IlKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBf
YnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiA+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9F
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50
PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfTW9kPGludCwgdHlwZW5hbWUg
IFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciUoaW50IGQxLCAKICAgICAgX2J6X0V4
cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0
YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Nb2Q8aW50LCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHBy
T3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAg
ICAgX2J6X01vZDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvciUoZmxvYXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRl
ZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfTW9kPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4
cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X01vZDxkb3VibGUsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IlKGRvdWJsZSBkMSwgCiAg
ICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBf
YnpfTW9kPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZG91Ymxl
PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpf
YnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Nb2Q8bG9uZyBkb3VibGUsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IlKGxvbmcgZG91YmxlIGQxLCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpf
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAg
ICAgX2J6X01vZDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBU
MSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJD
b25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBf
YnpfTW9kPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpv
cGVyYXRvciUoY29tcGxleDxUMT4gZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewog
ICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAs
IAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Nb2Q8Y29tcGxleDxUMT4gLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAog
ICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4K
aW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhw
cjxQX2V4cHIyPiwKX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yXihfYnpfRXhwcjxQ
X2V4cHIxPiBkMSwgCgkgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgIF9i
el9CaXR3aXNlWE9SPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpf
RXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxpbnQ+LAogICAgICBfYnpfQml0d2lzZVhPUjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yXihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGlu
dCBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAg
IF9iel9CaXR3aXNlWE9SPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9hdCA+ID4g
PgpvcGVyYXRvcl4oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikKewogICAg
dHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfQml0d2lzZVhPUjwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9F
eHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpf
Qml0d2lzZVhPUjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9w
ZXJhdG9yXihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlw
ZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxkb3VibGU+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9F
eHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAg
IF9iel9CaXR3aXNlWE9SPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJs
ZSA+ID4gPgpvcGVyYXRvcl4oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBsb25nIGRvdWJs
ZSBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfQml0d2lzZVhPUjwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFz
cyBUMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfQml0d2lzZVhP
UjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJh
dG9yXihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNv
bnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4
PFQyPiA+IChkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9F
eHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZSA+ID4gPgpvcGVyYXRvcl4oaW50IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4g
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPGludCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9i
el9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9i
el9CaXR3aXNlWE9SPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9w
ZXJhdG9yXihmbG9hdCBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhw
cjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPGZsb2F0LCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNv
bnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdp
c2VYT1I8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9y
Xihkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
X2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25z
dGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0Jp
dHdpc2VYT1I8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3JeKGxvbmcgZG91YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8bG9uZyBkb3Vi
bGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSks
IAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+Cmlu
bGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4g
PiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VYT1I8Y29tcGxl
eDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yXihjb21w
bGV4PFQxPiBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9i
el9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9F
eHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8Y29tcGxleDxUMT4gLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBk
MikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5l
Cl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4
cHIyPiwKX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yX19PcGVyYXRvclN5bWJvbF9f
KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8UF9leHBy
Mj4sIAogICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4K
aW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX18oX2J6
X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4
cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgpp
bmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX18o
X2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpf
QmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9h
dD4sIAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
ZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfQml0d2lzZUFuZDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yX19PcGVy
YXRvclN5bWJvbF9fKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwK
ICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcg
ZG91YmxlID4gPiA+Cm9wZXJhdG9yX19PcGVyYXRvclN5bWJvbF9fKF9iel9FeHByPFBfZXhwcjE+
IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxf
YnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAK
ICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcg
ZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
ICwKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNv
bXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcl9fT3BlcmF0b3JTeW1ib2xfXyhfYnpfRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+
ID4gLCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoK
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9i
el9CaXR3aXNlQW5kPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvcl9fT3BlcmF0b3JTeW1ib2xfXyhpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6
X0JpdHdpc2VBbmQ8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3Bl
cmF0b3JfX09wZXJhdG9yU3ltYm9sX18oZmxvYXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIy
PiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDxmbG9hdCwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9F
eHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5F
eHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4s
CiAgICAgIF9iel9CaXR3aXNlQW5kPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcl9fT3BlcmF0b3JTeW1ib2xfXyhkb3VibGUgZDEsIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29u
c3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdp
c2VBbmQ8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+
KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8bG9uZyBkb3VibGUsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9s
X18obG9uZyBkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlw
ZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAg
X2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDxsb25nIGRvdWJsZSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAg
IGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAg
ICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZUFuZDxjb21wbGV4PFQxPiAs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3lt
Ym9sX18oY29tcGxleDxUMT4gZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAog
ICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlQW5kPGNvbXBsZXg8VDE+
ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEp
LCAKICAgICAgZDIpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhwcjxQX2V4cHIxPiwgX2J6
X0V4cHI8UF9leHByMj4sCl9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yfChfYnpfRXhw
cjxQX2V4cHIxPiBkMSwgCgkgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpf
QmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAg
IF9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHBy
PihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9i
el9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNv
bnN0YW50PGludD4sCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcnwoX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBp
bnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAg
ICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAg
IF9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0ID4gPiA+
Cm9wZXJhdG9yfChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNv
bnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhw
cjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0Jp
dHdpc2VPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJh
dG9yfChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRl
ZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X0JpdHdpc2VPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6
X0JpdHdpc2VPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+
ID4Kb3BlcmF0b3J8KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0JpdHdpc2VPcjwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4K
aW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3J8KF9i
el9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYg
X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8
Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAo
ZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpf
QmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+
LAogICAgICBfYnpfQml0d2lzZU9yPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+
ID4gPgpvcGVyYXRvcnwoaW50IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAg
IHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8aW50LCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25z
dGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VP
cjxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcnwoZmxv
YXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4s
IAogICAgICBfYnpfQml0d2lzZU9yPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJD
b25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJs
ZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxkb3VibGUs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8KGRvdWJsZSBkMSwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfQml0d2lzZU9yPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3Rh
bnQ8ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3Vi
bGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9CaXR3aXNlT3I8bG9uZyBk
b3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8KGxvbmcg
ZG91YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0K
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9F
eHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZU9yPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUg
IFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcnwoY29tcGxleDxUMT4gZDEsIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9F
eHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAg
ICAgIF9iel9CaXR3aXNlT3I8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5F
eHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X1NoaWZ0TGVm
dDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+CiA+ID4Kb3BlcmF0b3I8PChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCgkgIF9iel9FeHBy
PFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgIF9iel9TaGlmdExlZnQ8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TaGlm
dExlZnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcjw8
KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9C
aW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4s
IAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IF9iel9FeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
PgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAg
IF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBmbG9hdCA+ID4gPgpvcGVyYXRvcjw8KF9iel9FeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpf
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6
X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHBy
Q29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4
cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PChfYnpfRXhwcjxQX2V4cHIxPiBk
MSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1No
aWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNv
bnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5l
Cl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PChfYnpfRXhwcjxQ
X2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5F
eHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmlu
RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4
PFQyPiA+ICwKICAgICAgX2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlw
ZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPDwoX2J6X0V4cHI8UF9leHByMT4gZDEsIAog
ICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAg
IF9iel9TaGlmdExlZnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+
ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8
aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPDwoaW50IGQx
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9TaGlmdExlZnQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxp
bnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5l
Cl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBf
YnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0TGVmdDxmbG9hdCwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw8KGZsb2F0IGQxLCAKICAgICAgX2J6X0V4
cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0
YW50PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X1NoaWZ0TGVm
dDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHBy
PF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPDwoZG91YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8ZG91
YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhw
cjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0TGVmdDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw8KGxvbmcgZG91YmxlIGQxLCAKICAgICAg
X2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X1NoaWZ0TGVmdDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfU2hpZnRMZWZ0PGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcjw8KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHBy
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDE+ID4gLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0
PGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEs
IGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhwcjxQ
X2V4cHIxPiwgX2J6X0V4cHI8UF9leHByMj4sCl9iel9TaGlmdFJpZ2h0PCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4KID4gPgpvcGVy
YXRvcj4+KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsK
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8
UF9leHByMj4sIAogICAgX2J6X1NoaWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3I+PihfYnpfRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9F
eHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1No
aWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpf
RXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxmbG9hdD4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBmbG9hdCA+ID4gPgpvcGVyYXRvcj4+KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIx
PiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZs
b2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8
X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8
ZG91YmxlPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj4+KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAg
ZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfU2hpZnRSaWdodDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRv
dWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHBy
PF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPj4oX2J6X0V4cHI8UF9leHByMT4g
ZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAog
ICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBk
b3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4g
LAogICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29t
cGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPj4oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBj
b21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhw
cjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9T
aGlmdFJpZ2h0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiA+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfU2hpZnRSaWdodDxpbnQs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I+PihpbnQgZDEsIAog
ICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9i
el9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X1NoaWZ0UmlnaHQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxpbnQ+
KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8ZmxvYXQsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I+PihmbG9hdCBkMSwgCiAgICAgIF9iel9FeHBy
PFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFu
dDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0
PGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8
X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj4oZG91YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PGRv
dWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4
cHI8UF9leHByMj4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PGxvbmcgZG91YmxlLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj4obG9uZyBkb3VibGUgZDEsIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9F
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfU2hpZnRSaWdodDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxj
bGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAog
ICAgICBfYnpfU2hpZnRSaWdodDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251
bXR5cGUgPiA+ID4Kb3BlcmF0b3I+Pihjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxj
b21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X1NoaWZ0
UmlnaHQ8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxj
b21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9F
eHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X0dyZWF0ZXI8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9w
ZXJhdG9yPihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCgkgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7
CiAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgIF9iel9FeHBy
PFBfZXhwcjI+LCAKICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yPihfYnpfRXhwcjxQX2V4cHIxPiBk
MSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBf
ZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0dyZWF0ZXI8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpf
QmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9h
dD4sCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9h
dCA+ID4gPgpvcGVyYXRvcj4oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4
cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBf
YnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9w
ZXJhdG9yPihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlw
ZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxkb3VibGU+LCAKICAgICAgX2J6X0dyZWF0ZXI8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9i
el9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJsZSA+ID4g
PgpvcGVyYXRvcj4oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5s
aW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpf
RXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPihfYnpfRXhw
cjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9C
aW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDI+ID4gLCAKICAgICAgX2J6X0dyZWF0ZXI8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsK
fQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHBy
T3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAg
IF9iel9HcmVhdGVyPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvcj4oaW50IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYg
X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQX2V4
cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHBy
Q29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9HcmVhdGVyPGZsb2F0LCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPihmbG9hdCBkMSwgCiAgICAg
IF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4
cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9H
cmVhdGVyPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXI8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPihkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8
ZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0dyZWF0ZXI8ZG91
YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhw
cjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXI8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I+KGxvbmcgZG91YmxlIGQxLCAKICAgICAgX2J6
X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X0dyZWF0ZXI8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEs
IGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29u
c3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6
X0dyZWF0ZXI8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+
Cm9wZXJhdG9yPihjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+
ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0dyZWF0ZXI8Y29tcGxleDxU
MT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChk
MSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9l
eHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBf
YnpfRXhwcjxQX2V4cHIyPiwKX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yPChfYnpfRXhwcjxQ
X2V4cHIxPiBkMSwgCgkgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgIF9i
el9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxp
bnQ+LAogICAgICBfYnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4g
PiA+Cm9wZXJhdG9yPChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGludCBkMikKewogICAg
dHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9MZXNzPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9hdCA+ID4gPgpvcGVyYXRvcjwoX2J6X0V4cHI8UF9l
eHByMT4gZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBf
YnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29u
c3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpf
YnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxkb3VibGU+LAogICAgICBfYnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yPChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAg
IGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0xlc3M8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpf
QmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25n
IGRvdWJsZT4sCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBs
b25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvcjwoX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBs
b25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhw
cjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfTGVz
czwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBj
bGFzcyBUMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfTGVzczwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9y
PChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChk
MikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9C
aW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4s
CiAgICAgIF9iel9MZXNzPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpv
cGVyYXRvcjwoaW50IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwgCiAgICAgIF9iel9MZXNzPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHBy
Q29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzPGZsb2F0LCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChmbG9hdCBkMSwgCiAgICAgIF9i
el9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJD
b25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNz
PGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8
X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X0xlc3M8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlID4gPiA+Cm9wZXJhdG9yPChkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8ZG91YmxlLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwK
ICAgICAgX2J6X0xlc3M8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUg
PiA+ID4Kb3BlcmF0b3I8KGxvbmcgZG91YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4g
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8bG9uZyBkb3Vi
bGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSks
IAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+Cmlu
bGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4g
PiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3M8Y29tcGxleDxUMT4g
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChjb21wbGV4PFQx
PiBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5F
eHByT3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X0dy
ZWF0ZXJPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlID4KID4gPgpvcGVyYXRvcj49KF9iel9FeHByPFBfZXhwcjE+IGQxLCAK
CSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4
cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgX2J6X0dyZWF0ZXJPckVx
dWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQx
LCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpf
QmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+
LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGludCA+ID4gPgpvcGVyYXRvcj49KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQy
KQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAg
IF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQg
PiA+ID4Kb3BlcmF0b3I+PShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpf
RXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhw
ck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAog
ICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRv
dWJsZSA+ID4gPgpvcGVyYXRvcj49KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91Ymxl
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAg
ICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3Vi
bGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxs
b25nIGRvdWJsZT4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I+PShfYnpfRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
bG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5F
eHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8
VDI+ID4gLAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcj49KF9iel9FeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpf
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAog
ICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9H
cmVhdGVyT3JFcXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3Bl
cmF0b3I+PShpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRl
ZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KF9iel9FeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3Rh
bnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9HcmVhdGVyT3JF
cXVhbDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj49
KGZsb2F0IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
X2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0
YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRv
cj49KGRvdWJsZSBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZG91YmxlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAg
X2J6X0dyZWF0ZXJPckVxdWFsPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlID4gPiA+Cm9wZXJhdG9yPj0obG9uZyBkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4
cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlck9y
RXF1YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNs
YXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dy
ZWF0ZXJPckVxdWFsPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+
ID4gPgpvcGVyYXRvcj49KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4g
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8
VDE+ID4gLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1
YWw8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21w
bGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHBy
PFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4KID4gPgpv
cGVyYXRvcjw9KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIp
CnsKICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4
cHI8UF9leHByMj4sIAogICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTGVzc09yRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcjw9KF9iel9FeHBy
PFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBf
YnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4
cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4
cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I8PShfYnpfRXhwcjxQX2V4cHIxPiBk
MSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29u
c3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpf
YnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxkb3VibGU+LAogICAgICBfYnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcjw9KF9iel9FeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfTGVz
c09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PShfYnpfRXhw
cjxQX2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9C
aW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNv
bXBsZXg8VDI+ID4gLAogICAgICBfYnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcjw9KF9iel9FeHByPFBfZXhwcjE+
IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxf
YnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAs
IAogICAgICBfYnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9M
ZXNzT3JFcXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0
b3I8PShpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9F
eHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxmbG9h
dCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9KGZsb2F0IGQx
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAg
ICAgX2J6X0xlc3NPckVxdWFsPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25z
dGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4s
IAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGRvdWJsZSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9KGRvdWJsZSBkMSwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfTGVzc09yRXF1YWw8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25z
dGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
Mj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGxv
bmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPD0o
bG9uZyBkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRl
ZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6
X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8bG9uZyBkb3VibGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxU
X2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBk
MikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpf
RXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGNvbXBsZXg8VDE+ICwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9KGNvbXBsZXg8VDE+
IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4
cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X0V4cHI8UF9l
eHByMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9
CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9F
eHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwK
X2J6X0VxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlID4KID4gPgpvcGVyYXRvcj09KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKCSAg
X2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgX2J6X0VxdWFsPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiAKPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpf
RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcj09
KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9C
aW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4s
IAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+Cmlu
bGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9FcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I9PShfYnpfRXhwcjxQX2V4cHIxPiBkMSwg
CiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9l
eHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9FcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Zmxv
YXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxk
b3VibGU+LAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRv
dWJsZSA+ID4gPgpvcGVyYXRvcj09KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91Ymxl
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAg
ICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhw
ck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJs
ZT4sCiAgICAgIF9iel9FcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBk
b3VibGUgPiA+ID4Kb3BlcmF0b3I9PShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGxvbmcg
ZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFz
cyBUMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcj09
KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChk
MikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9C
aW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4s
CiAgICAgIF9iel9FcXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3I9PShpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlw
ZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0VxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9F
eHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9FcXVhbDxmbG9hdCwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj09KGZsb2F0IGQxLCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpf
RXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X0VxdWFsPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0VxdWFsPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj09KGRvdWJsZSBkMSwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxk
b3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfRXF1YWw8ZG91Ymxl
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9C
aW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X0VxdWFsPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPT0obG9uZyBkb3VibGUgZDEsIAogICAgICBfYnpfRXhw
cjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfRXF1
YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNz
IFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8
Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0VxdWFs
PGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRv
cj09KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5
cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfRXF1YWw8Y29tcGxleDxUMT4gLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8
VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAg
ICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5s
aW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQ
X2V4cHIyPiwKX2J6X05vdEVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4KID4gPgpvcGVyYXRvciE9KF9iel9FeHByPFBfZXhw
cjE+IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICB0eXBlZGVmIF9iel9CaW5FeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgX2J6X05v
dEVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxp
bnQ+LAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGlu
dCA+ID4gPgpvcGVyYXRvciE9KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpf
RXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9Ob3RF
cXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3Ih
PShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9i
el9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
ZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfTm90RXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVyYXRvciE9KF9iel9F
eHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5F
eHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4s
IAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJs
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9Ob3RFcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3Ih
PShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQy
KSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9F
eHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvciE9KF9iel9FeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4g
PiAsIAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9O
b3RFcXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3Ih
PShpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpf
QmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+
LCAKICAgICAgX2J6X05vdEVxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29u
c3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAK
ICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Ob3RFcXVhbDxmbG9hdCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciE9KGZsb2F0IGQxLCAKICAgICAg
X2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhw
ckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X05v
dEVxdWFsPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X05vdEVxdWFsPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciE9KGRvdWJsZSBkMSwgCiAgICAgIF9iel9FeHBy
PFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTm90RXF1YWw8
ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHBy
PF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X05vdEVxdWFsPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yIT0obG9uZyBkb3VibGUgZDEsIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9F
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfTm90RXF1YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xh
c3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9F
eHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAg
ICAgX2J6X05vdEVxdWFsPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvciE9KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHBy
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDE+ID4gLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTm90RXF1YWw8
Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4
PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwg
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBf
ZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJh
dG9yX19PcGVyYXRvclN5bWJvbF9fX19PcGVyYXRvclN5bWJvbF9fKF9iel9FeHByPFBfZXhwcjE+
IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgX2J6X0xvZ2lj
YWxBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGlu
dD4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBp
bnQgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX19fX09wZXJhdG9yU3ltYm9sX18oX2J6
X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4
cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgpp
bmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX19f
X09wZXJhdG9yU3ltYm9sX18oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAg
ICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4g
PiA+Cm9wZXJhdG9yX19PcGVyYXRvclN5bWJvbF9fX19PcGVyYXRvclN5bWJvbF9fKF9iel9FeHBy
PFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAog
ICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91Ymxl
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAg
ICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9y
X19PcGVyYXRvclN5bWJvbF9fX19PcGVyYXRvclN5bWJvbF9fKF9iel9FeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpf
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAg
ICAgX2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91
YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAog
ICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwK
ICAgICAgX2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBs
ZXg8VDI+ICA+ID4gPgpvcGVyYXRvcl9fT3BlcmF0b3JTeW1ib2xfX19fT3BlcmF0b3JTeW1ib2xf
XyhfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9F
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+IChkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHBy
PF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+ID4gPgpvcGVyYXRvcl9fT3BlcmF0b3JTeW1ib2xfX19fT3BlcmF0b3JTeW1ib2xfXyhp
bnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAK
ICAgICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4K
aW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAog
ICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8ZmxvYXQsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX19f
X09wZXJhdG9yU3ltYm9sX18oZmxvYXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxmbG9hdCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAg
IF9iel9Mb2dpY2FsQW5kPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4g
PgpvcGVyYXRvcl9fT3BlcmF0b3JTeW1ib2xfX19fT3BlcmF0b3JTeW1ib2xfXyhkb3VibGUgZDEs
IAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9w
PF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAg
ICAgX2J6X0xvZ2ljYWxBbmQ8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25z
dGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
Mj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8bG9u
ZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3JfX09w
ZXJhdG9yU3ltYm9sX19fX09wZXJhdG9yU3ltYm9sX18obG9uZyBkb3VibGUgZDEsIAogICAgICBf
YnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBf
YnpfTG9naWNhbEFuZDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfTG9naWNhbEFuZDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGUgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX19fX09wZXJhdG9yU3ltYm9sX18oY29t
cGxleDxUMT4gZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPGNvbXBsZXg8VDE+ICwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAg
ZDIpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGlu
ZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhwcjxQX2V4cHIxPiwgX2J6X0V4cHI8UF9l
eHByMj4sCl9iel9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yfHwoX2J6X0V4cHI8UF9leHBy
MT4gZDEsIAoJICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICBfYnpfTG9n
aWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxp
bnQ+LAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBp
bnQgPiA+ID4Kb3BlcmF0b3J8fChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGludCBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0xvZ2ljYWxPcjwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHBy
PihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0xv
Z2ljYWxPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0
b3J8fChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50
PGZsb2F0PiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4
cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0xvZ2ljYWxP
cjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yfHwo
X2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91
YmxlPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhw
cjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9Mb2dp
Y2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9w
ZXJhdG9yfHwoX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFQyPgppbmxp
bmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9F
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9Mb2dpY2FsT3I8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcnx8KF9iel9F
eHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29t
cGxleDxUMj4gPiAsIAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4
cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIp
KSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAog
ICAgICBfYnpfTG9naWNhbE9yPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4g
PgpvcGVyYXRvcnx8KGludCBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfTG9naWNhbE9yPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KF9iel9FeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3Rh
bnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8
ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8fChmbG9h
dCBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5F
eHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwg
CiAgICAgIF9iel9Mb2dpY2FsT3I8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNv
bnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZG91Ymxl
PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfTG9naWNhbE9yPGRvdWJsZSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcnx8KGRvdWJsZSBkMSwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfTG9naWNhbE9yPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3Rh
bnQ8ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3Vi
bGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8bG9uZyBk
b3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8fChsb25n
IGRvdWJsZSBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9i
el9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhw
cjxQX2V4cHIyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9
CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxPcjxjb21wbGV4PFQxPiAsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8fChjb21wbGV4PFQxPiBkMSwgCiAg
ICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAK
ICAgICAgX2J6X0xvZ2ljYWxPcjxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251
bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
RXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZQpfYnpfRXhwcjxfYnpfVW5hcnlFeHByT3A8X2J6X0V4
cHI8UF9leHByPiwgCiAgICBfYnpfbmVnYXRlPCB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+
ID4gPgpvcGVyYXRvci0oX2J6X0V4cHI8UF9leHByPiBhKQp7CiAgICB0eXBlZGVmIF9iel9VbmFy
eUV4cHJPcDxfYnpfRXhwcjxQX2V4cHI+LAogICAgICAgIF9iel9uZWdhdGU8IHR5cGVuYW1lICBQ
X2V4cHI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihU
X2V4cHIoYSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCl9iel9FeHByPF9i
el9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHI+LCAKICAgIF9iel91bnBsdXM8IHR5cGVuYW1l
ICBQX2V4cHI6OlRfbnVtdHlwZT4gPiA+Cm9wZXJhdG9yKyhfYnpfRXhwcjxQX2V4cHI+IGEpCnsK
ICAgIHR5cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcj4sCiAgICAgICAgX2J6
X3VucGx1czwgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPiA+IFRfZXhwcjsKICAgIHJldHVy
biBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihhKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
PgppbmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcj4sIAogICAg
X2J6X0xvZ2ljYWxOb3Q8IHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4gPiA+Cm9wZXJhdG9y
IShfYnpfRXhwcjxQX2V4cHI+IGEpCnsKICAgIHR5cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9iel9F
eHByPFBfZXhwcj4sCiAgICAgICAgX2J6X0xvZ2ljYWxOb3Q8IHR5cGVuYW1lICBQX2V4cHI6OlRf
bnVtdHlwZT4gPiBUX2V4cHI7CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoYSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCl9iel9FeHByPF9iel9VbmFyeUV4
cHJPcDxfYnpfRXhwcjxQX2V4cHI+LCAKICAgIF9iel9CaXR3aXNlTm90PCB0eXBlbmFtZSAgUF9l
eHByOjpUX251bXR5cGU+ID4gPgpvcGVyYXRvcn4oX2J6X0V4cHI8UF9leHByPiBhKQp7CiAgICB0
eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHI+LAogICAgICAgIF9iel9CaXR3
aXNlTm90PCB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+ID4gVF9leHByOwogICAgcmV0dXJu
IF9iel9FeHByPFRfZXhwcj4oVF9leHByKGEpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
PgppbmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAg
X2J6X2FiczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmFicyhfYnpfRXhwcjxQ
X2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHBy
MT4sCiAgICAgICAgX2J6X2FiczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhw
cjxQX2V4cHIxPiwKICAgIF9iel9hY29zPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+
ID4KYWNvcyhfYnpfRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVW5hcnlFeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2Fjb3M8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpf
VW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICBfYnpfYXNpbjwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmFzaW4oX2J6X0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5
cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9hc2lu
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgpp
bmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgX2J6
X2F0YW48IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgphdGFuKF9iel9FeHByPFBf
ZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIx
PiwKICAgICAgICBfYnpfYXRhbjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhw
cjxQX2V4cHIxPiwKICAgIF9iel9jZWlsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+
ID4KY2VpbChfYnpfRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVW5hcnlFeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2NlaWw8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpf
VW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICBfYnpfY29zPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlPiA+ID4KY29zKF9iel9FeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBl
ZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfY29zPCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4
cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxp
bmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgX2J6X2Nv
c2g8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpjb3NoKF9iel9FeHByPFBfZXhw
cjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwK
ICAgICAgICBfYnpfY29zaDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQ
X2V4cHIxPiwKICAgIF9iel9leHA8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpl
eHAoX2J6X0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9leHA8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfVW5hcnlF
eHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICBfYnpfYWJzPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlPiA+ID4KZmFicyhfYnpfRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBf
YnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2FiczwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9i
el9FeHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgIF9iel9mbG9vcjwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmZsb29yKF9iel9FeHByPFBfZXhwcjE+
IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAg
ICAgICBfYnpfZmxvb3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9l
eHByMT4sCiAgICBfYnpfbG9nPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+ID4KbG9n
KF9iel9FeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpf
RXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfbG9nPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhw
ck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgX2J6X2xvZzEwPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlPiA+ID4KbG9nMTAoX2J6X0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYg
X2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9sb2cxMDwgdHlw
ZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5l
Cl9iel9FeHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgIF9iel9zaW48
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpzaW4oX2J6X0V4cHI8UF9leHByMT4g
ZDEpCnsKICAgIHR5cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAg
ICAgIF9iel9zaW48IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHBy
MT4sCiAgICBfYnpfc2luaDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CnNpbmgo
X2J6X0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9iel9F
eHByPFBfZXhwcjE+LAogICAgICAgIF9iel9zaW5oPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhw
ck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgX2J6X3NxcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZT4gPiA+CnNxcihfYnpfRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpf
VW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X3NxcjwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhw
cj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9F
eHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgIF9iel9zcXJ0PCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+ID4Kc3FydChfYnpfRXhwcjxQX2V4cHIxPiBkMSkK
ewogICAgdHlwZWRlZiBfYnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICAgICAg
X2J6X3NxcnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4s
CiAgICBfYnpfdGFuPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+ID4KdGFuKF9iel9F
eHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQ
X2V4cHIxPiwKICAgICAgICBfYnpfdGFuPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LAogICAgX2J6X3Rhbmg8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGU+ID4gPgp0YW5oKF9iel9FeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFy
eUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfdGFuaDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKGQxKSk7Cn0KIyA2ODYgIi4uL2V4cHJUZW1wL2V4cHJUZW1wLmgiIDIKCn0gIAoKIyA4
ICJJbnRlcnBvbGF0aW9uLmgiIDIKCiMgMSAibnJjcHAuaCIgMQogCgojZGVmaW5lIE5SQ1BQSAoK
CgpjbGFzcyBOUkVycm9yIDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uIHsgCnB1YmxpYzoKICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIG1zZygpIGNvbnN0IHsgCiAgICByZXR1cm4gIlVuc3BlY2lmaWVkIE51
bWVyaWNhbCBSZWNpcGVzIGVycm9yIjsgfQogIAogIHZpcnR1YWwgdm9pZCBvdXRwdXQoc3RkOjpv
c3RyZWFtJiBvKSBjb25zdCB7IG8gPDwgbXNnKCk7IH0KICBjb25zdCBjaGFyKiB3aGF0KCkgY29u
c3QgdGhyb3coKSB7IHJldHVybiBtc2coKTsgfQp9OwoKaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3IgPDwoc3RkOjpvc3RyZWFtJiBvLCBjb25zdCBOUkVycm9yJiBucmUpIHsKICBucmUub3V0
cHV0KG8pOwogIHJldHVybiBvOwp9CgojZGVmaW5lIE5SRXJyb3JDbGFzc0RlZmluZSggY2xhc3NO
YW1lICkgY2xhc3MgY2xhc3NOYW1lIHsgcHVibGljOgoKI2RlZmluZSBOUkVycm9yQ2xhc3MoY2xh
c3NOYW1lLCBtZXNzYWdlKSBjbGFzcyBjbGFzc05hbWUgOiBwdWJsaWMgTlJFcnJvciB7IHB1Ymxp
YzoJdmlydHVhbCBjb25zdCBjaGFyICogbXNnKCkgY29uc3QgewlyZXR1cm4gbWVzc2FnZTsgfSB9
OwoKCgoKCgojZGVmaW5lIE5SRXJyb3JDbGFzc0RlZmluZUVuZCB9OwoKY2xhc3MgTlJyZXBsYWNl
X2R1bW15IHsgfTsKc3RhdGljIGNvbnN0IE5ScmVwbGFjZV9kdW1teSBOUnJlcGxhY2UgPSBOUnJl
cGxhY2VfZHVtbXkoKTsKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgojdW5kZWYgCV9BU1NFUlRfSAojdW5kZWYgCWFzc2VydAoKCgoKCgoK
I2RlZmluZSAJX0FTU0VSVF9ICTEKCgogCgoKCgojIDU2ICIvdXNyL2luY2x1ZGUvYXNzZXJ0Lmgi
IDMKCgpleHRlcm4gIkMiIHsgCgogCmV4dGVybiB2b2lkIF9fYXNzZXJ0X2ZhaWwgIChfX2NvbnN0
IGNoYXIgKl9fYXNzZXJ0aW9uLAoJCQkJX19jb25zdCBjaGFyICpfX2ZpbGUsCgkJCQl1bnNpZ25l
ZCBpbnQgX19saW5lLAoJCQkJX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKSAgdGhyb3cgKCkgIAog
ICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCiAKZXh0ZXJuIHZvaWQgX19hc3Nl
cnRfcGVycm9yX2ZhaWwgIChpbnQgX19lcnJudW0sCgkJCQkgICAgICAgX19jb25zdCBjaGFyICpf
X2ZpbGUsCgkJCQkgICAgICAgdW5zaWduZWQgaW50IF9fbGluZSwKCQkJCSAgICAgICBfX2NvbnN0
IGNoYXIgKl9fZnVuY3Rpb24pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwoKfSAKCiNkZWZpbmUgYXNzZXJ0KGV4cHIpCSgodm9pZCkgKChleHByKSA/IDAg
OgkoX19hc3NlcnRfZmFpbCAoX19TVFJJTkcoZXhwciksCV9fRklMRV9fLCBfX0xJTkVfXywgX19B
U1NFUlRfRlVOQ1RJT04pLCAwKSkpCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDM1ICJucmNwcC5oIiAyCgoKCgojZGVmaW5lIE5SX1BSRUNPTkRJVElPTl9DSEVDSyhYKQoKCgoj
IDkgIkludGVycG9sYXRpb24uaCIgMgoKCnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzIEludGVycG9s
YXRpb24gewpwcm90ZWN0ZWQ6CiAgdHlwZWRlZiBibGl0ejo6QXJyYXk8VCwxPiB2ZWM7CiAgdHlw
ZWRlZiBibGl0ejo6QXJyYXk8VCwyPiBhcnI7CgpwdWJsaWM6CiAgIAogICAKICAgCiAgSW50ZXJw
b2xhdGlvbih2ZWMgX3gsIHZlYyBfeSwgCgkJYm9vbCBfZXh0cmFwb2xhdGVfdG9vID0gdHJ1ZSwg
Ym9vbCBfbG9jYWxfYWNjZXNzID0gdHJ1ZSkgCiAgICA6IHgoX3gpLCB5KF95KSwgCiAgICBleHRy
YXBvbGF0ZV90b28oX2V4dHJhcG9sYXRlX3RvbyksIGxvY2FsX2FjY2VzcyhfbG9jYWxfYWNjZXNz
KSB7IAogICAgYXNjZW5kaW5nID0gKHgoIGwgPSB4Lmxib3VuZChibGl0ejo6Zmlyc3REaW0pICkg
PCAKCQkgeCggdSA9IHgudWJvdW5kKGJsaXR6OjpmaXJzdERpbSkgKSk7CiAgfQogIEludGVycG9s
YXRpb24oYXJyIF94eSwgCgkJYm9vbCBfZXh0cmFwb2xhdGVfdG9vID0gdHJ1ZSwgYm9vbCBfbG9j
YWxfYWNjZXNzID0gdHJ1ZSkgOiAKICAgIHgoX3h5KF94eS5sYm91bmQoYmxpdHo6OmZpcnN0RGlt
KSwgYmxpdHo6OlJhbmdlOjphbGwoKSkpLAogICAgeShfeHkoX3h5LnVib3VuZChibGl0ejo6Zmly
c3REaW0pLCBibGl0ejo6UmFuZ2U6OmFsbCgpKSksCiAgICBleHRyYXBvbGF0ZV90b28oX2V4dHJh
cG9sYXRlX3RvbyksIGxvY2FsX2FjY2VzcyhfbG9jYWxfYWNjZXNzKSB7IAogICAgYXNjZW5kaW5n
ID0gKHgoIGwgPSB4Lmxib3VuZChibGl0ejo6Zmlyc3REaW0pICkgPCAKCQkgeCggdSA9IHgudWJv
dW5kKGJsaXR6OjpmaXJzdERpbSkgKSk7CiAgfQogIHZpcnR1YWwgfkludGVycG9sYXRpb24oKSB7
IH0KICAKICAgCiAgdmlydHVhbCBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiAyOyB9CgogICAK
ICAgCiAgdmlydHVhbCBpbnQgbm9ybWFsaXplX2luZGV4KGludCBrKSBjb25zdCB7CiAgICByZXR1
cm4gc3RkOjptaW4oIHN0ZDo6bWF4KGsgLSAod2lkdGgoKS0xKS8yLCBsKSwgdSsxLXdpZHRoKCkg
KTsKICB9CgogIHZpcnR1YWwgVCBvcGVyYXRvcigpKGNvbnN0IFQmIHgpIGNvbnN0IHsKICAgIHJl
dHVybiBpbnRlcnBvbGF0ZV9hdCh4LCBub3JtYWxpemVfaW5kZXgoaW5kZXhfb2YoeCkpKTsgfQoK
ICB2aXJ0dWFsIFQgaW50ZXJwb2xhdGVfYXQoY29uc3QgVCYgeCwgaW50IGspIGNvbnN0ID0gMDsK
CiAgdmlydHVhbCBpbnQgaW5kZXhfb2YoY29uc3QgVCYgeCkgY29uc3QgewogICAgaWYgKGdldExv
Y2FsQWNjZXNzKCkpIAogICAgICByZXR1cm4gaHVudCh4KTsKICAgIGVsc2UKICAgICAgcmV0dXJu
IGxvY2F0ZSh4KTsKICB9CiAgCiAgdmlydHVhbCBpbnQgaHVudChjb25zdCBUJiB4KSBjb25zdDsK
ICB2aXJ0dWFsIGludCBsb2NhdGUoY29uc3QgVCYgeCkgY29uc3Q7CgogICAKICAgCiAgYm9vbCBn
ZXRFeHRyYXBvbGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGV4dHJhcG9sYXRlX3RvbzsgfQogIEludGVy
cG9sYXRpb24mIHNldEV4dHJhcG9sYXRlKGJvb2wgbmV3X2V4dHJhcCkgeyAKICAgIGV4dHJhcG9s
YXRlX3RvbyA9IG5ld19leHRyYXA7IHJldHVybiAqdGhpczsgfQogIGJvb2wgZ2V0VGhyb3dSYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuICFleHRyYXBvbGF0ZV90b287IH0KICBJbnRlcnBvbGF0aW9uJiBz
ZXRUaHJvd1JhbmdlKGJvb2wgbmV3X3Rocm93KSB7CiAgICBleHRyYXBvbGF0ZV90b28gPSAhbmV3
X3Rocm93OyByZXR1cm4gKnRoaXM7IH0KICBib29sIGdldExvY2FsQWNjZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbG9jYWxfYWNjZXNzOyB9CiAgSW50ZXJwb2xhdGlvbiYgc2V0TG9jYWxBY2Nlc3MoYm9v
bCBuZXdfbG9jYWwpIHsKICAgIGxvY2FsX2FjY2VzcyA9IG5ld19sb2NhbDsgcmV0dXJuICp0aGlz
OyB9CgogIHR5cGVkZWYgSW50ZXJwb2xhdGlvbiBUX3RoaXNDbGFzczsKICB0eXBlZGVmIFQgVF9u
dW10eXBlOwogIHRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+IGJsaXR6OjpfYnpfRXhwcjxibGl0ejo6
X2J6X1VuYXJ5Q2xhc3NFeHByT3AyPGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIxPiwgVF90aGlzQ2xh
c3MgPiA+IG9wZXJhdG9yKCkoYmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+IGQxKSB7IHR5cGVkZWYg
YmxpdHo6Ol9iel9VbmFyeUNsYXNzRXhwck9wMjwgYmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+ICwg
VF90aGlzQ2xhc3MgPiBUX2V4cHI7IHJldHVybiBibGl0ejo6X2J6X0V4cHI8VF9leHByPihUX2V4
cHIoKnRoaXMsZDEpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPiBibGl0ejo6X2J6X0FycmF5
RXhwcjwgYmxpdHo6OkZ1bmN0b3JFeHByPCBUX3RoaXNDbGFzcywgdHlwZW5hbWUgYmxpdHo6OmFz
RXhwcjxQX2V4cHIyPjo6VF9leHByPiA+IG9wZXJhdG9yKCkoY29uc3QgYmxpdHo6OkVUQmFzZTxQ
X2V4cHIyPiYgYSkgY29uc3QgeyByZXR1cm4gYmxpdHo6Ol9iel9BcnJheUV4cHI8IGJsaXR6OjpG
dW5jdG9yRXhwcjwgVF90aGlzQ2xhc3MsIHR5cGVuYW1lIGJsaXR6Ojphc0V4cHI8UF9leHByMj46
OlRfZXhwcj4gPigqdGhpcywgc3RhdGljX2Nhc3Q8Y29uc3QgUF9leHByMiY+KGEpKTsgfSAKCnBy
b3RlY3RlZDoKICB2ZWMgeCwgeTsKICAgCiAgIAogIGludCBsLCB1OwoKICAgCiAgIAogIGJvb2wg
ZXh0cmFwb2xhdGVfdG9vOyAgCgogICAKICAgCiAgIAogIGJvb2wgbG9jYWxfYWNjZXNzOwoKICAg
CiAgbXV0YWJsZSBpbnQgamw7CgogICAKICAgCiAgYm9vbCBhc2NlbmRpbmc7Cn07CgpjbGFzcyBS
YW5nZUVycm9yIDogcHVibGljIGRleGNlcHRpb24gewogIGRvdWJsZSBsb3dlciwgdXBwZXIsIHZh
bDsKCnB1YmxpYzoKICBSYW5nZUVycm9yKGRvdWJsZSBfbG93ZXIsIGRvdWJsZSBfdXBwZXIsIGRv
dWJsZSBfdmFsKQogICAgOiBsb3dlcihfbG93ZXIpLCB1cHBlcihfdXBwZXIpLCB2YWwoX3ZhbCkg
eyB9CiAgdmlydHVhbCBzdGQ6OnN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gIkludGVycG9s
YXRpb246OlJhbmdlRXJyb3IiOyB9CiAgdmlydHVhbCBzdGQ6OnN0cmluZyBzdW1tYXJ5KCkgY29u
c3QgeyAKICAgIHJldHVybiBuYW1lKCkgKyAiOiBhbiBpbnRlcnBvbGF0aW9uIHdhcyBhdHRlbXB0
ZWQgb24gIgogICAgICAidmFsdWUgdGhhdCB3YXMgb3V0IG9mIHRoZSByYW5nZSBvZiB0aGUgaW5w
dXQgYXJyYXkiOyB9CiAgdmlydHVhbCBzdGQ6OnN0cmluZyBkZXRhaWwoKSBjb25zdCB7CiAgICBz
dGQ6Om9zdHJpbmdzdHJlYW0gb3M7CiAgICBvcyA8PCBuYW1lKCkgKyAiOiBpbnRlcnBvbGF0aW9u
IGF0dGVtcHRlZCBhdCB0aGUgcG9pbnQgIiA8PCB2YWwgCiAgICAgICA8PCAiLCBvdXRzaWRlIHRo
ZSBpbnB1dCByYW5nZSBvZiAiIDw8IGxvd2VyIDw8ICItLSIgPDwgdXBwZXI7CiAgICByZXR1cm4g
b3Muc3RyKCk7CiAgfQp9OwoKIyAxICJJbnRlcnBvbGF0aW9uLnRlbXBsYXRlcy5jYyIgMQogCiAK
IAogCnRlbXBsYXRlPGNsYXNzIFQ+CmludCBJbnRlcnBvbGF0aW9uPFQ+Ojpsb2NhdGUoY29uc3Qg
VCYgeHZhbCkgY29uc3QgewogIGpsID0gbC0xOyAgIAogIGludCBqdSA9IHUrMTsKCiAgaW50IGpt
OwogIAogIHdoaWxlIChqdS1qbCA+IDEpIHsKICAgIGptID0gKGp1K2psKSAvIDI7CiAgICBpZiAo
ICh4dmFsID49IHgoam0pKSA9PSBhc2NlbmRpbmcgKQogICAgICBqbCA9IGptOwogICAgZWxzZQog
ICAgICBqdSA9IGptOwogIH0KICBpZiAoeHZhbCA9PSB4KGwpKQogICAgamwgPSBsOwogIGVsc2Ug
aWYgKHh2YWwgPT0geCh1KSkKICAgIGpsID0gdS0xOwogIHJldHVybiBqbDsKfQoKdGVtcGxhdGU8
Y2xhc3MgVD4KaW50IEludGVycG9sYXRpb248VD46Omh1bnQoY29uc3QgVCYgeHZhbCkgY29uc3Qg
ewogIGludCBqdTsKCiAgaWYgKGpsIDwgbCB8fCBqbCA+IHUpIHsgICAKICAgIGpsID0gMDsKICAg
IGp1ID0gdTsKICB9IGVsc2UgewogICAgaW50IGluYyA9IDE7ICAgCiAgICBpZiAoKHh2YWwgPj0g
eChqbCkpID09IGFzY2VuZGluZykgewogICAgICAgCiAgICAgIGlmIChqbCA9PSB1KSByZXR1cm4g
amw7CiAgICAgIGp1ID0gamwrMTsKICAgICAgd2hpbGUgKCAoeHZhbCA+PSB4KGp1KSkgPT0gYXNj
ZW5kaW5nKSB7CglqbCA9IGp1OwoJaW5jICo9IDI7CglqdSA9IGpsICsgaW5jOwoJaWYgKGp1ID4g
dSkgewoJICAgCgkgIGp1ID0gdSsxOwoJICBicmVhazsKCX0KICAgICAgfSAgCiAgICB9IGVsc2Ug
ewogICAgICAgCiAgICAgIGlmIChqbCA9PSBsKSB7CglqbCA9IGwtMTsKCXJldHVybiBqbDsKICAg
ICAgfQogICAgICBqdSA9IGpsLS07CiAgICAgIHdoaWxlICggKHh2YWwgPCB4KGpsKSkgPT0gYXNj
ZW5kaW5nICkgewoJanUgPSBqbDsKCWluYyAqPSAyOwoJamwgPSBqdSAtIGluYzsKCWlmIChqbCA8
IGwpIHsKCSAgIAoJICBqbCA9IDA7CgkgIGJyZWFrOwoJfQogICAgICB9ICAKICAgIH0gIAogIH0g
IAoKICAgCiAgaW50IGptOwogIHdoaWxlIChqdSAtIGpsICE9IDEpIHsKICAgIGptID0gKGp1ICsg
amwpIC8gMjsKICAgIGlmICgoeHZhbCA+PSB4KGptKSkgPT0gYXNjZW5kaW5nKQogICAgICBqbCA9
IGptOwogICAgZWxzZQogICAgICBqdSA9IGptOwogIH0KICBpZiAoeHZhbCA9PSB4KHUpKQogICAg
amwgPSB1LTE7CiAgaWYgKHh2YWwgPT0geChsKSkKICAgIGpsID0gbDsKCiAgcmV0dXJuIGpsOwp9
CiMgMTE5ICJJbnRlcnBvbGF0aW9uLmgiIDIKCgoKCiMgNiAiQ3ViaWNTcGxpbmUuaCIgMgoKIyAx
ICIuLi9oZWFkZXJzL3N3YXAuaCIgMQoKI2RlZmluZSBTV0FQSAogCgoKCgoKCiAKIyA3ICJDdWJp
Y1NwbGluZS5oIiAyCgoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgQ3ViaWNTcGxpbmUgOiBwdWJs
aWMgSW50ZXJwb2xhdGlvbjxUPiB7CnB1YmxpYzoKICBlbnVtIHdoaWNoX3NpZGUgeyBzdGFydCwg
ZW5kIH07CiAgQ3ViaWNTcGxpbmUodmVjIF94LCB2ZWMgX3ksIAoJCWJvb2wgX2V4dHJhcG9sYXRl
X3RvbyA9IHRydWUsIGJvb2wgX2xvY2FsX2FjY2VzcyA9IHRydWUpIAogICAgOiBJbnRlcnBvbGF0
aW9uPFQ+KF94LF95LF9leHRyYXBvbGF0ZV90b28sX2xvY2FsX2FjY2VzcyksIHkyKFJhbmdlKGws
dSkpIHsKICAgIEluaXRpYWxpemVTcGxpbmUodHJ1ZSwgdHJ1ZSk7CiAgfQogIEN1YmljU3BsaW5l
KHZlYyBfeCwgdmVjIF95LCB3aGljaF9zaWRlIHNpZGUxLCBjb25zdCBUJiBkZXJpdjEsCgkJYm9v
bCBfZXh0cmFwb2xhdGVfdG9vID0gdHJ1ZSwgYm9vbCBfbG9jYWxfYWNjZXNzID0gdHJ1ZSkgCiAg
ICA6IEludGVycG9sYXRpb248VD4oX3gsX3ksX2V4dHJhcG9sYXRlX3RvbyxfbG9jYWxfYWNjZXNz
KSwgeTIoUmFuZ2UobCx1KSkgewogICAgaWYgKHNpZGUxID09IHN0YXJ0KQogICAgICBJbml0aWFs
aXplU3BsaW5lKGZhbHNlLCB0cnVlLCBkZXJpdjEpOwogICAgZWxzZQogICAgICBJbml0aWFsaXpl
U3BsaW5lKHRydWUsIGZhbHNlLCBUKCksIGRlcml2MSk7CiAgfQogIEN1YmljU3BsaW5lKHZlYyBf
eCwgdmVjIF95LCAKCSAgICAgIHdoaWNoX3NpZGUgc2lkZTEsIGNvbnN0IFQmIGRlcml2MSwKCSAg
ICAgIHdoaWNoX3NpZGUgc2lkZTIsIGNvbnN0IFQmIGRlcml2MiwKCSAgICAgIGJvb2wgX2V4dHJh
cG9sYXRlX3RvbyA9IHRydWUsIGJvb2wgX2xvY2FsX2FjY2VzcyA9IHRydWUpIAogICAgOiBJbnRl
cnBvbGF0aW9uPFQ+KF94LF95LF9leHRyYXBvbGF0ZV90b28sX2xvY2FsX2FjY2VzcyksIHkyKFJh
bmdlKGwsdSkpIHsKICAgIGlmIChzaWRlMSA9PSBlbmQgJiYgc2lkZTIgPT0gc3RhcnQpCiAgICAg
IEluaXRpYWxpemVTcGxpbmUoZmFsc2UsIGZhbHNlLCBkZXJpdjIsIGRlcml2MSk7CiAgICBlbHNl
CiAgICAgIEluaXRpYWxpemVTcGxpbmUoZmFsc2UsIGZhbHNlLCBkZXJpdjEsIGRlcml2Mik7CiAg
fQogIEN1YmljU3BsaW5lKHZlYyBfeCwgdmVjIF95LCAKCSAgICAgIGNvbnN0IFQmIGRlcml2MSwK
CSAgICAgIGNvbnN0IFQmIGRlcml2MiwKCSAgICAgIGJvb2wgX2V4dHJhcG9sYXRlX3RvbyA9IHRy
dWUsIGJvb2wgX2xvY2FsX2FjY2VzcyA9IHRydWUpIAogICAgOiBJbnRlcnBvbGF0aW9uPFQ+KF94
LF95LF9leHRyYXBvbGF0ZV90b28sX2xvY2FsX2FjY2VzcyksIHkyKFJhbmdlKGwsdSkpIHsKICAg
IEluaXRpYWxpemVTcGxpbmUoZmFsc2UsIGZhbHNlLCBkZXJpdjEsIGRlcml2Mik7CiAgfQoKICBD
dWJpY1NwbGluZShhcnIgX3h5LAoJICAgICAgYm9vbCBfZXh0cmFwb2xhdGVfdG9vID0gdHJ1ZSwg
Ym9vbCBfbG9jYWxfYWNjZXNzID0gdHJ1ZSkgCiAgICA6IEludGVycG9sYXRpb248VD4oX3h5LF9l
eHRyYXBvbGF0ZV90b28sX2xvY2FsX2FjY2VzcyksIHkyKFJhbmdlKGwsdSkpIHsKICAgIEluaXRp
YWxpemVTcGxpbmUodHJ1ZSwgdHJ1ZSk7CiAgfQogIEN1YmljU3BsaW5lKGFyciBfeHksIHdoaWNo
X3NpZGUgc2lkZTEsIGNvbnN0IFQmIGRlcml2MSwKCQlib29sIF9leHRyYXBvbGF0ZV90b28gPSB0
cnVlLCBib29sIF9sb2NhbF9hY2Nlc3MgPSB0cnVlKSAKICAgIDogSW50ZXJwb2xhdGlvbjxUPihf
eHksX2V4dHJhcG9sYXRlX3RvbyxfbG9jYWxfYWNjZXNzKSwgeTIoUmFuZ2UobCx1KSkgewogICAg
aWYgKHNpZGUxID09IHN0YXJ0KQogICAgICBJbml0aWFsaXplU3BsaW5lKGZhbHNlLCB0cnVlLCBk
ZXJpdjEpOwogICAgZWxzZQogICAgICBJbml0aWFsaXplU3BsaW5lKHRydWUsIGZhbHNlLCBUKCks
IGRlcml2MSk7CiAgfQogIEN1YmljU3BsaW5lKGFyciBfeHksIAoJICAgICAgd2hpY2hfc2lkZSBz
aWRlMSwgY29uc3QgVCYgZGVyaXYxLAoJICAgICAgd2hpY2hfc2lkZSBzaWRlMiwgY29uc3QgVCYg
ZGVyaXYyLAoJICAgICAgYm9vbCBfZXh0cmFwb2xhdGVfdG9vID0gdHJ1ZSwgYm9vbCBfbG9jYWxf
YWNjZXNzID0gdHJ1ZSkgCiAgICA6IEludGVycG9sYXRpb248VD4oX3h5LF9leHRyYXBvbGF0ZV90
b28sX2xvY2FsX2FjY2VzcyksIHkyKFJhbmdlKGwsdSkpIHsKICAgIGlmIChzaWRlMSA9PSBlbmQg
JiYgc2lkZTIgPT0gc3RhcnQpCiAgICAgIEluaXRpYWxpemVTcGxpbmUoZmFsc2UsIGZhbHNlLCBk
ZXJpdjIsIGRlcml2MSk7CiAgICBlbHNlCiAgICAgIEluaXRpYWxpemVTcGxpbmUoZmFsc2UsIGZh
bHNlLCBkZXJpdjEsIGRlcml2Mik7CiAgfQogIEN1YmljU3BsaW5lKGFyciBfeHksCgkgICAgICBj
b25zdCBUJiBkZXJpdjEsCgkgICAgICBjb25zdCBUJiBkZXJpdjIsCgkgICAgICBib29sIF9leHRy
YXBvbGF0ZV90b28gPSB0cnVlLCBib29sIF9sb2NhbF9hY2Nlc3MgPSB0cnVlKSAKICAgIDogSW50
ZXJwb2xhdGlvbjxUPihfeHksX2V4dHJhcG9sYXRlX3RvbyxfbG9jYWxfYWNjZXNzKSwgeTIoUmFu
Z2UobCx1KSkgewogICAgSW5pdGlhbGl6ZVNwbGluZShmYWxzZSwgZmFsc2UsIGRlcml2MSwgZGVy
aXYyKTsKICB9CgogIFQgaW50ZXJwb2xhdGVfYXQoY29uc3QgVCYsIGludCkgY29uc3Q7Cgpwcml2
YXRlOgogIHZlYyB5MjsgICAKCiAgdm9pZCBJbml0aWFsaXplU3BsaW5lKGJvb2wgbmF0dXJhbF9z
dGFydCwgYm9vbCBuYXR1cmFsX2VuZCwKCQkJY29uc3QgVCYgZGVyaXZfc3RhcnQgPSBUKCksIGNv
bnN0IFQmIGRlcml2X2VuZCA9IFQoKSk7Cn07CgojIDEgIkN1YmljU3BsaW5lLnRlbXBsYXRlcy5j
YyIgMQp0ZW1wbGF0ZTxjbGFzcyBUPgp2b2lkIEN1YmljU3BsaW5lPFQ+OjpJbml0aWFsaXplU3Bs
aW5lKGJvb2wgbmF0dXJhbF9zdGFydCwgYm9vbCBuYXR1cmFsX2VuZCwKCQkJCSAgICAgIGNvbnN0
IFQmIGRlcml2X3N0YXJ0LCAKCQkJCSAgICAgIGNvbnN0IFQmIGRlcml2X2VuZCkgewogIHZlYyB0
KGwsdS0xKTsKICBpZiAobmF0dXJhbF9zdGFydCkKICAgIHkyKGwpID0gdChsKSA9IDA7CiAgZWxz
ZSB7CiAgICB5MihsKSA9IC0uNTsKICAgIHQobCkgPSAzLjAgLyAoeChsKzEpLXgobCkpICogCiAg
ICAgICggKHkobCsxKS15KGwpKSAvICh4KGwrMSkteChsKSkgLSBkZXJpdl9zdGFydCk7CiAgfQoK
ICAgCiAgZm9yIChpbnQgaT1sKzE7IGk8PXUtMTsgKytpKSB7CiAgICBUIHNpZyA9ICh4KGkpIC0g
eChpLTEpKSAvICh4KGkrMSkgLSB4KGktMSkpOwogICAgVCBwID0gc2lnKnkyKGktMSkgKyAyOwog
ICAgeTIoaSkgPSAoc2lnLTEpIC8gcDsKICAgIFQgdGVtcCA9ICh5KGkrMSkteShpKSkgLyAoeChp
KzEpLXgoaSkpIC0gKHkoaSkteShpLTEpKSAvICh4KGkpLXgoaS0xKSk7CiAgICB0KGkpID0gKDYg
KiB0ZW1wIC8gKHgoaSsxKS14KGktMSkpIC0gc2lnKnQoaS0xKSkgLyBwOwogIH0KCiAgaWYgKG5h
dHVyYWxfZW5kKQogICAgeTIodSkgPSAwOwogIGVsc2UgewogICAgVCB1biA9IDMuMCAvICh4KHUp
LXgodS0xKSkgKgogICAgICAoZGVyaXZfZW5kIC0gKHkodSkteSh1LTEpKS8oeCh1KS14KHUtMSkp
KTsKICAgIHkyKHUpID0gKDIgKiB1biAtIHQodS0xKSkgLyAoeTIodS0xKSArIDIpOwogIH0KCiAg
IAogIGZvcihpbnQgaT11LTE7IGk+PWw7ICsraSkKICAgIHkyKGkpID0geTIoaSkgKiB5MihpKzEp
ICsgdChpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFQgQ3ViaWNTcGxpbmU8VD46Omlu
dGVycG9sYXRlX2F0KGNvbnN0IFQmIHh2YWwsIGludCBrKSBjb25zdCB7CiAgVCBoID0geChrKzEp
LXgoayk7CiAgVCBhID0gKHgoaysxKS14dmFsKSAvIGg7CiAgVCBiID0gKHh2YWwteChrKSkgLyBo
OwogIHJldHVybiBhKnkoaykgKyBiKnkoaysxKSArIChhKihhKmEtMSkqeTIoaykgKyBiKihiKmIt
MSkqeTIoaysxKSkgKiBoKmggLyA2Owp9CiMgODQgIkN1YmljU3BsaW5lLmgiIDIKCgoKIyAxICJ0
ZXN0Q3ViaWMuY2MiIDIKCiMgMSAiLi4vaGVhZGVycy9hcnJheS5oIiAxCgojZGVmaW5lIEFSUkFZ
SAoKCgoKCiMgMSAiLi4vaGVhZGVycy9udW1iZXJmb3Jtcy5oIiAxCgojZGVmaW5lIE5VTUJFUkZP
Uk1TSAoKIyAxICIuLi9oZWFkZXJzL2NsYXNzbWFuaXAuaCIgMQoKI2RlZmluZSBDTEFTU01BTklQ
SAoKCnRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGNsYXNzbWFuaXAxIHsKICBzdGQ6Om9zdHJlYW0q
IG87CiAgc3RkOjpvc3RyZWFtJiAoVDo6Km91dHB1dF9mdW5jKShzdGQ6Om9zdHJlYW0mKSBjb25z
dDsKCnB1YmxpYzoKICBjbGFzc21hbmlwMShzdGQ6Om9zdHJlYW0qIF9vLCAKCSAgICAgIHN0ZDo6
b3N0cmVhbSYgKFQ6Oipfb3V0cHV0X2Z1bmMpKHN0ZDo6b3N0cmVhbSYpIGNvbnN0KSAKCSAgICAg
OiBvKF9vKSwgb3V0cHV0X2Z1bmMoX291dHB1dF9mdW5jKSB7IH0KICBmcmllbmQgY2xhc3NtYW5p
cDEgICAKICAgIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvLCAKCSAgICAgICBzdGQ6Om9zdHJl
YW0mIChUOjoqb3V0cHV0X2Z1bmMpKHN0ZDo6b3N0cmVhbSYpIGNvbnN0KSB7CiAgICAgIHJldHVy
biBjbGFzc21hbmlwMSgmbywgb3V0cHV0X2Z1bmMpOwogICAgfQogIGZyaWVuZCBzdGQ6Om9zdHJl
YW0mIG9wZXJhdG9yPDwoY29uc3QgY2xhc3NtYW5pcDEmIGNtLCBjb25zdCBUJiBjKSB7CiAgICBy
ZXR1cm4gKGMuKmNtLm91dHB1dF9mdW5jKSgqKGNtLm8pKTsKICB9Cn07Cgp0ZW1wbGF0ZTxjbGFz
cyBUPiBzdHJ1Y3QgY2xhc3NtYW5pcDIgewogIHN0ZDo6b3N0cmVhbSogbzsKICBzdGQ6Om9zdHJl
YW0mICgqb3V0cHV0X2Z1bmMpKHN0ZDo6b3N0cmVhbSYsY29uc3QgVCYpOwoKICBjbGFzc21hbmlw
MihzdGQ6Om9zdHJlYW0qIF9vLCAKCSAgICAgIHN0ZDo6b3N0cmVhbSYgKCpfb3V0cHV0X2Z1bmMp
KHN0ZDo6b3N0cmVhbSYsY29uc3QgVCYpKSAKCSAgICAgOiBvKF9vKSwgb3V0cHV0X2Z1bmMoX291
dHB1dF9mdW5jKSB7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzbWFuaXAyPFQ+IApvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgbywgCgkgICBzdGQ6Om9zdHJlYW0mICgqb3V0cHV0X2Z1bmMp
KHN0ZDo6b3N0cmVhbSYsY29uc3QgVCYpKSB7CiAgcmV0dXJuIGNsYXNzbWFuaXAyPFQ+KCZvLCBv
dXRwdXRfZnVuYyk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8
PChjb25zdCBjbGFzc21hbmlwMjxUPiYgY20sIGNvbnN0IFQmIGMpIHsKICAgIHJldHVybiBjbS5v
dXRwdXRfZnVuYygqY20ubyxjKTsKICB9CgojIDQgIi4uL2hlYWRlcnMvbnVtYmVyZm9ybXMuaCIg
MgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysr
LTMvYWxnb3JpdGhtIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX19T
R0lfU1RMX0FMR09SSVRITQoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RsX3VuaW5pdGlhbGl6ZWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCiNkZWZpbmUgX19TR0lfU1RMX0lOVEVSTkFMX1VOSU5JVElBTElaRURf
SAoKIAoKIAoKIAogCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0
ZXI+CmlubGluZSBfRm9yd2FyZEl0ZXIgCl9fdW5pbml0aWFsaXplZF9jb3B5X2F1eChfSW5wdXRJ
dGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
X0ZvcndhcmRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgX190cnVlX3R5
cGUpCnsKICByZXR1cm4gY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KX0ZvcndhcmRJdGVyIApf
X3VuaW5pdGlhbGl6ZWRfY29weV9hdXgoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fZmFsc2VfdHlwZSkKewogIF9Gb3J3YXJkSXRlciBfX2N1
ciA9IF9fcmVzdWx0OwogIHRyeSAgewogICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytf
X2ZpcnN0LCArK19fY3VyKQogICAgICBjb25zdHJ1Y3QoJipfX2N1ciwgKl9fZmlyc3QpOwogICAg
cmV0dXJuIF9fY3VyOwogIH0KICBjYXRjaCguLi4pIHsgIGRlc3Ryb3koX19yZXN1bHQsIF9fY3Vy
KSA7IHRocm93OyB9IDsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9y
d2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIF9Gb3J3YXJkSXRlcgpfX3VuaW5pdGlhbGl6ZWRf
Y29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAg
ICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsIF9UcCopCnsKICB0eXBlZGVmIHR5cGVuYW1l
IF9fdHlwZV90cmFpdHM8X1RwPjo6aXNfUE9EX3R5cGUgX0lzX1BPRDsKICByZXR1cm4gX191bmlu
aXRpYWxpemVkX2NvcHlfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsIF9Jc19QT0QoKSk7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGlu
ZSBfRm9yd2FyZEl0ZXIKICB1bmluaXRpYWxpemVkX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBf
SW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVz
dWx0KQp7CiAgcmV0dXJuIF9fdW5pbml0aWFsaXplZF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19y
ZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmFsdWVfdHlwZSggX19yZXN1
bHQgKSApOwp9CgppbmxpbmUgY2hhciogdW5pbml0aWFsaXplZF9jb3B5KGNvbnN0IGNoYXIqIF9f
Zmlyc3QsIGNvbnN0IGNoYXIqIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyKiBfX3Jlc3VsdCkgewogIG1lbW1vdmUoX19yZXN1bHQsIF9fZmlyc3QsIF9fbGFzdCAt
IF9fZmlyc3QpOwogIHJldHVybiBfX3Jlc3VsdCArIChfX2xhc3QgLSBfX2ZpcnN0KTsKfQoKaW5s
aW5lIHdjaGFyX3QqIAp1bmluaXRpYWxpemVkX2NvcHkoY29uc3Qgd2NoYXJfdCogX19maXJzdCwg
Y29uc3Qgd2NoYXJfdCogX19sYXN0LAogICAgICAgICAgICAgICAgICAgd2NoYXJfdCogX19yZXN1
bHQpCnsKICBtZW1tb3ZlKF9fcmVzdWx0LCBfX2ZpcnN0LCBzaXplb2Yod2NoYXJfdCkgKiAoX19s
YXN0IC0gX19maXJzdCkpOwogIHJldHVybiBfX3Jlc3VsdCArIChfX2xhc3QgLSBfX2ZpcnN0KTsK
fQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfRm9y
d2FyZEl0ZXI+CnBhaXI8X0lucHV0SXRlciwgX0ZvcndhcmRJdGVyPgpfX3VuaW5pdGlhbGl6ZWRf
Y29weV9uKF9JbnB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXRfaXRlcmF0b3JfdGFnKQp7CiAgX0ZvcndhcmRJdGVyIF9fY3VyID0gX19yZXN1bHQ7CiAgdHJ5
ICB7CiAgICBmb3IgKCA7IF9fY291bnQgPiAwIDsgLS1fX2NvdW50LCArK19fZmlyc3QsICsrX19j
dXIpIAogICAgICBjb25zdHJ1Y3QoJipfX2N1ciwgKl9fZmlyc3QpOwogICAgcmV0dXJuIHBhaXI8
X0lucHV0SXRlciwgX0ZvcndhcmRJdGVyPihfX2ZpcnN0LCBfX2N1cik7CiAgfQogIGNhdGNoKC4u
LikgeyAgZGVzdHJveShfX3Jlc3VsdCwgX19jdXIpIDsgdGhyb3c7IH0gOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0ZXI+
CmlubGluZSBwYWlyPF9SYW5kb21BY2Nlc3NJdGVyLCBfRm9yd2FyZEl0ZXI+Cl9fdW5pbml0aWFs
aXplZF9jb3B5X24oX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpIHsKICBfUmFuZG9tQWNjZXNzSXRl
ciBfX2xhc3QgPSBfX2ZpcnN0ICsgX19jb3VudDsKICByZXR1cm4gcGFpcjxfUmFuZG9tQWNjZXNz
SXRlciwgX0ZvcndhcmRJdGVyPigKICAgICAgICAgICAgICAgICBfX2xhc3QsCiAgICAgICAgICAg
ICAgICAgdW5pbml0aWFsaXplZF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0
ZXI+CmlubGluZSBwYWlyPF9JbnB1dEl0ZXIsIF9Gb3J3YXJkSXRlcj4KX191bmluaXRpYWxpemVk
X2NvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCkgewogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRf
Y29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5l
IHBhaXI8X0lucHV0SXRlciwgX0ZvcndhcmRJdGVyPgp1bmluaXRpYWxpemVkX2NvcHlfbihfSW5w
dXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsCiAgICAgICAgICAgICAgICAgICAgIF9Gb3J3
YXJkSXRlciBfX3Jlc3VsdCkgewogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9fZmly
c3QsIF9fY291bnQsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
aXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3QgKSApOwp9CgogCiAKdGVtcGxhdGUgPGNsYXNzIF9G
b3J3YXJkSXRlciwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZApfX3VuaW5pdGlhbGl6ZWRfZmlsbF9h
dXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gsIF9fdHJ1ZV90eXBlKQp7CiAgZmlsbChfX2Zp
cnN0LCBfX2xhc3QsIF9feCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNz
IF9UcD4Kdm9pZApfX3VuaW5pdGlhbGl6ZWRfZmlsbF9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3Qs
IF9Gb3J3YXJkSXRlciBfX2xhc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1Rw
JiBfX3gsIF9fZmFsc2VfdHlwZSkKewogIF9Gb3J3YXJkSXRlciBfX2N1ciA9IF9fZmlyc3Q7CiAg
dHJ5ICB7CiAgICBmb3IgKCA7IF9fY3VyICE9IF9fbGFzdDsgKytfX2N1cikKICAgICAgY29uc3Ry
dWN0KCYqX19jdXIsIF9feCk7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShfX2ZpcnN0LCBf
X2N1cikgOyB0aHJvdzsgfSA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNz
IF9UcCwgY2xhc3MgX1RwMT4KaW5saW5lIHZvaWQgX191bmluaXRpYWxpemVkX2ZpbGwoX0Zvcndh
cmRJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2Fy
ZEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9feCwgX1RwMSopCnsKICB0eXBlZGVmIHR5cGVuYW1l
IF9fdHlwZV90cmFpdHM8X1RwMT46OmlzX1BPRF90eXBlIF9Jc19QT0Q7CiAgX191bmluaXRpYWxp
emVkX2ZpbGxfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX194LCBfSXNfUE9EKCkpOwogICAgICAgICAg
ICAgICAgICAgCn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5s
aW5lIHZvaWQgdW5pbml0aWFsaXplZF9maWxsKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fbGFzdCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCkKewogIF9fdW5pbml0aWFsaXplZF9m
aWxsKF9fZmlyc3QsIF9fbGFzdCwgX194LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgog
CiAKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9UcD4K
aW5saW5lIF9Gb3J3YXJkSXRlcgpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2F1eChfRm9yd2FyZEl0
ZXIgX19maXJzdCwgX1NpemUgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBf
VHAmIF9feCwgX190cnVlX3R5cGUpCnsKICByZXR1cm4gZmlsbF9uKF9fZmlyc3QsIF9fbiwgX194
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9U
cD4KX0ZvcndhcmRJdGVyCl9fdW5pbml0aWFsaXplZF9maWxsX25fYXV4KF9Gb3J3YXJkSXRlciBf
X2ZpcnN0LCBfU2l6ZSBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYg
X194LCBfX2ZhbHNlX3R5cGUpCnsKICBfRm9yd2FyZEl0ZXIgX19jdXIgPSBfX2ZpcnN0OwogIHRy
eSAgewogICAgZm9yICggOyBfX24gPiAwOyAtLV9fbiwgKytfX2N1cikKICAgICAgY29uc3RydWN0
KCYqX19jdXIsIF9feCk7CiAgICByZXR1cm4gX19jdXI7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVz
dHJveShfX2ZpcnN0LCBfX2N1cikgOyB0aHJvdzsgfSA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9y
d2FyZEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfVHAsIGNsYXNzIF9UcDE+CmlubGluZSBfRm9y
d2FyZEl0ZXIgCl9fdW5pbml0aWFsaXplZF9maWxsX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9T
aXplIF9fbiwgY29uc3QgX1RwJiBfX3gsIF9UcDEqKQp7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5
cGVfdHJhaXRzPF9UcDE+Ojppc19QT0RfdHlwZSBfSXNfUE9EOwogIHJldHVybiBfX3VuaW5pdGlh
bGl6ZWRfZmlsbF9uX2F1eChfX2ZpcnN0LCBfX24sIF9feCwgX0lzX1BPRCgpKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9UcD4KaW5saW5lIF9G
b3J3YXJkSXRlciAKdW5pbml0aWFsaXplZF9maWxsX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9T
aXplIF9fbiwgY29uc3QgX1RwJiBfX3gpCnsKICByZXR1cm4gX191bmluaXRpYWxpemVkX2ZpbGxf
bihfX2ZpcnN0LCBfX24sIF9feCwgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKIAogCgog
CiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBj
bGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBfRm9yd2FyZEl0ZXIKX191bmluaXRpYWxpemVkX2Nv
cHlfY29weShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19s
YXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQpCnsK
ICBfRm9yd2FyZEl0ZXIgX19taWQgPSB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdDEsIF9fbGFz
dDEsIF9fcmVzdWx0KTsKICB0cnkgIHsKICAgIHJldHVybiB1bmluaXRpYWxpemVkX2NvcHkoX19m
aXJzdDIsIF9fbGFzdDIsIF9fbWlkKTsKICB9CiAgY2F0Y2goLi4uKSB7ICBkZXN0cm95KF9fcmVz
dWx0LCBfX21pZCkgOyB0aHJvdzsgfSA7Cn0KCiAKIAogCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2Fy
ZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0lucHV0SXRlcj4KaW5saW5lIF9Gb3J3YXJkSXRlciAK
X191bmluaXRpYWxpemVkX2ZpbGxfY29weShfRm9yd2FyZEl0ZXIgX19yZXN1bHQsIF9Gb3J3YXJk
SXRlciBfX21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19s
YXN0KQp7CiAgdW5pbml0aWFsaXplZF9maWxsKF9fcmVzdWx0LCBfX21pZCwgX194KTsKICB0cnkg
IHsKICAgIHJldHVybiB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX21pZCk7
CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShfX3Jlc3VsdCwgX19taWQpIDsgdGhyb3c7IH0g
Owp9CgogCiAKIAp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX0ZvcndhcmRJdGVy
LCBjbGFzcyBfVHA+CmlubGluZSB2b2lkCl9fdW5pbml0aWFsaXplZF9jb3B5X2ZpbGwoX0lucHV0
SXRlciBfX2ZpcnN0MSwgX0lucHV0SXRlciBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIF9Gb3J3YXJkSXRlciBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyIF9fbGFzdDIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gpCnsKICBfRm9yd2FyZEl0ZXIgX19taWQy
ID0gdW5pbml0aWFsaXplZF9jb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0Mik7CiAgdHJ5
ICB7CiAgICB1bmluaXRpYWxpemVkX2ZpbGwoX19taWQyLCBfX2xhc3QyLCBfX3gpOwogIH0KICBj
YXRjaCguLi4pIHsgIGRlc3Ryb3koX19maXJzdDIsIF9fbWlkMikgOyB0aHJvdzsgfSA7Cn0KCiAK
CgoKIAogCiAKIyAzMiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9hbGdvcml0aG0iIDIgMwoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9n
Y2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8u
Li9pbmNsdWRlL2crKy0zL3N0bF90ZW1wYnVmLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgojZGVmaW5lIF9fU0dJX1NUTF9JTlRFUk5BTF9URU1QQlVGX0gKCgogCgp0ZW1w
bGF0ZSA8Y2xhc3MgX1RwPgpwYWlyPF9UcCosIHB0cmRpZmZfdD4gCl9fZ2V0X3RlbXBvcmFyeV9i
dWZmZXIocHRyZGlmZl90IF9fbGVuLCBfVHAqKQp7CiAgaWYgKF9fbGVuID4gcHRyZGlmZl90KDIx
NDc0ODM2NDcgICAvIHNpemVvZihfVHApKSkKICAgIF9fbGVuID0gMjE0NzQ4MzY0NyAgIC8gc2l6
ZW9mKF9UcCk7CgogIHdoaWxlIChfX2xlbiA+IDApIHsKICAgIF9UcCogX190bXAgPSAoX1RwKikg
bWFsbG9jKChzaXplX3QpX19sZW4gKiBzaXplb2YoX1RwKSk7CiAgICBpZiAoX190bXAgIT0gMCkK
ICAgICAgcmV0dXJuIHBhaXI8X1RwKiwgcHRyZGlmZl90PihfX3RtcCwgX19sZW4pOwogICAgX19s
ZW4gLz0gMjsKICB9CgogIHJldHVybiBwYWlyPF9UcCosIHB0cmRpZmZfdD4oKF9UcCopMCwgMCk7
Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIHBhaXI8X1RwKiwgcHRyZGlmZl90PiBn
ZXRfdGVtcG9yYXJ5X2J1ZmZlcihwdHJkaWZmX3QgX19sZW4pIHsKICByZXR1cm4gX19nZXRfdGVt
cG9yYXJ5X2J1ZmZlcihfX2xlbiwgKF9UcCopIDApOwp9CgoKCiAKIAogCiAKIAp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwPgppbmxpbmUgcGFpcjxfVHAqLCBwdHJkaWZmX3Q+IGdldF90ZW1wb3JhcnlfYnVm
ZmVyKHB0cmRpZmZfdCBfX2xlbiwgX1RwKikgewogIHJldHVybiBfX2dldF90ZW1wb3JhcnlfYnVm
ZmVyKF9fbGVuLCAoX1RwKikgMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnZvaWQgcmV0dXJu
X3RlbXBvcmFyeV9idWZmZXIoX1RwKiBfX3ApIHsKICBmcmVlKF9fcCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfRm9yd2FyZEl0ZXJhdG9yLCBjbGFzcyBfVHA+CmNsYXNzIF9UZW1wb3JhcnlfYnVmZmVy
IHsKcHJpdmF0ZToKICBwdHJkaWZmX3QgIF9NX29yaWdpbmFsX2xlbjsKICBwdHJkaWZmX3QgIF9N
X2xlbjsKICBfVHAqICAgICAgIF9NX2J1ZmZlcjsKCiAgdm9pZCBfTV9hbGxvY2F0ZV9idWZmZXIo
KSB7CiAgICBfTV9vcmlnaW5hbF9sZW4gPSBfTV9sZW47CiAgICBfTV9idWZmZXIgPSAwOwoKICAg
IGlmIChfTV9sZW4gPiAocHRyZGlmZl90KSgyMTQ3NDgzNjQ3ICAgLyBzaXplb2YoX1RwKSkpCiAg
ICAgIF9NX2xlbiA9IDIxNDc0ODM2NDcgICAvIHNpemVvZihfVHApOwoKICAgIHdoaWxlIChfTV9s
ZW4gPiAwKSB7CiAgICAgIF9NX2J1ZmZlciA9IChfVHAqKSBtYWxsb2MoX01fbGVuICogc2l6ZW9m
KF9UcCkpOwogICAgICBpZiAoX01fYnVmZmVyKQogICAgICAgIGJyZWFrOwogICAgICBfTV9sZW4g
Lz0gMjsKICAgIH0KICB9CgogIHZvaWQgX01faW5pdGlhbGl6ZV9idWZmZXIoY29uc3QgX1RwJiwg
X190cnVlX3R5cGUpIHt9CiAgdm9pZCBfTV9pbml0aWFsaXplX2J1ZmZlcihjb25zdCBfVHAmIHZh
bCwgX19mYWxzZV90eXBlKSB7CiAgICB1bmluaXRpYWxpemVkX2ZpbGxfbihfTV9idWZmZXIsIF9N
X2xlbiwgdmFsKTsKICB9CgpwdWJsaWM6CiAgcHRyZGlmZl90IHNpemUoKSBjb25zdCB7IHJldHVy
biBfTV9sZW47IH0KICBwdHJkaWZmX3QgcmVxdWVzdGVkX3NpemUoKSBjb25zdCB7IHJldHVybiBf
TV9vcmlnaW5hbF9sZW47IH0KICBfVHAqIGJlZ2luKCkgeyByZXR1cm4gX01fYnVmZmVyOyB9CiAg
X1RwKiBlbmQoKSB7IHJldHVybiBfTV9idWZmZXIgKyBfTV9sZW47IH0KCiAgX1RlbXBvcmFyeV9i
dWZmZXIoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCkg
ewogICAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPF9UcD46Omhhc190cml2aWFsX2Rl
ZmF1bHRfY29uc3RydWN0b3IKICAgICAgICAgICAgX1RyaXZpYWw7CiAgICB0cnkgIHsKICAgICAg
X01fbGVuID0gMDsKICAgICAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfTV9sZW4pOwogICAg
ICBfTV9hbGxvY2F0ZV9idWZmZXIoKTsKICAgICAgaWYgKF9NX2xlbiA+IDApCiAgICAgICAgX01f
aW5pdGlhbGl6ZV9idWZmZXIoKl9fZmlyc3QsIF9Ucml2aWFsKCkpOwogICAgfQogICAgY2F0Y2go
Li4uKSB7ICBmcmVlKF9NX2J1ZmZlcik7IF9NX2J1ZmZlciA9IDA7IF9NX2xlbiA9IDAgOyB0aHJv
dzsgfSA7CiAgfQogCiAgfl9UZW1wb3JhcnlfYnVmZmVyKCkgeyAgCiAgICBkZXN0cm95KF9NX2J1
ZmZlciwgX01fYnVmZmVyICsgX01fbGVuKTsKICAgIGZyZWUoX01fYnVmZmVyKTsKICB9Cgpwcml2
YXRlOgogICAKICBfVGVtcG9yYXJ5X2J1ZmZlcihjb25zdCBfVGVtcG9yYXJ5X2J1ZmZlciYpIHt9
CiAgdm9pZCBvcGVyYXRvcj0oY29uc3QgX1RlbXBvcmFyeV9idWZmZXImKSB7fQp9OwoKIAoKdGVt
cGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3IsIAogICAgICAgICAgY2xhc3MgX1RwIAoKICAg
ICAgICAgICAgICAgICAgICA9IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJh
dG9yPjo6dmFsdWVfdHlwZQoKICAgICAgICAgPgpzdHJ1Y3QgdGVtcG9yYXJ5X2J1ZmZlciA6IHB1
YmxpYyBfVGVtcG9yYXJ5X2J1ZmZlcjxfRm9yd2FyZEl0ZXJhdG9yLCBfVHA+CnsKICB0ZW1wb3Jh
cnlfYnVmZmVyKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xh
c3QpCiAgICA6IF9UZW1wb3JhcnlfYnVmZmVyPF9Gb3J3YXJkSXRlcmF0b3IsIF9UcD4oX19maXJz
dCwgX19sYXN0KSB7fQogIH50ZW1wb3JhcnlfYnVmZmVyKCkge30KfTsKICAgIAogCgoKCiAKIAog
CiMgMzMgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxn
b3JpdGhtIiAyIDMKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUu
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdGxfYWxnby5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
I2RlZmluZSBfX1NHSV9TVExfSU5URVJOQUxfQUxHT19ICgojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45
NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2hlYXAuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKI2RlZmluZSBfX1NHSV9TVExfSU5URVJOQUxfSEVBUF9ICgog
CgoKCgoKIAoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0Rp
c3RhbmNlLCBjbGFzcyBfVHA+CnZvaWQgCl9fcHVzaF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LAogICAgICAgICAgICBfRGlzdGFuY2UgX19ob2xlSW5kZXgsIF9EaXN0YW5jZSBf
X3RvcEluZGV4LCBfVHAgX192YWx1ZSkKewogIF9EaXN0YW5jZSBfX3BhcmVudCA9IChfX2hvbGVJ
bmRleCAtIDEpIC8gMjsKICB3aGlsZSAoX19ob2xlSW5kZXggPiBfX3RvcEluZGV4ICYmICooX19m
aXJzdCArIF9fcGFyZW50KSA8IF9fdmFsdWUpIHsKICAgICooX19maXJzdCArIF9faG9sZUluZGV4
KSA9ICooX19maXJzdCArIF9fcGFyZW50KTsKICAgIF9faG9sZUluZGV4ID0gX19wYXJlbnQ7CiAg
ICBfX3BhcmVudCA9IChfX2hvbGVJbmRleCAtIDEpIC8gMjsKICB9ICAgIAogICooX19maXJzdCAr
IF9faG9sZUluZGV4KSA9IF9fdmFsdWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZSwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZCAKX19wdXNo
X2hlYXBfYXV4KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX0Rpc3RhbmNlKiwgX1RwKikKewogIF9fcHVz
aF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZSgoX19sYXN0IC0gX19maXJzdCkgLSAxKSwgX0Rpc3Rh
bmNlKDApLCAKICAgICAgICAgICAgICBfVHAoKihfX2xhc3QgLSAxKSkpOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgppbmxpbmUgdm9pZCAKcHVzaF9oZWFwKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQp7
CiAgX19wdXNoX2hlYXBfYXV4KF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgX19k
aXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgLCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2UsIGNs
YXNzIF9UcCwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZT4Kdm9pZApfX3B1c2hfaGVhcChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rpc3RhbmNlIF9faG9sZUluZGV4LAogICAgICAg
ICAgICBfRGlzdGFuY2UgX190b3BJbmRleCwgX1RwIF9fdmFsdWUsIF9Db21wYXJlIF9fY29tcCkK
ewogIF9EaXN0YW5jZSBfX3BhcmVudCA9IChfX2hvbGVJbmRleCAtIDEpIC8gMjsKICB3aGlsZSAo
X19ob2xlSW5kZXggPiBfX3RvcEluZGV4ICYmIF9fY29tcCgqKF9fZmlyc3QgKyBfX3BhcmVudCks
IF9fdmFsdWUpKSB7CiAgICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyBf
X3BhcmVudCk7CiAgICBfX2hvbGVJbmRleCA9IF9fcGFyZW50OwogICAgX19wYXJlbnQgPSAoX19o
b2xlSW5kZXggLSAxKSAvIDI7CiAgfQogICooX19maXJzdCArIF9faG9sZUluZGV4KSA9IF9fdmFs
dWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9Db21w
YXJlLAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlLCBjbGFzcyBfVHA+CmlubGluZSB2b2lkIApf
X3B1c2hfaGVhcF9hdXgoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgICAg
ICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXAsCiAgICAg
ICAgICAgICAgICBfRGlzdGFuY2UqLCBfVHAqKSAKewogIF9fcHVzaF9oZWFwKF9fZmlyc3QsIF9E
aXN0YW5jZSgoX19sYXN0IC0gX19maXJzdCkgLSAxKSwgX0Rpc3RhbmNlKDApLCAKICAgICAgICAg
ICAgICBfVHAoKihfX2xhc3QgLSAxKSksIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCAKcHVzaF9oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LAogICAgICAgICAgX0NvbXBhcmUgX19jb21wKQp7CiAgX19wdXNoX2hlYXBfYXV4KF9fZmly
c3QsIF9fbGFzdCwgX19jb21wLAogICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9f
Zmlyc3QgKSAsIF9fdmFsdWVfdHlwZSggX19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZSwgY2xhc3MgX1RwPgp2b2lkIApf
X2FkanVzdF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19o
b2xlSW5kZXgsCiAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuLCBfVHAgX192YWx1ZSkKewog
IF9EaXN0YW5jZSBfX3RvcEluZGV4ID0gX19ob2xlSW5kZXg7CiAgX0Rpc3RhbmNlIF9fc2Vjb25k
Q2hpbGQgPSAyICogX19ob2xlSW5kZXggKyAyOwogIHdoaWxlIChfX3NlY29uZENoaWxkIDwgX19s
ZW4pIHsKICAgIGlmICgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKSA8ICooX19maXJzdCArIChf
X3NlY29uZENoaWxkIC0gMSkpKQogICAgICBfX3NlY29uZENoaWxkLS07CiAgICAqKF9fZmlyc3Qg
KyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKTsKICAgIF9faG9sZUlu
ZGV4ID0gX19zZWNvbmRDaGlsZDsKICAgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hp
bGQgKyAxKTsKICB9CiAgaWYgKF9fc2Vjb25kQ2hpbGQgPT0gX19sZW4pIHsKICAgICooX19maXJz
dCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkpOwogICAg
X19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkIC0gMTsKICB9CiAgX19wdXNoX2hlYXAoX19maXJz
dCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgsIF9fdmFsdWUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5l
IHZvaWQgCl9fcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
cmVzdWx0LCBfVHAgX192YWx1ZSwgX0Rpc3RhbmNlKikKewogICpfX3Jlc3VsdCA9ICpfX2ZpcnN0
OwogIF9fYWRqdXN0X2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlKDApLCBfRGlzdGFuY2UoX19sYXN0
IC0gX19maXJzdCksIF9fdmFsdWUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yLCBjbGFzcyBfVHA+CmlubGluZSB2b2lkIApfX3BvcF9oZWFwX2F1eChfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAg
ICAgICAgICAgX1RwKikKewogIF9fcG9wX2hlYXAoX19maXJzdCwgX19sYXN0IC0gMSwgX19sYXN0
IC0gMSwgCiAgICAgICAgICAgICBfVHAoKihfX2xhc3QgLSAxKSksIF9fZGlzdGFuY2VfdHlwZSgg
X19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Cmlu
bGluZSB2b2lkIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCAKICAgICAg
ICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKewogIF9fcG9wX2hl
YXBfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlLAogICAg
ICAgICAgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZT4Kdm9pZApfX2FkanVzdF9oZWFwKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19ob2xlSW5kZXgsCiAgICAgICAg
ICAgICAgX0Rpc3RhbmNlIF9fbGVuLCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wKQp7CiAg
X0Rpc3RhbmNlIF9fdG9wSW5kZXggPSBfX2hvbGVJbmRleDsKICBfRGlzdGFuY2UgX19zZWNvbmRD
aGlsZCA9IDIgKiBfX2hvbGVJbmRleCArIDI7CiAgd2hpbGUgKF9fc2Vjb25kQ2hpbGQgPCBfX2xl
bikgewogICAgaWYgKF9fY29tcCgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKSwgKihfX2ZpcnN0
ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSkpKQogICAgICBfX3NlY29uZENoaWxkLS07CiAgICAqKF9f
Zmlyc3QgKyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKTsKICAgIF9f
aG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsKICAgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vj
b25kQ2hpbGQgKyAxKTsKICB9CiAgaWYgKF9fc2Vjb25kQ2hpbGQgPT0gX19sZW4pIHsKICAgICoo
X19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkp
OwogICAgX19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkIC0gMTsKICB9CiAgX19wdXNoX2hlYXAo
X19maXJzdCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgsIF9fdmFsdWUsIF9fY29tcCk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9UcCwgY2xhc3MgX0Nv
bXBhcmUsIAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCAKX19wb3BfaGVh
cChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
bGFzdCwKICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHQsIF9UcCBfX3Zh
bHVlLCBfQ29tcGFyZSBfX2NvbXAsCiAgICAgICAgICAgX0Rpc3RhbmNlKikKewogICpfX3Jlc3Vs
dCA9ICpfX2ZpcnN0OwogIF9fYWRqdXN0X2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlKDApLCBfRGlz
dGFuY2UoX19sYXN0IC0gX19maXJzdCksIAogICAgICAgICAgICAgICAgX192YWx1ZSwgX19jb21w
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX1RwLCBj
bGFzcyBfQ29tcGFyZT4KaW5saW5lIHZvaWQgCl9fcG9wX2hlYXBfYXV4KF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LCBfVHAqLCBfQ29tcGFyZSBfX2NvbXApCnsKICBfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbGFz
dCAtIDEsIF9fbGFzdCAtIDEsIF9UcCgqKF9fbGFzdCAtIDEpKSwgX19jb21wLAogICAgICAgICAg
ICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSB2b2lkIApwb3BfaGVhcChf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQp7CiAgICBfX3BvcF9oZWFwX2F1eChfX2ZpcnN0
LCBfX2xhc3QsIF9fdmFsdWVfdHlwZSggX19maXJzdCApICwgX19jb21wKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+
CnZvaWQgCl9fbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICAg
ICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfVHAqLCBfRGlzdGFuY2UqKQp7CiAg
aWYgKF9fbGFzdCAtIF9fZmlyc3QgPCAyKSByZXR1cm47CiAgX0Rpc3RhbmNlIF9fbGVuID0gX19s
YXN0IC0gX19maXJzdDsKICBfRGlzdGFuY2UgX19wYXJlbnQgPSAoX19sZW4gLSAyKS8yOwogICAg
CiAgd2hpbGUgKHRydWUpIHsKICAgIF9fYWRqdXN0X2hlYXAoX19maXJzdCwgX19wYXJlbnQsIF9f
bGVuLCBfVHAoKihfX2ZpcnN0ICsgX19wYXJlbnQpKSk7CiAgICBpZiAoX19wYXJlbnQgPT0gMCkg
cmV0dXJuOwogICAgX19wYXJlbnQtLTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3I+CmlubGluZSB2b2lkIAptYWtlX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
IF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpCnsKICBfX21ha2VfaGVhcChf
X2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgICAgICAgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgLCBf
X2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yLCBjbGFzcyBfQ29tcGFyZSwKICAgICAgICAgIGNsYXNzIF9UcCwgY2xhc3Mg
X0Rpc3RhbmNlPgp2b2lkCl9fbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0
LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICBfQ29tcGFyZSBfX2Nv
bXAsIF9UcCosIF9EaXN0YW5jZSopCnsKICBpZiAoX19sYXN0IC0gX19maXJzdCA8IDIpIHJldHVy
bjsKICBfRGlzdGFuY2UgX19sZW4gPSBfX2xhc3QgLSBfX2ZpcnN0OwogIF9EaXN0YW5jZSBfX3Bh
cmVudCA9IChfX2xlbiAtIDIpLzI7CiAgICAKICB3aGlsZSAodHJ1ZSkgewogICAgX19hZGp1c3Rf
aGVhcChfX2ZpcnN0LCBfX3BhcmVudCwgX19sZW4sIF9UcCgqKF9fZmlyc3QgKyBfX3BhcmVudCkp
LAogICAgICAgICAgICAgICAgICBfX2NvbXApOwogICAgaWYgKF9fcGFyZW50ID09IDApIHJldHVy
bjsKICAgIF9fcGFyZW50LS07CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5lIHZvaWQgCm1ha2VfaGVhcChfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19maXJzdCwgCiAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LCBfQ29tcGFyZSBfX2NvbXApCnsKICBfX21ha2VfaGVhcChfX2ZpcnN0LCBfX2xhc3QsIF9f
Y29tcCwKICAgICAgICAgICAgICBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAsIF9fZGlzdGFuY2Vf
dHlwZSggX19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+CnZvaWQgc29ydF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9t
QWNjZXNzSXRlcmF0b3IgX19sYXN0KQp7CiAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAxKQog
ICAgcG9wX2hlYXAoX19maXJzdCwgX19sYXN0LS0pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfQ29tcGFyZT4Kdm9pZCAKc29ydF9oZWFwKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
bGFzdCwgX0NvbXBhcmUgX19jb21wKQp7CiAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAxKQog
ICAgcG9wX2hlYXAoX19maXJzdCwgX19sYXN0LS0sIF9fY29tcCk7Cn0KCgoKCgogCgoKCiAKIAog
CiMgMzQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Rs
X2FsZ28uaCIgMiAzCgoKIAoKCgoKCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBjb25z
dCBfVHAmIF9fbWVkaWFuKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYiwgY29uc3QgX1Rw
JiBfX2MpIHsKICBpZiAoX19hIDwgX19iKQogICAgaWYgKF9fYiA8IF9fYykKICAgICAgcmV0dXJu
IF9fYjsKICAgIGVsc2UgaWYgKF9fYSA8IF9fYykKICAgICAgcmV0dXJuIF9fYzsKICAgIGVsc2UK
ICAgICAgcmV0dXJuIF9fYTsKICBlbHNlIGlmIChfX2EgPCBfX2MpCiAgICByZXR1cm4gX19hOwog
IGVsc2UgaWYgKF9fYiA8IF9fYykKICAgIHJldHVybiBfX2M7CiAgZWxzZQogICAgcmV0dXJuIF9f
YjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSBjb25zdCBf
VHAmCl9fbWVkaWFuKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYiwgY29uc3QgX1RwJiBf
X2MsIF9Db21wYXJlIF9fY29tcCkgewogIGlmIChfX2NvbXAoX19hLCBfX2IpKQogICAgaWYgKF9f
Y29tcChfX2IsIF9fYykpCiAgICAgIHJldHVybiBfX2I7CiAgICBlbHNlIGlmIChfX2NvbXAoX19h
LCBfX2MpKQogICAgICByZXR1cm4gX19jOwogICAgZWxzZQogICAgICByZXR1cm4gX19hOwogIGVs
c2UgaWYgKF9fY29tcChfX2EsIF9fYykpCiAgICByZXR1cm4gX19hOwogIGVsc2UgaWYgKF9fY29t
cChfX2IsIF9fYykpCiAgICByZXR1cm4gX19jOwogIGVsc2UKICAgIHJldHVybiBfX2I7Cn0KCiAK
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9GdW5jdGlvbj4KX0Z1bmN0aW9uIGZv
cl9lYWNoKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsIF9GdW5jdGlvbiBf
X2YpIHsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgICBfX2YoKl9f
Zmlyc3QpOwogIHJldHVybiBfX2Y7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBj
bGFzcyBfVHA+CmlubGluZSBfSW5wdXRJdGVyIGZpbmQoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5w
dXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9fdmFsLAog
ICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3RhZykKewogIHdoaWxlIChfX2Zp
cnN0ICE9IF9fbGFzdCAmJiAqX19maXJzdCAhPSBfX3ZhbCkKICAgICsrX19maXJzdDsKICByZXR1
cm4gX19maXJzdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9QcmVkaWNh
dGU+CmlubGluZSBfSW5wdXRJdGVyIGZpbmRfaWYoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpCnsKICB3aGlsZSAo
X19maXJzdCAhPSBfX2xhc3QgJiYgIV9fcHJlZCgqX19maXJzdCkpCiAgICArK19fZmlyc3Q7CiAg
cmV0dXJuIF9fZmlyc3Q7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBj
bGFzcyBfVHA+Cl9SYW5kb21BY2Nlc3NJdGVyIGZpbmQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJz
dCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IF9UcCYgX192YWwsCiAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRv
cl90YWcpCnsKICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+Ojpk
aWZmZXJlbmNlX3R5cGUgX190cmlwX2NvdW50CiAgICA9IChfX2xhc3QgLSBfX2ZpcnN0KSA+PiAy
OwoKICBmb3IgKCA7IF9fdHJpcF9jb3VudCA+IDAgOyAtLV9fdHJpcF9jb3VudCkgewogICAgaWYg
KCpfX2ZpcnN0ID09IF9fdmFsKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKCiAgICBp
ZiAoKl9fZmlyc3QgPT0gX192YWwpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwoKICAg
IGlmICgqX19maXJzdCA9PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7Cgog
ICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsK
ICB9CgogIHN3aXRjaChfX2xhc3QgLSBfX2ZpcnN0KSB7CiAgY2FzZSAzOgogICAgaWYgKCpfX2Zp
cnN0ID09IF9fdmFsKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKICBjYXNlIDI6CiAg
ICBpZiAoKl9fZmlyc3QgPT0gX192YWwpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0Owog
IGNhc2UgMToKICAgIGlmICgqX19maXJzdCA9PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7CiAgICAr
K19fZmlyc3Q7CiAgY2FzZSAwOgogIGRlZmF1bHQ6CiAgICByZXR1cm4gX19sYXN0OwogIH0KfQoK
dGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgpfUmFu
ZG9tQWNjZXNzSXRlciBmaW5kX2lmKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9f
cHJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZykKewogIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46OmRpZmZl
cmVuY2VfdHlwZSBfX3RyaXBfY291bnQKICAgID0gKF9fbGFzdCAtIF9fZmlyc3QpID4+IDI7Cgog
IGZvciAoIDsgX190cmlwX2NvdW50ID4gMCA7IC0tX190cmlwX2NvdW50KSB7CiAgICBpZiAoX19w
cmVkKCpfX2ZpcnN0KSkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CgogICAgaWYgKF9f
cHJlZCgqX19maXJzdCkpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwoKICAgIGlmIChf
X3ByZWQoKl9fZmlyc3QpKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKCiAgICBpZiAo
X19wcmVkKCpfX2ZpcnN0KSkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CiAgfQoKICBz
d2l0Y2goX19sYXN0IC0gX19maXJzdCkgewogIGNhc2UgMzoKICAgIGlmIChfX3ByZWQoKl9fZmly
c3QpKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKICBjYXNlIDI6CiAgICBpZiAoX19w
cmVkKCpfX2ZpcnN0KSkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CiAgY2FzZSAxOgog
ICAgaWYgKF9fcHJlZCgqX19maXJzdCkpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0Owog
IGNhc2UgMDoKICBkZWZhdWx0OgogICAgcmV0dXJuIF9fbGFzdDsKICB9Cn0KCgoKdGVtcGxhdGUg
PGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIF9JbnB1dEl0ZXIgZmluZChfSW5w
dXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IF9UcCYgX192YWwpCnsKICByZXR1cm4gZmluZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFs
LCBfX2l0ZXJhdG9yX2NhdGVnb3J5KCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXIsIGNsYXNzIF9QcmVkaWNhdGU+CmlubGluZSBfSW5wdXRJdGVyIGZpbmRfaWYoX0lu
cHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBfUHJlZGljYXRlIF9fcHJlZCkgewogIHJldHVybiBmaW5kX2lmKF9fZmlyc3QsIF9fbGFz
dCwgX19wcmVkLCBfX2l0ZXJhdG9yX2NhdGVnb3J5KCBfX2ZpcnN0ICkgKTsKfQoKIAoKdGVtcGxh
dGUgPGNsYXNzIF9Gb3J3YXJkSXRlcj4KX0ZvcndhcmRJdGVyIGFkamFjZW50X2ZpbmQoX0Zvcndh
cmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QpIHsKICBpZiAoX19maXJzdCA9PSBf
X2xhc3QpCiAgICByZXR1cm4gX19sYXN0OwogIF9Gb3J3YXJkSXRlciBfX25leHQgPSBfX2ZpcnN0
OwogIHdoaWxlKCsrX19uZXh0ICE9IF9fbGFzdCkgewogICAgaWYgKCpfX2ZpcnN0ID09ICpfX25l
eHQpCiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgX19maXJzdCA9IF9fbmV4dDsKICB9CiAgcmV0
dXJuIF9fbGFzdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0JpbmFy
eVByZWRpY2F0ZT4KX0ZvcndhcmRJdGVyIGFkamFjZW50X2ZpbmQoX0ZvcndhcmRJdGVyIF9fZmly
c3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaW5h
cnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkgewogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAg
IHJldHVybiBfX2xhc3Q7CiAgX0ZvcndhcmRJdGVyIF9fbmV4dCA9IF9fZmlyc3Q7CiAgd2hpbGUo
KytfX25leHQgIT0gX19sYXN0KSB7CiAgICBpZiAoX19iaW5hcnlfcHJlZCgqX19maXJzdCwgKl9f
bmV4dCkpCiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgX19maXJzdCA9IF9fbmV4dDsKICB9CiAg
cmV0dXJuIF9fbGFzdDsKfQoKIAogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwg
Y2xhc3MgX1RwLCBjbGFzcyBfU2l6ZT4Kdm9pZCBjb3VudChfSW5wdXRJdGVyIF9fZmlyc3QsIF9J
bnB1dEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9fdmFsdWUsCiAgICAgICAgICAgX1NpemUmIF9f
bikgewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgIGlmICgqX19m
aXJzdCA9PSBfX3ZhbHVlKQogICAgICArK19fbjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0
ZXIsIGNsYXNzIF9QcmVkaWNhdGUsIGNsYXNzIF9TaXplPgp2b2lkIGNvdW50X2lmKF9JbnB1dEl0
ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsIF9QcmVkaWNhdGUgX19wcmVkLAogICAgICAg
ICAgICAgIF9TaXplJiBfX24pIHsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmly
c3QpCiAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICAgKytfX247Cn0KCgoKdGVtcGxhdGUg
PGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9UcD4KdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J
bnB1dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUKY291bnQoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5w
dXRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbHVlKSB7CiAgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9JbnB1dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX19uID0gMDsKICBmb3IgKCA7IF9f
Zmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgICBpZiAoKl9fZmlyc3QgPT0gX192YWx1ZSkK
ICAgICAgKytfX247CiAgcmV0dXJuIF9fbjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIs
IGNsYXNzIF9QcmVkaWNhdGU+CnR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6
ZGlmZmVyZW5jZV90eXBlCmNvdW50X2lmKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBf
X2xhc3QsIF9QcmVkaWNhdGUgX19wcmVkKSB7CiAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J
bnB1dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX19uID0gMDsKICBmb3IgKCA7IF9fZmlyc3QgIT0g
X19sYXN0OyArK19fZmlyc3QpCiAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICAgKytfX247
CiAgcmV0dXJuIF9fbjsKfQoKCgoKIAoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNs
YXNzIF9Gb3J3YXJkSXRlcjI+Cl9Gb3J3YXJkSXRlcjEgc2VhcmNoKF9Gb3J3YXJkSXRlcjEgX19m
aXJzdDEsIF9Gb3J3YXJkSXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgX0Zvcndh
cmRJdGVyMiBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyMiBfX2xhc3QyKSAKewogICAKICBpZiAoX19m
aXJzdDEgPT0gX19sYXN0MSB8fCBfX2ZpcnN0MiA9PSBfX2xhc3QyKQogICAgcmV0dXJuIF9fZmly
c3QxOwoKICAgCiAgX0ZvcndhcmRJdGVyMiBfX3RtcChfX2ZpcnN0Mik7CiAgKytfX3RtcDsKICBp
ZiAoX190bXAgPT0gX19sYXN0MikKICAgIHJldHVybiBmaW5kKF9fZmlyc3QxLCBfX2xhc3QxLCAq
X19maXJzdDIpOwoKICAgCgogIF9Gb3J3YXJkSXRlcjIgX19wMSwgX19wOwoKICBfX3AxID0gX19m
aXJzdDI7ICsrX19wMTsKCiAgX0ZvcndhcmRJdGVyMSBfX2N1cnJlbnQgPSBfX2ZpcnN0MTsKCiAg
d2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEpIHsKICAgIF9fZmlyc3QxID0gZmluZChfX2ZpcnN0
MSwgX19sYXN0MSwgKl9fZmlyc3QyKTsKICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxKQogICAg
ICByZXR1cm4gX19sYXN0MTsKCiAgICBfX3AgPSBfX3AxOwogICAgX19jdXJyZW50ID0gX19maXJz
dDE7IAogICAgaWYgKCsrX19jdXJyZW50ID09IF9fbGFzdDEpCiAgICAgIHJldHVybiBfX2xhc3Qx
OwoKICAgIHdoaWxlICgqX19jdXJyZW50ID09ICpfX3ApIHsKICAgICAgaWYgKCsrX19wID09IF9f
bGFzdDIpCiAgICAgICAgcmV0dXJuIF9fZmlyc3QxOwogICAgICBpZiAoKytfX2N1cnJlbnQgPT0g
X19sYXN0MSkKICAgICAgICByZXR1cm4gX19sYXN0MTsKICAgIH0KCiAgICArK19fZmlyc3QxOwog
IH0KICByZXR1cm4gX19maXJzdDE7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIxLCBj
bGFzcyBfRm9yd2FyZEl0ZXIyLCBjbGFzcyBfQmluYXJ5UHJlZD4KX0ZvcndhcmRJdGVyMSBzZWFy
Y2goX0ZvcndhcmRJdGVyMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xhc3QxLAogICAgICAg
ICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXIyIF9fbGFz
dDIsCiAgICAgICAgICAgICAgICAgICAgIF9CaW5hcnlQcmVkICBfX3ByZWRpY2F0ZSkgCnsKICAg
CiAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEgfHwgX19maXJzdDIgPT0gX19sYXN0MikKICAgIHJl
dHVybiBfX2ZpcnN0MTsKCiAgIAogIF9Gb3J3YXJkSXRlcjIgX190bXAoX19maXJzdDIpOwogICsr
X190bXA7CiAgaWYgKF9fdG1wID09IF9fbGFzdDIpCiAgICByZXR1cm4gZmluZChfX2ZpcnN0MSwg
X19sYXN0MSwgKl9fZmlyc3QyKTsKCiAgIAoKICBfRm9yd2FyZEl0ZXIyIF9fcDEsIF9fcDsKCiAg
X19wMSA9IF9fZmlyc3QyOyArK19fcDE7CgogIF9Gb3J3YXJkSXRlcjEgX19jdXJyZW50ID0gX19m
aXJzdDE7CgogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxKSB7CiAgICB3aGlsZSAoX19maXJz
dDEgIT0gX19sYXN0MSkgewogICAgICBpZiAoX19wcmVkaWNhdGUoKl9fZmlyc3QxLCAqX19maXJz
dDIpKQogICAgICAgIGJyZWFrOwogICAgICArK19fZmlyc3QxOwogICAgfQogICAgd2hpbGUgKF9f
Zmlyc3QxICE9IF9fbGFzdDEgJiYgIV9fcHJlZGljYXRlKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkK
ICAgICAgKytfX2ZpcnN0MTsKICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxKQogICAgICByZXR1
cm4gX19sYXN0MTsKCiAgICBfX3AgPSBfX3AxOwogICAgX19jdXJyZW50ID0gX19maXJzdDE7IAog
ICAgaWYgKCsrX19jdXJyZW50ID09IF9fbGFzdDEpIHJldHVybiBfX2xhc3QxOwoKICAgIHdoaWxl
IChfX3ByZWRpY2F0ZSgqX19jdXJyZW50LCAqX19wKSkgewogICAgICBpZiAoKytfX3AgPT0gX19s
YXN0MikKICAgICAgICByZXR1cm4gX19maXJzdDE7CiAgICAgIGlmICgrK19fY3VycmVudCA9PSBf
X2xhc3QxKQogICAgICAgIHJldHVybiBfX2xhc3QxOwogICAgfQoKICAgICsrX19maXJzdDE7CiAg
fQogIHJldHVybiBfX2ZpcnN0MTsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwg
Y2xhc3MgX0ludGVnZXIsIGNsYXNzIF9UcD4KX0ZvcndhcmRJdGVyIHNlYXJjaF9uKF9Gb3J3YXJk
SXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
X0ludGVnZXIgX19jb3VudCwgY29uc3QgX1RwJiBfX3ZhbCkgewogIGlmIChfX2NvdW50IDw9IDAp
CiAgICByZXR1cm4gX19maXJzdDsKICBlbHNlIHsKICAgIF9fZmlyc3QgPSBmaW5kKF9fZmlyc3Qs
IF9fbGFzdCwgX192YWwpOwogICAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICAgIF9J
bnRlZ2VyIF9fbiA9IF9fY291bnQgLSAxOwogICAgICBfRm9yd2FyZEl0ZXIgX19pID0gX19maXJz
dDsKICAgICAgKytfX2k7CiAgICAgIHdoaWxlIChfX2kgIT0gX19sYXN0ICYmIF9fbiAhPSAwICYm
ICpfX2kgPT0gX192YWwpIHsKICAgICAgICArK19faTsKICAgICAgICAtLV9fbjsKICAgICAgfQog
ICAgICBpZiAoX19uID09IDApCiAgICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICAgIGVsc2UKICAg
ICAgICBfX2ZpcnN0ID0gZmluZChfX2ksIF9fbGFzdCwgX192YWwpOwogICAgfQogICAgcmV0dXJu
IF9fbGFzdDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9JbnRl
Z2VyLCBjbGFzcyBfVHAsIGNsYXNzIF9CaW5hcnlQcmVkPgpfRm9yd2FyZEl0ZXIgc2VhcmNoX24o
X0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAg
ICAgICAgICBfSW50ZWdlciBfX2NvdW50LCBjb25zdCBfVHAmIF9fdmFsLAogICAgICAgICAgICAg
ICAgICAgICAgX0JpbmFyeVByZWQgX19iaW5hcnlfcHJlZCkgewogIGlmIChfX2NvdW50IDw9IDAp
CiAgICByZXR1cm4gX19maXJzdDsKICBlbHNlIHsKICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFz
dCkgewogICAgICBpZiAoX19iaW5hcnlfcHJlZCgqX19maXJzdCwgX192YWwpKQogICAgICAgIGJy
ZWFrOwogICAgICArK19fZmlyc3Q7CiAgICB9CiAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3Qp
IHsKICAgICAgX0ludGVnZXIgX19uID0gX19jb3VudCAtIDE7CiAgICAgIF9Gb3J3YXJkSXRlciBf
X2kgPSBfX2ZpcnN0OwogICAgICArK19faTsKICAgICAgd2hpbGUgKF9faSAhPSBfX2xhc3QgJiYg
X19uICE9IDAgJiYgX19iaW5hcnlfcHJlZCgqX19pLCBfX3ZhbCkpIHsKICAgICAgICArK19faTsK
ICAgICAgICAtLV9fbjsKICAgICAgfQogICAgICBpZiAoX19uID09IDApCiAgICAgICAgcmV0dXJu
IF9fZmlyc3Q7CiAgICAgIGVsc2UgewogICAgICAgIHdoaWxlIChfX2kgIT0gX19sYXN0KSB7CiAg
ICAgICAgICBpZiAoX19iaW5hcnlfcHJlZCgqX19pLCBfX3ZhbCkpCiAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgKytfX2k7CiAgICAgICAgfQogICAgICAgIF9fZmlyc3QgPSBfX2k7CiAgICAg
IH0KICAgIH0KICAgIHJldHVybiBfX2xhc3Q7CiAgfQp9IAoKIAoKdGVtcGxhdGUgPGNsYXNzIF9G
b3J3YXJkSXRlcjEsIGNsYXNzIF9Gb3J3YXJkSXRlcjI+Cl9Gb3J3YXJkSXRlcjIgc3dhcF9yYW5n
ZXMoX0ZvcndhcmRJdGVyMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xhc3QxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlcjIgX19maXJzdDIpIHsKICBmb3IgKCA7IF9f
Zmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICsrX19maXJzdDIpCiAgICBpdGVyX3N3YXAo
X19maXJzdDEsIF9fZmlyc3QyKTsKICByZXR1cm4gX19maXJzdDI7Cn0KCiAKCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX1VuYXJ5T3BlcmF0aW9u
PgpfT3V0cHV0SXRlciB0cmFuc2Zvcm0oX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfVW5hcnlP
cGVyYXRpb24gX19vcGVyKSB7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0
LCArK19fcmVzdWx0KQogICAgKl9fcmVzdWx0ID0gX19vcGVyKCpfX2ZpcnN0KTsKICByZXR1cm4g
X19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRl
cjIsIGNsYXNzIF9PdXRwdXRJdGVyLAogICAgICAgICAgY2xhc3MgX0JpbmFyeU9wZXJhdGlvbj4K
X091dHB1dEl0ZXIgdHJhbnNmb3JtKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBf
X2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9PdXRw
dXRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgX0JpbmFyeU9wZXJhdGlvbiBf
X2JpbmFyeV9vcCkgewogIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwg
KytfX2ZpcnN0MiwgKytfX3Jlc3VsdCkKICAgICpfX3Jlc3VsdCA9IF9fYmluYXJ5X29wKCpfX2Zp
cnN0MSwgKl9fZmlyc3QyKTsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCiAKCnRlbXBsYXRlIDxjbGFz
cyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4Kdm9pZCByZXBsYWNlKF9Gb3J3YXJkSXRlciBfX2Zp
cnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgY29uc3QgX1RwJiBfX29sZF92
YWx1ZSwgY29uc3QgX1RwJiBfX25ld192YWx1ZSkgewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xh
c3Q7ICsrX19maXJzdCkKICAgIGlmICgqX19maXJzdCA9PSBfX29sZF92YWx1ZSkKICAgICAgKl9f
Zmlyc3QgPSBfX25ld192YWx1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xh
c3MgX1ByZWRpY2F0ZSwgY2xhc3MgX1RwPgp2b2lkIHJlcGxhY2VfaWYoX0ZvcndhcmRJdGVyIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9f
cHJlZCwgY29uc3QgX1RwJiBfX25ld192YWx1ZSkgewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xh
c3Q7ICsrX19maXJzdCkKICAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKQogICAgICAqX19maXJzdCA9
IF9fbmV3X3ZhbHVlOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1
dEl0ZXIsIGNsYXNzIF9UcD4KX091dHB1dEl0ZXIgcmVwbGFjZV9jb3B5KF9JbnB1dEl0ZXIgX19m
aXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0
SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX19vbGRf
dmFsdWUsIGNvbnN0IF9UcCYgX19uZXdfdmFsdWUpIHsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19s
YXN0OyArK19fZmlyc3QsICsrX19yZXN1bHQpCiAgICAqX19yZXN1bHQgPSAqX19maXJzdCA9PSBf
X29sZF92YWx1ZSA/IF9fbmV3X3ZhbHVlIDogKl9fZmlyc3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfUHJl
ZGljYXRlLCBjbGFzcyBfVHA+Cl9PdXRwdXRJdGVyIHJlcGxhY2VfY29weV9pZihJdGVyYXRvciBf
X2ZpcnN0LCBJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0
cHV0SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QcmVkaWNhdGUg
X19wcmVkLCBjb25zdCBfVHAmIF9fbmV3X3ZhbHVlKSB7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9f
bGFzdDsgKytfX2ZpcnN0LCArK19fcmVzdWx0KQogICAgKl9fcmVzdWx0ID0gX19wcmVkKCpfX2Zp
cnN0KSA/IF9fbmV3X3ZhbHVlIDogKl9fZmlyc3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgogCgp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfR2VuZXJhdG9yPgp2b2lkIGdlbmVy
YXRlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LCBfR2VuZXJhdG9y
IF9fZ2VuKSB7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgKl9f
Zmlyc3QgPSBfX2dlbigpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9T
aXplLCBjbGFzcyBfR2VuZXJhdG9yPgpfT3V0cHV0SXRlciBnZW5lcmF0ZV9uKF9PdXRwdXRJdGVy
IF9fZmlyc3QsIF9TaXplIF9fbiwgX0dlbmVyYXRvciBfX2dlbikgewogIGZvciAoIDsgX19uID4g
MDsgLS1fX24sICsrX19maXJzdCkKICAgICpfX2ZpcnN0ID0gX19nZW4oKTsKICByZXR1cm4gX19m
aXJzdDsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVy
LCBjbGFzcyBfVHA+Cl9PdXRwdXRJdGVyIHJlbW92ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwg
X0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9f
cmVzdWx0LCBjb25zdCBfVHAmIF9fdmFsdWUpIHsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0
OyArK19fZmlyc3QpCiAgICBpZiAoKl9fZmlyc3QgIT0gX192YWx1ZSkgewogICAgICAqX19yZXN1
bHQgPSAqX19maXJzdDsKICAgICAgKytfX3Jlc3VsdDsKICAgIH0KICByZXR1cm4gX19yZXN1bHQ7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3Mg
X1ByZWRpY2F0ZT4KX091dHB1dEl0ZXIgcmVtb3ZlX2NvcHlfaWYoX0lucHV0SXRlciBfX2ZpcnN0
LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0
ZXIgX19yZXN1bHQsIF9QcmVkaWNhdGUgX19wcmVkKSB7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9f
bGFzdDsgKytfX2ZpcnN0KQogICAgaWYgKCFfX3ByZWQoKl9fZmlyc3QpKSB7CiAgICAgICpfX3Jl
c3VsdCA9ICpfX2ZpcnN0OwogICAgICArK19fcmVzdWx0OwogICAgfQogIHJldHVybiBfX3Jlc3Vs
dDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgpfRm9yd2FyZEl0
ZXIgcmVtb3ZlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWx1ZSkgewogIF9fZmlyc3QgPSBmaW5kKF9f
Zmlyc3QsIF9fbGFzdCwgX192YWx1ZSk7CiAgX0ZvcndhcmRJdGVyIF9faSA9IF9fZmlyc3Q7CiAg
cmV0dXJuIF9fZmlyc3QgPT0gX19sYXN0ID8gX19maXJzdCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiByZW1vdmVfY29weSgrK19faSwgX19sYXN0LCBfX2ZpcnN0LCBfX3ZhbHVlKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1ByZWRpY2F0ZT4KX0ZvcndhcmRJ
dGVyIHJlbW92ZV9pZihfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCkgewogIF9fZmlyc3QgPSBm
aW5kX2lmKF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkKTsKICBfRm9yd2FyZEl0ZXIgX19pID0gX19m
aXJzdDsKICByZXR1cm4gX19maXJzdCA9PSBfX2xhc3QgPyBfX2ZpcnN0IAogICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IHJlbW92ZV9jb3B5X2lmKCsrX19pLCBfX2xhc3QsIF9fZmlyc3QsIF9f
cHJlZCk7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRl
ciwgY2xhc3MgX1RwPgpfT3V0cHV0SXRlciBfX3VuaXF1ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJz
dCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0
ZXIgX19yZXN1bHQsIF9UcCopIHsKICBfVHAgX192YWx1ZSA9ICpfX2ZpcnN0OwogICpfX3Jlc3Vs
dCA9IF9fdmFsdWU7CiAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpCiAgICBpZiAoX192YWx1
ZSAhPSAqX19maXJzdCkgewogICAgICBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgICAgICorK19fcmVz
dWx0ID0gX192YWx1ZTsKICAgIH0KICByZXR1cm4gKytfX3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyPgppbmxpbmUgX091dHB1dEl0ZXIgX191
bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9pdGVyYXRvcl90YWcpIHsKICByZXR1cm4g
X191bmlxdWVfY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LCBfX3ZhbHVlX3R5cGUoIF9f
Zmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX0ZvcndhcmRJ
dGVyPgpfRm9yd2FyZEl0ZXIgX191bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1
dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19y
ZXN1bHQsIGZvcndhcmRfaXRlcmF0b3JfdGFnKSB7CiAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAg
d2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpCiAgICBpZiAoKl9fcmVzdWx0ICE9ICpfX2ZpcnN0
KSAqKytfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogIHJldHVybiArK19fcmVzdWx0Owp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXI+CmlubGluZSBfT3V0cHV0SXRl
ciB1bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsKICBpZiAo
X19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX3Jlc3VsdDsKICByZXR1cm4gX191bmlxdWVfY29w
eShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgIF9faXRl
cmF0b3JfY2F0ZWdvcnkoIF9fcmVzdWx0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0
ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfQmluYXJ5UHJlZGljYXRlLAogICAgICAgICAg
Y2xhc3MgX1RwPgpfT3V0cHV0SXRlciBfX3VuaXF1ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwg
X0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIg
X19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2Jp
bmFyeV9wcmVkLCBfVHAqKSB7CiAgX1RwIF9fdmFsdWUgPSAqX19maXJzdDsKICAqX19yZXN1bHQg
PSBfX3ZhbHVlOwogIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogICAgaWYgKCFfX2JpbmFy
eV9wcmVkKF9fdmFsdWUsICpfX2ZpcnN0KSkgewogICAgICBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAg
ICAgICorK19fcmVzdWx0ID0gX192YWx1ZTsKICAgIH0KICByZXR1cm4gKytfX3Jlc3VsdDsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfQmlu
YXJ5UHJlZGljYXRlPgppbmxpbmUgX091dHB1dEl0ZXIgX191bmlxdWVfY29weShfSW5wdXRJdGVy
IF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRfaXRlcmF0b3JfdGFnKSB7CiAgcmV0dXJuIF9fdW5pcXVlX2NvcHko
X19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX19iaW5hcnlfcHJlZCwKICAgICAgICAgICAgICAg
ICAgICAgICBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
cHV0SXRlciwgY2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfQmluYXJ5UHJlZGljYXRlPgpfRm9y
d2FyZEl0ZXIgX191bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19s
YXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0b3JfdGFnKSB7CiAgKl9f
cmVzdWx0ID0gKl9fZmlyc3Q7CiAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpCiAgICBpZiAo
IV9fYmluYXJ5X3ByZWQoKl9fcmVzdWx0LCAqX19maXJzdCkpICorK19fcmVzdWx0ID0gKl9fZmly
c3Q7CiAgcmV0dXJuICsrX19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBj
bGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KaW5saW5lIF9PdXRwdXRJ
dGVyIHVuaXF1ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkg
ewogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fcmVzdWx0OwogIHJldHVybiBfX3Vu
aXF1ZV9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsIF9fYmluYXJ5X3ByZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeSggX19yZXN1bHQgKSApOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyPgpfRm9yd2FyZEl0ZXIgdW5pcXVlKF9Gb3J3YXJk
SXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0KSB7CiAgX19maXJzdCA9IGFkamFjZW50
X2ZpbmQoX19maXJzdCwgX19sYXN0KTsKICByZXR1cm4gdW5pcXVlX2NvcHkoX19maXJzdCwgX19s
YXN0LCBfX2ZpcnN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0Jp
bmFyeVByZWRpY2F0ZT4KX0ZvcndhcmRJdGVyIHVuaXF1ZShfRm9yd2FyZEl0ZXIgX19maXJzdCwg
X0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJlZGljYXRl
IF9fYmluYXJ5X3ByZWQpIHsKICBfX2ZpcnN0ID0gYWRqYWNlbnRfZmluZChfX2ZpcnN0LCBfX2xh
c3QsIF9fYmluYXJ5X3ByZWQpOwogIHJldHVybiB1bmlxdWVfY29weShfX2ZpcnN0LCBfX2xhc3Qs
IF9fZmlyc3QsIF9fYmluYXJ5X3ByZWQpOwp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0
aW9uYWxJdGVyPgp2b2lkIF9fcmV2ZXJzZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0Jp
ZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAgIGJpZGlyZWN0aW9uYWxfaXRl
cmF0b3JfdGFnKSB7CiAgd2hpbGUgKHRydWUpCiAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QgfHwg
X19maXJzdCA9PSAtLV9fbGFzdCkKICAgICAgcmV0dXJuOwogICAgZWxzZQogICAgICBpdGVyX3N3
YXAoX19maXJzdCsrLCBfX2xhc3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXI+CnZvaWQgX19yZXZlcnNlKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nl
c3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcp
IHsKICB3aGlsZSAoX19maXJzdCA8IF9fbGFzdCkKICAgIGl0ZXJfc3dhcChfX2ZpcnN0KyssIC0t
X19sYXN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcj4KaW5saW5lIHZv
aWQgcmV2ZXJzZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0JpZGlyZWN0aW9uYWxJdGVy
IF9fbGFzdCkgewogIF9fcmV2ZXJzZShfX2ZpcnN0LCBfX2xhc3QsIF9faXRlcmF0b3JfY2F0ZWdv
cnkoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBj
bGFzcyBfT3V0cHV0SXRlcj4KX091dHB1dEl0ZXIgcmV2ZXJzZV9jb3B5KF9CaWRpcmVjdGlvbmFs
SXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVz
dWx0KSB7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICAtLV9fbGFzdDsKICAgICpf
X3Jlc3VsdCA9ICpfX2xhc3Q7CiAgICArK19fcmVzdWx0OwogIH0KICByZXR1cm4gX19yZXN1bHQ7
Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfRXVjbGlkZWFuUmluZ0VsZW1lbnQ+Cl9FdWNsaWRlYW5S
aW5nRWxlbWVudCBfX2djZChfRXVjbGlkZWFuUmluZ0VsZW1lbnQgX19tLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0V1Y2xpZGVhblJpbmdFbGVtZW50IF9fbikKewogIHdoaWxlIChfX24g
IT0gMCkgewogICAgX0V1Y2xpZGVhblJpbmdFbGVtZW50IF9fdCA9IF9fbSAlIF9fbjsKICAgIF9f
bSA9IF9fbjsKICAgIF9fbiA9IF9fdDsKICB9CiAgcmV0dXJuIF9fbTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0Rpc3RhbmNlPgpfRm9yd2FyZEl0ZXIgX19yb3RhdGUo
X0ZvcndhcmRJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIg
X19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlKiwKICAgICAgICAgICAgICAgICAgICAgIGZvcndh
cmRfaXRlcmF0b3JfdGFnKSB7CiAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUpCiAgICByZXR1cm4g
X19sYXN0OwogIGlmIChfX2xhc3QgID09IF9fbWlkZGxlKQogICAgcmV0dXJuIF9fZmlyc3Q7Cgog
IF9Gb3J3YXJkSXRlciBfX2ZpcnN0MiA9IF9fbWlkZGxlOwogIGRvIHsKICAgIHN3YXAoKl9fZmly
c3QrKywgKl9fZmlyc3QyKyspOwogICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUpCiAgICAgIF9f
bWlkZGxlID0gX19maXJzdDI7CiAgfSB3aGlsZSAoX19maXJzdDIgIT0gX19sYXN0KTsKCiAgX0Zv
cndhcmRJdGVyIF9fbmV3X21pZGRsZSA9IF9fZmlyc3Q7CgogIF9fZmlyc3QyID0gX19taWRkbGU7
CgogIHdoaWxlIChfX2ZpcnN0MiAhPSBfX2xhc3QpIHsKICAgIHN3YXAgKCpfX2ZpcnN0KyssICpf
X2ZpcnN0MisrKTsKICAgIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlKQogICAgICBfX21pZGRsZSA9
IF9fZmlyc3QyOwogICAgZWxzZSBpZiAoX19maXJzdDIgPT0gX19sYXN0KQogICAgICBfX2ZpcnN0
MiA9IF9fbWlkZGxlOwogIH0KCiAgcmV0dXJuIF9fbmV3X21pZGRsZTsKfQoKCnRlbXBsYXRlIDxj
bGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9EaXN0YW5jZT4KX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fcm90YXRlKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9EaXN0YW5jZSosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWRpcmVj
dGlvbmFsX2l0ZXJhdG9yX3RhZykgewogIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlKQogICAgcmV0
dXJuIF9fbGFzdDsKICBpZiAoX19sYXN0ICA9PSBfX21pZGRsZSkKICAgIHJldHVybiBfX2ZpcnN0
OwoKICBfX3JldmVyc2UoX19maXJzdCwgIF9fbWlkZGxlLCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9y
X3RhZygpKTsKICBfX3JldmVyc2UoX19taWRkbGUsIF9fbGFzdCwgICBiaWRpcmVjdGlvbmFsX2l0
ZXJhdG9yX3RhZygpKTsKCiAgd2hpbGUgKF9fZmlyc3QgIT0gX19taWRkbGUgJiYgX19taWRkbGUg
IT0gX19sYXN0KQogICAgc3dhcCAoKl9fZmlyc3QrKywgKi0tX19sYXN0KTsKCiAgaWYgKF9fZmly
c3QgPT0gX19taWRkbGUpIHsKICAgIF9fcmV2ZXJzZShfX21pZGRsZSwgX19sYXN0LCAgIGJpZGly
ZWN0aW9uYWxfaXRlcmF0b3JfdGFnKCkpOwogICAgcmV0dXJuIF9fbGFzdDsKICB9CiAgZWxzZSB7
CiAgICBfX3JldmVyc2UoX19maXJzdCwgIF9fbWlkZGxlLCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9y
X3RhZygpKTsKICAgIHJldHVybiBfX2ZpcnN0OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5k
b21BY2Nlc3NJdGVyLCBjbGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9UcD4KX1JhbmRvbUFjY2Vzc0l0
ZXIgX19yb3RhdGUoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0Rpc3RhbmNlICosIF9UcCAqKSB7CgogIF9EaXN0YW5jZSBfX24gPSBfX2xhc3QgICAtIF9f
Zmlyc3Q7CiAgX0Rpc3RhbmNlIF9fayA9IF9fbWlkZGxlIC0gX19maXJzdDsKICBfRGlzdGFuY2Ug
X19sID0gX19uIC0gX19rOwogIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0ID0gX19maXJzdCAr
IChfX2xhc3QgLSBfX21pZGRsZSk7CgogIGlmIChfX2sgPT0gX19sKSB7CiAgICBzd2FwX3Jhbmdl
cyhfX2ZpcnN0LCBfX21pZGRsZSwgX19taWRkbGUpOwogICAgcmV0dXJuIF9fcmVzdWx0OwogIH0K
CiAgX0Rpc3RhbmNlIF9fZCA9IF9fZ2NkKF9fbiwgX19rKTsKCiAgZm9yIChfRGlzdGFuY2UgX19p
ID0gMDsgX19pIDwgX19kOyBfX2krKykgewogICAgX1RwIF9fdG1wID0gKl9fZmlyc3Q7CiAgICBf
UmFuZG9tQWNjZXNzSXRlciBfX3AgPSBfX2ZpcnN0OwoKICAgIGlmIChfX2sgPCBfX2wpIHsKICAg
ICAgZm9yIChfRGlzdGFuY2UgX19qID0gMDsgX19qIDwgX19sL19fZDsgX19qKyspIHsKICAgICAg
ICBpZiAoX19wID4gX19maXJzdCArIF9fbCkgewogICAgICAgICAgKl9fcCA9ICooX19wIC0gX19s
KTsKICAgICAgICAgIF9fcCAtPSBfX2w7CiAgICAgICAgfQoKICAgICAgICAqX19wID0gKihfX3Ag
KyBfX2spOwogICAgICAgIF9fcCArPSBfX2s7CiAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAg
ICAgZm9yIChfRGlzdGFuY2UgX19qID0gMDsgX19qIDwgX19rL19fZCAtIDE7IF9faiArKykgewog
ICAgICAgIGlmIChfX3AgPCBfX2xhc3QgLSBfX2spIHsKICAgICAgICAgICpfX3AgPSAqKF9fcCAr
IF9fayk7CiAgICAgICAgICBfX3AgKz0gX19rOwogICAgICAgIH0KCiAgICAgICAgKl9fcCA9ICog
KF9fcCAtIF9fbCk7CiAgICAgICAgX19wIC09IF9fbDsKICAgICAgfQogICAgfQoKICAgICpfX3Ag
PSBfX3RtcDsKICAgICsrX19maXJzdDsKICB9CgogIHJldHVybiBfX3Jlc3VsdDsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIF9Gb3J3YXJkSXRlciByb3RhdGUoX0Zvcndh
cmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX0ZvcndhcmRJdGVyIF9fbGFzdCkgewogIHJldHVybiBfX3JvdGF0ZShfX2ZpcnN0
LCBfX21pZGRsZSwgX19sYXN0LAogICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9f
Zmlyc3QgKSAsCiAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3Qg
KSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlcj4K
X091dHB1dEl0ZXIgcm90YXRlX2NvcHkoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
ciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xh
c3QsIF9PdXRwdXRJdGVyIF9fcmVzdWx0KSB7CiAgcmV0dXJuIGNvcHkoX19maXJzdCwgX19taWRk
bGUsIGNvcHkoX19taWRkbGUsIF9fbGFzdCwgX19yZXN1bHQpKTsKfQoKIAogCiAKCnRlbXBsYXRl
IDxjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBfRGlzdGFuY2UgX19yYW5kb21fbnVtYmVyKF9EaXN0
YW5jZSBfX24pIHsKCgoKICByZXR1cm4gbHJhbmQ0OCgpICUgX19uOwoKfQoKIAoKdGVtcGxhdGUg
PGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyPgppbmxpbmUgdm9pZCByYW5kb21fc2h1ZmZsZShfUmFu
ZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9t
QWNjZXNzSXRlciBfX2xhc3QpIHsKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybjsKICBm
b3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9faSA9IF9fZmlyc3QgKyAxOyBfX2kgIT0gX19sYXN0OyAr
K19faSkKICAgIGl0ZXJfc3dhcChfX2ksIF9fZmlyc3QgKyBfX3JhbmRvbV9udW1iZXIoKF9faSAt
IF9fZmlyc3QpICsgMSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNs
YXNzIF9SYW5kb21OdW1iZXJHZW5lcmF0b3I+CnZvaWQgcmFuZG9tX3NodWZmbGUoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAg
ICAgICAgIF9SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fcmFuZCkgewogIGlmIChfX2ZpcnN0ID09
IF9fbGFzdCkgcmV0dXJuOwogIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19pID0gX19maXJzdCAr
IDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogICAgaXRlcl9zd2FwKF9faSwgX19maXJzdCArIF9f
cmFuZCgoX19pIC0gX19maXJzdCkgKyAxKSk7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2Fy
ZEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfRGlzdGFuY2U+Cl9PdXRwdXRJdGVyIHJh
bmRvbV9zYW1wbGVfbihfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fb3V0LCBjb25zdCBfRGlz
dGFuY2UgX19uKQp7CiAgX0Rpc3RhbmNlIF9fcmVtYWluaW5nID0gMDsKICBkaXN0YW5jZShfX2Zp
cnN0LCBfX2xhc3QsIF9fcmVtYWluaW5nKTsKICBfRGlzdGFuY2UgX19tID0gbWluKF9fbiwgX19y
ZW1haW5pbmcpOwoKICB3aGlsZSAoX19tID4gMCkgewogICAgaWYgKF9fcmFuZG9tX251bWJlcihf
X3JlbWFpbmluZykgPCBfX20pIHsKICAgICAgKl9fb3V0ID0gKl9fZmlyc3Q7CiAgICAgICsrX19v
dXQ7CiAgICAgIC0tX19tOwogICAgfQoKICAgIC0tX19yZW1haW5pbmc7CiAgICArK19fZmlyc3Q7
CiAgfQogIHJldHVybiBfX291dDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xh
c3MgX091dHB1dEl0ZXIsIGNsYXNzIF9EaXN0YW5jZSwKICAgICAgICAgIGNsYXNzIF9SYW5kb21O
dW1iZXJHZW5lcmF0b3I+Cl9PdXRwdXRJdGVyIHJhbmRvbV9zYW1wbGVfbihfRm9yd2FyZEl0ZXIg
X19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9PdXRwdXRJdGVyIF9fb3V0LCBjb25zdCBfRGlzdGFuY2UgX19uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX1JhbmRvbU51bWJlckdlbmVyYXRvciYgX19yYW5kKQp7CiAgX0Rpc3RhbmNl
IF9fcmVtYWluaW5nID0gMDsKICBkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVtYWluaW5n
KTsKICBfRGlzdGFuY2UgX19tID0gbWluKF9fbiwgX19yZW1haW5pbmcpOwoKICB3aGlsZSAoX19t
ID4gMCkgewogICAgaWYgKF9fcmFuZChfX3JlbWFpbmluZykgPCBfX20pIHsKICAgICAgKl9fb3V0
ID0gKl9fZmlyc3Q7CiAgICAgICsrX19vdXQ7CiAgICAgIC0tX19tOwogICAgfQoKICAgIC0tX19y
ZW1haW5pbmc7CiAgICArK19fZmlyc3Q7CiAgfQogIHJldHVybiBfX291dDsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfRGlzdGFu
Y2U+Cl9SYW5kb21BY2Nlc3NJdGVyIF9fcmFuZG9tX3NhbXBsZShfSW5wdXRJdGVyIF9fZmlyc3Qs
IF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19vdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBfRGlzdGFuY2UgX19uKQp7CiAgX0Rpc3RhbmNlIF9fbSA9IDA7CiAgX0Rpc3RhbmNlIF9f
dCA9IF9fbjsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0ICYmIF9fbSA8IF9fbjsgKytfX20s
ICsrX19maXJzdCkgCiAgICBfX291dFtfX21dID0gKl9fZmlyc3Q7CgogIHdoaWxlIChfX2ZpcnN0
ICE9IF9fbGFzdCkgewogICAgKytfX3Q7CiAgICBfRGlzdGFuY2UgX19NID0gX19yYW5kb21fbnVt
YmVyKF9fdCk7CiAgICBpZiAoX19NIDwgX19uKQogICAgICBfX291dFtfX01dID0gKl9fZmlyc3Q7
CiAgICArK19fZmlyc3Q7CiAgfQoKICByZXR1cm4gX19vdXQgKyBfX207Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwKICAgICAgICAgIGNsYXNz
IF9SYW5kb21OdW1iZXJHZW5lcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KX1JhbmRvbUFjY2Vzc0l0
ZXIgX19yYW5kb21fc2FtcGxlKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX291
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fcmFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9EaXN0
YW5jZSBfX24pCnsKICBfRGlzdGFuY2UgX19tID0gMDsKICBfRGlzdGFuY2UgX190ID0gX19uOwog
IGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3QgJiYgX19tIDwgX19uOyArK19fbSwgKytfX2ZpcnN0
KQogICAgX19vdXRbX19tXSA9ICpfX2ZpcnN0OwoKICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3Qp
IHsKICAgICsrX190OwogICAgX0Rpc3RhbmNlIF9fTSA9IF9fcmFuZChfX3QpOwogICAgaWYgKF9f
TSA8IF9fbikKICAgICAgX19vdXRbX19NXSA9ICpfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwogIH0K
CiAgcmV0dXJuIF9fb3V0ICsgX19tOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xh
c3MgX1JhbmRvbUFjY2Vzc0l0ZXI+CmlubGluZSBfUmFuZG9tQWNjZXNzSXRlcgpyYW5kb21fc2Ft
cGxlKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXIgX19vdXRfZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fb3V0X2xh
c3QpIAp7CiAgcmV0dXJuIF9fcmFuZG9tX3NhbXBsZShfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBfX291dF9maXJzdCwgX19vdXRfbGFzdCAtIF9fb3V0X2ZpcnN0KTsK
fQoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwg
CiAgICAgICAgICBjbGFzcyBfUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgppbmxpbmUgX1JhbmRvbUFj
Y2Vzc0l0ZXIKcmFuZG9tX3NhbXBsZShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19s
YXN0LAogICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fb3V0X2ZpcnN0LCBfUmFuZG9t
QWNjZXNzSXRlciBfX291dF9sYXN0LAogICAgICAgICAgICAgIF9SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fcmFuZCkgCnsKICByZXR1cm4gX19yYW5kb21fc2FtcGxlKF9fZmlyc3QsIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2ZpcnN0LCBfX3JhbmQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBfX291dF9sYXN0IC0gX19vdXRfZmlyc3QpOwp9CgogCgp0ZW1wbGF0ZSA8
Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgpfRm9yd2FyZEl0ZXIgX19wYXJ0
aXRpb24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsCgkJICAgICAgICAgX0ZvcndhcmRJdGVyIF9fbGFz
dCwKCQkJIF9QcmVkaWNhdGUgICBfX3ByZWQsCgkJCSBmb3J3YXJkX2l0ZXJhdG9yX3RhZykgewog
IGlmIChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7CgogIHdoaWxlIChfX3ByZWQo
Kl9fZmlyc3QpKQogICAgaWYgKCsrX19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0OwoK
ICBfRm9yd2FyZEl0ZXIgX19uZXh0ID0gX19maXJzdDsKCiAgd2hpbGUgKCsrX19uZXh0ICE9IF9f
bGFzdCkKICAgIGlmIChfX3ByZWQoKl9fbmV4dCkpIHsKICAgICAgc3dhcCgqX19maXJzdCwgKl9f
bmV4dCk7CiAgICAgICsrX19maXJzdDsKICAgIH0KCiAgcmV0dXJuIF9fZmlyc3Q7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9QcmVkaWNhdGU+Cl9CaWRpcmVj
dGlvbmFsSXRlciBfX3BhcnRpdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCgkJCSAg
ICAgICBfUHJlZGljYXRlIF9fcHJlZCwKCQkJICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3Jf
dGFnKSB7CiAgd2hpbGUgKHRydWUpIHsKICAgIHdoaWxlICh0cnVlKQogICAgICBpZiAoX19maXJz
dCA9PSBfX2xhc3QpCiAgICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICAgIGVsc2UgaWYgKF9fcHJl
ZCgqX19maXJzdCkpCiAgICAgICAgKytfX2ZpcnN0OwogICAgICBlbHNlCiAgICAgICAgYnJlYWs7
CiAgICAtLV9fbGFzdDsKICAgIHdoaWxlICh0cnVlKQogICAgICBpZiAoX19maXJzdCA9PSBfX2xh
c3QpCiAgICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICAgIGVsc2UgaWYgKCFfX3ByZWQoKl9fbGFz
dCkpCiAgICAgICAgLS1fX2xhc3Q7CiAgICAgIGVsc2UKICAgICAgICBicmVhazsKICAgIGl0ZXJf
c3dhcChfX2ZpcnN0LCBfX2xhc3QpOwogICAgKytfX2ZpcnN0OwogIH0KfQoKdGVtcGxhdGUgPGNs
YXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1ByZWRpY2F0ZT4KaW5saW5lIF9Gb3J3YXJkSXRlciBw
YXJ0aXRpb24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsCiAgIAkJCSAgICAgIF9Gb3J3YXJkSXRlciBf
X2xhc3QsCgkJCSAgICAgIF9QcmVkaWNhdGUgICBfX3ByZWQpIHsKICByZXR1cm4gX19wYXJ0aXRp
b24oX19maXJzdCwgX19sYXN0LCBfX3ByZWQsIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3Qg
KSApOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1ByZWRpY2F0ZSwg
Y2xhc3MgX0Rpc3RhbmNlPgpfRm9yd2FyZEl0ZXIgX19pbnBsYWNlX3N0YWJsZV9wYXJ0aXRpb24o
X0ZvcndhcmRJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQsIF9EaXN0YW5jZSBfX2xlbikgewogIGlmIChfX2xl
biA9PSAxKQogICAgcmV0dXJuIF9fcHJlZCgqX19maXJzdCkgPyBfX2xhc3QgOiBfX2ZpcnN0Owog
IF9Gb3J3YXJkSXRlciBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgYWR2YW5jZShfX21pZGRsZSwgX19s
ZW4gLyAyKTsKICByZXR1cm4gcm90YXRlKF9faW5wbGFjZV9zdGFibGVfcGFydGl0aW9uKF9fZmly
c3QsIF9fbWlkZGxlLCBfX3ByZWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19sZW4gLyAyKSwKICAgICAgICAgICAgICAgIF9fbWlkZGxlLAogICAgICAgICAg
ICAgICAgX19pbnBsYWNlX3N0YWJsZV9wYXJ0aXRpb24oX19taWRkbGUsIF9fbGFzdCwgX19wcmVk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4gLSBfX2xl
biAvIDIpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1BvaW50ZXIs
IGNsYXNzIF9QcmVkaWNhdGUsIAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlPgpfRm9yd2FyZEl0
ZXIgX19zdGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ByZWRpY2F0ZSBfX3By
ZWQsIF9EaXN0YW5jZSBfX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfUG9pbnRlciBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkgCnsKICBpZiAoX19sZW4gPD0gX19idWZm
ZXJfc2l6ZSkgewogICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0MSA9IF9fZmlyc3Q7CiAgICBfUG9p
bnRlciBfX3Jlc3VsdDIgPSBfX2J1ZmZlcjsKICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Qg
OyArK19fZmlyc3QpCiAgICAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKSB7CiAgICAgICAgKl9fcmVz
dWx0MSA9ICpfX2ZpcnN0OwogICAgICAgICsrX19yZXN1bHQxOwogICAgICB9CiAgICAgIGVsc2Ug
ewogICAgICAgICpfX3Jlc3VsdDIgPSAqX19maXJzdDsKICAgICAgICArK19fcmVzdWx0MjsKICAg
ICAgfQogICAgY29weShfX2J1ZmZlciwgX19yZXN1bHQyLCBfX3Jlc3VsdDEpOwogICAgcmV0dXJu
IF9fcmVzdWx0MTsKICB9CiAgZWxzZSB7CiAgICBfRm9yd2FyZEl0ZXIgX19taWRkbGUgPSBfX2Zp
cnN0OwogICAgYWR2YW5jZShfX21pZGRsZSwgX19sZW4gLyAyKTsKICAgIHJldHVybiByb3RhdGUo
X19zdGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKAogICAgICAgICAgICAgICAgICAgICAgICAgIF9f
Zmlyc3QsIF9fbWlkZGxlLCBfX3ByZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4g
LyAyLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSksCiAgICAgICAgICAgICAgICAgICAgX19taWRk
bGUsCiAgICAgICAgICAgICAgICAgICAgX19zdGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKAogICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fbWlkZGxlLCBfX2xhc3QsIF9fcHJlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2xlbiAtIF9fbGVuIC8gMiwgX19idWZmZXIsIF9fYnVmZmVyX3Np
emUpKTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9QcmVkaWNh
dGUsIGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgX0ZvcndhcmRJdGVyCl9fc3Rh
YmxlX3BhcnRpdGlvbl9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xh
c3QsIAogICAgICAgICAgICAgICAgICAgICAgIF9QcmVkaWNhdGUgX19wcmVkLCBfVHAqLCBfRGlz
dGFuY2UqKQp7CiAgX1RlbXBvcmFyeV9idWZmZXI8X0ZvcndhcmRJdGVyLCBfVHA+IF9fYnVmKF9f
Zmlyc3QsIF9fbGFzdCk7CiAgaWYgKF9fYnVmLnNpemUoKSA+IDApCiAgICByZXR1cm4gX19zdGFi
bGVfcGFydGl0aW9uX2FkYXB0aXZlKF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UoX19idWYucmVxdWVzdGVkX3Np
emUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYnVmLmJlZ2lu
KCksIF9fYnVmLnNpemUoKSk7CiAgZWxzZQogICAgcmV0dXJuIF9faW5wbGFjZV9zdGFibGVfcGFy
dGl0aW9uKF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfRGlzdGFuY2UoX19idWYucmVxdWVzdGVkX3NpemUoKSkpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgppbmxpbmUgX0Zvcndh
cmRJdGVyIHN0YWJsZV9wYXJ0aXRpb24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19sYXN0LCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QcmVkaWNhdGUgX19wcmVkKSB7CiAgaWYgKF9f
Zmlyc3QgPT0gX19sYXN0KQogICAgcmV0dXJuIF9fZmlyc3Q7CiAgZWxzZQogICAgcmV0dXJuIF9f
c3RhYmxlX3BhcnRpdGlvbl9hdXgoX19maXJzdCwgX19sYXN0LCBfX3ByZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcD4KX1JhbmRvbUFj
Y2Vzc0l0ZXIgX191bmd1YXJkZWRfcGFydGl0aW9uKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3Qs
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0
ZXIgX19sYXN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UcCBf
X3Bpdm90KSAKewogIHdoaWxlICh0cnVlKSB7CiAgICB3aGlsZSAoKl9fZmlyc3QgPCBfX3Bpdm90
KQogICAgICArK19fZmlyc3Q7CiAgICAtLV9fbGFzdDsKICAgIHdoaWxlIChfX3Bpdm90IDwgKl9f
bGFzdCkKICAgICAgLS1fX2xhc3Q7CiAgICBpZiAoIShfX2ZpcnN0IDwgX19sYXN0KSkKICAgICAg
cmV0dXJuIF9fZmlyc3Q7CiAgICBpdGVyX3N3YXAoX19maXJzdCwgX19sYXN0KTsKICAgICsrX19m
aXJzdDsKICB9Cn0gICAgCgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNz
IF9UcCwgY2xhc3MgX0NvbXBhcmU+Cl9SYW5kb21BY2Nlc3NJdGVyIF9fdW5ndWFyZGVkX3BhcnRp
dGlvbihfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfVHAgX19waXZvdCwgX0NvbXBhcmUgX19jb21wKSAK
ewogIHdoaWxlICh0cnVlKSB7CiAgICB3aGlsZSAoX19jb21wKCpfX2ZpcnN0LCBfX3Bpdm90KSkK
ICAgICAgKytfX2ZpcnN0OwogICAgLS1fX2xhc3Q7CiAgICB3aGlsZSAoX19jb21wKF9fcGl2b3Qs
ICpfX2xhc3QpKQogICAgICAtLV9fbGFzdDsKICAgIGlmICghKF9fZmlyc3QgPCBfX2xhc3QpKQog
ICAgICByZXR1cm4gX19maXJzdDsKICAgIGl0ZXJfc3dhcChfX2ZpcnN0LCBfX2xhc3QpOwogICAg
KytfX2ZpcnN0OwogIH0KfQoKY29uc3QgaW50IF9fc3RsX3RocmVzaG9sZCA9IDE2OwoKIAoKdGVt
cGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHA+CnZvaWQgX191bmd1YXJk
ZWRfbGluZWFyX2luc2VydChfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCBfX3ZhbCkgewog
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbmV4dCA9IF9fbGFzdDsKICAtLV9fbmV4dDsKICB3aGlsZSAo
X192YWwgPCAqX19uZXh0KSB7CiAgICAqX19sYXN0ID0gKl9fbmV4dDsKICAgIF9fbGFzdCA9IF9f
bmV4dDsKICAgIC0tX19uZXh0OwogIH0KICAqX19sYXN0ID0gX192YWw7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZT4Kdm9pZCBf
X3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1RwIF9f
dmFsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkgewog
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbmV4dCA9IF9fbGFzdDsKICAtLV9fbmV4dDsgIAogIHdoaWxl
IChfX2NvbXAoX192YWwsICpfX25leHQpKSB7CiAgICAqX19sYXN0ID0gKl9fbmV4dDsKICAgIF9f
bGFzdCA9IF9fbmV4dDsKICAgIC0tX19uZXh0OwogIH0KICAqX19sYXN0ID0gX192YWw7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZCBf
X2xpbmVhcl9pbnNlcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCopIHsKICBfVHAgX192
YWwgPSAqX19sYXN0OwogIGlmIChfX3ZhbCA8ICpfX2ZpcnN0KSB7CiAgICBjb3B5X2JhY2t3YXJk
KF9fZmlyc3QsIF9fbGFzdCwgX19sYXN0ICsgMSk7CiAgICAqX19maXJzdCA9IF9fdmFsOwogIH0K
ICBlbHNlCiAgICBfX3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9fbGFzdCwgX192YWwpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBh
cmU+CmlubGluZSB2b2lkIF9fbGluZWFyX2luc2VydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwg
X1RwKiwgX0NvbXBhcmUgX19jb21wKSB7CiAgX1RwIF9fdmFsID0gKl9fbGFzdDsKICBpZiAoX19j
b21wKF9fdmFsLCAqX19maXJzdCkpIHsKICAgIGNvcHlfYmFja3dhcmQoX19maXJzdCwgX19sYXN0
LCBfX2xhc3QgKyAxKTsKICAgICpfX2ZpcnN0ID0gX192YWw7CiAgfQogIGVsc2UKICAgIF9fdW5n
dWFyZGVkX2xpbmVhcl9pbnNlcnQoX19sYXN0LCBfX3ZhbCwgX19jb21wKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyPgp2b2lkIF9faW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KSB7CiAgaWYgKF9fZmly
c3QgPT0gX19sYXN0KSByZXR1cm47IAogIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19pID0gX19m
aXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogICAgX19saW5lYXJfaW5zZXJ0KF9fZmly
c3QsIF9faSwgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9S
YW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFyZT4Kdm9pZCBfX2luc2VydGlvbl9zb3J0KF9S
YW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNj
ZXNzSXRlciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkgewogIGlmIChfX2ZpcnN0ID09IF9fbGFz
dCkgcmV0dXJuOwogIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19pID0gX19maXJzdCArIDE7IF9f
aSAhPSBfX2xhc3Q7ICsrX19pKQogICAgX19saW5lYXJfaW5zZXJ0KF9fZmlyc3QsIF9faSwgX192
YWx1ZV90eXBlKCBfX2ZpcnN0ICkgLCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRv
bUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcD4Kdm9pZCBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29ydF9h
dXgoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1RwKikgewogIGZvciAoX1JhbmRv
bUFjY2Vzc0l0ZXIgX19pID0gX19maXJzdDsgX19pICE9IF9fbGFzdDsgKytfX2kpCiAgICBfX3Vu
Z3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9faSwgX1RwKCpfX2kpKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9SYW5kb21BY2Nlc3NJdGVyPgppbmxpbmUgdm9pZCBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29y
dChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpIHsKICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25f
c29ydF9hdXgoX19maXJzdCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBh
cmU+CnZvaWQgX191bmd1YXJkZWRfaW5zZXJ0aW9uX3NvcnRfYXV4KF9SYW5kb21BY2Nlc3NJdGVy
IF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNj
ZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UcCos
IF9Db21wYXJlIF9fY29tcCkgewogIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19pID0gX19maXJz
dDsgX19pICE9IF9fbGFzdDsgKytfX2kpCiAgICBfX3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9f
aSwgX1RwKCpfX2kpLCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXIsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29y
dChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICBfX3VuZ3VhcmRlZF9pbnNl
cnRpb25fc29ydF9hdXgoX19maXJzdCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfUmFuZG9tQWNjZXNzSXRlcj4Kdm9pZCBfX2ZpbmFsX2luc2VydGlvbl9zb3J0KF9SYW5k
b21BY2Nlc3NJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRv
bUFjY2Vzc0l0ZXIgX19sYXN0KSB7CiAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPiBfX3N0bF90aHJl
c2hvbGQpIHsKICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19maXJzdCArIF9fc3RsX3Ro
cmVzaG9sZCk7CiAgICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29ydChfX2ZpcnN0ICsgX19zdGxf
dGhyZXNob2xkLCBfX2xhc3QpOwogIH0KICBlbHNlCiAgICBfX2luc2VydGlvbl9zb3J0KF9fZmly
c3QsIF9fbGFzdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3Mg
X0NvbXBhcmU+CnZvaWQgX19maW5hbF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlciBf
X2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9f
bGFzdCwgX0NvbXBhcmUgX19jb21wKSB7CiAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPiBfX3N0bF90
aHJlc2hvbGQpIHsKICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19maXJzdCArIF9fc3Rs
X3RocmVzaG9sZCwgX19jb21wKTsKICAgIF9fdW5ndWFyZGVkX2luc2VydGlvbl9zb3J0KF9fZmly
c3QgKyBfX3N0bF90aHJlc2hvbGQsIF9fbGFzdCwgX19jb21wKTsKICB9CiAgZWxzZQogICAgX19p
bnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfU2l6ZT4KaW5saW5lIF9TaXplIF9fbGcoX1NpemUgX19uKSB7CiAgX1NpemUgX19rOwogIGZv
ciAoX19rID0gMDsgX19uICE9IDE7IF9fbiA+Pj0gMSkgKytfX2s7CiAgcmV0dXJuIF9fazsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9TaXpl
Pgp2b2lkIF9faW50cm9zb3J0X2xvb3AoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1RwKiwKICAgICAgICAg
ICAgICAgICAgICAgIF9TaXplIF9fZGVwdGhfbGltaXQpCnsKICB3aGlsZSAoX19sYXN0IC0gX19m
aXJzdCA+IF9fc3RsX3RocmVzaG9sZCkgewogICAgaWYgKF9fZGVwdGhfbGltaXQgPT0gMCkgewog
ICAgICBwYXJ0aWFsX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2xhc3QpOwogICAgICByZXR1cm47
CiAgICB9CiAgICAtLV9fZGVwdGhfbGltaXQ7CiAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2N1dCA9
CiAgICAgIF9fdW5ndWFyZGVkX3BhcnRpdGlvbihfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfVHAoX19tZWRpYW4oKl9fZmlyc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKihfX2ZpcnN0ICsgKF9fbGFzdCAtIF9fZmlyc3QpLzIp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooX19sYXN0IC0gMSkp
KSk7CiAgICBfX2ludHJvc29ydF9sb29wKF9fY3V0LCBfX2xhc3QsIChfVHAqKSAwLCBfX2RlcHRo
X2xpbWl0KTsKICAgIF9fbGFzdCA9IF9fY3V0OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5k
b21BY2Nlc3NJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9TaXplLCBjbGFzcyBfQ29tcGFyZT4Kdm9p
ZCBfX2ludHJvc29ydF9sb29wKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAgICAgICAg
ICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCosCiAgICAgICAgICAgICAg
ICAgICAgICBfU2l6ZSBfX2RlcHRoX2xpbWl0LCBfQ29tcGFyZSBfX2NvbXApCnsKICB3aGlsZSAo
X19sYXN0IC0gX19maXJzdCA+IF9fc3RsX3RocmVzaG9sZCkgewogICAgaWYgKF9fZGVwdGhfbGlt
aXQgPT0gMCkgewogICAgICBwYXJ0aWFsX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2xhc3QsIF9f
Y29tcCk7CiAgICAgIHJldHVybjsKICAgIH0KICAgIC0tX19kZXB0aF9saW1pdDsKICAgIF9SYW5k
b21BY2Nlc3NJdGVyIF9fY3V0ID0KICAgICAgX191bmd1YXJkZWRfcGFydGl0aW9uKF9fZmlyc3Qs
IF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UcChfX21lZGlhbigqX19maXJz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKF9fZmlyc3QgKyAo
X19sYXN0IC0gX19maXJzdCkvMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKihfX2xhc3QgLSAxKSwgX19jb21wKSksCiAgICAgICBfX2NvbXApOwogICAgX19pbnRy
b3NvcnRfbG9vcChfX2N1dCwgX19sYXN0LCAoX1RwKikgMCwgX19kZXB0aF9saW1pdCwgX19jb21w
KTsKICAgIF9fbGFzdCA9IF9fY3V0OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nl
c3NJdGVyPgppbmxpbmUgdm9pZCBzb3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5k
b21BY2Nlc3NJdGVyIF9fbGFzdCkgewogIGlmIChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgX19p
bnRyb3NvcnRfbG9vcChfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fdmFs
dWVfdHlwZSggX19maXJzdCApICwKICAgICAgICAgICAgICAgICAgICAgX19sZyhfX2xhc3QgLSBf
X2ZpcnN0KSAqIDIpOwogICAgX19maW5hbF9pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3Qp
OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFy
ZT4KaW5saW5lIHZvaWQgc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNj
ZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKSB7CiAgaWYg
KF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICBfX2ludHJvc29ydF9sb29wKF9fZmlyc3QsIF9fbGFz
dCwKICAgICAgICAgICAgICAgICAgICAgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgLAogICAgICAg
ICAgICAgICAgICAgICBfX2xnKF9fbGFzdCAtIF9fZmlyc3QpICogMiwKICAgICAgICAgICAgICAg
ICAgICAgX19jb21wKTsKICAgIF9fZmluYWxfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0
LCBfX2NvbXApOwogIH0KfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyPgp2
b2lkIF9faW5wbGFjZV9zdGFibGVfc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpIHsKICBpZiAo
X19sYXN0IC0gX19maXJzdCA8IDE1KSB7CiAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9f
bGFzdCk7CiAgICByZXR1cm47CiAgfQogIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxlID0gX19m
aXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0KSAvIDI7CiAgX19pbnBsYWNlX3N0YWJsZV9zb3J0KF9f
Zmlyc3QsIF9fbWlkZGxlKTsKICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX19taWRkbGUsIF9fbGFz
dCk7CiAgX19tZXJnZV93aXRob3V0X2J1ZmZlcihfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgX19taWRkbGUgLSBfX2ZpcnN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgX19sYXN0IC0gX19taWRkbGUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRv
bUFjY2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9faW5wbGFjZV9zdGFibGVfc29ydChf
UmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFu
ZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkgewogIGlmIChfX2xhc3QgLSBf
X2ZpcnN0IDwgMTUpIHsKICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2Nv
bXApOwogICAgcmV0dXJuOwogIH0KICBfUmFuZG9tQWNjZXNzSXRlciBfX21pZGRsZSA9IF9fZmly
c3QgKyAoX19sYXN0IC0gX19maXJzdCkgLyAyOwogIF9faW5wbGFjZV9zdGFibGVfc29ydChfX2Zp
cnN0LCBfX21pZGRsZSwgX19jb21wKTsKICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX19taWRkbGUs
IF9fbGFzdCwgX19jb21wKTsKICBfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9fbWlk
ZGxlLCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX21pZGRsZSAtIF9fZmlyc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICBfX2xhc3QgLSBfX21pZGRsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRl
cjEsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyMiwKICAgICAgICAgIGNsYXNzIF9EaXN0YW5jZT4K
dm9pZCBfX21lcmdlX3NvcnRfbG9vcChfUmFuZG9tQWNjZXNzSXRlcjEgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcjEgX19sYXN0LCAKICAgICAgICAgICAg
ICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcjIgX19yZXN1bHQsIF9EaXN0YW5jZSBfX3N0ZXBf
c2l6ZSkgewogIF9EaXN0YW5jZSBfX3R3b19zdGVwID0gMiAqIF9fc3RlcF9zaXplOwoKICB3aGls
ZSAoX19sYXN0IC0gX19maXJzdCA+PSBfX3R3b19zdGVwKSB7CiAgICBfX3Jlc3VsdCA9IG1lcmdl
KF9fZmlyc3QsIF9fZmlyc3QgKyBfX3N0ZXBfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgX19m
aXJzdCArIF9fc3RlcF9zaXplLCBfX2ZpcnN0ICsgX190d29fc3RlcCwKICAgICAgICAgICAgICAg
ICAgICAgX19yZXN1bHQpOwogICAgX19maXJzdCArPSBfX3R3b19zdGVwOwogIH0KCiAgX19zdGVw
X3NpemUgPSBtaW4oX0Rpc3RhbmNlKF9fbGFzdCAtIF9fZmlyc3QpLCBfX3N0ZXBfc2l6ZSk7CiAg
bWVyZ2UoX19maXJzdCwgX19maXJzdCArIF9fc3RlcF9zaXplLCBfX2ZpcnN0ICsgX19zdGVwX3Np
emUsIF9fbGFzdCwKICAgICAgICBfX3Jlc3VsdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9t
QWNjZXNzSXRlcjEsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyMiwKICAgICAgICAgIGNsYXNzIF9E
aXN0YW5jZSwgY2xhc3MgX0NvbXBhcmU+CnZvaWQgX19tZXJnZV9zb3J0X2xvb3AoX1JhbmRvbUFj
Y2Vzc0l0ZXIxIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0
ZXIxIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIyIF9f
cmVzdWx0LCBfRGlzdGFuY2UgX19zdGVwX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgX0Nv
bXBhcmUgX19jb21wKSB7CiAgX0Rpc3RhbmNlIF9fdHdvX3N0ZXAgPSAyICogX19zdGVwX3NpemU7
CgogIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID49IF9fdHdvX3N0ZXApIHsKICAgIF9fcmVzdWx0
ID0gbWVyZ2UoX19maXJzdCwgX19maXJzdCArIF9fc3RlcF9zaXplLAogICAgICAgICAgICAgICAg
ICAgICBfX2ZpcnN0ICsgX19zdGVwX3NpemUsIF9fZmlyc3QgKyBfX3R3b19zdGVwLAogICAgICAg
ICAgICAgICAgICAgICBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgX19jb21wKTsKICAg
IF9fZmlyc3QgKz0gX190d29fc3RlcDsKICB9CiAgX19zdGVwX3NpemUgPSBtaW4oX0Rpc3RhbmNl
KF9fbGFzdCAtIF9fZmlyc3QpLCBfX3N0ZXBfc2l6ZSk7CgogIG1lcmdlKF9fZmlyc3QsIF9fZmly
c3QgKyBfX3N0ZXBfc2l6ZSwKICAgICAgICBfX2ZpcnN0ICsgX19zdGVwX3NpemUsIF9fbGFzdCwK
ICAgICAgICBfX3Jlc3VsdCwKICAgICAgICBfX2NvbXApOwp9Cgpjb25zdCBpbnQgX19zdGxfY2h1
bmtfc2l6ZSA9IDc7CiAgICAgICAgCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwg
Y2xhc3MgX0Rpc3RhbmNlPgp2b2lkIF9fY2h1bmtfaW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFjY2Vz
c0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNz
SXRlciBfX2xhc3QsIF9EaXN0YW5jZSBfX2NodW5rX3NpemUpCnsKICB3aGlsZSAoX19sYXN0IC0g
X19maXJzdCA+PSBfX2NodW5rX3NpemUpIHsKICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwg
X19maXJzdCArIF9fY2h1bmtfc2l6ZSk7CiAgICBfX2ZpcnN0ICs9IF9fY2h1bmtfc2l6ZTsKICB9
CiAgX19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9EaXN0YW5jZSwgY2xhc3MgX0NvbXBhcmU+CnZvaWQg
X19jaHVua19pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2NodW5rX3NpemUsIF9Db21wYXJlIF9fY29t
cCkKewogIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID49IF9fY2h1bmtfc2l6ZSkgewogICAgX19p
bnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2ZpcnN0ICsgX19jaHVua19zaXplLCBfX2NvbXApOwog
ICAgX19maXJzdCArPSBfX2NodW5rX3NpemU7CiAgfQogIF9faW5zZXJ0aW9uX3NvcnQoX19maXJz
dCwgX19sYXN0LCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIs
IGNsYXNzIF9Qb2ludGVyLCBjbGFzcyBfRGlzdGFuY2U+CnZvaWQgX19tZXJnZV9zb3J0X3dpdGhf
YnVmZmVyKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UqKSB7CiAgX0Rpc3RhbmNlIF9fbGVu
ID0gX19sYXN0IC0gX19maXJzdDsKICBfUG9pbnRlciBfX2J1ZmZlcl9sYXN0ID0gX19idWZmZXIg
KyBfX2xlbjsKCiAgX0Rpc3RhbmNlIF9fc3RlcF9zaXplID0gX19zdGxfY2h1bmtfc2l6ZTsKICBf
X2NodW5rX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19zdGVwX3NpemUpOwoKICB3
aGlsZSAoX19zdGVwX3NpemUgPCBfX2xlbikgewogICAgX19tZXJnZV9zb3J0X2xvb3AoX19maXJz
dCwgX19sYXN0LCBfX2J1ZmZlciwgX19zdGVwX3NpemUpOwogICAgX19zdGVwX3NpemUgKj0gMjsK
ICAgIF9fbWVyZ2Vfc29ydF9sb29wKF9fYnVmZmVyLCBfX2J1ZmZlcl9sYXN0LCBfX2ZpcnN0LCBf
X3N0ZXBfc2l6ZSk7CiAgICBfX3N0ZXBfc2l6ZSAqPSAyOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNz
IF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfUG9pbnRlciwgY2xhc3MgX0Rpc3RhbmNlLAogICAg
ICAgICAgY2xhc3MgX0NvbXBhcmU+CnZvaWQgX19tZXJnZV9zb3J0X3dpdGhfYnVmZmVyKF9SYW5k
b21BY2Nlc3NJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFu
ZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9Qb2ludGVyIF9fYnVmZmVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfRGlzdGFuY2UqLCBfQ29tcGFyZSBfX2NvbXApIHsKICBfRGlzdGFuY2Ug
X19sZW4gPSBfX2xhc3QgLSBfX2ZpcnN0OwogIF9Qb2ludGVyIF9fYnVmZmVyX2xhc3QgPSBfX2J1
ZmZlciArIF9fbGVuOwoKICBfRGlzdGFuY2UgX19zdGVwX3NpemUgPSBfX3N0bF9jaHVua19zaXpl
OwogIF9fY2h1bmtfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX3N0ZXBfc2l6ZSwg
X19jb21wKTsKCiAgd2hpbGUgKF9fc3RlcF9zaXplIDwgX19sZW4pIHsKICAgIF9fbWVyZ2Vfc29y
dF9sb29wKF9fZmlyc3QsIF9fbGFzdCwgX19idWZmZXIsIF9fc3RlcF9zaXplLCBfX2NvbXApOwog
ICAgX19zdGVwX3NpemUgKj0gMjsKICAgIF9fbWVyZ2Vfc29ydF9sb29wKF9fYnVmZmVyLCBfX2J1
ZmZlcl9sYXN0LCBfX2ZpcnN0LCBfX3N0ZXBfc2l6ZSwgX19jb21wKTsKICAgIF9fc3RlcF9zaXpl
ICo9IDI7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9Q
b2ludGVyLCBjbGFzcyBfRGlzdGFuY2U+CnZvaWQgX19zdGFibGVfc29ydF9hZGFwdGl2ZShfUmFu
ZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5k
b21BY2Nlc3NJdGVyIF9fbGFzdCwgX1BvaW50ZXIgX19idWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkgewogIF9EaXN0YW5jZSBfX2xlbiA9
IChfX2xhc3QgLSBfX2ZpcnN0ICsgMSkgLyAyOwogIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxl
ID0gX19maXJzdCArIF9fbGVuOwogIGlmIChfX2xlbiA+IF9fYnVmZmVyX3NpemUpIHsKICAgIF9f
c3RhYmxlX3NvcnRfYWRhcHRpdmUoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyLCBfX2J1ZmZl
cl9zaXplKTsKICAgIF9fc3RhYmxlX3NvcnRfYWRhcHRpdmUoX19taWRkbGUsIF9fbGFzdCwgX19i
dWZmZXIsIF9fYnVmZmVyX3NpemUpOwogIH0KICBlbHNlIHsKICAgIF9fbWVyZ2Vfc29ydF93aXRo
X2J1ZmZlcihfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIsIChfRGlzdGFuY2UqKTApOwogICAg
X19tZXJnZV9zb3J0X3dpdGhfYnVmZmVyKF9fbWlkZGxlLCBfX2xhc3QsIF9fYnVmZmVyLCAoX0Rp
c3RhbmNlKikwKTsKICB9CiAgX19tZXJnZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19s
YXN0LCBfRGlzdGFuY2UoX19taWRkbGUgLSBfX2ZpcnN0KSwgCiAgICAgICAgICAgICAgICAgICBf
RGlzdGFuY2UoX19sYXN0IC0gX19taWRkbGUpLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1BvaW50ZXIsIGNsYXNz
IF9EaXN0YW5jZSwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZT4Kdm9pZCBfX3N0YWJsZV9zb3J0
X2FkYXB0aXZlKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfUG9pbnRlciBfX2J1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplLCBfQ29tcGFy
ZSBfX2NvbXApIHsKICBfRGlzdGFuY2UgX19sZW4gPSAoX19sYXN0IC0gX19maXJzdCArIDEpIC8g
MjsKICBfUmFuZG9tQWNjZXNzSXRlciBfX21pZGRsZSA9IF9fZmlyc3QgKyBfX2xlbjsKICBpZiAo
X19sZW4gPiBfX2J1ZmZlcl9zaXplKSB7CiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fZmly
c3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29tcCk7CiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fbWlkZGxlLCBf
X2xhc3QsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb21wKTsKICB9CiAgZWxzZSB7CiAgICBfX21lcmdlX3NvcnRfd2l0aF9idWZmZXIoX19m
aXJzdCwgX19taWRkbGUsIF9fYnVmZmVyLCAoX0Rpc3RhbmNlKikwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb21wKTsKICAgIF9fbWVyZ2Vfc29ydF93aXRoX2J1ZmZlcihfX21p
ZGRsZSwgX19sYXN0LCBfX2J1ZmZlciwgKF9EaXN0YW5jZSopMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29tcCk7CiAgfQogIF9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19t
aWRkbGUsIF9fbGFzdCwgX0Rpc3RhbmNlKF9fbWlkZGxlIC0gX19maXJzdCksIAogICAgICAgICAg
ICAgICAgICAgX0Rpc3RhbmNlKF9fbGFzdCAtIF9fbWlkZGxlKSwgX19idWZmZXIsIF9fYnVmZmVy
X3NpemUsCiAgICAgICAgICAgICAgICAgICBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jh
bmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBf
X3N0YWJsZV9zb3J0X2F1eChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCosIF9EaXN0YW5j
ZSopIHsKICBfVGVtcG9yYXJ5X2J1ZmZlcjxfUmFuZG9tQWNjZXNzSXRlciwgX1RwPiBidWYoX19m
aXJzdCwgX19sYXN0KTsKICBpZiAoYnVmLmJlZ2luKCkgPT0gMCkKICAgIF9faW5wbGFjZV9zdGFi
bGVfc29ydChfX2ZpcnN0LCBfX2xhc3QpOwogIGVsc2UgCiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0
aXZlKF9fZmlyc3QsIF9fbGFzdCwgYnVmLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9EaXN0YW5jZShidWYuc2l6ZSgpKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNj
ZXNzSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9Db21wYXJlPgppbmxp
bmUgdm9pZCBfX3N0YWJsZV9zb3J0X2F1eChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCos
IF9EaXN0YW5jZSosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29t
cCkgewogIF9UZW1wb3JhcnlfYnVmZmVyPF9SYW5kb21BY2Nlc3NJdGVyLCBfVHA+IGJ1ZihfX2Zp
cnN0LCBfX2xhc3QpOwogIGlmIChidWYuYmVnaW4oKSA9PSAwKQogICAgX19pbnBsYWNlX3N0YWJs
ZV9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsKICBlbHNlIAogICAgX19zdGFibGVfc29y
dF9hZGFwdGl2ZShfX2ZpcnN0LCBfX2xhc3QsIGJ1Zi5iZWdpbigpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBfRGlzdGFuY2UoYnVmLnNpemUoKSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcj4KaW5saW5l
IHZvaWQgc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KSB7CiAgX19zdGFibGVfc29ydF9h
dXgoX19maXJzdCwgX19sYXN0LAogICAgICAgICAgICAgICAgICAgIF9fdmFsdWVfdHlwZSggX19m
aXJzdCApICwKICAgICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSAp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgpp
bmxpbmUgdm9pZCBzdGFibGVfc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9Db21wYXJlIF9fY29t
cCkgewogIF9fc3RhYmxlX3NvcnRfYXV4KF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAsCiAgICAgICAgICAgICAgICAgICAgX19kaXN0
YW5jZV90eXBlKCBfX2ZpcnN0ICkgLCAKICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwp9Cgog
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcD4Kdm9pZCBfX3Bh
cnRpYWxfc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBf
X21pZGRsZSwKICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9U
cCopIHsKICBtYWtlX2hlYXAoX19maXJzdCwgX19taWRkbGUpOwogIGZvciAoX1JhbmRvbUFjY2Vz
c0l0ZXIgX19pID0gX19taWRkbGU7IF9faSA8IF9fbGFzdDsgKytfX2kpCiAgICBpZiAoKl9faSA8
ICpfX2ZpcnN0KSAKICAgICAgX19wb3BfaGVhcChfX2ZpcnN0LCBfX21pZGRsZSwgX19pLCBfVHAo
Kl9faSksCiAgICAgICAgICAgICAgICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsKICBz
b3J0X2hlYXAoX19maXJzdCwgX19taWRkbGUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFj
Y2Vzc0l0ZXI+CmlubGluZSB2b2lkIHBhcnRpYWxfc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2Zp
cnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpIHsKICBf
X3BhcnRpYWxfc29ydChfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9f
Zmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9U
cCwgY2xhc3MgX0NvbXBhcmU+CnZvaWQgX19wYXJ0aWFsX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIg
X19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfVHAqLCBfQ29tcGFyZSBfX2NvbXApIHsKICBtYWtl
X2hlYXAoX19maXJzdCwgX19taWRkbGUsIF9fY29tcCk7CiAgZm9yIChfUmFuZG9tQWNjZXNzSXRl
ciBfX2kgPSBfX21pZGRsZTsgX19pIDwgX19sYXN0OyArK19faSkKICAgIGlmIChfX2NvbXAoKl9f
aSwgKl9fZmlyc3QpKQogICAgICBfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2ksIF9U
cCgqX19pKSwgX19jb21wLAogICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZSggX19maXJz
dCApICk7CiAgc29ydF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2NvbXApOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCBw
YXJ0aWFsX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApIHsKICBfX3BhcnRp
YWxfc29ydChfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3Qg
KSAsIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9t
QWNjZXNzSXRlciwgY2xhc3MgX0Rpc3RhbmNlLAogICAgICAgICAgY2xhc3MgX1RwPgpfUmFuZG9t
QWNjZXNzSXRlciBfX3BhcnRpYWxfc29ydF9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyIF9fbGFzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBf
X3Jlc3VsdF9maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
UmFuZG9tQWNjZXNzSXRlciBfX3Jlc3VsdF9sYXN0LCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfRGlzdGFuY2UqLCBfVHAqKSB7CiAgaWYgKF9fcmVzdWx0X2ZpcnN0
ID09IF9fcmVzdWx0X2xhc3QpIHJldHVybiBfX3Jlc3VsdF9sYXN0OwogIF9SYW5kb21BY2Nlc3NJ
dGVyIF9fcmVzdWx0X3JlYWxfbGFzdCA9IF9fcmVzdWx0X2ZpcnN0OwogIHdoaWxlKF9fZmlyc3Qg
IT0gX19sYXN0ICYmIF9fcmVzdWx0X3JlYWxfbGFzdCAhPSBfX3Jlc3VsdF9sYXN0KSB7CiAgICAq
X19yZXN1bHRfcmVhbF9sYXN0ID0gKl9fZmlyc3Q7CiAgICArK19fcmVzdWx0X3JlYWxfbGFzdDsK
ICAgICsrX19maXJzdDsKICB9CiAgbWFrZV9oZWFwKF9fcmVzdWx0X2ZpcnN0LCBfX3Jlc3VsdF9y
ZWFsX2xhc3QpOwogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgaWYgKCpfX2ZpcnN0
IDwgKl9fcmVzdWx0X2ZpcnN0KSAKICAgICAgX19hZGp1c3RfaGVhcChfX3Jlc3VsdF9maXJzdCwg
X0Rpc3RhbmNlKDApLAogICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZShfX3Jlc3VsdF9yZWFs
X2xhc3QgLSBfX3Jlc3VsdF9maXJzdCksCiAgICAgICAgICAgICAgICAgICAgX1RwKCpfX2ZpcnN0
KSk7CiAgICArK19fZmlyc3Q7CiAgfQogIHNvcnRfaGVhcChfX3Jlc3VsdF9maXJzdCwgX19yZXN1
bHRfcmVhbF9sYXN0KTsKICByZXR1cm4gX19yZXN1bHRfcmVhbF9sYXN0Owp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXI+CmlubGluZSBfUmFuZG9t
QWNjZXNzSXRlcgpwYXJ0aWFsX3NvcnRfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0
ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jlc3VsdF9m
aXJzdCwKICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19yZXN1bHRfbGFzdCkg
ewogIHJldHVybiBfX3BhcnRpYWxfc29ydF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHRf
Zmlyc3QsIF9fcmVzdWx0X2xhc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGlz
dGFuY2VfdHlwZSggX19yZXN1bHRfZmlyc3QgKSAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0
ZXIsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFyZSwKICAgICAgICAgIGNs
YXNzIF9EaXN0YW5jZSwgY2xhc3MgX1RwPgpfUmFuZG9tQWNjZXNzSXRlciBfX3BhcnRpYWxfc29y
dF9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jlc3VsdF9maXJzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jlc3Vs
dF9sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJl
IF9fY29tcCwgX0Rpc3RhbmNlKiwgX1RwKikgewogIGlmIChfX3Jlc3VsdF9maXJzdCA9PSBfX3Jl
c3VsdF9sYXN0KSByZXR1cm4gX19yZXN1bHRfbGFzdDsKICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jl
c3VsdF9yZWFsX2xhc3QgPSBfX3Jlc3VsdF9maXJzdDsKICB3aGlsZShfX2ZpcnN0ICE9IF9fbGFz
dCAmJiBfX3Jlc3VsdF9yZWFsX2xhc3QgIT0gX19yZXN1bHRfbGFzdCkgewogICAgKl9fcmVzdWx0
X3JlYWxfbGFzdCA9ICpfX2ZpcnN0OwogICAgKytfX3Jlc3VsdF9yZWFsX2xhc3Q7CiAgICArK19f
Zmlyc3Q7CiAgfQogIG1ha2VfaGVhcChfX3Jlc3VsdF9maXJzdCwgX19yZXN1bHRfcmVhbF9sYXN0
LCBfX2NvbXApOwogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgaWYgKF9fY29tcCgq
X19maXJzdCwgKl9fcmVzdWx0X2ZpcnN0KSkKICAgICAgX19hZGp1c3RfaGVhcChfX3Jlc3VsdF9m
aXJzdCwgX0Rpc3RhbmNlKDApLAogICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZShfX3Jlc3Vs
dF9yZWFsX2xhc3QgLSBfX3Jlc3VsdF9maXJzdCksCiAgICAgICAgICAgICAgICAgICAgX1RwKCpf
X2ZpcnN0KSwKICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwogICAgKytfX2ZpcnN0OwogIH0K
ICBzb3J0X2hlYXAoX19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0X3JlYWxfbGFzdCwgX19jb21wKTsK
ICByZXR1cm4gX19yZXN1bHRfcmVhbF9sYXN0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRl
ciwgY2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgX1JhbmRv
bUFjY2Vzc0l0ZXIKcGFydGlhbF9zb3J0X2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19yZXN1bHRf
Zmlyc3QsCiAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0X2xhc3Qs
IF9Db21wYXJlIF9fY29tcCkgewogIHJldHVybiBfX3BhcnRpYWxfc29ydF9jb3B5KF9fZmlyc3Qs
IF9fbGFzdCwgX19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0X2xhc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb21wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGlzdGFu
Y2VfdHlwZSggX19yZXN1bHRfZmlyc3QgKSAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21B
Y2Nlc3NJdGVyLCBjbGFzcyBfVHA+CnZvaWQgX19udGhfZWxlbWVudChfUmFuZG9tQWNjZXNzSXRl
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX250aCwKICAgICAgICAgICAgICAgICAgIF9S
YW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1RwKikgewogIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0
ID4gMykgewogICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19jdXQgPQogICAgICBfX3VuZ3VhcmRlZF9w
YXJ0aXRpb24oX19maXJzdCwgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX1Rw
KF9fbWVkaWFuKCpfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICooX19maXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0KS8yKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqKF9fbGFzdCAtIDEpKSkpOwogICAgaWYgKF9fY3V0IDw9
IF9fbnRoKQogICAgICBfX2ZpcnN0ID0gX19jdXQ7CiAgICBlbHNlIAogICAgICBfX2xhc3QgPSBf
X2N1dDsKICB9CiAgX19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXI+CmlubGluZSB2b2lkIG50aF9lbGVtZW50KF9SYW5k
b21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbnRoLAogICAgICAgICAg
ICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpIHsKICBfX250aF9lbGVtZW50
KF9fZmlyc3QsIF9fbnRoLCBfX2xhc3QsIF9fdmFsdWVfdHlwZSggX19maXJzdCApICk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFy
ZT4Kdm9pZCBfX250aF9lbGVtZW50KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyIF9fbnRoLAogICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19s
YXN0LCBfVHAqLCBfQ29tcGFyZSBfX2NvbXApIHsKICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+
IDMpIHsKICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fY3V0ID0KICAgICAgX191bmd1YXJkZWRfcGFy
dGl0aW9uKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UcChf
X21lZGlhbigqX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqKF9fZmlyc3QgKyAoX19sYXN0IC0gX19maXJzdCkvMiksIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICooX19sYXN0IC0gMSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb21wKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbXApOwogICAgaWYgKF9fY3V0IDw9IF9fbnRoKQogICAgICBfX2ZpcnN0ID0gX19jdXQ7
CiAgICBlbHNlIAogICAgICBfX2xhc3QgPSBfX2N1dDsKICB9CiAgX19pbnNlcnRpb25fc29ydChf
X2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNz
SXRlciwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSB2b2lkIG50aF9lbGVtZW50KF9SYW5kb21BY2Nl
c3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbnRoLAogICAgICAgICAgICAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKSB7CiAgX19udGhfZWxl
bWVudChfX2ZpcnN0LCBfX250aCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAsIF9f
Y29tcCk7Cn0KCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHAsIGNs
YXNzIF9EaXN0YW5jZT4KX0ZvcndhcmRJdGVyIF9fbG93ZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IF9UcCYgX192YWwsIF9EaXN0YW5jZSopIAp7CiAgX0Rpc3RhbmNlIF9fbGVuID0gMDsKICBk
aXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fbGVuKTsKICBfRGlzdGFuY2UgX19oYWxmOwogIF9G
b3J3YXJkSXRlciBfX21pZGRsZTsKCiAgd2hpbGUgKF9fbGVuID4gMCkgewogICAgX19oYWxmID0g
X19sZW4gPj4gMTsKICAgIF9fbWlkZGxlID0gX19maXJzdDsKICAgIGFkdmFuY2UoX19taWRkbGUs
IF9faGFsZik7CiAgICBpZiAoKl9fbWlkZGxlIDwgX192YWwpIHsKICAgICAgX19maXJzdCA9IF9f
bWlkZGxlOwogICAgICArK19fZmlyc3Q7CiAgICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAx
OwogICAgfQogICAgZWxzZQogICAgICBfX2xlbiA9IF9faGFsZjsKICB9CiAgcmV0dXJuIF9fZmly
c3Q7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIF9G
b3J3YXJkSXRlciBsb3dlcl9ib3VuZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVy
IF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9f
dmFsKSB7CiAgcmV0dXJuIF9fbG93ZXJfYm91bmQoX19maXJzdCwgX19sYXN0LCBfX3ZhbCwKICAg
ICAgICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlLCBjbGFz
cyBfRGlzdGFuY2U+Cl9Gb3J3YXJkSXRlciBfX2xvd2VyX2JvdW5kKF9Gb3J3YXJkSXRlciBfX2Zp
cnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBfVHAmIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXAsIF9EaXN0YW5jZSopCnsKICBfRGlzdGFu
Y2UgX19sZW4gPSAwOwogIGRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX19sZW4pOwogIF9EaXN0
YW5jZSBfX2hhbGY7CiAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlOwoKICB3aGlsZSAoX19sZW4gPiAw
KSB7CiAgICBfX2hhbGYgPSBfX2xlbiA+PiAxOwogICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICAg
YWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsKICAgIGlmIChfX2NvbXAoKl9fbWlkZGxlLCBfX3Zh
bCkpIHsKICAgICAgX19maXJzdCA9IF9fbWlkZGxlOwogICAgICArK19fZmlyc3Q7CiAgICAgIF9f
bGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgfQogICAgZWxzZQogICAgICBfX2xlbiA9IF9f
aGFsZjsKICB9CiAgcmV0dXJuIF9fZmlyc3Q7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0
ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSBfRm9yd2FyZEl0ZXIgbG93ZXJf
Ym91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCwgX0NvbXBhcmUgX19jb21w
KSB7CiAgcmV0dXJuIF9fbG93ZXJfYm91bmQoX19maXJzdCwgX19sYXN0LCBfX3ZhbCwgX19jb21w
LAogICAgICAgICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZSggX19maXJzdCApICk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNl
PgpfRm9yd2FyZEl0ZXIgX191cHBlcl9ib3VuZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0Zvcndh
cmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3Zh
bCwgX0Rpc3RhbmNlKikKewogIF9EaXN0YW5jZSBfX2xlbiA9IDA7CiAgZGlzdGFuY2UoX19maXJz
dCwgX19sYXN0LCBfX2xlbik7CiAgX0Rpc3RhbmNlIF9faGFsZjsKICBfRm9yd2FyZEl0ZXIgX19t
aWRkbGU7CgogIHdoaWxlIChfX2xlbiA+IDApIHsKICAgIF9faGFsZiA9IF9fbGVuID4+IDE7CiAg
ICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICBhZHZhbmNlKF9fbWlkZGxlLCBfX2hhbGYpOwogICAg
aWYgKF9fdmFsIDwgKl9fbWlkZGxlKQogICAgICBfX2xlbiA9IF9faGFsZjsKICAgIGVsc2Ugewog
ICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICsrX19maXJzdDsKICAgICAgX19sZW4gPSBf
X2xlbiAtIF9faGFsZiAtIDE7CiAgICB9CiAgfQogIHJldHVybiBfX2ZpcnN0Owp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CmlubGluZSBfRm9yd2FyZEl0ZXIgdXBw
ZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCkgewogIHJldHVybiBf
X3VwcGVyX2JvdW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3
YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0Rpc3RhbmNlPgpfRm9y
d2FyZEl0ZXIgX191cHBlcl9ib3VuZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVy
IF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCwgX0Nv
bXBhcmUgX19jb21wLCBfRGlzdGFuY2UqKQp7CiAgX0Rpc3RhbmNlIF9fbGVuID0gMDsKICBkaXN0
YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fbGVuKTsKICBfRGlzdGFuY2UgX19oYWxmOwogIF9Gb3J3
YXJkSXRlciBfX21pZGRsZTsKCiAgd2hpbGUgKF9fbGVuID4gMCkgewogICAgX19oYWxmID0gX19s
ZW4gPj4gMTsKICAgIF9fbWlkZGxlID0gX19maXJzdDsKICAgIGFkdmFuY2UoX19taWRkbGUsIF9f
aGFsZik7CiAgICBpZiAoX19jb21wKF9fdmFsLCAqX19taWRkbGUpKQogICAgICBfX2xlbiA9IF9f
aGFsZjsKICAgIGVsc2UgewogICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICsrX19maXJz
dDsKICAgICAgX19sZW4gPSBfX2xlbiAtIF9faGFsZiAtIDE7CiAgICB9CiAgfQogIHJldHVybiBf
X2ZpcnN0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHAsIGNsYXNz
IF9Db21wYXJlPgppbmxpbmUgX0ZvcndhcmRJdGVyIHVwcGVyX2JvdW5kKF9Gb3J3YXJkSXRlciBf
X2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IF9UcCYgX192YWwsIF9Db21wYXJlIF9fY29tcCkgewogIHJldHVybiBfX3VwcGVy
X2JvdW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWwsIF9fY29tcCwKICAgICAgICAgICAgICAgICAg
ICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0Zv
cndhcmRJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4KcGFpcjxfRm9yd2FyZEl0ZXIs
IF9Gb3J3YXJkSXRlcj4KX19lcXVhbF9yYW5nZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0Zvcndh
cmRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbCwKICAgICAgICAgICAgICBfRGlzdGFuY2Uq
KQp7CiAgX0Rpc3RhbmNlIF9fbGVuID0gMDsKICBkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9f
bGVuKTsKICBfRGlzdGFuY2UgX19oYWxmOwogIF9Gb3J3YXJkSXRlciBfX21pZGRsZSwgX19sZWZ0
LCBfX3JpZ2h0OwoKICB3aGlsZSAoX19sZW4gPiAwKSB7CiAgICBfX2hhbGYgPSBfX2xlbiA+PiAx
OwogICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICAgYWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsK
ICAgIGlmICgqX19taWRkbGUgPCBfX3ZhbCkgewogICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAg
ICAgICsrX19maXJzdDsKICAgICAgX19sZW4gPSBfX2xlbiAtIF9faGFsZiAtIDE7CiAgICB9CiAg
ICBlbHNlIGlmIChfX3ZhbCA8ICpfX21pZGRsZSkKICAgICAgX19sZW4gPSBfX2hhbGY7CiAgICBl
bHNlIHsKICAgICAgX19sZWZ0ID0gbG93ZXJfYm91bmQoX19maXJzdCwgX19taWRkbGUsIF9fdmFs
KTsKICAgICAgYWR2YW5jZShfX2ZpcnN0LCBfX2xlbik7CiAgICAgIF9fcmlnaHQgPSB1cHBlcl9i
b3VuZCgrK19fbWlkZGxlLCBfX2ZpcnN0LCBfX3ZhbCk7CiAgICAgIHJldHVybiBwYWlyPF9Gb3J3
YXJkSXRlciwgX0ZvcndhcmRJdGVyPihfX2xlZnQsIF9fcmlnaHQpOwogICAgfQogIH0KICByZXR1
cm4gcGFpcjxfRm9yd2FyZEl0ZXIsIF9Gb3J3YXJkSXRlcj4oX19maXJzdCwgX19maXJzdCk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIHBhaXI8X0Zv
cndhcmRJdGVyLCBfRm9yd2FyZEl0ZXI+CmVxdWFsX3JhbmdlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0
LCBfRm9yd2FyZEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9fdmFsKSB7CiAgcmV0dXJuIF9fZXF1
YWxfcmFuZ2UoX19maXJzdCwgX19sYXN0LCBfX3ZhbCwKICAgICAgICAgICAgICAgICAgICAgICBf
X2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJ
dGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfRGlzdGFuY2U+CnBhaXI8X0Zv
cndhcmRJdGVyLCBfRm9yd2FyZEl0ZXI+Cl9fZXF1YWxfcmFuZ2UoX0ZvcndhcmRJdGVyIF9fZmly
c3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWwsCiAgICAgICAgICAgICAg
X0NvbXBhcmUgX19jb21wLCBfRGlzdGFuY2UqKQp7CiAgX0Rpc3RhbmNlIF9fbGVuID0gMDsKICBk
aXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fbGVuKTsKICBfRGlzdGFuY2UgX19oYWxmOwogIF9G
b3J3YXJkSXRlciBfX21pZGRsZSwgX19sZWZ0LCBfX3JpZ2h0OwoKICB3aGlsZSAoX19sZW4gPiAw
KSB7CiAgICBfX2hhbGYgPSBfX2xlbiA+PiAxOwogICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICAg
YWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsKICAgIGlmIChfX2NvbXAoKl9fbWlkZGxlLCBfX3Zh
bCkpIHsKICAgICAgX19maXJzdCA9IF9fbWlkZGxlOwogICAgICArK19fZmlyc3Q7CiAgICAgIF9f
bGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgfQogICAgZWxzZSBpZiAoX19jb21wKF9fdmFs
LCAqX19taWRkbGUpKQogICAgICBfX2xlbiA9IF9faGFsZjsKICAgIGVsc2UgewogICAgICBfX2xl
ZnQgPSBsb3dlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgX192YWwsIF9fY29tcCk7CiAgICAg
IGFkdmFuY2UoX19maXJzdCwgX19sZW4pOwogICAgICBfX3JpZ2h0ID0gdXBwZXJfYm91bmQoKytf
X21pZGRsZSwgX19maXJzdCwgX192YWwsIF9fY29tcCk7CiAgICAgIHJldHVybiBwYWlyPF9Gb3J3
YXJkSXRlciwgX0ZvcndhcmRJdGVyPihfX2xlZnQsIF9fcmlnaHQpOwogICAgfQogIH0KICByZXR1
cm4gcGFpcjxfRm9yd2FyZEl0ZXIsIF9Gb3J3YXJkSXRlcj4oX19maXJzdCwgX19maXJzdCk7Cn0g
ICAgICAgICAgIAoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFz
cyBfQ29tcGFyZT4KaW5saW5lIHBhaXI8X0ZvcndhcmRJdGVyLCBfRm9yd2FyZEl0ZXI+CmVxdWFs
X3JhbmdlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LCBjb25zdCBf
VHAmIF9fdmFsLAogICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICByZXR1cm4gX19lcXVh
bF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsLCBfX2NvbXAsCiAgICAgICAgICAgICAgICAg
ICAgICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsKfSAKCnRlbXBsYXRlIDxjbGFzcyBf
Rm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KYm9vbCBiaW5hcnlfc2VhcmNoKF9Gb3J3YXJkSXRlciBf
X2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgY29uc3QgX1Rw
JiBfX3ZhbCkgewogIF9Gb3J3YXJkSXRlciBfX2kgPSBsb3dlcl9ib3VuZChfX2ZpcnN0LCBfX2xh
c3QsIF9fdmFsKTsKICByZXR1cm4gX19pICE9IF9fbGFzdCAmJiAhKF9fdmFsIDwgKl9faSk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+
CmJvb2wgYmluYXJ5X3NlYXJjaChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsCiAgICAgICAgICAgICAg
ICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICBfRm9yd2FyZEl0ZXIgX19pID0gbG93ZXJfYm91bmQo
X19maXJzdCwgX19sYXN0LCBfX3ZhbCwgX19jb21wKTsKICByZXR1cm4gX19pICE9IF9fbGFzdCAm
JiAhX19jb21wKF9fdmFsLCAqX19pKTsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIx
LCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVyIG1lcmdl
KF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAg
ICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwKICAgICAgICAg
ICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsKICB3aGlsZSAoX19maXJzdDEgIT0gX19s
YXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKSB7CiAgICBpZiAoKl9fZmlyc3QyIDwgKl9fZmly
c3QxKSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsKICAgICAgKytfX2ZpcnN0MjsKICAg
IH0KICAgIGVsc2UgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICsrX19maXJz
dDE7CiAgICB9CiAgICArK19fcmVzdWx0OwogIH0KICByZXR1cm4gY29weShfX2ZpcnN0MiwgX19s
YXN0MiwgY29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpKTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXIsCiAg
ICAgICAgICBjbGFzcyBfQ29tcGFyZT4KX091dHB1dEl0ZXIgbWVyZ2UoX0lucHV0SXRlcjEgX19m
aXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIy
IF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICBfT3V0cHV0
SXRlciBfX3Jlc3VsdCwgX0NvbXBhcmUgX19jb21wKSB7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9f
bGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikgewogICAgaWYgKF9fY29tcCgqX19maXJzdDIs
ICpfX2ZpcnN0MSkpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QyOwogICAgICArK19fZmly
c3QyOwogICAgfQogICAgZWxzZSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAg
KytfX2ZpcnN0MTsKICAgIH0KICAgICsrX19yZXN1bHQ7CiAgfQogIHJldHVybiBjb3B5KF9fZmly
c3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCkpOwp9CgogCgp0
ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfRGlzdGFuY2U+CnZvaWQg
X19tZXJnZV93aXRob3V0X2J1ZmZlcihfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UgX19sZW4xLCBfRGlzdGFuY2UgX19sZW4yKSB7
CiAgaWYgKF9fbGVuMSA9PSAwIHx8IF9fbGVuMiA9PSAwKQogICAgcmV0dXJuOwogIGlmIChfX2xl
bjEgKyBfX2xlbjIgPT0gMikgewogICAgaWYgKCpfX21pZGRsZSA8ICpfX2ZpcnN0KQogICAgICBp
dGVyX3N3YXAoX19maXJzdCwgX19taWRkbGUpOwogICAgcmV0dXJuOwogIH0KICBfQmlkaXJlY3Rp
b25hbEl0ZXIgX19maXJzdF9jdXQgPSBfX2ZpcnN0OwogIF9CaWRpcmVjdGlvbmFsSXRlciBfX3Nl
Y29uZF9jdXQgPSBfX21pZGRsZTsKICBfRGlzdGFuY2UgX19sZW4xMSA9IDA7CiAgX0Rpc3RhbmNl
IF9fbGVuMjIgPSAwOwogIGlmIChfX2xlbjEgPiBfX2xlbjIpIHsKICAgIF9fbGVuMTEgPSBfX2xl
bjEgLyAyOwogICAgYWR2YW5jZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgICBfX3NlY29uZF9j
dXQgPSBsb3dlcl9ib3VuZChfX21pZGRsZSwgX19sYXN0LCAqX19maXJzdF9jdXQpOwogICAgZGlz
dGFuY2UoX19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sZW4yMik7CiAgfQogIGVsc2UgewogICAg
X19sZW4yMiA9IF9fbGVuMiAvIDI7CiAgICBhZHZhbmNlKF9fc2Vjb25kX2N1dCwgX19sZW4yMik7
CiAgICBfX2ZpcnN0X2N1dCA9IHVwcGVyX2JvdW5kKF9fZmlyc3QsIF9fbWlkZGxlLCAqX19zZWNv
bmRfY3V0KTsKICAgIGRpc3RhbmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX2xlbjExKTsKICB9
CiAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbmV3X21pZGRsZQogICAgPSByb3RhdGUoX19maXJzdF9j
dXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQpOwogIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19m
aXJzdCwgX19maXJzdF9jdXQsIF9fbmV3X21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
IF9fbGVuMTEsIF9fbGVuMjIpOwogIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19uZXdfbWlkZGxl
LCBfX3NlY29uZF9jdXQsIF9fbGFzdCwgX19sZW4xIC0gX19sZW4xMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fbGVuMiAtIF9fbGVuMjIpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0
aW9uYWxJdGVyLCBjbGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9fbWVyZ2Vf
d2l0aG91dF9idWZmZXIoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkgewogIGlmIChfX2xlbjEgPT0gMCB8
fCBfX2xlbjIgPT0gMCkKICAgIHJldHVybjsKICBpZiAoX19sZW4xICsgX19sZW4yID09IDIpIHsK
ICAgIGlmIChfX2NvbXAoKl9fbWlkZGxlLCAqX19maXJzdCkpCiAgICAgIGl0ZXJfc3dhcChfX2Zp
cnN0LCBfX21pZGRsZSk7CiAgICByZXR1cm47CiAgfQogIF9CaWRpcmVjdGlvbmFsSXRlciBfX2Zp
cnN0X2N1dCA9IF9fZmlyc3Q7CiAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fc2Vjb25kX2N1dCA9IF9f
bWlkZGxlOwogIF9EaXN0YW5jZSBfX2xlbjExID0gMDsKICBfRGlzdGFuY2UgX19sZW4yMiA9IDA7
CiAgaWYgKF9fbGVuMSA+IF9fbGVuMikgewogICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7CiAgICBh
ZHZhbmNlKF9fZmlyc3RfY3V0LCBfX2xlbjExKTsKICAgIF9fc2Vjb25kX2N1dCA9IGxvd2VyX2Jv
dW5kKF9fbWlkZGxlLCBfX2xhc3QsICpfX2ZpcnN0X2N1dCwgX19jb21wKTsKICAgIGRpc3RhbmNl
KF9fbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGVuMjIpOwogIH0KICBlbHNlIHsKICAgIF9fbGVu
MjIgPSBfX2xlbjIgLyAyOwogICAgYWR2YW5jZShfX3NlY29uZF9jdXQsIF9fbGVuMjIpOwogICAg
X19maXJzdF9jdXQgPSB1cHBlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1
dCwgX19jb21wKTsKICAgIGRpc3RhbmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX2xlbjExKTsK
ICB9CiAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbmV3X21pZGRsZQogICAgPSByb3RhdGUoX19maXJz
dF9jdXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQpOwogIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIo
X19maXJzdCwgX19maXJzdF9jdXQsIF9fbmV3X21pZGRsZSwgX19sZW4xMSwgX19sZW4yMiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCk7CiAgX19tZXJnZV93aXRob3V0X2J1ZmZlcihf
X25ld19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sYXN0LCBfX2xlbjEgLSBfX2xlbjExLAogICAg
ICAgICAgICAgICAgICAgICAgICAgX19sZW4yIC0gX19sZW4yMiwgX19jb21wKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjEsIGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjIs
CiAgICAgICAgICBjbGFzcyBfRGlzdGFuY2U+Cl9CaWRpcmVjdGlvbmFsSXRlcjEgX19yb3RhdGVf
YWRhcHRpdmUoX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19taWRkbGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwg
X0Rpc3RhbmNlIF9fbGVuMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
QmlkaXJlY3Rpb25hbEl0ZXIyIF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplKSB7CiAgX0JpZGlyZWN0aW9uYWxJdGVy
MiBfX2J1ZmZlcl9lbmQ7CiAgaWYgKF9fbGVuMSA+IF9fbGVuMiAmJiBfX2xlbjIgPD0gX19idWZm
ZXJfc2l6ZSkgewogICAgX19idWZmZXJfZW5kID0gY29weShfX21pZGRsZSwgX19sYXN0LCBfX2J1
ZmZlcik7CiAgICBjb3B5X2JhY2t3YXJkKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QpOwogICAg
cmV0dXJuIGNvcHkoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwgX19maXJzdCk7CiAgfQogIGVsc2Ug
aWYgKF9fbGVuMSA8PSBfX2J1ZmZlcl9zaXplKSB7CiAgICBfX2J1ZmZlcl9lbmQgPSBjb3B5KF9f
Zmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlcik7CiAgICBjb3B5KF9fbWlkZGxlLCBfX2xhc3QsIF9f
Zmlyc3QpOwogICAgcmV0dXJuIGNvcHlfYmFja3dhcmQoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwg
X19sYXN0KTsKICB9CiAgZWxzZQogICAgcmV0dXJuIHJvdGF0ZShfX2ZpcnN0LCBfX21pZGRsZSwg
X19sYXN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjEsIGNsYXNzIF9C
aWRpcmVjdGlvbmFsSXRlcjIsCiAgICAgICAgICBjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIzPgpf
QmlkaXJlY3Rpb25hbEl0ZXIzIF9fbWVyZ2VfYmFja3dhcmQoX0JpZGlyZWN0aW9uYWxJdGVyMSBf
X2ZpcnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlv
bmFsSXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9C
aWRpcmVjdGlvbmFsSXRlcjIgX19maXJzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIzIF9fcmVzdWx0KSB7CiAgaWYgKF9f
Zmlyc3QxID09IF9fbGFzdDEpCiAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MiwgX19s
YXN0MiwgX19yZXN1bHQpOwogIGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QyKQogICAgcmV0dXJuIGNv
cHlfYmFja3dhcmQoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KTsKICAtLV9fbGFzdDE7CiAg
LS1fX2xhc3QyOwogIHdoaWxlICh0cnVlKSB7CiAgICBpZiAoKl9fbGFzdDIgPCAqX19sYXN0MSkg
ewogICAgICAqLS1fX3Jlc3VsdCA9ICpfX2xhc3QxOwogICAgICBpZiAoX19maXJzdDEgPT0gX19s
YXN0MSkKICAgICAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MiwgKytfX2xhc3QyLCBf
X3Jlc3VsdCk7CiAgICAgIC0tX19sYXN0MTsKICAgIH0KICAgIGVsc2UgewogICAgICAqLS1fX3Jl
c3VsdCA9ICpfX2xhc3QyOwogICAgICBpZiAoX19maXJzdDIgPT0gX19sYXN0MikKICAgICAgICBy
ZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MSwgKytfX2xhc3QxLCBfX3Jlc3VsdCk7CiAgICAg
IC0tX19sYXN0MjsKICAgIH0KICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0
ZXIxLCBjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIyLAogICAgICAgICAgY2xhc3MgX0JpZGlyZWN0
aW9uYWxJdGVyMywgY2xhc3MgX0NvbXBhcmU+Cl9CaWRpcmVjdGlvbmFsSXRlcjMgX19tZXJnZV9i
YWNrd2FyZChfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3QxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2ZpcnN0MiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIg
X19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlv
bmFsSXRlcjMgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
Q29tcGFyZSBfX2NvbXApIHsKICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKICAgIHJldHVybiBj
b3B5X2JhY2t3YXJkKF9fZmlyc3QyLCBfX2xhc3QyLCBfX3Jlc3VsdCk7CiAgaWYgKF9fZmlyc3Qy
ID09IF9fbGFzdDIpCiAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MSwgX19sYXN0MSwg
X19yZXN1bHQpOwogIC0tX19sYXN0MTsKICAtLV9fbGFzdDI7CiAgd2hpbGUgKHRydWUpIHsKICAg
IGlmIChfX2NvbXAoKl9fbGFzdDIsICpfX2xhc3QxKSkgewogICAgICAqLS1fX3Jlc3VsdCA9ICpf
X2xhc3QxOwogICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKICAgICAgICByZXR1cm4gY29w
eV9iYWNrd2FyZChfX2ZpcnN0MiwgKytfX2xhc3QyLCBfX3Jlc3VsdCk7CiAgICAgIC0tX19sYXN0
MTsKICAgIH0KICAgIGVsc2UgewogICAgICAqLS1fX3Jlc3VsdCA9ICpfX2xhc3QyOwogICAgICBp
ZiAoX19maXJzdDIgPT0gX19sYXN0MikKICAgICAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2Zp
cnN0MSwgKytfX2xhc3QxLCBfX3Jlc3VsdCk7CiAgICAgIC0tX19sYXN0MjsKICAgIH0KICB9Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9EaXN0YW5jZSwgY2xh
c3MgX1BvaW50ZXI+CnZvaWQgX19tZXJnZV9hZGFwdGl2ZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19m
aXJzdCwKICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwg
CiAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAg
ICAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwKICAgICAg
ICAgICAgICAgICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UgX19idWZmZXJfc2l6
ZSkgewogIGlmIChfX2xlbjEgPD0gX19sZW4yICYmIF9fbGVuMSA8PSBfX2J1ZmZlcl9zaXplKSB7
CiAgICBfUG9pbnRlciBfX2J1ZmZlcl9lbmQgPSBjb3B5KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1
ZmZlcik7CiAgICBtZXJnZShfX2J1ZmZlciwgX19idWZmZXJfZW5kLCBfX21pZGRsZSwgX19sYXN0
LCBfX2ZpcnN0KTsKICB9CiAgZWxzZSBpZiAoX19sZW4yIDw9IF9fYnVmZmVyX3NpemUpIHsKICAg
IF9Qb2ludGVyIF9fYnVmZmVyX2VuZCA9IGNvcHkoX19taWRkbGUsIF9fbGFzdCwgX19idWZmZXIp
OwogICAgX19tZXJnZV9iYWNrd2FyZChfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIsIF9fYnVm
ZmVyX2VuZCwgX19sYXN0KTsKICB9CiAgZWxzZSB7CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19m
aXJzdF9jdXQgPSBfX2ZpcnN0OwogICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fc2Vjb25kX2N1dCA9
IF9fbWlkZGxlOwogICAgX0Rpc3RhbmNlIF9fbGVuMTEgPSAwOwogICAgX0Rpc3RhbmNlIF9fbGVu
MjIgPSAwOwogICAgaWYgKF9fbGVuMSA+IF9fbGVuMikgewogICAgICBfX2xlbjExID0gX19sZW4x
IC8gMjsKICAgICAgYWR2YW5jZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgICAgIF9fc2Vjb25k
X2N1dCA9IGxvd2VyX2JvdW5kKF9fbWlkZGxlLCBfX2xhc3QsICpfX2ZpcnN0X2N1dCk7CiAgICAg
IGRpc3RhbmNlKF9fbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGVuMjIpOyAKICAgIH0KICAgIGVs
c2UgewogICAgICBfX2xlbjIyID0gX19sZW4yIC8gMjsKICAgICAgYWR2YW5jZShfX3NlY29uZF9j
dXQsIF9fbGVuMjIpOwogICAgICBfX2ZpcnN0X2N1dCA9IHVwcGVyX2JvdW5kKF9fZmlyc3QsIF9f
bWlkZGxlLCAqX19zZWNvbmRfY3V0KTsKICAgICAgZGlzdGFuY2UoX19maXJzdCwgX19maXJzdF9j
dXQsIF9fbGVuMTEpOwogICAgfQogICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbmV3X21pZGRsZSA9
CiAgICAgIF9fcm90YXRlX2FkYXB0aXZlKF9fZmlyc3RfY3V0LCBfX21pZGRsZSwgX19zZWNvbmRf
Y3V0LCBfX2xlbjEgLSBfX2xlbjExLAogICAgICAgICAgICAgICAgICAgICAgICBfX2xlbjIyLCBf
X2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7CiAgICBfX21lcmdlX2FkYXB0aXZlKF9fZmlyc3QsIF9f
Zmlyc3RfY3V0LCBfX25ld19taWRkbGUsIF9fbGVuMTEsCiAgICAgICAgICAgICAgICAgICAgIF9f
bGVuMjIsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplKTsKICAgIF9fbWVyZ2VfYWRhcHRpdmUoX19u
ZXdfbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGFzdCwgX19sZW4xIC0gX19sZW4xMSwKICAgICAg
ICAgICAgICAgICAgICAgX19sZW4yIC0gX19sZW4yMiwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUp
OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX0Rpc3Rh
bmNlLCBjbGFzcyBfUG9pbnRlciwKICAgICAgICAgIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9fbWVy
Z2VfYWRhcHRpdmUoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAg
ICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLCAKICAgICAgICAgICAgICAgICAgICAg
IF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFu
Y2UgX19sZW4xLCBfRGlzdGFuY2UgX19sZW4yLAogICAgICAgICAgICAgICAgICAgICAgX1BvaW50
ZXIgX19idWZmZXIsIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgX0NvbXBhcmUgX19jb21wKSB7CiAgaWYgKF9fbGVuMSA8PSBfX2xlbjIgJiYgX19sZW4xIDw9
IF9fYnVmZmVyX3NpemUpIHsKICAgIF9Qb2ludGVyIF9fYnVmZmVyX2VuZCA9IGNvcHkoX19maXJz
dCwgX19taWRkbGUsIF9fYnVmZmVyKTsKICAgIG1lcmdlKF9fYnVmZmVyLCBfX2J1ZmZlcl9lbmQs
IF9fbWlkZGxlLCBfX2xhc3QsIF9fZmlyc3QsIF9fY29tcCk7CiAgfQogIGVsc2UgaWYgKF9fbGVu
MiA8PSBfX2J1ZmZlcl9zaXplKSB7CiAgICBfUG9pbnRlciBfX2J1ZmZlcl9lbmQgPSBjb3B5KF9f
bWlkZGxlLCBfX2xhc3QsIF9fYnVmZmVyKTsKICAgIF9fbWVyZ2VfYmFja3dhcmQoX19maXJzdCwg
X19taWRkbGUsIF9fYnVmZmVyLCBfX2J1ZmZlcl9lbmQsIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICAgX19jb21wKTsKICB9CiAgZWxzZSB7CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJz
dF9jdXQgPSBfX2ZpcnN0OwogICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fc2Vjb25kX2N1dCA9IF9f
bWlkZGxlOwogICAgX0Rpc3RhbmNlIF9fbGVuMTEgPSAwOwogICAgX0Rpc3RhbmNlIF9fbGVuMjIg
PSAwOwogICAgaWYgKF9fbGVuMSA+IF9fbGVuMikgewogICAgICBfX2xlbjExID0gX19sZW4xIC8g
MjsKICAgICAgYWR2YW5jZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgICAgIF9fc2Vjb25kX2N1
dCA9IGxvd2VyX2JvdW5kKF9fbWlkZGxlLCBfX2xhc3QsICpfX2ZpcnN0X2N1dCwgX19jb21wKTsK
ICAgICAgZGlzdGFuY2UoX19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sZW4yMik7ICAgCiAgICB9
CiAgICBlbHNlIHsKICAgICAgX19sZW4yMiA9IF9fbGVuMiAvIDI7CiAgICAgIGFkdmFuY2UoX19z
ZWNvbmRfY3V0LCBfX2xlbjIyKTsKICAgICAgX19maXJzdF9jdXQgPSB1cHBlcl9ib3VuZChfX2Zp
cnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1dCwgX19jb21wKTsKICAgICAgZGlzdGFuY2UoX19m
aXJzdCwgX19maXJzdF9jdXQsIF9fbGVuMTEpOwogICAgfQogICAgX0JpZGlyZWN0aW9uYWxJdGVy
IF9fbmV3X21pZGRsZSA9CiAgICAgIF9fcm90YXRlX2FkYXB0aXZlKF9fZmlyc3RfY3V0LCBfX21p
ZGRsZSwgX19zZWNvbmRfY3V0LCBfX2xlbjEgLSBfX2xlbjExLAogICAgICAgICAgICAgICAgICAg
ICAgICBfX2xlbjIyLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7CiAgICBfX21lcmdlX2FkYXB0
aXZlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX25ld19taWRkbGUsIF9fbGVuMTEsCiAgICAgICAg
ICAgICAgICAgICAgIF9fbGVuMjIsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplLCBfX2NvbXApOwog
ICAgX19tZXJnZV9hZGFwdGl2ZShfX25ld19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sYXN0LCBf
X2xlbjEgLSBfX2xlbjExLAogICAgICAgICAgICAgICAgICAgICBfX2xlbjIgLSBfX2xlbjIyLCBf
X2J1ZmZlciwgX19idWZmZXJfc2l6ZSwgX19jb21wKTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
QmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9p
ZCBfX2lucGxhY2VfbWVyZ2VfYXV4KF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LCBf
VHAqLCBfRGlzdGFuY2UqKSB7CiAgX0Rpc3RhbmNlIF9fbGVuMSA9IDA7CiAgZGlzdGFuY2UoX19m
aXJzdCwgX19taWRkbGUsIF9fbGVuMSk7CiAgX0Rpc3RhbmNlIF9fbGVuMiA9IDA7CiAgZGlzdGFu
Y2UoX19taWRkbGUsIF9fbGFzdCwgX19sZW4yKTsKCiAgX1RlbXBvcmFyeV9idWZmZXI8X0JpZGly
ZWN0aW9uYWxJdGVyLCBfVHA+IF9fYnVmKF9fZmlyc3QsIF9fbGFzdCk7CiAgaWYgKF9fYnVmLmJl
Z2luKCkgPT0gMCkKICAgIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19maXJzdCwgX19taWRkbGUs
IF9fbGFzdCwgX19sZW4xLCBfX2xlbjIpOwogIGVsc2UKICAgIF9fbWVyZ2VfYWRhcHRpdmUoX19m
aXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX19sZW4xLCBfX2xlbjIsCiAgICAgICAgICAgICAgICAg
ICAgIF9fYnVmLmJlZ2luKCksIF9EaXN0YW5jZShfX2J1Zi5zaXplKCkpKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX1RwLCAKICAgICAgICAgIGNsYXNzIF9E
aXN0YW5jZSwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSB2b2lkIF9faW5wbGFjZV9tZXJnZV9hdXgo
X0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsIF9UcCosIF9EaXN0YW5jZSosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKSB7CiAgX0Rpc3RhbmNl
IF9fbGVuMSA9IDA7CiAgZGlzdGFuY2UoX19maXJzdCwgX19taWRkbGUsIF9fbGVuMSk7CiAgX0Rp
c3RhbmNlIF9fbGVuMiA9IDA7CiAgZGlzdGFuY2UoX19taWRkbGUsIF9fbGFzdCwgX19sZW4yKTsK
CiAgX1RlbXBvcmFyeV9idWZmZXI8X0JpZGlyZWN0aW9uYWxJdGVyLCBfVHA+IF9fYnVmKF9fZmly
c3QsIF9fbGFzdCk7CiAgaWYgKF9fYnVmLmJlZ2luKCkgPT0gMCkKICAgIF9fbWVyZ2Vfd2l0aG91
dF9idWZmZXIoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX19sZW4xLCBfX2xlbjIsIF9fY29t
cCk7CiAgZWxzZQogICAgX19tZXJnZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0
LCBfX2xlbjEsIF9fbGVuMiwKICAgICAgICAgICAgICAgICAgICAgX19idWYuYmVnaW4oKSwgX0Rp
c3RhbmNlKF9fYnVmLnNpemUoKSksCiAgICAgICAgICAgICAgICAgICAgIF9fY29tcCk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXI+CmlubGluZSB2b2lkIGlucGxhY2VfbWVy
Z2UoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
X0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9C
aWRpcmVjdGlvbmFsSXRlciBfX2xhc3QpIHsKICBpZiAoX19maXJzdCA9PSBfX21pZGRsZSB8fCBf
X21pZGRsZSA9PSBfX2xhc3QpCiAgICByZXR1cm47CiAgX19pbnBsYWNlX21lcmdlX2F1eChfX2Zp
cnN0LCBfX21pZGRsZSwgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgX192YWx1ZV90eXBl
KCBfX2ZpcnN0ICkgLCBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5lIHZvaWQgaW5w
bGFjZV9tZXJnZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKSB7CiAgaWYg
KF9fZmlyc3QgPT0gX19taWRkbGUgfHwgX19taWRkbGUgPT0gX19sYXN0KQogICAgcmV0dXJuOwog
IF9faW5wbGFjZV9tZXJnZV9hdXgoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgICAg
ICAgICAgICAgICAgIF9fdmFsdWVfdHlwZSggX19maXJzdCApICwgX19kaXN0YW5jZV90eXBlKCBf
X2ZpcnN0ICkgLAogICAgICAgICAgICAgICAgICAgICAgX19jb21wKTsKfQoKIAogCiAKIAoKdGVt
cGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KYm9vbCBpbmNsdWRl
cyhfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAg
ICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MikgewogIHdoaWxlIChf
X2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiAgICBpZiAoKl9fZmly
c3QyIDwgKl9fZmlyc3QxKQogICAgICByZXR1cm4gZmFsc2U7CiAgICBlbHNlIGlmKCpfX2ZpcnN0
MSA8ICpfX2ZpcnN0MikgCiAgICAgICsrX19maXJzdDE7CiAgICBlbHNlCiAgICAgICsrX19maXJz
dDEsICsrX19maXJzdDI7CgogIHJldHVybiBfX2ZpcnN0MiA9PSBfX2xhc3QyOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfQ29tcGFyZT4K
Ym9vbCBpbmNsdWRlcyhfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwK
ICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0Miwg
X0NvbXBhcmUgX19jb21wKSB7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJz
dDIgIT0gX19sYXN0MikKICAgIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKQogICAg
ICByZXR1cm4gZmFsc2U7CiAgICBlbHNlIGlmKF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0Mikp
IAogICAgICArK19fZmlyc3QxOwogICAgZWxzZQogICAgICArK19fZmlyc3QxLCArK19fZmlyc3Qy
OwoKICByZXR1cm4gX19maXJzdDIgPT0gX19sYXN0MjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVy
IHNldF91bmlvbihfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAg
ICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xh
c3QyLAogICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsKICB3aGls
ZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKSB7CiAgICBpZiAo
Kl9fZmlyc3QxIDwgKl9fZmlyc3QyKSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAg
ICAgKytfX2ZpcnN0MTsKICAgIH0KICAgIGVsc2UgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkg
ewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDI7CiAgICAgICsrX19maXJzdDI7CiAgICB9CiAg
ICBlbHNlIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICArK19fZmlyc3QxOwog
ICAgICArK19fZmlyc3QyOwogICAgfQogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIGNvcHko
X19maXJzdDIsIF9fbGFzdDIsIGNvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KSk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9P
dXRwdXRJdGVyLAogICAgICAgICAgY2xhc3MgX0NvbXBhcmU+Cl9PdXRwdXRJdGVyIHNldF91bmlv
bihfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAg
ICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAg
ICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIF9Db21wYXJlIF9fY29tcCkg
ewogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIHsK
ICAgIGlmIChfX2NvbXAoKl9fZmlyc3QxLCAqX19maXJzdDIpKSB7CiAgICAgICpfX3Jlc3VsdCA9
ICpfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MTsKICAgIH0KICAgIGVsc2UgaWYgKF9fY29tcCgq
X19maXJzdDIsICpfX2ZpcnN0MSkpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QyOwogICAg
ICArK19fZmlyc3QyOwogICAgfQogICAgZWxzZSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0
MTsKICAgICAgKytfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICAgICsrX19yZXN1
bHQ7CiAgfQogIHJldHVybiBjb3B5KF9fZmlyc3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3QxLCBf
X2xhc3QxLCBfX3Jlc3VsdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNz
IF9JbnB1dEl0ZXIyLCBjbGFzcyBfT3V0cHV0SXRlcj4KX091dHB1dEl0ZXIgc2V0X2ludGVyc2Vj
dGlvbihfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19s
YXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCkg
ewogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIAog
ICAgaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikgCiAgICAgICsrX19maXJzdDE7CiAgICBlbHNl
IGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpIAogICAgICArK19fZmlyc3QyOwogICAgZWxzZSB7
CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MTsKICAgICAgKytf
X2ZpcnN0MjsKICAgICAgKytfX3Jlc3VsdDsKICAgIH0KICByZXR1cm4gX19yZXN1bHQ7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRw
dXRJdGVyLAogICAgICAgICAgY2xhc3MgX0NvbXBhcmU+Cl9PdXRwdXRJdGVyIHNldF9pbnRlcnNl
Y3Rpb24oX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9f
bGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQs
IF9Db21wYXJlIF9fY29tcCkgewogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmly
c3QyICE9IF9fbGFzdDIpCiAgICBpZiAoX19jb21wKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAg
ICAgKytfX2ZpcnN0MTsKICAgIGVsc2UgaWYgKF9fY29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkp
CiAgICAgICsrX19maXJzdDI7CiAgICBlbHNlIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Qx
OwogICAgICArK19fZmlyc3QxOwogICAgICArK19fZmlyc3QyOwogICAgICArK19fcmVzdWx0Owog
ICAgfQogIHJldHVybiBfX3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBj
bGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVyIHNldF9kaWZm
ZXJlbmNlKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19s
YXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsK
ICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAg
aWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7
CiAgICAgICsrX19maXJzdDE7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgICBlbHNlIGlmICgq
X19maXJzdDIgPCAqX19maXJzdDEpCiAgICAgICsrX19maXJzdDI7CiAgICBlbHNlIHsKICAgICAg
KytfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICByZXR1cm4gY29weShfX2ZpcnN0
MSwgX19sYXN0MSwgX19yZXN1bHQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNs
YXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfT3V0cHV0SXRlciwgCiAgICAgICAgICBjbGFzcyBfQ29t
cGFyZT4KX091dHB1dEl0ZXIgc2V0X2RpZmZlcmVuY2UoX0lucHV0SXRlcjEgX19maXJzdDEsIF9J
bnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIy
IF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIF9Db21wYXJlIF9fY29tcCkgewogIHdoaWxlIChfX2Zp
cnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiAgICBpZiAoX19jb21wKCpf
X2ZpcnN0MSwgKl9fZmlyc3QyKSkgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAg
ICsrX19maXJzdDE7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgICBlbHNlIGlmIChfX2NvbXAo
Kl9fZmlyc3QyLCAqX19maXJzdDEpKQogICAgICArK19fZmlyc3QyOwogICAgZWxzZSB7CiAgICAg
ICsrX19maXJzdDE7CiAgICAgICsrX19maXJzdDI7CiAgICB9CiAgcmV0dXJuIGNvcHkoX19maXJz
dDEsIF9fbGFzdDEsIF9fcmVzdWx0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBj
bGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVyIApzZXRfc3lt
bWV0cmljX2RpZmZlcmVuY2UoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFz
dDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0
SXRlcjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVz
dWx0KSB7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0
MikKICAgIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9f
Zmlyc3QxOwogICAgICArK19fZmlyc3QxOwogICAgICArK19fcmVzdWx0OwogICAgfQogICAgZWxz
ZSBpZiAoKl9fZmlyc3QyIDwgKl9fZmlyc3QxKSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0
MjsKICAgICAgKytfX2ZpcnN0MjsKICAgICAgKytfX3Jlc3VsdDsKICAgIH0KICAgIGVsc2Ugewog
ICAgICArK19fZmlyc3QxOwogICAgICArK19fZmlyc3QyOwogICAgfQogIHJldHVybiBjb3B5KF9f
Zmlyc3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCkpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfT3V0
cHV0SXRlciwKICAgICAgICAgIGNsYXNzIF9Db21wYXJlPgpfT3V0cHV0SXRlciAKc2V0X3N5bW1l
dHJpY19kaWZmZXJlbmNlKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3Qx
LAogICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0
ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3Vs
dCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkgewogIHdoaWxlIChf
X2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiAgICBpZiAoX19jb21w
KCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAg
ICAgICsrX19maXJzdDE7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgICBlbHNlIGlmIChfX2Nv
bXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsK
ICAgICAgKytfX2ZpcnN0MjsKICAgICAgKytfX3Jlc3VsdDsKICAgIH0KICAgIGVsc2UgewogICAg
ICArK19fZmlyc3QxOwogICAgICArK19fZmlyc3QyOwogICAgfQogIHJldHVybiBjb3B5KF9fZmly
c3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCkpOwp9CgogCiAK
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXI+Cl9Gb3J3YXJkSXRlciBtYXhfZWxlbWVudChf
Rm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCkgewogIGlmIChfX2ZpcnN0
ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7CiAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0ID0gX19m
aXJzdDsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkgCiAgICBpZiAoKl9fcmVzdWx0IDwg
Kl9fZmlyc3QpCiAgICAgIF9fcmVzdWx0ID0gX19maXJzdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9Db21wYXJlPgpfRm9yd2FyZEl0
ZXIgbWF4X2VsZW1lbnQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICBpZiAoX19m
aXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0OwogIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCA9
IF9fZmlyc3Q7CiAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpIAogICAgaWYgKF9fY29tcCgq
X19yZXN1bHQsICpfX2ZpcnN0KSkgX19yZXN1bHQgPSBfX2ZpcnN0OwogIHJldHVybiBfX3Jlc3Vs
dDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcj4KX0ZvcndhcmRJdGVyIG1pbl9lbGVt
ZW50KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0KSB7CiAgaWYgKF9f
Zmlyc3QgPT0gX19sYXN0KSByZXR1cm4gX19maXJzdDsKICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQg
PSBfX2ZpcnN0OwogIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KSAKICAgIGlmICgqX19maXJz
dCA8ICpfX3Jlc3VsdCkKICAgICAgX19yZXN1bHQgPSBfX2ZpcnN0OwogIHJldHVybiBfX3Jlc3Vs
dDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0NvbXBhcmU+Cl9Gb3J3
YXJkSXRlciBtaW5fZWxlbWVudChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkgewogIGlm
IChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7CiAgX0ZvcndhcmRJdGVyIF9fcmVz
dWx0ID0gX19maXJzdDsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkgCiAgICBpZiAoX19j
b21wKCpfX2ZpcnN0LCAqX19yZXN1bHQpKQogICAgICBfX3Jlc3VsdCA9IF9fZmlyc3Q7CiAgcmV0
dXJuIF9fcmVzdWx0Owp9CgogCiAKCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXI+
CmJvb2wgbmV4dF9wZXJtdXRhdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0JpZGly
ZWN0aW9uYWxJdGVyIF9fbGFzdCkgewogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgIHJldHVy
biBmYWxzZTsKICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19pID0gX19maXJzdDsKICArK19faTsKICBp
ZiAoX19pID09IF9fbGFzdCkKICAgIHJldHVybiBmYWxzZTsKICBfX2kgPSBfX2xhc3Q7CiAgLS1f
X2k7CgogIGZvcig7OykgewogICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faWkgPSBfX2k7CiAgICAt
LV9faTsKICAgIGlmICgqX19pIDwgKl9faWkpIHsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9f
aiA9IF9fbGFzdDsKICAgICAgd2hpbGUgKCEoKl9faSA8ICotLV9faikpCiAgICAgICAge30KICAg
ICAgaXRlcl9zd2FwKF9faSwgX19qKTsKICAgICAgcmV2ZXJzZShfX2lpLCBfX2xhc3QpOwogICAg
ICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGlmIChfX2kgPT0gX19maXJzdCkgewogICAgICByZXZl
cnNlKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9Db21wYXJlPgpib29sIG5l
eHRfcGVybXV0YXRpb24oX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFs
SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICBp
ZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgICByZXR1cm4gZmFsc2U7CiAgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9faSA9IF9fZmlyc3Q7CiAgKytfX2k7CiAgaWYgKF9faSA9PSBfX2xhc3QpCiAgICByZXR1
cm4gZmFsc2U7CiAgX19pID0gX19sYXN0OwogIC0tX19pOwoKICBmb3IoOzspIHsKICAgIF9CaWRp
cmVjdGlvbmFsSXRlciBfX2lpID0gX19pOwogICAgLS1fX2k7CiAgICBpZiAoX19jb21wKCpfX2ks
ICpfX2lpKSkgewogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19qID0gX19sYXN0OwogICAgICB3
aGlsZSAoIV9fY29tcCgqX19pLCAqLS1fX2opKQogICAgICAgIHt9CiAgICAgIGl0ZXJfc3dhcChf
X2ksIF9faik7CiAgICAgIHJldmVyc2UoX19paSwgX19sYXN0KTsKICAgICAgcmV0dXJuIHRydWU7
CiAgICB9CiAgICBpZiAoX19pID09IF9fZmlyc3QpIHsKICAgICAgcmV2ZXJzZShfX2ZpcnN0LCBf
X2xhc3QpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0JpZGlyZWN0aW9uYWxJdGVyPgpib29sIHByZXZfcGVybXV0YXRpb24oX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QpIHsKICBpZiAoX19maXJzdCA9
PSBfX2xhc3QpCiAgICByZXR1cm4gZmFsc2U7CiAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faSA9IF9f
Zmlyc3Q7CiAgKytfX2k7CiAgaWYgKF9faSA9PSBfX2xhc3QpCiAgICByZXR1cm4gZmFsc2U7CiAg
X19pID0gX19sYXN0OwogIC0tX19pOwoKICBmb3IoOzspIHsKICAgIF9CaWRpcmVjdGlvbmFsSXRl
ciBfX2lpID0gX19pOwogICAgLS1fX2k7CiAgICBpZiAoKl9faWkgPCAqX19pKSB7CiAgICAgIF9C
aWRpcmVjdGlvbmFsSXRlciBfX2ogPSBfX2xhc3Q7CiAgICAgIHdoaWxlICghKCotLV9faiA8ICpf
X2kpKQogICAgICAgIHt9CiAgICAgIGl0ZXJfc3dhcChfX2ksIF9faik7CiAgICAgIHJldmVyc2Uo
X19paSwgX19sYXN0KTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBpZiAoX19pID09IF9f
Zmlyc3QpIHsKICAgICAgcmV2ZXJzZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgICByZXR1cm4gZmFs
c2U7CiAgICB9CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFz
cyBfQ29tcGFyZT4KYm9vbCBwcmV2X3Blcm11dGF0aW9uKF9CaWRpcmVjdGlvbmFsSXRlciBfX2Zp
cnN0LCBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgX0Nv
bXBhcmUgX19jb21wKSB7CiAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogICAgcmV0dXJuIGZhbHNl
OwogIF9CaWRpcmVjdGlvbmFsSXRlciBfX2kgPSBfX2ZpcnN0OwogICsrX19pOwogIGlmIChfX2kg
PT0gX19sYXN0KQogICAgcmV0dXJuIGZhbHNlOwogIF9faSA9IF9fbGFzdDsKICAtLV9faTsKCiAg
Zm9yKDs7KSB7CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19paSA9IF9faTsKICAgIC0tX19pOwog
ICAgaWYgKF9fY29tcCgqX19paSwgKl9faSkpIHsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9f
aiA9IF9fbGFzdDsKICAgICAgd2hpbGUgKCFfX2NvbXAoKi0tX19qLCAqX19pKSkKICAgICAgICB7
fQogICAgICBpdGVyX3N3YXAoX19pLCBfX2opOwogICAgICByZXZlcnNlKF9faWksIF9fbGFzdCk7
CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaWYgKF9faSA9PSBfX2ZpcnN0KSB7CiAgICAg
IHJldmVyc2UoX19maXJzdCwgX19sYXN0KTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0K
fQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KX0lu
cHV0SXRlciBmaW5kX2ZpcnN0X29mKF9JbnB1dEl0ZXIgX19maXJzdDEsIF9JbnB1dEl0ZXIgX19s
YXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2ZpcnN0MiwgX0Zv
cndhcmRJdGVyIF9fbGFzdDIpCnsKICBmb3IgKCA7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsrX19m
aXJzdDEpIAogICAgZm9yIChfRm9yd2FyZEl0ZXIgX19pdGVyID0gX19maXJzdDI7IF9faXRlciAh
PSBfX2xhc3QyOyArK19faXRlcikKICAgICAgaWYgKCpfX2ZpcnN0MSA9PSAqX19pdGVyKQogICAg
ICAgIHJldHVybiBfX2ZpcnN0MTsKICByZXR1cm4gX19sYXN0MTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4K
X0lucHV0SXRlciBmaW5kX2ZpcnN0X29mKF9JbnB1dEl0ZXIgX19maXJzdDEsIF9JbnB1dEl0ZXIg
X19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2ZpcnN0Miwg
X0ZvcndhcmRJdGVyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJl
ZGljYXRlIF9fY29tcCkKewogIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0
MSkgCiAgICBmb3IgKF9Gb3J3YXJkSXRlciBfX2l0ZXIgPSBfX2ZpcnN0MjsgX19pdGVyICE9IF9f
bGFzdDI7ICsrX19pdGVyKQogICAgICBpZiAoX19jb21wKCpfX2ZpcnN0MSwgKl9faXRlcikpCiAg
ICAgICAgcmV0dXJuIF9fZmlyc3QxOwogIHJldHVybiBfX2xhc3QxOwp9CgoKIAogCiAKIAoKIAp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyMSwgY2xhc3MgX0ZvcndhcmRJdGVyMj4KX0Zvcndh
cmRJdGVyMSBfX2ZpbmRfZW5kKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcjEg
X19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlcjIgX19maXJzdDIs
IF9Gb3J3YXJkSXRlcjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRf
aXRlcmF0b3JfdGFnLCBmb3J3YXJkX2l0ZXJhdG9yX3RhZykKewogIGlmIChfX2ZpcnN0MiA9PSBf
X2xhc3QyKQogICAgcmV0dXJuIF9fbGFzdDE7CiAgZWxzZSB7CiAgICBfRm9yd2FyZEl0ZXIxIF9f
cmVzdWx0ID0gX19sYXN0MTsKICAgIHdoaWxlICgxKSB7CiAgICAgIF9Gb3J3YXJkSXRlcjEgX19u
ZXdfcmVzdWx0CiAgICAgICAgPSBzZWFyY2goX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBf
X2xhc3QyKTsKICAgICAgaWYgKF9fbmV3X3Jlc3VsdCA9PSBfX2xhc3QxKQogICAgICAgIHJldHVy
biBfX3Jlc3VsdDsKICAgICAgZWxzZSB7CiAgICAgICAgX19yZXN1bHQgPSBfX25ld19yZXN1bHQ7
CiAgICAgICAgX19maXJzdDEgPSBfX25ld19yZXN1bHQ7CiAgICAgICAgKytfX2ZpcnN0MTsKICAg
ICAgfQogICAgfQogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNsYXNzIF9G
b3J3YXJkSXRlcjIsCiAgICAgICAgICBjbGFzcyBfQmluYXJ5UHJlZGljYXRlPgpfRm9yd2FyZEl0
ZXIxIF9fZmluZF9lbmQoX0ZvcndhcmRJdGVyMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xh
c3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyMiBfX2ZpcnN0MiwgX0Zv
cndhcmRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZF9pdGVy
YXRvcl90YWcsIGZvcndhcmRfaXRlcmF0b3JfdGFnLAogICAgICAgICAgICAgICAgICAgICAgICAg
X0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApCnsKICBpZiAoX19maXJzdDIgPT0gX19sYXN0MikKICAg
IHJldHVybiBfX2xhc3QxOwogIGVsc2UgewogICAgX0ZvcndhcmRJdGVyMSBfX3Jlc3VsdCA9IF9f
bGFzdDE7CiAgICB3aGlsZSAoMSkgewogICAgICBfRm9yd2FyZEl0ZXIxIF9fbmV3X3Jlc3VsdAog
ICAgICAgID0gc2VhcmNoKF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0MiwgX19j
b21wKTsKICAgICAgaWYgKF9fbmV3X3Jlc3VsdCA9PSBfX2xhc3QxKQogICAgICAgIHJldHVybiBf
X3Jlc3VsdDsKICAgICAgZWxzZSB7CiAgICAgICAgX19yZXN1bHQgPSBfX25ld19yZXN1bHQ7CiAg
ICAgICAgX19maXJzdDEgPSBfX25ld19yZXN1bHQ7CiAgICAgICAgKytfX2ZpcnN0MTsKICAgICAg
fQogICAgfQogIH0KfQoKIAoKCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIxLCBj
bGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIyPgpfQmlkaXJlY3Rpb25hbEl0ZXIxCl9fZmluZF9lbmQo
X0JpZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0MSwgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3Qx
LAogICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19maXJzdDIsIF9CaWRpcmVjdGlvbmFs
SXRlcjIgX19sYXN0MiwKICAgICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgYmlk
aXJlY3Rpb25hbF9pdGVyYXRvcl90YWcpCnsKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8X0Jp
ZGlyZWN0aW9uYWxJdGVyMT4gX1Jldkl0ZXIxOwogIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxf
QmlkaXJlY3Rpb25hbEl0ZXIyPiBfUmV2SXRlcjI7CgogIF9SZXZJdGVyMSBfX3JsYXN0MShfX2Zp
cnN0MSk7CiAgX1Jldkl0ZXIyIF9fcmxhc3QyKF9fZmlyc3QyKTsKICBfUmV2SXRlcjEgX19ycmVz
dWx0ID0gc2VhcmNoKF9SZXZJdGVyMShfX2xhc3QxKSwgX19ybGFzdDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfUmV2SXRlcjIoX19sYXN0MiksIF9fcmxhc3QyKTsKCiAgaWYgKF9f
cnJlc3VsdCA9PSBfX3JsYXN0MSkKICAgIHJldHVybiBfX2xhc3QxOwogIGVsc2UgewogICAgX0Jp
ZGlyZWN0aW9uYWxJdGVyMSBfX3Jlc3VsdCA9IF9fcnJlc3VsdC5iYXNlKCk7CiAgICBhZHZhbmNl
KF9fcmVzdWx0LCAtZGlzdGFuY2UoX19maXJzdDIsIF9fbGFzdDIpKTsKICAgIHJldHVybiBfX3Jl
c3VsdDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIxLCBjbGFzcyBf
QmlkaXJlY3Rpb25hbEl0ZXIyLAogICAgICAgICAgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KX0Jp
ZGlyZWN0aW9uYWxJdGVyMQpfX2ZpbmRfZW5kKF9CaWRpcmVjdGlvbmFsSXRlcjEgX19maXJzdDEs
IF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0MSwKICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0
ZXIyIF9fZmlyc3QyLCBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgYmlk
aXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCAKICAg
ICAgICAgICBfQmluYXJ5UHJlZGljYXRlIF9fY29tcCkKewogIHR5cGVkZWYgcmV2ZXJzZV9pdGVy
YXRvcjxfQmlkaXJlY3Rpb25hbEl0ZXIxPiBfUmV2SXRlcjE7CiAgdHlwZWRlZiByZXZlcnNlX2l0
ZXJhdG9yPF9CaWRpcmVjdGlvbmFsSXRlcjI+IF9SZXZJdGVyMjsKCiAgX1Jldkl0ZXIxIF9fcmxh
c3QxKF9fZmlyc3QxKTsKICBfUmV2SXRlcjIgX19ybGFzdDIoX19maXJzdDIpOwogIF9SZXZJdGVy
MSBfX3JyZXN1bHQgPSBzZWFyY2goX1Jldkl0ZXIxKF9fbGFzdDEpLCBfX3JsYXN0MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9SZXZJdGVyMihfX2xhc3QyKSwgX19ybGFzdDIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwoKICBpZiAoX19ycmVzdWx0ID09
IF9fcmxhc3QxKQogICAgcmV0dXJuIF9fbGFzdDE7CiAgZWxzZSB7CiAgICBfQmlkaXJlY3Rpb25h
bEl0ZXIxIF9fcmVzdWx0ID0gX19ycmVzdWx0LmJhc2UoKTsKICAgIGFkdmFuY2UoX19yZXN1bHQs
IC1kaXN0YW5jZShfX2ZpcnN0MiwgX19sYXN0MikpOwogICAgcmV0dXJuIF9fcmVzdWx0OwogIH0K
fQoKCiAKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIxLCBjbGFzcyBfRm9yd2FyZEl0ZXIy
PgppbmxpbmUgX0ZvcndhcmRJdGVyMSAKZmluZF9lbmQoX0ZvcndhcmRJdGVyMSBfX2ZpcnN0MSwg
X0ZvcndhcmRJdGVyMSBfX2xhc3QxLCAKICAgICAgICAgX0ZvcndhcmRJdGVyMiBfX2ZpcnN0Miwg
X0ZvcndhcmRJdGVyMiBfX2xhc3QyKQp7CiAgcmV0dXJuIF9fZmluZF9lbmQoX19maXJzdDEsIF9f
bGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3Jf
Y2F0ZWdvcnkoIF9fZmlyc3QxICkgLAogICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0
ZWdvcnkoIF9fZmlyc3QyICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNs
YXNzIF9Gb3J3YXJkSXRlcjIsIAogICAgICAgICAgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KaW5s
aW5lIF9Gb3J3YXJkSXRlcjEgCmZpbmRfZW5kKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3
YXJkSXRlcjEgX19sYXN0MSwgCiAgICAgICAgIF9Gb3J3YXJkSXRlcjIgX19maXJzdDIsIF9Gb3J3
YXJkSXRlcjIgX19sYXN0MiwKICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApCnsKICBy
ZXR1cm4gX19maW5kX2VuZChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIsCiAg
ICAgICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJzdDEgKSAsCiAgICAg
ICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJzdDIgKSAsCiAgICAgICAg
ICAgICAgICAgICAgX19jb21wKTsKfQoKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNj
ZXNzSXRlciwgY2xhc3MgX0Rpc3RhbmNlPgpib29sIF9faXNfaGVhcChfUmFuZG9tQWNjZXNzSXRl
ciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19uKQp7CiAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gMDsKICBm
b3IgKF9EaXN0YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2NoaWxkKSB7CiAg
ICBpZiAoX19maXJzdFtfX3BhcmVudF0gPCBfX2ZpcnN0W19fY2hpbGRdKSAKICAgICAgcmV0dXJu
IGZhbHNlOwogICAgaWYgKChfX2NoaWxkICYgMSkgPT0gMCkKICAgICAgKytfX3BhcmVudDsKICB9
CiAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xh
c3MgX0Rpc3RhbmNlLCBjbGFzcyBfU3RyaWN0V2Vha09yZGVyaW5nPgpib29sIF9faXNfaGVhcChf
UmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfU3RyaWN0V2Vha09yZGVyaW5nIF9fY29tcCwKICAg
ICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbikKewogIF9EaXN0YW5jZSBfX3BhcmVudCA9IDA7CiAg
Zm9yIChfRGlzdGFuY2UgX19jaGlsZCA9IDE7IF9fY2hpbGQgPCBfX247ICsrX19jaGlsZCkgewog
ICAgaWYgKF9fY29tcChfX2ZpcnN0W19fcGFyZW50XSwgX19maXJzdFtfX2NoaWxkXSkpCiAgICAg
IHJldHVybiBmYWxzZTsKICAgIGlmICgoX19jaGlsZCAmIDEpID09IDApCiAgICAgICsrX19wYXJl
bnQ7CiAgfQogIHJldHVybiB0cnVlOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXI+CmlubGluZSBib29sIGlzX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRv
bUFjY2Vzc0l0ZXIgX19sYXN0KQp7CiAgcmV0dXJuIF9faXNfaGVhcChfX2ZpcnN0LCBfX2xhc3Qg
LSBfX2ZpcnN0KTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3Mg
X1N0cmljdFdlYWtPcmRlcmluZz4KaW5saW5lIGJvb2wgaXNfaGVhcChfUmFuZG9tQWNjZXNzSXRl
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAg
X1N0cmljdFdlYWtPcmRlcmluZyBfX2NvbXApCnsKICByZXR1cm4gX19pc19oZWFwKF9fZmlyc3Qs
IF9fY29tcCwgX19sYXN0IC0gX19maXJzdCk7Cn0KCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0Zv
cndhcmRJdGVyPgpib29sIGlzX3NvcnRlZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJ
dGVyIF9fbGFzdCkKewogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgIHJldHVybiB0cnVlOwoK
ICBfRm9yd2FyZEl0ZXIgX19uZXh0ID0gX19maXJzdDsKICBmb3IgKCsrX19uZXh0OyBfX25leHQg
IT0gX19sYXN0OyBfX2ZpcnN0ID0gX19uZXh0LCArK19fbmV4dCkgewogICAgaWYgKCpfX25leHQg
PCAqX19maXJzdCkKICAgICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgcmV0dXJuIHRydWU7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9TdHJpY3RXZWFrT3JkZXJpbmc+CmJv
b2wgaXNfc29ydGVkKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAog
ICAgICAgICAgICAgICBfU3RyaWN0V2Vha09yZGVyaW5nIF9fY29tcCkKewogIGlmIChfX2ZpcnN0
ID09IF9fbGFzdCkKICAgIHJldHVybiB0cnVlOwoKICBfRm9yd2FyZEl0ZXIgX19uZXh0ID0gX19m
aXJzdDsKICBmb3IgKCsrX19uZXh0OyBfX25leHQgIT0gX19sYXN0OyBfX2ZpcnN0ID0gX19uZXh0
LCArK19fbmV4dCkgewogICAgaWYgKF9fY29tcCgqX19uZXh0LCAqX19maXJzdCkpCiAgICAgIHJl
dHVybiBmYWxzZTsKICB9CgogIHJldHVybiB0cnVlOwp9CgoKCgoKIAoKCgogCiAKIAojIDM0ICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2FsZ29yaXRobSIg
MiAzCgoKCgogCiAKIAojIDkgIi4uL2hlYWRlcnMvbnVtYmVyZm9ybXMuaCIgMgoKCnRlbXBsYXRl
PGNsYXNzIFQ+CmNsYXNzIF9mb3JtYXRfb3V0IHsgfTsKCnRlbXBsYXRlPGNsYXNzIGZvcm0+CmNs
YXNzIF9mb3JtYXRfb3V0X29zdHJlYW0gewpwdWJsaWM6CiAgc3RkOjpvc3RyZWFtJiBvczsKICBm
b3JtIGY7CgogIGV4cGxpY2l0IF9mb3JtYXRfb3V0X29zdHJlYW0oc3RkOjpvc3RyZWFtJiBfb3Ms
IGNvbnN0IGZvcm0mIF9mPWZvcm0oKSkgCiAgICA6IG9zKF9vcyksIGYoX2YpIHsgfQp9OwoKdGVt
cGxhdGU8Y2xhc3MgZm9ybT4KaW5saW5lIF9mb3JtYXRfb3V0X29zdHJlYW08Zm9ybT4KICBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgbywgY29uc3QgX2Zvcm1hdF9vdXQ8Zm9ybT4mIGYpIHsKICBy
ZXR1cm4gX2Zvcm1hdF9vdXRfb3N0cmVhbTxmb3JtPihvLCByZWludGVycHJldF9jYXN0PGNvbnN0
IGZvcm0mPihmKSk7Cn0KCiAKIAogCiAKdGVtcGxhdGU8Y2xhc3MgZm9ybSwgY2xhc3MgVD4KY2xh
c3MgX2Zvcm1hdF9vdXRfY2FsbGVyIHsKcHVibGljOgogIHN0YXRpYyBzdGQ6Om9zdHJlYW0mIGFw
cGx5KGNvbnN0IF9mb3JtYXRfb3V0X29zdHJlYW08Zm9ybT4mIGFvbywgCgkJCSAgICAgY29uc3Qg
VCYgdCkgewogICAgcmV0dXJuIGFvby5mLm91dHB1dChhb28ub3MsIHQpOwogIH0KfTsKCnRlbXBs
YXRlPGNsYXNzIGZvcm0sIGNsYXNzIFQ+CmlubGluZSBzdGQ6Om9zdHJlYW0mIAogIG9wZXJhdG9y
PDwoY29uc3QgX2Zvcm1hdF9vdXRfb3N0cmVhbTxmb3JtPiYgYW9vLCBjb25zdCBUJiB0KSB7CiAg
cmV0dXJuIF9mb3JtYXRfb3V0X2NhbGxlcjxmb3JtLCBUPjo6YXBwbHkoYW9vLCB0KTsKfQoKY2xh
c3MgX21tYV9mb3JtX2R1bW15IDogcHVibGljIF9mb3JtYXRfb3V0PF9tbWFfZm9ybV9kdW1teT4g
eyAKcHVibGljOgogIHRlbXBsYXRlPGNsYXNzIFQ+IAogIHN0ZDo6b3N0cmVhbSYgb3V0cHV0KHN0
ZDo6b3N0cmVhbSYgbywgY29uc3QgVCYgdCkgY29uc3QgewogICAgcmV0dXJuIG8gPDwgdDsgfQoK
ICB0ZW1wbGF0ZTxjbGFzcyBUPgogIHN0ZDo6b3N0cmVhbSYgb3V0cHV0RmxvYXRpbmdQb2ludChz
dGQ6Om9zdHJlYW0mIG8sIGNvbnN0IFQmIHQpIGNvbnN0Owp9OwoKc3RhdGljIF9tbWFfZm9ybV9k
dW1teSBtbWFfZm9ybTsKCiAKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHN0ZDo6b3N0cmVhbSYg
X21tYV9mb3JtX2R1bW15OjpvdXRwdXRGbG9hdGluZ1BvaW50KHN0ZDo6b3N0cmVhbSYgbywgCgkJ
CQkJCQkgICAgY29uc3QgVCYgdCkgY29uc3QgewogIHN0ZDo6b3N0cmluZ3N0cmVhbSBvczsKICBv
cyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMxMCsx
KSA8PCB0OwogIAogIHN0ZDo6c3RyaW5nIHJlc3VsdCA9IG9zLnN0cigpOwogIHN0ZDo6c3RyaW5n
OjpzaXplX3R5cGUgaTsKICB3aGlsZSgoaSA9IHJlc3VsdC5maW5kX2ZpcnN0X29mKCJlRSIpKSAh
PSBzdGQ6OnN0cmluZzo6bnBvcykKICAgIHJlc3VsdC5yZXBsYWNlKGksMSwgIipeIik7CiAgcmV0
dXJuIG8gPDwgcmVzdWx0Owp9Cgp0ZW1wbGF0ZTw+CmlubGluZSBzdGQ6Om9zdHJlYW0mIF9tbWFf
Zm9ybV9kdW1teTo6b3V0cHV0PGZsb2F0PihzdGQ6Om9zdHJlYW0mIG8sIAoJCQkJCQkgICBjb25z
dCBmbG9hdCYgZCkgY29uc3QgewogIHJldHVybiBvdXRwdXRGbG9hdGluZ1BvaW50KG8sIGQpOwp9
Cgp0ZW1wbGF0ZTw+CmlubGluZSBzdGQ6Om9zdHJlYW0mIF9tbWFfZm9ybV9kdW1teTo6b3V0cHV0
PGRvdWJsZT4oc3RkOjpvc3RyZWFtJiBvLCAKCQkJCQkJICAgY29uc3QgZG91YmxlJiBkKSBjb25z
dCB7CiAgcmV0dXJuIG91dHB1dEZsb2F0aW5nUG9pbnQobywgZCk7Cn0KCnRlbXBsYXRlPD4KaW5s
aW5lIHN0ZDo6b3N0cmVhbSYgX21tYV9mb3JtX2R1bW15OjpvdXRwdXQ8bG9uZyBkb3VibGU+KHN0
ZDo6b3N0cmVhbSYgbywgCgkJCQkJCSAgIGNvbnN0IGxvbmcgZG91YmxlJiBkKSBjb25zdCB7CiAg
cmV0dXJuIG91dHB1dEZsb2F0aW5nUG9pbnQobywgZCk7Cn0KCnRlbXBsYXRlPD4KaW5saW5lIHN0
ZDo6b3N0cmVhbSYgX21tYV9mb3JtX2R1bW15OjpvdXRwdXQ8Ym9vbD4oc3RkOjpvc3RyZWFtJiBv
LCAKCQkJCQkJICBjb25zdCBib29sJiBiKSBjb25zdCB7CiAgc3dpdGNoIChiKSB7CiAgY2FzZSB0
cnVlOgogICAgcmV0dXJuIG8gPDwgIlRydWUiOwogIGNhc2UgZmFsc2U6CiAgICByZXR1cm4gbyA8
PCAiRmFsc2UiOwogIH0KICAgCiAgcmV0dXJuIG87Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZT4Kc3RydWN0IEJpbmFyeUZvcm0gewogIGNvbnN0IHN0YXRpYyBpbnQgbGVuID0gc2l6ZW9mKFRf
bnVtdHlwZSk7CiAgdW5pb24gewogICAgVF9udW10eXBlIG51bTsKICAgIHVuc2lnbmVkIGNoYXIg
YmludVsgbGVuIF07CiAgICBjaGFyIGJpbmNbIGxlbiBdOwogIH07Cn07CgogCmNsYXNzIF9oZXhf
b3V0X2R1bW15IDogcHVibGljIF9mb3JtYXRfb3V0PF9oZXhfb3V0X2R1bW15PiB7CnB1YmxpYzoK
ICB0ZW1wbGF0ZTxjbGFzcyBUPgogIHN0ZDo6b3N0cmVhbSYgb3V0cHV0KHN0ZDo6b3N0cmVhbSYg
bywgY29uc3QgVCYgdCkgY29uc3QgewogICAgbyA8PCAiMHgiIDw8IGhleCA8PCBzZXRmaWxsKCcw
Jyk7CiAgICBCaW5hcnlGb3JtPFQ+IGJmOwogICAgYmYubnVtID0gdDsKICAgICAKICAgIGZvcihp
bnQgaT0wOyBpPEJpbmFyeUZvcm08VD46OmxlbiAgOyBpKyspIAogICAgICBvIDw8IHNldHcoMikg
PDwgaW50KGJmLmJpbnVbaV0pOwogICAgbyA8PCBkZWMgPDwgc2V0ZmlsbCgnICcpOwogICAgcmV0
dXJuIG87CiAgfQp9OyAgICAKCnN0YXRpYyBfaGV4X291dF9kdW1teSBoZXhfb3V0OwoKIApjbGFz
cyBfaGV4X25vcm1fb3V0X2R1bW15IDogcHVibGljIF9mb3JtYXRfb3V0PF9oZXhfbm9ybV9vdXRf
ZHVtbXk+IHsKcHVibGljOgogIHRlbXBsYXRlPGNsYXNzIFQ+CiAgc3RkOjpvc3RyZWFtJiBvdXRw
dXQoc3RkOjpvc3RyZWFtJiBvLCBjb25zdCBUJiB0KSBjb25zdCB7CiAgICBvIDw8ICIoMHgiIDw8
IGhleCA8PCBzZXRmaWxsKCcwJyk7CiAgICBCaW5hcnlGb3JtPFQ+IGJmOwogICAgYmYubnVtID0g
dDsKICAgICAKICAgIGZvcihpbnQgaT0wOyBpPEJpbmFyeUZvcm08VD46OmxlbiAgOyBpKyspIAog
ICAgICBvIDw8IHNldHcoMikgPDwgaW50KGJmLmJpbnVbaV0pOwogICAgbyA8PCBkZWMgPDwgc2V0
ZmlsbCgnICcpOwogICAgbyA8PCAiLCAiIDw8IHQgPDwgJyknOwogICAgcmV0dXJuIG87CiAgfQp9
OyAgIAoKc3RhdGljIF9oZXhfbm9ybV9vdXRfZHVtbXkgaGV4X25vcm1fb3V0OwoKIApjbGFzcyBf
YmluX291dF9kdW1teSA6IHB1YmxpYyBfZm9ybWF0X291dDxfYmluX291dF9kdW1teT4gewpwdWJs
aWM6CiAgdGVtcGxhdGU8Y2xhc3MgVD4KICBzdGQ6Om9zdHJlYW0mIG91dHB1dChzdGQ6Om9zdHJl
YW0mIG8sIGNvbnN0IFQmIHQpIGNvbnN0IHsKICAgIEJpbmFyeUZvcm08VD4gYmY7CiAgICBiZi5u
dW0gPSB0OwogICAgIAogICAgc3RkOjpzdHJpbmcgcyhiZi5iaW5jLCBiZi5iaW5jICsgQmluYXJ5
Rm9ybTxUPjo6bGVuKTsKICAgIHJldHVybiBvIDw8IHM7CiAgfQp9OwoKc3RhdGljIF9iaW5fb3V0
X2R1bW15IGJpbl9vdXQ7CgpjbGFzcyBfYmluX29wcG9zaXRlX291dF9kdW1teSA6IHB1YmxpYyBf
Zm9ybWF0X291dDxfYmluX29wcG9zaXRlX291dF9kdW1teT4gewpwdWJsaWM6CiAgdGVtcGxhdGU8
Y2xhc3MgVD4KICBzdGQ6Om9zdHJlYW0mIG91dHB1dChzdGQ6Om9zdHJlYW0mIG8sIGNvbnN0IFQm
IHQpIGNvbnN0IHsKICAgIEJpbmFyeUZvcm08VD4gYmY7CiAgICBiZi5udW0gPSB0OwogICAgIAog
ICAgc3RkOjpzdHJpbmcgcyhiZi5iaW5jLCBiZi5iaW5jICsgQmluYXJ5Rm9ybTxUPjo6bGVuKTsK
ICAgIHJldHVybiBvIDw8IHN0cmluZyhzLnJiZWdpbigpLCBzLnJlbmQoKSk7CiAgfQp9OwogIAoK
CgoKc3RhdGljIF9iaW5fb3V0X2R1bW15IGJpbl9saXR0bGVfb3V0OwpzdGF0aWMgX2Jpbl9vcHBv
c2l0ZV9vdXRfZHVtbXkgYmluX2JpZ19vdXQ7CgoKCgoKIyA4ICIuLi9oZWFkZXJzL2FycmF5Lmgi
IDIKCgp0eXBlZGVmIGJsaXR6OjpBcnJheTxmbG9hdCwgMT4gZmxvYXRBcnJheTsKdHlwZWRlZiBi
bGl0ejo6QXJyYXk8ZG91YmxlLCAxPiBkb3VibGVBcnJheTsKdHlwZWRlZiBibGl0ejo6QXJyYXk8
aW50LCAxPiBpbnRBcnJheTsKCnR5cGVkZWYgYmxpdHo6OkFycmF5PGZsb2F0LCAyPiBmbG9hdDJB
cnJheTsKdHlwZWRlZiBibGl0ejo6QXJyYXk8ZG91YmxlLCAyPiBkb3VibGUyQXJyYXk7CnR5cGVk
ZWYgYmxpdHo6OkFycmF5PGludCwgMj4gaW50MkFycmF5OwoKIAp0ZW1wbGF0ZTxjbGFzcyBULCBp
bnQgTj4KYm9vbCB0aW55dmVjX2VxdWFsKGJsaXR6OjpUaW55VmVjdG9yPFQsTj4gdjEsIGJsaXR6
OjpUaW55VmVjdG9yPFQsTj4gdjIpIHsKICBmb3IoaW50IGk9MDsgaTxOOyArK2kpCiAgICBpZiAo
djFbaV0gIT0gdjJbaV0pIHJldHVybiBmYWxzZTsKICByZXR1cm4gdHJ1ZTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBUPgppbmxpbmUgYmxpdHo6OlJhbmdlIEFycmF5X1JhbmdlKGNvbnN0IGJsaXR6OjpB
cnJheTxULCAxPiYgYSkgewogIHJldHVybiBibGl0ejo6UmFuZ2UoYS5sYm91bmQoYmxpdHo6OmZp
cnN0RGltKSwgYS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
VCwgaW50IE4+CmlubGluZSBibGl0ejo6UmFuZ2UgQXJyYXlfUmFuZ2UoY29uc3QgYmxpdHo6OkFy
cmF5PFQsIE4+JiBhLCBpbnQgaykgewogIHJldHVybiBibGl0ejo6UmFuZ2UoYS5sYm91bmQoayks
IGEudWJvdW5kKGspKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4KaW5saW5lIGJsaXR6
OjpSYW5nZSBJbnRlcmlvclJhbmdlKGNvbnN0IGJsaXR6OjpBcnJheTxULCBOPiYgYSwgaW50IGss
IAoJCQkJaW50IGJvdW5kYXJ5U2l6ZSA9IDEpIHsKICByZXR1cm4gYmxpdHo6OlJhbmdlKGEubGJv
dW5kKGspK2JvdW5kYXJ5U2l6ZSwgYS51Ym91bmQoayktYm91bmRhcnlTaXplKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgVD4KaW5saW5lIGJsaXR6OjpBcnJheTxULDE+IEludGVyaW9yKGNvbnN0IGJsaXR6
OjpBcnJheTxULDE+JiBhLCAKCQkJCSAgaW50IGJvdW5kYXJ5U2l6ZSA9IDEpIHsKICByZXR1cm4g
YShJbnRlcmlvclJhbmdlKGEsZmlyc3REaW0sYm91bmRhcnlTaXplKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFQ+CmlubGluZSBibGl0ejo6QXJyYXk8VCwyPiBJbnRlcmlvcihjb25zdCBibGl0ejo6QXJy
YXk8VCwyPiYgYSwgCgkJCQkgIGludCBib3VuZGFyeVNpemUgPSAxKSB7CiAgcmV0dXJuIGEoSW50
ZXJpb3JSYW5nZShhLDAsYm91bmRhcnlTaXplKSwKCSAgIEludGVyaW9yUmFuZ2UoYSwxLGJvdW5k
YXJ5U2l6ZSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYmxpdHo6OkFycmF5PFQsMz4g
SW50ZXJpb3IoY29uc3QgYmxpdHo6OkFycmF5PFQsMz4mIGEsIAoJCQkJICBpbnQgYm91bmRhcnlT
aXplID0gMSkgewogIHJldHVybiBhKEludGVyaW9yUmFuZ2UoYSwwLGJvdW5kYXJ5U2l6ZSksCgkg
ICBJbnRlcmlvclJhbmdlKGEsMSxib3VuZGFyeVNpemUpLAoJICAgSW50ZXJpb3JSYW5nZShhLDIs
Ym91bmRhcnlTaXplKQoJICAgKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIGJsaXR6OjpB
cnJheTxULDQ+IEludGVyaW9yKGNvbnN0IGJsaXR6OjpBcnJheTxULDQ+JiBhLCAKCQkJCSAgaW50
IGJvdW5kYXJ5U2l6ZSA9IDEpIHsKICByZXR1cm4gYShJbnRlcmlvclJhbmdlKGEsMCxib3VuZGFy
eVNpemUpLAoJICAgSW50ZXJpb3JSYW5nZShhLDEsYm91bmRhcnlTaXplKSwKCSAgIEludGVyaW9y
UmFuZ2UoYSwyLGJvdW5kYXJ5U2l6ZSksCgkgICBJbnRlcmlvclJhbmdlKGEsMyxib3VuZGFyeVNp
emUpCgkgICApOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYmxpdHo6OkFycmF5PGJsaXR6
OjpfYnpfQXJyYXlFeHByPFQ+OjpUX251bXR5cGUsIAogICAgICAgICAgICAgICAgICAgIGJsaXR6
OjpfYnpfQXJyYXlFeHByPFQ+OjpyYW5rPgpJbnRlcmlvcihibGl0ejo6X2J6X0FycmF5RXhwcjxU
PiBleHByLCBpbnQgYm91bmRhcnlTaXplID0gMSkgewogIHR5cGVkZWYgYmxpdHo6Ol9iel9BcnJh
eUV4cHI8VD4gZXhwclQ7CiAgYmxpdHo6OkFycmF5PCB0eXBlbmFtZSBleHByVDo6VF9udW10eXBl
LCBleHByVDo6cmFuayA+IEEoIGV4cHIgKTsKICByZXR1cm4gSW50ZXJpb3IoQSwgYm91bmRhcnlT
aXplKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4KaW5saW5lIGJsaXR6OjpUaW55VmVj
dG9yPCBibGl0ejo6UmFuZ2UsIE4gPiAKUmFuZ2VWZWN0b3IoY29uc3QgYmxpdHo6OkFycmF5PFQs
IE4+JiBhKSB7CiAgYmxpdHo6OlRpbnlWZWN0b3I8IGJsaXR6OjpSYW5nZSwgTiA+IHJ2OwogIGZv
cihpbnQgaz0wOyBrPE47IGsrKykKICAgIHJ2W2tdID0gQXJyYXlfUmFuZ2UoYSwgayk7CiAgcmV0
dXJuIHJ2Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4KaW5saW5l
CmJsaXR6OjpHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4KQXJyYXlTaGFwZShibGl0ejo6QXJy
YXk8UF9udW10eXBlLCBOX3Jhbms+IGEpIHsKICBibGl0ejo6R2VuZXJhbEFycmF5U3RvcmFnZTxO
X3Jhbms+IHN0b3JhZ2U7CiAgc3RvcmFnZS5vcmRlcmluZygpID0gYS5vcmRlcmluZygpOwogIHN0
b3JhZ2UuYmFzZSgpID0gYS5iYXNlKCk7CiAgZm9yKGludCBpPTA7IGk8Tl9yYW5rOyBpKyspCiAg
ICBzdG9yYWdlLmFzY2VuZGluZ0ZsYWcoKShpKSA9IGEuaXNSYW5rU3RvcmVkQXNjZW5kaW5nKGkp
OwogIAogIHJldHVybiBzdG9yYWdlOwp9CgogCiAKIAogCiAKdGVtcGxhdGU8Y2xhc3MgVF9udW10
eXBlLCBpbnQgcmFuaz4KaW5saW5lCmJsaXR6OjpBcnJheTxUX251bXR5cGUsIHJhbms+IHJlaW5k
ZXgoY29uc3QgYmxpdHo6OkFycmF5PFRfbnVtdHlwZSwgcmFuaz4mIGEsCgkJCSAgICAgICBjb25z
dCBibGl0ejo6VGlueVZlY3RvcjxpbnQsIHJhbms+JiBuZXdiYXNlKSB7CiAgcmV0dXJuIGNvbnN0
X2Nhc3Q8YmxpdHo6OkFycmF5PFRfbnVtdHlwZSwgcmFuaz4gJj4oYSkucmVpbmRleChuZXdiYXNl
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlPgppbmxpbmUKYmxpdHo6OkFycmF5PFRfbnVt
dHlwZSwgMT4gcmVpbmRleChjb25zdCBibGl0ejo6QXJyYXk8VF9udW10eXBlLCAxPiYgYSwgaW50
IG5iMSkgewogIHJldHVybiByZWluZGV4KGEsIGJsaXR6OjpzaGFwZShuYjEpKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgVF9udW10eXBlPgppbmxpbmUKYmxpdHo6OkFycmF5PFRfbnVtdHlwZSwgMj4gcmVp
bmRleChjb25zdCBibGl0ejo6QXJyYXk8VF9udW10eXBlLCAyPiYgYSwgaW50IG5iMSwgaW50IG5i
MikgewogIHJldHVybiByZWluZGV4KGEsIGJsaXR6OjpzaGFwZShuYjEsIG5iMikpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IHJhbms+CmlubGluZQpibGl0ejo6QXJyYXk8VF9u
dW10eXBlLCByYW5rPiByZWluZGV4VHIoY29uc3QgYmxpdHo6OkFycmF5PFRfbnVtdHlwZSwgcmFu
az4mIGEsCgkJCQkgY29uc3QgYmxpdHo6OlRpbnlWZWN0b3I8aW50LCByYW5rPiYgZGVsdGEpIHsK
ICBibGl0ejo6VGlueVZlY3RvcjxpbnQsIHJhbms+IG5ld2Jhc2U7CiAgbmV3YmFzZSA9IGEuYmFz
ZSgpICsgZGVsdGE7CiAgcmV0dXJuIGNvbnN0X2Nhc3Q8YmxpdHo6OkFycmF5PFRfbnVtdHlwZSwg
cmFuaz4mPihhKS5yZWluZGV4KG5ld2Jhc2UpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGU+
CmlubGluZQpibGl0ejo6QXJyYXk8VF9udW10eXBlLCAxPiByZWluZGV4VHIoY29uc3QgYmxpdHo6
OkFycmF5PFRfbnVtdHlwZSwgMT4mIGEsIGludCBkMSkgewogIHJldHVybiByZWluZGV4VHIoYSwg
YmxpdHo6OnNoYXBlKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZT4KaW5saW5lCmJs
aXR6OjpBcnJheTxUX251bXR5cGUsIDI+IHJlaW5kZXhUcihjb25zdCBibGl0ejo6QXJyYXk8VF9u
dW10eXBlLCAyPiYgYSwgaW50IGQxLCBpbnQgZDIpIHsKICByZXR1cm4gcmVpbmRleFRyKGEsIGJs
aXR6OjpzaGFwZShkMSwgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBO
X3Jhbms+CmlubGluZQpibGl0ejo6QXJyYXk8VF9udW10eXBlLCBOX3Jhbms+IApTdWJBcnJheShj
b25zdCBibGl0ejo6QXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhLCBibGl0ejo6UmFuZ2Ugcikg
ewogIHJldHVybiByZWluZGV4KGNvbnN0X2Nhc3Q8YmxpdHo6OkFycmF5PFRfbnVtdHlwZSxOX3Jh
bms+Jj4oYSkociksIHIuZmlyc3QoKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50
IE5fcmFuaz4KaW5saW5lCmJsaXR6OjpBcnJheTxUX251bXR5cGUsIE5fcmFuaz4gClN1YkFycmF5
KGNvbnN0IGJsaXR6OjpBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGEsIAoJIGJsaXR6OjpSYW5n
ZSByMSwKCSBibGl0ejo6UmFuZ2UgcjIpIHsKICByZXR1cm4gcmVpbmRleChjb25zdF9jYXN0PGJs
aXR6OjpBcnJheTxUX251bXR5cGUsTl9yYW5rPiY+KGEpKHIxLHIyKSwgCgkJIHIxLmZpcnN0KCks
CgkJIHIyLmZpcnN0KCkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CnZvaWQgQXJyYXlfUmVzaXpl
KGJsaXR6OjpBcnJheTxULCAxPiYgYSwgYmxpdHo6OlJhbmdlIHIxKSB7CiAgYmxpdHo6OkFycmF5
PFQsMT4gdGVtcChyMSk7CiAgYS5yZWZlcmVuY2UoIHRlbXAgKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBUPgp2b2lkIEFycmF5X1Jlc2l6ZShibGl0ejo6QXJyYXk8VCwgMT4mIGEsIGludCBuczEpIHsK
ICBibGl0ejo6QXJyYXk8VCwxPiB0ZW1wKG5zMSk7CiAgYS5yZWZlcmVuY2UoIHRlbXAgKTsKfQog
IAp0ZW1wbGF0ZTxjbGFzcyBUPgp2b2lkIEFycmF5X1Jlc2l6ZShibGl0ejo6QXJyYXk8VCwgMj4m
IGEsIGJsaXR6OjpSYW5nZSByMSwgYmxpdHo6OlJhbmdlIHIyKSB7CiAgYmxpdHo6OkFycmF5PFQs
Mj4gdGVtcChyMSxyMik7CiAgYS5yZWZlcmVuY2UoIHRlbXAgKTsKfQoKdGVtcGxhdGU8Y2xhc3Mg
VD4Kdm9pZCBBcnJheV9SZXNpemUoYmxpdHo6OkFycmF5PFQsIDI+JiBhLCBpbnQgbnMxLCBpbnQg
bnMyKSB7CiAgYmxpdHo6OkFycmF5PFQsMj4gdGVtcChuczEsbnMyKTsKICBhLnJlZmVyZW5jZSgg
dGVtcCApOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgp2b2lkIEFycmF5X1Jlc2l6ZShibGl0ejo6QXJy
YXk8VCwgMz4mIGEsIGJsaXR6OjpSYW5nZSByMSwgYmxpdHo6OlJhbmdlIHIyLCBibGl0ejo6UmFu
Z2UgcjMpIHsKICBibGl0ejo6QXJyYXk8VCwgMz4gdGVtcChyMSxyMixyMyk7CiAgYS5yZWZlcmVu
Y2UoIHRlbXAgKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4Kdm9pZCBBcnJheV9SZXNpemUoYmxpdHo6
OkFycmF5PFQsIDM+JiBhLCBpbnQgbnMxLCBpbnQgbnMyLCBpbnQgbnMzKSB7CiAgYmxpdHo6OkFy
cmF5PFQsIDM+IHRlbXAobnMxLG5zMixuczMpOwogIGEucmVmZXJlbmNlKCB0ZW1wICk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFQ+CnZvaWQgQXJyYXlfUmVzaXplKGJsaXR6OjpBcnJheTxULCA0PiYgYSwg
YmxpdHo6OlJhbmdlIHIxLCBibGl0ejo6UmFuZ2UgcjIsIGJsaXR6OjpSYW5nZSByMywgYmxpdHo6
OlJhbmdlIHI0KSB7CiAgYmxpdHo6OkFycmF5PFQsIDQ+IHRlbXAocjEscjIscjMscjQpOwogIGEu
cmVmZXJlbmNlKCB0ZW1wICk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CnZvaWQgQXJyYXlfUmVzaXpl
KGJsaXR6OjpBcnJheTxULCA0PiYgYSwgaW50IG5zMSwgaW50IG5zMiwgaW50IG5zMywgaW50IG5z
NCkgewogIGJsaXR6OjpBcnJheTxULCA0PiB0ZW1wKG5zMSxuczIsbnMzLG5zNCk7CiAgYS5yZWZl
cmVuY2UoIHRlbXAgKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgaW50IG15TWF4SW5k
ZXgoY29uc3QgYmxpdHo6OkFycmF5PFQsIDE+JiBhKSB7CiAgaW50IGluZGV4ID0gYS5sYm91bmQo
YmxpdHo6OmZpcnN0RGltKTsKICBmb3IoaW50IGk9aW5kZXgrMTsgaTw9YS51Ym91bmQoYmxpdHo6
OmZpcnN0RGltKTsgaSsrKQogICAgaWYgKGEoaSkgPiBhKGluZGV4KSkgCiAgICAgIGluZGV4ID0g
aTsKICByZXR1cm4gaW5kZXg7Cn0KCgoKIAogCiAKaW5saW5lIHN0ZDo6b3N0cmVhbSYgYXJyYXlf
c3RkX291dChzdGQ6Om9zdHJlYW0mIG8sIGNvbnN0IGJsaXR6OjpBcnJheTxkb3VibGUsMT4mIGEp
IHsKICBmb3IoaW50IGk9YS5sYm91bmQoYmxpdHo6OmZpcnN0RGltKTsgaTw9YS51Ym91bmQoYmxp
dHo6OmZpcnN0RGltKTsgaSsrKQogICAgbyA8PCBzdGQ6OnNldHcoMTMpIDw8IGEoaSkgPDwgJyAn
OwogIHJldHVybiBvOwp9CgogCiAKaW5saW5lIHN0ZDo6b3N0cmVhbSYgYXJyYXlfZnVsbF9vdXQo
c3RkOjpvc3RyZWFtJiBvLCBjb25zdCBibGl0ejo6QXJyYXk8ZG91YmxlLDE+JiBhKSB7CiAgbyA8
PCAiQXJyYXkoIiA8PCBhLmxib3VuZChibGl0ejo6Zmlyc3REaW0pIDw8ICcsJyA8PCBhLnVib3Vu
ZChibGl0ejo6Zmlyc3REaW0pIAogICAgPDwgIikgPSB7XG4iOwogIGZvcihpbnQgaT1hLmxib3Vu
ZChibGl0ejo6Zmlyc3REaW0pOyBpPD1hLnVib3VuZChibGl0ejo6Zmlyc3REaW0pOyBpKyspCiAg
ICBvIDw8IHN0ZDo6c2V0dygxMykgPDwgYShpKSA8PCAnICc7CiAgbyA8PCAnfSc7CiAgcmV0dXJu
IG87Cn0KICAKIAogCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCmlubGluZSBzdGQ6Om9zdHJlYW0m
IGFycmF5X21tYV9vdXQoc3RkOjpvc3RyZWFtJiBvLCBjb25zdCBibGl0ejo6QXJyYXk8ZG91Ymxl
LDE+JiBhKSB7CiAgbyA8PCAieyAiOwogIGludCBpOwogIGZvcihpPWEubGJvdW5kKGJsaXR6Ojpm
aXJzdERpbSk7IGk8YS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKTsgaSsrKQogICAgbyA8PCBtbWFf
Zm9ybSA8PCBhKGkpIDw8ICIsICI7CiAgaWYgKGkgPT0gYS51Ym91bmQoYmxpdHo6OmZpcnN0RGlt
KSkKICAgIG8gPDwgbW1hX2Zvcm0gPDwgYShpKTsKICBvIDw8ICIgfSI7CiAgcmV0dXJuIG87Cn0K
CiAKIAp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4gYmxpdHo6OkFycmF5PFQsIE4tMT4gX2FycmF5
X3NsaWNlKGJsaXR6OjpBcnJheTxULCBOPiBhLCBpbnQgaSk7CnRlbXBsYXRlPGNsYXNzIFQ+IGJs
aXR6OjpBcnJheTxULCAxPiBfYXJyYXlfc2xpY2UoYmxpdHo6OkFycmF5PFQsIDI+IGEsIGludCBp
KSB7CiAgcmV0dXJuIGEoaSwgYmxpdHo6OlJhbmdlOjphbGwoKSk7Cn0KCnRlbXBsYXRlPGNsYXNz
IFQ+IGJsaXR6OjpBcnJheTxULCAyPiBfYXJyYXlfc2xpY2UoYmxpdHo6OkFycmF5PFQsIDM+IGEs
IGludCBpKSB7CiAgcmV0dXJuIGEoaSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdl
OjphbGwoKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGJsaXR6OjpBcnJheTxULCAzPiBfYXJyYXlf
c2xpY2UoYmxpdHo6OkFycmF5PFQsIDQ+IGEsIGludCBpKSB7CiAgcmV0dXJuIGEoaSwgYmxpdHo6
OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSk7
Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGJsaXR6OjpBcnJheTxULCA0PiBfYXJyYXlfc2xpY2UoYmxp
dHo6OkFycmF5PFQsIDU+IGEsIGludCBpKSB7CiAgcmV0dXJuIGEoaSwgYmxpdHo6OlJhbmdlOjph
bGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJh
bmdlOjphbGwoKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGJsaXR6OjpBcnJheTxULCA1PiBfYXJy
YXlfc2xpY2UoYmxpdHo6OkFycmF5PFQsIDY+IGEsIGludCBpKSB7CiAgcmV0dXJuIGEoaSwgYmxp
dHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwo
KSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSk7Cn0KCnRlbXBsYXRl
PGNsYXNzIFQ+IGJsaXR6OjpBcnJheTxULCA2PiBfYXJyYXlfc2xpY2UoYmxpdHo6OkFycmF5PFQs
IDc+IGEsIGludCBpKSB7CiAgcmV0dXJuIGEoaSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6
OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwg
YmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFQsIGludCBOPgpibGl0ejo6QXJyYXk8VCwgTi0xPiBzbGljZShibGl0ejo6QXJyYXk8VCxO
PiBBLCBpbnQgcmFuaywgaW50IGxvYykgewogIGJsaXR6OjpUaW55VmVjdG9yPGludCwgTj4gbmV3
UmFua3M7CiAgbmV3UmFua3NbMF0gPSByYW5rOwogIGZvcihpbnQgaT0xOyBpPE47aSsrKQogICAg
bmV3UmFua3NbaV0gPSBpIDw9IHJhbmsgPyBpLTEgOiBpOwogIHJldHVybiBfYXJyYXlfc2xpY2Uo
QS50cmFuc3Bvc2UobmV3UmFua3MpLCBsb2MpOwp9CgogCiAKIAogCnRlbXBsYXRlPGludCBOPgpp
bmxpbmUgc3RkOjpvc3RyZWFtJiBhcnJheV9tbWFfb3V0X04oc3RkOjpvc3RyZWFtJiBvLCBjb25z
dCBibGl0ejo6QXJyYXk8ZG91YmxlLCBOPiYgYikgewogIGJsaXR6OjpBcnJheTxkb3VibGUsIE4+
IGEoYik7CiAgbyA8PCAie1xuIjsKICBpbnQgaTsKICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZp
cnN0RGltKTsgaTxhLnVib3VuZChibGl0ejo6Zmlyc3REaW0pO2krKykgewogICAgbyA8PCAmYXJy
YXlfbW1hX291dF9OPE4tMT4gPDwgX2FycmF5X3NsaWNlKGEsaSk7IAogICAgbyA8PCAiLFxuIjsK
ICB9CiAgaWYgKGkgPT0gYS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKSkKICAgIG8gPDwgJmFycmF5
X21tYV9vdXRfTjxOLTE+IDw8IF9hcnJheV9zbGljZShhLGkpOwogIG8gPDwgIiB9IjsKICByZXR1
cm4gbzsKfQoKdGVtcGxhdGU8PgppbmxpbmUgc3RkOjpvc3RyZWFtJiBhcnJheV9tbWFfb3V0X048
MT4oc3RkOjpvc3RyZWFtJiBvLCBjb25zdCBibGl0ejo6QXJyYXk8ZG91YmxlLCAxPiYgYSkgewog
IHJldHVybiBvIDw8IGFycmF5X21tYV9vdXQgPDwgYTsKfQoKY2xhc3MgX2FycmF5X3N0ZF9vdXRf
ZHVtbXkgeyB9OwoKaW5saW5lIF9hcnJheV9zdGRfb3V0X2R1bW15IF9tYWtlX2FycmF5X3N0ZF9v
dXRfZHVtbXkoKSB7CiAgcmV0dXJuIF9hcnJheV9zdGRfb3V0X2R1bW15KCk7Cn0KCmNsYXNzIF9h
cnJheV9zdGRfb3V0X29zdHJlYW0gewpwdWJsaWM6CiAgc3RkOjpvc3RyZWFtKiBvczsKCiAgX2Fy
cmF5X3N0ZF9vdXRfb3N0cmVhbShzdGQ6Om9zdHJlYW0mIF9vcykgOiBvcygmX29zKSB7IH0KfTsK
CmlubGluZSBfYXJyYXlfc3RkX291dF9vc3RyZWFtIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBv
LCBfYXJyYXlfc3RkX291dF9kdW1teSkgewogIHJldHVybiBfYXJyYXlfc3RkX291dF9vc3RyZWFt
KG8pOwp9CgojZGVmaW5lIGFycmF5X3N0ZF9vdXQyICggX21ha2VfYXJyYXlfc3RkX291dF9kdW1t
eSgpICkKCnRlbXBsYXRlPGNsYXNzIFQsIGludCBOPgppbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8IChjb25zdCBfYXJyYXlfc3RkX291dF9vc3RyZWFtJiBhb28sIAoJCQkgICBibGl0ejo6
QXJyYXk8IFQsIE4gPiBhKSB7CiAgc3RkOjpvc3RyZWFtJiBvID0gKmFvby5vczsKICBvIDw8ICJ7
XG4iOwogIGludCBpOwogIGZvciAoaT1hLmxib3VuZChibGl0ejo6Zmlyc3REaW0pOyBpPGEudWJv
dW5kKGJsaXR6OjpmaXJzdERpbSk7aSsrKSB7CiAgICBvIDw8ICggX21ha2VfYXJyYXlfc3RkX291
dF9kdW1teSgpICkgIDw8IF9hcnJheV9zbGljZShhLGkpOyAKICAgIG8gPDwgIixcbiI7CiAgfQog
IGlmIChpID09IGEudWJvdW5kKGJsaXR6OjpmaXJzdERpbSkpCiAgICBvIDw8ICggX21ha2VfYXJy
YXlfc3RkX291dF9kdW1teSgpICkgIDw8IF9hcnJheV9zbGljZShhLGkpOwogIG8gPDwgIiB9IjsK
ICByZXR1cm4gbzsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3I8PChjb25zdCBfYXJyYXlfc3RkX291dF9vc3RyZWFtJiBhb28sIAoJCQkgICBibGl0ejo6
QXJyYXk8IFQsIDEgPiBhKSB7CiAgc3RkOjpvc3RyZWFtJiBvID0gKmFvby5vczsKICBvIDw8ICJ7
IjsKICBpbnQgaTsKICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZpcnN0RGltKTsgaTxhLnVib3Vu
ZChibGl0ejo6Zmlyc3REaW0pOyBpKyspIHsKICAgIG8gPDwgc3RkOjpzZXR3KDEzKSA8PCBhKGkp
IDw8ICIsICI7CiAgfQogIGlmIChpID09IGEudWJvdW5kKGJsaXR6OjpmaXJzdERpbSkpCiAgICBv
IDw8IHN0ZDo6c2V0dygxMykgPDwgYShpKTsKICBvIDw8ICIgfSI7CiAgcmV0dXJuIG87Cn0KCnRl
bXBsYXRlPGNsYXNzIFQ+CmlubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgX2Fy
cmF5X3N0ZF9vdXRfb3N0cmVhbSYgYW9vLCAKCQkJICAgYmxpdHo6Ol9iel9BcnJheUV4cHI8IFQg
PiBleHByKSB7CiAgdHlwZWRlZiBibGl0ejo6X2J6X0FycmF5RXhwcjxUPiBleHByVDsKICBibGl0
ejo6QXJyYXk8IHR5cGVuYW1lIGV4cHJUOjpUX251bXR5cGUsIGV4cHJUOjpyYW5rID4gQSggZXhw
ciApOwogIHJldHVybiBhb28gPDwgQTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHN0ZDo6
b3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBfYXJyYXlfc3RkX291dF9vc3RyZWFtJiBhb28sIAoJ
CQkJY29uc3QgYmxpdHo6OkVUQmFzZTwgVCA+JiBldCkgewogIGJsaXR6OjpBcnJheTwgdHlwZW5h
bWUgVDo6VF9udW10eXBlLCBUOjpyYW5rID4gCiAgICBBKCBzdGF0aWNfY2FzdDxjb25zdCBUJj4o
ZXQpICk7CiAgcmV0dXJuIGFvbyA8PCBBOwp9CgpjbGFzcyBfYXJyYXlfZnVsbF9vdXRfZHVtbXkg
eyB9OwoKaW5saW5lIF9hcnJheV9mdWxsX291dF9kdW1teSBfbWFrZV9hcnJheV9mdWxsX291dF9k
dW1teSgpIHsKICByZXR1cm4gX2FycmF5X2Z1bGxfb3V0X2R1bW15KCk7Cn0KCmNsYXNzIF9hcnJh
eV9mdWxsX291dF9vc3RyZWFtIHsKcHVibGljOgogIHN0ZDo6b3N0cmVhbSogb3M7CgogIF9hcnJh
eV9mdWxsX291dF9vc3RyZWFtKHN0ZDo6b3N0cmVhbSYgX29zKSA6IG9zKCZfb3MpIHsgfQp9OwoK
aW5saW5lIF9hcnJheV9mdWxsX291dF9vc3RyZWFtIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBv
LCBfYXJyYXlfZnVsbF9vdXRfZHVtbXkpIHsKICByZXR1cm4gX2FycmF5X2Z1bGxfb3V0X29zdHJl
YW0obyk7Cn0KCiNkZWZpbmUgYXJyYXlfZnVsbF9vdXQyICggX21ha2VfYXJyYXlfZnVsbF9vdXRf
ZHVtbXkoKSApCgp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4KaW5saW5lIHN0ZDo6b3N0cmVhbSYg
b3BlcmF0b3I8PCAoY29uc3QgX2FycmF5X2Z1bGxfb3V0X29zdHJlYW0mIGFvbywgCgkJCSAgIGJs
aXR6OjpBcnJheTwgVCwgTiA+IGEpIHsKICBzdGQ6Om9zdHJlYW0mIG8gPSAqYW9vLm9zOwogIG8g
PDwgIlsgIjsKICBmb3IoaW50IGk9MDsgaTxOOyBpKyspIHsKICAgIG8gPDwgQXJyYXlfUmFuZ2Uo
YSxpKTsKICAgIGlmIChpICE9IE4tMSkKICAgICAgbyA8PCAnLCc7CiAgICBvIDw8ICcgJzsKICB9
CiAgbyA8PCAiXSIgPDwgZW5kbDsKCiAgcmV0dXJuIG8gPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0
X2R1bW15KCkgKSAgPDwgYSA8PCBlbmRsOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgc3Rk
Ojpvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IF9hcnJheV9mdWxsX291dF9vc3RyZWFtJiBhb28s
IAoJCQkgICBibGl0ejo6X2J6X0FycmF5RXhwcjwgVCA+IGV4cHIpIHsKICB0eXBlZGVmIGJsaXR6
OjpfYnpfQXJyYXlFeHByPFQ+IGV4cHJUOwogIGJsaXR6OjpBcnJheTwgZXhwclQ6OlRfbnVtdHlw
ZSwgZXhwclQ6OnJhbmsgPiBBKCBleHByICk7CiAgcmV0dXJuIGFvbyA8PCBBOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBUPgppbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IF9hcnJheV9m
dWxsX291dF9vc3RyZWFtJiBhb28sIAoJCQkJY29uc3QgYmxpdHo6OkVUQmFzZTwgVCA+JiBldCkg
ewogIGJsaXR6OjpBcnJheTwgdHlwZW5hbWUgVDo6VF9udW10eXBlLCBUOjpyYW5rID4gCiAgICBB
KCBzdGF0aWNfY2FzdDxjb25zdCBUJj4oZXQpICk7CiAgcmV0dXJuIGFvbyA8PCBBOwp9CgpjbGFz
cyBfYXJyYXlfaGV4X291dF9kdW1teSB7IH07CgppbmxpbmUgX2FycmF5X2hleF9vdXRfZHVtbXkg
X21ha2VfYXJyYXlfaGV4X291dF9kdW1teSgpIHsKICByZXR1cm4gX2FycmF5X2hleF9vdXRfZHVt
bXkoKTsKfQoKY2xhc3MgX2FycmF5X2hleF9vdXRfb3N0cmVhbSB7CnB1YmxpYzoKICBzdGQ6Om9z
dHJlYW0qIG9zOwoKICBfYXJyYXlfaGV4X291dF9vc3RyZWFtKHN0ZDo6b3N0cmVhbSYgX29zKSA6
IG9zKCZfb3MpIHsgfQp9OwoKaW5saW5lIF9hcnJheV9oZXhfb3V0X29zdHJlYW0gb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0mIG8sIF9hcnJheV9oZXhfb3V0X2R1bW15KSB7CiAgcmV0dXJuIF9hcnJh
eV9oZXhfb3V0X29zdHJlYW0obyk7Cn0KCiNkZWZpbmUgYXJyYXlfaGV4X291dDIgKCBfbWFrZV9h
cnJheV9oZXhfb3V0X2R1bW15KCkgKQoKdGVtcGxhdGU8Y2xhc3MgVCwgaW50IE4+CmlubGluZSBz
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwgKGNvbnN0IF9hcnJheV9oZXhfb3V0X29zdHJlYW0mIGFv
bywgCgkJCSAgIGJsaXR6OjpBcnJheTwgVCwgTiA+IGEpIHsKICBzdGQ6Om9zdHJlYW0mIG8gPSAq
YW9vLm9zOwogIG8gPDwgIntcbiI7CiAgaW50IGk7CiAgZm9yIChpPWEubGJvdW5kKGJsaXR6Ojpm
aXJzdERpbSk7IGk8YS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKTtpKyspIHsKICAgIG8gPDwgKCBf
bWFrZV9hcnJheV9oZXhfb3V0X2R1bW15KCkgKSAgPDwgX2FycmF5X3NsaWNlKGEsaSk7IAogICAg
byA8PCAiLFxuIjsKICB9CiAgaWYgKGkgPT0gYS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKSkKICAg
IG8gPDwgKCBfbWFrZV9hcnJheV9oZXhfb3V0X2R1bW15KCkgKSAgPDwgX2FycmF5X3NsaWNlKGEs
aSk7CiAgbyA8PCAiIH0iOwogIHJldHVybiBvOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUg
c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IF9hcnJheV9oZXhfb3V0X29zdHJlYW0mIGFv
bywgCgkJCSAgIGJsaXR6OjpBcnJheTwgVCwgMSA+IGEpIHsKICBzdGQ6Om9zdHJlYW0mIG8gPSAq
YW9vLm9zOwogIG8gPDwgInsiOwogIGludCBpOwogIGZvciAoaT1hLmxib3VuZChibGl0ejo6Zmly
c3REaW0pOyBpPGEudWJvdW5kKGJsaXR6OjpmaXJzdERpbSk7IGkrKykgewogICAgbyA8PCBoZXhf
b3V0IDw8IGEoaSkgPDwgIiwgIjsKICB9CiAgaWYgKGkgPT0gYS51Ym91bmQoYmxpdHo6OmZpcnN0
RGltKSkKICAgIG8gPDwgaGV4X291dCA8PCBhKGkpOwogIG8gPDwgIiB9IjsKICByZXR1cm4gbzsK
fQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChjb25z
dCBfYXJyYXlfaGV4X291dF9vc3RyZWFtJiBhb28sIAoJCQkgICBibGl0ejo6X2J6X0FycmF5RXhw
cjwgVCA+IGV4cHIpIHsKICB0eXBlZGVmIGJsaXR6OjpfYnpfQXJyYXlFeHByPFQ+IGV4cHJUOwog
IGJsaXR6OjpBcnJheTwgZXhwclQ6OlRfbnVtdHlwZSwgZXhwclQ6OnJhbmsgPiBBKCBleHByICk7
CiAgcmV0dXJuIGFvbyA8PCBBOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgc3RkOjpvc3Ry
ZWFtJiBvcGVyYXRvcjw8KGNvbnN0IF9hcnJheV9oZXhfb3V0X29zdHJlYW0mIGFvbywgCgkJCQlj
b25zdCBibGl0ejo6RVRCYXNlPCBUID4mIGV0KSB7CiAgYmxpdHo6OkFycmF5PCB0eXBlbmFtZSBU
OjpUX251bXR5cGUsIFQ6OnJhbmsgPiAKICAgIEEoIHN0YXRpY19jYXN0PGNvbnN0IFQmPihldCkg
KTsKICByZXR1cm4gYW9vIDw8IEE7Cn0KCmNsYXNzIF9hcnJheV9tbWFfb3V0X2R1bW15IHsgfTsK
CmlubGluZSBfYXJyYXlfbW1hX291dF9kdW1teSBfbWFrZV9hcnJheV9tbWFfb3V0X2R1bW15KCkg
ewogIHJldHVybiBfYXJyYXlfbW1hX291dF9kdW1teSgpOwp9CgpjbGFzcyBfYXJyYXlfbW1hX291
dF9vc3RyZWFtIHsKcHVibGljOgogIHN0ZDo6b3N0cmVhbSogb3M7CgogIF9hcnJheV9tbWFfb3V0
X29zdHJlYW0oc3RkOjpvc3RyZWFtJiBfb3MpIDogb3MoJl9vcykgeyB9Cn07CgppbmxpbmUgX2Fy
cmF5X21tYV9vdXRfb3N0cmVhbSBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgbywgX2FycmF5X21t
YV9vdXRfZHVtbXkpIHsKICByZXR1cm4gX2FycmF5X21tYV9vdXRfb3N0cmVhbShvKTsKfQoKI2Rl
ZmluZSBhcnJheV9tbWFfb3V0MiAoIF9tYWtlX2FycmF5X21tYV9vdXRfZHVtbXkoKSApCgp0ZW1w
bGF0ZTxjbGFzcyBULCBpbnQgTj4KaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCAoY29u
c3QgX2FycmF5X21tYV9vdXRfb3N0cmVhbSYgYW9vLCAKCQkJICAgYmxpdHo6OkFycmF5PCBULCBO
ID4gYSkgewogIHN0ZDo6b3N0cmVhbSYgbyA9ICphb28ub3M7CiAgbyA8PCAie1xuIjsKICBpbnQg
aTsKICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZpcnN0RGltKTsgaTxhLnVib3VuZChibGl0ejo6
Zmlyc3REaW0pO2krKykgewogICAgbyA8PCAoIF9tYWtlX2FycmF5X21tYV9vdXRfZHVtbXkoKSAp
ICA8PCBfYXJyYXlfc2xpY2UoYSxpKTsgCiAgICBvIDw8ICIsXG4iOwogIH0KICBpZiAoaSA9PSBh
LnVib3VuZChibGl0ejo6Zmlyc3REaW0pKQogICAgbyA8PCAoIF9tYWtlX2FycmF5X21tYV9vdXRf
ZHVtbXkoKSApICA8PCBfYXJyYXlfc2xpY2UoYSxpKTsKICBvIDw8ICIgfSI7CiAgcmV0dXJuIG87
Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoY29u
c3QgX2FycmF5X21tYV9vdXRfb3N0cmVhbSYgYW9vLCAKCQkJICAgYmxpdHo6OkFycmF5PCBULCAx
ID4gYSkgewogIHN0ZDo6b3N0cmVhbSYgbyA9ICphb28ub3M7CiAgbyA8PCAieyI7CiAgaW50IGk7
CiAgZm9yIChpPWEubGJvdW5kKGJsaXR6OjpmaXJzdERpbSk7IGk8YS51Ym91bmQoYmxpdHo6OmZp
cnN0RGltKTsgaSsrKSB7CiAgICBvIDw8IG1tYV9mb3JtIDw8IGEoaSkgPDwgIiwgIjsKICB9CiAg
aWYgKGkgPT0gYS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKSkKICAgIG8gPDwgbW1hX2Zvcm0gPDwg
YShpKTsKICBvIDw8ICIgfSI7CiAgcmV0dXJuIG87Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGlu
ZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgX2FycmF5X21tYV9vdXRfb3N0cmVhbSYg
YW9vLCAKCQkJICAgYmxpdHo6Ol9iel9BcnJheUV4cHI8IFQgPiBleHByKSB7CiAgdHlwZWRlZiBi
bGl0ejo6X2J6X0FycmF5RXhwcjxUPiBleHByVDsKICBibGl0ejo6QXJyYXk8IGV4cHJUOjpUX251
bXR5cGUsIGV4cHJUOjpyYW5rID4gQSggZXhwciApOwogIHJldHVybiBhb28gPDwgQTsKfQoKdGVt
cGxhdGU8Y2xhc3MgVD4KaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBfYXJy
YXlfbW1hX291dF9vc3RyZWFtJiBhb28sIAoJCQkJY29uc3QgYmxpdHo6OkVUQmFzZTwgVCA+JiBl
dCkgewogIGJsaXR6OjpBcnJheTwgdHlwZW5hbWUgVDo6VF9udW10eXBlLCBUOjpyYW5rID4gCiAg
ICBBKCBzdGF0aWNfY2FzdDxjb25zdCBUJj4oZXQpICk7CiAgcmV0dXJuIGFvbyA8PCBBOwp9Cgp0
ZW1wbGF0ZTxjbGFzcyBmb3JtLCBjbGFzcyBULCBpbnQgTj4KY2xhc3MgX2Zvcm1hdF9vdXRfY2Fs
bGVyPGZvcm0sIGJsaXR6OjpBcnJheTxULE4+ID4gewpwdWJsaWM6CiAgc3RhdGljIHN0ZDo6b3N0
cmVhbSYgYXBwbHkoY29uc3QgX2Zvcm1hdF9vdXRfb3N0cmVhbTxmb3JtPiYgYW9vLCAKCQkJICAg
ICBibGl0ejo6QXJyYXk8VCwgTj4gYSkgewogICAgYW9vLm9zIDw8ICJ7XG4iOwogICAgaW50IGk7
CiAgICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZpcnN0RGltKTsgaTxhLnVib3VuZChibGl0ejo6
Zmlyc3REaW0pO2krKykgewogICAgICBhb28gPDwgX2FycmF5X3NsaWNlKGEsaSk7IAogICAgICBh
b28ub3MgPDwgIixcbiI7CiAgICB9CiAgICBpZiAoaSA9PSBhLnVib3VuZChibGl0ejo6Zmlyc3RE
aW0pKQogICAgICBhb28gPDwgX2FycmF5X3NsaWNlKGEsaSk7CiAgICBhb28ub3MgPDwgIiB9IjsK
ICAgIHJldHVybiBhb28ub3M7CiAgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgZm9ybSwgY2xhc3MgVD4K
Y2xhc3MgX2Zvcm1hdF9vdXRfY2FsbGVyPGZvcm0sIGJsaXR6OjpBcnJheTxULDE+ID4gewpwdWJs
aWM6CiAgc3RhdGljIHN0ZDo6b3N0cmVhbSYgYXBwbHkoY29uc3QgX2Zvcm1hdF9vdXRfb3N0cmVh
bTxmb3JtPiYgYW9vLCAKCQkJICAgICBibGl0ejo6QXJyYXk8IFQsIDEgPiBhKSB7CiAgICBhb28u
b3MgPDwgInsiOwogICAgaW50IGk7CiAgICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZpcnN0RGlt
KTsgaTxhLnVib3VuZChibGl0ejo6Zmlyc3REaW0pOyBpKyspIHsKICAgICAgYW9vIDw8IGEoaSkg
PDwgIiwgIjsKICAgIH0KICAgIGlmIChpID09IGEudWJvdW5kKGJsaXR6OjpmaXJzdERpbSkpCiAg
ICAgIGFvbyA8PCBhKGkpOwogICAgYW9vLm9zIDw8ICIgfSI7CiAgICByZXR1cm4gYW9vLm9zOwog
IH0KfTsKCnRlbXBsYXRlPGNsYXNzIGZvcm0sIGNsYXNzIFQ+CmNsYXNzIF9mb3JtYXRfb3V0X2Nh
bGxlcjxmb3JtLCBibGl0ejo6X2J6X0FycmF5RXhwcjxUPiA+IHsKcHVibGljOgogIHN0YXRpYyBz
dGQ6Om9zdHJlYW0mIGFwcGx5KGNvbnN0IF9mb3JtYXRfb3V0X29zdHJlYW08Zm9ybT4mIGFvbywg
CgkJCSAgICAgYmxpdHo6Ol9iel9BcnJheUV4cHI8IFQgPiBleHByKSB7CiAgICB0eXBlZGVmIGJs
aXR6OjpfYnpfQXJyYXlFeHByPFQ+IGV4cHJUOwogICAgYmxpdHo6OkFycmF5PCBleHByVDo6VF9u
dW10eXBlLCBleHByVDo6cmFuayA+IEEoIGV4cHIgKTsKICAgIHJldHVybiBhb28gPDwgQTsKICB9
Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBmb3JtLCBjbGFzcyBUPgpjbGFzcyBfZm9ybWF0X291dF9jYWxs
ZXI8Zm9ybSwgYmxpdHo6OkVUQmFzZTxUPiA+IHsKcHVibGljOgogIHN0YXRpYyBzdGQ6Om9zdHJl
YW0mIGFwcGx5KGNvbnN0IF9mb3JtYXRfb3V0X29zdHJlYW08Zm9ybT4mIGFvbywgCgkJCSAgICAg
Y29uc3QgYmxpdHo6OkVUQmFzZTwgVCA+JiBldCkgewogICAgYmxpdHo6OkFycmF5PCB0eXBlbmFt
ZSBUOjpUX251bXR5cGUsIFQ6OnJhbmsgPiAKICAgICAgQSggc3RhdGljX2Nhc3Q8Y29uc3QgVCY+
KGV0KSApOwogICAgcmV0dXJuIGFvbyA8PCBBOwogIH0KfTsKCnRlbXBsYXRlPGNsYXNzIFQsIGlu
dCBOPgpjbGFzcyBfZm9ybWF0X291dF9jYWxsZXI8X2Jpbl9vdXRfZHVtbXksIGJsaXR6OjpBcnJh
eTxULE4+ID4gewpwdWJsaWM6CiAgc3RhdGljIHN0ZDo6b3N0cmVhbSYgYXBwbHkoY29uc3QgX2Zv
cm1hdF9vdXRfb3N0cmVhbTxfYmluX291dF9kdW1teT4mIGFvbywgCgkJCSAgICAgYmxpdHo6OkFy
cmF5PFQsIE4+IGEpIHsKICAgIGludCBpOwogICAgZm9yIChpPWEubGJvdW5kKGJsaXR6OjpmaXJz
dERpbSk7IGk8PWEudWJvdW5kKGJsaXR6OjpmaXJzdERpbSk7aSsrKQogICAgICBhb28gPDwgX2Fy
cmF5X3NsaWNlKGEsaSk7IAogICAgcmV0dXJuIGFvby5vczsKICB9Cn07Cgp0ZW1wbGF0ZTxjbGFz
cyBUPgpjbGFzcyBfZm9ybWF0X291dF9jYWxsZXI8X2Jpbl9vdXRfZHVtbXksIGJsaXR6OjpBcnJh
eTxULDE+ID4gewpwdWJsaWM6CiAgc3RhdGljIHN0ZDo6b3N0cmVhbSYgYXBwbHkoY29uc3QgX2Zv
cm1hdF9vdXRfb3N0cmVhbTxfYmluX291dF9kdW1teT4mIGFvbywgCgkJCSAgICAgYmxpdHo6OkFy
cmF5PCBULCAxID4gYSkgewogICAgaW50IGk7CiAgICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZp
cnN0RGltKTsgaTw9YS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKTsgaSsrKQogICAgICBhb28gPDwg
YShpKTsKICAgIHJldHVybiBhb28ub3M7CiAgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgVCwgaW50IE4+
CmNsYXNzIF9mb3JtYXRfb3V0X2NhbGxlcjxfYmluX29wcG9zaXRlX291dF9kdW1teSwgYmxpdHo6
OkFycmF5PFQsTj4gPiB7CnB1YmxpYzoKICBzdGF0aWMgc3RkOjpvc3RyZWFtJiBhcHBseShjb25z
dCBfZm9ybWF0X291dF9vc3RyZWFtPF9iaW5fb3Bwb3NpdGVfb3V0X2R1bW15PiYgYW9vLCAKCQkJ
ICAgICBibGl0ejo6QXJyYXk8VCwgTj4gYSkgewogICAgaW50IGk7CiAgICBmb3IgKGk9YS5sYm91
bmQoYmxpdHo6OmZpcnN0RGltKTsgaTw9YS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKTtpKyspCiAg
ICAgIGFvbyA8PCBfYXJyYXlfc2xpY2UoYSxpKTsgCiAgICByZXR1cm4gYW9vLm9zOwogIH0KfTsK
CnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzIF9mb3JtYXRfb3V0X2NhbGxlcjxfYmluX29wcG9zaXRl
X291dF9kdW1teSwgYmxpdHo6OkFycmF5PFQsMT4gPiB7CnB1YmxpYzoKICBzdGF0aWMgc3RkOjpv
c3RyZWFtJiBhcHBseShjb25zdCBfZm9ybWF0X291dF9vc3RyZWFtPF9iaW5fb3Bwb3NpdGVfb3V0
X2R1bW15PiYgYW9vLCAKCQkJICAgICBibGl0ejo6QXJyYXk8IFQsIDEgPiBhKSB7CiAgICBpbnQg
aTsKICAgIGZvciAoaT1hLmxib3VuZChibGl0ejo6Zmlyc3REaW0pOyBpPD1hLnVib3VuZChibGl0
ejo6Zmlyc3REaW0pOyBpKyspCiAgICAgIGFvbyA8PCBhKGkpOwogICAgcmV0dXJuIGFvby5vczsK
ICB9Cn07CgogCiAKIAogCnRlbXBsYXRlPGNsYXNzIFQ+CmJsaXR6OjpBcnJheTxULDE+IEFycmF5
RGlhZ29uYWwoYmxpdHo6OkFycmF5PFQsMj4gYSkgewogIGJsaXR6OjpHZW5lcmFsQXJyYXlTdG9y
YWdlPDE+IHN0b3JhZ2U7CiAgc3RvcmFnZS5iYXNlKCkgPSBhLmxib3VuZChibGl0ejo6Zmlyc3RE
aW0pOwogIHJldHVybiBibGl0ejo6QXJyYXk8VCwgMT4gKGEuZGF0YSgpLCBibGl0ejo6c2hhcGUo
YS5leHRlbnQoYmxpdHo6OmZpcnN0RGltKSksIAoJCSAgICAgIGJsaXR6Ojpkb3QoYS5zdHJpZGUo
KSwgYmxpdHo6OnNoYXBlKDEsMSkpLCBzdG9yYWdlICk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmJs
aXR6OjpBcnJheTxULDE+IEFycmF5RGlhZ29uYWwoYmxpdHo6OkFycmF5PFQsMj4gYSwgaW50IGRp
YWdubykgewogIFQqIGZpcnN0RWxlbSA9IGEuZGF0YSgpICsgKGRpYWdubyA+PSAwID8gYmxpdHo6
OmRvdChhLnN0cmlkZSgpLCBibGl0ejo6c2hhcGUoMCwgZGlhZ25vKSkgOgoJCQkgICAgIGJsaXR6
Ojpkb3QoYS5zdHJpZGUoKSwgYmxpdHo6OnNoYXBlKC1kaWFnbm8sIDApKSk7CgogIGJsaXR6OjpH
ZW5lcmFsQXJyYXlTdG9yYWdlPDE+IHN0b3JhZ2U7CiAgc3RvcmFnZS5iYXNlKCkgPSBhLmxib3Vu
ZChibGl0ejo6Zmlyc3REaW0pICsgCiAgICAoZGlhZ25vID49IDAgPyAwIDogLWRpYWdubyk7Cgog
IHJldHVybiBibGl0ejo6QXJyYXk8VCwgMT4gKGZpcnN0RWxlbSwgYmxpdHo6OnNoYXBlKGEuZXh0
ZW50KGJsaXR6OjpmaXJzdERpbSkgLSBhYnMoZGlhZ25vKSksIAoJCSAgICAgIGJsaXR6Ojpkb3Qo
YS5zdHJpZGUoKSwgYmxpdHo6OnNoYXBlKDEsMSkpLCBzdG9yYWdlICk7Cn0KCnRlbXBsYXRlPGlu
dCByYW5rPgppbnQgc2l6ZShjb25zdCBibGl0ejo6UmVjdERvbWFpbjxyYW5rPiBkKSB7CiAgcmV0
dXJuIHByb2R1Y3QoIGJsaXR6OjpUaW55VmVjdG9yPGludCwgcmFuaz4oZC51Ym91bmQoKSAtIGQu
bGJvdW5kKCkgKyAxKSApOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYmxpdHo6OkFycmF5
PHR5cGVuYW1lIGJsaXR6Ojphc0V4cHI8VD46OlRfZXhwcjo6VF9udW10eXBlLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBibGl0ejo6YXNFeHByPFQ+OjpUX2V4cHI6OnJhbms+CmV2YWx1
YXRlKGNvbnN0IGJsaXR6OjpFVEJhc2U8IFQgPiYgZXhwcikgewogIHJldHVybiBibGl0ejo6QXJy
YXk8dHlwZW5hbWUgYmxpdHo6OmFzRXhwcjxUPjo6VF9leHByOjpUX251bXR5cGUsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmxpdHo6OmFzRXhwcjxUPjo6VF9leHByOjpyYW5rPgog
ICAgKHN0YXRpY19jYXN0PGNvbnN0IFQmPihleHByKSk7Cn0JCQkJICAgICAgCgoKIyAyICJ0ZXN0
Q3ViaWMuY2MiIDIKCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgYmxpdHo7
Cgpkb3VibGUgZjEoZG91YmxlIHgpIHsKICByZXR1cm4geCp4KnggKyAzKngqeCAtIDYqeCAtIDE3
Owp9Cgpkb3VibGUgZjFwKGRvdWJsZSB4KSB7CiAgcmV0dXJuIDMqeCp4ICsgNip4IC0gNjsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiBzdHJ1Y3QgIGYxX2ltcGwgeyB0eXBlZGVmIFBfbnVt
dHlwZSBUX251bXR5cGU7IHRlbXBsYXRlPGNsYXNzIFQ+IHN0YXRpYyBpbmxpbmUgVCBhcHBseShU
IHgpIHsgcmV0dXJuICBmMSAoeCk7IH0gdGVtcGxhdGU8Y2xhc3MgVDE+IHN0YXRpYyB2b2lkIHBy
ZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LCBjb25zdCBU
MSYgYSkgeyBzdHIgKz0gImYxIjsgc3RyICs9ICIoIjsgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0
KTsgc3RyICs9ICIpIjsgfSB9OyB0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICBmMV9p
bXBsIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gICBmMSAg
KGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICBmMV9pbXBsIDwgdHlw
ZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNv
bnN0IFQxJj4oZDEpKTsgfSAgOwoKaW50IG1haW4oKSB7CiAgUmFuZ2UgcigzLDkpLCBycCgyLDkp
OwogIEFycmF5PGRvdWJsZSwgMT4geChyKSwgeShyKTsKCiAgeCA9IHI7CiAgeSA9IGYxKHgpOwoK
ICAKICBBcnJheTxkb3VibGUsIDE+IHh0KHJwKTsKICB4dCA9IHRlbnNvcjo6aSsuNTsKCiAgQ3Vi
aWNTcGxpbmU8ZG91YmxlPiBjczEoeCx5KTsKCiAgY291dCA8PCAoIF9tYWtlX2FycmF5X3N0ZF9v
dXRfZHVtbXkoKSApICA8PCB5IDw8IGVuZGwgCiAgICAgICA8PCAoIF9tYWtlX2FycmF5X3N0ZF9v
dXRfZHVtbXkoKSApICA8PCBjczEoeCkgPDwgZW5kbAogICAgICAgPDwgKCBfbWFrZV9hcnJheV9z
dGRfb3V0X2R1bW15KCkgKSAgPDwgZjEoeHQpIDw8IGVuZGwKICAgICAgIDw8ICggX21ha2VfYXJy
YXlfc3RkX291dF9kdW1teSgpICkgIDw8IGNzMSh4dCkgPDwgZW5kbDsKCiAgQ3ViaWNTcGxpbmU8
ZG91YmxlPiBjczFyKHgucmV2ZXJzZShmaXJzdERpbSksIHkucmV2ZXJzZShmaXJzdERpbSkpOwog
IAogIGNvdXQgPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgeSA8PCBlbmRs
IAogICAgICAgPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgY3Mxcih4KSA8
PCBlbmRsCiAgICAgICA8PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCBmMSh4
dCkgPDwgZW5kbAogICAgICAgPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwg
Y3Mxcih4dCkgPDwgZW5kbDsKCiAgQ3ViaWNTcGxpbmU8ZG91YmxlPiBjczIoeCx5LCBDdWJpY1Nw
bGluZTxkb3VibGU+OjpzdGFydCwgZjFwKHgoIHgubGJvdW5kKGZpcnN0RGltKSApKSk7CiAgCiAg
Y291dCA8PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCB5IDw8IGVuZGwgCiAg
ICAgICA8PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCBjczIoeCkgPDwgZW5k
bAogICAgICAgPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgZjEoeHQpIDw8
IGVuZGwKICAgICAgIDw8ICggX21ha2VfYXJyYXlfc3RkX291dF9kdW1teSgpICkgIDw8IGNzMih4
dCkgPDwgZW5kbDsKCiAgQ3ViaWNTcGxpbmU8ZG91YmxlPiBjczMoeCx5LCBDdWJpY1NwbGluZTxk
b3VibGU+OjplbmQsIGYxcCh4KCB4LnVib3VuZChmaXJzdERpbSkgKSkpOwoKICBjb3V0IDw8ICgg
X21ha2VfYXJyYXlfc3RkX291dF9kdW1teSgpICkgIDw8IHkgPDwgZW5kbCAKICAgICAgIDw8ICgg
X21ha2VfYXJyYXlfc3RkX291dF9kdW1teSgpICkgIDw8IGNzMyh4KSA8PCBlbmRsCiAgICAgICA8
PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCBmMSh4dCkgPDwgZW5kbAogICAg
ICAgPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgY3MzKHh0KSA8PCBlbmRs
OwoKICBDdWJpY1NwbGluZTxkb3VibGU+IGNzNCh4LHksIAoJCSAgZjFwKHgoIHgubGJvdW5kKGZp
cnN0RGltKSApKSwgZjFwKHgoIHgudWJvdW5kKGZpcnN0RGltKSApKSk7CgogIGNvdXQgPDwgKCBf
bWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgeSA8PCBlbmRsIAogICAgICAgPDwgKCBf
bWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgY3M0KHgpIDw8IGVuZGwKICAgICAgIDw8
ICggX21ha2VfYXJyYXlfc3RkX291dF9kdW1teSgpICkgIDw8IGYxKHh0KSA8PCBlbmRsCiAgICAg
ICA8PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCBjczQoeHQpIDw8IGVuZGw7
CgogIEN1YmljU3BsaW5lPGRvdWJsZT4gY3M1KHgseSwgCgkJICBDdWJpY1NwbGluZTxkb3VibGU+
OjplbmQsIGYxcCh4KCB4LnVib3VuZChmaXJzdERpbSkgKSksIAoJCSAgQ3ViaWNTcGxpbmU8ZG91
YmxlPjo6c3RhcnQsIGYxcCh4KCB4Lmxib3VuZChmaXJzdERpbSkgKSkpOwogIAogIGNvdXQgPDwg
KCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgeSA8PCBlbmRsIAogICAgICAgPDwg
KCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgY3M1KHgpIDw8IGVuZGwKICAgICAg
IDw8ICggX21ha2VfYXJyYXlfc3RkX291dF9kdW1teSgpICkgIDw8IGYxKHh0KSA8PCBlbmRsCiAg
ICAgICA8PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCBjczUoeHQpIDw8IGVu
ZGw7Cn0KCg==


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2001-05-04 15:36 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-05-04 15:36 c++/2736: g++ misinterpreting initializer syntax Phil Edwards
  -- strict thread matches above, loose matches on Subject: below --
2001-05-04  4:46 derrick

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).