[OpenAFS-devel] Compiler settings for Irix

Martin MOKREJŠ mmokrejs@natur.cuni.cz
Thu, 4 Sep 2003 18:35:35 +0200 (CEST)


  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.

--20476355-507980891-1062693335=:387877
Content-Type: TEXT/PLAIN; charset=iso-8859-2
Content-Transfer-Encoding: 8BIT

Hi,
  I had a look how those many libafs versions are generated on Irix systems
and have some thoughts:

In openafs-1.2.10-rc2/src/libafs the following happens:

BUILDPROCS="IP19 IP20 IP21 IP25 IP26 IP27 IP28 IP30 IP35" ; \
if [ "" != "" ] ; then \
        BUILDPROCS=""; \
fi ; \
for p in ${BUILDPROCS} ; do \
    for t in STATIC MODLOAD ; do \
      dir=$t.$p ; \
        echo Building directory: $dir; \
        LDFLAGS="-64"; \
        case $p in \
        IP19)   CPU_KDEFS="-DIP19 -DEVEREST -DMP -DR4000 -mips3  -D_PAGESZ=16384 -D_MIPS3_ADDRSPACE -64";; \
        IP20)   CPU_KDEFS="-DIP20 -DR4000 -DJUMP_WAR -DBADVA_WAR -DTRITON -DUSE_PCI_PIO -D_R5000_CVT_WAR=1 -DCKPT -D_MTEXT_VFS -n32 -D_P
AGESZ=4096 -mips3"; \
                LDFLAGS="-n32";; \
        IP21)   CPU_KDEFS="-DIP21 -DEVEREST -DMP -DTFP -TARG:processor=r8000 -64 -D_PAGESZ=16384 -D_MIPS3_ADDRSPACE -mips4";; \
        IP25)   CPU_KDEFS="-DIP25 -DEVEREST -DMP -DR10000 -TARG:processor=r10000 -64 -D_PAGESZ=16384 -D_MIPS3_ADDRSPACE -mips4";; \
        IP26)   CPU_KDEFS="-DIP26 -DTFP -TARG:sync=off -TARG:processor=r8000 -64 -D_PAGESZ=16384 -D_MIPS3_ADDRSPACE -mips4";; \
        IP27)   CPU_KDEFS="-DIP27 -DR10000 -DMP -DSN -DSN0 -DMAPPED_KERNEL -DLARGE_CPU_COUNT -DPTE_64BIT -DULI -DCKPT -DMIPS4_ISA -DR10K
_LLSC_WAR -DNUMA_BASE -DNUMA_PM  -DNUMA_TBORROW -DNUMA_MIGR_CONTROL -DNUMA_REPLICATION -DNUMA_REPL_CONTROL -DNUMA_SCHED -DCELL_PREPARE -
DBHV_PREPARE -TARG:processor=r10000 -64 -D_PAGESZ=16384 -D_MIPS3_ADDRSPACE -mips4";; \
        IP28)   CPU_KDEFS="-DIP28 -DR10000 -DSCACHE_SET_ASSOC=2 -D_NO_UNCACHED_MEM_WAR -DR10000_SPECULATION_WAR -TARG:processor=r10000 -
TARG:t5_no_spec_stores -64 -D_PAGESZ=16384 -D_MIPS3_ADDRSPACE -mips4";; \
        IP30)   CPU_KDEFS="-DIP30 -DR10000 -DMP -DCELL_PREPARE -DBHV_PREPARE -TARG:processor=r10000 -64 -D_PAGESZ=16384 -D_MIPS3_ADDRSPA
CE -mips4";; \
        IP35)   CPU_KDEFS="-DIP35 -DR10000 -DMP -DSN -DSN1 -DMAPPED_KERNEL -DLARGE_CPU_COUNT -DPTE_64BIT -DULI -DCKPT -DMIPS4_ISA -DNUMA
_BASE -DNUMA_PM  -DNUMA_TBORROW -DNUMA_MIGR_CONTROL -DNUMA_REPLICATION -DNUMA_REPL_CONTROL -DNUMA_SCHED -DCELL_PREPARE -DBHV_PREPARE -TA
RG:processor=r10000 -64 -D_PAGESZ=16384 -D_MIPS3_ADDRSPACE -mips4";; \
        *) echo Unknown IP number $p ; exit 1 ;; \
        esac ;\



The manpage at
http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/u_man/cat1/cc.z&srch=cc
says:

                    platform[=ipxx]
                              Identify the target SGI platform for
                              compilation, choosing the appropriate
                              internal parameters (such as cache sizes).
                              The following are the currently supported
                              values:

                                   ip19           ip20

                                   ip21           ip22_4k

                                   ip22_5k        ip24

                                   ip25           ip26

                                   ip27           ip28

                                   ip30           ip32_5k

                                   ip32_10k

                              Determine the appropriate selection for your
                              platform by using the following command:

                                        hinv -c processor

                              The first line of the output identifies the
                              proper IP number, and for those cases where a
                              processor suffix (for example, '_4k') is
                              required, the next line identifies the
                              processor (e.g. R4000)..TP



Searching through src/libafs/ for R4000, R4000PC, R4000SC, R4600,
R4600PC, R4600SC, R5000, _R4600_2_0_CACHEOP_WAR, _R4600_CACHEOP_WAR,
R8000, R10000 don't give me any hits except the Makefiles where they are
defined. I think their definitions could be removed, although they do not
harm. Am I right?

Even if they stay as they're, how about this patch? Works for me on Irix
6.5.20 on IP22 (means can load the kernel module and link statically
kernel). I just about optimizing the code properly for boards as they
support processors(so that any board has a libafs built for the slowest
CPU supported, in some cases also another libafs for faster CPU's).

Any ideas on this patch?
-- 
Martin Mokrejs <mmokrejs@natur.cuni.cz>, <m.mokrejs@gsf.de>
PGP5.0i key is at http://www.natur.cuni.cz/~mmokrejs
MIPS / Institute for Bioinformatics <http://mips.gsf.de>
GSF - National Research Center for Environment and Health
Ingolstaedter Landstrasse 1, D-85764 Neuherberg, Germany
tel.: +49-89-3187 3683 , fax: +49-89-3187 3585
--20476355-507980891-1062693335=:387877
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="MakefileProto.IRIX.in.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.OSF.4.51.0309041835350.387877@tao.natur.cuni.cz>
Content-Description: 
Content-Disposition: attachment; filename="MakefileProto.IRIX.in.patch"

LS0tIE1ha2VmaWxlUHJvdG8uSVJJWC5pbglTYXQgSnVuICA4IDA2OjQ3OjQy
IDIwMDINCisrKyBNYWtlZmlsZVByb3RvLklSSVguaW4ubmV3CVRodSBTZXAg
IDQgMTg6MzI6MjcgMjAwMw0KQEAgLTQ3LDcgKzQ3LDcgQEANCiANCiANCiAj
IFN5c3RlbSBzcGVjaWZpYyBidWlsZCBjb21tYW5kcyBhbmQgZmxhZ3MNCi1E
QlVHPS1nDQorREJVRz0tZzINCiANCiA8c2dpXzYyPg0KIE1QUz1NUCBTUA0K
QEAgLTE2NSwxMyArMTY1LDE3IEBADQogIyBXaGlsZSAtRyA4IGlzIHJlY29t
bWVuZGVkIGZvciBzcGFjZSwgd2Uga25vdyB0aGF0IHRoZSB0YWJsZSBvdmVy
Zmxvd3Mgd2hlbg0KICMgYm90aCBBRlMgYW5kIERGUyBhcmUgY29tcGlsZWQg
aW50byB0aGUga2VybmVsLiBGb3IgSXJpeCA2LjUsIGRlZmluZSBNUA0KICMg
c28gd2UgcGljayB1cCBsb2Nrcy4NCisjDQorIyBGb3IgY2MgZmxhZ3Mgc2Vl
Og0KKyMgaHR0cDovL3RlY2hwdWJzLnNnaS5jb20vbGlicmFyeS90cGwvY2dp
LWJpbi9nZXRkb2MuY2dpP2NvbGw9MDY1MCZkYj1tYW4mZm5hbWU9L3Vzci9z
aGFyZS9jYXRtYW4vdV9tYW4vY2F0MS9jYy56JnNyY2g9Y2MNCisjDQogS0RF
RlM9IC1JL3Vzci9pbmNsdWRlIC1JL3Vzci9pbmNsdWRlL3N5cyAtRFNUQVRJ
Qz1zdGF0aWMgLURBRlNfU0dJTVBfRU5WIFwNCiAJLURNUCAtRF9LRVJORUwg
LURNUF9TVFJFQU1TIC1EX01QX05FVExPQ0tTIC1ETVJTUF9BU19NUiBcDQot
CS1mdWxsd2FybiAtbm9uX3NoYXJlZCAtRyAwIFwNCisJJHtDUFVfS0RFRlN9
IC1mdWxsd2FybiAtbm9uX3NoYXJlZCAtRyAwIFwNCiAJLVRFTlY6a2VybmVs
IC1PUFQ6c3BhY2UgLU9QVDpPbGltaXQ9MCAtQ0c6dW5pcXVlX2V4aXQ9b24g
XA0KIAktVEVOVjpYPTEgLU9QVDpJRUVFX2FyaXRobWV0aWM9MSAtT1BUOnJv
dW5kb2ZmPTAgXA0KIAktT1BUOndyYXBfYXJvdW5kX3Vuc2FmZV9vcHQ9b2Zm
IFwNCi0JJHtDUFVfS0RFRlN9IC13b2ZmIDEyMDksMTE5NiwxNDk2DQorCS13
b2ZmIDEyMDksMTE5NiwxNDk2DQogIyAzMiBiaXQgc3BlY2lmaWMgZmxhZ3M6
DQogS0RFRlNfMzIgPSAtbjMyIC1EX1BBR0VTWj00MDk2IC1taXBzMw0KICMg
NjQgYml0IHNwZWNpZmljIGZsYWdzOg0KQEAgLTE3OCwzMyArMTgyLDYwIEBA
DQogS0RFRlNfNjQgPSAtNjQgLURfUEFHRVNaPTE2Mzg0IC1EX01JUFMzX0FE
RFJTUEFDRSAtbWlwczQNCiANCiAjIENQVSBib2FyZCBzcGVjaWZpYyBmbGFn
czoNCisjIFRvIGdldCBtb3JlIGhlbHAgb24gYWxsIGJvYXJkL2NwdSBjb21i
aW5hdGlvbnMgc2VlIGh0dHA6Ly9zZ2lzdHVmZi5nLWxlbmVyei5kZS9tYWNo
aW5lcy5odG1sDQorIw0KKyNJUDE5IChDaGFsbGVuZ2UgRE0vTC9YTCwgT255
eCkgQ1BVJ3MgUjQwMDAsIFI0NDAwDQogSVAxOV9LREVGUyA9IC1ESVAxOSAt
REVWRVJFU1QgLURNUCAtRFI0MDAwIFwNCi0JLW1pcHMzICAtRF9QQUdFU1o9
MTYzODQgLURfTUlQUzNfQUREUlNQQUNFIC02NA0KKwktRF9QQUdFU1o9MTYz
ODQgLURfTUlQUzNfQUREUlNQQUNFIC1UQVJHOnBsYXRmb3JtPWlwMTk6cHJv
Y2Vzc29yPXI0MDAwICQoS0RFRlNfMzIpDQorI0lQMjAgKEluZGlnbykgQ1BV
J3MgUjQwMDANCiBJUDIwX0tERUZTID0gLURJUDIwIC1EUjQwMDAgLURKVU1Q
X1dBUiAtREJBRFZBX1dBUiAtRFRSSVRPTiAtRFVTRV9QQ0lfUElPIFwNCi0J
CS1EX1I1MDAwX0NWVF9XQVI9MSAtRENLUFQgLURfTVRFWFRfVkZTICQoS0RF
RlNfMzIpDQotSVAyMV9LREVGUyA9IC1ESVAyMSAtREVWRVJFU1QgLURNUCAt
RFRGUCAtVEFSRzpwcm9jZXNzb3I9cjgwMDAgJChLREVGU182NCkNCi1JUDI1
X0tERUZTID0gLURJUDI1IC1ERVZFUkVTVCAtRE1QIC1EUjEwMDAwIC1UQVJH
OnByb2Nlc3Nvcj1yMTAwMDAgJChLREVGU182NCkNCi1JUDI2X0tERUZTID0g
LURJUDI2IC1EVEZQIC1UQVJHOnN5bmM9b2ZmIC1UQVJHOnByb2Nlc3Nvcj1y
ODAwMCAkKEtERUZTXzY0KQ0KKwkJLURfUjUwMDBfQ1ZUX1dBUj0xIC1EQ0tQ
VCAtRF9NVEVYVF9WRlMgLU9mYXN0PWlwMjAgJChLREVGU18zMikNCisjSVAy
MSAoUG93ZXIgQ2hhbGxlbmdlIERNL0wvWEwsIFBvd2VyIE9ueXgpIFI4MDAw
DQorSVAyMV9LREVGUyA9IC1ESVAyMSAtREVWRVJFU1QgLURNUCAtRFRGUCAt
VEFSRzpwcm9jZXNzb3I9cjgwMDAgLU9mYXN0PWlwMjEgJChLREVGU182NCkN
CisjSVAyMiAoSW5kaWdvIDIsIENoYWxsZW5nZSBNKSBDUFUncyBSNDAwMCwg
UjQ0MDAsIFI0NjAwIChhbmQgYnkgYnVnIGluIGhpbnYoMSkgYWxzbyBJbmR5
IElQMjQgbWFjaGluZXMgd2l0aCBSNHgwMCkNCisjIC1PZmFzdD1pcDIyXzRr
IGlzIHNhbWUgYXMgLVRBUkc6aXAyMl80ayAtTzMgLUlQQSAtT1BUOnJvdW5k
b2ZmPTM6T2xpbWl0PTA6ZGl2X3NwbGl0PW9uOmFsaWFzPXR5cGVkDQorIyB3
aGVuIC1PZmFzdCB1c2VkIG9uIElQMjQgSW5keSwgdGhlIFNUQVRJQy4qL2xp
YmFmcyouYSBjbGFpbXMgdG8gYmUgNjQtYml0IGFuZCAvZXRjL3JlZnVzZXMg
dG8gYnVpbGQgdGhlDQorIyBvYmplY3QgaW4gdGhlIGtlcm5lbC4NCitJUDIy
XzRLX0tERUZTID0gLURJUDIwIC1EUjQwMDAgLURKVU1QX1dBUiAtREJBRFZB
X1dBUiAtRFRSSVRPTiAtRFVTRV9QQ0lfUElPIFwNCisJLURfUjUwMDBfQ1ZU
X1dBUj0xIC1EQ0tQVCAtRF9NVEVYVF9WRlMgLVRBUkc6cGxhdGZvcm09aXAy
Ml80azpwcm9jZXNzb3I9cjQwMDAgJChLREVGU18zMikgDQorSVAyMl81S19L
REVGUyA9IC1ESVAyMCAtRFI0MDAwIC1ESlVNUF9XQVIgLURCQURWQV9XQVIg
LURUUklUT04gLURVU0VfUENJX1BJTyBcDQorCS1EX1I1MDAwX0NWVF9XQVI9
MSAtRENLUFQgLURfTVRFWFRfVkZTIC1UQVJHOnBsYXRmb3JtPWlwMjJfNWs6
cHJvY2Vzc29yPXI1MDAwICQoS0RFRlNfMzIpDQorI0lQMjQgKEluZHksIENo
YWxsZW5nZSBTKSBpcyByZXBvcnRlZCBieSBoaW52KDEpIGFzIElQMjIsIENQ
VSdzIFI0MDAwLCBSNDQwMCwgUjQ2MDAsIFI1MDAwDQorIyB0aGVyZWZvcmUg
c2FtZSBhcyBJUDIyDQorI0lQMjUgKFBvd2VyIENoYWxsZW5nZSBML1hMLCBQ
b3dlciBPbnl4KSBDUFUncyBSMTAwMDANCitJUDI1X0tERUZTID0gLURJUDI1
IC1ERVZFUkVTVCAtRE1QIC1EUjEwMDAwIC1PZmFzdD1pcDI1IC1UQVJHOnBy
b2Nlc3Nvcj1yMTAwMDAgJChLREVGU182NCkNCisjSVAyNiAoUG93ZXIgQ2hh
bGxlbmdlIE0sIFBvd2VyIEluZGlnbyAyKSBDUFUncyBSODAwMA0KK0lQMjZf
S0RFRlMgPSAtRElQMjYgLURURlAgLVRBUkc6c3luYz1vZmYgLU9mYXN0PWlw
MjYgLVRBUkc6cHJvY2Vzc29yPXI4MDAwICQoS0RFRlNfNjQpDQorI0lQMjcg
KE9yaWdpbiAyMDAsIE9yaWdpbiAyMDAwLCBPbnl4IDIsIE9yaWdpbiAzMDAw
KSBDUFUncyBSMTAwMDAsIFIxMjAwMA0KIElQMjdfS0RFRlMgPSAgLURJUDI3
IC1EUjEwMDAwIC1ETVAgLURTTiAtRFNOMCAtRE1BUFBFRF9LRVJORUwgXA0K
IAktRExBUkdFX0NQVV9DT1VOVCBcDQogCS1EUFRFXzY0QklUIC1EVUxJIC1E
Q0tQVCAtRE1JUFM0X0lTQSAtRFIxMEtfTExTQ19XQVIgLUROVU1BX0JBU0Ug
XA0KIAktRE5VTUFfUE0gIC1ETlVNQV9UQk9SUk9XIC1ETlVNQV9NSUdSX0NP
TlRST0wgLUROVU1BX1JFUExJQ0FUSU9OIFwNCiAJLUROVU1BX1JFUExfQ09O
VFJPTCAtRE5VTUFfU0NIRUQgLURDRUxMX1BSRVBBUkUgLURCSFZfUFJFUEFS
RSBcDQotCS1UQVJHOnByb2Nlc3Nvcj1yMTAwMDAgJChLREVGU182NCkNCisJ
LU9mYXN0PWlwMjcgLVRBUkc6cHJvY2Vzc29yPXIxMDAwMCAkKEtERUZTXzY0
KQ0KKyNJUDI4IChJbmRpZ28gMiksIENQVSdzIFIxMDAwMA0KIElQMjhfS0RF
RlMgPSAtRElQMjggLURSMTAwMDAgLURTQ0FDSEVfU0VUX0FTU09DPTIgLURf
Tk9fVU5DQUNIRURfTUVNX1dBUiBcDQotCS1EUjEwMDAwX1NQRUNVTEFUSU9O
X1dBUiAtVEFSRzpwcm9jZXNzb3I9cjEwMDAwIFwNCisJLURSMTAwMDBfU1BF
Q1VMQVRJT05fV0FSIC1PZmFzdD1pcDI4IC1UQVJHOnByb2Nlc3Nvcj1yMTAw
MDAgXA0KIAktVEFSRzp0NV9ub19zcGVjX3N0b3JlcyAkKEtERUZTXzY0KQ0K
KyNJUDMwIChPY3RhbmUgYW5kIE9jdGFuZSAyKSBDUFUncyBSMTAwMDAsIFIx
MjAwMCwgUjE0MDAwIChhbmQgYnkgYnVnIGFsc28gSW5keSBJUDI0IHdpdGgg
UjUwMDApDQogSVAzMF9LREVGUyA9IC1ESVAzMCAtRFIxMDAwMCAtRE1QIC1E
Q0VMTF9QUkVQQVJFIC1EQkhWX1BSRVBBUkUgXA0KLQktVEFSRzpwcm9jZXNz
b3I9cjEwMDAwICQoS0RFRlNfNjQpDQorCS1PZmFzdD1pcDMwIC1UQVJHOnBy
b2Nlc3Nvcj1yMTAwMDAgJChLREVGU182NCkNCisjSVAzMiAoTzIgYW5kIE8y
KykgQ1BVJ3MgUjUwMDAsIFIxMDAwMCwgUjEyMDAwDQorSVAzMl81S19LREVG
UyA9IC1ESVAyMCAtRFI0MDAwIC1ESlVNUF9XQVIgLURCQURWQV9XQVIgLURU
UklUT04gLURVU0VfUENJX1BJTyBcDQorCS1EX1BBR0VTWj0xNjM4NCAtRF9N
SVBTM19BRERSU1BBQ0UgLU9mYXN0PWlwMzJfNWsgJChLREVGU182NCkNCitJ
UDMyXzEwS19LREVGUyA9IC1ESVAyMCAtRFI0MDAwIC1ESlVNUF9XQVIgLURC
QURWQV9XQVIgLURUUklUT04gLURVU0VfUENJX1BJTyBcDQorCS1EX1BBR0VT
Wj0xNjM4NCAtRF9NSVBTM19BRERSU1BBQ0UgLU9mYXN0PWlwMzJfMTBrICQo
S0RFRlNfNjQpDQorI0lQMzUgKEZ1ZWwsIE9yaWdpbiAzMDAwKSBDUFUncyBS
MTQwMDAsIFIxNjAwMA0KIElQMzVfS0RFRlMgPSAgLURJUDM1IC1EUjEwMDAw
IC1ETVAgLURTTiAtRFNOMSAtRE1BUFBFRF9LRVJORUwgXA0KIAktRExBUkdF
X0NQVV9DT1VOVCBcDQogCS1EUFRFXzY0QklUIC1EVUxJIC1EQ0tQVCAtRE1J
UFM0X0lTQSAtRE5VTUFfQkFTRSBcDQogCS1ETlVNQV9QTSAgLUROVU1BX1RC
T1JST1cgLUROVU1BX01JR1JfQ09OVFJPTCAtRE5VTUFfUkVQTElDQVRJT04g
XA0KIAktRE5VTUFfUkVQTF9DT05UUk9MIC1ETlVNQV9TQ0hFRCAtRENFTExf
UFJFUEFSRSAtREJIVl9QUkVQQVJFIFwNCi0JLVRBUkc6cHJvY2Vzc29yPXIx
MDAwMCAkKEtERUZTXzY0KQ0KKwktT2Zhc3Q9aXAzNSAkKEtERUZTXzY0KQ0K
KyNJUDUzIChUZXpybykgQ1BVJ3MgUjE2MDAwDQogIyBMb2FkZXIgZmxhZ3MN
Ci1MREZMQUdTXzY0ID0gLTY0DQotTERGTEFHU18zMiA9IC1uMzINCitMREZM
QUdTXzY0ID0gLTY0IC1JUEENCitMREZMQUdTXzMyID0gLW4zMiAtSVBBDQog
DQogDQogPGFsbD4NCkBAIC0yMzAsNyArMjYxLDcgQEANCiA8c2dpXzY0Pg0K
IFBST0NFU1NPUlMgPSBSMTAwMDANCiA8c2dpXzY1Pg0KLVBST0NFU1NPUlMg
PSBJUDE5IElQMjAgSVAyMSBJUDI1IElQMjYgSVAyNyBJUDI4IElQMzAgQElS
SVhfQlVJTERfSVAzNUANCitQUk9DRVNTT1JTID0gSVAxOSBJUDIwIElQMjEg
SVAyMl80SyBJUDIyXzVLIElQMjUgSVAyNiBJUDI3IElQMjggSVAzMCBJUDMy
XzVLIElQMzJfMTBLIEBJUklYX0JVSUxEX0lQMzVADQogPGFsbD4NCiANCiBL
T0JKID0gU1RBVElDIE1PRExPQUQNCkBAIC0yNzksNyArMzEwLDcgQEANCiAJ
ICAgIGRvbmU7IFwNCiAJZG9uZQ0KIDxhbGw+DQotCWVjaG8gU2V0dXAgY29t
cGVsZXRlLg0KKwllY2hvIFNldHVwIGNvbXBsZXRlLg0KIA0KIA0KICMgQ29t
cGlsZSBzdGF0aWMgYW5kIG1vZGxvYWQgdmVyc2lvbnMgb2YgdGhlIGNsaWVu
dHMuDQpAQCAtMzA1LDcgKzMzNiw3IEBADQogCQkJIENQVV9LREVGUz0iJHtS
NDAwMF8zMl9LREVGU30iOyBcDQogCQkJIExERkxBR1M9IiR7UjQwMDBfMzJf
TERGTEFHU30iOzsgXA0KIAkJCVI1MDAwKSBcDQotCQkJIENQVUJPQVJEPUlQ
MzI7IFwNCisJCQkgQ1BVQk9BUkQ9SVAzMl81SzsgXA0KIAkJCSBDUFVfS0RF
RlM9IiR7UjUwMDBfS0RFRlN9IjsgXA0KIAkJCSBMREZMQUdTPSIke1I1MDAw
X0xERkxBR1N9Ijs7IFwNCiAJCQlSODAwMCkgXA0KQEAgLTMxNiw3ICszNDcs
NyBAQA0KIDxzZ2lfNjI+DQogCQkJIENQVUJPQVJEPUlQMjg7IFwNCiA8c2dp
XzYzPg0KLQkJCSBDUFVCT0FSRD1JUDMyOyBcDQorCQkJIENQVUJPQVJEPUlQ
MzJfMTBLOyBcDQogPHNnaV82ND4NCiAJCQkgQ1BVQk9BUkQ9SVAyNzsgXA0K
IDxzZ2lfNjIgc2dpXzYzIHNnaV82ND4NCkBAIC0zNDMsMTggKzM3NCwzMyBA
QA0KIAkgICAgZm9yIHQgaW4gJHtLT0JKfSA7IGRvIFwNCiAJICAgICAgZGly
PSQkdC4kJHAgOyBcDQogCSAgICAgICAgZWNobyBCdWlsZGluZyBkaXJlY3Rv
cnk6ICQkZGlyOyBcDQotCQlMREZMQUdTPSIke0xERkxBR1NfNjR9IjsgXA0K
IAkJY2FzZSAkJHAgaW4gXA0KLQkJSVAxOSkgICBDUFVfS0RFRlM9IiR7SVAx
OV9LREVGU30iOzsgXA0KKwkJSVAxOSkgICBDUFVfS0RFRlM9IiR7SVAxOV9L
REVGU30iOyBcDQorCQkJTERGTEFHUz0iJHtMREZMQUdTXzMyfSI7OyBcDQog
CQlJUDIwKSAgIENQVV9LREVGUz0iJHtJUDIwX0tERUZTfSI7IFwNCiAJCQlM
REZMQUdTPSIke0xERkxBR1NfMzJ9Ijs7IFwNCi0JCUlQMjEpICAgQ1BVX0tE
RUZTPSIke0lQMjFfS0RFRlN9Ijs7IFwNCi0JCUlQMjUpICAgQ1BVX0tERUZT
PSIke0lQMjVfS0RFRlN9Ijs7IFwNCi0JCUlQMjYpICAgQ1BVX0tERUZTPSIk
e0lQMjZfS0RFRlN9Ijs7IFwNCi0JCUlQMjcpIAlDUFVfS0RFRlM9IiR7SVAy
N19LREVGU30iOzsgXA0KLQkJSVAyOCkgICBDUFVfS0RFRlM9IiR7SVAyOF9L
REVGU30iOzsgXA0KLQkJSVAzMCkgICBDUFVfS0RFRlM9IiR7SVAzMF9LREVG
U30iOzsgXA0KLQkJSVAzNSkgICBDUFVfS0RFRlM9IiR7SVAzNV9LREVGU30i
OzsgXA0KKwkJSVAyMSkgICBDUFVfS0RFRlM9IiR7SVAyMV9LREVGU30iOyBc
DQorCQkJTERGTEFHUz0iJHtMREZMQUdTXzY0fSI7OyBcDQorCQlJUDIyXzRL
KQlDUFVfS0RFRlM9IiR7SVAyMl80S19LREVGU30iOyBcDQorCQkJTERGTEFH
Uz0iJHtMREZMQUdTXzMyfSI7OyBcDQorCQlJUDIyXzVLKQlDUFVfS0RFRlM9
IiR7SVAyMl81S19LREVGU30iOyBcDQorCQkJTERGTEFHUz0iJHtMREZMQUdT
XzMyfSI7OyBcDQorCQlJUDI1KSAgIENQVV9LREVGUz0iJHtJUDI1X0tERUZT
fSI7IFwNCisJCQlMREZMQUdTPSIke0xERkxBR1NfNjR9Ijs7IFwNCisJCUlQ
MjYpICAgQ1BVX0tERUZTPSIke0lQMjZfS0RFRlN9IjsgXA0KKwkJCUxERkxB
R1M9IiR7TERGTEFHU182NH0iOzsgXA0KKwkJSVAyNykgCUNQVV9LREVGUz0i
JHtJUDI3X0tERUZTfSI7IFwNCisJCQlMREZMQUdTPSIke0xERkxBR1NfNjR9
Ijs7IFwNCisJCUlQMjgpICAgQ1BVX0tERUZTPSIke0lQMjhfS0RFRlN9Ijsg
XA0KKwkJCUxERkxBR1M9IiR7TERGTEFHU182NH0iOzsgXA0KKwkJSVAzMCkg
ICBDUFVfS0RFRlM9IiR7SVAzMF9LREVGU30iOyBcDQorCQkJTERGTEFHUz0i
JHtMREZMQUdTXzY0fSI7OyBcDQorCQlJUDMyXzVLKQlDUFVfS0RFRlM9IiR7
SVAzMl81S19LREVGU30iOyBcDQorCQkJTERGTEFHUz0iJHtMREZMQUdTXzMy
fSI7OyBcDQorCQlJUDMyXzEwSykJQ1BVX0tERUZTPSIke0lQMzJfMTBLX0tE
RUZTfSI7IFwNCisJCQlMREZMQUdTPSIke0xERkxBR1NfNjR9Ijs7IFwNCisJ
CUlQMzUpICAgQ1BVX0tERUZTPSIke0lQMzVfS0RFRlN9IjsgXA0KKwkJCUxE
RkxBR1M9IiR7TERGTEFHU182NH0iOzsgXA0KIAkJKikgZWNobyBVbmtub3du
IElQIG51bWJlciAkJHAgOyBleGl0IDEgOzsgXA0KIAkJZXNhYyA7XA0KIAkJ
Y2FzZSAkJHQgaW4gXA0KQEAgLTQ1NiwxNCArNTAyLDcgQEANCiAjIElmIHRo
aXMgY2hhbmdlcywgYWxzbyBjaGFuZ2UgdGhlIGtkdW1wIHN5bWxpbmtzLg0K
IGluc3RhbGxfTElOS0ZJTEVTOg0KIDxzZ2lfNjU+DQotCWxuIC1mcyBsaWJh
ZnMuSVAyMC5hICAgICAgICR7REVTVERJUn0ke2Fmc2tlcm5lbGRpcn0vbGli
YWZzLklQMjIuYQ0KLQlsbiAtZnMgbGliYWZzLklQMjAuYSAgICAgICAke0RF
U1RESVJ9JHthZnNrZXJuZWxkaXJ9L2xpYmFmcy5JUDMyLmENCi0JbG4gLWZz
IGxpYmFmcy5JUDIwLm5vbmZzLmEgJHtERVNURElSfSR7YWZza2VybmVsZGly
fS9saWJhZnMuSVAyMi5ub25mcy5hDQotCWxuIC1mcyBsaWJhZnMuSVAyMC5u
b25mcy5hICR7REVTVERJUn0ke2Fmc2tlcm5lbGRpcn0vbGliYWZzLklQMzIu
bm9uZnMuYQ0KLQlsbiAtZnMgbGliYWZzLklQMjAubyAgICAgICAke0RFU1RE
SVJ9JHthZnNrZXJuZWxkaXJ9L2xpYmFmcy5JUDIyLm8NCi0JbG4gLWZzIGxp
YmFmcy5JUDIwLm8gICAgICAgJHtERVNURElSfSR7YWZza2VybmVsZGlyfS9s
aWJhZnMuSVAzMi5vDQotCWxuIC1mcyBsaWJhZnMuSVAyMC5ub25mcy5vICR7
REVTVERJUn0ke2Fmc2tlcm5lbGRpcn0vbGliYWZzLklQMjIubm9uZnMubw0K
LQlsbiAtZnMgbGliYWZzLklQMjAubm9uZnMubyAke0RFU1RESVJ9JHthZnNr
ZXJuZWxkaXJ9L2xpYmFmcy5JUDMyLm5vbmZzLm8NCisJZWNobyAiTm93IHdl
IHN1cHBvcnQgYWxzbyBJUDIyXzRLLCBJUDIyXzVLLCBJUDMyXzVLLCBJUDMy
XzEwSyBjcHUgYm9hcmRzLiINCiA8YWxsPg0KIA0KICMgQ3JlYXRlIHN5bWxp
bmtzIHRvIGNsaWVudHMgd2UgZG9uJ3QgbmVlZCB0byBidWlsZC4NCkBAIC00
NzAsMTQgKzUwOSw3IEBADQogIyBJZiB0aGlzIGNoYW5nZXMsIGFsc28gY2hh
bmdlIHRoZSBrZHVtcCBzeW1saW5rcy4NCiBkZXN0X0xJTktGSUxFUzoNCiA8
c2dpXzY1Pg0KLQlsbiAtZnMgIGxpYmFmcy5JUDIwLmEgICAgICAgJHtERVNU
fS9yb290LmNsaWVudC9iaW4vbGliYWZzLklQMjIuYQ0KLQlsbiAtZnMgIGxp
YmFmcy5JUDIwLmEgICAgICAgJHtERVNUfS9yb290LmNsaWVudC9iaW4vbGli
YWZzLklQMzIuYQ0KLQlsbiAtZnMgIGxpYmFmcy5JUDIwLm5vbmZzLmEgJHtE
RVNUfS9yb290LmNsaWVudC9iaW4vbGliYWZzLklQMjIubm9uZnMuYQ0KLQls
biAtZnMgIGxpYmFmcy5JUDIwLm5vbmZzLmEgJHtERVNUfS9yb290LmNsaWVu
dC9iaW4vbGliYWZzLklQMzIubm9uZnMuYQ0KLQlsbiAtZnMgIGxpYmFmcy5J
UDIwLm8gICAgICAgJHtERVNUfS9yb290LmNsaWVudC91c3IvdmljZS9ldGMv
c2dpbG9hZC9saWJhZnMuSVAyMi5vDQotCWxuIC1mcyAgbGliYWZzLklQMjAu
byAgICAgICAke0RFU1R9L3Jvb3QuY2xpZW50L3Vzci92aWNlL2V0Yy9zZ2ls
b2FkL2xpYmFmcy5JUDMyLm8NCi0JbG4gLWZzICBsaWJhZnMuSVAyMC5ub25m
cy5vICR7REVTVH0vcm9vdC5jbGllbnQvdXNyL3ZpY2UvZXRjL3NnaWxvYWQv
bGliYWZzLklQMjIubm9uZnMubw0KLQlsbiAtZnMgIGxpYmFmcy5JUDIwLm5v
bmZzLm8gJHtERVNUfS9yb290LmNsaWVudC91c3IvdmljZS9ldGMvc2dpbG9h
ZC9saWJhZnMuSVAzMi5ub25mcy5vDQorCWVjaG8gIk5vdyB3ZSBzdXBwb3J0
IGFsc28gSVAyMl80SywgSVAyMl81SywgSVAzMl81SywgSVAzMl8xMEsgY3B1
IGJvYXJkcy4iDQogPGFsbD4NCiANCiANCg==

--20476355-507980891-1062693335=:387877--