more aix/big-endian fixes

This commit is contained in:
TLINDEN
2013-11-18 21:48:24 +01:00
parent 88d947aed7
commit c4940b966c
20 changed files with 231 additions and 196 deletions

4
TODO
View File

@@ -1,3 +1 @@
- key exports without hash handle (like I do in the vault), aix works now so far, but -R doesnt work
checksum the same: without the handle as well.

2
configure vendored
View File

@@ -12658,7 +12658,7 @@ fi
if test -n "$bigendian"; then if test -n "$bigendian"; then
CFLAGS="$CFLAGS -D__BYTE_ORDER=__BIG_ENDIAN" CFLAGS="$CFLAGS -D__BIG_ENDIAN=1"
fi fi

View File

@@ -236,7 +236,7 @@ AC_LANG_PROGRAM([[]],[[long one= 1; exit(!(*((char *)(&one)))); ]])],
) )
if test -n "$bigendian"; then if test -n "$bigendian"; then
CFLAGS="$CFLAGS -D__BYTE_ORDER=__BIG_ENDIAN" CFLAGS="$CFLAGS -D__BIG_ENDIAN=1"
fi fi
AC_SUBST(PACKAGE_VERSION) AC_SUBST(PACKAGE_VERSION)

View File

@@ -38,7 +38,7 @@
# define htobe64 hto64be # define htobe64 hto64be
# endif # endif
# else // no sys/endian.h # else // no sys/endian.h
# if __BYTE_ORDER == __BIG_ENDIAN # ifdef __BIG_ENDIAN
# define be32toh(x) (x) # define be32toh(x) (x)
# define htobe32(x) (x) # define htobe32(x) (x)
# define be64toh(x) (x) # define be64toh(x) (x)

View File

@@ -49,13 +49,13 @@ struct _vault_t {
}; };
struct _vault_header_t { struct _vault_header_t {
byte fileid; uint8_t fileid;
uint32_t version; uint32_t version;
byte checksum[32]; byte checksum[32];
}; };
struct _vault_item_header_t { struct _vault_item_header_t {
byte type; uint8_t type;
uint32_t size; uint32_t size;
uint32_t version; uint32_t version;
byte checksum[32]; byte checksum[32];
@@ -68,7 +68,7 @@ typedef struct _vault_item_header_t vault_item_header_t;
vault_t *pcpvault_init(char *filename); vault_t *pcpvault_init(char *filename);
vault_t *pcpvault_new(char *filename, int is_tmp); vault_t *pcpvault_new(char *filename, int is_tmp);
int pcpvault_create(vault_t *vault); int pcpvault_create(vault_t *vault);
int pcpvault_additem(vault_t *vault, void *item, size_t itemsize, uint8_t type, uint8_t do_hash); int pcpvault_additem(vault_t *vault, void *item, size_t itemsize, uint8_t type);
int pcpvault_addkey(vault_t *vault, void *item, uint8_t type); int pcpvault_addkey(vault_t *vault, void *item, uint8_t type);
int pcpvault_close(vault_t *vault); int pcpvault_close(vault_t *vault);
int pcpvault_fetchall(vault_t *vault); int pcpvault_fetchall(vault_t *vault);

View File

@@ -227,6 +227,9 @@ unsigned char *pcpkey_getchecksum(pcp_key_t *k) {
pcp_key_t * key2be(pcp_key_t *k) { pcp_key_t * key2be(pcp_key_t *k) {
#ifdef __BIG_ENDIAN
return k;
#else
uint32_t version = k->version; uint32_t version = k->version;
unsigned char* p = (unsigned char*)&version; unsigned char* p = (unsigned char*)&version;
if(p[0] != 0) { if(p[0] != 0) {
@@ -235,16 +238,24 @@ pcp_key_t * key2be(pcp_key_t *k) {
k->ctime = htobe64(k->ctime); k->ctime = htobe64(k->ctime);
} }
return k; return k;
#endif
} }
pcp_key_t *key2native(pcp_key_t *k) { pcp_key_t *key2native(pcp_key_t *k) {
#ifdef __BIG_ENDIAN
return k;
#else
k->version = be32toh(k->version); k->version = be32toh(k->version);
k->serial = be32toh(k->serial); k->serial = be32toh(k->serial);
k->ctime = be64toh(k->ctime); k->ctime = be64toh(k->ctime);
return k; return k;
#endif
} }
pcp_pubkey_t * pubkey2be(pcp_pubkey_t *k) { pcp_pubkey_t * pubkey2be(pcp_pubkey_t *k) {
#ifdef __BIG_ENDIAN
return k;
#else
uint32_t version = k->version; uint32_t version = k->version;
unsigned char* p = (unsigned char*)&version; unsigned char* p = (unsigned char*)&version;
if(p[0] != 0) { if(p[0] != 0) {
@@ -253,13 +264,18 @@ pcp_pubkey_t * pubkey2be(pcp_pubkey_t *k) {
k->ctime = htobe64(k->ctime); k->ctime = htobe64(k->ctime);
} }
return k; return k;
#endif
} }
pcp_pubkey_t *pubkey2native(pcp_pubkey_t *k) { pcp_pubkey_t *pubkey2native(pcp_pubkey_t *k) {
#ifdef __BIG_ENDIAN
return k;
#else
k->version = be32toh(k->version); k->version = be32toh(k->version);
k->serial = be32toh(k->serial); k->serial = be32toh(k->serial);
k->ctime = be64toh(k->ctime); k->ctime = be64toh(k->ctime);
return k; return k;
#endif
} }
pcp_key_t *pcp_derive_pcpkey (pcp_key_t *ours, char *theirs) { pcp_key_t *pcp_derive_pcpkey (pcp_key_t *ours, char *theirs) {
@@ -312,10 +328,6 @@ pcp_key_t *pcp_derive_pcpkey (pcp_key_t *ours, char *theirs) {
void pcp_seckeyblob(void *blob, pcp_key_t *k) { void pcp_seckeyblob(void *blob, pcp_key_t *k) {
memcpy(blob, k, PCP_RAW_KEYSIZE); memcpy(blob, k, PCP_RAW_KEYSIZE);
//printf("key (%d):\n", (int)sizeof(pcp_key_t));
//pcpprint_bin(stdout, k, sizeof(pcp_key_t));printf("\n");
//printf("blob (%d):\n", (int)(PCP_RAW_KEYSIZE));
//pcpprint_bin(stdout, blob, PCP_RAW_KEYSIZE);printf("\n");
} }
void pcp_pubkeyblob(void *blob, pcp_pubkey_t *k) { void pcp_pubkeyblob(void *blob, pcp_pubkey_t *k) {

View File

@@ -128,7 +128,7 @@ int pcpvault_create(vault_t *vault) {
return 0; return 0;
} }
int pcpvault_additem(vault_t *vault, void *item, size_t itemsize, uint8_t type, uint8_t do_hash) { int pcpvault_additem(vault_t *vault, void *item, size_t itemsize, uint8_t type) {
vault_item_header_t *header = ucmalloc(sizeof(vault_item_header_t)); vault_item_header_t *header = ucmalloc(sizeof(vault_item_header_t));
header->type = type; header->type = type;
header->size = itemsize; header->size = itemsize;
@@ -136,22 +136,8 @@ int pcpvault_additem(vault_t *vault, void *item, size_t itemsize, uint8_t type,
crypto_hash_sha256((unsigned char*)header->checksum, item, itemsize); crypto_hash_sha256((unsigned char*)header->checksum, item, itemsize);
ih2be(header); ih2be(header);
void *saveitem = ucmalloc(itemsize);
memcpy(saveitem, item, itemsize);
fwrite(header, sizeof(vault_item_header_t), 1, vault->fd); fwrite(header, sizeof(vault_item_header_t), 1, vault->fd);
fwrite(saveitem, itemsize, 1, vault->fd); fwrite(item, itemsize, 1, vault->fd);
memset(saveitem, 0, itemsize);
free(saveitem);
if(do_hash == 1) {
// we don't re-hash if it's a full update
pcphash_add(item, type);
pcpvault_update_checksum(vault);
}
if(ferror(vault->fd) != 0) { if(ferror(vault->fd) != 0) {
fatal("Failed to add an item to vault %s!\n", vault->filename); fatal("Failed to add an item to vault %s!\n", vault->filename);
@@ -168,14 +154,19 @@ int pcpvault_addkey(vault_t *vault, void *item, uint8_t type) {
vault_t *tmp = pcpvault_new(vault->filename, 1); vault_t *tmp = pcpvault_new(vault->filename, 1);
size_t itemsize; size_t itemsize;
void *saveitem;
if(type == PCP_KEY_TYPE_PUBLIC) { if(type == PCP_KEY_TYPE_PUBLIC) {
pubkey2be((pcp_pubkey_t *)item);
itemsize = PCP_RAW_PUBKEYSIZE; itemsize = PCP_RAW_PUBKEYSIZE;
saveitem = ucmalloc(sizeof(pcp_pubkey_t));
memcpy(saveitem, item, sizeof(pcp_pubkey_t));
pubkey2be((pcp_pubkey_t *)item);
} }
else { else {
//pcp_dumpkey((pcp_key_t *)item);
key2be((pcp_key_t *)item);
itemsize = PCP_RAW_KEYSIZE; itemsize = PCP_RAW_KEYSIZE;
saveitem = ucmalloc(sizeof(pcp_key_t));
memcpy(saveitem, item, sizeof(pcp_key_t));
key2be((pcp_key_t *)item);
} }
void *blob = pcp_keyblob(item, type); void *blob = pcp_keyblob(item, type);
@@ -183,9 +174,12 @@ int pcpvault_addkey(vault_t *vault, void *item, uint8_t type) {
if(tmp != NULL) { if(tmp != NULL) {
if(pcpvault_copy(vault, tmp) != 0) if(pcpvault_copy(vault, tmp) != 0)
goto errak1; goto errak1;
if(pcpvault_additem(tmp, blob, itemsize, type, 1) != 0) if(pcpvault_additem(tmp, blob, itemsize, type) != 0)
goto errak1; goto errak1;
pcphash_add(saveitem, type);
pcpvault_update_checksum(tmp); pcpvault_update_checksum(tmp);
if(pcpvault_copy(tmp, vault) == 0) { if(pcpvault_copy(tmp, vault) == 0) {
pcpvault_unlink(tmp); pcpvault_unlink(tmp);
} }
@@ -217,13 +211,13 @@ int pcpvault_writeall(vault_t *vault) {
pcp_key_t *k = NULL; pcp_key_t *k = NULL;
pcphash_iterate(k) { pcphash_iterate(k) {
pcp_seckeyblob(blob_s, k); pcp_seckeyblob(blob_s, k);
if(pcpvault_additem(tmp, blob_s, PCP_RAW_KEYSIZE, PCP_KEY_TYPE_SECRET, 0) != 0) if(pcpvault_additem(tmp, blob_s, PCP_RAW_KEYSIZE, PCP_KEY_TYPE_SECRET) != 0)
goto errwa; goto errwa;
} }
pcp_pubkey_t *p = NULL; pcp_pubkey_t *p = NULL;
pcphash_iteratepub(p) { pcphash_iteratepub(p) {
pcp_pubkeyblob(blob_p, p); pcp_pubkeyblob(blob_p, p);
if(pcpvault_additem(tmp, blob_p, PCP_RAW_PUBKEYSIZE, PCP_KEY_TYPE_PUBLIC, 0) != 0) if(pcpvault_additem(tmp, blob_p, PCP_RAW_PUBKEYSIZE, PCP_KEY_TYPE_PUBLIC) != 0)
goto errwa; goto errwa;
} }
pcpvault_update_checksum(tmp); pcpvault_update_checksum(tmp);
@@ -357,25 +351,41 @@ int pcpvault_close(vault_t *vault) {
} }
vault_header_t * vh2be(vault_header_t *h) { vault_header_t * vh2be(vault_header_t *h) {
#ifdef __BIG_ENDIAN
return h;
#else
h->version = htobe32(h->version); h->version = htobe32(h->version);
return h; return h;
#endif
} }
vault_header_t * vh2native(vault_header_t *h) { vault_header_t * vh2native(vault_header_t *h) {
#ifdef __BIG_ENDIAN
return h;
#else
h->version = be32toh(h->version); h->version = be32toh(h->version);
return h; return h;
#endif
} }
vault_item_header_t * ih2be(vault_item_header_t *h) { vault_item_header_t * ih2be(vault_item_header_t *h) {
#ifdef __BIG_ENDIAN
return h;
#else
h->version = htobe32(h->version); h->version = htobe32(h->version);
h->size = htobe32(h->size); h->size = htobe32(h->size);
return h; return h;
#endif
} }
vault_item_header_t * ih2native(vault_item_header_t *h) { vault_item_header_t * ih2native(vault_item_header_t *h) {
#ifdef __BIG_ENDIAN
return h;
#else
h->version = be32toh(h->version); h->version = be32toh(h->version);
h->size = be32toh(h->size); h->size = be32toh(h->size);
return h; return h;
#endif
} }

View File

@@ -62,8 +62,6 @@ int pcp_storekey (pcp_key_t *key) {
return 1; return 1;
} }
void pcp_keygen(char *passwd, char *outfile) { void pcp_keygen(char *passwd, char *outfile) {
pcp_key_t *k = pcpkey_new (); pcp_key_t *k = pcpkey_new ();
pcp_key_t *key = NULL; pcp_key_t *key = NULL;
@@ -113,6 +111,8 @@ void pcp_keygen(char *passwd, char *outfile) {
else { else {
if(pcp_storekey(key) == 0) { if(pcp_storekey(key) == 0) {
pcpkey_printshortinfo(key); pcpkey_printshortinfo(key);
memset(key, 0, sizeof(pcp_key_t));
free(key);
} }
} }
} }
@@ -388,10 +388,12 @@ int pcp_importsecret (vault_t *vault, FILE *in) {
if(pcpvault_addkey(vault, (void *)key, PCP_KEY_TYPE_SECRET) == 0) { if(pcpvault_addkey(vault, (void *)key, PCP_KEY_TYPE_SECRET) == 0) {
fprintf(stderr, "key 0x%s added to %s.\n", key->id, vault->filename); fprintf(stderr, "key 0x%s added to %s.\n", key->id, vault->filename);
free(key);
return 0; return 0;
} }
} }
free(key);
return 1; return 1;
} }
@@ -427,10 +429,12 @@ int pcp_importpublic (vault_t *vault, FILE *in) {
if(pcp_sanitycheck_pub(pub) == 0) { if(pcp_sanitycheck_pub(pub) == 0) {
if(pcpvault_addkey(vault, (void *)pub, PCP_KEY_TYPE_PUBLIC) == 0) { if(pcpvault_addkey(vault, (void *)pub, PCP_KEY_TYPE_PUBLIC) == 0) {
fprintf(stderr, "key 0x%s added to %s.\n", pub->id, vault->filename); fprintf(stderr, "key 0x%s added to %s.\n", pub->id, vault->filename);
free(pub);
return 0; return 0;
} }
} }
free(pub);
return 1; return 1;
} }

View File

@@ -243,6 +243,9 @@ void pcpkey_print(pcp_key_t *key, FILE* out) {
void pcppubkey_print(pcp_pubkey_t *key, FILE* out) { void pcppubkey_print(pcp_pubkey_t *key, FILE* out) {
size_t zlen; size_t zlen;
//printf("version: %08x\n", key->version);
pubkey2be(key); pubkey2be(key);
void *blob = ucmalloc(PCP_RAW_PUBKEYSIZE); void *blob = ucmalloc(PCP_RAW_PUBKEYSIZE);

View File

@@ -62,6 +62,7 @@ int main (int argc, char **argv) {
usevault = 0; usevault = 0;
useid = 0; useid = 0;
userec = 0; userec = 0;
lo = 0;
static struct option longopts[] = { static struct option longopts[] = {
// generics // generics
@@ -146,7 +147,7 @@ int main (int argc, char **argv) {
break; break;
case 't': case 't':
mode += PCP_MODE_TEXT; mode += PCP_MODE_TEXT;
usevault = 1; usevault = 0;
break; break;
case 'E': case 'E':
mode += PCP_MODE_EDIT; mode += PCP_MODE_EDIT;
@@ -308,22 +309,6 @@ int main (int argc, char **argv) {
} }
break; break;
case PCP_MODE_TEXT:
if(! useid && infile == NULL) {
pcptext_vault(vault);
}
else if(infile != NULL) {
pcptext_infile(infile);
}
else {
id = pcp_normalize_id(keyid);
if(id != NULL) {
pcptext_key(id);
free(id);
}
}
break;
case PCP_MODE_EDIT: case PCP_MODE_EDIT:
if(useid) { if(useid) {
id = pcp_normalize_id(keyid); id = pcp_normalize_id(keyid);
@@ -410,6 +395,29 @@ int main (int argc, char **argv) {
pcpz85_decode(infile, outfile); pcpz85_decode(infile, outfile);
break; break;
case PCP_MODE_TEXT:
if(infile != NULL) {
pcptext_infile(infile);
}
else {
pcphash_init();
vault = pcpvault_init(vaultfile);
if(! useid && infile == NULL) {
pcptext_vault(vault);
}
else {
id = pcp_normalize_id(keyid);
if(id != NULL) {
pcptext_key(id);
free(id);
}
}
pcpvault_close(vault);
pcphash_clean();
ucfree(vaultfile);
}
break;
default: default:
// mode params mixed // mode params mixed
fatal("Sorry, invalid combination of commandline parameters!\n"); fatal("Sorry, invalid combination of commandline parameters!\n");

View File

@@ -3,33 +3,33 @@
Cipher: CURVE25519-ED25519-SALSA20-POLY1305 Cipher: CURVE25519-ED25519-SALSA20-POLY1305
Owner: Bart Owner: Bart
Mail: bart@local Mail: bart@local
Key-ID: 0x35FDF1A7B943B936 Key-ID: 0x5038DB2889942E86
Public-Key: 17f3evk3V]/UE-m.Gh?oK:5(#aXT=f=9R@>+[fE12(<@9 Public-Key: 14vvqWi-tUP2:MCB8E:$53nW3JRzzE}Ypz](ku(JC(N*A
Creation Time: 2013-11-18T17:31:54 Creation Time: 2013-11-18T21:36:22
Checksum: 92:77:7B:CA:24:2D:E7:20:CB:BF:84:84:96:85:A3:8E Checksum: 02:0C:DA:7D:8C:FC:91:BE:52:0C:6B:12:A0:52:5C:3D
FB:7C:64:7A:C2:E6:D9:A9:AB:30:BD:8F:FF:59:CD:7D BB:44:0E:C3:E5:6D:FB:EF:B1:15:45:6D:48:5B:7B:7B
Serial Number: 0x31D2B93C Serial Number: 0xD84BE474
Key Version: 0x00000004 Key Version: 0x00000004
Random Art ID: +----------------+ Random Art ID: +----------------+
| +o | | ..o.o+|
| ..+ | | . o ..=|
| o + | | + . o |
| . O | | o . |
| . = o | | o . |
| . . | | o |
| . | | |
| | | |
+----------------+ +----------------+
17f3evk3V]/UE-m.Gh?oK:5(#aXT=f=9R@>+[fE133UEVj$-tH^Y)3ll^ZAs({uEC[[thbg 14vvqWi-tUP2:MCB8E:$53nW3JRzzE}Ypz](ku(JD5eDiD(sd1g]?ntCT:EOG44zo3pCXa[
Om6um#Rvp-x[0NBo4<VnyB?PtqEm>.*KGy.8g.NMqjlFfc!/=!h:aojAUNtnS&iH!kP{3C& VuU<X[U*:0yyjnBo2T/j5?wr9GZm(O8h0^6gRj&]k/b{]]V{7hV(93Y*Z$It)]d]X3e8FOs
lFIncucEEfD3p]etIU2N1V@K%Aayj.XfzEdUW:sD=KyyeAHz73O-eft/AqHq}z@6qRkovDg *upqNGxmL+y#-Dy)b*3s8WJ<mLqou.pc{0+KwF=V<v$6wo.#@W*MYo?hc@FGZ6%3/!q4VmZ
S<uE^r(5iQOf3@m!eo[(bS{bkKv11H@{-9C8XX^o61YQIwaHymp}!4fbwUaTuWkUJiP&-Gn 1zG)iUXUlAy+Jut)6cA0a=tSR-QXy-cZhSUP2L*iEpxxS+<ru5cu4I>U.RtW%xNT08Elb0^
H]G+H+BNkF6J{E)f5R(nA&w:IE{11QfvMWF{<glU$Om2p1Q7qLva^x4Q1#G3{R4][]Go5yp n/Na-[P?m5L.-(ti}#)YdqRM66TG0iPx@KX6VU&TH1.XUCI&^Dj2W}3b4UIIl?jc0?n[1A=
g6OVOvQz0OE1uJ/sAlXl7R1QO@RgSV}2U}R@@zpTY:UoDvQTq0kX$vGvqC}TLAmdIBh(S+* ?h#kY[k}}doDp4s=IHG=^0pEUkt(.-JMh7@uGadO8]>R0vQTq0kX$vGvqC}[ugqW/o-S#M2
P7g8U*-GZgUu4PN0uA#SEPVC69U&9K{tvkY9}R9D!*W$L}EwpO!F(O4+COb5FQs&B8?cjpe kH!v[^2+vp8DkEiJx!O/o5c>2g7c<Qb&zd73mxJCIUKVu#]i1p1>Kj9Q9^Qv(1R*Tq0Ne1r
s1:p6!?XaWa1(]z@#Gf+E6I8WQg/xAmp1mUl{swb>nSiA[-MkBImmTdyX!<PzAj^(U}q{gt k:H9n<Z4Y(R8<sRJ3O&gV#AXba)8:gEZK2$}<t-0JWgWPSmT<ySa/kvARHbg}8%tz6LA&>9
$^uCf1HHngp<Q-Q@aT.[oz7?XeT][e(tf]J<^I2wR%]9)E/*aJhNb&vj/KtBB#}?l9Eg(r@ tS)?H4//j-:Q321G.Tn%^e?J/@<K^r+<KKZQ2q(zQtatOC4+V&d*2:rRMKgKRx-X!16Jb2V
.FZFIR:4s=CKilOoeQ]t]acQ}SwV0X$p)u]tF8(a#ZQI)$PbW}VGmeq(=Zr}!F<ChROz:<{ <Pz=IQC*BH>w}:@]y$33!SalNQ+e8(OXA-EAyhA5Ay3?JANnIMvskt.{KaJoNwHTHep%D2F
sBfag+wBglhax#6f*N-+iw-JUiwSL[aPIGx08!Xt}tZG}1tOunjoDXz84?l/*5I9M Dk9u)<R9q8fF+WRlnyIWixn]Kml0g9SSi2008!Y2mGrz*1LuxdBowu:IS:U=(hQ!:
------ END PCP PUBLICKEY ------ ------ END PCP PUBLICKEY ------

View File

@@ -3,33 +3,33 @@
Cipher: CURVE25519-ED25519-SALSA20-POLY1305 Cipher: CURVE25519-ED25519-SALSA20-POLY1305
Owner: Alicia Owner: Alicia
Mail: alicia@local Mail: alicia@local
Key-ID: 0xEF4731C1CBB47218 Key-ID: 0x6494DC65B785F33A
Public-Key: 1b1vJ1=xrBrOB&*FL&RuW4uxNd7W<Hl5x%?1R80OcJBbD Public-Key: 1kwxk+d&8&L4Pk&7ny7.X]d9j}297{2hc+L{3i]ViSGcW
Creation Time: 2013-11-18T17:31:53 Creation Time: 2013-11-18T21:36:21
Checksum: F2:B5:0A:52:5B:3B:67:04:D0:00:3B:F8:38:5E:7F:33 Checksum: CC:62:16:89:3E:B4:F8:DB:FD:D1:B0:27:06:8C:25:FA
7E:72:53:C4:44:03:D3:F6:BD:A2:69:69:22:F3:43:BE 37:FC:57:84:D8:CB:59:55:BF:F4:AE:C6:CE:E4:09:80
Serial Number: 0x266A8BE4 Serial Number: 0x76DDB355
Key Version: 0x00000004 Key Version: 0x00000004
Random Art ID: +----------------+ Random Art ID: +----------------+
| .. | | |
| . . | | |
| . . . . | | |
| . . .. . | | . |
|. . . oo | | o o |
|. . .o. | | o = .o.. |
|.. .. | | = ..o+ |
|. .. | | .o. .. |
+----------------+ +----------------+
1b1vJ1=xrBrOB&*FL&RuW4uxNd7W<Hl5x%?1R80OcMojQau<7x?y*ophFhXi+]!VEh+D*iP 1kwxk+d&8&L4Pk&7ny7.X]d9j}297{2hc+L{3i]Vi&8n{?]HDi}%RP9!#G%5*yUq=5h<NR-
s>z2Mv}kdC0P}Uv}/uKoY@<}Za7[!76.xC)-7@BLT?}L2?oOKdnE5LgN>AARpm+4u6y!oee &wY3(AP.&dm4=:v}/uKv?z2YZ$=n8]R0(Py2Cz1IZnP2.=l&VbG(fbPbq!Z.*ZPyJ$qHrH/
W0txq93K]EIp$=Yx}7Q<GqGJ#C&LK0PA&{WmF(93NjXu-/:1yZp1T9zW{-jzKj(o@{ADt}n IOJiR.jlSF1o]g4nq*>8Q@6rFEM&Lh8xPu&[t0.-0d!RY3$6wNU*Cj*F>*eJNoG!GQZno2?
-oZ&hy57gv%g-eNQJK/b2njI8$WzxTq<</eFm534[w{s:6rcvJ2buYRyVlo1M2z:x)4Uj&= yA}9:]n!KX!EmP%lJx)(n60+RutFaapaRE[&H31F*?(A>@I64AX92@WWA:.V2N>kLNppf#F
9L#{7G2oNTI+dm/QIvrrVbgD8LHG}=s5KZ9B&2oX/}&K^0PjJP!I%v42TrcIo<Q!$ZSbG{S CQaNG/Q$q{WLglM)fv}<f}vIe?.5nY:Y-}n3L4=+Md?C@dm35kuFrB0J=V367{:P)D5vH5z
zlShFTwpIyx1bPLe{w?]ZG=:I2>c*&J:(nvP2!?KvsJ{$vqGT/x<<nyz!0i(0eoniG?E/Wx 1Px-qPa#^Qh0S>Y{dedr*8E(7=5VY{^62z{?=.B-Gb5OLvqGT/x<<nyz!0i(0m6(9/<:&JB
{!eC^nYeq0R#13j?-P1W^FD-(u!7.wXzf{V=5x7QBC]Y+kMM}S$s7]gC4&wEIN5iRYX@)3I x1pEUA.mG7)$xhSZ7)ma?s^lj5FVVZN>{@0}A8dl!eO?R{M4y3]n.lPcsEBA+]RWIW%m)A]
Uq4n+2FdPxVB<x)qp5{5l^i<lV(:M15rSH{-x7=#:@]*ue4n96$8dUWljZ?mT*$wuPqp8C& h96}A@Ce4T7EM]a!QN2O>g6Z-^7t*1zJ$?lhI$6WR^L3BOAkVCb0H7b/:S.kRjySo:5NSGB
tFMHLW3xTD?D+6hnRu[rlGHl>8awsIj!4{$G@+T*x&@rn5{p(-:mD$b.@}lb>5e9lU1kndE dVH:W2mthYL62xa!GN]aDj.cqtKC&pOzy#MH06W-5VV>IFK)sFN-i)1B{E-UK-DFO.#*/}f
b&tUP8a+}y#Ye*I4r+D&nrD<gQsa.F]N]47i(XDsXz[BYj/nMxWe+*Vxe*$ym(9xhXqE(2A 6!Hy(aQp9dc84{.4CBeO@2jxGPDhQpNJ%#@5({NFA6rws3B5lZT/E@aYtS^]sK[v2Qd6bt5
l[9oUbHJ++mL)4Wf*^V.lp9H/gbg-*Mh*)+08!Xt}2yx{1sv(w<ob1c+bskQP8X&> 1wed6hxBIfg=WxXlPc!*h-JV:gC.q%X=qZg08!Y2mf0q/1A@RcrrBaN7iZGEK]LEZ
------ END PCP PUBLICKEY ------ ------ END PCP PUBLICKEY ------

View File

@@ -1,24 +1,24 @@
----- BEGIN PCP SECRET KEY ----- ----- BEGIN PCP SECRET KEY -----
Generated by: Pretty Curved Privacy Version 0.1.5 Generated by: Pretty Curved Privacy Version 0.1.5
Cipher: CURVE25519-ED25519-SALSA20-POLY1305 Cipher: CURVE25519-ED25519-SALSA20-POLY1305
Key-ID: 0xEF4731C1CBB47218 Key-ID: 0x6494DC65B785F33A
Creation Time: 2013-11-18T17:31:53 Creation Time: 2013-11-18T21:36:21
Serial Number: 0x6C892F90 Serial Number: 0x325C4C4A
Key Version: 0x00000004 Key Version: 0x00000004
1b1vJ1=xrBrOB&*FL&RuW4uxNd7W<Hl5x%?1R80OcJD:XSTAI(e{+Y#2k]dM4oj1gg]vb?l 1kwxk+d&8&L4Pk&7ny7.X]d9j}297{2hc+L{3i]ViSJ>d2##CpoN5e=L4X47G6SZ?D3C&OC
:dLg./3%Z0VFqfau<7x?y*ophFhXi+]!VEh+D*iPs>z2Mv}kdB]Z{$97<671ln0f77[/S.F YBS?wmaOJF#4[=?]HDi}%RP9!#G%5*yUq=5h<NR-&wY3(AP.&df77mx^t(s(oW4SM@na{7=
pS5/LHOuFnkvar/vscSSGR?<y<kN)2$Y9l{]E-?MpYTti[[{VPOAC32tb1ZsN4XHvk(%Rt/ nn>(TMyANxy<Lo<Emw{lfks9tGeIJ>..5q#3=c6smOKIb0U<tD-2{W*>uNdUJ^+)m(v6{+8
=MS=a&nPAnxB(kSYV(oI^2/u/jgm{*Wiw{(CpaWE<LP}ggYSV8Sd4JY&vlVGSpxZ?6??S^- vyDH:ULXJya{&1Kk)z/M[4oGb%$*VzhKfeqv{+Ea*1x%QE]iKX7-q5IB]0N7ydigVuI&]Lv
XoAX5#8CM*9W?oZVVrNm*SJ+RB45Qi{OdcaC/#m49&<Wduts07tv}/uKoY@<}Za7[!76.xC iL*.?)hre]d@Rq[[c&g*$tizsodvz$]ebv!lTko%51)AR2@xUmlv}/uKv?z2YZ$=n8]R0(P
)-7@BLT?}L2?oOKdnE5LgN>AARpm+4u6y!oeeW0txq93K]EIp$=Yx}7Q<GqGJ#C&LK0PA&{ y2Cz1IZnP2.=l&VbG(fbPbq!Z.*ZPyJ$qHrH/IOJiR.jlSF1o]g4nq*>8Q@6rFEM&Lh8xPu
WmF(93NjXu-/:1yZp1T9zW{-jzKj(o@{ADt}n-oZ&hy57gv%g-eNQJK/b2njI8$WzxTq<</ &[t0.-0d!RY3$6wNU*Cj*F>*eJNoG!GQZno2?yA}9:]n!KX!EmP%lJx)(n60+RutFaapaRE
eFm534[w{s:6rcvJ2buYRyVlo1M2z:x)4Uj&=9L#{7G2oNTI+dm/QIvrrVbgD8LHG}=s5KZ [&H31F*?(A>@I64AX92@WWA:.V2N>kLNppf#FCQaNG/Q$q{WLglM)fv}<f}vIe?.5nY:Y-}
9B&2oX/}&K^0PjJP!I%v42TrcIo<Q!$ZSbG{SzlShFTwpIyx1bPLe{w?]ZG=:I2>c*&J:(n n3L4=+Md?C@dm35kuFrB0J=V367{:P)D5vH5z1Px-qPa#^Qh0S>Y{dedr*8E(7=5VY{^62z
vP2!?KvsJ{$vqGT/x<<nyz!0i(0eoniG?E/Wx{!eC^nYeq0R#13j?-P1W^FD-(u!7.wXzf{ {?=.B-Gb5OLvqGT/x<<nyz!0i(0m6(9/<:&JBx1pEUA.mG7)$xhSZ7)ma?s^lj5FVVZN>{@
V=5x7QBC]Y+kMM}S$s7]gC4&wEIN5iRYX@)3IUq4n+2FdPxVB<x)qp5{5l^i<lV(:M15rSH 0}A8dl!eO?R{M4y3]n.lPcsEBA+]RWIW%m)A]h96}A@Ce4T7EM]a!QN2O>g6Z-^7t*1zJ$?
{-x7=#:@]*ue4n96$8dUWljZ?mT*$wuPqp8C&tFMHLW3xTD?D+6hnRu[rlGHl>8awsIj!4{ lhI$6WR^L3BOAkVCb0H7b/:S.kRjySo:5NSGBdVH:W2mthYL62xa!GN]aDj.cqtKC&pOzy#
$G@+T*x&@rn5{p(-:mD$b.@}lb>5e9lU1kndEb&tUP8a+}y#Ye*I4r+D&nrD<gQsa.F]N]4 MH06W-5VV>IFK)sFN-i)1B{E-UK-DFO.#*/}f6!Hy(aQp9dc84{.4CBeO@2jxGPDhQpNJ%#
7i(XDsXz[BYj/nMxWe+*Vxe*$ym(9xhXqE(2Al[9oUbHJ++mL)4Wf*^V.lp9H/gbg-*0rr9 @5({NFA6rws3B5lZT/E@aYtS^]sK[v2Qd6bt51wed6hxBIfg=WxXlPc!*h-JV:gC.q%0rr9
108!Xt}2yx{1z&]FKn]mX 108!Y2mf0q/1tTjQn=O?>
------ END PCP SECRET KEY ------ ------ END PCP SECRET KEY ------

View File

@@ -3,33 +3,33 @@
Cipher: CURVE25519-ED25519-SALSA20-POLY1305 Cipher: CURVE25519-ED25519-SALSA20-POLY1305
Owner: Bobby Owner: Bobby
Mail: bobby@local Mail: bobby@local
Key-ID: 0x189D957F63A985E8 Key-ID: 0xAAF84B782831434F
Public-Key: 13+z>XxVw^*a&DvLYnD-<jg[M5G-DUBwOJDU6O[pD&KcD Public-Key: 1co+[V0TNaBx$N]iyAE/QpW1y].?KhZ?k=:n6CL^i@/lX
Creation Time: 2013-11-18T17:31:54 Creation Time: 2013-11-18T21:36:22
Checksum: 77:8B:A7:9C:90:6C:95:90:DC:FD:B9:C4:8E:D3:23:7E Checksum: 35:D6:58:72:00:46:48:A4:39:6D:82:C2:7D:E2:D8:E1
A5:D7:98:02:F9:2F:9A:63:09:A0:C1:44:46:C5:56:E2 E5:47:0C:AF:AE:F6:C4:D1:69:A3:F0:A3:F6:12:5F:E0
Serial Number: 0x901B15B1 Serial Number: 0x900BA05E
Key Version: 0x00000004 Key Version: 0x00000004
Random Art ID: +----------------+ Random Art ID: +----------------+
| | | |
| | | |
| | | . |
| | | o |
| .. | | + . |
| .o .. | | = . ...|
| oo+.o. | | o + o. .|
| ..o+*o. | | .+.o .. |
+----------------+ +----------------+
13+z>XxVw^*a&DvLYnD-<jg[M5G-DUBwOJDU6O[pE3)l!rAiB!GFR{C:?-VCX80b.VWj*az 1co+[V0TNaBx$N]iyAE/QpW1y].?KhZ?k=:n6CL^j2.dukPSo0:0Z-ZWOCNr+B6.{B&1owE
.C79To@yq9ysWNvTd%m[9W0V{?wiU8/heU8jI#4/8vMvH[id2xc%O-(M6]SoS2c7cdoOh?t [V1bZ-][oZD#<FvTd}:-4G9RA91jTCD738L/A+G]d<PwSi/b7Z[f:$tGmS!Y&G($<#wUmg0
pf}bhmEIW<bZxXETH{ViV-@Z[#a1@ZdP*zE0Fn.F#K4+?/zleP=LH!(icX:*BH46-4=RTSh zeu?BHH9n:#E/niPb47&!eO/cze^=E?7(UEJhfySc[1%i.8mNqG#2xjgcim6@tMr+RZp1^/
&H2&eF0{g.Jrv79Y0Y[#5#OhSztR5qonJE<k%.Qv@#D*9T54$W^/vlrDtPakxfHtwZQQz)& mBlE9d93y5n]YE$GHrP]z=5]pMf=#]5@NY@W6yJ*G+Ny>%pR(p1:b*Ezo!d=%zvt]T1]$T#
)RHSPR)TdmG=b]@Kqcvm&yZ?pM/J8@m&/s)@Xwx/qA.*!NAVYo3zg0QhLOPOH>bin/qmr*4 (6=PO-RnSd4M<k4v}KjL$Og#>rRm(&]CZnSlQbb}=ONqIudARgqtoiv7dHwCe6.bdVz7ma*
+6<%{A=R3/MCA)n(iRg1t{/gHxn-mutYHm(^s3JTS?>qhvSbZ+C%Dg:v{%fNQ[qOC[yv=ae 4slrL6835izT4*ZfKR1c{44?(5WT6eZnYQAX-yQ.5xU-hvSbZ+C%Dg:v{%fNg[RLGsahQ48
SW>Zy%T$5L!P<BsQ@E&i1}1(!oSc*Ue&:8uGd-OyL^EC5{9&{ork0[*9J:7A7gJnZ)sZCC! U.012]G*{@+[UeZUQP?x:h:e)y2AINJw%CrgMUh}&f*=H/bJfJ)CgiqwB$<<$+i2h97zZ!:
2:mmb<8Eip!:mvj%3Lr*}3(so]%!u2/l?/O}@>i6f[.Y[2[I!jq5.(szqG^[JY-fT%#WIB( xaVmXlFmw)Xzh23MOa}Gs>Vwfqv()U&)K-[vkaYA+QhC{#J@xj@GmnBvl/HtmC:Ea0Nh7&5
w.1U0nbxvf)(Mjks{h$!A-ou5ZONo#dgy04Sgk/}*>}GkUo1AbcOpf1O@euz+jSdGFDBPJ$ vV5wZK(Uz](0{R)qgcaF/}b4GrInh3u4*JeLG}YEL(bw!@0FbRcAq6U30(!&1EQRffnh^XI
hJg%IJs(/DCx9NEh*lXXDZpt0a7lZDWfSArOS58=3fYqSMkmZx^QaHXlWmf}<F}2<P%h&)+ -a7#l(OwpLt?5Mxg]w81=qQzSY-PORekTdVYOCRzg@DT2mot^baTtlad/#!r*L4ZwaGYyH5
tI9LDG{b*$i5%w!h8^#.gEj2XhaoF8aPIGx08!Xt}tZG}1DTMqU(=#a4m?6wsPwB4 U.B@8dw1puk$i*<ln{>Vi5roCgC?M3f8$$L08!Y2mGrz*1DT1:uiv7:.[99!zVx+q
------ END PCP PUBLICKEY ------ ------ END PCP PUBLICKEY ------

View File

@@ -1,24 +1,24 @@
----- BEGIN PCP SECRET KEY ----- ----- BEGIN PCP SECRET KEY -----
Generated by: Pretty Curved Privacy Version 0.1.5 Generated by: Pretty Curved Privacy Version 0.1.5
Cipher: CURVE25519-ED25519-SALSA20-POLY1305 Cipher: CURVE25519-ED25519-SALSA20-POLY1305
Key-ID: 0x189D957F63A985E8 Key-ID: 0xAAF84B782831434F
Creation Time: 2013-11-18T17:31:54 Creation Time: 2013-11-18T21:36:22
Serial Number: 0x19CC2E28 Serial Number: 0x9FE8C4BE
Key Version: 0x00000004 Key Version: 0x00000004
13+z>XxVw^*a&DvLYnD-<jg[M5G-DUBwOJDU6O[pD&RPA-q<}#[VkHb<j/L+h)A^)<KpnAO 1co+[V0TNaBx$N]iyAE/QpW1y].?KhZ?k=:n6CL^i@?ngJfYLs*#>#NX$WrU(k:pmIV)H7s
^/<&tjh>FB^UHZrAiB!GFR{C:?-VCX80b.VWj*az.C79To@yq9rqKT)0e*F@MIRy!vd!313 VjRhiUCebZC*c[kPSo0:0Z-ZWOCNr+B6.{B&1owE[V1bZ-][oZw}Hb:PCUjGz1}.gR0G>XG
AQ{}sL+w(/BQ[fOvQA?s:^1PkY{HB2*LTakWDnQj]OLGflEr5tqoz?w{K*lM?&iY9*U(<Sf ZpDJSBb2y$drg4pLT9u)E/SZ9zQP3XbyqEpq%4^#PJFf/x{i9DX%31ts9Kgo}1::%2NYt8j
sx3id0r}kZ:ee?C?!?(XfPc[ZX9{$SyDg3pF]D6SpjH6MNtm0Aj=G@F*Dh29k5)o*<!=FBv wDsh&)Hk}CWHXVbL$ognZaFoz$9UPjKP^ip^YY@B@7++((FUvaqCRp>OW>hWIzM^Bk&yk%Q
*-D9c3X.@1Fiq3@+5R3p6sSr{XXm^dQFYw(z@?Hs2H8MVyup5NtvTd%m[9W0V{?wiU8/heU &bmO.fF0<hSl/]Ox:wU&MW!V:+LC04Rd)kMm?Y/(nn-K7xJy4L)vTd}:-4G9RA91jTCD738
8jI#4/8vMvH[id2xc%O-(M6]SoS2c7cdoOh?tpf}bhmEIW<bZxXETH{ViV-@Z[#a1@ZdP*z L/A+G]d<PwSi/b7Z[f:$tGmS!Y&G($<#wUmg0zeu?BHH9n:#E/niPb47&!eO/cze^=E?7(U
E0Fn.F#K4+?/zleP=LH!(icX:*BH46-4=RTSh&H2&eF0{g.Jrv79Y0Y[#5#OhSztR5qonJE EJhfySc[1%i.8mNqG#2xjgcim6@tMr+RZp1^/mBlE9d93y5n]YE$GHrP]z=5]pMf=#]5@NY
<k%.Qv@#D*9T54$W^/vlrDtPakxfHtwZQQz)&)RHSPR)TdmG=b]@Kqcvm&yZ?pM/J8@m&/s @W6yJ*G+Ny>%pR(p1:b*Ezo!d=%zvt]T1]$T#(6=PO-RnSd4M<k4v}KjL$Og#>rRm(&]CZn
)@Xwx/qA.*!NAVYo3zg0QhLOPOH>bin/qmr*4+6<%{A=R3/MCA)n(iRg1t{/gHxn-mutYHm SlQbb}=ONqIudARgqtoiv7dHwCe6.bdVz7ma*4slrL6835izT4*ZfKR1c{44?(5WT6eZnYQ
(^s3JTS?>qhvSbZ+C%Dg:v{%fNQ[qOC[yv=aeSW>Zy%T$5L!P<BsQ@E&i1}1(!oSc*Ue&:8 AX-yQ.5xU-hvSbZ+C%Dg:v{%fNg[RLGsahQ48U.012]G*{@+[UeZUQP?x:h:e)y2AINJw%C
uGd-OyL^EC5{9&{ork0[*9J:7A7gJnZ)sZCC!2:mmb<8Eip!:mvj%3Lr*}3(so]%!u2/l?/ rgMUh}&f*=H/bJfJ)CgiqwB$<<$+i2h97zZ!:xaVmXlFmw)Xzh23MOa}Gs>Vwfqv()U&)K-
O}@>i6f[.Y[2[I!jq5.(szqG^[JY-fT%#WIB(w.1U0nbxvf)(Mjks{h$!A-ou5ZONo#dgy0 [vkaYA+QhC{#J@xj@GmnBvl/HtmC:Ea0Nh7&5vV5wZK(Uz](0{R)qgcaF/}b4GrInh3u4*J
4Sgk/}*>}GkUo1AbcOpf1O@euz+jSdGFDBPJ$hJg%IJs(/DCx9NEh*lXXDZpt0a7lZDWfSA eLG}YEL(bw!@0FbRcAq6U30(!&1EQRffnh^XI-a7#l(OwpLt?5Mxg]w81=qQzSY-PORekTd
rOS58=3fYqSMkmZx^QaHXlWmf}<F}2<P%h&)+tI9LDG{b*$i5%w!h8^#.gEj2XhaoF80SSi VYOCRzg@DT2mot^baTtlad/#!r*L4ZwaGYyH5U.B@8dw1puk$i*<ln{>Vi5roCgC?M30SSi
208!Xt}tZG}1r2Aoc&:kE 208!Y2mGrz*1Fs[@Z5Ock
------ END PCP SECRET KEY ------ ------ END PCP SECRET KEY ------

View File

@@ -1,6 +1,6 @@
bartid = 0x35FDF1A7B943B936 bartid = 0x5038DB2889942E86
bartserial = 0x31D2B93C bartserial = 0xD84BE474
idbobby = 0x189D957F63A985E8 idbobby = 0xAAF84B782831434F
idalicia = 0xEF4731C1CBB47218 idalicia = 0x6494DC65B785F33A
mailbobby = bobby@local mailbobby = bobby@local
mailalicia = alicia@local mailalicia = alicia@local

View File

@@ -1,11 +1,11 @@
0%mAR2+heUb3:fpeM1rSP@.1H<lRjWVy[at0}jQlzLYZVb2M$y1UvRa!(xz/i(#Um28]HL> 1hv[h(cF<1&n-@rc/*XVY+IH!(51i<7U))yEo&jZDMdA8D)e1m6sISL{DMf&KyMPH8s<g@[
F%<K<DVYmyeeFOzddr)01{HpBK!Wh?NYu/*niZHx)ii<.Z]>@S0sDp5*lhUp$c0}}22#cFi ]GDV(qzWl(p#58zddr)0o@EjRbOZ0Q@38EAE&rI{{#gD]t@aoHg<2Vg#BF/+XJd)dV7[nHB
zFaJ0*o=(c52n26%$2Rf5f8Q>f=AcsSmZe%P<-RVZoTrAYN^ea@J}ng>kt-gJYuNn(gG98- j}AA$=N/s([uDE=3$2^>MJ6MWFNaE>PDtGZZ-7nmBP0]G/u!zSX>>B[Jyo<3.5ft%v[ocNz
M=1g.DAPT*LS&?hwpwE=fqoKmGL2Ln])Wx?fw0drgA%k$:!I{OB-^2ay%9Mta3ttLb7]ks< w]G})*Y<]fc^]<1:*Ed!qkGnXS$qd9ub<YNVE(6bASQ1mSlTQUof:9G*#rR4ckQKOgaEJVJ
bT[&<ov5qGJ2og%>*zAGPAVlf#f?zQQP:PckD{..CetX(JXmPZ@N#5^PMl<AiAj&^kQFmVh faQIXsS(7oQZ}D6=k}F)>BaR)%!^jDL7{SH.iFRc7Gif*xU$T^/MfOs[rX]Z9=PngVNOHzz
k)c+H5}1Pv{7r3wNX5CNCSG&NYCrR++YV5#JkM7D}K4N^zFrW0vqYQvy&r/(yYJ@t9S^+$H 3*T@vb5V<AQMcE0199c?0WBiu8TRAAZ7*8O.Z77G[J(aOzFrW0vqYQvy&r/(yYEx2zQJ#VL
Ymhg/NS4Qd@t%k)os*I?4(V/wxX)-D-]6tkW(Yx+-H0G>m^2PzrC]e0kIP7Y{ubv1:D&hE7 %v&aXfWCGz#(]thrn+D<07Sw1W[5v1aZWloikn9xW?:5(-kjZ.GlXDs@nbppGRLw[p.vxu[
D<{xb7UQTFjD3O7IJZ9<=N5<yuYCYQnvAnPnEIBI2LC0fO^F]}Kf{P:VvcFDO&?nT9g+f)C %l6adV9N9>xRttwp--hUz-B9pc#*Hm[Bhw7-#X<h.C6Fwqtc2g3aV6BM$JlGwFu^%0A1@p$
}}4hWKUf7dM%]OpGhhiUJi*uIT5m81U$@5pq8Fs:ZS0d81b*<lG&8{cj+lsA{q&UKG/%czl -gXDa<?G87{jk7#$jj(2@[TSm!yXQU&}2DwZiRO:#E6/J>fz.K]?UIXeG[A1P#br>kO{Lzp
q5Y)3LsH4i+27U%8-<S-r>Cs6&j[=M:yaaJ).<xfM*Y!Wad=Hu-:3+%%=]Okc3op+:yf$YE 80iQLFU!SQ<ylHY%vI4DQ&SxxXKF@*JXX?:O9<n0aRGa+R7=YFKVIlBB.hhw1yn+fiwE*N]
iV!phDlY7qh9<k.gbhf^fGg<FiwSR{B]RHx08!Xt}tZG}1w8r${xfbWIc[$GBPqyw F(#*/:q-8Rgc)=:mNPW2iyC++g^TIeWeZgb08!Y2mGrz*1Oij&zuGiy{c]Yx4GDFe

View File

@@ -1,15 +1,15 @@
0%mAR2+heUb3:fpeM1rSP@.1H<lRjWVy[at0}jQlzu8j?lUQaw(!ZIui*JUM^)W4NBE0RGH 1hv[h(cF<1&n-@rc/*XVY+IH!(51i<7U))yEo&jZDJj[XzYp6PO8.wEC+gJ!van*ViFmX&x
pmX<BELBm8(k]Xb2M$y1UvRa!(xz/i(#Um28]HL>F%<K<DVYmy5*ZzN&!hJ273Dp/M2^U+{ }]7R>4{O4sSq/XD)e1m6sISL{DMf&KyMPH8s<g@[]GDV(qzWl(hRQ=N!h$d99abeePbr?c]
AvEl{-3&l>y?vkUUaxsj)K]ox!fHvf=Wz82Ls8.:-dLHXl7&HF^HMm[T*.[ZcLxCtVE*UtH $xTx0p+9M)rhxu[{Ft3zJc?xU(iZ[ile@>^Gg/N)(%!vii?X=Aj3B(+oC$PREbK*D57YXjX
4l:Z?Vbu/fh]*eZc#Ke(a}6hoaH6X2UIWZQDFxc5TH<T{Vw@V@<*6bg(}))$5Li)!uG=z$^ Sw@9:TuP%Pf#Z(do$ptL8a!D(7{4A4KFR)r1Eb[FyEd&M7+4V!rxGGw[eftE#KK>n!!bOS$
3!HT)9mY/fCo0eW)7F1P&aFlYQeWZg6@g#OT}6T=nOuQkuI+W$$zddr)01{HpBK!Wh?NYu/ <h.R*xLACMjwT(mcyR#4Pmfo9l=?3G3pFn1vvFs-lpHEe4dO:X?zddr)0o@EjRbOZ0Q@38E
*niZHx)ii<.Z]>@S0sDp5*lhUp$c0}}22#cFizFaJ0*o=(c52n26%$2Rf5f8Q>f=AcsSmZe AE&rI{{#gD]t@aoHg<2Vg#BF/+XJd)dV7[nHBj}AA$=N/s([uDE=3$2^>MJ6MWFNaE>PDtG
%P<-RVZoTrAYN^ea@J}ng>kt-gJYuNn(gG98-M=1g.DAPT*LS&?hwpwE=fqoKmGL2Ln])Wx ZZ-7nmBP0]G/u!zSX>>B[Jyo<3.5ft%v[ocNzw]G})*Y<]fc^]<1:*Ed!qkGnXS$qd9ub<Y
?fw0drgA%k$:!I{OB-^2ay%9Mta3ttLb7]ks<bT[&<ov5qGJ2og%>*zAGPAVlf#f?zQQP:P NVE(6bASQ1mSlTQUof:9G*#rR4ckQKOgaEJVJfaQIXsS(7oQZ}D6=k}F)>BaR)%!^jDL7{S
ckD{..CetX(JXmPZ@N#5^PMl<AiAj&^kQFmVhk)c+H5}1Pv{7r3wNX5CNCSG&NYCrR++YV5 H.iFRc7Gif*xU$T^/MfOs[rX]Z9=PngVNOHzz3*T@vb5V<AQMcE0199c?0WBiu8TRAAZ7*8
#JkM7D}K4N^zFrW0vqYQvy&r/(yYJ@t9S^+$HYmhg/NS4Qd@t%k)os*I?4(V/wxX)-D-]6t O.Z77G[J(aOzFrW0vqYQvy&r/(yYEx2zQJ#VL%v&aXfWCGz#(]thrn+D<07Sw1W[5v1aZWl
kW(Yx+-H0G>m^2PzrC]e0kIP7Y{ubv1:D&hE7D<{xb7UQTFjD3O7IJZ9<=N5<yuYCYQnvAn oikn9xW?:5(-kjZ.GlXDs@nbppGRLw[p.vxu[%l6adV9N9>xRttwp--hUz-B9pc#*Hm[Bhw
PnEIBI2LC0fO^F]}Kf{P:VvcFDO&?nT9g+f)C}}4hWKUf7dM%]OpGhhiUJi*uIT5m81U$@5 7-#X<h.C6Fwqtc2g3aV6BM$JlGwFu^%0A1@p$-gXDa<?G87{jk7#$jj(2@[TSm!yXQU&}2D
pq8Fs:ZS0d81b*<lG&8{cj+lsA{q&UKG/%czlq5Y)3LsH4i+27U%8-<S-r>Cs6&j[=M:yaa wZiRO:#E6/J>fz.K]?UIXeG[A1P#br>kO{Lzp80iQLFU!SQ<ylHY%vI4DQ&SxxXKF@*JXX?
J).<xfM*Y!Wad=Hu-:3+%%=]Okc3op+:yf$YEiV!phDlY7qh9<k.gbhf^fGg<FiwSR{0SSi :O9<n0aRGa+R7=YFKVIlBB.hhw1yn+fiwE*N]F(#*/:q-8Rgc)=:mNPW2iyC++g^TIe0SSi
208!Xt}tZG}1yGFAW/uyd 208!Y2mGrz*1H$5rNG9r/

View File

@@ -1,2 +1,2 @@
0D(Fkb]T:e?{$OS6ZbBwBV?dc?.p4oNcjr@zaN]1&@I#6HjSS/1xXK+D0IUz<1j?h-9:yCe 0MpDwDG^Ver3up22umS([s}kJvJ9?Hr&.Tl3$lcj4v[$rt<p2{AA4QFn(zVp>t111{MfE<E
RN.q9Ns-^]PmhN&aoQ7ES]cYbhkYDJhSh&DT]UQ3g7Kve&2LN8]&gUABql3^GR+g75!jl =>M4H9(3Z^vKYtQ%q}XCapcW[efNF@gJd@V?qZJ?10@/4-bEnW:Zwzg^xtHLxVPRE{rV/

View File

@@ -1,3 +1,3 @@
14tWoh-0fQf*!n]g=EfAh#&{U000000000008!Xt}tZG}0EvQCs3?LOfdxS+FIz3FIQ-No= 12.$@g^<X?h9%kYhaxwTk(Z(+000000000008!Y2mGrz*0v>dGG=bZ$PTcEbuuu9g}o#Q3<
p58!l{ox)Lg]mel6-:y:{8c?gbksfO[8/r1!G5n/Akgaw>}%@v)Wg$1][S6000000000000 vFm>a}M)G(WXDIg!fAVpaD39Wrqo)Y0@MOa6QR?UDBT.x)X?$9n?Ic1onA4000000000000
000000000000000000000000000000000 000000000000000000000000000000000