From weber@exp-math.uni-essen.de Tue Jan 30 06:37:19 2001
Return-Path: <weber@werner.exp-math.uni-essen.de>
Received: from abel.math.harvard.edu (abel [140.247.28.153])
	by modular.fas.harvard.edu (8.11.0/8.11.0) with ESMTP id f0UBc8g19720
	for <was@modular.fas.harvard.edu>; Tue, 30 Jan 2001 06:38:08 -0500
Received: from irmgard.exp-math.uni-essen.de (irmgard.exp-math.uni-essen.de [132.252.150.18])
	by abel.math.harvard.edu (8.11.0/8.11.0) with ESMTP id f0UBbLm21068
	for <was@math.harvard.edu>; Tue, 30 Jan 2001 06:37:21 -0500 (EST)
Received: from werner.exp-math.uni-essen.de (werner.exp-math.uni-essen.de [132.252.150.17])
	by irmgard.exp-math.uni-essen.de (8.9.3/8.9.3) with SMTP id MAA29222
	for <was@math.harvard.edu>; Tue, 30 Jan 2001 12:37:20 +0100
Received: from localhost by werner.exp-math.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
          id AA57680; Tue, 30 Jan 2001 12:37:19 +0100
Date: Tue, 30 Jan 2001 12:37:19 +0100 (MEZ)
From: Georg Weber <weber@exp-math.uni-essen.de>
To: William A Stein <was@math.harvard.edu>
Subject: Xiangdong Wang's maple-program
Message-Id: <Pine.A32.3.95.1010130122119.44792A-200000@werner.exp-math.uni-essen.de>
Mime-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-2063821295-984380117-980854639=:44792"
Status: RO
X-Status: O

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---2063821295-984380117-980854639=:44792
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi William!

The program attached produces some
error messages when loaded into maple
(with the usual command "read 'sk_maple';"),
nevertheless it works. Try
         sk_basis(2, 11, 20);
for a starter. The first argument is the
weight k, the second argument is the
level N, and the third argument is a
bound B for number of fourier coefficients
to print out.
The output is firstly some data related to
the computations (ask me if you can't figure
out what is what) and secondly a basis,
each element of which is given by its first
B fourier coefficients. The basis is arranged
just in the way you do it within magma with
the "CuspForms "-command, that is as good
"delta(i,j)" as possible.

For level N=1, the program runs into a bug.
The sourcecode is ... hmmm ... well, have a look
at it. The program has the ability to deal with
real-valued characters as well, but I didn't
experiment much with it.

By the way, could you send me your "CuspForms"-
extensions of your magma package? These commands
really seem to be the natural thing to use ...

Have a nice trip tomorrow to Rennes,

 -- Georg

---2063821295-984380117-980854639=:44792
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=sk_maple
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.A32.3.95.1010130123719.44792B@werner.exp-math.uni-essen.de>
Content-Description: sk_maple

IyAgICAgICAgICANCiMgICAgICAgICAgY29tcHV0ZSBhIGJhc2lzIG9mIFNr
KEdhbW1hXzAoTiksY2hpKSB3aXRob3V0IHJlZHVjaW5nIGZpcnN0IFMsRS4g
DQojICAgICAgICAgIGNvbXB1dGUgdGhlIGJhc2lzOiBza19iYXNpcyhrLE4p
Ow0KIyAgICAgICAgICBjb21wdXRlIHRoZSBIZWNrZSBvcGVyYXRvcnM6IGhl
Y2tlKCk7DQojDQojICAgICAgICAgIHJlbWFyazogdGhlIGZpcnN0IGluZGV4
IG9mIGFsbCBhcnJheXMgaXMgMQ0KIyAgICAgICAgICBnbG9iYWwgdmFyaWFi
bGVzOiBOMCxOLE0wLE0xLE0yLE0zLE04LEJNYXQseCx5LHosbmViZW50eXBl
DQojICAgICAgICAgIG5lYmVudHlwZSA9IDE6IHRyaXZpYWwgPTI6IGtyb25l
Y2tlciBzeW1ib2wuDQojICAgICAgICAgIGNvbXB1dGhlY2tlPTA6IG9ubHkg
Y29tcHV0ZSBhIGJhc2lzOyA+MDogYWxzbyBjb21wdXRlIGhlY2tlIG9wZXJh
dG9yLg0Kd29yZHMoMCk6IA0KZ2MoMCk6DQp3aXRoKGxpbmFsZyk6DQp3aXRo
KG51bXRoZW9yeSk6DQpuZWJlbnR5cGU6PTE6DQpjb21wdXRlaGVja2U6PTA6
DQojDQojIGtyb25lY2tlciBzeW1ib2xzIA0KIw0Ka3JvbmVja2VyOj1wcm9j
KGEsYikgbG9jYWwgeDEseTEsejEsYzsNCiAgIGdsb2JhbCBOMCxCLEFUYWIs
djEsdDIsTWF4bSx2LE4sTTAsTTEsTTIsTTMsTTgsQk1hdCx4LHkseixuZWJl
bnR5cGU7DQogICBjOj1iOw0KICAgaWYgYz0xIHRoZW4gUkVUVVJOKDEpIGZp
Ow0KICAgaWYgYz0wIHRoZW4gDQogICAgICBpZiBhPTEgdGhlbiBSRVRVUk4o
MSkgZmk7DQogICAgICBSRVRVUk4oMCkNCiAgIGZpOw0KICAgaWYgYz0tMSB0
aGVuIA0KICAgICAgaWYgYT49MCB0aGVuIFJFVFVSTigxKSBmaTsNCiAgICAg
IFJFVFVSTigtMSk7DQogICBmaTsNCg0KICAgeTE6PTA7IHgxOj0xOyANCiAg
IHdoaWxlIGMgbW9kIDIgPSAwIGRvDQogICAgICBjOj1jLzI7IHkxOj15MSsx
Ow0KICAgb2Q7DQogICBpZiB5MT4wIHRoZW4NCiAgICAgIHoxOj1hIG1vZCA4
Ow0KICAgICAgaWYgejE8MCB0aGVuIHoxOj16MSs4IGZpOyANCiAgICAgIGlm
IHoxPTEgdGhlbiB4MTo9MSBmaTsNCiAgICAgIGlmIHoxPTUgdGhlbiB4MTo9
LTEgZmk7DQogICAgICBpZiB6MTw+MSBhbmQgejE8PjUgdGhlbiBSRVRVUk4o
MCkgZmk7DQogICAgICBpZiB5MSBtb2QgMiA9IDAgdGhlbiB4MTo9MSBmaTsN
CiAgIGZpOw0KICAgaWYgYzwwIHRoZW4gDQogICAgICBpZiBhPDAgdGhlbiB4
MTo9LXgxIGZpOw0KICAgICAgYzo9LWM7DQogICBmaTsNCiAgIHgxOj14MSpq
YWNvYmkoYSxjKTsNCiAgIFJFVFVSTih4MSk7DQplbmQ6ICANCg0KIw0KIyAg
MngyIG1hdHJpeCBnIG9wZXJhdGVzIG9uIHBvbHlub21pYWwgeV5uK3h5Xihu
LTEpeit4XjJ5XihuLTIpel4yKy4uLg0KIw0KZ29wOj1wcm9jKGcscCkgbG9j
YWwgcTsgICAgIA0KCWdsb2JhbCBOMCxCLEFUYWIsdjEsdDIsTWF4bSx2LGIs
TixNMCxNMSxNMixNMyxNOCxCTWF0LHgseSx6LG5lYmVudHlwZTsNCiAgIGlm
IE49MCB0aGVuIFJFVFVSTihwKSBmaTsNCiAgIHE6PXN1YnMoe3g9Z1sxLDFd
KngrZ1sxLDJdKnkseT1nWzIsMV0qeCtnWzIsMl0qeX0scCk7DQogICBxOj1l
eHBhbmQocSk7DQplbmQ6IA0KDQojDQojICBEaXJpY2hsZXQgY2hhcmFjdGVy
LCBuZWVkIHRoZSBnbG9iYWwgdmFyaWFibGUgTjAgDQojDQpjaGk6PSBwcm9j
KGIpIGxvY2FsIGE7DQogICBnbG9iYWwgTjAsQixBVGFiLHYxLHQyLE1heG0s
dixOLE0wLE0xLE0yLE0zLE04LEJNYXQseCx5LHosbmViZW50eXBlOw0KICAg
YTo9aWdjZChiLE4wKTsNCiAgIGlmIGE+MSB0aGVuIFJFVFVSTigwKSBmaTsg
DQogICBpZiBuZWJlbnR5cGU9MSB0aGVuIFJFVFVSTigxKSBmaTsNCiAgIGlm
IG5lYmVudHlwZT0yIHRoZW4gDQojICAgICAgYTo9bGVnZW5kcmUoYixOMCk7
DQogICAgICAgYTo9IGphY29iaShiLE4wKTsNCiAgICAgIFJFVFVSTihhKQ0K
ICAgZmk7DQplbmQ6DQoNCiMNCiMgIA0KIyAgb3V0cHV0OiAoZ2xvYmFsKSBN
MCxNMS4NCiMgIG5lZWQgZ2xvYmFsIHZhcmlhYmxlcyBOMCxODQojDQpnZXRf
Y29uc3RhbnRzOj0gcHJvYygpIA0KICAgbG9jYWwgbSxuLHAscSxpLGosazsN
CglnbG9iYWwgTjAsQixBVGFiLHYxLHQyLE1heG0sdixiLE4sTTAsTTEsTTIs
TTMsTTgsQk1hdCx4LHkseixuZWJlbnR5cGU7DQogICAgICAgICAgICAgICAg
ICAgICAgIA0KICAgcDo9ZmFjdG9yc2V0KE4wKTsgDQogICBNMDo9TjA7DQog
ICBpZiBOMD4xIHRoZW4gZm9yIG0gaW4gcCBkbyBNMDo9aXF1byhNMCxtKSoo
bSsxKSBvZDsgZmk7DQogICBNMTo9TTAqKE4rMSk7IA0KICAgDQogICBtOj1O
MCBtb2QgNDsNCiAgIGlmIG09MCB0aGVuIE0yOj0wIGVsc2UgDQogICAgICBN
Mjo9MTsNCiAgICAgIGZvciBtIGluIHAgZG8gTTI6PU0yKigxK2tyb25lY2tl
cigtMSxtKSkgb2Q7DQogICBmaTsNCg0KICAgbTo9TjAgbW9kIDk7DQogICBp
ZiBtPTAgdGhlbiBNMzo9MDsgZWxzZSANCiAgICAgIE0zOj0xOw0KICAgICAg
Zm9yIG0gaW4gcCBkbyBNMzo9TTMqKDEra3JvbmVja2VyKC0zLG0pKSBvZDsN
CiAgIGZpOw0KDQogICBNODo9MTsgICAgICANCiAgIHJlYWRsaWIoaWZhY3Rv
cnMpOw0KICAgcDo9b3AoMixpZmFjdG9ycyhOMCkpOyAgDQogICBmb3IgbSBp
biBwIGRvIA0KICAgICAgcTo9b3AoMSxtKTsNCiAgICAgIG46PW9wKDIsbSk7
ICANCiAgICAgIGs6PTA7DQogICAgICBmb3IgaSBmcm9tIDAgdG8gbiBkbyAN
CiAgICAgICAgIGo6PW1pbihpLG4taSk7DQogICAgICAgICBpZiBqPTAgdGhl
biBrOj1rKzEgZWxzZSBrOj1rK3FeKGotMSkqKHEtMSkgZmk7DQogICAgICBv
ZDsNCiAgICAgIE04Oj1NOCprOw0KICAgb2Q7DQplbmQ6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQojICANCiMg
IGdldF9yZXByZXNlbnRhdGl2ZXMgb2YgR2FtbWEgcmVzcGVjdCB0byBHYW1t
YTANCiMgIG5lZWQgZ2xvYmFsIHZhcmlhYmxlcyBOMA0KIyAgb3V0cHV0OiAo
Z2xvYmFsKSBBVGFiDQojDQpnZXRfcmVwcmVzZW50YXRpdmVzOj0gcHJvYygp
IGxvY2FsIGksaixrLGwsbSxuLGEsYixjLGQsZSxwLGlpOyAgDQoJZ2xvYmFs
IE4wLEIsQVRhYix2MSx0MixNYXhtLHYsTixNMCxNMSxNMixNMyxNOCxCTWF0
LHgseSx6LG5lYmVudHlwZTsNCiAgICBBVGFiOj1hcnJheSgxLi5NMCk7ICAN
CiAgICBpZiBOMD0xIHRoZW4gQVRhYlsxXTo9YXJyYXkoW1sxLDBdLFswLDFd
XSk7IFJFVFVSTigpIGZpOyANCiAgICBjOj1hcnJheSgxLi5OMCk7DQogICAg
ZDo9ZGl2aXNvcnMoTjApOw0KICAgIG46PW5vcHMoZCk7ICAgICAgICAgICAg
ICAgICAgICAgDQoNCiAgICBmb3IgaSBmcm9tIDEgdG8gTjAgZG8gQVRhYltp
XTo9YXJyYXkoW1swLC0xXSxbMSxpLTFdXSkgb2Q7IA0KICAgIEFUYWJbTjAr
MV06PWFycmF5KFtbMSwwXSxbMCwxXV0pOw0KICAgIG06PU4wKzI7ICAgICAg
ICAgIA0KDQogICAgZm9yIGkgZnJvbSAyIHRvIG4tMSBkbw0KICAgICAgIGZv
ciBqIHRvIE4wLTEgZG8gY1tqXTo9MSBvZDsNCiAgICAgICBwOj1vcChpLGQp
Ow0KICAgICAgIGw6PWlxdW8oTjAscCk7DQogICAgICAgZm9yIGogdG8gTjAt
MSBkbyAgICAgIA0KICAgICAgICAgIGlmIGNbal09MSB0aGVuIA0KICAgICAg
ICAgICAgIGU6PWlnY2RleChqLHAsJ2EnLCdiJyk7DQogICAgICAgICAgICAg
aWYgZT0xIHRoZW4NCiAgICAgICAgICAgICAgICBBVGFiW21dOj1hcnJheShb
W2EsLWJdLFtwLGpdXSk7DQogICAgICAgICAgICAgICAgbTo9bSsxOw0KICAg
ICAgICAgICAgICAgIGs6PWorbDsNCiAgICAgICAgICAgICAgICB3aGlsZSAg
azxOMCBkbyBjW2tdOj0wOyBrOj1rK2w7IG9kOw0KICAgICAgICAgICAgIGZp
Ow0KICAgICAgICAgIGZpOyAgDQogICAgICAgb2Q7DQogICAgb2Q7ICAgICAg
ICAgICAgICAgDQogICAgaWYgbT5NMCsxIHRoZW4gDQogICAgICAgcHJpbnQo
bSxNMCk7DQogICAgICAgRVJST1IoYGVycm9yIGluIGdldF9yZXByZXNlbnRh
dGl2ZXMhYCkgDQogICAgZmk7DQplbmQ6DQoNCiMNCiMgIHBlcm11dGF0aW9u
IGF1Kmc9aCphdiwgaCBpbiBHYW1tYTAsIG91dHB1dDogdiAgDQojICBuZWVk
IEFUYWIuDQojDQpwZXJtdXRhYjo9IHByb2MoYXUsZyxoKSBsb2NhbCB1MSx1
Mix4MSx5MSxjLGQsbSxhLGI7ICANCglnbG9iYWwgTjAsQixBVGFiLHYxLHQy
LE1heG0sdixOLE0wLE0xLE0yLE0zLE04LEJNYXQseCx5LHosbmViZW50eXBl
Ow0KICAgaWYgTjA9MSB0aGVuDQogICAgICBoOj1ldmFsKGcpOw0KICAgICAg
UkVUVVJOKDEpOw0KICAgZmk7DQogICBkOj1hdVsyLDFdKmdbMSwyXSthdVsy
LDJdKmdbMiwyXTsNCiAgIG06PWF1WzIsMV0qZ1sxLDFdK2F1WzIsMl0qZ1sy
LDFdOw0KICAgYzo9aWdjZGV4KG0sTjAsJ3gxJywneTEnKTsNCiAgIHUyOj1p
Z2NkKGQsYyk7ICANCiAgIGlmIHUyIDw+IDEgdGhlbiBSRVRVUk4oLTEpIGZp
Ow0KICAgdTI6PWMgbW9kIE4wOw0KICAgaWYgdTI9MCB0aGVuIA0KICAgICAg
aDo9bXVsdGlwbHkoYXUsZyk7DQogICAgICBSRVRVUk4oTjArMSk7DQogICBm
aTsNCg0KICAgbTo9aXF1byhOMCxjKTsNCiAgIGQ6PShkKngxKSBtb2QgbTsg
ICAgICAgICAgIA0KICAgdTE6PTE7IHUyOj0tMTsNCiAgIHdoaWxlIHUyPDAg
YW5kIHUxPD1NMCBkbyAgICAgICANCiAgICAgIGlmIEFUYWJbdTFdWzIsMV09
YyBhbmQgKEFUYWJbdTFdWzIsMl0tZCkgbW9kIG09MCB0aGVuDQogICAgICAg
ICBkOj1BVGFiW3UxXVsyLDJdOyB1Mjo9dTE7DQogICAgICBmaTsNCiAgICAg
IHUxOj11MSsxOw0KICAgb2Q7DQoNCiAgIGlmIHUyPjAgdGhlbg0KICAgICAg
YTo9aW52ZXJzZShBVGFiW3UyXSk7DQogICAgICBiOj1tdWx0aXBseShhdSxn
KTsNCiAgICAgIGg6PW11bHRpcGx5KGIsYSk7IA0KICAgZmk7DQogICBSRVRV
Uk4odTIpOw0KZW5kOiAgICANCg0KIw0KIyAtLS0tLS0tIGNvbXB1dGUgdGhl
IGRpbWVuc2lvbnMgb2YgSF4xKGdmKSgrKSAgDQpnZXRfZGltMDo9cHJvYygp
DQogICBsb2NhbCBpLGosayxESU0wLERJTTBQLERJTTBNLGMsYVRhYixiVGFi
LGNUYWIsZzEsZzIsaDsNCglnbG9iYWwgTjAsQixBVGFiLHYxLHQyLE1heG0s
dixiLE4sTTAsTTEsTTIsTTMsTTgsQk1hdCx4LHkseixuZWJlbnR5cGU7DQog
ICBhVGFiOj1hcnJheSgxLi5NMCk7DQogICBiVGFiOj1hcnJheSgxLi5NMCk7
DQogICBjVGFiOj1hcnJheSgxLi5NMCk7DQogICBmb3IgaSB0byBNMCBkbyBj
VGFiW2ldOj0wIG9kOw0KICAgRElNMDo9MDsgRElNME06PTA7RElNMFA6PTA7
ICAgICAgICAgICAgIA0KICAgZzE6PWFycmF5KFtbMSwxXSxbMCwxXV0pOw0K
ICAgZzI6PWFycmF5KFtbLTEsMF0sWzAsMV1dKTsNCiAgIGZvciBpIHRvIE0w
IGRvDQogICAgICBhVGFiW2ldOj1wZXJtdXRhYihBVGFiW2ldLGcxLGgpOw0K
ICAgICAgYlRhYltpXTo9cGVybXV0YWIoQVRhYltpXSxnMixoKTsNCiAgIG9k
Ow0KDQogICBmb3IgaSB0byBNMCBkbw0KICAgICAgaWYgY1RhYltpXT0wIHRo
ZW4NCiAgICAgICAgIERJTTA6PURJTTArMTsNCiAgICAgICAgIGNUYWJbaV06
PURJTTA7DQogICAgICAgICBqOj1hVGFiW2ldOyANCiAgICAgICAgIHdoaWxl
IGNUYWJbal09MCBkbw0KICAgICAgICAgICAgY1RhYltqXTo9RElNMDsNCiAg
ICAgICAgICAgIGo6PWFUYWJbal07DQogICAgICAgICBvZDsNCiAgICAgIGZp
Ow0KICAgb2Q7DQoNCiAgICBrOj0xOyAgICAgDQogICAgd2hpbGUgazw9RElN
MCBkbw0KICAgICAgIGZvciBpIHRvIE0wIGRvDQogICAgICAgICAgaWYgY1Rh
YltpXT1rIHRoZW4NCiAgICAgICAgICAgICBpZiBjVGFiW2JUYWJbaV1dID0g
ayB0aGVuDQogICAgICAgICAgICAgICAgYzo9QVRhYltpXVsyLDFdOw0KICAg
ICAgICAgICAgICAgIGlmIGM9MCB0aGVuIERJTTBNOj1ESU0wTSsxIGVsc2Ug
IA0KDQogICAgICAgICAgICAgICAgICAgaWYgbmViZW50eXBlPTEgdGhlbiBq
Oj0tMSBmaTsNCiAgICAgICAgICAgICAgICAgICBpZiBuZWJlbnR5cGU9MiB0
aGVuIGo6PS1qYWNvYmkoLTEsTjAvYykgZmk7DQoNCiAgICAgICAgICAgICAg
ICAgICBpZiBqPTEgdGhlbiBESU0wUDo9RElNMFArMSBmaTsNCiAgICAgICAg
ICAgICAgICAgICBpZiBqPS0xIHRoZW4gRElNME06PURJTTBNKzEgZmk7DQog
ICAgICAgICAgICAgICAgZmk7DQogICAgICAgICAgICAgZmk7DQogICAgICAg
ICAgICAgazo9aysxOw0KICAgICAgICAgICAgIGk6PU0wKzE7DQogICAgICAg
ICAgZmk7DQogICAgICAgb2Q7DQogICAgb2Q7ICAgICAgICAgICAgICAgICAN
Cg0KICAgazo9aXF1byhESU0wLURJTTBQLURJTTBNLDIpOw0KICAgRElNME06
PURJTTBNK2s7DQogICBESU0wUDo9RElNMFArazsNCiAgIFJFVFVSTihESU0w
UCk7DQplbmQ6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQojDQojICAtLS0t
LS0tLS0tLS0tLS0tLSByZWxhdGlvbiB0aGUgb3BlcmF0aW9ucyBvZiBTLFEs
RSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gDQojICBvdXRwdXQ6IChnbG9iYWwp
IEJNYXQgYW5kIHJhbmsoQk1hdCkNCiMNCnJlbGF0aW9uX3NxZTo9cHJvYygp
DQogICBsb2NhbCBpLGosayxhLGIsdSx2LGwsbTEsbSxuLGcsaCxnMSxoMSxj
LGQsYzAsYzEsRElNOw0KCWdsb2JhbCBOMCxCLEFUYWIsdjEsdDIsTWF4bSxO
LE0wLE0xLE0yLE0zLE04LEJNYXQseCx5LHosbmViZW50eXBlOw0KICAgaWYg
TjA9MSB0aGVuIG0xOj0zKihOKzEpIGVsc2UgbTE6PTIqTTEgZmk7DQogICBh
Oj1hcnJheSgxLi5tMSwxLi5NMSk7DQogICBmb3IgaSB0byBtMSBkbyBmb3Ig
aiB0byBNMSBkbyBhW2ksal06PTAgb2Q7IG9kOw0KICAgdTo9MDsNCiAgIGZv
ciBpIGZyb20gMCB0byBOIGRvIHU6PXUreF5pKnleKE4taSkqel5pIG9kOw0K
ICAgDQogICBtOj0xOw0KIyAgLS0tLS0tLS0tLSBpK1NUYWJbaV0uaiA9IDAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIGc6PWFycmF5KFtbMCwtMV0sWzEs
MF1dKTsNCiAgIHY6PWdvcChnLHUpOw0KICAgZm9yIGkgdG8gTTAgZG8NCiAg
ICAgIGo6PXBlcm11dGFiKEFUYWJbaV0sZywnaCcpOyAgICAgICAgICAgIA0K
ICAgICAgaWYgaTw9aiB0aGVuDQogICAgICAgICBjMDo9Y2hpKGhbMiwyXSk7
DQogICAgICAgICBmb3IgbiBmcm9tIDAgdG8gTiBkbyANCiAgICAgICAgICAg
IGFbbStuLGkqKE4rMSktTituXTo9YVttK24saSooTisxKS1OK25dKzE7DQog
ICAgICAgICAgICBjOj1jb2VmZih2LHosbik7DQogICAgICAgICAgICBmb3Ig
bCBmcm9tIDAgdG8gTiBkbyAgIA0KICAgICAgICAgICAgICAgZDo9Y29lZmYo
Yyx4LGwpOyANCiAgICAgICAgICAgICAgIGFbbStuLGoqKE4rMSktTitsXTo9
YVttK24saiooTisxKS1OK2xdK2MwKnN1YnMoeT0xLGQpOyANCiAgICAgICAg
ICAgIG9kOw0KICAgICAgICAgb2Q7DQogICAgICAgICBtOj1tKyhOKzEpOw0K
ICAgICAgZmk7DQogICBvZDsNCg0KIyAgLS0tLS0tLS0gaStRVGFiW2ldLmor
UVRhYltpXVFUYWJbal0uaz0wICANCiAgIGc6PWFycmF5KFtbMCwtMV0sWzEs
MV1dKTsNCiAgIGcxOj1hcnJheShbWy0xLC0xXSxbMSwwXV0pOw0KICAgdjo9
Z29wKGcsdSk7DQogICB2MTo9Z29wKGcxLHUpOw0KICAgZm9yIGkgdG8gTTAg
ZG8NCiAgICAgIGo6PXBlcm11dGFiKEFUYWJbaV0sZywnaCcpOw0KICAgICAg
azo9cGVybXV0YWIoQVRhYltpXSxnMSwnaDEnKTsNCiAgICAgIGlmIGk8PWog
YW5kIGk8PWsgdGhlbg0KICAgICAgICAgYzA6PWNoaShoWzIsMl0pOw0KICAg
ICAgICAgYzE6PWNoaShoMVsyLDJdKTsNCiAgICAgICAgIGZvciBuIGZyb20g
MCB0byBOIGRvIA0KICAgICAgICAgICAgYVttK24saSooTisxKS1OK25dOj1h
W20rbixpKihOKzEpLU4rbl0rMTsNCiAgICAgICAgICAgIGM6PWNvZWZmKHYs
eixuKTsgICAgICAgICAgICAgICANCiAgICAgICAgICAgIGZvciBsIGZyb20g
MCB0byBOIGRvICAgDQogICAgICAgICAgICAgICBkOj1jb2VmZihjLHgsbCk7
IA0KICAgICAgICAgICAgICAgYVttK24saiooTisxKS1OK2xdOj1hW20rbixq
KihOKzEpLU4rbF0rYzAqc3Vicyh5PTEsZCk7DQogICAgICAgICAgICBvZDsN
CiAgICAgICAgICAgIGM6PWNvZWZmKHYxLHosbik7ICAgICAgICAgICAgICAg
DQogICAgICAgICAgICBmb3IgbCBmcm9tIDAgdG8gTiBkbyAgIA0KICAgICAg
ICAgICAgICAgZDo9Y29lZmYoYyx4LGwpOyANCiAgICAgICAgICAgICAgYVtt
K24sayooTisxKS1OK2xdOj1hW20rbixrKihOKzEpLU4rbF0rYzEqc3Vicyh5
PTEsZCk7DQogICAgICAgICAgICBvZDsNCiAgICAgICAgIG9kOw0KICAgICAg
ICAgbTo9bSsoTisxKTsNCiAgICAgIGZpOw0KICAgb2Q7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiMgIC0t
LS0tLS0tLS0tICBpK0VUYWJbaV0uaj0wIGZvciBIKCspIA0KICAgZzo9YXJy
YXkoW1stMSwwXSxbMCwxXV0pOw0KICAgdjo9Z29wKGcsdSk7DQogICBmb3Ig
aSB0byBNMCBkbw0KICAgICAgajo9cGVybXV0YWIoQVRhYltpXSxnLCdoJyk7
ICAgICAgICAgICAgDQogICAgICBpZiBpPD1qIHRoZW4NCiAgICAgICAgIGMw
Oj1jaGkoaFsyLDJdKTsNCiAgICAgICAgIGZvciBuIGZyb20gMCB0byBOIGRv
IA0KICAgICAgICAgICAgYVttK24saSooTisxKS1OK25dOj1hW20rbixpKihO
KzEpLU4rbl0rMTsNCiAgICAgICAgICAgIGM6PWNvZWZmKHYseixuKTsgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgIGZvciBsIGZyb20gMCB0byBOIGRv
ICAgDQogICAgICAgICAgICAgICBkOj1jb2VmZihjLHgsbCk7IA0KICAgICAg
ICAgICAgICAgYVttK24saiooTisxKS1OK2xdOj1hW20rbixqKihOKzEpLU4r
bF0rYzAqc3Vicyh5PTEsZCk7IA0KICAgICAgICAgICAgb2Q7DQogICAgICAg
ICBvZDsNCiAgICAgICAgIG06PW0rKE4rMSk7DQogICAgICBmaTsNCiAgIG9k
Ow0KDQojIC0tLS0tLS0tLS0tLS0tLSBhKkJNYXQ9MCANCiAgIGE6PWRlbHJv
d3MoYSxtLi5tMSk7DQogICBiOj1rZXJuZWwoYSwnRElNJyk7IA0KICAgaWYg
RElNPjAgdGhlbiANCiAgICAgIEJNYXQ6PWFycmF5KDEuLkRJTSwxLi5NMCoo
TisxKSk7IA0KICAgICAgZm9yIGkgdG8gRElNIGRvDQogICAgICAgICBjOj1v
cChpLGIpOw0KICAgICAgICAgZm9yIGogdG8gTTAqKE4rMSkgZG8gQk1hdFtp
LGpdOj1jW2pdIG9kOw0KICAgICAgb2Q7DQojICAgcHJpbnQoYEJNYXQ9YCxC
TWF0KTsgICANCiAgIGZpOw0KICAgUkVUVVJOKERJTSk7DQplbmQ6DQoNCiMg
IC0tLS0tLS0tLS0tLS0tLS0tIG9wZXJhdGlvbiBvZiBUbSAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyAgICAgICBpbnB1dCAgOiB4PXYq
QVRhYltsXSwgdiBwb2x5bm9taWFsLCBBVGFiW2xdIE1hbmluLXN5bWJvbCwN
CiMgICAgICAgb3V0cHV0IDogVG0oeCksIGEgdmVjdG9yIHJlc3AuIHRvIFdf
KG4sY2hpKQ0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClRtX3ZlY3Rvcjo9
cHJvYyhtLGwsdikgDQogICBsb2NhbCAgZyxoLGgxLGgyLEQsYSxiLGMsZCxu
LGksayxyLHMsejsgICANCglnbG9iYWwgTjAsQixBVGFiLHYxLHQyLE1heG0s
TixNMCxNMSxNMixNMyxNOCxCTWF0LHgseSxuZWJlbnR5cGU7DQogICBhOj0w
OyAgICAgICAgICAgDQogICBoOj1hcnJheSgxLi4yLDEuLjIpOyANCiAgIEQ6
PWRpdmlzb3JzKG0pOw0KICAgZm9yIGQgdG8gbSBkbyANCiAgIGlmIG0gbW9k
IGQgPTAgdGhlbiAgICAgICAgICANCiAgICAgIG46PWlxdW8obSxkKTsgIA0K
ICAgICAgazo9aXF1byhkLTEsMik7ICAgDQogICAgICBmb3IgciBmcm9tIDAg
dG8gZC0xIGRvDQogICAgICAgICBnOj1hcnJheShbW2Qsci1rXSxbMCxuXV0p
OyAgICANCiAgICAgICAgIGk6PXBlcm11dGFiKEFUYWJbbF0sZywnaDEnKTsg
ICANCiAgICAgICAgIGlmIGk+MCB0aGVuIGE6PWErY2hpKGgxWzIsMl0pKmdv
cChnLHYpKnpeaSBmaTsgIA0KICAgICAgICAgd2hpbGUgZ1sxLDJdPD4wIGRv
IA0KICAgICAgICAgICAgYjo9c2lnbihnWzEsMl0pOw0KICAgICAgICAgICAg
Yzo9aXF1byhnWzEsMV0sZ1sxLDJdKTsNCiAgICAgICAgICAgIGgyOj1hcnJh
eShbWzAsLWJdLFtiLGIqY11dKTsNCiAgICAgICAgICAgIGg6PW11bHRpcGx5
KGcsaDIpOw0KICAgICAgICAgICAgZzo9ZXZhbChoKTsNCiAgICAgICAgICAg
IGk6PXBlcm11dGFiKEFUYWJbbF0sZywnaDEnKTsgDQogICAgICAgICAgICBp
ZiBpPjAgdGhlbiBhOj1hK2NoaShoMVsyLDJdKSpnb3AoZyx2KSp6XmkgZmk7
DQogICAgICAgICBvZDsNCiAgICAgIG9kOw0KICAgZmk7DQogICBvZDsgIA0K
ICAgczo9YXJyYXkoMS4uTTAqKE4rMSkpOw0KICAgZm9yIGkgdG8gTTAgZG8N
CiAgICAgIGI6PWNvZWZmKGEseixpKTsNCiAgICAgIGZvciBrIGZyb20gMCB0
byBOIGRvICANCiAgICAgICAgIGM6PWNvZWZmKGIseCxrKTsNCiAgICAgICAg
IHNbaSooTisxKS1OK2tdOj1zdWJzKHk9MSxjKTsNCiAgICAgIG9kOw0KICAg
b2Q7ICAgICAgICANCiAgIFJFVFVSTihzKTsNCmVuZDoNCg0KIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCiMgICAgICAgY29tcHV0ZSBhIGJhc2lzIG9mIFNfayhOMCxjaGkp
DQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0Kc2tfYmFzaXM6PXByb2MoSyxuMCxraykNCiAg
IGxvY2FsIGksaixrLGwsbSxuLG1heG0sYSxiLEEsRElNLERJTV9TLHQxOw0K
CWdsb2JhbCBOMCxCLEFUYWIsdjEsdDIsTWF4bSx2LE4sTTAsTTEsTTIsTTMs
TTgsQk1hdCx4LHkseixuZWJlbnR5cGU7DQogICB0MTo9dGltZSgpOw0KICAg
TjA6PW4wOw0KICAgTjo9Sy0yOw0KICAgbTo9Y2hpKC0xKTsNCiAgIGlmIG0g
PD4gKC0xKV5OIHRoZW4gDQogICAgICBwcmludChgQXR0ZW50aW9uOiBjaGko
LTEpPD4oLTEpXmsgISEhYCxLLE4wKTsNCiAgICAgIFJFVFVSTigpOw0KICAg
Zmk7DQoNCiAgIGdldF9jb25zdGFudHMoKTsgICANCiAgIGdldF9yZXByZXNl
bnRhdGl2ZXMoKTsgIA0KICAgRElNOj1yZWxhdGlvbl9zcWUoKTsgICANCiAg
IERJTV9TOj1ESU0tZ2V0X2RpbTAoKTsgICAgICAgICAgICANCiAgIGlmIERJ
TV9TPTAgdGhlbiANCiMgICAgICBwcmludChgQXR0ZW50aW9uOiBkaW0oU2sp
PTAgISEhICAgTjA9YCxOMCk7DQogICAgICB0Mjo9dGltZSgpLXQxOw0KIyAg
ICAgIHByaW50KGB0aW1lPWAsdDIpOw0KICAgICAgUkVUVVJOKCk7DQogICBm
aTsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgYTo9YXJyYXkoW1tg
IGtgLGAgTmAsYCBNMGAsYCBNMmAsYCBNM2AsYCBNOGAsYCBESU1fU2BdLA0K
ICAgICAgICAgICAgIFtOKzIsTjAsTTAsTTIsTTMsTTgsRElNX1NdXSk7DQog
ICBwcmludChhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIA0KICAgbWF4bTo9RElNX1Mra2s7DQogICBpZiBjb21w
dXRlaGVja2U9MCB0aGVuIE1heG06PW1heG0gZWxzZSBNYXhtOj1tYXhtKm1h
eG07IGZpOw0KICAgQTo9YXJyYXkoMS4uRElNLDEuLk1heG0pOw0KIyAgY2hv
b3NlIGEgdmVjdG9yIHYgYW5kIGEgY29tcG9uZW50IGssIHg9dipBVGFiW2td
Lg0KICAgbjo9MDsNCiAgIGZvciBsIGZyb20gMCB0byBOIGRvDQogICAgICB2
Oj14XmwqeV4oTi1sKTsNCiAgICAgIGlmIGw9MCBhbmQgTj4wIHRoZW4gdjo9
dit4Xk4gZmk7DQogICAgICBmb3IgayBmcm9tIDMgdG8gTTAgZG8NCiAgICAg
ICAgIGlmIERJTV9TPURJTSBvciBsPjAgYW5kIGw8TiBvciBjaGkoQVRhYltr
XVsyLDFdKT1jaGkoQVRhYltrXVsyLDJdKSBhbmQNCiAgICAgICAgICAgIGln
Y2QoQVRhYltrXVsyLDFdLE4wKT0xIGFuZCBpZ2NkKEFUYWJba11bMiwyXSxO
MCk9MSB0aGVuDQogICAgICAgICAgICBmb3IgbSB0byBNYXhtIGRvDQogICAg
ICAgICAgICAgICBhOj1UbV92ZWN0b3IobSxrLHYpOw0KICAgICAgICAgICAg
ICAgZm9yIGkgdG8gRElNIGRvIA0KICAgICAgICAgICAgICAgICAgYjo9MDsN
CiAgICAgICAgICAgICAgICAgIGZvciBqIHRvIE0wKihOKzEpIGRvIGI6PWIr
Qk1hdFtpLGpdKmFbal0gb2Q7DQogICAgICAgICAgICAgICAgICBBW2ksbV06
PWI7DQogICAgICAgICAgICAgICBvZDsNCiAgICAgICAgICAgIG9kOw0KICAg
ICAgICAgICAgaWYgbj0wIHRoZW4gQjo9Z2F1c3Nqb3JkKEEsJ24nKSBlbHNl
DQogICAgICAgICAgICAgICBCOj1zdGFjayhCLEEpOw0KICAgICAgICAgICAg
ICAgQjo9Z2F1c3Nqb3JkKEIsJ24nKTsNCiAgICAgICAgICAgIGZpOyAgIA0K
ICAgICAgICAgICAgbTo9cm93ZGltKEIpOyAgICAgICAgICAgICAgDQogICAg
ICAgICAgICBpZiBuPjAgYW5kIG48bSB0aGVuIEI6PWRlbHJvd3MoQiwobisx
KS4ubSkgZmk7DQojICAgICAgICAgICAgbHByaW50KGBmb3IgKGAsdixgKXgo
YCxBVGFiW2srMV1bMiwxXSxBVGFiW2srMV1bMiwyXSxgKSwgIHJhbms9YCxu
KTsNCiAgICAgICAgICAgIGlmIG49RElNX1MgdGhlbiAgIA0KICAgICAgICAg
ICAgICAgcHJpbnQoYCBmb3VyaWVyIGNvZWZmaWNpZW50czpgKTsgICAgDQog
ICAgICAgICAgICAgICBwcmludChCKTogDQogICAgICAgICAgICAgICB0Mjo9
dGltZSgpLXQxOw0KICAgICAgICAgICAgICAgbHByaW50KGB0aW1lPWAsdDIp
Ow0KICAgICAgICAgICAgICAgUkVUVVJOKCk7DQogICAgICAgICAgICBmaTsN
CiAgICAgICAgIGZpOw0KICAgICAgb2Q7ICAgIA0KICAgb2Q7DQplbmQ6DQoN
Cg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCiMgICAgIGNvbXB1dGUgdGhlIGhlY2tlIG9w
ZXJhdG9yIFRwIG9uIFNfayhHYW1tYTAoTjApLGNoaSkNCiMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQpUcDo9cHJvYyhwKSBsb2NhbCBrMSxpLGosayxBLGYsbTsNCiAgIGds
b2JhbCBOMCxCLEFUYWIsdjEsdDIsTWF4bSx2LGIsTixNMCxNMSxNMixNMyxN
OCxCTWF0LHgseSx6LG5lYmVudHlwZTsNCiAgIG06PXJvd2RpbShCKTsNCiAg
IEE6PWFycmF5KDEuLm0sMS4ubSk7DQogICBqOj0wOyAgICAgICAgIA0KICAg
azo9MDsNCiAgIHdoaWxlIGs8bSBkbyAgIA0KICAgICAgajo9aisxOw0KICAg
ICAgazo9aysxOw0KICAgICAgd2hpbGUgQltrLGpdPTAgZG8gajo9aisxIG9k
Ow0KICAgICAgaWYgTjAgbW9kIHAgPD4wIGFuZCBqIG1vZCBwPTAgdGhlbg0K
ICAgICAgICAgZm9yIGkgdG8gbSBkbyBBW2ksa106PUJbaSxwKmpdK2NoaShw
KSpwXihOKzEpKkJbaSxqL3BdIG9kDQogICAgICBlbHNlICAgIA0KICAgICAg
ICAgZm9yIGkgdG8gbSBkbyBBW2ksa106PUJbaSxwKmpdIG9kDQogICAgICBm
aTsNCiAgIG9kOyAgICAgICAgICAgICAgICAgICAgICANCiAgIHByaW50KEEp
OyAgICANCiAgIGY6PWNoYXJwb2x5KEEseCk7ICAgICAgIA0KICAgcHJpbnQo
YHA9YCxwKTsNCiAgIHByaW50KGBjaGFycG9seShUcCk9YCxmKTsNCiAgIFJF
VFVSTigpOw0KZW5kOg0KIA0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgICAgIGNvbXB1
dGUgdGhlIGhlY2tlIG9wZXJhdG9ycyBUcCBvbiBTX2soR2FtbWEwKE4wKSxj
aGkpDQojICAgICBwID0gMiwzLDUsNywxMSwuLi4sIHA8RElNX1MNCiMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQpoZWNrZTo9cHJvYygpIGxvY2FsIGkscCxtOw0KCWdsb2Jh
bCBOMCxCLEFUYWIsdjEsdDIsTWF4bSx2LGIsTixNMCxNMSxNMixNMyxNOCxC
TWF0LHgseSx6LG5lYmVudHlwZTsNCiAgIG06PWNvbGRpbShCTWF0KTsNCiAg
IGk6PTE7DQogICBwOj1pdGhwcmltZShpKTsNCiAgIHdoaWxlIHAqcDw9bSBk
byAgDQogICAgICBUcChwKTsNCiAgICAgIGk6PWkrMTsNCiAgICAgIHA6PWl0
aHByaW1lKGkpOw0KICAgb2Q7ICAgICAgICAgICAgICAgDQogICBSRVRVUk4o
KTsNCmVuZDoNCiAgIA0KDQoNCg0KDQoNCg==
---2063821295-984380117-980854639=:44792--

