1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
|
Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194]
helo=mx.sourceforge.net)
by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76)
(envelope-from <mh.in.england@gmail.com>) id 1WNflp-0007sH-Rx
for bitcoin-development@lists.sourceforge.net;
Wed, 12 Mar 2014 09:48:17 +0000
Received-SPF: pass (sog-mx-4.v43.ch3.sourceforge.com: domain of gmail.com
designates 74.125.82.44 as permitted sender)
client-ip=74.125.82.44; envelope-from=mh.in.england@gmail.com;
helo=mail-wg0-f44.google.com;
Received: from mail-wg0-f44.google.com ([74.125.82.44])
by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128)
(Exim 4.76) id 1WNflo-00086B-Nf
for bitcoin-development@lists.sourceforge.net;
Wed, 12 Mar 2014 09:48:17 +0000
Received: by mail-wg0-f44.google.com with SMTP id m15so8842664wgh.27
for <bitcoin-development@lists.sourceforge.net>;
Wed, 12 Mar 2014 02:48:10 -0700 (PDT)
X-Received: by 10.194.5.5 with SMTP id o5mr285694wjo.16.1394617690638;
Wed, 12 Mar 2014 02:48:10 -0700 (PDT)
Received: from waterford.local (84-75-251-165.dclient.hispeed.ch.
[84.75.251.165])
by mx.google.com with ESMTPSA id r3sm68317737wjw.0.2014.03.12.02.48.07
for <bitcoin-development@lists.sourceforge.net>
(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
Wed, 12 Mar 2014 02:48:08 -0700 (PDT)
Sender: Mike Hearn <mh.in.england@gmail.com>
Message-ID: <53202D51.8010008@plan99.net>
Date: Wed, 12 Mar 2014 10:48:01 +0100
From: Mike Hearn <mike@plan99.net>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9;
rv:24.0) Gecko/20100101 Thunderbird/24.3.0
MIME-Version: 1.0
To: bitcoin-development@lists.sourceforge.net
References: <CANAnSg3Bt0e7CfUcJXe96xhU6nqif9ey_vurZMZkSa9OHjHStw@mail.gmail.com> <CABsx9T0SMi6Gp4JY=CpHxLEu5pVkvDmnug7PsY7m_dvtT7khzg@mail.gmail.com> <531DFDF8.80008@gmail.com> <531E52FE.5090107@jerviss.org> <531E5454.1030601@gmail.com> <CAJHLa0NZkzQQvMxgCJAJGT=Yn6vrVNK8Bg7RAfAjctpnrfg5zA@mail.gmail.com> <CABsx9T3eViYDsEmLm7ceimJNwci3mCOxWoVnVZHrqp7pDmm0+g@mail.gmail.com> <CANAnSg2kzPF0886PsQW8chzsWi6Urp+=-x+9bbv8Mv6hmpvBPw@mail.gmail.com> <CAJHLa0Mu2kiv3CCme7BPwzWtT++PNLQ2aAKdLyA8LFTtXEg9fg@mail.gmail.com> <CABsx9T0Lvg84qFVRbc7Ef4vZEQj9eO7Jhup5PTRLLeuJFvXi-w@mail.gmail.com> <4fca6b510dd57d2f92affeb988d2ee5d.squirrel@fulvetta.riseup.net> <531FAA55.2020108@xeno-genesis.com>
<531FC808.7060709@gmail.com>
<9A6499BC-E546-45CC-A7EF-5182FC86052D@gmail.com>
In-Reply-To: <9A6499BC-E546-45CC-A7EF-5182FC86052D@gmail.com>
Content-Type: multipart/signed; protocol="application/pkcs7-signature";
micalg=sha1; boundary="------------ms030003040501000006060801"
X-Spam-Score: -0.5 (/)
X-Spam-Report: Spam Filtering performed by mx.sourceforge.net.
See http://spamassassin.org/tag/ for more details.
-1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for
sender-domain
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
(mh.in.england[at]gmail.com)
-0.0 SPF_PASS SPF: sender matches SPF record
1.0 HTML_MESSAGE BODY: HTML included in message
0.1 DKIM_SIGNED Message has a DKIM or DK signature,
not necessarily valid
-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
X-Headers-End: 1WNflo-00086B-Nf
Subject: Re: [Bitcoin-development] Multisign payment protocol?
X-BeenThere: bitcoin-development@lists.sourceforge.net
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: mike@plan99.net
List-Id: <bitcoin-development.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
<mailto:bitcoin-development-request@lists.sourceforge.net?subject=unsubscribe>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development>
List-Post: <mailto:bitcoin-development@lists.sourceforge.net>
List-Help: <mailto:bitcoin-development-request@lists.sourceforge.net?subject=help>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
<mailto:bitcoin-development-request@lists.sourceforge.net?subject=subscribe>
X-List-Received-Date: Wed, 12 Mar 2014 09:48:18 -0000
This is a cryptographically signed message in MIME format.
--------------ms030003040501000006060801
Content-Type: multipart/alternative;
boundary="------------080504090501060201080102"
This is a multi-part message in MIME format.
--------------080504090501060201080102
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable
Good to see so much activity! But please do remember, there's more to=20
"multisig" than just keys - you need the whole user experience to be=20
planned out and specced for fully interoperable implementations.
For the "group account for an organisation" feature, you don't really=20
want to expose end users to the notion of a key. Historically this has=20
just led to confusion (and an ugly visual explosion of padlocks and=20
small metal objects :) It'd be much better for the UI to be designed in=20
terms of people, perhaps with a bit of social network integration to=20
avoid having to set up profiles, and then a "group spend" feature would=20
behind the scenes rendezvous with the others and swap signatures around, =
etc. So for interop, you'd need to define all the rendezvous protocols=20
as well.
> CoinVault is also using a partially signed transaction format whereby=20
> 0-length placeholders are used for missing signatures in the=20
> transaction scripts.
I don't know how you are implementing this/what framework you're using,=20
but I suggest using placeholders that are the length of an actual=20
expected signature, at least when forming the transaction. This is what=20
bitcoinj will do because otherwise you could end up miscalculating the=20
fee, which is based on the final size. See TransactionSignature.dummy()=20
<http://plan99.net/%7Emike/bitcoinj/0.11/com/google/bitcoin/crypto/Transa=
ctionSignature.html#dummy%28%29>=20
in the API.
--------------080504090501060201080102
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta content=3D"text/html; charset=3DISO-8859-1"
http-equiv=3D"Content-Type">
</head>
<body bgcolor=3D"#FFFFFF" text=3D"#000000">
Good to see so much activity! But please do remember, there's more
to "multisig" than just keys - you need the whole user experience to
be planned out and specced for fully interoperable implementations.
<br>
<br>
For the "group account for an organisation" feature, you don't
really want to expose end users to the notion of a key. Historically
this has just led to confusion (and an ugly visual explosion of
padlocks and small metal objects :) It'd be much better for the UI
to be designed in terms of people, perhaps with a bit of social
network integration to avoid having to set up profiles, and then a
"group spend" feature would behind the scenes rendezvous with the
others and swap signatures around, etc. So for interop, you'd n=
eed
to define all the rendezvous protocols as well.<br>
<blockquote
cite=3D"mid:9A6499BC-E546-45CC-A7EF-5182FC86052D@gmail.com"
type=3D"cite">
<div>CoinVault is also using a partially signed transaction format
whereby 0-length placeholders are used for missing signatures in
the transaction scripts.<br>
</div>
</blockquote>
I don't know how you are implementing this/what framework you're
using, but I suggest using placeholders that are the length of an
actual expected signature, at least when forming the transaction.
This is what bitcoinj will do because otherwise you could end up
miscalculating the fee, which is based on the final size. See <a
href=3D"http://plan99.net/%7Emike/bitcoinj/0.11/com/google/bitcoin/crypto=
/TransactionSignature.html#dummy%28%29">TransactionSignature.dummy()</a>
in the API.<br>
</body>
</html>
--------------080504090501060201080102--
--------------ms030003040501000006060801
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature
MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIITYzCC
BjYwggUeoAMCAQICAwZyHzANBgkqhkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNV
BAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRl
IFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlh
dGUgQ2xpZW50IENBMB4XDTEzMDQyMTAxMTQ1NFoXDTE0MDQyMjEzMjIzM1owVTEZMBcGA1UE
DRMQa2lMZ1R2Y1FkWWNCMkpXUDEYMBYGA1UEAwwPbWlrZUBwbGFuOTkubmV0MR4wHAYJKoZI
hvcNAQkBFg9taWtlQHBsYW45OS5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQDS3hjsiRaqv4xER7PvF/wsHGfjUbPNFHWGTk25UGhOfphCyzQpy/ueRFsn63vM1FR13EXZ
2hhEwguUuXnZAcYw8W3zw+qPEeMyKGch6cYxXfo/fKwhLB1JL48oMNgCxqeb1d6QWi5mGt9t
yeBPlQlesH6ULAWkIGXvcixOOIUXyddjm6cFSCa2qE6OnoV/vip/7SjIXuFkLj5uIAxxhUB8
4rCH/f9Nw5/ZESHqocY3yF0+qLIkD4XS4u+iI84tlGmx64xqYr4VkKGPoXS07j7AisN2fzKd
iu5xozz7hyMkbIWz8rPRKXMf4fNVyRkwBam7MBycH7urXVdBqRTh8M6tAgMBAAGjggLVMIIC
0TAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
AwQwHQYDVR0OBBYEFMhHCWNyFstsl8xCvoc4e7TtfabFMB8GA1UdIwQYMBaAFFNy7ZKc4NrL
AVx8fpY1TvLUuFGCMBoGA1UdEQQTMBGBD21pa2VAcGxhbjk5Lm5ldDCCAUwGA1UdIASCAUMw
ggE/MIIBOwYLKwYBBAGBtTcBAgMwggEqMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0YXJ0
c3NsLmNvbS9wb2xpY3kucGRmMIH3BggrBgEFBQcCAjCB6jAnFiBTdGFydENvbSBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eTADAgEBGoG+VGhpcyBjZXJ0aWZpY2F0ZSB3YXMgaXNzdWVkIGFj
Y29yZGluZyB0byB0aGUgQ2xhc3MgMSBWYWxpZGF0aW9uIHJlcXVpcmVtZW50cyBvZiB0aGUg
U3RhcnRDb20gQ0EgcG9saWN5LCByZWxpYW5jZSBvbmx5IGZvciB0aGUgaW50ZW5kZWQgcHVy
cG9zZSBpbiBjb21wbGlhbmNlIG9mIHRoZSByZWx5aW5nIHBhcnR5IG9ibGlnYXRpb25zLjA2
BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9jcnR1MS1jcmwuY3Js
MIGOBggrBgEFBQcBAQSBgTB/MDkGCCsGAQUFBzABhi1odHRwOi8vb2NzcC5zdGFydHNzbC5j
b20vc3ViL2NsYXNzMS9jbGllbnQvY2EwQgYIKwYBBQUHMAKGNmh0dHA6Ly9haWEuc3RhcnRz
c2wuY29tL2NlcnRzL3N1Yi5jbGFzczEuY2xpZW50LmNhLmNydDAjBgNVHRIEHDAahhhodHRw
Oi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJKoZIhvcNAQEFBQADggEBAHfbDXMYzU6gEMskQQrG
mSgEClZU+8zeMKsPA035z+MF4esnIGssYORmuqsvOWorYr3zHMibjO6IwFlwYwQJSiBWC/nZ
TwclhRVcWgLGA/64YSz9bfpxhywNOmC7c/qSaInDg7zqMsZT06euqnrv0zE/Fk2juUKXa9E5
9zCzzMCTewXsC54PM6caDlf7v8a5qZDFdj8JaU6J2y/VTVFmCNFbARv9DA4ixEMOq4OuvIDE
StOmzPBqL8y1O4ts9kNLc9ZCnmChwJbgtTfOKqzt1fbZKaDQxTx5Rn3ZnZCQ2Xlu4BfffpAk
Faq+aSGnW6dE5o+yrbcKLtY7kmv4mg4KDMgwggZvMIIEV6ADAgECAhAA1cuJwpMAm+29AUvc
EJYCMA0GCSqGSIb3DQEBBQUAMEkxCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24g
QUcxIzAhBgNVBAMTGlN3aXNzU2lnbiBQbGF0aW51bSBDQSAtIEcyMB4XDTEwMDMwODE0MDUw
NFoXDTI1MDMwNDE0MDUwNFowVzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBB
RzExMC8GA1UEAxMoU3dpc3NTaWduIFN1aXNzZUlEIFBsYXRpbnVtIENBIDIwMTAgLSBHMjCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOHEhBFyMjQx3FmI90K1Tv+TgX6yFGiu
GrvhRHEhXuDL0Pf8Fd6fQxkk3/L5Y3IBzTyGKOIh2IfMSVZ+xyuzxuskviZ6ELJeXPAyO1BO
WVv5I3x4+OVvqw5soZ7UKhuxYz2UKD1nZQtpRpFdjRLXp1PlNI139jaUMNy4j7Rdwo5Yl6/A
XbrCZL1JtCLX2iWmxePsoBWvagJvWCxmGjDXJNewqCrAlbQ3WhSowZtwqJWXgeRgBGU8HQcB
ZxzafX175/kLjcIROcDGU+OqVVzWyZQq5xHW5ZolhIXovYwed/NYUrCmov8y2pXVUP2krtdF
mIOSipFH0llVUnE/o+j7TNkCAwEAAaOCAkMwggI/MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB
Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBTpRIaAkupOUHfJ55IIQtdfwMIlQjAfBgNVHSMEGDAW
gBRQr8wHhxVHbzjFtGXR3pWq6d+czDCB/wYDVR0fBIH3MIH0MEegRaBDhkFodHRwOi8vY3Js
LnN3aXNzc2lnbi5uZXQvNTBBRkNDMDc4NzE1NDc2RjM4QzVCNDY1RDFERTk1QUFFOURGOUND
QzCBqKCBpaCBooaBn2xkYXA6Ly9kaXJlY3Rvcnkuc3dpc3NzaWduLm5ldC9DTj01MEFGQ0Mw
Nzg3MTU0NzZGMzhDNUI0NjVEMURFOTVBQUU5REY5Q0NDJTJDTz1Td2lzc1NpZ24lMkNDPUNI
P2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmli
dXRpb25Qb2ludDBhBgNVHSAEWjBYMFYGBFUdIAAwTjBMBggrBgEFBQcCARZAaHR0cDovL3Jl
cG9zaXRvcnkuc3dpc3NzaWduLmNvbS9Td2lzc1NpZ24tUGxhdGludW0tQ1AtQ1BTLVIzLnBk
ZjB0BggrBgEFBQcBAQRoMGYwZAYIKwYBBQUHMAKGWGh0dHA6Ly9zd2lzc3NpZ24ubmV0L2Nn
aS1iaW4vYXV0aG9yaXR5L2Rvd25sb2FkLzUwQUZDQzA3ODcxNTQ3NkYzOEM1QjQ2NUQxREU5
NUFBRTlERjlDQ0MwDQYJKoZIhvcNAQEFBQADggIBADqGPh/QJ5/UqalbBwXt+K97bdnKFZ+d
/OhdFIh9SIWljTFWaKtP7Co17lqfpGa5DQKlsIb5OKoIZZcbZ4COw0huPtf/Uhp6XvA0754E
R3rAM1ZGx3wqDapShgZ4wqeovnHZszm96KY9DAneZEJD5LMN2E5AVyQ4jWlON2EUV29bhAIE
G4sypAYMWRqYw2uBUrOa8vmKtq13mlJT1pgkfcGUuZGdWp8n8MkUphUCv2zzIpAsPckntvA7
c/ZzDcGZhzRr4RmFBfhdEBzG/rHWxsekw+OuX6nWHuTO/2KRJUb0uoyjj0nKlGaKtMcawWpH
OFz0IDTgqwkbtDyoETlnlBr982cPLmOV8uQyaHuxe2p8RCYE8PQONUtFg4e+SMI6/ZfdUvSM
3ohkd4Okuoa3pPfD1o3R5gHyKPRRxgkl2yRX2vefIfNkCp8nVMu/Xp18EXD275cNRaE5AVoH
NLnHiMd41TJVOzchPtDwojCFjP2AW59AdCpk2G9oXXXvGAxqdjPqm1tsEL9YIwvb7ZtBJ7NW
3pjdxoHlkMUFzAGFwyVm/nRctbDiML4c6d9XotOseAtxLokFyDc5EHYDi/+2+Xua9tzOMVnS
Er/SBB8D3OCLlydjQawfM5PUZmUXEDo3h3cAzO5/otxZT4y9v0rVdvKiLj4sM2I0Ic0DgUDP
u8XeMIIGsjCCBZqgAwIBAgIPANx8/BLY69N8jqJlrxIhMA0GCSqGSIb3DQEBBQUAMFcxCzAJ
BgNVBAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxMTAvBgNVBAMTKFN3aXNzU2lnbiBT
dWlzc2VJRCBQbGF0aW51bSBDQSAyMDEwIC0gRzIwHhcNMTMxMTIxMTQyOTQ4WhcNMTQxMTIx
MTQyOTQ4WjBnMScwJQYDVQQDEx5NaWNoYWVsIEhlYXJuIChBdXRoZW50aWNhdGlvbikxHjAc
BgkqhkiG9w0BCQEWD21pa2VAcGxhbjk5Lm5ldDEcMBoGA1UEBRMTMTMwMC04MDE1LTE1ODYt
OTExODCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIYAJCuTx/50SHEHAWWpkeD+
45EveoPrnf06ot9mxJYEs7rlumlszhNJ/10eR1n+NJg8dXUY9FjN3bf+wpdSqJqEoXyLDcR8
XBuNtL6XqEDUHfK/E6JKIwl+mOZfk5QL0j3RoSMhDlxt6bq8juFwWTWB1ZGfX8IQu22rtbG5
+5nFNqm2v08JEQxiBUogppes/KwTIif3EiCNkHDYEvs4r/NlIc+IuBlTTzpnoG6B5BPKk/oK
LhHlVjC4r1w2wMEBdXwWhO+c/1q/sNCumCbUu6AG4MCBCaXvP9fzkvByPOOvtNnjMU4Q/r6s
J8XEKPhKYnL6KpjrI5yxK0BtXEwOeekCAwEAAaOCA2kwggNlME8GA1UdEQRIMEaBD21pa2VA
cGxhbjk5Lm5ldKAzBgorBgEEAYI3FAIDoCUMIzEzMDAtODAxNS0xNTg2LTkxMThAdXBuLnN1
aXNzZWlkLmNoMA4GA1UdDwEB/wQEAwIHgDApBgNVHSUEIjAgBggrBgEFBQcDAgYIKwYBBQUH
AwQGCisGAQQBgjcUAgIwHQYDVR0OBBYEFKfCRgaifaqSozZbYdew4UPqSABvMB8GA1UdIwQY
MBaAFOlEhoCS6k5Qd8nnkghC11/AwiVCMIH/BgNVHR8EgfcwgfQwR6BFoEOGQWh0dHA6Ly9j
cmwuc3dpc3NzaWduLm5ldC9FOTQ0ODY4MDkyRUE0RTUwNzdDOUU3OTIwODQyRDc1RkMwQzIy
NTQyMIGooIGloIGihoGfbGRhcDovL2RpcmVjdG9yeS5zd2lzc3NpZ24ubmV0L0NOPUU5NDQ4
NjgwOTJFQTRFNTA3N0M5RTc5MjA4NDJENzVGQzBDMjI1NDIlMkNPPVN3aXNzU2lnbiUyQ0M9
Q0g/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3Ry
aWJ1dGlvblBvaW50MIG2BgNVHSAEga4wgaswgZsGCGCFdAUaAQECMIGOMEwGCCsGAQUFBwIB
FkBodHRwOi8vcmVwb3NpdG9yeS5zd2lzc3NpZ24uY29tL1N3aXNzU2lnbi1QbGF0aW51bS1D
UC1DUFMtUjMucGRmMD4GCCsGAQUFBwICMDIaMFN1aXNzZUlEIGlkZW50aXR5IGFuZCBhdXRo
ZW50aWNhdGlvbiBjZXJ0aWZpY2F0ZTALBglghXQBWQEBAQEwgdsGCCsGAQUFBwEBBIHOMIHL
MGQGCCsGAQUFBzAChlhodHRwOi8vc3dpc3NzaWduLm5ldC9jZ2ktYmluL2F1dGhvcml0eS9k
b3dubG9hZC9FOTQ0ODY4MDkyRUE0RTUwNzdDOUU3OTIwODQyRDc1RkMwQzIyNTQyMGMGCCsG
AQUFBzABhldodHRwOi8vcGxhdGludW0tc3Vpc3NlaWQtZzIub2NzcC5zd2lzc3NpZ24ubmV0
L0U5NDQ4NjgwOTJFQTRFNTA3N0M5RTc5MjA4NDJENzVGQzBDMjI1NDIwDQYJKoZIhvcNAQEF
BQADggEBAEBDcfYbGoZxqN7v/JLMudzsWZGkiEnunuF09Yv6NKmegynfZ6Gdi723JcsjaN0P
VuE1NaT+Ncn+CXC9ubMdc+1P3vWXu702TfxmfoL9tIGgqpv3EFhdfT480z6mF7yYxiunrokM
wAjfyBI8Xrs2oppdNo6RZx9Vazb4H4m/1kAi/ctXSumi8fZ6D9wlwp3dGVoWCHYdXuDWV3rU
RSiCNc/4gJXrx5hHSwL9F4ChQOkZwXcQhXcOhO3M9k1Et5ufSJKxN8/97MBlfpYO0OtGTTAH
rJINfs4TaWmPRcgXUQ15NiuNyLYBOTK/PiwnRsKCKH17mzBNdhJ+g7jp0N/JqhsxggOyMIID
rgIBATBqMFcxCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxMTAvBgNVBAMT
KFN3aXNzU2lnbiBTdWlzc2VJRCBQbGF0aW51bSBDQSAyMDEwIC0gRzICDwDcfPwS2OvTfI6i
Za8SITAJBgUrDgMCGgUAoIICHTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3
DQEJBTEPFw0xNDAzMTIwOTQ4MDVaMCMGCSqGSIb3DQEJBDEWBBRptSLCap5dy0nsKgRG7fNU
85zuRTBsBgkqhkiG9w0BCQ8xXzBdMAsGCWCGSAFlAwQBKjALBglghkgBZQMEAQIwCgYIKoZI
hvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3
DQMCAgEoMIGlBgkrBgEEAYI3EAQxgZcwgZQwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1T
dGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWdu
aW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENs
aWVudCBDQQIDBnIfMIGnBgsqhkiG9w0BCRACCzGBl6CBlDCBjDELMAkGA1UEBhMCSUwxFjAU
BgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmlj
YXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1l
ZGlhdGUgQ2xpZW50IENBAgMGch8wDQYJKoZIhvcNAQEBBQAEggEAakvjJJkRTn9CH3iW51fu
wDFxjoAqGkK17o1n6hANlMMWYYMg4p2u6R/TurevIHYjksEqbzDx8Gnn0ibTLaFqlBw4QdAL
SFqFAeTdsCpKtqEXDgbBQ70f5A+kz4VV5C0kJuJ29E9a3A8/r44h7nHx8xkz6naam20zrjwj
w0VZp1CVNHXYUrHBdjlUuNads38TZwkGcInSCXWhjzWSuenm8DXGf9ytE1I3MQEK+UgBq8De
Zbjtl7Qj339w2vr9zuBoWY1yNHIMMQOrQi8xESsmzK11QcE5YJM5rrlRI8Q9dBYbwidfh7MJ
ELVEEGygVY/IRrEpq1iLvllVVMPNH7g2CgAAAAAAAA==
--------------ms030003040501000006060801--
|