[omniORB] Patch for DEC C++ 5.6

Bruce Visscher visschb@rjrt.com
Tue, 13 Jul 1999 11:54:47 -0400


This is a multi-part message in MIME format.
--------------A26923A3C45A24ED74BBA1AD
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

[Sorry for the posts earlier with the long lines.  My mail reader was
misconfigurued.  I think I have it fixed now...]

Attached is a patch for the DEC C++ 5.6 compiler.

In the interest of conserving bandwidth, I've excluded most of the IDL
generated headers in include/omniORB2.

The main two problems were the pointer to reference compiler bug (it
turns out that the compiler just doesn't understand operator T&*(),
whether or not T is a template argument) and a compiler bug that
prevents the new _var_type from working with structs (this might also be
a problem with unions, I haven't checked).

I thought the difference in footprint was interesting.  The following is
the required disk space for the utilities and examples.  This does not
include debug versions.

+--------------------------+---------------+----------------+
| OpenVMS Alpha            | DEC C++ 5.6   | Compaq C++ 6.2 |
+--------------------------+---------------+----------------+
| omniORB 2.7.1            |   69MB        |          20MB  |
| omniORB 2.8.0 [pre1]     |  470MB        |          34MB  |
+--------------------------+---------------+----------------+

Note that this is partially my fault, since I haven't implemented shared
libraries for the VMS port (contributions are welcome).  In any case, I
think anyone upgrading to omniORB 2.8.0 on VMS or Tru64 Unix should
consider upgrading the compiler if needed.

The port to OpenVMS VAX still doesn't work.  I can't compile
include/omniORB2/CORBA.h.  I tried to resurrect ENABLE_CLIENT_IR_SUPPORT
(and #undef it for the VAX platform) but ran into problems.  I assume
this is obsolete?  I'd like to have this working for the VAX platform
(but I suspect we may be the only users on that platform).

Bruce
--------------A26923A3C45A24ED74BBA1AD
Content-Type: application/x-unknown-content-type-diff_auto_file;
 name="omniORB_280pre1_deccxx_5.6.diff"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="omniORB_280pre1_deccxx_5.6.diff"

KioqIGluY2x1ZGUvb21uaU9SQjIvQ09SQkEuaAlGcmkgSnVuIDI1IDA5OjU0OjMwIDE5OTkK
LS0tIG5ld2luY2x1ZGUvb21uaU9SQjIvQ09SQkEuaAlNb24gSnVsIDEyIDE2OjM1OjI4IDE5
OTkKKioqKioqKioqKioqKioqCioqKiA2NjYsNjczICoqKioKLS0tIDY2Niw2NzkgLS0tLQog
ICAgICB9CiAgICAgIGlubGluZSBBbnlfT1VUX2FyZyYgb3BlcmF0b3I9KEFueSogcCkgeyBf
ZGF0YSA9IHA7IHJldHVybiAqdGhpczsgfQogIAorICNpZm5kZWYgSEFTX1BPSU5URVJfUkVG
X0JVRwogICAgICBvcGVyYXRvciBBbnkqJiAoKSB7IHJldHVybiBfZGF0YTsgfQogICAgICBB
bnkqJiBwdHIoKSB7IHJldHVybiBfZGF0YTsgfQorICNlbHNlCisgICAgIHR5cGVkZWYgQW55
KiYgUG9pbnRlclJlZjsKKyAgICAgb3BlcmF0b3IgUG9pbnRlclJlZiAoKSB7IHJldHVybiBf
ZGF0YTsgfQorICAgICBQb2ludGVyUmVmIHB0cigpIHsgcmV0dXJuIF9kYXRhOyB9CisgI2Vu
ZGlmCiAgCiAgICAgIEFueSomIF9kYXRhOwogICAgcHJpdmF0ZToKKioqKioqKioqKioqKioq
CioqKiAxNDExLDE0MTcgKioqKgogIAogICAgY2xhc3MgSW50ZXJmYWNlRGVmOwogIAohICAg
Y2xhc3MgSW1wbGVtZW50YXRpb25EZWY7CiAgICB0eXBlZGVmIEltcGxlbWVudGF0aW9uRGVm
KiBJbXBsZW1lbnRhdGlvbkRlZl9wdHI7CiAgCiAgICBjbGFzcyBPcGVyYXRpb25EZWY7Ci0t
LSAxNDE3LDE0MjMgLS0tLQogIAogICAgY2xhc3MgSW50ZXJmYWNlRGVmOwogIAohICAgY2xh
c3MgSW1wbGVtZW50YXRpb25EZWYge307CiAgICB0eXBlZGVmIEltcGxlbWVudGF0aW9uRGVm
KiBJbXBsZW1lbnRhdGlvbkRlZl9wdHI7CiAgCiAgICBjbGFzcyBPcGVyYXRpb25EZWY7Cioq
KiBpbmNsdWRlL29tbmlPUkIyL0NPUkJBX3N5c2RlcC5oCVNhdCBKdW4gMjYgMTM6NTU6MTAg
MTk5OQotLS0gbmV3aW5jbHVkZS9vbW5pT1JCMi9DT1JCQV9zeXNkZXAuaAlNb24gSnVsIDEy
IDE2OjM1OjI4IDE5OTkKKioqKioqKioqKioqKioqCioqKiAxNTksMTY0ICoqKioKLS0tIDE1
OSwxNzIgLS0tLQogICNlbGlmIGRlZmluZWQoX19ERUNDWFgpCiAgLy8gREVDIEMrKyBjb21w
aWxlcgogIAorICMgIGlmIF9fREVDQ1hYX1ZFUiA8IDYwMDAwMDAwCisgIyAgICBkZWZpbmUg
SEFTX1BPSU5URVJfUkVGX0JVRworICMgICAgZGVmaW5lIEhBU19SRUNVUlNJVkVfVEVNUExB
VEVfQlVHCisgIyAgZWxzZQorICMgICAgdW5kZWYgSEFTX1BPSU5URVJfUkVGX0JVRworICMg
ICAgdW5kZWYgSEFTX1JFQ1VSU0lWRV9URU1QTEFURV9CVUcKKyAjICBlbmRpZgorIAogICMg
IGlmIGRlZmluZWQoX19hbHBoYSkgJiYgIWRlZmluZWQoX19WTVMpCiAgIyAgICAgZGVmaW5l
IFNJWkVPRl9MT05HIDgKICAjICAgICBkZWZpbmUgU0laRU9GX0lOVCAgNAoqKiogaW5jbHVk
ZS9vbW5pT1JCMi9vbW5pTGlmZUN5Y2xlLmhoCUZyaSBKdWwgMDIgMTU6MjQ6MTggMTk5OQot
LS0gbmV3aW5jbHVkZS9vbW5pT1JCMi9vbW5pTGlmZUN5Y2xlLmhoCU1vbiBKdWwgMTIgMTY6
MzU6MzAgMTk5OQoqKioqKioqKioqKioqKioKKioqIDEsNiAqKioqCiAgLy8gVGhpcyBmaWxl
IGlzIGdlbmVyYXRlZCBieSBvbW5paWRsMi0gb21uaU9SQl8yXzguIERvIG5vdCBlZGl0Lgoh
ICNpZm5kZWYgX19vbW5pTGlmZUN5Y2xlX2hoX18KISAjZGVmaW5lIF9fb21uaUxpZmVDeWNs
ZV9oaF9fCiAgCiAgI2lmbmRlZiBVU0Vfb21uaU9SQl9sb2dTdHJlYW0KICAjZGVmaW5lIFVT
RV9vbW5pT1JCX2xvZ1N0cmVhbQotLS0gMSw2IC0tLS0KICAvLyBUaGlzIGZpbGUgaXMgZ2Vu
ZXJhdGVkIGJ5IG9tbmlpZGwyLSBvbW5pT1JCXzJfOC4gRG8gbm90IGVkaXQuCiEgI2lmbmRl
ZiBfX29tbmlsaWZlY3ljbGVfaGhfXwohICNkZWZpbmUgX19vbW5pbGlmZWN5Y2xlX2hoX18K
ICAKICAjaWZuZGVmIFVTRV9vbW5pT1JCX2xvZ1N0cmVhbQogICNkZWZpbmUgVVNFX29tbmlP
UkJfbG9nU3RyZWFtCioqKioqKioqKioqKioqKgoqKiogMjMyLDIzNSAqKioqCiAgdm9pZCBv
cGVyYXRvcjw8PShDT1JCQTo6QW55JiBfYSwgb21uaUxpZmVDeWNsZUluZm9fcHRyIF9zKTsK
ICBDT1JCQTo6Qm9vbGVhbiBvcGVyYXRvcj4+PShjb25zdCBDT1JCQTo6QW55JiBfYSwgb21u
aUxpZmVDeWNsZUluZm9fcHRyJiBfcyk7CiAgCiEgI2VuZGlmIC8vIF9fb21uaUxpZmVDeWNs
ZV9oaF9fCi0tLSAyMzIsMjM1IC0tLS0KICB2b2lkIG9wZXJhdG9yPDw9KENPUkJBOjpBbnkm
IF9hLCBvbW5pTGlmZUN5Y2xlSW5mb19wdHIgX3MpOwogIENPUkJBOjpCb29sZWFuIG9wZXJh
dG9yPj49KGNvbnN0IENPUkJBOjpBbnkmIF9hLCBvbW5pTGlmZUN5Y2xlSW5mb19wdHImIF9z
KTsKICAKISAjZW5kaWYgLy8gX19vbW5pbGlmZWN5Y2xlX2hoX18KKioqIGluY2x1ZGUvb21u
aU9SQjIvc3RyaW5ndHlwZXMuaAlGcmkgSnVuIDE4IDE2OjI4OjMwIDE5OTkKLS0tIG5ld2lu
Y2x1ZGUvb21uaU9SQjIvc3RyaW5ndHlwZXMuaAlNb24gSnVsIDEyIDE2OjM1OjMwIDE5OTkK
KioqKioqKioqKioqKioqCioqKiAzMjgsMzM1ICoqKioKLS0tIDMyOCwzNDEgLS0tLQogICAg
aW5saW5lIF9DT1JCQV9TdHJpbmdfb3V0JiBvcGVyYXRvcj0oY29uc3QgY2hhciogcCkgewog
ICAgICBfZGF0YSA9IF9DT1JCQV9TdHJpbmdfdmFyOjpzdHJpbmdfZHVwKHApOyByZXR1cm4g
KnRoaXM7CiAgICB9CisgI2lmbmRlZiBIQVNfUE9JTlRFUl9SRUZfQlVHCiAgICBvcGVyYXRv
ciBjaGFyKiYgKCkgeyByZXR1cm4gX2RhdGE7IH0KICAgIGNoYXIqJiBwdHIoKSB7IHJldHVy
biBfZGF0YTsgfQorICNlbHNlCisgICB0eXBlZGVmIGNoYXIqJiBQb2ludGVyUmVmOworICAg
b3BlcmF0b3IgUG9pbnRlclJlZiAoKSB7IHJldHVybiBfZGF0YTsgfQorICAgUG9pbnRlclJl
ZiBwdHIoKSB7IHJldHVybiBfZGF0YTsgfQorICNlbmRpZgogIAogICAgY2hhciomIF9kYXRh
OwogIAoqKioqKioqKioqKioqKioKKioqIDQ0Miw0NDggKioqKgotLS0gNDQ4LDQ1OCAtLS0t
CiAgI2VuZGlmCiAgICAgICAgcy0+Y29weWJ1ZmZlcihwZF9tYXgpOwogICAgICB9CisgI2lm
ICFkZWZpbmVkKF9fREVDQ1hYKSB8fCBfX0RFQ0NYWF9WRVIgPj0gNjAwMDAwMDAKICAgICAg
cmV0dXJuIHBkX2RhdGE7IAorICNlbHNlCisgICAgIHJldHVybiAoY29uc3QgY2hhciogY29u
c3QqKXBkX2RhdGE7IAorICNlbmRpZgogICAgfQogIAogIAoqKiogaW5jbHVkZS9vbW5pT1JC
Mi90Y0Rlc2NyaXB0b3IuaAlTdW4gSnVuIDIwIDExOjU5OjE2IDE5OTkKLS0tIG5ld2luY2x1
ZGUvb21uaU9SQjIvdGNEZXNjcmlwdG9yLmgJTW9uIEp1bCAxMiAxNjozNTozMCAxOTk5Cioq
KioqKioqKioqKioqKgoqKiogMzQ4LDM1NCAqKioqCiAgLy8vLy8vLy8vLy8vLy8vLy8vLwog
IAogIGlubGluZSB2b2lkCiEgXzBSTF9idWlsZERlc2NfY3N0cmluZyh0Y0Rlc2NyaXB0b3Ig
JmRlc2MsX0NPUkJBX1N0cmluZ19tZW1iZXImIGRhdGEpCiAgewogICAgZGVzYy5wX3N0cmlu
ZyA9ICZkYXRhLl9wdHI7CiAgfQotLS0gMzQ4LDM1NCAtLS0tCiAgLy8vLy8vLy8vLy8vLy8v
Ly8vLwogIAogIGlubGluZSB2b2lkCiEgXzBSTF9idWlsZERlc2NfY3N0cmluZyh0Y0Rlc2Ny
aXB0b3IgJmRlc2MsX0NPUkJBX1N0cmluZ19tZW1iZXIgY29uc3QmIGRhdGEpCiAgewogICAg
ZGVzYy5wX3N0cmluZyA9ICZkYXRhLl9wdHI7CiAgfQoqKiogaW5jbHVkZS9vbW5pT1JCMi90
ZW1wbGF0ZWRlY2xzLmgJVGh1IEp1bCAwMSAwNzo0Mjo1MCAxOTk5Ci0tLSBuZXdpbmNsdWRl
L29tbmlPUkIyL3RlbXBsYXRlZGVjbHMuaAlNb24gSnVsIDEyIDE2OjM1OjMwIDE5OTkKKioq
KioqKioqKioqKioqCioqKiA2MjUsNjMyICoqKioKLS0tIDYyNSw2MzggLS0tLQogICAgICBf
ZGF0YSA9ICgoVCopcCk7CiAgICAgIHJldHVybiAqIHRoaXM7CiAgICB9CisgI2lmbmRlZiBI
QVNfUE9JTlRFUl9SRUZfQlVHCiAgICBpbmxpbmUgb3BlcmF0b3IgVComKCkgeyByZXR1cm4g
X2RhdGE7IH0KICAgIGlubGluZSBUKiYgcHRyKCkgeyByZXR1cm4gX2RhdGE7IH0KKyAjZWxz
ZQorICAgdHlwZWRlZiBUKiYgUG9pbnRlclJlZjsKKyAgIGlubGluZSBvcGVyYXRvciBQb2lu
dGVyUmVmKCkgeyByZXR1cm4gX2RhdGE7IH0KKyAgIGlubGluZSBQb2ludGVyUmVmIHB0cigp
IHsgcmV0dXJuIF9kYXRhOyB9CisgI2VuZGlmCiAgICBpbmxpbmUgVCogb3BlcmF0b3ItPigp
IHsgcmV0dXJuIF9kYXRhOyB9CiAgCiAgICBUKiYgX2RhdGE7CioqKioqKioqKioqKioqKgoq
KiogNzA5LDcxNyAqKioqCi0tLSA3MTUsNzMwIC0tLS0KICAgIGlubGluZSBfQ09SQkFfQ29u
c3RyVHlwZV9GaXhfT1VUX2FyZyhjb25zdCBUX291dCYgcCkgOiBfZGF0YShwLl9kYXRhKSB7
fQogICAgaW5saW5lIFRfb3V0JiBvcGVyYXRvcj0oY29uc3QgVF9vdXQmIHApIHsgX2RhdGEg
PSBwLl9kYXRhOyByZXR1cm4gKnRoaXM7IH0KICAgIGlubGluZSBUX291dCYgb3BlcmF0b3I9
KFQqIHApIHsgX2RhdGEgPSBwOyByZXR1cm4gKnRoaXM7IH0KKyAjaWZuZGVmIEhBU19QT0lO
VEVSX1JFRl9CVUcKICAgIGlubGluZSBvcGVyYXRvciBUKiYoKSB7IHJldHVybiBfZGF0YTsg
fQogICAgaW5saW5lIFQqJiBwdHIoKSB7IHJldHVybiBfZGF0YTsgfQogICAgaW5saW5lIFQq
JiBvcGVyYXRvci0+KCkgeyByZXR1cm4gX2RhdGE7IH0KKyAjZWxzZQorICAgdHlwZWRlZiBU
KiYgUG9pbnRlclJlZjsKKyAgIGlubGluZSBvcGVyYXRvciBQb2ludGVyUmVmKCkgeyByZXR1
cm4gX2RhdGE7IH0KKyAgIGlubGluZSBQb2ludGVyUmVmIHB0cigpIHsgcmV0dXJuIF9kYXRh
OyB9CisgICBpbmxpbmUgUG9pbnRlclJlZiBvcGVyYXRvci0+KCkgeyByZXR1cm4gX2RhdGE7
IH0KKyAjZW5kaWYKICAKICAgIFQqJiBfZGF0YTsKICAKKioqKioqKioqKioqKioqCioqKiA4
MTEsODE5ICoqKioKLS0tIDgyNCw4MzkgLS0tLQogICAgaW5saW5lIF9DT1JCQV9Db25zdHJU
eXBlX1ZhcmlhYmxlX09VVF9hcmcoY29uc3QgVF9vdXQmIHApIDogX2RhdGEocC5fZGF0YSkg
e30KICAgIGlubGluZSBUX291dCYgb3BlcmF0b3I9KGNvbnN0IFRfb3V0JiBwKSB7IF9kYXRh
ID0gcC5fZGF0YTsgcmV0dXJuICp0aGlzOyB9CiAgICBpbmxpbmUgVF9vdXQmIG9wZXJhdG9y
PShUKiBwKSB7IF9kYXRhID0gcDsgcmV0dXJuICp0aGlzOyB9CisgI2lmbmRlZiBIQVNfUE9J
TlRFUl9SRUZfQlVHCiAgICBpbmxpbmUgb3BlcmF0b3IgVComKCkgeyByZXR1cm4gX2RhdGE7
IH0KICAgIGlubGluZSBUKiYgcHRyKCkgeyByZXR1cm4gX2RhdGE7IH0KICAgIGlubGluZSBU
KiYgb3BlcmF0b3ItPigpIHsgcmV0dXJuIF9kYXRhOyB9CisgI2Vsc2UKKyAgIHR5cGVkZWYg
VComIFBvaW50ZXJSZWY7CisgICBpbmxpbmUgb3BlcmF0b3IgUG9pbnRlclJlZigpIHsgcmV0
dXJuIF9kYXRhOyB9CisgICBpbmxpbmUgUG9pbnRlclJlZiBwdHIoKSB7IHJldHVybiBfZGF0
YTsgfQorICAgaW5saW5lIFBvaW50ZXJSZWYgb3BlcmF0b3ItPigpIHsgcmV0dXJuIF9kYXRh
OyB9CisgI2VuZGlmCiAgCiAgICBUKiYgX2RhdGE7CiAgCioqKioqKioqKioqKioqKgoqKiog
OTExLDkyMyAqKioqCi0tLSA5MzEsOTUzIC0tLS0KICAgIGlubGluZSBfQ09SQkFfQXJyYXlf
T1VUX2FyZyhjb25zdCBUX291dCYgcCkgOiBfZGF0YShwLl9kYXRhKSB7fQogICAgaW5saW5l
IFRfb3V0JiBvcGVyYXRvcj0oY29uc3QgVF9vdXQmIHApIHsgX2RhdGEgPSBwLl9kYXRhOyBy
ZXR1cm4gKnRoaXM7IH0KICAgIGlubGluZSBUX291dCYgb3BlcmF0b3I9KFQqIHApIHsgX2Rh
dGEgPSBwOyByZXR1cm4gKnRoaXM7IH0KKyAjaWZuZGVmIEhBU19QT0lOVEVSX1JFRl9CVUcK
ICAgIGlubGluZSBvcGVyYXRvciBUKiYoKSB7IHJldHVybiBfZGF0YTsgfQogICAgaW5saW5l
IFQqJiBwdHIoKSB7IHJldHVybiBfZGF0YTsgfQogICAgaW5saW5lIFQmIG9wZXJhdG9yW10g
KF9DT1JCQV9VTG9uZyBpbmRleCkgewogICAgICByZXR1cm4gKihwZF9kYXRhICsgaW5kZXgp
OwogICAgfQorICNlbHNlCisgICB0eXBlZGVmIFQqJiBQb2ludGVyUmVmOworICAgaW5saW5l
IG9wZXJhdG9yIFBvaW50ZXJSZWYoKSB7IHJldHVybiBfZGF0YTsgfQorICAgaW5saW5lIFBv
aW50ZXJSZWYgcHRyKCkgeyByZXR1cm4gX2RhdGE7IH0KKyAgIGlubGluZSBUJiBvcGVyYXRv
cltdIChfQ09SQkFfVUxvbmcgaW5kZXgpIHsKKyAgICAgcmV0dXJuICoocGRfZGF0YSArIGlu
ZGV4KTsKKyAgIH0KKyAjZW5kaWYKICAKICAgIFQqJiBfZGF0YTsKKyAKICBwcml2YXRlOgog
ICAgX0NPUkJBX0FycmF5X09VVF9hcmcoKTsKICAgIFRfb3V0JiBvcGVyYXRvcj0oY29uc3Qg
VF92YXImKTsKKioqIHNyYy9saWIvb21uaU9SQjIvZHluYW1pYy9wc2V1ZG8uaAlUdWUgTWF5
IDI1IDEzOjM0OjQ2IDE5OTkKLS0tIG5ld3NyYy9saWIvb21uaU9SQjIvZHluYW1pYy9wc2V1
ZG8uaAlNb24gSnVsIDEyIDE2OjM1OjMwIDE5OTkKKioqKioqKioqKioqKioqCioqKiAxNDks
MTU1ICoqKioKLS0tIDE0OSwxNTkgLS0tLQogICAgdmlydHVhbCBDT1JCQTo6Qm9vbGVhbiBO
UF9pc19uaWwoKSBjb25zdDsKICAgIHZpcnR1YWwgQ09SQkE6OkNvbnRleHRMaXN0X3B0ciBO
UF9kdXBsaWNhdGUoKTsKICAKKyAjaWYgIWRlZmluZWQoX19ERUNDWFgpIHx8IF9fREVDQ1hY
X1ZFUiA+PSA2MDAwMDAwMAogICAgaW5saW5lIGNvbnN0IGNoYXIqY29uc3QqIE5QX2xpc3Qo
KSB7IHJldHVybiBwZF9saXN0Lk5QX2RhdGEoKTsgfQorICNlbHNlCisgICBpbmxpbmUgY29u
c3QgY2hhcipjb25zdCogTlBfbGlzdCgpIHsgcmV0dXJuIChjb25zdCBjaGFyKmNvbnN0Kilw
ZF9saXN0Lk5QX2RhdGEoKTsgfQorICNlbmRpZgogIAogIHByaXZhdGU6CiAgICB2b2lkIGZy
ZWVfZW50cmllcygpOwoqKiogc3JjL3Rvb2wvb21uaWlkbDIvb21uaU9SQjJfYmUvbzJiZV9z
ZXF1ZW5jZS5jYwlTYXQgSnVsIDAzIDEwOjM3OjEwIDE5OTkKLS0tIG5ld3NyYy90b29sL29t
bmlpZGwyL29tbmlPUkIyX2JlL28yYmVfc2VxdWVuY2UuY2MJTW9uIEp1bCAxMiAxNjozNToz
MCAxOTk5CioqKioqKioqKioqKioqKgoqKiogOTY4LDk3NyAqKioqCiAgCiAgICBJTkQocyk7
IHMgPDwgImlubGluZSBjb25zdCBfVCYgaW4oKSBjb25zdCB7IHJldHVybiAqcGRfc2VxOyB9
XG4iOwogICAgSU5EKHMpOyBzIDw8ICJpbmxpbmUgX1QmIGlub3V0KCkgeyByZXR1cm4gKnBk
X3NlcTsgfVxuIjsKICAgIElORChzKTsgcyA8PCAiaW5saW5lIF9UKiYgb3V0KCkgeyBpZiAo
cGRfc2VxKSB7IGRlbGV0ZSBwZF9zZXE7IHBkX3NlcSA9IDA7IH0gcmV0dXJuIHBkX3NlcTsg
fVxuIjsKICAgIElORChzKTsgcyA8PCAiaW5saW5lIF9UKiBfcmV0bigpIHsgX1QqIHRtcCA9
IHBkX3NlcTsgcGRfc2VxID0gMDsgIgogIAkgICAgInJldHVybiB0bXA7IH1cblxuIjsKLSAK
ICAgIElORChzKTsgcyA8PCAiZnJpZW5kIGNsYXNzICIgPDwgKGNvbnN0IGNoYXIqKSBvdXRf
dHlwZSA8PCAiO1xuXG4iOwogIAogICAgREVDX0lOREVOVF9MRVZFTCgpOwotLS0gOTY4LDk4
MSAtLS0tCiAgCiAgICBJTkQocyk7IHMgPDwgImlubGluZSBjb25zdCBfVCYgaW4oKSBjb25z
dCB7IHJldHVybiAqcGRfc2VxOyB9XG4iOwogICAgSU5EKHMpOyBzIDw8ICJpbmxpbmUgX1Qm
IGlub3V0KCkgeyByZXR1cm4gKnBkX3NlcTsgfVxuIjsKKyAgIHMgPDwgIiNpZm5kZWYgSEFT
X1BPSU5URVJfUkVGX0JVR1xuIjsKICAgIElORChzKTsgcyA8PCAiaW5saW5lIF9UKiYgb3V0
KCkgeyBpZiAocGRfc2VxKSB7IGRlbGV0ZSBwZF9zZXE7IHBkX3NlcSA9IDA7IH0gcmV0dXJu
IHBkX3NlcTsgfVxuIjsKKyAgIHMgPDwgIiNlbHNlXG4iOworICAgSU5EKHMpOyBzIDw8ICJ0
eXBlZGVmIF9UKiYgUG9pbnRlclJlZjtcbiI7CisgICBJTkQocyk7IHMgPDwgImlubGluZSBQ
b2ludGVyUmVmIG91dCgpIHsgaWYgKHBkX3NlcSkgeyBkZWxldGUgcGRfc2VxOyBwZF9zZXEg
PSAwOyB9IHJldHVybiBwZF9zZXE7IH1cbiI7CisgICBzIDw8ICIjZW5kaWZcbiI7CiAgICBJ
TkQocyk7IHMgPDwgImlubGluZSBfVCogX3JldG4oKSB7IF9UKiB0bXAgPSBwZF9zZXE7IHBk
X3NlcSA9IDA7ICIKICAJICAgICJyZXR1cm4gdG1wOyB9XG5cbiI7CiAgICBJTkQocyk7IHMg
PDwgImZyaWVuZCBjbGFzcyAiIDw8IChjb25zdCBjaGFyKikgb3V0X3R5cGUgPDwgIjtcblxu
IjsKICAKICAgIERFQ19JTkRFTlRfTEVWRUwoKTsKKioqKioqKioqKioqKioqCioqKiA5OTks
MTAwNiAqKioqCi0tLSAxMDAzLDEwMTYgLS0tLQogICAgSU5EKHMpOyBzIDw8ICJpbmxpbmUg
IiA8PCAoY29uc3QgY2hhciopIG91dF90eXBlIDw8ICImIG9wZXJhdG9yPShjb25zdCAiCiAg
CSAgICA8PCAoY29uc3QgY2hhciopIG91dF90eXBlIDw8ICImIHMpIHsgX2RhdGEgPSBzLl9k
YXRhOyByZXR1cm4gKnRoaXM7IH1cbiI7CiAgICBJTkQocyk7IHMgPDwgImlubGluZSAiIDw8
IChjb25zdCBjaGFyKikgb3V0X3R5cGUgPDwgIiYgb3BlcmF0b3I9KF9UKiBzKSB7IF9kYXRh
ID0gczsgcmV0dXJuICp0aGlzOyB9XG4iOworICAgcyA8PCAiI2lmbmRlZiBIQVNfUE9JTlRF
Ul9SRUZfQlVHXG4iOwogICAgSU5EKHMpOyBzIDw8ICJpbmxpbmUgb3BlcmF0b3IgX1QqJigp
IHsgcmV0dXJuIF9kYXRhOyB9XG4iOwogICAgSU5EKHMpOyBzIDw8ICJpbmxpbmUgX1QqJiBw
dHIoKSB7IHJldHVybiBfZGF0YTsgfVxuIjsKKyAgIHMgPDwgIiNlbHNlXG4iOworICAgSU5E
KHMpOyBzIDw8ICJ0eXBlZGVmIF9UKiYgUG9pbnRlclJlZjtcbiI7CisgICBJTkQocyk7IHMg
PDwgImlubGluZSBvcGVyYXRvciBQb2ludGVyUmVmKCkgeyByZXR1cm4gX2RhdGE7IH1cbiI7
CisgICBJTkQocyk7IHMgPDwgImlubGluZSBQb2ludGVyUmVmIHB0cigpIHsgcmV0dXJuIF9k
YXRhOyB9XG4iOworICAgcyA8PCAiI2VuZGlmXG4iOwogICAgSU5EKHMpOyBzIDw8ICJpbmxp
bmUgX1QqIG9wZXJhdG9yLT4oKSB7IHJldHVybiBfZGF0YTsgfVxuIjsKICAgIElORChzKTsg
cyA8PCAiaW5saW5lICIgPDwgKGNvbnN0IGNoYXIqKSBpbmRleF9yZXRfdHlwZQogIAkgICAg
PDwgIiBvcGVyYXRvciBbXSAoX0NPUkJBX1VMb25nIGkpIHsgIjsKKioqIHNyYy90b29sL29t
bmlpZGwyL29tbmlPUkIyX2JlL28yYmVfc3RydWN0LmNjCUZyaSBKdWwgMDIgMTU6MTU6MDQg
MTk5OQotLS0gbmV3c3JjL3Rvb2wvb21uaWlkbDIvb21uaU9SQjJfYmUvbzJiZV9zdHJ1Y3Qu
Y2MJTW9uIEp1bCAxMiAxNjozNTozMiAxOTk5CioqKioqKioqKioqKioqKgoqKiogMjIzLDIz
MSAqKioqCi0tLSAyMjMsMjMzIC0tLS0KICAjaWYgMAogICAgSU5EKHMpOyBzIDw8ICJ0eXBl
ZGVmICIgPDwgdXFuYW1lKCkgPDwgIl92YXIgX3Zhcl90eXBlO1xuIjsKICAjZWxzZQorICAg
cyA8PCAiI2lmbmRlZiBIQVNfUkVDVVJTSVZFX1RFTVBMQVRFX0JVR1xuIjsKICAgIElORChz
KTsgcyA8PCAidHlwZWRlZiBfQ09SQkFfQ29uc3RyVHlwZV8iCiAgCSAgICA8PCAoKGlzVmFy
aWFibGUoKSk/IlZhcmlhYmxlIjoiRml4IikKICAJICAgIDw8ICJfVmFyPCIgPDwgdXFuYW1l
KCkgPDwgIj4gX3Zhcl90eXBlO1xuIjsKKyAgIHMgPDwgIiNlbmRpZi8vSEFTX1JFQ1VSU0lW
RV9URU1QTEFURV9CVUdcbiI7CiAgI2VuZGlmCiAgCiAgICBvMmJlX25lc3RlZF90eXBlZGVm
Ojpwcm9kdWNlX2hkcihzLHRoaXMpOwoqKioqKioqKioqKioqKioKKioqIDM1MSwzNTggKioq
KgogICAgREVDX0lOREVOVF9MRVZFTCgpOwogICAgSU5EKHMpOyBzIDw8ICJ9O1xuXG4iOwog
ICNlbHNlCiAgICBJTkQocyk7IHMgPDwgInR5cGVkZWYgIiA8PCB1cW5hbWUoKSA8PCAiOjpf
dmFyX3R5cGUgIiAKISAJICAgIDw8IHVxbmFtZSgpIDw8ICJfdmFyO1xuXG4iOwogICNlbmRp
ZgogICAgSU5EKHMpOyBzIDw8ICJ0eXBlZGVmICIgPDwgb3V0X2FkcHRhcmdfbmFtZSh0aGlz
KSAgPDwgIiAiCiAgCSAgICA8PCB1cW5hbWUoKQotLS0gMzUzLDM2NiAtLS0tCiAgICBERUNf
SU5ERU5UX0xFVkVMKCk7CiAgICBJTkQocyk7IHMgPDwgIn07XG5cbiI7CiAgI2Vsc2UKKyAg
IHMgPDwgIiNpZm5kZWYgSEFTX1JFQ1VSU0lWRV9URU1QTEFURV9CVUdcbiI7CiAgICBJTkQo
cyk7IHMgPDwgInR5cGVkZWYgIiA8PCB1cW5hbWUoKSA8PCAiOjpfdmFyX3R5cGUgIiAKISAJ
ICAgIDw8IHVxbmFtZSgpIDw8ICJfdmFyO1xuIjsKISAgIHMgPDwgIiNlbHNlIC8vSEFTX1JF
Q1VSU0lWRV9URU1QTEFURV9CVUdcbiI7CiEgICBJTkQocyk7IHMgPDwgInR5cGVkZWYgX0NP
UkJBX0NvbnN0clR5cGVfIgohIAkgICAgPDwgKChpc1ZhcmlhYmxlKCkpPyJWYXJpYWJsZSI6
IkZpeCIpCiEgCSAgICA8PCAiX1ZhcjwiIDw8IHVxbmFtZSgpIDw8ICI+IiA8PCB1cW5hbWUo
KSA8PCAiX3ZhcjtcbiI7CiEgICBzIDw8ICIjZW5kaWYvL0hBU19SRUNVUlNJVkVfVEVNUExB
VEVfQlVHXG5cbiI7CiAgI2VuZGlmCiAgICBJTkQocyk7IHMgPDwgInR5cGVkZWYgIiA8PCBv
dXRfYWRwdGFyZ19uYW1lKHRoaXMpICA8PCAiICIKICAJICAgIDw8IHVxbmFtZSgpCg==
--------------A26923A3C45A24ED74BBA1AD--