[1629] in Coldmud discussion meeting

root meeting help first previous next last

Patch for double precision floating points in ColdCore...

daemon@ATHENA.MIT.EDU (Sun Oct 29 15:35:15 2000 )

Date: Sun, 29 Oct 2000 22:22:03 +0100 (CET)
From: Simkin <simkin@gbs.be>
To: coldstuff@cold.org
Message-ID: <Pine.LNX.4.21.0010292215220.2503-200000@eleonora>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1284125757-972854523=:2503"
Reply-To: coldstuff@cold.org

  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.

--8323328-1284125757-972854523=:2503
Content-Type: TEXT/PLAIN; charset=US-ASCII

Ok, just to get this to people possibly interested...
Brian was kind enough to forward a patch to enable double presision
floating points in Genesis...

Naturelly this isn't of much use in it's current form as it's against
Genesis-1.1p5-STABLE but some of the powers that be have expressed
interest in possibly incorporating it into a more current genesis so...

Anywho, I can't make hassle or tails of it all, but for those interested,
here it is ;)

  -- Simmie.

--8323328-1284125757-972854523=:2503
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="floatpatch.p5"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.21.0010292222030.2503@eleonora>
Content-Description: 
Content-Disposition: attachment; filename="floatpatch.p5"

ZGlmZiAtcmMgR2VuZXNpcy0xLjFwNS1TVEFCTEUub2xkL3NyYy9jb2RlZ2Vu
LmMgR2VuZXNpcy0xLjFwNS1TVEFCTEUvc3JjL2NvZGVnZW4uYw0KKioqIEdl
bmVzaXMtMS4xcDUtU1RBQkxFLm9sZC9zcmMvY29kZWdlbi5jCVR1ZSBKdWwg
MjEgMjM6MTY6MDIgMTk5OA0KLS0tIEdlbmVzaXMtMS4xcDUtU1RBQkxFL3Ny
Yy9jb2RlZ2VuLmMJV2VkIERlYyAyMyAxNjoxMjozMCAxOTk4DQoqKioqKioq
KioqKioqKioNCioqKiA0MSw0NiAqKioqDQotLS0gNDEsNDkgLS0tLQ0KICBz
dGF0aWMgdm9pZCBjaGVja19pbnN0cl9idWYoSW50IHBvcyk7DQogIHN0YXRp
YyB2b2lkIGNvZGUoTG9uZyB2YWwpOw0KICBzdGF0aWMgdm9pZCBjb2RlX3N0
cihjaGFyICpzdHIpOw0KKyAjaWZkZWYgVVNFX0JJR19GTE9BVFMNCisgc3Rh
dGljIHZvaWQgY29kZV9mbG9hdChGbG9hdCBmbnVtKTsNCisgI2VuZGlmDQog
IHN0YXRpYyB2b2lkIGNvZGVfZXJyb3JzKElkX2xpc3QgKmVycm9ycyk7DQog
IHN0YXRpYyBJbnQgbmV3X2p1bXBfZGVzdCh2b2lkKTsNCiAgc3RhdGljIHZv
aWQgc2V0X2p1bXBfZGVzdF9oZXJlKEludCBkZXN0KTsNCioqKioqKioqKioq
KioqKg0KKioqIDEyMjUsMTIzMSAqKioqDQotLS0gMTIyOCwxMjM4IC0tLS0N
CiAgICAgICAgY2FzZSBGTE9BVDoNCiAgDQogICAgICAgICAgY29kZShGTE9B
VCk7DQorICNpZmRlZiBVU0VfQklHX0ZMT0FUUw0KKyAgICAgICAgIGNvZGVf
ZmxvYXQoZXhwci0+dS5mbnVtKTsNCisgI2Vsc2UNCiAgICAJY29kZSgqKChM
b25nKikoJmV4cHItPnUuZm51bSkpKTsNCisgI2VuZGlmDQogIA0KICAgIAli
cmVhazsNCiAgCQ0KKioqKioqKioqKioqKioqDQoqKiogMTc0OSwxNzU0ICoq
KioNCi0tLSAxNzU2LDE3NjkgLS0tLQ0KICAgICAgaW5zdHJfYnVmW2luc3Ry
X2xvYysrXS5zdHIgPSBzdHI7DQogIH0NCiAgDQorICNpZmRlZiBVU0VfQklH
X0ZMT0FUUw0KKyBzdGF0aWMgdm9pZCBjb2RlX2Zsb2F0KEZsb2F0IGZudW0p
DQorIHsNCisgICAgIGNoZWNrX2luc3RyX2J1ZihpbnN0cl9sb2MpOw0KKyAg
ICAgaW5zdHJfYnVmW2luc3RyX2xvYysrXS5mbnVtID0gZm51bTsNCisgfQ0K
KyAjZW5kaWYNCisgDQogIC8qIFJlcXVpcmVzOiBlcnJvcnMgc2hvdWxkIGJl
IGdvb2QgdW50aWwgdGhlIG5leHQgcGZyZWUoKSBvZiBjb21waWxlcl9waWxl
LCBhdA0KICAgKgkgICAgIGxlYXN0LiAgUHV0dGluZyBpdCBpbiB0aGUgaW5z
dHJ1Y3Rpb24gYnVmZmVyIGRvZXNuJ3QgY2F1c2UgaXQgdG8NCiAgICoJICAg
ICBiZSBmcmVlZC4NCioqKioqKioqKioqKioqKg0KKioqIDE4NjUsMTg3MCAq
KioqDQotLS0gMTg4MCwxODkyIC0tLS0NCiAgCQkgICAgbWV0aG9kLT5vcGNv
ZGVzW2ldID0gb2JqZWN0X2FkZF9zdHJpbmcob2JqZWN0LCBzdHJpbmcpOw0K
ICAJCSAgICBzdHJpbmdfZGlzY2FyZChzdHJpbmcpOw0KICAJCSAgICBicmVh
azsNCisgDQorICNpZmRlZiBVU0VfQklHX0ZMT0FUUwkJICAgIA0KKyAgICAg
ICAgICAgICAgICAgICBjYXNlIEZMT0FUOg0KKyAgICAgICAgICAgICAgICAg
ICAgIG1ldGhvZC0+b3Bjb2Rlc1tpXSA9IG9iamVjdF9hZGRfZmxvYXQob2Jq
ZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnN0cl9idWZbaV0uZm51bSk7DQorICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICNlbmRpZg0KICANCiAgCQkg
IGNhc2UgSURFTlQ6DQogIAkJICAgIG1ldGhvZC0+b3Bjb2Rlc1tpXSA9IG9i
amVjdF9hZGRfaWRlbnQob2JqZWN0LA0KT25seSBpbiBHZW5lc2lzLTEuMXA1
LVNUQUJMRS9zcmM6IGNvZGVnZW4uYy5vcmlnDQpkaWZmIC1yYyBHZW5lc2lz
LTEuMXA1LVNUQUJMRS5vbGQvc3JjL2RhdGEvb2JqZWN0LmMgR2VuZXNpcy0x
LjFwNS1TVEFCTEUvc3JjL2RhdGEvb2JqZWN0LmMNCioqKiBHZW5lc2lzLTEu
MXA1LVNUQUJMRS5vbGQvc3JjL2RhdGEvb2JqZWN0LmMJVHVlIEp1bCAyMSAy
Mzo1OTozNCAxOTk4DQotLS0gR2VuZXNpcy0xLjFwNS1TVEFCTEUvc3JjL2Rh
dGEvb2JqZWN0LmMJV2VkIERlYyAyMyAxNjoxMjozMCAxOTk4DQoqKioqKioq
KioqKioqKioNCioqKiA2Nyw3MiAqKioqDQotLS0gNjcsNzkgLS0tLQ0KICAg
ICAgY25ldy0+aWRlbnRzID0gRU1BTExPQyhJZGVudF9lbnRyeSwgSURFTlRT
X1NUQVJUSU5HX1NJWkUpOw0KICAgICAgY25ldy0+aWRlbnRzX3NpemUgPSBJ
REVOVFNfU1RBUlRJTkdfU0laRTsNCiAgICAgIGNuZXctPm51bV9pZGVudHMg
PSAwOw0KKyAgICAgDQorICNpZmRlZiBVU0VfQklHX0ZMT0FUUw0KKyAgICAg
LyogSW5pdGlhbGl6ZSBmbG9hdCB0YWJsZS4gKi8NCisgICAgIGNuZXctPmZs
b2F0cyA9IEVNQUxMT0MoRmxvYXRfZW50cnksIEZMT0FUU19TVEFSVElOR19T
SVpFKTsNCisgICAgIGNuZXctPmZsb2F0c19zaXplID0gRkxPQVRTX1NUQVJU
SU5HX1NJWkU7DQorICAgICBjbmV3LT5udW1fZmxvYXRzID0gMDsNCisgI2Vu
ZGlmDQogIA0KICAgICAgY25ldy0+c2VhcmNoID0gU1RBUlRfU0VBUkNIX0FU
Ow0KICANCioqKioqKioqKioqKioqKg0KKioqIDEzMCwxMzUgKioqKg0KLS0t
IDEzNywxNDggLS0tLQ0KICAJfQ0KICAgICAgfQ0KICAgICAgZWZyZWUob2Jq
ZWN0LT5pZGVudHMpOw0KKyAgICAgDQorICNpZmRlZiBVU0VfQklHX0ZMT0FU
Uw0KKyAgICAgLyogRGlzY2FyZCBmbG9hdHMuICovDQorICAgICBlZnJlZShv
YmplY3QtPmZsb2F0cyk7DQorICNlbmRpZg0KKyANCiAgfQ0KICANCiAgLyoN
CioqKioqKioqKioqKioqKg0KKioqIDQ0Niw0NTEgKioqKg0KLS0tIDQ1OSw1
MTYgLS0tLQ0KICB7DQogICAgICByZXR1cm4gb2JqZWN0LT5zdHJpbmdzW2lu
ZF0uc3RyOw0KICB9DQorIA0KKyAjaWZkZWYgVVNFX0JJR19GTE9BVFMNCisg
SW50IG9iamVjdF9hZGRfZmxvYXQoT2JqICpvYmplY3QsIEZsb2F0IGZudW0p
DQorIHsNCisgICAgIEludCBpLCBibGFuayA9IC0xOw0KKyANCisgICAgIC8q
IEdldCB0aGUgb2JqZWN0IGRpcnR5IG5vdywgc28gd2UgY2FuIHJldHVybiB3
aXRoIGEgY2xlYW4gY29uc2NpZW5jZS4gKi8NCisgICAgIG9iamVjdC0+ZGly
dHkgPSAxOw0KKyANCisgICAgIC8qIExvb2sgZm9yIGJsYW5rcyB3aGlsZSBj
aGVja2luZyBmb3IgYW4gZXF1aXZhbGVudCBmbG9hdC4gKi8NCisgICAgIGZv
ciAoaSA9IDA7IGkgPCBvYmplY3QtPm51bV9mbG9hdHM7IGkrKykgew0KKyAJ
aWYgKCFvYmplY3QtPmZsb2F0c1tpXS5yZWZzKSB7DQorIAkgICAgYmxhbmsg
PSBpOw0KKyAJfSBlbHNlIGlmIChvYmplY3QtPmZsb2F0c1tpXS5mbnVtID09
IGZudW0pIHsNCisgCSAgICBvYmplY3QtPmZsb2F0c1tpXS5yZWZzKys7DQor
IAkgICAgcmV0dXJuIGk7DQorIAl9DQorICAgICB9DQorIA0KKyAgICAgLyog
RmlsbCBpbiBhIGJsYW5rIGlmIHdlIGZvdW5kIG9uZS4gKi8NCisgICAgIGlm
IChibGFuayAhPSAtMSkgew0KKyAJb2JqZWN0LT5mbG9hdHNbYmxhbmtdLmZu
dW0gPSBmbnVtOw0KKyAJb2JqZWN0LT5mbG9hdHNbYmxhbmtdLnJlZnMgPSAx
Ow0KKyAJcmV0dXJuIGJsYW5rOw0KKyAgICAgfQ0KKyANCisgICAgIC8qIENo
ZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIHRvIGVubGFyZ2UgdGhlIHRhYmxlLiAq
Lw0KKyAgICAgaWYgKGkgPj0gb2JqZWN0LT5mbG9hdHNfc2l6ZSkgew0KKyAJ
b2JqZWN0LT5mbG9hdHNfc2l6ZSA9IG9iamVjdC0+ZmxvYXRzX3NpemUgKiAy
ICsgTUFMTE9DX0RFTFRBOw0KKyAJb2JqZWN0LT5mbG9hdHMgPSBFUkVBTExP
QyhvYmplY3QtPmZsb2F0cywgRmxvYXRfZW50cnksDQorIAkJCQkgICBvYmpl
Y3QtPmZsb2F0c19zaXplKTsNCisgICAgIH0NCisgDQorICAgICAvKiBBZGQg
dGhlIHN0cmluZyB0byB0aGUgZW5kIG9mIHRoZSB0YWJsZS4gKi8NCisgICAg
IG9iamVjdC0+ZmxvYXRzW2ldLmZudW0gPSBmbnVtOw0KKyAgICAgb2JqZWN0
LT5mbG9hdHNbaV0ucmVmcyA9IDE7DQorICAgICBvYmplY3QtPm51bV9mbG9h
dHMrKzsNCisgDQorICAgICByZXR1cm4gaTsNCisgfSAgICANCisgDQorIHZv
aWQgb2JqZWN0X2Rpc2NhcmRfZmxvYXQoT2JqICpvYmplY3QsIEludCBpbmQp
DQorIHsNCisgICAgIG9iamVjdC0+ZmxvYXRzW2luZF0ucmVmcy0tOw0KKyAg
ICAgb2JqZWN0LT5kaXJ0eSA9IDE7DQorIH0NCisgDQorIGNGbG9hdCBvYmpl
Y3RfZ2V0X2Zsb2F0KE9iaiAqb2JqZWN0LCBJbnQgaW5kKQ0KKyB7DQorICAg
ICByZXR1cm4gb2JqZWN0LT5mbG9hdHNbaW5kXS5mbnVtOw0KKyB9DQorICNl
bmRpZg0KICANCiAgSW50IG9iamVjdF9hZGRfaWRlbnQoT2JqICpvYmplY3Qs
IGNoYXIgKmlkZW50KQ0KICB7DQpPbmx5IGluIEdlbmVzaXMtMS4xcDUtU1RB
QkxFL3NyYy9kYXRhOiBvYmplY3QuYy5vcmlnDQpkaWZmIC1yYyBHZW5lc2lz
LTEuMXA1LVNUQUJMRS5vbGQvc3JjL2RicGFjay5jIEdlbmVzaXMtMS4xcDUt
U1RBQkxFL3NyYy9kYnBhY2suYw0KKioqIEdlbmVzaXMtMS4xcDUtU1RBQkxF
Lm9sZC9zcmMvZGJwYWNrLmMJV2VkIEF1ZyAyNiAyMTowNzoxMyAxOTk4DQot
LS0gR2VuZXNpcy0xLjFwNS1TVEFCTEUvc3JjL2RicGFjay5jCVdlZCBEZWMg
MjMgMTY6MTI6MzAgMTk5OA0KKioqKioqKioqKioqKioqDQoqKiogMTQ2LDE1
MSAqKioqDQotLS0gMTQ2LDE2NSAtLS0tDQogICNlbmRpZg0KICB9DQogIA0K
KyAjaWZkZWYgVVNFX0JJR19GTE9BVFMNCisgdm9pZCB3cml0ZV9mbG9hdChG
bG9hdCBuLCBGSUxFICpmcCkNCisgew0KKyAgICAgZndyaXRlKCZuLCBzaXpl
b2YoRmxvYXQpLCAxLCBmcCk7DQorIH0NCisgDQorIEZsb2F0IHJlYWRfZmxv
YXQoRklMRSAqZnApDQorIHsNCisgICAgIEZsb2F0IGs7DQorICAgICANCisg
ICAgIGZyZWFkKCZrLCBzaXplb2YoRmxvYXQpLCAxLCBmcCk7DQorICAgICBy
ZXR1cm4gazsNCisgfQ0KKyAjZW5kaWYNCiAgDQogIHZvaWQgd3JpdGVfaWRl
bnQoTG9uZyBpZCwgRklMRSAqZnApDQogIHsNCioqKioqKioqKioqKioqKg0K
KioqIDYwMiw2MDcgKioqKg0KLS0tIDYxNiw2NjYgLS0tLQ0KICAgICAgcmV0
dXJuIHNpemU7DQogIH0NCiAgDQorICNpZmRlZiBVU0VfQklHX0ZMT0FUUw0K
KyBJTlRFUk5BTCB2b2lkIHBhY2tfZmxvYXRzKE9iaiAqb2JqLCBGSUxFICpm
cCkNCisgew0KKyAgICAgSW50IGk7DQorIA0KKyAgICAgd3JpdGVfbG9uZyhv
YmotPmZsb2F0c19zaXplLCBmcCk7DQorICAgICB3cml0ZV9sb25nKG9iai0+
bnVtX2Zsb2F0cywgZnApOw0KKyAgICAgZm9yIChpID0gMDsgaSA8IG9iai0+
bnVtX2Zsb2F0czsgaSsrKSB7DQorICAgICAgICAgd3JpdGVfbG9uZyhvYmot
PmZsb2F0c1tpXS5yZWZzLCBmcCk7DQorIAlpZiAob2JqLT5mbG9hdHNbaV0u
cmVmcykNCisgCSAgICB3cml0ZV9mbG9hdChvYmotPmZsb2F0c1tpXS5mbnVt
LCBmcCk7DQorICAgICB9DQorIH0NCisgDQorIElOVEVSTkFMIHZvaWQgdW5w
YWNrX2Zsb2F0cyhPYmogKm9iaiwgRklMRSAqZnApDQorIHsNCisgICAgIElu
dCBpOw0KKyANCisgICAgIG9iai0+ZmxvYXRzX3NpemUgPSByZWFkX2xvbmco
ZnApOw0KKyAgICAgb2JqLT5udW1fZmxvYXRzID0gcmVhZF9sb25nKGZwKTsN
CisgICAgIG9iai0+ZmxvYXRzID0gRU1BTExPQyhGbG9hdF9lbnRyeSwgb2Jq
LT5mbG9hdHNfc2l6ZSk7DQorICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqLT5u
dW1fZmxvYXRzOyBpKyspIHsNCisgICAgICAgICBvYmotPmZsb2F0c1tpXS5y
ZWZzID0gcmVhZF9sb25nKGZwKTsNCisgICAgICAgICBpZihvYmotPmZsb2F0
c1tpXS5yZWZzKQ0KKyAJICAgIG9iai0+ZmxvYXRzW2ldLmZudW0gPSByZWFk
X2Zsb2F0KGZwKTsNCisgICAgIH0NCisgfQ0KKyANCisgSU5URVJOQUwgSW50
IHNpemVfZmxvYXRzKE9iaiAqb2JqKQ0KKyB7DQorICAgICBJbnQgc2l6ZSA9
IDAsIGk7DQorIA0KKyAgICAgc2l6ZSArPSBzaXplX2xvbmcob2JqLT5mbG9h
dHNfc2l6ZSk7DQorICAgICBzaXplICs9IHNpemVfbG9uZyhvYmotPm51bV9m
bG9hdHMpOw0KKyAgICAgZm9yIChpID0gMDsgaSA8IG9iai0+bnVtX2Zsb2F0
czsgaSsrKSB7DQorIAlzaXplICs9IHNpemVfbG9uZyhvYmotPmZsb2F0c1tp
XS5yZWZzKTsNCisgCWlmIChvYmotPmZsb2F0c1tpXS5yZWZzKQ0KKyAJICAg
IHNpemUgKz0gc2l6ZW9mKEZsb2F0KTsNCisgICAgIH0NCisgDQorICAgICBy
ZXR1cm4gc2l6ZTsNCisgfQ0KKyANCisgI2VuZGlmDQorIA0KICB2b2lkIHBh
Y2tfZGF0YShjRGF0YSAqZGF0YSwgRklMRSAqZnApDQogIHsNCiAgICAgIHdy
aXRlX2xvbmcoZGF0YS0+dHlwZSwgZnApOw0KKioqKioqKioqKioqKioqDQoq
KiogNjEyLDYxOCAqKioqDQotLS0gNjcxLDY4MSAtLS0tDQogIAlicmVhazsN
CiAgDQogICAgICAgIGNhc2UgRkxPQVQ6DQorICNpZmRlZiBVU0VfQklHX0ZM
T0FUUw0KKyAgICAgICAgIHdyaXRlX2Zsb2F0KGRhdGEtPnUuZnZhbCwgZnAp
Ow0KKyAjZWxzZQ0KICAgICAgICAgIHdyaXRlX2xvbmcoKigoTG9uZyopKCZk
YXRhLT51LmZ2YWwpKSwgZnApOw0KKyAjZW5kaWYgICAgICAgIA0KICAgICAg
ICAgIGJyZWFrOw0KICANCiAgICAgICAgY2FzZSBTVFJJTkc6DQoqKioqKioq
KioqKioqKioNCioqKiA2NjgsNjc4ICoqKioNCi0tLSA3MzEsNzQ3IC0tLS0N
CiAgCWRhdGEtPnUudmFsID0gcmVhZF9sb25nKGZwKTsNCiAgCWJyZWFrOw0K
ICANCisgI2lmZGVmIFVTRV9CSUdfRkxPQVRTDQorICAgICAgIGNhc2UgRkxP
QVQ6DQorICAgICAgICAgZGF0YS0+dS5mdmFsID0gcmVhZF9mbG9hdChmcCk7
DQorICAgICAgICAgYnJlYWs7DQorICNlbHNlDQogICAgICAgIGNhc2UgRkxP
QVQ6IHsNCiAgICAgICAgICBMb25nIGsgPSByZWFkX2xvbmcoZnApOw0KICAg
ICAgICAgIGRhdGEtPnUuZnZhbCA9ICooKGNGbG9hdCopKCZrKSk7DQogICAg
ICAgICAgYnJlYWs7DQogICAgICAgIH0NCisgI2VuZGlmDQogIA0KICAgICAg
ICBjYXNlIFNUUklORzoNCiAgCWRhdGEtPnUuc3RyID0gc3RyaW5nX3VucGFj
ayhmcCk7DQoqKioqKioqKioqKioqKioNCioqKiA3MzEsNzM3ICoqKioNCi0t
LSA4MDAsODEwIC0tLS0NCiAgCWJyZWFrOw0KICANCiAgICAgICAgY2FzZSBG
TE9BVDoNCisgI2lmZGVmIFVTRV9CSUdfRkxPQVRTDQorIAlzaXplICs9IHNp
emVvZihGbG9hdCk7DQorICNlbHNlCQ0KICAgICAgICAgIHNpemUgKz0gc2l6
ZV9sb25nKCooKExvbmcqKSgmZGF0YS0+dS5mdmFsKSkpOw0KKyAjZW5kaWYN
CiAgICAgICAgICBicmVhazsNCiAgDQogICAgICAgIGNhc2UgU1RSSU5HOg0K
KioqKioqKioqKioqKioqDQoqKiogNzg3LDc5MiAqKioqDQotLS0gODYwLDg2
OCAtLS0tDQogICAgICBwYWNrX21ldGhvZHMob2JqLCBmcCk7DQogICAgICBw
YWNrX3N0cmluZ3Mob2JqLCBmcCk7DQogICAgICBwYWNrX2lkZW50cyhvYmos
IGZwKTsNCisgI2lmZGVmIFVTRV9CSUdfRkxPQVRTDQorICAgICBwYWNrX2Zs
b2F0cyhvYmosIGZwKTsNCisgI2VuZGlmDQogICAgICB3cml0ZV9pZGVudChv
YmotPm9iam5hbWUsIGZwKTsNCiAgI2lmIDANCiAgICAgIHdyaXRlX2xvbmco
b2JqLT5zZWFyY2gsIGZwKTsNCioqKioqKioqKioqKioqKg0KKioqIDgwMSw4
MDYgKioqKg0KLS0tIDg3Nyw4ODUgLS0tLQ0KICAgICAgdW5wYWNrX21ldGhv
ZHMob2JqLCBmcCk7DQogICAgICB1bnBhY2tfc3RyaW5ncyhvYmosIGZwKTsN
CiAgICAgIHVucGFja19pZGVudHMob2JqLCBmcCk7DQorICNpZmRlZiBVU0Vf
QklHX0ZMT0FUUw0KKyAgICAgdW5wYWNrX2Zsb2F0cyhvYmosIGZwKTsNCisg
I2VuZGlmDQogICAgICBvYmotPm9iam5hbWUgPSByZWFkX2lkZW50KGZwKTsN
CiAgI2lmIDANCiAgICAgIG9iai0+c2VhcmNoID0gcmVhZF9sb25nKGZwKTsN
CioqKioqKioqKioqKioqKg0KKioqIDgxNyw4MjIgKioqKg0KLS0tIDg5Niw5
MDQgLS0tLQ0KICAgICAgc2l6ZSArPSBzaXplX21ldGhvZHMob2JqKTsNCiAg
ICAgIHNpemUgKz0gc2l6ZV9zdHJpbmdzKG9iaik7DQogICAgICBzaXplICs9
IHNpemVfaWRlbnRzKG9iaik7DQorICNpZmRlZiBVU0VfQklHX0ZMT0FUUw0K
KyAgICAgc2l6ZSArPSBzaXplX2Zsb2F0cyhvYmopOw0KKyAjZW5kaWYNCiAg
ICAgIGlmIChvYmotPm9iam5hbWUgIT0gLTEpDQogICAgICAgICAgc2l6ZSAr
PSBzaXplX2lkZW50KG9iai0+b2JqbmFtZSk7DQogICNpZiAwDQpPbmx5IGlu
IEdlbmVzaXMtMS4xcDUtU1RBQkxFL3NyYzogZGJwYWNrLmMub3JpZw0KZGlm
ZiAtcmMgR2VuZXNpcy0xLjFwNS1TVEFCTEUub2xkL3NyYy9kZWNvZGUuYyBH
ZW5lc2lzLTEuMXA1LVNUQUJMRS9zcmMvZGVjb2RlLmMNCioqKiBHZW5lc2lz
LTEuMXA1LVNUQUJMRS5vbGQvc3JjL2RlY29kZS5jCVR1ZSBKdWwgMjEgMjM6
MzY6MDMgMTk5OA0KLS0tIEdlbmVzaXMtMS4xcDUtU1RBQkxFL3NyYy9kZWNv
ZGUuYwlXZWQgRGVjIDIzIDE2OjEyOjMwIDE5OTgNCioqKioqKioqKioqKioq
Kg0KKioqIDgyNyw4MzMgKioqKg0KLS0tIDgyNyw4MzcgLS0tLQ0KICAJICAg
IGJyZWFrOw0KICANCiAgICAgICAgICAgIGNhc2UgRkxPQVQ6DQorICNpZmRl
ZiBVU0VfQklHX0ZMT0FUUw0KKyAgICAgICAgICAgICBzdGFjayA9IGV4cHJf
bGlzdChmbG9hdF9leHByKHRoZV9vYmplY3QtPmZsb2F0c1t0aGVfb3Bjb2Rl
c1twb3MgKyAxXV0uZm51bSksIHN0YWNrKTsNCisgI2Vsc2UNCiAgICAgICAg
ICAgICAgc3RhY2sgPSBleHByX2xpc3QoZmxvYXRfZXhwcigqKChGbG9hdCop
KCZ0aGVfb3Bjb2Rlc1twb3MrMV0pKSksIHN0YWNrKTsNCisgI2VuZGlmICAg
ICAgICAgICAgDQogICAgICAgICAgICAgIHBvcyArPSAyOw0KICAgICAgICAg
ICAgICBicmVhazsNCiAgDQpPbmx5IGluIEdlbmVzaXMtMS4xcDUtU1RBQkxF
L3NyYzogZGVjb2RlLmMub3JpZw0KZGlmZiAtcmMgR2VuZXNpcy0xLjFwNS1T
VEFCTEUub2xkL3NyYy9pbmNsdWRlL2NkY190eXBlcy5oIEdlbmVzaXMtMS4x
cDUtU1RBQkxFL3NyYy9pbmNsdWRlL2NkY190eXBlcy5oDQoqKiogR2VuZXNp
cy0xLjFwNS1TVEFCTEUub2xkL3NyYy9pbmNsdWRlL2NkY190eXBlcy5oCVdl
ZCBKdWwgMjIgMDA6MDI6NTkgMTk5OA0KLS0tIEdlbmVzaXMtMS4xcDUtU1RB
QkxFL3NyYy9pbmNsdWRlL2NkY190eXBlcy5oCVdlZCBEZWMgMjMgMTY6MTI6
MzAgMTk5OA0KKioqKioqKioqKioqKioqDQoqKiogMjQsMjkgKioqKg0KLS0t
IDI0LDMyIC0tLS0NCiAgDQogIHR5cGVkZWYgc3RydWN0IGlkZW50X2VudHJ5
ICBJZGVudF9lbnRyeTsNCiAgdHlwZWRlZiBzdHJ1Y3Qgc3RyaW5nX2VudHJ5
IFN0cmluZ19lbnRyeTsNCisgI2lmZGVmIFVTRV9CSUdfRkxPQVRTDQorIHR5
cGVkZWYgc3RydWN0IGZsb2F0X2VudHJ5ICBGbG9hdF9lbnRyeTsNCisgI2Vu
ZGlmDQogIHR5cGVkZWYgc3RydWN0IHZhciAgICAgICAgICBWYXI7DQogIHR5
cGVkZWYgc3RydWN0IGVycm9yX2xpc3QgICBFcnJvcl9saXN0Ow0KICB0eXBl
ZGVmIEludCAgICAgICAgICAgICAgICAgT2JqZWN0X3N0cmluZzsNCk9ubHkg
aW4gR2VuZXNpcy0xLjFwNS1TVEFCTEUvc3JjL2luY2x1ZGU6IGNkY190eXBl
cy5oLm9yaWcNCmRpZmYgLXJjIEdlbmVzaXMtMS4xcDUtU1RBQkxFLm9sZC9z
cmMvaW5jbHVkZS9jb2RlX3Bydi5oIEdlbmVzaXMtMS4xcDUtU1RBQkxFL3Ny
Yy9pbmNsdWRlL2NvZGVfcHJ2LmgNCioqKiBHZW5lc2lzLTEuMXA1LVNUQUJM
RS5vbGQvc3JjL2luY2x1ZGUvY29kZV9wcnYuaAlUdWUgSnVsIDIxIDIzOjM2
OjE1IDE5OTgNCi0tLSBHZW5lc2lzLTEuMXA1LVNUQUJMRS9zcmMvaW5jbHVk
ZS9jb2RlX3Bydi5oCVdlZCBEZWMgMjMgMTY6MTI6MzAgMTk5OA0KKioqKioq
KioqKioqKioqDQoqKiogMTQsMTkgKioqKg0KLS0tIDE0LDIyIC0tLS0NCiAg
dW5pb24gaW5zdHIgew0KICAgICAgTG9uZyB2YWw7DQogICAgICBjaGFyICpz
dHI7DQorICNpZmRlZiBVU0VfQklHX0ZMT0FUUw0KKyAgICAgRmxvYXQgZm51
bTsNCisgI2VuZGlmDQogICAgICBJZF9saXN0ICplcnJvcnM7DQogIH07DQog
IA0KT25seSBpbiBHZW5lc2lzLTEuMXA1LVNUQUJMRS9zcmMvaW5jbHVkZTog
Y29kZV9wcnYuaC5vcmlnDQpkaWZmIC1yYyBHZW5lc2lzLTEuMXA1LVNUQUJM
RS5vbGQvc3JjL2luY2x1ZGUvZGVmcy5oIEdlbmVzaXMtMS4xcDUtU1RBQkxF
L3NyYy9pbmNsdWRlL2RlZnMuaA0KKioqIEdlbmVzaXMtMS4xcDUtU1RBQkxF
Lm9sZC9zcmMvaW5jbHVkZS9kZWZzLmgJV2VkIEF1ZyAyNiAyMToxNToyNCAx
OTk4DQotLS0gR2VuZXNpcy0xLjFwNS1TVEFCTEUvc3JjL2luY2x1ZGUvZGVm
cy5oCVdlZCBEZWMgMjMgMTY6MTI6MzAgMTk5OA0KKioqKioqKioqKioqKioq
DQoqKiogMjgsMzQgKioqKg0KICAvLyBzeXN0ZW0gY2FuIGhhbmRsZSA2NGJp
dCArIHdvcmRzLiAgWW91IGRvIG5vdCBuZWVkIHRvIHNwZWNpZnkgYm90aA0K
ICAvLyAoWW91IGNhbiBzcGVjaWZ5IGp1c3QgVVNFX0JJR19GTE9BVFMsIGFu
ZCBub3QgbnVtYmVycykuDQogICovDQohICNpZiBESVNBQkxFRA0KICAjICBk
ZWZpbmUgVVNFX0JJR19GTE9BVFMNCiAgI2VuZGlmDQogIA0KLS0tIDI4LDM0
IC0tLS0NCiAgLy8gc3lzdGVtIGNhbiBoYW5kbGUgNjRiaXQgKyB3b3Jkcy4g
IFlvdSBkbyBub3QgbmVlZCB0byBzcGVjaWZ5IGJvdGgNCiAgLy8gKFlvdSBj
YW4gc3BlY2lmeSBqdXN0IFVTRV9CSUdfRkxPQVRTLCBhbmQgbm90IG51bWJl
cnMpLg0KICAqLw0KISAjaWYgRU5BQkxFRA0KICAjICBkZWZpbmUgVVNFX0JJ
R19GTE9BVFMNCiAgI2VuZGlmDQogIA0KT25seSBpbiBHZW5lc2lzLTEuMXA1
LVNUQUJMRS9zcmMvaW5jbHVkZTogZGVmcy5oLm9yaWcNCmRpZmYgLXJjIEdl
bmVzaXMtMS4xcDUtU1RBQkxFLm9sZC9zcmMvaW5jbHVkZS9vYmplY3QuaCBH
ZW5lc2lzLTEuMXA1LVNUQUJMRS9zcmMvaW5jbHVkZS9vYmplY3QuaA0KKioq
IEdlbmVzaXMtMS4xcDUtU1RBQkxFLm9sZC9zcmMvaW5jbHVkZS9vYmplY3Qu
aAlUdWUgSnVsIDIxIDIzOjIwOjQyIDE5OTgNCi0tLSBHZW5lc2lzLTEuMXA1
LVNUQUJMRS9zcmMvaW5jbHVkZS9vYmplY3QuaAlXZWQgRGVjIDIzIDE2OjEy
OjMwIDE5OTgNCioqKioqKioqKioqKioqKg0KKioqIDQ0LDQ5ICoqKioNCi0t
LSA0NCw1NiAtLS0tDQogICAgICBJbnQgbnVtX2lkZW50czsNCiAgICAgIElu
dCBpZGVudHNfc2l6ZTsNCiAgDQorICNpZmRlZiBVU0VfQklHX0ZMT0FUUw0K
KyAgICAgLyogVGFibGUgZm9yIGZsb2F0IHJlZmVyZW5jZXMgaW4gbWV0aG9k
cy4gKi8gICAgDQorICAgICBGbG9hdF9lbnRyeSAqZmxvYXRzOw0KKyAgICAg
SW50IG51bV9mbG9hdHM7DQorICAgICBJbnQgZmxvYXRzX3NpemU7DQorICNl
bmRpZg0KKyANCiAgICAgIC8qIEluZm9ybWF0aW9uIGZvciB0aGUgY2FjaGUu
ICovDQogICAgICBjT2JqbnVtIG9iam51bTsNCiAgICAgIEludCAgIHJlZnM7
DQoqKioqKioqKioqKioqKioNCioqKiA4NSw5MCAqKioqDQotLS0gOTIsMTA1
IC0tLS0NCiAgICAgIEludCByZWZzOw0KICB9Ow0KICANCisgI2lmZGVmIFVT
RV9CSUdfRkxPQVRTDQorIC8qIEFnYWluIGZvciBmbG9hdHMuICovDQorIHN0
cnVjdCBmbG9hdF9lbnRyeSB7DQorICAgICBGbG9hdCBmbnVtOw0KKyAgICAg
SW50IHJlZnM7DQorIH07DQorICNlbmRpZg0KKyANCiAgc3RydWN0IHZhciB7
DQogICAgICBJZGVudCBuYW1lOw0KICAgICAgY09iam51bSBjY2xhc3M7DQoq
KioqKioqKioqKioqKioNCioqKiAxNzksMTg0ICoqKioNCi0tLSAxOTQsMjAy
IC0tLS0NCiAgI2RlZmluZSBNRVRIT0RfU1RBUlRJTkdfU0laRSAgICAoMTYg
LSBNQUxMT0NfREVMVEEgLSAxKQ0KICAjZGVmaW5lIFNUUklOR19TVEFSVElO
R19TSVpFICAgICgxNiAtIE1BTExPQ19ERUxUQSkNCiAgI2RlZmluZSBJREVO
VFNfU1RBUlRJTkdfU0laRSAgICAoMTYgLSBNQUxMT0NfREVMVEEpDQorICNp
ZmRlZiBVU0VfQklHX0ZMT0FUUw0KKyAjZGVmaW5lIEZMT0FUU19TVEFSVElO
R19TSVpFICAgICgxNiAtIE1BTExPQ19ERUxUQSkNCisgI2VuZGlmDQogICNk
ZWZpbmUgTUVUSE9EX0NBQ0hFX1NJWkUgICAgICAgMjU1MQ0KICANCiAgLyog
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uICovDQoqKioqKioqKioqKioqKioN
CioqKiAyMjksMjM0ICoqKioNCi0tLSAyNDcsMjU3IC0tLS0NCiAgSW50ICAg
ICBvYmplY3RfYWRkX3N0cmluZyhPYmogKm9iamVjdCwgY1N0ciAqc3RyaW5n
KTsNCiAgdm9pZCAgICBvYmplY3RfZGlzY2FyZF9zdHJpbmcoT2JqICpvYmpl
Y3QsIEludCBpbmQpOw0KICBjU3RyICpvYmplY3RfZ2V0X3N0cmluZyhPYmog
Km9iamVjdCwgSW50IGluZCk7DQorICNpZmRlZiBVU0VfQklHX0ZMT0FUUw0K
KyBJbnQgICAgIG9iamVjdF9hZGRfZmxvYXQoT2JqICpvYmplY3QsIEZsb2F0
IGZudW0pOw0KKyB2b2lkICAgIG9iamVjdF9kaXNjYXJkX2Zsb2F0KE9iaiAq
b2JqZWN0LCBJbnQgaW5kKTsNCisgRmxvYXQgICBvYmplY3RfZ2V0X2Zsb2F0
KE9iaiAqb2JqZWN0LCBJbnQgaW5kKTsNCisgI2VuZGlmDQogIEludCAgICAg
b2JqZWN0X2FkZF9pZGVudChPYmogKm9iamVjdCwgY2hhciAqaWRlbnQpOw0K
ICB2b2lkICAgIG9iamVjdF9kaXNjYXJkX2lkZW50KE9iaiAqb2JqZWN0LCBJ
bnQgaW5kKTsNCiAgTG9uZyAgICBvYmplY3RfZ2V0X2lkZW50KE9iaiAqb2Jq
ZWN0LCBJbnQgaW5kKTsNCioqKioqKioqKioqKioqKg0KKioqIDI4NSwyOTAg
KioqKg0KLS0tIDMwOCwzMTggLS0tLQ0KICBleHRlcm4gSW50ICAgICBvYmpl
Y3RfYWRkX3N0cmluZyhPYmogKm9iamVjdCwgY1N0ciAqc3RyaW5nKTsNCiAg
ZXh0ZXJuIHZvaWQgICAgb2JqZWN0X2Rpc2NhcmRfc3RyaW5nKE9iaiAqb2Jq
ZWN0LCBJbnQgaW5kKTsNCiAgZXh0ZXJuIGNTdHIgKm9iamVjdF9nZXRfc3Ry
aW5nKE9iaiAqb2JqZWN0LCBJbnQgaW5kKTsNCisgI2lmZGVmIFVTRV9CSUdf
RkxPQVRTDQorIGV4dGVybiBJbnQgICAgIG9iamVjdF9hZGRfZmxvYXQoT2Jq
ICpvYmplY3QsIEZsb2F0IGZudW0pOw0KKyBleHRlcm4gdm9pZCAgICBvYmpl
Y3RfZGlzY2FyZF9mbG9hdChPYmogKm9iamVjdCwgSW50IGluZCk7DQorIGV4
dGVybiBGbG9hdCAgIG9iamVjdF9nZXRfZmxvYXQoT2JqICpvYmplY3QsIElu
dCBpbmQpOw0KKyAjZW5kaWYNCiAgZXh0ZXJuIEludCAgICAgb2JqZWN0X2Fk
ZF9pZGVudChPYmogKm9iamVjdCwgY2hhciAqaWRlbnQpOw0KICBleHRlcm4g
dm9pZCAgICBvYmplY3RfZGlzY2FyZF9pZGVudChPYmogKm9iamVjdCwgSW50
IGluZCk7DQogIGV4dGVybiBMb25nICAgIG9iamVjdF9nZXRfaWRlbnQoT2Jq
ICpvYmplY3QsIEludCBpbmQpOw0KT25seSBpbiBHZW5lc2lzLTEuMXA1LVNU
QUJMRS9zcmMvaW5jbHVkZTogb2JqZWN0Lmgub3JpZw0KZGlmZiAtcmMgR2Vu
ZXNpcy0xLjFwNS1TVEFCTEUub2xkL3NyYy9vcGNvZGVzLmMgR2VuZXNpcy0x
LjFwNS1TVEFCTEUvc3JjL29wY29kZXMuYw0KKioqIEdlbmVzaXMtMS4xcDUt
U1RBQkxFLm9sZC9zcmMvb3Bjb2Rlcy5jCVR1ZSBKdWwgMjEgMjM6NTk6MjUg
MTk5OA0KLS0tIEdlbmVzaXMtMS4xcDUtU1RBQkxFL3NyYy9vcGNvZGVzLmMJ
V2VkIERlYyAyMyAxNjoxMjozMCAxOTk4DQoqKioqKioqKioqKioqKioNCioq
KiA0Nyw1NSAqKioqDQotLS0gNDcsNTkgLS0tLQ0KICAgICAgeyBPTkUsICAg
ICAgICAgICAgICAiT05FIiwgICAgICAgICAgICAgb3Bfb25lIH0sDQogICAg
ICB7IElOVEVHRVIsICAgICAgICAgICJJTlRFR0VSIiwgICAgICAgICBvcF9p
bnRlZ2VyLCBJTlRFR0VSIH0sDQogIA0KKyAjaWZkZWYgVVNFX0JJR19GTE9B
VFMNCisgICAgIHsgRkxPQVQsCQkiRkxPQVQiLAkgICBvcF9mbG9hdCwgRkxP
QVR9LA0KKyAjZWxzZQ0KICAgICAgLyogQnkgdGhlIHRpbWUgaXQgZXhhbWlu
ZXMgdGhlIGFyZywgdGhlIEZMT0FUIGhhcyBhbHJlYWR5IGJlZW4NCiAgICAg
ICAgIGNhc3QgaW50byBhbiBJTlRFR0VSLCBzbyB3ZSBqdXN0IG5lZWQgdG8g
bGV0IGl0IGtub3cgaXRzIGFuIElOVCAqLw0KICAgICAgeyBGTE9BVCwgICAg
ICAgICAgICAiRkxPQVQiLCAgICAgICAgICAgb3BfZmxvYXQsIElOVEVHRVIg
fSwNCisgI2VuZGlmDQogICAgICB7IFNUUklORywgICAgICAgICAgICJTVFJJ
TkciLCAgICAgICAgICBvcF9zdHJpbmcsIFNUUklORyB9LA0KICAgICAgeyBP
QkpOVU0sICAgICAgICAgICAiT0JKTlVNIiwgICAgICAgICAgb3Bfb2JqbnVt
LCBJTlRFR0VSIH0sDQogICAgICB7IFNZTUJPTCwgICAgICAgICAgICJTWU1C
T0wiLCAgICAgICAgICBvcF9zeW1ib2wsIElERU5UIH0sDQpPbmx5IGluIEdl
bmVzaXMtMS4xcDUtU1RBQkxFL3NyYzogb3Bjb2Rlcy5jLm9yaWcNCmRpZmYg
LXJjIEdlbmVzaXMtMS4xcDUtU1RBQkxFLm9sZC9zcmMvb3BzL29iamVjdC5j
IEdlbmVzaXMtMS4xcDUtU1RBQkxFL3NyYy9vcHMvb2JqZWN0LmMNCioqKiBH
ZW5lc2lzLTEuMXA1LVNUQUJMRS5vbGQvc3JjL29wcy9vYmplY3QuYwlXZWQg
SnVsIDIyIDAwOjA3OjM4IDE5OTgNCi0tLSBHZW5lc2lzLTEuMXA1LVNUQUJM
RS9zcmMvb3BzL29iamVjdC5jCVdlZCBEZWMgMjMgMTY6MTI6MzAgMTk5OA0K
KioqKioqKioqKioqKioqDQoqKiogOTE0LDkyMCAqKioqDQotLS0gOTE0LDky
NCAtLS0tDQogICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgIGNhc2Ug
RkxPQVQ6DQogICAgICAgICAgICAgIGQudHlwZSA9IEZMT0FUOw0KKyAjaWZk
ZWYgVVNFX0JJR19GTE9BVFMNCisgICAgICAgICAgICAgZC51LmZ2YWwgPSBv
YmplY3RfZ2V0X2Zsb2F0KG9iaiwgb3ApOw0KKyAjZWxzZQ0KICAgICAgICAg
ICAgICBkLnUuZnZhbCA9ICooKEZsb2F0KikoJm9wKSk7DQorICNlbmRpZg0K
ICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICBjYXNlIFRfRVJST1I6
DQogICAgICAgICAgICAgIGQudHlwZSA9IFRfRVJST1I7DQpPbmx5IGluIEdl
bmVzaXMtMS4xcDUtU1RBQkxFL3NyYy9vcHM6IG9iamVjdC5jLm9yaWcNCmRp
ZmYgLXJjIEdlbmVzaXMtMS4xcDUtU1RBQkxFLm9sZC9zcmMvb3BzL29wZXJh
dG9ycy5jIEdlbmVzaXMtMS4xcDUtU1RBQkxFL3NyYy9vcHMvb3BlcmF0b3Jz
LmMNCioqKiBHZW5lc2lzLTEuMXA1LVNUQUJMRS5vbGQvc3JjL29wcy9vcGVy
YXRvcnMuYwlXZWQgSnVsIDIyIDAwOjA3OjM5IDE5OTgNCi0tLSBHZW5lc2lz
LTEuMXA1LVNUQUJMRS9zcmMvb3BzL29wZXJhdG9ycy5jCVdlZCBEZWMgMjMg
MTY6MTI6MzAgMTk5OA0KKioqKioqKioqKioqKioqDQoqKiogNjAyLDYwOCAq
KioqDQotLS0gNjAyLDYxNiAtLS0tDQogIH0NCiAgDQogIHZvaWQgb3BfZmxv
YXQodm9pZCkgew0KKyAjaWZkZWYgVVNFX0JJR19GTE9BVFMNCisgICAgIGNG
bG9hdCBmbDsNCisgICAgIEludCBpbmQgPSBjdXJfZnJhbWUtPm9wY29kZXNb
Y3VyX2ZyYW1lLT5wYysrXTsNCisgICAgIA0KKyAgICAgZmwgPSBvYmplY3Rf
Z2V0X2Zsb2F0KGN1cl9mcmFtZS0+bWV0aG9kLT5vYmplY3QsIGluZCk7DQor
ICAgICBwdXNoX2Zsb2F0KGZsKTsNCisgI2Vsc2UNCiAgICAgIHB1c2hfZmxv
YXQoKigoY0Zsb2F0KikoJmN1cl9mcmFtZS0+b3Bjb2Rlc1tjdXJfZnJhbWUt
PnBjKytdKSkpOw0KKyAjZW5kaWYgICAgDQogIH0NCiAgDQogIHZvaWQgb3Bf
c3RyaW5nKHZvaWQpIHsNCk9ubHkgaW4gR2VuZXNpcy0xLjFwNS1TVEFCTEUv
c3JjL29wczogb3BlcmF0b3JzLmMub3JpZw0KZGlmZiAtcmMgR2VuZXNpcy0x
LjFwNS1TVEFCTEUub2xkL3NyYy91dGlsLmMgR2VuZXNpcy0xLjFwNS1TVEFC
TEUvc3JjL3V0aWwuYw0KKioqIEdlbmVzaXMtMS4xcDUtU1RBQkxFLm9sZC9z
cmMvdXRpbC5jCVR1ZSBKdWwgMjEgMjM6NTk6MjkgMTk5OA0KLS0tIEdlbmVz
aXMtMS4xcDUtU1RBQkxFL3NyYy91dGlsLmMJV2VkIERlYyAyMyAxNjoxMjoz
MCAxOTk4DQoqKioqKioqKioqKioqKioNCioqKiAxMzIsMTM4ICoqKioNCi0t
LSAxMzIsMTQyIC0tLS0NCiAgDQogIGNoYXIgKiBmbG9hdF90b19hc2NpaShG
bG9hdCBudW0sIE51bWJlcl9idWYgbmJ1Zikgew0KICAgICAgaW50IGk7DQor
ICNpZmRlZiBVU0VfQklHX0ZMT0FUUw0KKyAgICAgc3ByaW50ZiAobmJ1Ziwg
IiUuMTVnIiwgbnVtKTsNCisgI2Vsc2UgICAgICAgIA0KICAgICAgc3ByaW50
ZiAobmJ1ZiwgIiVnIiwgbnVtKTsNCisgI2VuZGlmDQogICAgICBmb3IgKGk9
MDsgbmJ1ZltpXTsgaSsrKQ0KICAgICAgICBpZiAobmJ1ZltpXT09Jy4nIHx8
IG5idWZbaV09PSdlJykNCiAgICAgICAgICAgICByZXR1cm4gbmJ1ZjsNCk9u
bHkgaW4gR2VuZXNpcy0xLjFwNS1TVEFCTEUvc3JjOiB1dGlsLmMub3JpZw0K

--8323328-1284125757-972854523=:2503--