@scure/btc-signer 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +189 -39
- package/index.d.ts +15 -5
- package/index.d.ts.map +1 -1
- package/index.js +16 -6
- package/index.js.map +1 -1
- package/musig2.d.ts +202 -64
- package/musig2.d.ts.map +1 -1
- package/musig2.js +324 -87
- package/musig2.js.map +1 -1
- package/p2p.d.ts +17 -7
- package/p2p.d.ts.map +1 -1
- package/p2p.js +40 -4
- package/p2p.js.map +1 -1
- package/package.json +25 -10
- package/payment.d.ts +407 -38
- package/payment.d.ts.map +1 -1
- package/payment.js +504 -57
- package/payment.js.map +1 -1
- package/psbt.d.ts +2958 -559
- package/psbt.d.ts.map +1 -1
- package/psbt.js +462 -118
- package/psbt.js.map +1 -1
- package/script.d.ts +311 -132
- package/script.d.ts.map +1 -1
- package/script.js +246 -35
- package/script.js.map +1 -1
- package/src/index.ts +34 -11
- package/src/musig2.ts +387 -145
- package/src/p2p.ts +54 -18
- package/src/payment.ts +823 -226
- package/src/psbt.ts +633 -228
- package/src/script.ts +353 -117
- package/src/transaction.ts +593 -169
- package/src/utils.ts +322 -43
- package/src/utxo.ts +154 -51
- package/transaction.d.ts +242 -31
- package/transaction.d.ts.map +1 -1
- package/transaction.js +460 -100
- package/transaction.js.map +1 -1
- package/utils.d.ts +266 -24
- package/utils.d.ts.map +1 -1
- package/utils.js +278 -27
- package/utils.js.map +1 -1
- package/utxo.d.ts +438 -75
- package/utxo.d.ts.map +1 -1
- package/utxo.js +123 -36
- package/utxo.js.map +1 -1
package/transaction.d.ts
CHANGED
|
@@ -3,7 +3,17 @@ import { type CustomScript } from './payment.ts';
|
|
|
3
3
|
import * as psbt from './psbt.ts';
|
|
4
4
|
import { RawOutput } from './script.ts';
|
|
5
5
|
import * as u from './utils.ts';
|
|
6
|
-
import { type Bytes } from './utils.ts';
|
|
6
|
+
import { type Bytes, type TArg, type TRet } from './utils.ts';
|
|
7
|
+
/**
|
|
8
|
+
* Converts transaction weight units into virtual bytes.
|
|
9
|
+
* @param weight - transaction weight
|
|
10
|
+
* @returns Rounded-up virtual size.
|
|
11
|
+
* @example
|
|
12
|
+
* Convert transaction weight units into virtual bytes.
|
|
13
|
+
* ```ts
|
|
14
|
+
* toVsize(4);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
7
17
|
export declare const toVsize: (weight: number) => number;
|
|
8
18
|
interface HDKey {
|
|
9
19
|
publicKey: Bytes;
|
|
@@ -13,69 +23,225 @@ interface HDKey {
|
|
|
13
23
|
deriveChild(index: number): HDKey;
|
|
14
24
|
sign(hash: Bytes): Bytes;
|
|
15
25
|
}
|
|
26
|
+
/** Signing source accepted by transaction signing helpers. */
|
|
16
27
|
export type Signer = Bytes | HDKey;
|
|
28
|
+
/** Decimal precision used for BTC string formatting. */
|
|
17
29
|
export declare const PRECISION = 8;
|
|
30
|
+
/** Default transaction version used for newly created transactions. */
|
|
18
31
|
export declare const DEFAULT_VERSION = 2;
|
|
32
|
+
/** Default transaction locktime. */
|
|
19
33
|
export declare const DEFAULT_LOCKTIME = 0;
|
|
34
|
+
/** Default input sequence number.
|
|
35
|
+
* Final (`0xffffffff`): matches the PSBT omission default and disables nLockTime/CLTV semantics
|
|
36
|
+
* unless callers choose a lower sequence explicitly (for example `0xfffffffe` with lockTime).
|
|
37
|
+
*/
|
|
20
38
|
export declare const DEFAULT_SEQUENCE = 4294967295;
|
|
39
|
+
/**
|
|
40
|
+
* Decimal coder for BTC-denominated strings.
|
|
41
|
+
* This is a fixed-precision BTC-string to satoshi-bigint helper, not a validator
|
|
42
|
+
* for transaction/PSBT output amounts. Signed values are intentional here, so
|
|
43
|
+
* callers can reuse the helper for display/history-style deltas as well as
|
|
44
|
+
* unsigned transfer amounts. It keeps the BTC scale at 8 fractional digits and
|
|
45
|
+
* rejects over-precise inputs instead of rounding.
|
|
46
|
+
* @example
|
|
47
|
+
* Convert between satoshi bigint values and BTC-denominated decimal strings.
|
|
48
|
+
* ```ts
|
|
49
|
+
* Decimal.encode(1n);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
21
52
|
export declare const Decimal: P.Coder<bigint, string>;
|
|
53
|
+
/**
|
|
54
|
+
* Returns a fallback only when the value is `undefined`.
|
|
55
|
+
* @param value - optional value
|
|
56
|
+
* @param def - fallback value
|
|
57
|
+
* @returns `value` when defined, otherwise `def`.
|
|
58
|
+
* @example
|
|
59
|
+
* Keep zero-like values but replace `undefined` with a fallback.
|
|
60
|
+
* ```ts
|
|
61
|
+
* def(undefined, 1);
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
22
64
|
export declare const def: <T>(value: T | undefined, def: T) => T;
|
|
65
|
+
/**
|
|
66
|
+
* Deep-clones plain transaction data structures.
|
|
67
|
+
* @param obj - value to clone
|
|
68
|
+
* @returns Deep copy of the input value.
|
|
69
|
+
* @throws If the value contains an unsupported runtime type. {@link Error}
|
|
70
|
+
* @example
|
|
71
|
+
* Clone plain transaction data structures before mutating them.
|
|
72
|
+
* ```ts
|
|
73
|
+
* cloneDeep({ a: [new Uint8Array([1])] });
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
23
76
|
export declare function cloneDeep<T>(obj: T): T;
|
|
77
|
+
/** Transaction construction and parsing options. */
|
|
24
78
|
export interface TxOpts {
|
|
79
|
+
/** Transaction version to place into new transactions and imported PSBTs. */
|
|
25
80
|
version?: number;
|
|
81
|
+
/** Global locktime for the transaction. */
|
|
26
82
|
lockTime?: number;
|
|
83
|
+
/** PSBT version to emit when serializing. */
|
|
27
84
|
PSBTVersion?: number;
|
|
85
|
+
/** Allow transaction versions outside the standard small set. */
|
|
28
86
|
allowUnknownVersion?: boolean;
|
|
29
|
-
/**
|
|
87
|
+
/**
|
|
88
|
+
* Deprecated alias for {@link allowUnknownOutputs}.
|
|
89
|
+
* @deprecated Use `allowUnknownOutputs`.
|
|
90
|
+
*/
|
|
30
91
|
allowUnknowOutput?: boolean;
|
|
92
|
+
/** Allow outputs with scripts this library does not recognize. */
|
|
31
93
|
allowUnknownOutputs?: boolean;
|
|
32
|
-
/**
|
|
94
|
+
/**
|
|
95
|
+
* Deprecated alias for {@link allowUnknownInputs}.
|
|
96
|
+
* @deprecated Use `allowUnknownInputs`.
|
|
97
|
+
*/
|
|
33
98
|
allowUnknowInput?: boolean;
|
|
99
|
+
/** Allow signing and finalizing inputs with unknown script shapes. */
|
|
34
100
|
allowUnknownInputs?: boolean;
|
|
101
|
+
/** Skip redeem-script and witness-script consistency checks. */
|
|
35
102
|
disableScriptCheck?: boolean;
|
|
103
|
+
/** Match the odd empty-output encoding used by `bip174js`. */
|
|
36
104
|
bip174jsCompat?: boolean;
|
|
105
|
+
/** Permit legacy inputs that only provide witness UTXO data. */
|
|
37
106
|
allowLegacyWitnessUtxo?: boolean;
|
|
107
|
+
/** Grind ECDSA signatures until they use a low-R encoding. */
|
|
38
108
|
lowR?: boolean;
|
|
109
|
+
/** UNSAFE: additional custom payment-script codecs and finalizers. */
|
|
39
110
|
customScripts?: CustomScript[];
|
|
111
|
+
/** Preserve unknown PSBT key/value pairs instead of stripping them. */
|
|
40
112
|
allowUnknown?: boolean;
|
|
41
113
|
}
|
|
42
114
|
/**
|
|
43
115
|
* Internal, exported only for backwards-compat. Use `SigHash` instead.
|
|
44
|
-
* @deprecated
|
|
116
|
+
* @deprecated Use {@link SigHash} instead.
|
|
117
|
+
* @example
|
|
118
|
+
* Combine the legacy bit flags when interoperating with older code.
|
|
119
|
+
* ```ts
|
|
120
|
+
* SignatureHash.ALL | SignatureHash.ANYONECANPAY;
|
|
121
|
+
* ```
|
|
45
122
|
*/
|
|
46
|
-
export declare const SignatureHash: {
|
|
47
|
-
DEFAULT:
|
|
48
|
-
ALL:
|
|
49
|
-
NONE:
|
|
50
|
-
SINGLE:
|
|
51
|
-
ANYONECANPAY:
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
123
|
+
export declare const SignatureHash: Readonly<{
|
|
124
|
+
readonly DEFAULT: 0;
|
|
125
|
+
readonly ALL: 1;
|
|
126
|
+
readonly NONE: 2;
|
|
127
|
+
readonly SINGLE: 3;
|
|
128
|
+
readonly ANYONECANPAY: 128;
|
|
129
|
+
}>;
|
|
130
|
+
/**
|
|
131
|
+
* Common signature hash flag combinations.
|
|
132
|
+
* @example
|
|
133
|
+
* Use the predefined signature-hash combinations exported by the library.
|
|
134
|
+
* ```ts
|
|
135
|
+
* SigHash.SINGLE_ANYONECANPAY;
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
export declare const SigHash: Readonly<{
|
|
139
|
+
readonly DEFAULT: 0;
|
|
140
|
+
readonly ALL: 1;
|
|
141
|
+
readonly NONE: 2;
|
|
142
|
+
readonly SINGLE: 3;
|
|
59
143
|
readonly ALL_ANYONECANPAY: number;
|
|
60
144
|
readonly NONE_ANYONECANPAY: number;
|
|
61
145
|
readonly SINGLE_ANYONECANPAY: number;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
146
|
+
}>;
|
|
147
|
+
/** Reverse lookup table for signature hash flag names. */
|
|
148
|
+
export declare const SigHashNames: Readonly<{
|
|
149
|
+
[x: number]: "DEFAULT" | "ALL" | "NONE" | "SINGLE" | "ALL_ANYONECANPAY" | "NONE_ANYONECANPAY" | "SINGLE_ANYONECANPAY";
|
|
150
|
+
}>;
|
|
151
|
+
/** Signature-hash flag number accepted by signing helpers. */
|
|
66
152
|
export type SigHash = u.ValueOf<typeof SigHash>;
|
|
153
|
+
/** Minimal transaction input fields required to serialize and sign. */
|
|
67
154
|
export type TransactionInputRequired = {
|
|
155
|
+
/** Previous transaction id being spent. */
|
|
68
156
|
txid: Bytes;
|
|
157
|
+
/** Previous output index inside that transaction. */
|
|
69
158
|
index: number;
|
|
159
|
+
/** Final sequence number that will be serialized for the input. */
|
|
70
160
|
sequence: number;
|
|
161
|
+
/** Final scriptSig bytes that will be serialized for the input. */
|
|
71
162
|
finalScriptSig: Bytes;
|
|
72
163
|
};
|
|
73
|
-
|
|
74
|
-
|
|
164
|
+
/**
|
|
165
|
+
* Normalizes a PSBT input into the fields needed for signing.
|
|
166
|
+
* @param i - PSBT input to validate
|
|
167
|
+
* @returns Input fields required for signing.
|
|
168
|
+
* @throws If the input is missing `txid` or `index`. {@link Error}
|
|
169
|
+
* @example
|
|
170
|
+
* Fill in defaults for the fields the signer expects to see.
|
|
171
|
+
* ```ts
|
|
172
|
+
* import { hex } from '@scure/base';
|
|
173
|
+
* import { inputBeforeSign } from '@scure/btc-signer/transaction.js';
|
|
174
|
+
* inputBeforeSign({
|
|
175
|
+
* txid: hex.decode('0000000000000000000000000000000000000000000000000000000000000001'),
|
|
176
|
+
* index: 0,
|
|
177
|
+
* });
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export declare function inputBeforeSign(i: TArg<psbt.TransactionInput>): TRet<TransactionInputRequired>;
|
|
181
|
+
declare function validateOpts(opts: TArg<TxOpts>): TRet<Readonly<TxOpts>>;
|
|
182
|
+
/** Canonical PSBT input shape used by the coder layer. */
|
|
75
183
|
export type PSBTInputs = psbt.PSBTKeyMapKeys<typeof psbt.PSBTInput>;
|
|
76
|
-
|
|
77
|
-
export
|
|
78
|
-
|
|
184
|
+
/** Canonical PSBT output shape used by the coder layer. */
|
|
185
|
+
export type PSBTOutputs = psbt.PSBTKeyMapKeys<typeof psbt.PSBTOutput>;
|
|
186
|
+
/**
|
|
187
|
+
* Extracts the previous output referenced by an input.
|
|
188
|
+
* @param input - PSBT input with previous output data
|
|
189
|
+
* @returns Previous output information.
|
|
190
|
+
* @throws If the input does not contain usable previous-output information. {@link Error}
|
|
191
|
+
* @example
|
|
192
|
+
* Read the previous output from either `witnessUtxo` or `nonWitnessUtxo`.
|
|
193
|
+
* ```ts
|
|
194
|
+
* getPrevOut({ witnessUtxo: { amount: 1n, script: new Uint8Array([0x51]) } });
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
export declare function getPrevOut(input: TArg<psbt.TransactionInput>): P.UnwrapCoder<typeof RawOutput>;
|
|
198
|
+
/**
|
|
199
|
+
* Normalizes a transaction input update into canonical PSBT form.
|
|
200
|
+
* @param i - input update to normalize
|
|
201
|
+
* @param cur - existing input value to merge with
|
|
202
|
+
* @param allowedFields - fields that may still change on signed inputs
|
|
203
|
+
* @param disableScriptCheck - whether to skip redeem/witness script sanity checks
|
|
204
|
+
* @param allowUnknown - whether to keep unknown PSBT fields
|
|
205
|
+
* @returns Normalized PSBT input.
|
|
206
|
+
* @example
|
|
207
|
+
* Accept hex txids from callers in the same display-order form used by `Transaction.id`, then
|
|
208
|
+
* normalize them into the repo's internal `TransactionInput` shape.
|
|
209
|
+
* ```ts
|
|
210
|
+
* import { hex } from '@scure/base';
|
|
211
|
+
* import { normalizeInput } from '@scure/btc-signer/transaction.js';
|
|
212
|
+
* normalizeInput({
|
|
213
|
+
* txid: '0000000000000000000000000000000000000000000000000000000000000001',
|
|
214
|
+
* index: 0,
|
|
215
|
+
* witnessUtxo: { amount: 1n, script: new Uint8Array([0x51]) },
|
|
216
|
+
* });
|
|
217
|
+
* ```
|
|
218
|
+
*/
|
|
219
|
+
export declare function normalizeInput(i: TArg<psbt.TransactionInputUpdate>, cur?: TArg<PSBTInputs>, allowedFields?: TArg<readonly (keyof PSBTInputs)[]>, disableScriptCheck?: boolean, allowUnknown?: boolean): TRet<PSBTInputs>;
|
|
220
|
+
/**
|
|
221
|
+
* Determines how an input should be signed and finalized.
|
|
222
|
+
* Wrapper consistency is expected to be validated earlier by {@link normalizeInput}
|
|
223
|
+
* and {@link checkScript}; this helper classifies already-normalized inputs and is
|
|
224
|
+
* not a standalone redeemScript/witnessScript correctness gate for raw caller input.
|
|
225
|
+
* @param input - PSBT input to inspect
|
|
226
|
+
* @param allowLegacyWitnessUtxo - whether legacy inputs may rely on witness UTXO data only
|
|
227
|
+
* @returns Input classification including transaction type and sighash defaults.
|
|
228
|
+
* @throws If a documented runtime validation or state check fails. {@link Error}
|
|
229
|
+
* @example
|
|
230
|
+
* Detect how the signer should treat a SegWit input from its previous output script.
|
|
231
|
+
* ```ts
|
|
232
|
+
* import { hex } from '@scure/base';
|
|
233
|
+
* import { p2wpkh } from '@scure/btc-signer/payment.js';
|
|
234
|
+
* import { getInputType } from '@scure/btc-signer/transaction.js';
|
|
235
|
+
* import { pubECDSA, randomPrivateKeyBytes } from '@scure/btc-signer/utils.js';
|
|
236
|
+
* getInputType({
|
|
237
|
+
* witnessUtxo: {
|
|
238
|
+
* amount: 1n,
|
|
239
|
+
* script: p2wpkh(pubECDSA(randomPrivateKeyBytes())).script,
|
|
240
|
+
* },
|
|
241
|
+
* });
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
export declare function getInputType(input: TArg<psbt.TransactionInput>, allowLegacyWitnessUtxo?: boolean): {
|
|
79
245
|
type: string;
|
|
80
246
|
txType: string;
|
|
81
247
|
last: {
|
|
@@ -112,6 +278,27 @@ export declare function getInputType(input: psbt.TransactionInput, allowLegacyWi
|
|
|
112
278
|
defaultSighash: number;
|
|
113
279
|
sighash: number;
|
|
114
280
|
};
|
|
281
|
+
/**
|
|
282
|
+
* Mutable Bitcoin transaction and PSBT helper.
|
|
283
|
+
* @param opts - Transaction construction and PSBT serialization options. See {@link TxOpts}.
|
|
284
|
+
* @example
|
|
285
|
+
* Create a transaction, add one spend, and export it as PSBT.
|
|
286
|
+
* ```ts
|
|
287
|
+
* import { hex } from '@scure/base';
|
|
288
|
+
* import { p2wpkh } from '@scure/btc-signer/payment.js';
|
|
289
|
+
* import { Transaction } from '@scure/btc-signer/transaction.js';
|
|
290
|
+
* import { pubECDSA, randomPrivateKeyBytes } from '@scure/btc-signer/utils.js';
|
|
291
|
+
* const spend = p2wpkh(pubECDSA(randomPrivateKeyBytes()));
|
|
292
|
+
* const tx = new Transaction();
|
|
293
|
+
* tx.addInput({
|
|
294
|
+
* txid: hex.decode('0000000000000000000000000000000000000000000000000000000000000001'),
|
|
295
|
+
* index: 0,
|
|
296
|
+
* witnessUtxo: { amount: 2n, script: spend.script },
|
|
297
|
+
* });
|
|
298
|
+
* tx.addOutput({ script: spend.script, amount: 1n });
|
|
299
|
+
* tx.toPSBT();
|
|
300
|
+
* ```
|
|
301
|
+
*/
|
|
115
302
|
export declare class Transaction {
|
|
116
303
|
private global;
|
|
117
304
|
private inputs;
|
|
@@ -138,15 +325,15 @@ export declare class Transaction {
|
|
|
138
325
|
private checkInputIdx;
|
|
139
326
|
getInput(idx: number): psbt.TransactionInput;
|
|
140
327
|
get inputsLength(): number;
|
|
141
|
-
addInput(input: psbt.TransactionInputUpdate
|
|
142
|
-
updateInput(idx: number, input: psbt.TransactionInputUpdate
|
|
328
|
+
addInput(input: TArg<psbt.TransactionInputUpdate>, _ignoreSignStatus?: boolean): number;
|
|
329
|
+
updateInput(idx: number, input: TArg<psbt.TransactionInputUpdate>, _ignoreSignStatus?: boolean): void;
|
|
143
330
|
private checkOutputIdx;
|
|
144
331
|
getOutput(idx: number): psbt.TransactionOutput;
|
|
145
332
|
getOutputAddress(idx: number, network?: u.BTC_NETWORK): string | undefined;
|
|
146
333
|
get outputsLength(): number;
|
|
147
334
|
private normalizeOutput;
|
|
148
|
-
addOutput(o: psbt.TransactionOutputUpdate
|
|
149
|
-
updateOutput(idx: number, output: psbt.TransactionOutputUpdate
|
|
335
|
+
addOutput(o: TArg<psbt.TransactionOutputUpdate>, _ignoreSignStatus?: boolean): number;
|
|
336
|
+
updateOutput(idx: number, output: TArg<psbt.TransactionOutputUpdate>, _ignoreSignStatus?: boolean): void;
|
|
150
337
|
addOutputAddress(address: string, amount: bigint, network?: u.BTC_NETWORK): number;
|
|
151
338
|
get fee(): bigint;
|
|
152
339
|
private preimageLegacy;
|
|
@@ -160,7 +347,31 @@ export declare class Transaction {
|
|
|
160
347
|
combine(other: Transaction): this;
|
|
161
348
|
clone(): Transaction;
|
|
162
349
|
}
|
|
163
|
-
|
|
350
|
+
/**
|
|
351
|
+
* Merges multiple PSBT blobs into one.
|
|
352
|
+
* @param psbts - PSBT byte arrays to combine
|
|
353
|
+
* @returns Combined PSBT bytes.
|
|
354
|
+
* @throws If the PSBT list is empty or the partial transactions cannot be combined. {@link Error}
|
|
355
|
+
* @example
|
|
356
|
+
* Merge separate partially signed PSBTs that share the same unsigned transaction.
|
|
357
|
+
* ```ts
|
|
358
|
+
* import { PSBTCombine, Transaction } from '@scure/btc-signer/transaction.js';
|
|
359
|
+
* const psbt = new Transaction().toPSBT();
|
|
360
|
+
* PSBTCombine([psbt, psbt]);
|
|
361
|
+
* ```
|
|
362
|
+
*/
|
|
363
|
+
export declare function PSBTCombine(psbts: TArg<Bytes[]>): TRet<Bytes>;
|
|
364
|
+
/**
|
|
365
|
+
* Parses a BIP32 path string into child indices.
|
|
366
|
+
* @param path - derivation path such as `m/0'/1`
|
|
367
|
+
* @returns Array of encoded child indices.
|
|
368
|
+
* @throws If the derivation path syntax or child indices are invalid. {@link Error}
|
|
369
|
+
* @example
|
|
370
|
+
* Parse a BIP32 derivation path into hardened and unhardened indices.
|
|
371
|
+
* ```ts
|
|
372
|
+
* bip32Path("m/0'/1");
|
|
373
|
+
* ```
|
|
374
|
+
*/
|
|
164
375
|
export declare function bip32Path(path: string): number[];
|
|
165
376
|
export {};
|
|
166
377
|
//# sourceMappingURL=transaction.d.ts.map
|
package/transaction.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["src/transaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAW,KAAK,YAAY,EAAuC,MAAM,cAAc,CAAC;AAC/F,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["src/transaction.ts"],"names":[],"mappings":"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"}
|