Ok, seems key reset own is now working. Need to make some malicious examples next. krista-local-7-Jan-2020
authorKrista 'DarthMama' Bennett <krista@pep.foundation>
Mon, 13 Jan 2020 19:29:51 +0100
branchkrista-local-7-Jan-2020
changeset 43318204ad9be125
parent 4330 b60132b40bae
child 4333 bdff636e4648
child 4334 183a145a507b
Ok, seems key reset own is now working. Need to make some malicious examples next.
test/src/KeyResetMessageTest.cc
test/test_mails/check_reset_grouped_own_multiple_keys_multiple_idents_reset_one.eml
     1.1 --- a/test/src/KeyResetMessageTest.cc	Mon Jan 13 19:17:51 2020 +0100
     1.2 +++ b/test/src/KeyResetMessageTest.cc	Mon Jan 13 19:29:51 2020 +0100
     1.3 @@ -1151,14 +1151,20 @@
     1.4      alex_id->me = true;
     1.5      status = set_own_key(session, alex_id, pubkey1);
     1.6      ASSERT_EQ(status, PEP_STATUS_OK);
     1.7 +    status = set_identity_flags(session, alex_id2, alex_id2->flags | PEP_idf_devicegroup);
     1.8 +    ASSERT_EQ(status , PEP_STATUS_OK);
     1.9  
    1.10      alex_id2->me = true;
    1.11      status = set_own_key(session, alex_id2, pubkey2);
    1.12      ASSERT_EQ(status, PEP_STATUS_OK);
    1.13 +    status = set_identity_flags(session, alex_id2, alex_id2->flags | PEP_idf_devicegroup);
    1.14 +    ASSERT_EQ(status , PEP_STATUS_OK);
    1.15  
    1.16      alex_id3->me = true;
    1.17      status = set_own_key(session, alex_id3, pubkey3);
    1.18      ASSERT_EQ(status, PEP_STATUS_OK);
    1.19 +    status = set_identity_flags(session, alex_id2, alex_id2->flags | PEP_idf_devicegroup);
    1.20 +    ASSERT_EQ(status , PEP_STATUS_OK);
    1.21  
    1.22      status = myself(session, alex_id);
    1.23      ASSERT_EQ(status, PEP_STATUS_OK);
    1.24 @@ -1221,6 +1227,105 @@
    1.25      ASSERT_STRNE(alex_id->fpr, alex_id3->fpr);
    1.26      ASSERT_STRNE(alex_id2->fpr, alex_id3->fpr);
    1.27  
    1.28 +    ASSERT_EQ(m_queue.size(),1);
    1.29 +    if (false) {
    1.30 +        ofstream outfile;
    1.31 +        message* curr_sent_msg = m_queue.at(0);        
    1.32 +        string fname = "test_mails/check_reset_grouped_own_multiple_keys_multiple_idents_reset_one.eml";
    1.33 +        outfile.open(fname);
    1.34 +        char* msg_txt = NULL;
    1.35 +        mime_encode_message(curr_sent_msg, false, &msg_txt);
    1.36 +        outfile << msg_txt;
    1.37 +        outfile.close();        
    1.38 +        cout <<  "    const char* replkey2 = \"" << alex_id2->fpr << "\";" << endl;    
    1.39 +    }    
    1.40 +    
    1.41 +
    1.42 +    free_identity(alex_id);
    1.43 +    free_identity(alex_id2);
    1.44 +    free_identity(alex_id3);
    1.45 +}
    1.46 +
    1.47 +TEST_F(KeyResetMessageTest, check_reset_grouped_own_multiple_keys_multiple_idents_reset_one_recv) {
    1.48 +    char* pubkey1 = strdup("74D79B4496E289BD8A71B70BA8E2C4530019697D");
    1.49 +    char* pubkey2 = strdup("2E21325D202A44BFD9C607FCF095B202503B14D8");
    1.50 +    char* pubkey3 = strdup("3C1E713D8519D7F907E3142D179EAA24A216E95A");
    1.51 +    const char* replkey2 = "E08F5E0AB145AFF1DBC4D0FB49F3D5CAC8A47991";
    1.52 +          
    1.53 +    pEp_identity* alex_id = new_identity("pep.test.alexander@darthmama.org",
    1.54 +                                        NULL,
    1.55 +                                        "AlexID",
    1.56 +                                        "Alexander Braithwaite");
    1.57 +
    1.58 +    pEp_identity* alex_id2 = new_identity("pep.test.alexander6@darthmama.org",
    1.59 +                                          NULL,
    1.60 +                                          "AlexID",
    1.61 +                                          "Alexander Braithwaite");
    1.62 +
    1.63 +    pEp_identity* alex_id3 = new_identity("pep.test.alexander6a@darthmama.org",
    1.64 +                                          NULL,
    1.65 +                                          "AlexID",
    1.66 +                                          "Alexander Braithwaite");
    1.67 +
    1.68 +
    1.69 +    PEP_STATUS status = read_file_and_import_key(session, "test_keys/pub/pep.test.alexander6-0x0019697D_pub.asc");
    1.70 +    status = read_file_and_import_key(session, "test_keys/pub/pep.test.alexander6-0x503B14D8_pub.asc");
    1.71 +    status = read_file_and_import_key(session, "test_keys/pub/pep.test.alexander6-0xA216E95A_pub.asc");
    1.72 +    status = read_file_and_import_key(session, "test_keys/priv/pep.test.alexander6-0x0019697D_priv.asc");
    1.73 +    status = read_file_and_import_key(session, "test_keys/priv/pep.test.alexander6-0x503B14D8_priv.asc");
    1.74 +    status = read_file_and_import_key(session, "test_keys/priv/pep.test.alexander6-0xA216E95A_priv.asc");
    1.75 +
    1.76 +    alex_id->me = true;
    1.77 +    status = set_own_key(session, alex_id, pubkey1);
    1.78 +    ASSERT_EQ(status, PEP_STATUS_OK);
    1.79 +
    1.80 +    alex_id2->me = true;
    1.81 +    status = set_own_key(session, alex_id2, pubkey2);
    1.82 +    ASSERT_EQ(status, PEP_STATUS_OK);
    1.83 +
    1.84 +    alex_id3->me = true;
    1.85 +    status = set_own_key(session, alex_id3, pubkey3);
    1.86 +    ASSERT_EQ(status, PEP_STATUS_OK);
    1.87 +
    1.88 +    status = myself(session, alex_id);
    1.89 +    ASSERT_EQ(status, PEP_STATUS_OK);
    1.90 +    ASSERT_STREQ(pubkey1, alex_id->fpr);
    1.91 +
    1.92 +    status = myself(session, alex_id2);
    1.93 +    ASSERT_EQ(status, PEP_STATUS_OK);
    1.94 +    ASSERT_STREQ(pubkey2, alex_id2->fpr);
    1.95 +
    1.96 +    status = myself(session, alex_id3);
    1.97 +    ASSERT_EQ(status, PEP_STATUS_OK);
    1.98 +    ASSERT_STREQ(pubkey3, alex_id3->fpr);
    1.99 +
   1.100 +    message* dec_msg = NULL;
   1.101 +    stringlist_t* keylist = NULL;
   1.102 +    PEP_rating rating;
   1.103 +    PEP_decrypt_flags_t flags = 0;
   1.104 +
   1.105 +    string fname = "test_mails/check_reset_grouped_own_multiple_keys_multiple_idents_reset_one.eml";
   1.106 +    string mailstr = slurp(fname.c_str());
   1.107 +    message* new_msg = NULL;
   1.108 +    status = mime_decode_message(mailstr.c_str(), mailstr.size(), &new_msg);
   1.109 +    ASSERT_NE(new_msg, nullptr);
   1.110 +    ASSERT_EQ(status, PEP_STATUS_OK);
   1.111 +
   1.112 +    status = decrypt_message(session, new_msg, &dec_msg, &keylist, &rating, &flags);
   1.113 +    ASSERT_EQ(status, PEP_STATUS_OK);        
   1.114 +
   1.115 +    status = myself(session, alex_id);
   1.116 +    ASSERT_EQ(status, PEP_STATUS_OK);
   1.117 +    ASSERT_STREQ(pubkey1, alex_id->fpr);
   1.118 +
   1.119 +    status = myself(session, alex_id2);
   1.120 +    ASSERT_EQ(status, PEP_STATUS_OK);
   1.121 +    ASSERT_STREQ(replkey2, alex_id2->fpr);
   1.122 +
   1.123 +    status = myself(session, alex_id3);
   1.124 +    ASSERT_EQ(status, PEP_STATUS_OK);
   1.125 +    ASSERT_STREQ(pubkey3, alex_id3->fpr);
   1.126 +
   1.127      free_identity(alex_id);
   1.128      free_identity(alex_id2);
   1.129      free_identity(alex_id3);
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/test/test_mails/check_reset_grouped_own_multiple_keys_multiple_idents_reset_one.eml	Mon Jan 13 19:29:51 2020 +0100
     2.3 @@ -0,0 +1,282 @@
     2.4 +Message-ID: <pEp.Q425W5.1FHMYJDESYYS8.B98011A9-C4E5-42F4-8E58-118C1EC52B80@darthmama.org>
     2.5 +From: Alexander Braithwaite <pep.test.alexander6@darthmama.org>
     2.6 +To: Alexander Braithwaite <pep.test.alexander6@darthmama.org>
     2.7 +Subject: =?utf-8?Q?p=E2=89=A1p?=
     2.8 +X-pEp-Version: 2.1
     2.9 +MIME-Version: 1.0
    2.10 +Content-Type: multipart/encrypted; boundary="238e1f2946e87ccd3d1b58ba507ed7ab"; 
    2.11 + protocol="application/pgp-encrypted"
    2.12 +
    2.13 +--238e1f2946e87ccd3d1b58ba507ed7ab
    2.14 +Content-Type: application/pgp-encrypted
    2.15 +
    2.16 +Version: 1
    2.17 +--238e1f2946e87ccd3d1b58ba507ed7ab
    2.18 +Content-Type: application/octet-stream
    2.19 +Content-Transfer-Encoding: 7bit
    2.20 +Content-Disposition: inline; filename="msg.asc"
    2.21 +
    2.22 +-----BEGIN PGP MESSAGE-----
    2.23 +
    2.24 +wcDMA6LykRmZQFqGAQv/dfRpbFTR/YNdAysk92+KZf/o6BkV3POLaUkbC1mou/+L
    2.25 +obcqRZu9V5C/KSiIYMjZ0610/snRvkpyQLFRf+Oq1J75SZUfM015cQi/U2olNKTC
    2.26 +AgU9i+Thju4YxJQREGHi0JQghTACy4t+tGcc0oY9/uAWokc/2dblHUP8CeV51mD4
    2.27 +oXe+UG+PBFr8h0jk0N5QVF/jwodEt+cp78qRcuxEi33GOJVc5r+gzXNgZTorunue
    2.28 +DcsfgT4a+/P/Zpr2vB7Ky14Kwyp3/aHDj/wKgqc/ofDgVclTg58LNX+R5hDYt4sz
    2.29 +P4vELR/valabFnezNpZBLqb5LTD4EuT8jJjQh2UWr863Ko3Uyxeh415JwWzepKvq
    2.30 +4Lc5W/Kvcg5EwpMbxfZg9dc/Rz7mNa7t25NTr03UgzeXaWOFz0tqXykG6NUoB5JD
    2.31 +Ck7zazhfwS4w2+JWpG6X1iKtsgB6Rz1ix2Qo9ScZGS71NBenXi9T4l1TFZk1Skx0
    2.32 +mIdepd7l10wFruZPuyiIwcDMA6LykRmZQFqGAQv/W+Ij9TeOifpOvshiokljzzco
    2.33 +8SzocQQc2ig/csuAhbiOOSuNvPt+VKhEwT0L5uii90SEsuznE/zgCg3xQg91QJMu
    2.34 +a3BnOvoj3RoGp+SzJzoRxwbemKqiFKY4Emxk99KifkFSdZEnmfhjhlItyjtfL225
    2.35 +c3r3+N662WuoyYkv+yOTqZj4YqO8vBuxXJ4WuxtATD+Dd/2BnOK0eyWELoaZ6KO2
    2.36 +ARg2honjFO6HwYJvDS+uDBqYbl6PQFNAB4BoLuRJUfMtNGxTnCdFFbX0mi2gACF8
    2.37 +almSrNHANbHH8+orH6wnl2GKBgIExBN3GgWOjvnvqzqBPxUFVv5bQvPF+YoJ8w7G
    2.38 +sbdO3Oy6b8bpCIFtaow2TVKTlpP+HRPJFkaPgSi8U6FRp+uvLGkIXhaqGqw6263Z
    2.39 +QuxKKEgLXN6rcdEP/MwgsvIJz1gjrf34yrffF4sFy6cM4OsgHdEOrBkESgHg6wvA
    2.40 +Kdqmlu0RKGxP894hq4pGysEBATY+ZLcjQVzjfR090v8AAC02AXiua+1hrV0yQJAi
    2.41 +BvQ7EiYqRLCFfgUA0zXHxgqPN9pzwgum8kCokjlK1d+GTXIHpfRS1LJOyuxIIyXL
    2.42 +iPP2+SLSokzwMkEacXu9v2BME94Kd9IJEb4mrKmVWCJ8Vo6kHB14T3AeLvHjcaYC
    2.43 +HAZH1x9cXCKjdUhw0TI9yJ3QXmposHRxZU1Uc/VqS6ZFoLFLIil2+498BAsTz6B/
    2.44 +x13u46G47dK0PQdF023yFPaNWKsxjwh8xZSucnzPwFtPnOVc5/NklWBAzyeaLOHa
    2.45 +cV7jdvzfhTweoKJ2H2wesBf/vo5mf0ajwwqOovraIl5oVH28/8GYVgbzc+s2oMfF
    2.46 +tE2ycKJCDlbtaXaWC72EJn6kGfLvWK7AI/3lmmuom3kUCY2ETHtTN9TqxqRTUKW8
    2.47 +szpVpbjh4w3wiNc2WZe+IjBcgaCT6Kxpk19d2IdKG2iuOYtBk8rr7kEJ0GA4UNUo
    2.48 ++SYvrZFK8mctJF9Z6n2Bh0PY7YuUanxl27thYsFhPwviT+enKjvboRJL/S1ZHKf6
    2.49 +AFI7g9mlerGqNnIP55O+lec67/VponiTLYJTdgeVi/pr3d47XPI/JygREi8tpg11
    2.50 +xMHo8QZVTnqIIqRnJNX9AfSWM2LU7yEq6vJ3zBp+SFbIwyix3hTlWyedip3E0Gg/
    2.51 +4+cdIHwQVz4JUubH4Nz0DRKZY9m3JlYNkfBpW44RFrDuYzwRxA/poFVoZG5zLzlh
    2.52 +Rpla1U+3nt5KcyOU2vLPNcAitmmxxRCDNfI0FJ/4CuuFuAVjNcTvCHYGAErsxBQ/
    2.53 +Nq/oUnZlATbiboL9NZNofkhJukp0/5HBfjg5VhmA1ZUqBUGEh6QtwNEPiVxSKoi7
    2.54 +bA2GT/DY4jH6JUMGzg+NQzZIECWM0iPPAIDn6i8L1SjF53ljYEiG5gKWr6Eobwzb
    2.55 +bPcMPPzdW+2xz2F41qUEJv0WJgzVkBv2tI3WtmbSix6XnyBoPcA3GQejb7GgEdRP
    2.56 +pPyqXlQx/l1Q1F/TYSqmyUuXarscp5Hg7SnhzZh3VOoiifbFsKypASXkRu6iYkqs
    2.57 +l9K9folwZIEkjcQEAe7OYdJeGRoaea6yWqRoLAViRmq/9wBH83a4hFDYUrWfJFIu
    2.58 +d9pSpr6HWfoLNPL0F/9+bVMBYhP6LEZjtrl2Ni/DFVy9IB8PKzducoiGnky60oZC
    2.59 +VIYE6UaeU24pEh0N/bpi4KJ2Mer6IHQWnY4byMEJO2M8HqvfWqhutVDkfhZYroZz
    2.60 +KYjWu9HhHdwoNUyajx3KUSd4ctVR5jqQwvL6YitEYNttNoU+93sPH9B0KHTucMgM
    2.61 +qJctbSta9aUlqIWJCTJqEZ5vng7BH50N/WR9wcFrIY6X1x9MHA+dy0o9mBbo78ae
    2.62 +RLopTGUpL4l2lfAfLiuYDxXQQK1BeB12B34X0EvJy+9UWRlryq0aB+r0JuYquwQI
    2.63 +aZTap2gqNZ4nKScLEes2u7rVT8bsA+CzFfH4RVZwFCpirjneFEhAnLkQPzz1pyI4
    2.64 +mvCZhZ15WvGZc4XwKcBi1VrhNuRdK2ECmrtaNKnnP9bIHcATuWAXNNiUK88ZBdiH
    2.65 +G6zrZSksmbCox1eE5osccWhKGuWuE0sUHBKGFkqOsP1Pdh5quh21JJPsOJfxhTnx
    2.66 +UxQqhKIEzOiMbwx8cjR5PJxP7RSQZud/5gy4h01DxauPCsxjk8oSz2eFwTNUv07t
    2.67 +gzRBcGwCuBHIMH9NWL6lbVyu0VPr6tGjIdBzGUBL9XFHJvdt9dSAN4d5gvGfobhq
    2.68 +yPk5wU7Rtc55Y/Cj07i86E5edtnUPBTMQF7A0L0jwglmoFBtMZ6kxamPEpYXE/TF
    2.69 +AZFnAfaXWDs0AkF2xn+Em21VZjpBEtkCBXIegW5ZoB3yxe4r8HJd8R998z5d69VQ
    2.70 +dkH/2C9inMNnO8vegq9TWFPkZFs3rqYALLaZNRCWt2LW3sjb8QPk8eBk0HnFpkVS
    2.71 +4CHjDHuio+KOM47Rw4hd6QScCj6H8h9JOFL9voWbSiUkEzZts/7nSuhq2r0y+Fk5
    2.72 +MAQ+W6xKBqHWJ0GiI5zuNCVCD5rCMNuKYrtDQoRxAckaze/Y+SmhPE8ncZvR7RLs
    2.73 +e2oJPwZB/eWXnfm8C18443Y04G02AK5Q+f+cajjX4FWk1Taf2k5wOU5oStJD3hpO
    2.74 +R3OU1I3Zl4We1Q8V3WeGAdBTEhyw9zVlC0Ex0/+viaN1Nd1I0fg0h4D44p6VYUuB
    2.75 +Mb5k8I1sAIUR3HQfjNeDkJ0NCC4Xo+nPp9Rwg/muGUhdccb4PUJWkep0ufPAwLM3
    2.76 +5Fou95bGt+98avz6b5u84Yn0MLJ3xynrBKPxiZCDqxZW+XaStEjTY9aJeV9tCKaf
    2.77 ++Otq7mAqki9dkrvIimPSPtN0Mh+AhYyVID3E6o+mhL9RFxcuZqbwd7bwKFZMYyIC
    2.78 +8TYvMgdk7W+ZqrQ8Vf4hJoXD2Nwy8HPdbrsGNGB9mXijcc8CncfKVGxaQswIeBem
    2.79 +Es9+EbXgl50gsVrUr6ReUDIztlagNRs+byb8OIkmj3iYVA1eTlS2z2/5voGDfL/w
    2.80 +O8gFtFhDy9x6+zg5rcFtxn+scZ5XGm0NQC7kEmUNG/tmRnCqNJS+BWevzyJnGUOf
    2.81 +zBd369q8Uo4sgckhouJZLezEFfOrMBnxiiak+9kxmYnLQTXoNXwBEQdy63j4fjpu
    2.82 +yI87GoBrC1YacoEQ/UCFfC24kAlykFgZGQiLr0ISDm2c5lBYv66gn8yqwzwDVgJ/
    2.83 +pw5VfeO4w1mNlvu0Oi4xYFt+GMj9ZayoDhhsxF/f73RL3GMJ8jWO0uXrLwb4rCNZ
    2.84 +1WruKfDMrak8CHMX98c5fgvOMZY5H9JbV3+tV4BAUaYMc/vOzP+t/y1MsXmUxL5H
    2.85 +pA9sMX8iXSh3TqRDn8uDklWeSmz//vclifp/XDCa7sJ5OiqktybyeS2IvlNojcGl
    2.86 +ZiUddeaQ+g8cNqCtek4tWrF/uHaE+DiPILyvdfFBHUErjrajrjJmk/SN68vQSBUU
    2.87 +LWeGjHgDT8CCgLlGD/HKNyXqQv9pT36jjkp2r3Gw38Ktquj82NCykQTikXuaKB4J
    2.88 +c7cj8GY39Ra3yWUZyc59qY/AWRhFgfQF4hGlSzRZe6c6koxKc8H1UzhQqLcS2X11
    2.89 +Slt6vJ4wur/HY47Pym0ohs54aPWW9Zjhq6pyrkfMtnHvE4EzVURr+f66WLBZhkh2
    2.90 +UhQ8atuEWY4izwchOk8JXLBCXIdEvSg50NzULbUi4m4PMCiyNRcunYIFuHAKEfVP
    2.91 +dphx4NLiuZty23n53tjZCciSW5WXIwGfYD4m8OivytzWlM+KMXx7DYA+itu2KZ8D
    2.92 +ztCOLZ5k/iyA/Rj75+O+1RqW2Rv7rV+V0UzP3tD48viZjLldQrS0HE7o14AWmgGx
    2.93 +1NNm3i37P6T3XedNQGJbyqt1te+fcAAjsevFIuOZWHqCixQunwdUQWm1DrOlpUhv
    2.94 +utJolSzf6bMbNOTeCWZXWJsGR6NIPiZ59wu5EwN/yuqN8JCKznPyqCAn+V+GY1cO
    2.95 +cq5/8PvDPQEluJUKc81h1nBCMgS1+pjHNgn9KZFWwRi7SsQ2P6ZcsrfCuOwbyl6T
    2.96 +48Ru6dbNJNSW2vHJB/dwiBpiAs7T4kUEW4lg7xR91bB1WEjaAytW/K8NhKsEtGx3
    2.97 +avboIJYl2vCWXPVRPbPReg2tNOD0YaCqd8RUnfgPa3Usj0NAn6F8QmkqQlG6I/0Y
    2.98 +RDCLmRwCWhfV7WduqX54OWxoXpV8ODaLyo4mhgYakMi3tj6BP06BZrLVii4N5vKb
    2.99 +zkjfdTTdxNRgA+zihyNK363WKjdjf9NsG4u/opuO8gMuq2KqY+ndx0Mqduhcn8P8
   2.100 +gLebu9Z5Dx8rsmSS34MbJN2hgWP0BPpXlZ19sgmYp6dylh8Q+oJD7raOIKGB6G8E
   2.101 +t44WmCuPO1IsTrTg6/sh3d+JBC51ttqcAexiYvP7AcfDTZQ/sBEfYMdlzWez1xH2
   2.102 +t1p1D1+4LKOOa/At4VbDO0Qs2xAWDvR1Amk+JQzoVrmZvVTLkaamiiHWp1jBewgu
   2.103 +L9XaRdbL8Wv6Cs6n0+NIcidRtPyL4Zx8kmrBRcn26WlXmqZgvomTxliUhH4O8+e7
   2.104 +Em0CGr+ljsUkXFvGgS0kShroqmazKVocGTOx1StHMC9cz+3rsRp5UriZUrC6I3ui
   2.105 +hU3eQBkUd47Lnuk3W+/7YIfYjfMtOcQRd67cThuPJoaA3MHpwWiZHc14DHxiAiB2
   2.106 +XIclsaoZT5TP/GVgJJLaFWfYGgxFAtmNVfwQu/YasD6fSKNOHA5141dBma3vMCKO
   2.107 +GRDNytgZlnteUqyg7VlYKxtoVbswx1O/5VacUvEzXzwUu1YO+J8L2/592/77ZKKc
   2.108 +pNREv9SKQho+N4ODmlYxmMPoB+T5COlhw5NWgR4ECG8PeLj3To3lZ1zJYRfAk90B
   2.109 +f/d+UyPYqCfhvnzBYSUMOSFjjaQPcj2r1A3W+XY/39Fr7YixTwOQ9x7AeE2sN9gS
   2.110 +pBtCVHN5vChZXcqmBmUqJwOPJZtTzKV8ydivX8kidOISnan4B8Veeg1irWL6BcsO
   2.111 +7VcBobaHZBazbNQeigMrGm/Hkb+0qgDYqPui4Sf5Q69OwitK35xEcIytTFtrS1wk
   2.112 +VXB9ruiZWSQnXOwyOAG7ePW/Mk6AlYjqE+9xnAc+jL5k0/b14bTw9CK0Ji6FXgkH
   2.113 +JUcf5CVsSnO/Lat2p+2wbO9Np5RPqWmMu/avBBma7C1e5MaM5BmxXA9NRz20X1Ub
   2.114 +/vXXKk6FmlVrGH8pqY5WBktvjiWGSETWDeC16f4UN/wwrH3hnvh84sx0piQQJe9w
   2.115 +sKp4GnRi+e944hoSgeZTqkuAg2iCm6lSEnpFBMVK1WrDfC2A9zUfDPBQIN6+Sl6q
   2.116 +k6HWjwns3h0KjvOvK36y0WUyr9a9owb7l0I8z0hpSkd10lPOormJ9czzL3H8T8pH
   2.117 +qtbUGzMsUB/sHHcO1p9Niv6VUGWA32T4qLTtbFZhTznn9R4GSx10TPt3zWIh1GB5
   2.118 +EKGTkwbSBas4wYra1MQWqxG4ZmzTLajlhTYcDgkzSJRS537c9mdMHVUa2Cvhp7Rf
   2.119 +jYuS7ywEB9W+28EYfXR2A6EjoJSl4cgpZuSfAPmiUyY3Kuq4hXlOngR+Twymgs4t
   2.120 +ZjIRXnnjOQpFvuO79y6MA/QaydhSlmmPnlop5ogE8cVvIwPzUko2Gfk2PmlYZ9Uy
   2.121 +uvGN81RSsZ6Ahpzw3N2knm+1a5rwAIUVRNH/qcJiqbq7VF1hs8wFO5h7QWgO16+S
   2.122 +N8gJw2XvCP7zqOdqwJ8oz1Kqbgz/YPg9uaPJPmBoaJy9yDePFmmVKc+DBf323rej
   2.123 ++mKX5nUtEjFDFT/2PnjSkxxjtdsFG+DPufU9y8JeZMpx0wILIPPBY6kA8+zTRcWe
   2.124 +rS1zFJByc8UCLHVuQO1ac7o9BwM6T1JGh5crHx3/0m0R/Ss5i7DpUKMTJUdjDGyq
   2.125 +FPDLme91VDfubANZFgK+2OSIz1Pskc6AOK0mQaZTNW8jHU3f73IY5KeNa9qFUEEa
   2.126 +dpWmd63xkqagskvVWqGPadKW9zQ0XdILkBLNg/LS0k8DZIm8xPjYBhmgMOzo1Pnb
   2.127 +vMfaRCuxvjEg6SU3RagCCfjbvE4OkWERNgrCYDVAvCHZmpoqU8e3sS7Ww06d2lte
   2.128 +5CagdkoS5ltEy8ZGwe46DDL29NJ3a+IYOzLyHTG44Yl4Af6gXqtOblnFAkMGJAEG
   2.129 +fj98A8jBIgKhEG9iu5lZ8nzg+2JP2QPct5q7iBr4WcdxPZecJuhqwhLFafxjvsJM
   2.130 +2CIehfeQaN1GC3Z+5gwlJpTKzwplg4bUsAPOROw/mIqdZY8Mh5yqThkKkEw/vBjh
   2.131 +uQeOCxhvNsIQCwrS7yVXkNfJgbtgGPnHUzNFm9cVtO8KOWseX8+j6bK2oaxfgPpg
   2.132 +rc0sqHu/6GYf/fFoFPBqN+4qzVo99rsf+ImjA1Yq/3sgCEd/oc3nppktnMZPpXxQ
   2.133 +h10/omYpFL2eXm1uaNliMJUY0EikUavn9ybft4DrVORs0wZFNSLUKTAjDwQIj8VR
   2.134 +a+Xr3RIQTxc+7TikDH3DBItgl5UIzo4EhjMGC5wOItZwav8JMJSIAam+i805p+yL
   2.135 +73p+sbsURxva0ghfmc+mJjKEQ/BHCy2Y7/YSEas05LZ7AYgI2nAxvWLlSkMt1hj0
   2.136 +g7m9kSakK2UxqOkWlrIZYCkilMfK76WG2oMW+KgQ81p3k3xys3tkix0+bA7PKWHL
   2.137 +cprj3YyyIezyrSkOGDwmS7+3sF6bRFmQ7AC2+MvrYfmudQrKnqNFoelBEMYPTbXs
   2.138 +JDq6PAbErYRGKGicAG2rRanOruN1xddqqF/GLYWNLQiM9o/DDXqrUVKVxTaGzlW7
   2.139 +MOkzVOt6xg+wCNhJpzpsEKTBBl3LPYgK7XVaOvvN4KozaFtdtgaqr/oVVdryHxyG
   2.140 +zWDeElhDlJWPjnRe/Y3InDuK8ciEhNWKd1Ta6+EL4c9MAy7UgMVkauM9icWmji7P
   2.141 +U4fSYQYtZ8FiolvOxVHK2JNgPzNN/Z1D4FzgcBa4zrSn+pkz0DbwXACMlP9ywEXF
   2.142 +pT5DNM/fESkgMvPBRSbjvcXsmblZkNKN3bSttoFMClKSIMrtA7sJuH1mM/fwlXQ0
   2.143 +IJMjEzpfOGGm79KfmRpMSY5eIDxeJQNubCh7J+m3d7PoQ0jVQtiWYDyonG9pMrRs
   2.144 +SthsPAMbbcuDOSAMUcCb1qZCnialMCHAMqemsXM8N4XJ9tbxb5tT/7KusmwD4dfN
   2.145 +tcD9dFTTeGV9tLFviGj+9mOo/60+ANN2DMvxbGoPnFBoSjJe4vvOyBFENvT8yrcO
   2.146 +r/TS57YnOhmSOUB15e0RMEyoUtbZ1ZI6rNGINdqyZCjCMv3olDXDiEp4fZwPD/aO
   2.147 +5XJ52e7UWIWeixtrr4OjG61FTxamzHMbrEYNcA5YsNTmV7IhVb43NblYme/D4j+T
   2.148 +ZoZPqb9OImuvGqIUxrXaqWO5NPVimrUVv74iQuSXGwvbKnbovMbqs4yiOaQK5fpQ
   2.149 +nVW22fJ6x48Ie7XhawyBbnxRUS8E6pvXx/PWxxeYkMq1nhZqjlfqXGfKyz9mI/yL
   2.150 +GS7/9Nt/o1Etau2hXEoWNE+zL+Z4emZPlTCa5zyRYvUfeMfmIEomMtX9DP0JHVtX
   2.151 ++405C1YjngBqO26xyxmmb5+trGExHiDuw76SiwtIyRAq461nIqx7WrP0FS0eJgHK
   2.152 +o38bZK+VkxCWz+sRe8dYP38hLjQ2h4p3T8pnxjZjE+kzmQCvWI7Y5DHQ+/zCNMWw
   2.153 +KbYLo/hr/RNayMiNI7UoAXmY2gNnTARLq1/qzdojoQMNGiIBOpH74QCFJQLFYHjN
   2.154 +xFXeovaFD2AlihgmT+PxLipuxg2D9azSfCmiMRjv+vHvGUS/86dh/lhZINJ/4fJi
   2.155 +MuxAbffbmiVTdxB6s9FJLHappjetiy9Gsy3XmCmCptLor6fL5sEEdn80Z3rzQCIN
   2.156 +0BHXzmkCv/zzm9y7my0XJN82bSLzb+t+wHPJNWgHapKa6tJFLZjJeVyphdsmmo59
   2.157 +wSDZ2hNq5KA3LjFzuOpCc1kqCGrkIy7GtS+DGOq8Zf0TLO+pPRJ57Q1J3ZVxQC1V
   2.158 +8wuQ8sxgROfgxHjfevnCNsQS5IyDRpVUjYY5NO2uPP/jVu86+1TwQOryiSl3Wq1B
   2.159 +Ssb0a1SmK3gvhJovmw5eODzH75NVnDjgbkR3Ckc8li1tr54A/QjA1LuzKYGkERuH
   2.160 +BGHIIKzswJtFYHcif2A4qnUSosCXNmCFIx8TW4DdX+m8GJgjcYL/z9zg4/m9A3Xq
   2.161 +cUBhPzBPrWGs5DFPPMTw3vM8qkGLDczgTRcgArM8VMmFJyF9cAHN1N+Qd1mewHfU
   2.162 +3alaw2ntzGj2V2MYR/mIq2nA+MgYf4pif0KFH2t9npRYOevNgRWSvokXwzQtFvO5
   2.163 +sK8O5lmPUzw1CCteqviBRxjG9ptWfzADo0F+FeH1YqAk9vIfTBXP7tiLO/Gy6aPg
   2.164 +dmUdn2KH/4sRlrh5PrGZYKhZf7O2fYu1376fJA5wR8hV6nHcE53XteO5Pnpx6hZP
   2.165 +PU9D3+39QTaLTwsgOBfIr+7hWHGrx8nqBjS51YPajdBObbakkb8Fq/OgzuXq67Bn
   2.166 +kq1nCCn/mOy/3bYHVJQLElyKR9KqrPfD68QdQ6lcz/RjQsT0KTEI1HzYChNP3BV8
   2.167 +7ZfqnXSt0L0Fbqc6jTWfkFgcjHx7jxAexYFWAWAYmgsjnIOfEx6uzB9vZUOaCXWI
   2.168 +k8uQ8RUJsSIbObHkFExVRyPgW42OAHaLoangl2fq139r3fC/5UBAnxTcon/70ncs
   2.169 +mmDQTMrxXbmWKfrJxYAtP/1pgjJhv+DqIYyw3ZOyeVAVbMIy9z2IHwsa2zCumj8i
   2.170 +P+1aZUYgxMAbhCWdgR1uVQhJMm1zqtHQmk+ESYzm0/gvjDBHNjDcj4OH5qFZVyDq
   2.171 +Am1q+Mj+82kq7jgnzjrpldocrsMrL2EcZa/qBS7xlq1VIw/mnxAp3eWJCPn/Q/7W
   2.172 +/FDY4IVZ4nuWeqhfQZ4lO9kHHqWZfc7MS5milMiIayAXVoxibJfXGI05ZwA/W+FC
   2.173 +f3K/qYKzJp9PI8GZgLAVX6NavFNWFvgJlOTY//z07Y+bWDHXmNCzqLKkMWMrgb6E
   2.174 +0Nx+1Q8NAZ4XpXtVvdEwYLoBV/djTjMIg7SaKIPZg/r6FHd7BWmOhU/fCxjFi9lo
   2.175 +Ty/QJ/eRIm7fSkPppeiOeM52T6xedCFOWmAph8H6rzIfSZpbiocgbQYtlfTjIpll
   2.176 +Sas6+NgInk1U+ouQTn4Jkl9B31aqeKrzZ+NQvPc6WZ6SHdKFmaHEcmZSlQ6oEh+C
   2.177 +9HtBtwJvZz1+0sEhGINVgDvNq2B45+xT/5b9P6HomUP5P4KnJz4qIBHbwC6hw4ca
   2.178 +sCN3L/h5dyH9x2IH9AUXHBOLyhxPQmY8fUS8JOc/PZ3f79CSyNgbnWhPQcL9KWIF
   2.179 +dKEQ3LttAq3UF+0b9qfDj0eP9qtbfZpSPOfbMQwt+BddknGkdgUmnHCgc3y2ZqO3
   2.180 +axDawwwdoTS7bc1k9ToRMd4Tbxho19U/bBWJ/HTgyyQfpsoq39vGDRMFYKWFoFuO
   2.181 +kFsPiNdqlVV79kpg86PNEA0Z1xknYfugEkYsjLkGIbiWL+L2G85pbUCXb+Tuc4bW
   2.182 +vszwvWXpQ6VBXSWqWL5LaNXKXpG3k8j4fke/ILIB0SZBIBtTG0e2iEA1/TMMsqFK
   2.183 +T4W7jY0k/5avfl38EK0AnuCfoRNvs68avGA/mX1mu8flvir78Rakbiwb8Ws+RFvZ
   2.184 +CBSk7vxQjbvWx8pBgk2mZ+4vrY5FTuQ9F9J42Q5sP9ecmgTPiXVYCg9cbnVXLFVD
   2.185 +f+LC7mbpwIe0BJGrCEpaGQxWeUsnpFR8817pv1zArtXI9EtazVlxXqklwcWiVua0
   2.186 +EXUwsdJkCQhLMXHE/8MhidHrSNARWJTcSgCMzMDXDVIRvfcvZKLwttBNHHJ2kcbr
   2.187 +ekJf1GQpRAXLI1PneLK7VkZ7GJCjxTishNUhgGuLRrstT5V/2iWyYA7ZBvvynDsh
   2.188 +32wr2v+a+Ipa5DlZG2XAXOecKUZuQyZt9o4sHwp1GTlO/7POYcqr9CwXKO2S1rfD
   2.189 +s2939dcoOGrEZJ5aA8V9r1e26HPSw3UEM/IGCtDG/qw4mDPm+yDBM8DC4BYK7Mne
   2.190 +s7lkbfNvG2PSkM7Cmvc+T58gZKAYoV54ELflXD8gEjGf0U14/dgAM0kY05clNCqT
   2.191 +BN2St96MtXfio9fQrlRq9z1gj5igTmtlxwc+sx5PrPVzug9v2S9Du7/JpddelWQO
   2.192 +G5S9vkcCmtFUnyCtzOHhjquxEsD889h3WydyNOgu5yrolP+cgtJ3U/iOH07Q+9Hb
   2.193 +snbnRsjjkiq/ztj6e40SMSfLB0L0+1Ozv1yAaiHk+Wl/8D0D0iBZ4ba2vr6wxLgC
   2.194 +WPUAb0vR0UgaH3+gAhex8xvWDNlW+yeHmMNyB+5B2jokjx5/u1ll39/YUqPZF5jS
   2.195 +vBHnzBrTv3kXXZ0NsjuhcbbUv/6N/8SSkTOJO40dvLUOIBdyz23XCV8lc9xDENqW
   2.196 +yo+Sek77WTiX/cGn4WXC3tO7UFihaf5xonEI4h7tVmGIFodYKBKqfdwNp0i8dpg/
   2.197 +YO7XD5jPKAuseawvYVyoJ7RJKFwqXfrGDFJ3LI8COanxOkYb486ONP24oAptofif
   2.198 +2yiRXIl8OmpQNRDlcNsPajkX2lpU8nwF/ggIFpgu7kNFYX6C2WUicCdr5s5LrHLw
   2.199 +n/KCtzW4KfbGY/7M6LUf4o9C31aoIgRkl+BBg/vOVW9vWSPtWsQqJN54nCDT8xbL
   2.200 +XHFphlMdDI8NkflTWmT/7+njS/Jk1ewXyh2qJ4+gDFsYGC/+qrVYlrQ71tKe26pL
   2.201 +vOAAiPAjfElWroxPccbFKd+2dI2lH89J01IVIDWKKOXJr4PZxoTjP99BWV4boE1h
   2.202 +l4h/ehCSM6crChC+nUUveit9Aj+W82zoK0Aqzz9PBWwPJnnWVEiXQa6R3PBJy6wn
   2.203 ++bXUK+w+19iGZ+wEb5oQqP/IagLfLgmnW6R+PR7FXsxMY0+4yAtyZdofVa9qNo9F
   2.204 +t2J/id/Vz0+gzulFxZIxpj4fDD5lBVSYBNExVDYL8izsr7JR0pnZ7xTHGAvmQrff
   2.205 +u7MDo0rfW4gpVtAowgZpTzqvAhXyUQaGheO39VkzY25LtlqMlWvRCPEgyTyFDBCi
   2.206 +M+GEYocFsbVqSdZhgZ3hF0v0PTdOERjvdRb6hDsUdoSwwM6vdKjN3t+f//beitcp
   2.207 +El1mMyWkrdety4by1Hnw+0Yu8e/mC7aVfowOoM1IVVi6uVO1iv7zjBuS29w40Yvt
   2.208 +so0RixGBRBV3B3foEUEC0ht5piFP0c7qplyW6OaUH0zdFkilN1hR2LWo753CFjn1
   2.209 +vPfOGebQVJXjrPcsPHnBf/tcdZSqL3E1XYLsk+h1uIrmV771s2rZ7ToWL9bnKV7u
   2.210 +Ptyx/AtPv8YJ8AbI2W09Aan0TPjhOfYm34w9XSA6GiF2i2OsQpjy71yI5wzjtEY5
   2.211 ++IkDxtVdJq+/+heoSehJHnRtlgM5fToe/HAA75cqR/qzSXiJClTDfe2bi6g7WkIu
   2.212 +n2Mb2ycrJ8/wajOdpqZgqcmxXPur/YHgfqYQ8bKT4YHpOCMgaGEDp4xmt0VRlrlG
   2.213 +GNZuohYOtezowCgOB7w+5B1xKxLid2KGj6Q4P7Hf/tpuIOBMD85JgfixlB/8gmY+
   2.214 +szUwlyzvwoZIQDUIFnlXJF2UwB5azbfgiGGzOTtwu9Zh4OnL5s7L3cfhavaG5KJu
   2.215 +HCI3eMmVdHW5L1sPUjtHKE/4vfjpmv1wz3FjGd6ZuaUxt6wfP8aLbjA/YFZFw/GZ
   2.216 +mG4j2aMgee+WJ0fpYloQKSzK5hOBXoXm1VAJjKjN5eVUk0HMRheZb9Du0gl/Dh6x
   2.217 +BCNlKc0JfSCN4BNgYgkEUE0hyqK83d5UR4un4+G14fifsAj1KufubWpCSQxFcfuE
   2.218 +rlbxPAjTgiIua6g+lZc3yKOzyqTiiuBzCVmlxTBznd2aqvRSpUVEtc7m+0Fiu0D8
   2.219 ++bqQBCb1pkOqFVfljXHPHpls6yoMie12HA78sVhcpbWrUAEtu/YjU2Ot0ItfIPYN
   2.220 +kRldgq5W8z4fLxGMk9GLGUW72GCFaLxYlwV5ezSL8rvVUZF3NDwSTMChAL4jKDVB
   2.221 +AO6dyKOUne+rrq/MVmW4Z9V4N91PqM4adKcw6uWIcV6EXzk1MSZK76nrWpUD4+2Y
   2.222 +6avMHTMlbR5sTGsoxf+xAUFHczucMuqJHy1z0TV5MdOGqhlVeDD/Sj+bX8qhXGlY
   2.223 +e514ooiyxwTngIFldt6dGsiLmArV4I++NL9PnOX5je+LHLaJqjpmDOM1BedN7PRd
   2.224 +xf13WLg9BpWKVZDYHn77yrMdnZm/Ci0Op7hPtJ3iIEQS0la9nUOm5vo8ZQGxFY65
   2.225 +rBsY0ffKiVts18fkWdMy/+MDzR/zq5QWdqiJ8WVUCr5VMYMQrIpKlou6mdg+YwRY
   2.226 +xr9ETQgVHxPK+zsblHGneCN5DP8dKug8r9CLZymQLvsxYwEujFVpME/h/AYDR7nX
   2.227 +EGmuA0fXbpc4WXqOrru3TGd5lqsQE0BAmhoB0YCoHlmZpcLkQIzRoh7f/sqmz9TE
   2.228 +EajX5+fyx7o7iKRiggy2qZQr3ALJnqbKnJzmzzZy0N7nq2fOwIIvnnhmG3MDYHYe
   2.229 +eMcwmPeU5RmVv+BiZbsatohicGBfDZVTNAfLomCxbQH0knuwANu7aBWAW+HqpqLC
   2.230 +yH/tCF8IFxKi3vHFNcOfvF48GT4GaY8zsvOEuqmf0sBsrtd8KbW6m4H8jDQP6Kr8
   2.231 +GaCtvRnl2BcDxvhL0N2AWvw121jLegpejJ3Zj5dvDOO+4PXiTRJC0Jm380z8RR8/
   2.232 +lMPA5J64mb4EvFfKExEGzRv9py2OHPQDAmZsffZbrsIbsfEnPL7xnsjPa7E4zp6B
   2.233 +qizoxB1FEX8XMXWdYQpfcxLTOZmctFjUWE5aYjLpXAJAdyK7fEzc+Rp2HgATqBAD
   2.234 +Q3CKkM5OB4sV44XI3TbZzTnMANdsABRnkwcwWLBB5FOlEA0dEe/ROiSPga4XM9sU
   2.235 +9q8DB+CqgH72c5MUhn12A5krF22qRoPeJb2f9j+nmM1r9Jy71gl1OIZoHg/HKsH2
   2.236 +uL1sWdLmMcb8ymTrKtoL68ZNJEeyeN826UW4mX78kZviNgL2D4XgA89cwQPL6weR
   2.237 +fNfS/iXfUuPGF8YGCPr2PVeacMzN/Nw7p5mzrLZee7IlZztLVmHmbCOPtXQJAhIJ
   2.238 +3oleptcmgqCMH83XHlwcwcYxbG5H9EzY6D9qWh9lX/C+FcS4VrYJbZptoOFD223h
   2.239 +lpA+n2699ILGAvsYM6Lz9MI2gC5HErQLxyqok2tR1JVXUJB5rzldHItStCQmvwyJ
   2.240 +m4JzeIqeB8DUXdI7ggJ/BvxCKkmNRDYs7E+HFsAeuGRd06B4M0/P8wU3KzVfC32Q
   2.241 +oFz9IP9hFOGlK/Uno/7O7FQOPGEPpscjj+s0BfgnsDi2Ko01HdYhcXwKgrfMAVBj
   2.242 +RBOQKoK2xsOyy1GhzK5rJAbX8yiNKblvST1L/dOZi7hUsBLXJ8mN4/DFTtsbcDBA
   2.243 +gij0cW8RpivSpGR7gSfrm7eaSXF76xijGq/YWhUzfls3RY2ZV1icm16gI6cwYu6T
   2.244 +zVVAgaKj69XBEzRwG4m23P64Dt/FNxcFgwtVKI2fu8AXSTPHhlpi/k+zY5/d2A4E
   2.245 +nkAEX6EgWOMlKtacvYskA1p9wqIG/WwLhMW6FpX9Z0DibClhSGL7HpjG+4fZ68ZO
   2.246 +lQYhlMpN1/njtv0rmMQs24lOl7ct6qBVZUs4ySzlnpS3uq0IIurEHngCWtyiHdbz
   2.247 +WOZeU7C7Wes05gKnmkU9SdVNm27UI8p7LEhNxRJKaqbMKT+R9FVM1i23q55R/bMU
   2.248 +QhGGD3Wqi5KJHKfpOg6axnlZTErOP23vhDlA0YMTsuN6yTQ//3KV8t5yJdNvvYCi
   2.249 +MlqLpx8HUSHfzB6FUaK98j7UuGxurolnYz0Tds8fTMoCgNPyJuLVy59orn3O3WIb
   2.250 +X56ymWb02hk+ncwdLp1aCW+3piuGOzNHibBy9wtHU7PWE0EjqFwbM47z7/Dt+m9A
   2.251 +j6vSlUvFUVzol2yoy1o1Bgq/wBmHDwz1BajWeVI2GF9q+kFOOzsRH1ARpE5sk7Xt
   2.252 +d4nWZ60LqSulVfs1d9zhMCRIsCj40sOueiRd5DvTzKMPcbbzsiKkGA3uqH7tAfrP
   2.253 +eEQHZyM4ROGfL0+i9LiPlqJjGltLLtJvThRJAJmvW9y5WxrkcZRGH7eEygLXhEjb
   2.254 +WtAymb838VtMXNL7L+mt8PhVveaSdqtEeBEebG5wiHIeAQYIzqiU6cIiphRrERiF
   2.255 +ryOJy2RA+s5cFhKH02q/nAWc9s/pN0DLZktsMdJIG1VqpAX0DU00nWOuT032WiGP
   2.256 +VWuGBMy5A7LjhnvdL+gg+6Iu2BMFIU/9xoZjzBWX8rO3Muh3zZxxhSijUqBql8cN
   2.257 +5CY70PORPMMG/O2/X9kRCWMmXgdV4RpelesvmyMl8R9+fktVplOJvQMYm4sJshLJ
   2.258 +448CdgtiUbbGfbxrC0/KjYGAu+Z8ZyxwBio71o362QDSL7vLyieUPBqTUM+Z8xwV
   2.259 +mfuMWYLgSJa7I8vJVz7k0hLvX45uf2RbWJwm7blVhiG7T5Yc6V7UmoH8VoqyqH3q
   2.260 +PlAY9FS2r1iwX2ibdZEZfwUEdlYnndo+SLAcIK6ptuH7vpWqk5RtE8+vraE00Yt9
   2.261 +0cRzBr/VlWMGsmcJfAWqNDnKankVy8+U1MScOSioQk/zAKqyQhLrotPuTnHoXhhV
   2.262 +AZqi7mTNwJCjLSKn/V/MR+ArNSGSaAniikrDsT7P2ZScodncXt282Rv1JysnH3nh
   2.263 +eoey64scwfmNlB09+1o+OoVBb6IXeqq61wwWei+Xk7MBfSCtE93CUSRx1O3jCCpK
   2.264 +eBbV9Kg1lZef5R1HnvqDJuAXXyjdDkTuxhItM/shp5vx0/NTUSuAAVJnHY+v0s7/
   2.265 +u3R40fbxo6FXcYd2DWttR2XRioKosTQAXiJoXCHvY55yBq3s48dVsdlSu06eN1LF
   2.266 +5c7RGNDTBdecdSq/ysjt+p1y1nntQsSrrqiUzHBC8wBCxYOo2EQkSaCkDbqnDjnL
   2.267 +BEeLrd/nM8Z6ur2aNdi/U7p6/aZBDNXi+vQ5r7DFS97Re0RHllNSJQ+ZzYZuQaOC
   2.268 +EQfzds/ZtlgJg0v27lZjz7IJww3DRrSZNS/m0CriwLsiOzJBPvCjXLHJ0EPPGUXs
   2.269 +ol8Jl7/enzDCZxDegpTmoIUreqsv1mDW7oe8Njq5xCoH6G2hwWYAO6t8KEFMBtxh
   2.270 +IT/GkujLfxPOaXxbozYtZDRRfwnX1fMiidgonqXRwwN58vggVl2HdEKn5C+S0uHZ
   2.271 +DRfFjQ5gMmBMYv8tgRyhPCxAKh4i1jujCE+JhgHBnyOz+J9esP8p10hlEwxfcMbw
   2.272 +HnFSDTSH6TgIfeAjSXrHR3EzCakHhcDxUpNwNlzO9HVBzCXO1SJV8HPSuKrUv5xQ
   2.273 +Y4lJCaFDtwXPuUuocoUZKmOM2xg3Ws4KHGIAVhnv99i80zT2McgZNN8IGoMr+PS3
   2.274 +UcyRr3UFNQ/tjFCEAs7FNX6u9rXktjlb1+mCzZ7xD1yUSxSFygrQwsaRGw4rPm0J
   2.275 +Zq58Z2sotil+J0jwe84MqqB6CmqiSv3fd+eVJByuS4u2yjER0yuGjkwrqRk4enbY
   2.276 +EYGAGTMu8k15QMTqYeqiP1oZ2cgZFHOp739pVIYJUww8ZiNgB2kbkGqwlrPGx7Po
   2.277 +chLNH1qV84r2W82heqUizE4uOFo2CDKfxQBRXbwsKWn7VbEHJk3fPoKv9wjk/KDW
   2.278 +ClgtXUMIxoKDcPfT6edrm/ug8fhq715U2OldiBy56CEztHSvfiZF7rAWQ+TvIOmz
   2.279 +mgcf97Mp0lOgNOUdWlm2hsBWGRJt7wyw+WG+j/aMDMBw1Yc+M8Vip94IDkXvSWme
   2.280 +LGijMH133jH+GO2rv5UnmhvyKJ0R2wEyA5U+Nmc38oleppgoqUqeUS32inLkOSMm
   2.281 +Zts/AqogZvDT7LQ4IUA5spd9smE9ySkFdHcmY8NNN2L9kbUGaqW6h3DP
   2.282 +=7Muw
   2.283 +-----END PGP MESSAGE-----
   2.284 +
   2.285 +--238e1f2946e87ccd3d1b58ba507ed7ab--