From johndorovski at googlemail.com Wed Nov 18 09:20:58 2009 Content-Type: multipart/mixed; boundary="===============8831252647404276941==" MIME-Version: 1.0 From: John Dorovski To: users at lists.dogtagpki.org Subject: Re: [Pki-users] (forwarded) Help needed on dogtag Date: Wed, 18 Nov 2009 09:20:45 -0500 Message-ID: In-Reply-To: 4B033E21.9080306@redhat.com --===============8831252647404276941== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Here is my ssltap output: [root(a)rd1 linux-i386]# ssltap -sfxl localhost.localdomain:9545 SSLTAP output
Looking up "localhost.localdomain"...
Proxy socket ready and listening


Connection #1 [Wed Nov 18 09:14:56 2009]

Connected to localhost.localdomain:9545 --> [ (120 bytes of 115) SSLRecord { [Wed Nov 18 09:14:56 2009] 0: 16 03 01 00 73 | ....s type =3D 22 (handshake) version =3D { 3,1 } length =3D 115 (0x73) handshake { 0: 01 00 00 6f | ...o type =3D 1 (client_hello) length =3D 111 (0x00006f) ClientHelloV3 { client_version =3D {3, 1} random =3D {...} 0: 4b 04 01 60 3e dd 86 f2 6c 26 cb 29 b3 a4 eb 26 | K..`>...l&.)...& 10: c0 17 f1 8e 24 0a 75 79 03 91 78 40 7b 58 5e 7b | ....$.uy..x@{X^{ session ID =3D { length =3D 0 contents =3D {...} } cipher_suites[18] =3D { (0x0088) TLS/DHE-RSA/CAMELLIA256-CBC/SHA (0x0087) TLS/DHE-DSS/CAMELLIA256-CBC/SHA (0x0039) TLS/DHE-RSA/AES256-CBC/SHA (0x0038) TLS/DHE-DSS/AES256-CBC/SHA (0x0084) TLS/RSA/CAMELLIA256-CBC/SHA (0x0035) TLS/RSA/AES256-CBC/SHA (0x0045) TLS/DHE-RSA/CAMELLIA128-CBC/SHA (0x0044) TLS/DHE-DSS/CAMELLIA128-CBC/SHA (0x0033) TLS/DHE-RSA/AES128-CBC/SHA (0x0032) TLS/DHE-DSS/AES128-CBC/SHA (0x0041) TLS/RSA/CAMELLIA128-CBC/SHA (0x0004) SSL3/RSA/RC4-128/MD5 (0x0005) SSL3/RSA/RC4-128/SHA (0x002f) TLS/RSA/AES128-CBC/SHA (0x0016) SSL3/DHE-RSA/3DES192EDE-CBC/SHA (0x0013) SSL3/DHE-DSS/DES192EDE3CBC/SHA (0xfeff) SSL3/RSA-FIPS/3DESEDE-CBC/SHA (0x000a) SSL3/RSA/3DES192EDE-CBC/SHA } compression[1] =3D { 00 } extensions[34] =3D { extension type server_name, length [26] =3D { 0: 00 18 00 00 15 6c 6f 63 61 6c 68 6f 73 74 2e 6c | .....localhost.l 10: 6f 63 61 6c 64 6f 6d 61 69 6e | ocaldomain } extension type session_ticket, length [0] } } } } ] <-- [ (1903 bytes of 1898) SSLRecord { [Wed Nov 18 09:14:56 2009] 0: 16 03 01 07 6a | ....j type =3D 22 (handshake) version =3D { 3,1 } length =3D 1898 (0x76a) handshake { 0: 02 00 00 46 | ...F type =3D 2 (server_hello) length =3D 70 (0x000046) ServerHello { server_version =3D {3, 1} random =3D {...} 0: 4b 04 01 60 d1 86 09 69 01 8d c2 5e 1a 9c 99 16 | K..`...i...^.... 10: de 0e bd 27 b6 c5 be 57 23 f1 1e 03 69 40 55 9d | ...'...W#...i(a= )U. session ID =3D { length =3D 32 contents =3D {...} 0: 67 66 c6 7f f7 ac d6 98 45 f2 6d 9f c6 84 e1 df | gf.=7F....E.m..= ... 10: ff ff c0 87 d8 e9 97 f9 f6 37 8b 6e 09 d9 2b 25 | .........7.n..+% } cipher_suite =3D (0x0004) SSL3/RSA/RC4-128/MD5 compression method =3D 00 } 0: 0b 00 07 18 | .... type =3D 11 (certificate) length =3D 1816 (0x000718) CertificateChain { chainlength =3D 1813 (0x0715) Certificate { size =3D 890 (0x037a) data =3D { saved in file 'cert.001' } } Certificate { size =3D 917 (0x0395) data =3D { saved in file 'cert.002' } } } 0: 0e 00 00 00 | .... type =3D 14 (server_hello_done) length =3D 0 (0x000000) } } ] --> [ (310 bytes of 262, with 43 left over) SSLRecord { [Wed Nov 18 09:14:56 2009] 0: 16 03 01 01 06 | ..... type =3D 22 (handshake) version =3D { 3,1 } length =3D 262 (0x106) handshake { 0: 10 00 01 02 | .... type =3D 16 (client_key_exchange) length =3D 258 (0x000102) ClientKeyExchange { message =3D {...} } } } (310 bytes of 1, with 37 left over) SSLRecord { [Wed Nov 18 09:14:56 2009] 0: 14 03 01 00 01 | ..... type =3D 20 (change_cipher_spec) version =3D { 3,1 } length =3D 1 (0x1) 0: 01 | . } (310 bytes of 32) SSLRecord { [Wed Nov 18 09:14:56 2009] 0: 16 03 01 00 20 | .... type =3D 22 (handshake) version =3D { 3,1 } length =3D 32 (0x20) < encrypted > } ] ssltap: Error -5961: TCP connection reset by peer.: error on server-side socket. Connection 1 Complete [Wed Nov 18 09:14:56 2009]


Connection #2 [Wed Nov 18 09:14:56 2009]

Connected to localhost.localdomain:9545 --> [ recordLen =3D 81 bytes (81 bytes of 81) [Wed Nov 18 09:14:56 2009] [ssl2] ClientHelloV2 { version =3D {0x03, 0x00} cipher-specs-length =3D 54 (0x36) sid-length =3D 0 (0x00) challenge-length =3D 16 (0x10) cipher-suites =3D { (0x000088) TLS/DHE-RSA/CAMELLIA256-CBC/SHA (0x000087) TLS/DHE-DSS/CAMELLIA256-CBC/SHA (0x000039) TLS/DHE-RSA/AES256-CBC/SHA (0x000038) TLS/DHE-DSS/AES256-CBC/SHA (0x000084) TLS/RSA/CAMELLIA256-CBC/SHA (0x000035) TLS/RSA/AES256-CBC/SHA (0x000045) TLS/DHE-RSA/CAMELLIA128-CBC/SHA (0x000044) TLS/DHE-DSS/CAMELLIA128-CBC/SHA (0x000033) TLS/DHE-RSA/AES128-CBC/SHA (0x000032) TLS/DHE-DSS/AES128-CBC/SHA (0x000041) TLS/RSA/CAMELLIA128-CBC/SHA (0x000004) SSL3/RSA/RC4-128/MD5 (0x000005) SSL3/RSA/RC4-128/SHA (0x00002f) TLS/RSA/AES128-CBC/SHA (0x000016) SSL3/DHE-RSA/3DES192EDE-CBC/SHA (0x000013) SSL3/DHE-DSS/DES192EDE3CBC/SHA (0x00feff) SSL3/RSA-FIPS/3DESEDE-CBC/SHA (0x00000a) SSL3/RSA/3DES192EDE-CBC/SHA } session-id =3D { } challenge =3D { 0xde1b 0xaea2 0x262a 0xaae3 0x5135 0x4f6a 0x5742 0xf716 } } ] <-- [ (1903 bytes of 1898) SSLRecord { [Wed Nov 18 09:14:56 2009] 0: 16 03 00 07 6a | ....j type =3D 22 (handshake) version =3D { 3,0 } length =3D 1898 (0x76a) handshake { 0: 02 00 00 46 | ...F type =3D 2 (server_hello) length =3D 70 (0x000046) ServerHello { server_version =3D {3, 0} random =3D {...} 0: 4b 04 01 60 55 ce 82 33 ab d7 da 7f bc 74 ed ca | K..`U..3...=7F.= t.. 10: 1e f3 95 26 21 fa db ce 83 94 24 0a bc 4e 89 51 | ...&!.....$..N.Q session ID =3D { length =3D 32 contents =3D {...} 0: 67 66 50 ba 19 6d d9 38 7d 86 a9 e0 43 cb 57 0b | gfP..m.8}...C.W. 10: 19 d5 a7 e0 90 99 e5 78 03 f6 55 26 c4 f1 bc 03 | .......x..U&.... } cipher_suite =3D (0x0004) SSL3/RSA/RC4-128/MD5 compression method =3D 00 } 0: 0b 00 07 18 | .... type =3D 11 (certificate) length =3D 1816 (0x000718) CertificateChain { chainlength =3D 1813 (0x0715) Certificate { size =3D 890 (0x037a) data =3D { saved in file 'cert.003' } } Certificate { size =3D 917 (0x0395) data =3D { saved in file 'cert.004' } } } 0: 0e 00 00 00 | .... type =3D 14 (server_hello_done) length =3D 0 (0x000000) } } ] --> [ (332 bytes of 260, with 67 left over) SSLRecord { [Wed Nov 18 09:14:56 2009] 0: 16 03 00 01 04 | ..... type =3D 22 (handshake) version =3D { 3,0 } length =3D 260 (0x104) handshake { 0: 10 00 01 00 | .... type =3D 16 (client_key_exchange) length =3D 256 (0x000100) ClientKeyExchange { message =3D {...} } } } (332 bytes of 1, with 61 left over) SSLRecord { [Wed Nov 18 09:14:56 2009] 0: 14 03 00 00 01 | ..... type =3D 20 (change_cipher_spec) version =3D { 3,0 } length =3D 1 (0x1) 0: 01 | . } (332 bytes of 56) SSLRecord { [Wed Nov 18 09:14:56 2009] 0: 16 03 00 00 38 | ....8 type =3D 22 (handshake) version =3D { 3,0 } length =3D 56 (0x38) < encrypted > } ] ssltap: Error -5961: TCP connection reset by peer.: error on server-side socket. Connection 2 Complete [Wed Nov 18 09:14:56 2009] On Tue, Nov 17, 2009 at 7:21 PM, Chandrasekar Kannan = wrote: > On 11/17/2009 01:09 PM, John Dorovski wrote: > > It was not a typo. I did use the port number 9545. > > > Ok. one idea would be to run the utility "ssltap" as a proxy > and using your browser to connect to the "ssltap" port and > pasting the output here so folks can see what's happening > during the SSL handshake. > http://www.mozilla.org/projects/security/pki/nss/tools/ssltap.html > > > On a Fedora 10 system, its packaged with nss-tools rpm. > > Run ssltap like this... > > ssltap -sfxl CA_HOSTNAME:CA_PORT > > in your case, it will be > > ssltap -sfxl localhost:9545 > > Then use a browser and connect to ssltap. ssltap > listens on port 1924. So on the browser type.. > > https://localhost.localdomain:1924 > > > ssltap will capture the results of the ssl handshake. > > Copy and paste it here so we can tell what's happening > during that phase while you get the bad mac alert. > > Thanks, > --Chandra > > > > > > > John > > On Tue, Nov 17, 2009 at 3:51 PM, Adewumi, Julius-p99373 < > Julius.Adewumi(a)gdc4s.com> wrote: > >> >> Unless it's a typo on your part, the two port numbers are different... >> Could that be the problem? >> 8445 vs 9545 >> >> From: Julius Adewumi >> @GDC4S.com >> Ph:480-441-6768 >> Contract Corp:MTSI >> >> >> -----Original Message----- >> From: pki-users-bounces(a)redhat.com [mailto:pki-users-bounces(a)redhat.= com] >> On Behalf Of Christina Fu >> Sent: Tuesday, November 17, 2009 12:56 PM >> To: pki-users(a)redhat.com >> Cc: johndorovski(a)googlemail.com >> Subject: [Pki-users] (forwarded) Help needed on dogtag >> >> I might have messed up when managing pki-users and this did not come >> through. Hence the forward. >> Christina >> >> Subject: >> Help needed on dogtag >> From: >> John Dorovski >> Date: >> Tue, 17 Nov 2009 10:58:18 -0500 >> >> To: >> pki-users(a)redhat.com >> >> >> Hi, >> >> I just installed a dogtag (1.2.0) instance on my Fedora 10 system. >> I used a SafeNet ProtectServer Gold HSM as keystore. >> The dogtag system installation and configuration were fine. No error was >> reported. >> All keys and certificates were generated inside the HSM. >> >> But when I tried to access the secure admin interface at >> https://localhost:localdomain:9545 >> I got error message: >> Secure Connection Failed >> An error occurred during a connection to localhost.localdomain:8445 >> SSL peer reports incorrect Message Authentication Code. >> (Error code: ssl_error_bad_mac_alert) >> >> I checked the server certificate (viewed it with IE on a Windows box). >> It seems fine. >> >> Does any body know what is wrong and how can I fix it? >> >> Thanks, >> >> John >> >> _______________________________________________ >> Pki-users mailing list >> Pki-users(a)redhat.com >> https://www.redhat.com/mailman/listinfo/pki-users >> > > > _______________________________________________ > Pki-users mailing listPki-users(a)redhat.comhttps://www.redhat.com/mailma= n/listinfo/pki-users > > > > _______________________________________________ > Pki-users mailing list > Pki-users(a)redhat.com > https://www.redhat.com/mailman/listinfo/pki-users > > --===============8831252647404276941== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" SGVyZSBpcyBteSBzc2x0YXAgb3V0cHV0Ojxicj48YnI+W3Jvb3RAcmQxIGxpbnV4LWkzODZdIyBz c2x0YXAgLXNmeGygIGxvY2FsaG9zdC5sb2NhbGRvbWFpbjo5NTQ1PGJyPiZsdDtIVE1MJmd0OyZs dDtIRUFEJmd0OyZsdDtUSVRMRSZndDtTU0xUQVAgb3V0cHV0Jmx0Oy9USVRMRSZndDsmbHQ7L0hF QUQmZ3Q7PGJyPiZsdDtCT0RZJmd0OyZsdDtQUkUmZ3Q7PGJyPkxvb2tpbmcgdXAgJnF1b3Q7bG9j YWxob3N0LmxvY2FsZG9tYWluJnF1b3Q7Li4uPGJyPgpQcm94eSBzb2NrZXQgcmVhZHkgYW5kIGxp c3RlbmluZzxicj4mbHQ7cCZndDsmbHQ7SFImZ3Q7Jmx0O0gyJmd0O0Nvbm5lY3Rpb24gIzEgW1dl ZCBOb3YgMTggMDk6MTQ6NTYgMjAwOV08YnI+Jmx0Oy9IMiZndDtDb25uZWN0ZWQgdG8gbG9jYWxo b3N0LmxvY2FsZG9tYWluOjk1NDU8YnI+LS0mZ3Q7IFs8YnI+Jmx0O2ZvbnQgY29sb3I9Ymx1ZSZn dDsoMTIwIGJ5dGVzIG9mIDExNSk8YnI+U1NMUmVjb3JkIHsgW1dlZCBOb3YgMTggMDk6MTQ6NTYg MjAwOV08YnI+CqCgIDA6IDE2IDAzIDAxIDAwoCA3M6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoCB8IC4uLi5zPGJyPqCgIHR5cGWgoKAgPSAyMiAoaGFuZHNoYWtlKTxicj6goCB2 ZXJzaW9uID0geyAzLDEgfTxicj6goCBsZW5ndGigID0gMTE1ICgweDczKTxicj6goCBoYW5kc2hh a2Ugezxicj6goCAwOiAwMSAwMCAwMCA2ZqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKAgfCAuLi5vPGJyPgqgoKCgoCB0eXBlID0gMSAoY2xpZW50X2hlbGxvKTxicj6goKCg oCBsZW5ndGggPSAxMTEgKDB4MDAwMDZmKTxicj6goKCgoKCgoCBDbGllbnRIZWxsb1YzIHs8YnI+ oKCgoKCgoKCgoKAgY2xpZW50X3ZlcnNpb24gPSB7MywgMX08YnI+oKCgoKCgoKCgoKAgcmFuZG9t ID0gey4uLn08YnI+oKAgMDogNGIgMDQgMDEgNjCgIDNlIGRkIDg2IGYyoCA2YyAyNiBjYiAyOaAg YjMgYTQgZWIgMjagIHwgSy4uYCZhbXA7Z3Q7Li4ubCZhbXA7YW1wOy4pLi4uJmFtcDthbXA7PGJy PgqgIDEwOiBjMCAxNyBmMSA4ZaAgMjQgMGEgNzUgNzmgIDAzIDkxIDc4IDQwoCA3YiA1OCA1ZSA3 YqAgfCAuLi4uJC51eS4ueEB7WF57PGJyPqCgoKCgoKCgoKCgIHNlc3Npb24gSUQgPSB7PGJyPqCg oKCgoKCgoKCgoKCgoCBsZW5ndGggPSAwPGJyPqCgoKCgoKCgoKCgoKCgoCBjb250ZW50cyA9IHsu Li59PGJyPqCgoKCgoKCgoKCgIH08YnI+oKCgoKCgoKCgoKAgY2lwaGVyX3N1aXRlc1sxOF0gPSB7 IDxicj4KoKCgoKCgoKCgoKCgoKCgICgweDAwODgpIFRMUy9ESEUtUlNBL0NBTUVMTElBMjU2LUNC Qy9TSEE8YnI+oKCgoKCgoKCgoKCgoKCgICgweDAwODcpIFRMUy9ESEUtRFNTL0NBTUVMTElBMjU2 LUNCQy9TSEE8YnI+oKCgoKCgoKCgoKCgoKCgICgweDAwMzkpIFRMUy9ESEUtUlNBL0FFUzI1Ni1D QkMvU0hBPGJyPqCgoKCgoKCgoKCgoKCgoCAoMHgwMDM4KSBUTFMvREhFLURTUy9BRVMyNTYtQ0JD L1NIQTxicj4KoKCgoKCgoKCgoKCgoKCgICgweDAwODQpIFRMUy9SU0EvQ0FNRUxMSUEyNTYtQ0JD L1NIQTxicj6goKCgoKCgoKCgoKCgoKAgKDB4MDAzNSkgVExTL1JTQS9BRVMyNTYtQ0JDL1NIQTxi cj6goKCgoKCgoKCgoKCgoKAgKDB4MDA0NSkgVExTL0RIRS1SU0EvQ0FNRUxMSUExMjgtQ0JDL1NI QTxicj6goKCgoKCgoKCgoKCgoKAgKDB4MDA0NCkgVExTL0RIRS1EU1MvQ0FNRUxMSUExMjgtQ0JD L1NIQTxicj4KoKCgoKCgoKCgoKCgoKCgICgweDAwMzMpIFRMUy9ESEUtUlNBL0FFUzEyOC1DQkMv U0hBPGJyPqCgoKCgoKCgoKCgoKCgoCAoMHgwMDMyKSBUTFMvREhFLURTUy9BRVMxMjgtQ0JDL1NI QTxicj6goKCgoKCgoKCgoKCgoKAgKDB4MDA0MSkgVExTL1JTQS9DQU1FTExJQTEyOC1DQkMvU0hB PGJyPqCgoKCgoKCgoKCgoKCgoCAoMHgwMDA0KSBTU0wzL1JTQS9SQzQtMTI4L01ENTxicj6goKCg oKCgoKCgoKCgoKAgKDB4MDAwNSkgU1NMMy9SU0EvUkM0LTEyOC9TSEE8YnI+CqCgoKCgoKCgoKCg oKCgoCAoMHgwMDJmKSBUTFMvUlNBL0FFUzEyOC1DQkMvU0hBPGJyPqCgoKCgoKCgoKCgoKCgoCAo MHgwMDE2KSBTU0wzL0RIRS1SU0EvM0RFUzE5MkVERS1DQkMvU0hBPGJyPqCgoKCgoKCgoKCgoKCg oCAoMHgwMDEzKSBTU0wzL0RIRS1EU1MvREVTMTkyRURFM0NCQy9TSEE8YnI+oKCgoKCgoKCgoKCg oKCgICgweGZlZmYpIFNTTDMvUlNBLUZJUFMvM0RFU0VERS1DQkMvU0hBPGJyPgqgoKCgoKCgoKCg oKCgoKAgKDB4MDAwYSkgU1NMMy9SU0EvM0RFUzE5MkVERS1DQkMvU0hBPGJyPqCgoKCgoKCgoKCg IH08YnI+oKCgoKCgoKCgoKAgY29tcHJlc3Npb25bMV0gPSB7IDAwIH08YnI+oKCgoKCgoKCgoKAg ZXh0ZW5zaW9uc1szNF0gPSB7PGJyPqCgoKCgoKCgoKCgoKAgZXh0ZW5zaW9uIHR5cGUgc2VydmVy X25hbWUsIGxlbmd0aCBbMjZdID0gezxicj6goCAwOiAwMCAxOCAwMCAwMKAgMTUgNmMgNmYgNjOg IDYxIDZjIDY4IDZmoCA3MyA3NCAyZSA2Y6AgfCAuLi4uLmxvY2FsaG9zdC5sPGJyPgqgIDEwOiA2 ZiA2MyA2MSA2Y6AgNjQgNmYgNmQgNjGgIDY5IDZloKCgoKCgoKCgoKCgoKCgoKCgoKAgfCBvY2Fs ZG9tYWluPGJyPqCgoKCgoKCgoKCgoKAgfTxicj6goKCgoKCgoKCgoKCgIGV4dGVuc2lvbiB0eXBl IHNlc3Npb25fdGlja2V0LCBsZW5ndGggWzBdPGJyPqCgoKCgoKCgoKCgIH08YnI+oKCgoKCgoKAg fTxicj6goCB9PGJyPn08YnI+Jmx0Oy9mb250Jmd0O108YnI+Jmx0Oy0tIFs8YnI+CiZsdDtmb250 IGNvbG9yPXJlZCZndDsoMTkwMyBieXRlcyBvZiAxODk4KTxicj5TU0xSZWNvcmQgeyBbV2VkIE5v diAxOCAwOToxNDo1NiAyMDA5XTxicj6goCAwOiAxNiAwMyAwMSAwN6AgNmGgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgfCAuLi4uajxicj6goCB0eXBloKCgID0gMjIgKGhhbmRz aGFrZSk8YnI+oKAgdmVyc2lvbiA9IHsgMywxIH08YnI+oKAgbGVuZ3RooCA9IDE4OTggKDB4NzZh KTxicj4KoKAgaGFuZHNoYWtlIHs8YnI+oKAgMDogMDIgMDAgMDAgNDagoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHwgLi4uRjxicj6goKCgoCB0eXBlID0gMiAoc2VydmVy X2hlbGxvKTxicj6goKCgoCBsZW5ndGggPSA3MCAoMHgwMDAwNDYpPGJyPqCgoKCgoKCgIFNlcnZl ckhlbGxvIHs8YnI+oKCgoKCgoKCgoKAgc2VydmVyX3ZlcnNpb24gPSB7MywgMX08YnI+oKCgoKCg oKCgoKAgcmFuZG9tID0gey4uLn08YnI+CqCgIDA6IDRiIDA0IDAxIDYwoCBkMSA4NiAwOSA2OaAg MDEgOGQgYzIgNWWgIDFhIDljIDk5IDE2oCB8IEsuLmAuLi5pLi4uXi4uLi48YnI+oCAxMDogZGUg MGUgYmQgMjegIGI2IGM1IGJlIDU3oCAyMyBmMSAxZSAwM6AgNjkgNDAgNTUgOWSgIHwgLi4uJiMz OTsuLi5XIy4uLmlAVS48YnI+oKCgoKCgoKCgoKAgc2Vzc2lvbiBJRCA9IHs8YnI+oKCgoKCgoKCg oKCgoKCgIGxlbmd0aCA9IDMyPGJyPgqgoKCgoKCgoKCgoKCgoKAgY29udGVudHMgPSB7Li4ufTxi cj6goCAwOiA2NyA2NiBjNiA3ZqAgZjcgYWMgZDYgOTigIDQ1IGYyIDZkIDlmoCBjNiA4NCBlMSBk ZqAgfCBnZi5/Li4uLkUubS4uLi4uPGJyPqAgMTA6IGZmIGZmIGMwIDg3oCBkOCBlOSA5NyBmOaAg ZjYgMzcgOGIgNmWgIDA5IGQ5IDJiIDI1oCB8IC4uLi4uLi4uLjcubi4uKyU8YnI+oKCgoKCgoKCg oKAgfTxicj6goKCgoKCgoKCgoCBjaXBoZXJfc3VpdGUgPSAoMHgwMDA0KSBTU0wzL1JTQS9SQzQt MTI4L01ENTxicj4KoKCgoKCgoKCgoKAgY29tcHJlc3Npb24gbWV0aG9kID0gMDA8YnI+oKCgoKCg oKAgfTxicj6goCAwOiAwYiAwMCAwNyAxOKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKAgfCAuLi4uPGJyPqCgoKCgIHR5cGUgPSAxMSAoY2VydGlmaWNhdGUpPGJyPqCgoKCg IGxlbmd0aCA9IDE4MTYgKDB4MDAwNzE4KTxicj6goKCgoKCgoCBDZXJ0aWZpY2F0ZUNoYWluIHs8 YnI+oKCgoKCgoKCgoKAgY2hhaW5sZW5ndGggPSAxODEzICgweDA3MTUpPGJyPgqgoKCgoKCgoKCg oCBDZXJ0aWZpY2F0ZSB7PGJyPqCgoKCgoKCgoKCgoKCgIHNpemUgPSA4OTAgKDB4MDM3YSk8YnI+ oKCgoKCgoKCgoKCgoKAgZGF0YSA9IHsgc2F2ZWQgaW4gZmlsZSAmIzM5O2NlcnQuMDAxJiMzOTsg fTxicj6goKCgoKCgoKCgoCB9PGJyPqCgoKCgoKCgoKCgIENlcnRpZmljYXRlIHs8YnI+oKCgoKCg oKCgoKCgoKAgc2l6ZSA9IDkxNyAoMHgwMzk1KTxicj6goKCgoKCgoKCgoKCgoCBkYXRhID0geyBz YXZlZCBpbiBmaWxlICYjMzk7Y2VydC4wMDImIzM5OyB9PGJyPgqgoKCgoKCgoKCgoCB9PGJyPqCg oKCgoKCgIH08YnI+oKAgMDogMGUgMDAgMDAgMDCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgIHwgLi4uLjxicj6goKCgoCB0eXBlID0gMTQgKHNlcnZlcl9oZWxsb19kb25l KTxicj6goKCgoCBsZW5ndGggPSAwICgweDAwMDAwMCk8YnI+oKAgfTxicj59PGJyPiZsdDsvZm9u dCZndDtdPGJyPi0tJmd0OyBbPGJyPiZsdDtmb250IGNvbG9yPWJsdWUmZ3Q7KDMxMCBieXRlcyBv ZiAyNjIsIHdpdGggNDMgbGVmdCBvdmVyKTxicj4KU1NMUmVjb3JkIHsgW1dlZCBOb3YgMTggMDk6 MTQ6NTYgMjAwOV08YnI+oKAgMDogMTYgMDMgMDEgMDGgIDA2oKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgIHwgLi4uLi48YnI+oKAgdHlwZaCgoCA9IDIyIChoYW5kc2hha2UpPGJy PqCgIHZlcnNpb24gPSB7IDMsMSB9PGJyPqCgIGxlbmd0aKAgPSAyNjIgKDB4MTA2KTxicj6goCBo YW5kc2hha2Ugezxicj6goCAwOiAxMCAwMCAwMSAwMqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKAgfCAuLi4uPGJyPgqgoKCgoCB0eXBlID0gMTYgKGNsaWVudF9rZXlfZXhj aGFuZ2UpPGJyPqCgoKCgIGxlbmd0aCA9IDI1OCAoMHgwMDAxMDIpPGJyPqCgoKCgoKCgIENsaWVu dEtleUV4Y2hhbmdlIHs8YnI+oKCgoKCgoKCgoKAgbWVzc2FnZSA9IHsuLi59PGJyPqCgoKCgoKCg IH08YnI+oKAgfTxicj59PGJyPigzMTAgYnl0ZXMgb2YgMSwgd2l0aCAzNyBsZWZ0IG92ZXIpPGJy PlNTTFJlY29yZCB7IFtXZWQgTm92IDE4IDA5OjE0OjU2IDIwMDldPGJyPgqgoCAwOiAxNCAwMyAw MSAwMKAgMDGgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgfCAuLi4uLjxicj6g oCB0eXBloKCgID0gMjAgKGNoYW5nZV9jaXBoZXJfc3BlYyk8YnI+oKAgdmVyc2lvbiA9IHsgMywx IH08YnI+oKAgbGVuZ3RooCA9IDEgKDB4MSk8YnI+oKAgMDogMDGgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHwgLjxicj4KfTxicj4oMzEwIGJ5dGVzIG9m IDMyKTxicj5TU0xSZWNvcmQgeyBbV2VkIE5vdiAxOCAwOToxNDo1NiAyMDA5XTxicj6goCAwOiAx NiAwMyAwMSAwMKAgMjCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgfCAuLi4u IDxicj6goCB0eXBloKCgID0gMjIgKGhhbmRzaGFrZSk8YnI+oKAgdmVyc2lvbiA9IHsgMywxIH08 YnI+oKAgbGVuZ3RooCA9IDMyICgweDIwKTxicj6goKCgoKCgoKCgoCAmbHQ7IGVuY3J5cHRlZCAm Z3Q7PGJyPgp9PGJyPiZsdDsvZm9udCZndDtdPGJyPnNzbHRhcDogRXJyb3IgLTU5NjE6IFRDUCBj b25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIuOiBlcnJvciBvbiBzZXJ2ZXItc2lkZSBzb2NrZXQuPGJy PkNvbm5lY3Rpb24gMSBDb21wbGV0ZSBbV2VkIE5vdiAxOCAwOToxNDo1NiAyMDA5XTxicj4mbHQ7 cCZndDsmbHQ7SFImZ3Q7Jmx0O0gyJmd0O0Nvbm5lY3Rpb24gIzIgW1dlZCBOb3YgMTggMDk6MTQ6 NTYgMjAwOV08YnI+CiZsdDsvSDImZ3Q7Q29ubmVjdGVkIHRvIGxvY2FsaG9zdC5sb2NhbGRvbWFp bjo5NTQ1PGJyPi0tJmd0OyBbPGJyPiZsdDtmb250IGNvbG9yPWJsdWUmZ3Q7cmVjb3JkTGVuID0g ODEgYnl0ZXM8YnI+KDgxIGJ5dGVzIG9mIDgxKTxicj6gW1dlZCBOb3YgMTggMDk6MTQ6NTYgMjAw OV0gW3NzbDJdoCBDbGllbnRIZWxsb1YyIHs8YnI+oKCgoKCgoKCgoCB2ZXJzaW9uID0gezB4MDMs IDB4MDB9PGJyPgqgoKCgoKCgoKCgIGNpcGhlci1zcGVjcy1sZW5ndGggPSA1NCAoMHgzNik8YnI+ oKCgoKCgoKCgoCBzaWQtbGVuZ3RoID0gMCAoMHgwMCk8YnI+oKCgoKCgoKCgoCBjaGFsbGVuZ2Ut bGVuZ3RoID0gMTYgKDB4MTApPGJyPqCgoKCgoKCgoKAgY2lwaGVyLXN1aXRlcyA9IHsgPGJyPqCg oKCgoKCgoKCgoKCgoCAoMHgwMDAwODgpIFRMUy9ESEUtUlNBL0NBTUVMTElBMjU2LUNCQy9TSEE8 YnI+oKCgoKCgoKCgoKCgoKCgICgweDAwMDA4NykgVExTL0RIRS1EU1MvQ0FNRUxMSUEyNTYtQ0JD L1NIQTxicj4KoKCgoKCgoKCgoKCgoKCgICgweDAwMDAzOSkgVExTL0RIRS1SU0EvQUVTMjU2LUNC Qy9TSEE8YnI+oKCgoKCgoKCgoKCgoKCgICgweDAwMDAzOCkgVExTL0RIRS1EU1MvQUVTMjU2LUNC Qy9TSEE8YnI+oKCgoKCgoKCgoKCgoKCgICgweDAwMDA4NCkgVExTL1JTQS9DQU1FTExJQTI1Ni1D QkMvU0hBPGJyPqCgoKCgoKCgoKCgoKCgoCAoMHgwMDAwMzUpIFRMUy9SU0EvQUVTMjU2LUNCQy9T SEE8YnI+CqCgoKCgoKCgoKCgoKCgoCAoMHgwMDAwNDUpIFRMUy9ESEUtUlNBL0NBTUVMTElBMTI4 LUNCQy9TSEE8YnI+oKCgoKCgoKCgoKCgoKCgICgweDAwMDA0NCkgVExTL0RIRS1EU1MvQ0FNRUxM SUExMjgtQ0JDL1NIQTxicj6goKCgoKCgoKCgoKCgoKAgKDB4MDAwMDMzKSBUTFMvREhFLVJTQS9B RVMxMjgtQ0JDL1NIQTxicj6goKCgoKCgoKCgoKCgoKAgKDB4MDAwMDMyKSBUTFMvREhFLURTUy9B RVMxMjgtQ0JDL1NIQTxicj4KoKCgoKCgoKCgoKCgoKCgICgweDAwMDA0MSkgVExTL1JTQS9DQU1F TExJQTEyOC1DQkMvU0hBPGJyPqCgoKCgoKCgoKCgoKCgoCAoMHgwMDAwMDQpIFNTTDMvUlNBL1JD NC0xMjgvTUQ1PGJyPqCgoKCgoKCgoKCgoKCgoCAoMHgwMDAwMDUpIFNTTDMvUlNBL1JDNC0xMjgv U0hBPGJyPqCgoKCgoKCgoKCgoKCgoCAoMHgwMDAwMmYpIFRMUy9SU0EvQUVTMTI4LUNCQy9TSEE8 YnI+oKCgoKCgoKCgoKCgoKCgICgweDAwMDAxNikgU1NMMy9ESEUtUlNBLzNERVMxOTJFREUtQ0JD L1NIQTxicj4KoKCgoKCgoKCgoKCgoKCgICgweDAwMDAxMykgU1NMMy9ESEUtRFNTL0RFUzE5MkVE RTNDQkMvU0hBPGJyPqCgoKCgoKCgoKCgoKCgoCAoMHgwMGZlZmYpIFNTTDMvUlNBLUZJUFMvM0RF U0VERS1DQkMvU0hBPGJyPqCgoKCgoKCgoKCgoKCgoCAoMHgwMDAwMGEpIFNTTDMvUlNBLzNERVMx OTJFREUtQ0JDL1NIQTxicj6goKCgoKCgoKCgoKCgoKAgfTxicj6goKCgoKCgoKCgIHNlc3Npb24t aWQgPSB7IH08YnI+CqCgoKCgoKCgoKAgY2hhbGxlbmdlID0geyAweGRlMWIgMHhhZWEyIDB4MjYy YSAweGFhZTMgMHg1MTM1IDB4NGY2YSAweDU3NDIgMHhmNzE2IH08YnI+fTxicj4mbHQ7L2ZvbnQm Z3Q7XTxicj4mbHQ7LS0gWzxicj4mbHQ7Zm9udCBjb2xvcj1yZWQmZ3Q7KDE5MDMgYnl0ZXMgb2Yg MTg5OCk8YnI+U1NMUmVjb3JkIHsgW1dlZCBOb3YgMTggMDk6MTQ6NTYgMjAwOV08YnI+oKAgMDog MTYgMDMgMDAgMDegIDZhoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHwgLi4u Lmo8YnI+CqCgIHR5cGWgoKAgPSAyMiAoaGFuZHNoYWtlKTxicj6goCB2ZXJzaW9uID0geyAzLDAg fTxicj6goCBsZW5ndGigID0gMTg5OCAoMHg3NmEpPGJyPqCgIGhhbmRzaGFrZSB7PGJyPqCgIDA6 IDAyIDAwIDAwIDQ2oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCB8IC4u LkY8YnI+oKCgoKAgdHlwZSA9IDIgKHNlcnZlcl9oZWxsbyk8YnI+oKCgoKAgbGVuZ3RoID0gNzAg KDB4MDAwMDQ2KTxicj4KoKCgoKCgoKAgU2VydmVySGVsbG8gezxicj6goKCgoKCgoKCgoCBzZXJ2 ZXJfdmVyc2lvbiA9IHszLCAwfTxicj6goKCgoKCgoKCgoCByYW5kb20gPSB7Li4ufTxicj6goCAw OiA0YiAwNCAwMSA2MKAgNTUgY2UgODIgMzOgIGFiIGQ3IGRhIDdmoCBiYyA3NCBlZCBjYaAgfCBL Li5gVS4uMy4uLn8udC4uPGJyPqAgMTA6IDFlIGYzIDk1IDI2oCAyMSBmYSBkYiBjZaAgODMgOTQg MjQgMGGgIGJjIDRlIDg5IDUxoCB8IC4uLiZhbXA7YW1wOyEuLi4uLiQuLk4uUTxicj4KoKCgoKCg oKCgoKAgc2Vzc2lvbiBJRCA9IHs8YnI+oKCgoKCgoKCgoKCgoKCgIGxlbmd0aCA9IDMyPGJyPqCg oKCgoKCgoKCgoKCgoCBjb250ZW50cyA9IHsuLi59PGJyPqCgIDA6IDY3IDY2IDUwIGJhoCAxOSA2 ZCBkOSAzOKAgN2QgODYgYTkgZTCgIDQzIGNiIDU3IDBioCB8IGdmUC4ubS44fS4uLkMuVy48YnI+ oCAxMDogMTkgZDUgYTcgZTCgIDkwIDk5IGU1IDc4oCAwMyBmNiA1NSAyNqAgYzQgZjEgYmMgMDOg IHwgLi4uLi4uLnguLlUmYW1wO2FtcDsuLi4uPGJyPgqgoKCgoKCgoKCgoCB9PGJyPqCgoKCgoKCg oKCgIGNpcGhlcl9zdWl0ZSA9ICgweDAwMDQpIFNTTDMvUlNBL1JDNC0xMjgvTUQ1PGJyPqCgoKCg oKCgoKCgIGNvbXByZXNzaW9uIG1ldGhvZCA9IDAwPGJyPqCgoKCgoKCgIH08YnI+oKAgMDogMGIg MDAgMDcgMTigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHwgLi4uLjxi cj6goKCgoCB0eXBlID0gMTEgKGNlcnRpZmljYXRlKTxicj4KoKCgoKAgbGVuZ3RoID0gMTgxNiAo MHgwMDA3MTgpPGJyPqCgoKCgoKCgIENlcnRpZmljYXRlQ2hhaW4gezxicj6goKCgoKCgoKCgoCBj aGFpbmxlbmd0aCA9IDE4MTMgKDB4MDcxNSk8YnI+oKCgoKCgoKCgoKAgQ2VydGlmaWNhdGUgezxi cj6goKCgoKCgoKCgoKCgoCBzaXplID0gODkwICgweDAzN2EpPGJyPqCgoKCgoKCgoKCgoKCgIGRh dGEgPSB7IHNhdmVkIGluIGZpbGUgJiMzOTtjZXJ0LjAwMyYjMzk7IH08YnI+CqCgoKCgoKCgoKCg IH08YnI+oKCgoKCgoKCgoKAgQ2VydGlmaWNhdGUgezxicj6goKCgoKCgoKCgoKCgoCBzaXplID0g OTE3ICgweDAzOTUpPGJyPqCgoKCgoKCgoKCgoKCgIGRhdGEgPSB7IHNhdmVkIGluIGZpbGUgJiMz OTtjZXJ0LjAwNCYjMzk7IH08YnI+oKCgoKCgoKCgoKAgfTxicj6goKCgoKCgoCB9PGJyPqCgIDA6 IDBlIDAwIDAwIDAwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCB8IC4u Li48YnI+CqCgoKCgIHR5cGUgPSAxNCAoc2VydmVyX2hlbGxvX2RvbmUpPGJyPqCgoKCgIGxlbmd0 aCA9IDAgKDB4MDAwMDAwKTxicj6goCB9PGJyPn08YnI+Jmx0Oy9mb250Jmd0O108YnI+LS0mZ3Q7 IFs8YnI+Jmx0O2ZvbnQgY29sb3I9Ymx1ZSZndDsoMzMyIGJ5dGVzIG9mIDI2MCwgd2l0aCA2NyBs ZWZ0IG92ZXIpPGJyPlNTTFJlY29yZCB7IFtXZWQgTm92IDE4IDA5OjE0OjU2IDIwMDldPGJyPqCg IDA6IDE2IDAzIDAwIDAxoCAwNKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCB8 IC4uLi4uPGJyPgqgoCB0eXBloKCgID0gMjIgKGhhbmRzaGFrZSk8YnI+oKAgdmVyc2lvbiA9IHsg MywwIH08YnI+oKAgbGVuZ3RooCA9IDI2MCAoMHgxMDQpPGJyPqCgIGhhbmRzaGFrZSB7PGJyPqCg IDA6IDEwIDAwIDAxIDAwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCB8 IC4uLi48YnI+oKCgoKAgdHlwZSA9IDE2IChjbGllbnRfa2V5X2V4Y2hhbmdlKTxicj6goKCgoCBs ZW5ndGggPSAyNTYgKDB4MDAwMTAwKTxicj4KoKCgoKCgoKAgQ2xpZW50S2V5RXhjaGFuZ2Ugezxi cj6goKCgoKCgoKCgoCBtZXNzYWdlID0gey4uLn08YnI+oKCgoKCgoKAgfTxicj6goCB9PGJyPn08 YnI+KDMzMiBieXRlcyBvZiAxLCB3aXRoIDYxIGxlZnQgb3Zlcik8YnI+U1NMUmVjb3JkIHsgW1dl ZCBOb3YgMTggMDk6MTQ6NTYgMjAwOV08YnI+oKAgMDogMTQgMDMgMDAgMDCgIDAxoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHwgLi4uLi48YnI+CqCgIHR5cGWgoKAgPSAyMCAo Y2hhbmdlX2NpcGhlcl9zcGVjKTxicj6goCB2ZXJzaW9uID0geyAzLDAgfTxicj6goCBsZW5ndGig ID0gMSAoMHgxKTxicj6goCAwOiAwMaCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKAgfCAuPGJyPn08YnI+KDMzMiBieXRlcyBvZiA1Nik8YnI+U1NMUmVjb3Jk IHsgW1dlZCBOb3YgMTggMDk6MTQ6NTYgMjAwOV08YnI+CqCgIDA6IDE2IDAzIDAwIDAwoCAzOKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCB8IC4uLi44PGJyPqCgIHR5cGWgoKAg PSAyMiAoaGFuZHNoYWtlKTxicj6goCB2ZXJzaW9uID0geyAzLDAgfTxicj6goCBsZW5ndGigID0g NTYgKDB4MzgpPGJyPqCgoKCgoKCgoKCgICZsdDsgZW5jcnlwdGVkICZndDs8YnI+fTxicj4mbHQ7 L2ZvbnQmZ3Q7XTxicj5zc2x0YXA6IEVycm9yIC01OTYxOiBUQ1AgY29ubmVjdGlvbiByZXNldCBi eSBwZWVyLjogZXJyb3Igb24gc2VydmVyLXNpZGUgc29ja2V0Ljxicj4KQ29ubmVjdGlvbiAyIENv bXBsZXRlIFtXZWQgTm92IDE4IDA5OjE0OjU2IDIwMDldPGJyPjxicj48YnI+PGJyPjxkaXYgY2xh c3M9ImdtYWlsX3F1b3RlIj5PbiBUdWUsIE5vdiAxNywgMjAwOSBhdCA3OjIxIFBNLCBDaGFuZHJh c2VrYXIgS2FubmFuIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmNrYW5uYW5A cmVkaGF0LmNvbSI+Y2thbm5hbkByZWRoYXQuY29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj4K PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0iYm9yZGVyLWxlZnQ6IDFweCBz b2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IG1hcmdpbjogMHB0IDBwdCAwcHQgMC44ZXg7IHBhZGRp bmctbGVmdDogMWV4OyI+CgoKICAKCjxkaXYgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAw MCI+PGRpdiBjbGFzcz0iaW0iPgpPbiAxMS8xNy8yMDA5IDAxOjA5IFBNLCBKb2huIERvcm92c2tp IHdyb3RlOgo8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj5JdCB3YXMgbm90IGEgdHlwby4gSSBkaWQg dXNlIHRoZSBwb3J0IG51bWJlciA5NTQ1Ljxicj4KPC9ibG9ja3F1b3RlPgo8YnI+PC9kaXY+Ck9r LiBvbmUgaWRlYSB3b3VsZCBiZSB0byBydW4gdGhlIHV0aWxpdHkgJnF1b3Q7c3NsdGFwJnF1b3Q7 IGFzIGEgcHJveHk8YnI+CmFuZCB1c2luZyB5b3VyIGJyb3dzZXIgdG8gY29ubmVjdCB0byB0aGUg JnF1b3Q7c3NsdGFwJnF1b3Q7IHBvcnQgYW5kPGJyPgpwYXN0aW5nIHRoZSBvdXRwdXQgaGVyZSBz byBmb2xrcyBjYW4gc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nPGJyPgpkdXJpbmcgdGhlIFNTTCBo YW5kc2hha2UuPGJyPgo8YSBocmVmPSJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3Nl Y3VyaXR5L3BraS9uc3MvdG9vbHMvc3NsdGFwLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8v d3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3NlY3VyaXR5L3BraS9uc3MvdG9vbHMvc3NsdGFwLmh0 bWw8L2E+PGJyPgo8YnI+Cjxicj4KT24gYSBGZWRvcmEgMTAgc3lzdGVtLCBpdHMgcGFja2FnZWQg d2l0aCBuc3MtdG9vbHMgcnBtLjxicj4KPGJyPgpSdW4gc3NsdGFwIGxpa2UgdGhpcy4uLjxicj4K PGJyPgpzc2x0YXAgLXNmeGwgQ0FfSE9TVE5BTUU6Q0FfUE9SVDxicj4KPGJyPgppbiB5b3VyIGNh c2UsIGl0IHdpbGwgYmUgPGJyPgo8YnI+CnNzbHRhcCAtc2Z4bCBsb2NhbGhvc3Q6OTU0NTxicj4K PGJyPgpUaGVuIHVzZSBhIGJyb3dzZXIgYW5kIGNvbm5lY3QgdG8gc3NsdGFwLiBzc2x0YXA8YnI+ Cmxpc3RlbnMgb24gcG9ydCAxOTI0LiBTbyBvbiB0aGUgYnJvd3NlciB0eXBlLi48YnI+Cjxicj4K oDxhIGhyZWY9Imh0dHBzOi8vbG9jYWxob3N0LmxvY2FsZG9tYWluOjE5MjQiIHRhcmdldD0iX2Js YW5rIj5odHRwczovL2xvY2FsaG9zdC5sb2NhbGRvbWFpbjoxOTI0PC9hPjxicj4KPGJyPgo8YnI+ CnNzbHRhcCB3aWxsIGNhcHR1cmUgdGhlIHJlc3VsdHMgb2YgdGhlIHNzbCBoYW5kc2hha2UuIDxi cj4KPGJyPgpDb3B5IGFuZCBwYXN0ZSBpdCBoZXJlIHNvIHdlIGNhbiB0ZWxsIHdoYXQmIzM5O3Mg aGFwcGVuaW5nPGJyPgpkdXJpbmcgdGhhdCBwaGFzZSB3aGlsZSB5b3UgZ2V0IHRoZSBiYWQgbWFj IGFsZXJ0Ljxicj4KPGJyPgpUaGFua3MsPGJyPgotLUNoYW5kcmE8ZGl2PjxkaXY+PC9kaXY+PGRp diBjbGFzcz0iaDUiPjxicj4KPGJyPgo8YnI+Cjxicj4KPGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+ PGJyPgogIDxicj4KSm9objxicj4KICA8YnI+CiAgPGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPk9u IFR1ZSwgTm92IDE3LCAyMDA5IGF0IDM6NTEgUE0sIEFkZXd1bWksCkp1bGl1cy1wOTkzNzMgPHNw YW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86SnVsaXVzLkFkZXd1bWlAZ2RjNHMuY29t IiB0YXJnZXQ9Il9ibGFuayI+SnVsaXVzLkFkZXd1bWlAZ2RjNHMuY29tPC9hPiZndDs8L3NwYW4+ Cndyb3RlOjxicj4KICA8YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJib3Jk ZXItbGVmdDogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgbWFyZ2luOiAwcHQgMHB0IDBw dCAwLjhleDsgcGFkZGluZy1sZWZ0OiAxZXg7Ij48YnI+ClVubGVzcyBpdCYjMzk7cyBhIHR5cG8g b24geW91ciBwYXJ0LCB0aGUgdHdvIHBvcnQgbnVtYmVycyBhcmUgZGlmZmVyZW50Li4uPGJyPgpD b3VsZCB0aGF0IGJlIHRoZSBwcm9ibGVtPzxicj4KODQ0NSCgdnMgOTU0NTxicj4KICAgIDxicj4K RnJvbTogSnVsaXVzIEFkZXd1bWk8YnI+CkBHREM0Uy5jb208YnI+ClBoOjQ4MC00NDEtNjc2ODxi cj4KQ29udHJhY3QgQ29ycDpNVFNJPGJyPgogICAgPGRpdj48YnI+CiAgICA8YnI+Ci0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tPGJyPgpGcm9tOiA8YSBocmVmPSJtYWlsdG86cGtpLXVzZXJzLWJv dW5jZXNAcmVkaGF0LmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnBraS11c2Vycy1ib3VuY2VzQHJlZGhh dC5jb208L2E+ClttYWlsdG86PGEgaHJlZj0ibWFpbHRvOnBraS11c2Vycy1ib3VuY2VzQHJlZGhh dC5jb20iIHRhcmdldD0iX2JsYW5rIj5wa2ktdXNlcnMtYm91bmNlc0ByZWRoYXQuY29tPC9hPl08 YnI+Ck9uIEJlaGFsZiBPZiBDaHJpc3RpbmEgRnU8YnI+ClNlbnQ6IFR1ZXNkYXksIE5vdmVtYmVy IDE3LCAyMDA5IDEyOjU2IFBNPGJyPgpUbzogPGEgaHJlZj0ibWFpbHRvOnBraS11c2Vyc0ByZWRo YXQuY29tIiB0YXJnZXQ9Il9ibGFuayI+cGtpLXVzZXJzQHJlZGhhdC5jb208L2E+PGJyPgogICAg PC9kaXY+CiAgICA8ZGl2PgogICAgPGRpdj5DYzogPGEgaHJlZj0ibWFpbHRvOmpvaG5kb3JvdnNr aUBnb29nbGVtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmpvaG5kb3JvdnNraUBnb29nbGVtYWls LmNvbTwvYT48YnI+ClN1YmplY3Q6IFtQa2ktdXNlcnNdIChmb3J3YXJkZWQpIEhlbHAgbmVlZGVk IG9uIGRvZ3RhZzxicj4KICAgIDxicj4KSSBtaWdodCBoYXZlIG1lc3NlZCB1cCB3aGVuIG1hbmFn aW5nIHBraS11c2VycyBhbmQgdGhpcyBkaWQgbm90IGNvbWU8YnI+CnRocm91Z2guIKBIZW5jZSB0 aGUgZm9yd2FyZC48YnI+CkNocmlzdGluYTxicj4KICAgIDxicj4KU3ViamVjdDo8YnI+CkhlbHAg bmVlZGVkIG9uIGRvZ3RhZzxicj4KRnJvbTo8YnI+CkpvaG4gRG9yb3Zza2kgJmx0OzxhIGhyZWY9 Im1haWx0bzpqb2huZG9yb3Zza2lAZ29vZ2xlbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5qb2hu ZG9yb3Zza2lAZ29vZ2xlbWFpbC5jb208L2E+Jmd0Ozxicj4KRGF0ZTo8YnI+ClR1ZSwgMTcgTm92 IDIwMDkgMTA6NTg6MTggLTA1MDA8YnI+CiAgICA8YnI+ClRvOjxicj4KICAgIDxhIGhyZWY9Im1h aWx0bzpwa2ktdXNlcnNAcmVkaGF0LmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnBraS11c2Vyc0ByZWRo YXQuY29tPC9hPjxicj4KICAgIDxicj4KICAgIDxicj4KSGksPGJyPgogICAgPGJyPgpJIGp1c3Qg aW5zdGFsbGVkIGEgZG9ndGFnICgxLjIuMCkgaW5zdGFuY2Ugb24gbXkgRmVkb3JhIDEwIHN5c3Rl bS48YnI+CkkgdXNlZCBhIFNhZmVOZXQgUHJvdGVjdFNlcnZlciBHb2xkIEhTTSBhcyBrZXlzdG9y ZS48YnI+ClRoZSBkb2d0YWcgc3lzdGVtIGluc3RhbGxhdGlvbiBhbmQgY29uZmlndXJhdGlvbiB3 ZXJlIGZpbmUuIE5vIGVycm9yIHdhczxicj4KcmVwb3J0ZWQuPGJyPgpBbGwga2V5cyBhbmQgY2Vy dGlmaWNhdGVzIHdlcmUgZ2VuZXJhdGVkIGluc2lkZSB0aGUgSFNNLjxicj4KICAgIDxicj4KQnV0 IHdoZW4gSSB0cmllZCB0byBhY2Nlc3MgdGhlIHNlY3VyZSBhZG1pbiBpbnRlcmZhY2UgYXQ8YnI+ CqAgoCA8YSBocmVmPSJodHRwczovL2xvY2FsaG9zdDpsb2NhbGRvbWFpbjo5NTQ1IiB0YXJnZXQ9 Il9ibGFuayI+aHR0cHM6Ly9sb2NhbGhvc3Q6bG9jYWxkb21haW46OTU0NTwvYT48YnI+CkkgZ290 IGVycm9yIG1lc3NhZ2U6PGJyPgqgIKBTZWN1cmUgQ29ubmVjdGlvbiBGYWlsZWQ8YnI+CqAgoEFu IGVycm9yIG9jY3VycmVkIGR1cmluZyBhIGNvbm5lY3Rpb24gdG8gbG9jYWxob3N0LmxvY2FsZG9t YWluOjg0NDU8YnI+CqAgoFNTTCBwZWVyIHJlcG9ydHMgaW5jb3JyZWN0IE1lc3NhZ2UgQXV0aGVu dGljYXRpb24gQ29kZS48YnI+CqAgoChFcnJvciBjb2RlOiBzc2xfZXJyb3JfYmFkX21hY19hbGVy dCk8YnI+CiAgICA8YnI+CkkgY2hlY2tlZCB0aGUgc2VydmVyIGNlcnRpZmljYXRlICh2aWV3ZWQg aXQgd2l0aCBJRSBvbiBhIFdpbmRvd3MgYm94KS48YnI+Ckl0IHNlZW1zIGZpbmUuPGJyPgogICAg PGJyPgpEb2VzIGFueSBib2R5IGtub3cgd2hhdCBpcyB3cm9uZyBhbmQgaG93IGNhbiBJIGZpeCBp dD88YnI+CiAgICA8YnI+ClRoYW5rcyw8YnI+CiAgICA8YnI+CkpvaG48YnI+CiAgICA8YnI+Cl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgpQa2ktdXNl cnMgbWFpbGluZyBsaXN0PGJyPgogICAgPGEgaHJlZj0ibWFpbHRvOlBraS11c2Vyc0ByZWRoYXQu Y29tIiB0YXJnZXQ9Il9ibGFuayI+UGtpLXVzZXJzQHJlZGhhdC5jb208L2E+PGJyPgogICAgPGEg aHJlZj0iaHR0cHM6Ly93d3cucmVkaGF0LmNvbS9tYWlsbWFuL2xpc3RpbmZvL3BraS11c2VycyIg dGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vd3d3LnJlZGhhdC5jb20vbWFpbG1hbi9saXN0aW5mby9w a2ktdXNlcnM8L2E+PGJyPgogICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Jsb2NrcXVvdGU+CiAg PC9kaXY+CiAgPGJyPgogIDxwcmU+PGZpZWxkc2V0PjwvZmllbGRzZXQ+Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClBraS11c2VycyBtYWlsaW5nIGxpc3QK PGEgaHJlZj0ibWFpbHRvOlBraS11c2Vyc0ByZWRoYXQuY29tIiB0YXJnZXQ9Il9ibGFuayI+UGtp LXVzZXJzQHJlZGhhdC5jb208L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LnJlZGhhdC5jb20vbWFp bG1hbi9saXN0aW5mby9wa2ktdXNlcnMiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL3d3dy5yZWRo YXQuY29tL21haWxtYW4vbGlzdGluZm8vcGtpLXVzZXJzPC9hPgogIDwvcHJlPgo8L2Jsb2NrcXVv dGU+Cjxicj4KPC9kaXY+PC9kaXY+PC9kaXY+Cgo8YnI+X19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX188YnI+ClBraS11c2VycyBtYWlsaW5nIGxpc3Q8YnI+Cjxh IGhyZWY9Im1haWx0bzpQa2ktdXNlcnNAcmVkaGF0LmNvbSI+UGtpLXVzZXJzQHJlZGhhdC5jb208 L2E+PGJyPgo8YSBocmVmPSJodHRwczovL3d3dy5yZWRoYXQuY29tL21haWxtYW4vbGlzdGluZm8v cGtpLXVzZXJzIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly93d3cucmVkaGF0LmNvbS9tYWlsbWFu L2xpc3RpbmZvL3BraS11c2VyczwvYT48YnI+Cjxicj48L2Jsb2NrcXVvdGU+PC9kaXY+PGJyPgo= --===============8831252647404276941==--