@bitgo/utxo-bin 2.5.0 → 2.6.1
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/dist/src/AddressParser.d.ts +9 -2
- package/dist/src/AddressParser.d.ts.map +1 -1
- package/dist/src/AddressParser.js +68 -20
- package/dist/tsconfig.tsbuildinfo +438 -408
- package/package.json +7 -5
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import * as utxolib from '@bitgo/utxo-lib';
|
|
3
|
+
import * as bech32 from 'bech32';
|
|
3
4
|
import { Parser, ParserNode } from './Parser';
|
|
4
5
|
export declare class AddressParser extends Parser {
|
|
5
6
|
params: {
|
|
@@ -14,7 +15,13 @@ export declare class AddressParser extends Parser {
|
|
|
14
15
|
});
|
|
15
16
|
tryParseOpReturn(script: Buffer): ParserNode[];
|
|
16
17
|
parseOutputScript(buffer: Buffer): ParserNode[];
|
|
17
|
-
parseBase58(address: string): ParserNode;
|
|
18
|
-
|
|
18
|
+
parseBase58(address: string): ParserNode[];
|
|
19
|
+
parseWithBechLib(bechlib: bech32.BechLib, address: string): ParserNode[];
|
|
20
|
+
parseBech32(address: string): ParserNode[];
|
|
21
|
+
parseBech32m(address: string): ParserNode[];
|
|
22
|
+
parseCashaddr(address: string): ParserNode[];
|
|
23
|
+
convert(outputScript: Buffer): ParserNode;
|
|
24
|
+
parseToBytes(input: string): ParserNode[];
|
|
25
|
+
parse(input: string): ParserNode;
|
|
19
26
|
}
|
|
20
27
|
//# sourceMappingURL=AddressParser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressParser.d.ts","sourceRoot":"","sources":["../../src/AddressParser.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"AddressParser.d.ts","sourceRoot":"","sources":["../../src/AddressParser.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAU9C,qBAAa,aAAc,SAAQ,MAAM;IAE9B,MAAM,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB;gBAJM,MAAM,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB;IAKH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAwB9C,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAU/C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAS1C,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IASxE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI1C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI3C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAS5C,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;IAsBzC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;IAkBzC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;CAuCjC"}
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AddressParser = void 0;
|
|
4
4
|
const utxolib = require("@bitgo/utxo-lib");
|
|
5
|
+
const bech32 = require("bech32");
|
|
5
6
|
const Parser_1 = require("./Parser");
|
|
6
7
|
const bs58check = require('bs58check');
|
|
8
|
+
const cashaddress = require('cashaddress');
|
|
7
9
|
function isPrintable(s) {
|
|
8
10
|
// https://stackoverflow.com/a/66447494
|
|
9
11
|
return !s.match(/[\p{Cc}\p{Cn}\p{Cs}]+/gu);
|
|
@@ -49,16 +51,70 @@ class AddressParser extends Parser_1.Parser {
|
|
|
49
51
|
}
|
|
50
52
|
parseBase58(address) {
|
|
51
53
|
const payload = bs58check.decode(address);
|
|
52
|
-
return
|
|
54
|
+
return [
|
|
55
|
+
this.node('payload', payload),
|
|
53
56
|
this.node('version', payload.readUInt8(0).toString('16')),
|
|
54
57
|
this.node('hash', payload.slice(1)),
|
|
55
|
-
]
|
|
58
|
+
];
|
|
59
|
+
}
|
|
60
|
+
parseWithBechLib(bechlib, address) {
|
|
61
|
+
const decoded = bechlib.decode(address);
|
|
62
|
+
return [
|
|
63
|
+
this.node('prefix', decoded.prefix),
|
|
64
|
+
this.node('words', Buffer.from(decoded.words)),
|
|
65
|
+
this.node('bytes', Buffer.from(bechlib.fromWords(decoded.words))),
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
parseBech32(address) {
|
|
69
|
+
return this.parseWithBechLib(bech32.bech32, address);
|
|
70
|
+
}
|
|
71
|
+
parseBech32m(address) {
|
|
72
|
+
return this.parseWithBechLib(bech32.bech32m, address);
|
|
56
73
|
}
|
|
57
|
-
|
|
74
|
+
parseCashaddr(address) {
|
|
75
|
+
const payload = cashaddress.decode(address);
|
|
76
|
+
return [
|
|
77
|
+
this.node('prefix', payload.prefix),
|
|
78
|
+
this.node('version', payload.version),
|
|
79
|
+
this.node('hash', payload.hash),
|
|
80
|
+
];
|
|
81
|
+
}
|
|
82
|
+
convert(outputScript) {
|
|
83
|
+
return this.node('converted', undefined, utxolib.getNetworkList().flatMap((network) => utxolib.addressFormat.addressFormats
|
|
84
|
+
.filter((f) => utxolib.addressFormat.isSupportedAddressFormat(f, network))
|
|
85
|
+
.map((addressFormat) => {
|
|
86
|
+
const name = utxolib.getNetworkName(network);
|
|
87
|
+
try {
|
|
88
|
+
return this.node(`${name} ${addressFormat}`, utxolib.addressFormat.fromOutputScriptWithFormat(outputScript, addressFormat, network));
|
|
89
|
+
}
|
|
90
|
+
catch (e) {
|
|
91
|
+
return this.node(`${name} ${addressFormat}`, 'undefined');
|
|
92
|
+
}
|
|
93
|
+
})));
|
|
94
|
+
}
|
|
95
|
+
parseToBytes(input) {
|
|
96
|
+
const decodeWith = (name, decoder) => {
|
|
97
|
+
try {
|
|
98
|
+
return [this.node(name, undefined, decoder(input))];
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
return this.params.all ? [this.node(name, undefined, [this.node('decodeError', String(e))])] : [];
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
return [
|
|
105
|
+
...decodeWith('base58', this.parseBase58.bind(this)),
|
|
106
|
+
...decodeWith('bech32', this.parseBech32.bind(this)),
|
|
107
|
+
...decodeWith('bech32m', this.parseBech32m.bind(this)),
|
|
108
|
+
...decodeWith('cashaddr', this.parseCashaddr.bind(this)),
|
|
109
|
+
];
|
|
110
|
+
}
|
|
111
|
+
parse(input) {
|
|
58
112
|
const networks = this.params.network ? [this.params.network] : utxolib.getNetworkList();
|
|
59
113
|
const matches = networks.flatMap((network) => {
|
|
60
114
|
try {
|
|
61
|
-
|
|
115
|
+
const [addressFormat, buffer] = utxolib.addressFormat.toOutputScriptAndFormat(input, network);
|
|
116
|
+
const address = utxolib.addressFormat.fromOutputScriptWithFormat(buffer, addressFormat, network);
|
|
117
|
+
return [{ network, address, addressFormat, buffer }];
|
|
62
118
|
}
|
|
63
119
|
catch (e) {
|
|
64
120
|
return [];
|
|
@@ -66,28 +122,20 @@ class AddressParser extends Parser_1.Parser {
|
|
|
66
122
|
});
|
|
67
123
|
const firstMatch = matches[0];
|
|
68
124
|
const nodes = [];
|
|
69
|
-
|
|
70
|
-
nodes.push(this.parseBase58(address));
|
|
71
|
-
// eslint-disable-next-line no-empty
|
|
72
|
-
}
|
|
73
|
-
catch (e) { }
|
|
125
|
+
nodes.push(...this.parseToBytes(input));
|
|
74
126
|
if (firstMatch) {
|
|
127
|
+
if (input !== firstMatch.address) {
|
|
128
|
+
nodes.push(this.node('normalized', firstMatch.address, this.parseToBytes(firstMatch.address)));
|
|
129
|
+
}
|
|
130
|
+
nodes.push(this.node('format', firstMatch.addressFormat));
|
|
75
131
|
nodes.push(this.node('outputScript', firstMatch.buffer, this.parseOutputScript(firstMatch.buffer)));
|
|
76
132
|
nodes.push(this.node('network', matches.map((m) => utxolib.getNetworkName(m.network)).join(', ')));
|
|
77
133
|
if (this.params.all || this.params.convert) {
|
|
78
|
-
nodes.push(this.
|
|
79
|
-
const name = utxolib.getNetworkName(network);
|
|
80
|
-
try {
|
|
81
|
-
return [this.node(name, utxolib.address.fromOutputScript(firstMatch.buffer, network))];
|
|
82
|
-
}
|
|
83
|
-
catch (e) {
|
|
84
|
-
return [this.node(name, 'undefined')];
|
|
85
|
-
}
|
|
86
|
-
})));
|
|
134
|
+
nodes.push(this.convert(firstMatch.buffer));
|
|
87
135
|
}
|
|
88
136
|
}
|
|
89
|
-
return this.node('address',
|
|
137
|
+
return this.node('address', input, nodes);
|
|
90
138
|
}
|
|
91
139
|
}
|
|
92
140
|
exports.AddressParser = AddressParser;
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkcmVzc1BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BZGRyZXNzUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUEyQztBQUMzQyxxQ0FBOEM7QUFFOUMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXZDLFNBQVMsV0FBVyxDQUFDLENBQVM7SUFDNUIsdUNBQXVDO0lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQWEsYUFBYyxTQUFRLGVBQU07SUFDdkMsWUFDUyxNQUlOO1FBRUQsS0FBSyxFQUFFLENBQUM7UUFORCxXQUFNLEdBQU4sTUFBTSxDQUlaO0lBR0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWM7UUFDN0IsSUFBSSxJQUEwQixDQUFDO1FBQy9CLElBQUk7WUFDRixDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixTQUFTO1NBQ1Y7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQztZQUNULElBQUk7Z0JBQ0YsSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDN0I7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixTQUFTO2FBQ1Y7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLFFBQVEsRUFB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QUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDMUMsS0FBSyxDQUFDLElBQUksQ0FDUixJQUFJLENBQUMsSUFBSSxDQUNQLFdBQVcsRUFDWCxTQUFTLEVBQ1QsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUMzQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBVyxDQUFDO29CQUN2RCxJQUFJO3dCQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN4RjtvQkFBQyxPQUFPLENBQUMsRUFBRTt3QkFDVixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztxQkFDdkM7Z0JBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO2FBQ0g7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQTVGRCxzQ0E0RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgeyBQYXJzZXIsIFBhcnNlck5vZGUgfSBmcm9tICcuL1BhcnNlcic7XG5cbmNvbnN0IGJzNThjaGVjayA9IHJlcXVpcmUoJ2JzNThjaGVjaycpO1xuXG5mdW5jdGlvbiBpc1ByaW50YWJsZShzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzY2NDQ3NDk0XG4gIHJldHVybiAhcy5tYXRjaCgvW1xccHtDY31cXHB7Q259XFxwe0NzfV0rL2d1KTtcbn1cblxuZXhwb3J0IGNsYXNzIEFkZHJlc3NQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcGFyYW1zOiB7XG4gICAgICBuZXR3b3JrPzogdXR4b2xpYi5OZXR3b3JrO1xuICAgICAgYWxsOiBib29sZWFuO1xuICAgICAgY29udmVydDogYm9vbGVhbjtcbiAgICB9XG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB0cnlQYXJzZU9wUmV0dXJuKHNjcmlwdDogQnVmZmVyKTogUGFyc2VyTm9kZVtdIHtcbiAgICBsZXQgZGF0YTogQnVmZmVyW10gfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgICh7IGRhdGEgfSA9IHV0eG9saWIucGF5bWVudHMuZW1iZWQoeyBvdXRwdXQ6IHNjcmlwdCB9KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YS5tYXAoKGJ1ZiwgaSkgPT4ge1xuICAgICAgbGV0IHV0Zjg7XG4gICAgICB0cnkge1xuICAgICAgICB1dGY4ID0gYnVmLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlnbm9yZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubm9kZShgT1BfUkVUVVJOICR7aX1gLCBgJHtidWYubGVuZ3RofSBieXRlc2AsIFtcbiAgICAgICAgdGhpcy5ub2RlKCdoZXgnLCBidWYpLFxuICAgICAgICAuLi4odXRmOCAmJiBpc1ByaW50YWJsZSh1dGY4KSA/IFt0aGlzLm5vZGUoJ3V0ZjgnLCB1dGY4KV0gOiBbXSksXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlT3V0cHV0U2NyaXB0KGJ1ZmZlcjogQnVmZmVyKTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCdzY3JpcHRQdWJLZXknLCBgWyR7YnVmZmVyLmxlbmd0aH1ieXRlXWAsIFtcbiAgICAgICAgdGhpcy5ub2RlKCd0eXBlJywgdXR4b2xpYi5jbGFzc2lmeS5vdXRwdXQoYnVmZmVyKSksXG4gICAgICAgIHRoaXMubm9kZSgnaGV4JywgYnVmZmVyLnRvU3RyaW5nKCdoZXgnKSksXG4gICAgICAgIHRoaXMubm9kZSgnYXNtJywgdXR4b2xpYi5zY3JpcHQudG9BU00oYnVmZmVyKSwgdGhpcy50cnlQYXJzZU9wUmV0dXJuKGJ1ZmZlcikpLFxuICAgICAgXSksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlQmFzZTU4KGFkZHJlc3M6IHN0cmluZyk6IFBhcnNlck5vZGUge1xuICAgIGNvbnN0IHBheWxvYWQgPSBiczU4Y2hlY2suZGVjb2RlKGFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzLm5vZGUoJ2Jhc2U1OENoZWNrJywgcGF5bG9hZCwgW1xuICAgICAgdGhpcy5ub2RlKCd2ZXJzaW9uJywgcGF5bG9hZC5yZWFkVUludDgoMCkudG9TdHJpbmcoJzE2JykpLFxuICAgICAgdGhpcy5ub2RlKCdoYXNoJywgcGF5bG9hZC5zbGljZSgxKSksXG4gICAgXSk7XG4gIH1cblxuICBwYXJzZShhZGRyZXNzOiBzdHJpbmcpOiBQYXJzZXJOb2RlIHtcbiAgICBjb25zdCBuZXR3b3JrcyA9IHRoaXMucGFyYW1zLm5ldHdvcmsgPyBbdGhpcy5wYXJhbXMubmV0d29ya10gOiB1dHhvbGliLmdldE5ldHdvcmtMaXN0KCk7XG4gICAgY29uc3QgbWF0Y2hlcyA9IG5ldHdvcmtzLmZsYXRNYXAoKG5ldHdvcmspID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7IG5ldHdvcmssIGJ1ZmZlcjogdXR4b2xpYi5hZGRyZXNzLnRvT3V0cHV0U2NyaXB0KGFkZHJlc3MsIG5ldHdvcmspIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBmaXJzdE1hdGNoID0gbWF0Y2hlc1swXTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5wYXJzZUJhc2U1OChhZGRyZXNzKSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHlcbiAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgaWYgKGZpcnN0TWF0Y2gpIHtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdvdXRwdXRTY3JpcHQnLCBmaXJzdE1hdGNoLmJ1ZmZlciwgdGhpcy5wYXJzZU91dHB1dFNjcmlwdChmaXJzdE1hdGNoLmJ1ZmZlcikpKTtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCduZXR3b3JrJywgbWF0Y2hlcy5tYXAoKG0pID0+IHV0eG9saWIuZ2V0TmV0d29ya05hbWUobS5uZXR3b3JrKSkuam9pbignLCAnKSkpO1xuICAgICAgaWYgKHRoaXMucGFyYW1zLmFsbCB8fCB0aGlzLnBhcmFtcy5jb252ZXJ0KSB7XG4gICAgICAgIG5vZGVzLnB1c2goXG4gICAgICAgICAgdGhpcy5ub2RlKFxuICAgICAgICAgICAgJ2NvbnZlcnRlZCcsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICB1dHhvbGliLmdldE5ldHdvcmtMaXN0KCkuZmxhdE1hcCgobmV0d29yaykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuYW1lID0gdXR4b2xpYi5nZXROZXR3b3JrTmFtZShuZXR3b3JrKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt0aGlzLm5vZGUobmFtZSwgdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoZmlyc3RNYXRjaC5idWZmZXIsIG5ldHdvcmspKV07XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMubm9kZShuYW1lLCAndW5kZWZpbmVkJyldO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubm9kZSgnYWRkcmVzcycsIGFkZHJlc3MsIG5vZGVzKTtcbiAgfVxufVxuIl19
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkcmVzc1BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BZGRyZXNzUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUEyQztBQUMzQyxpQ0FBaUM7QUFFakMscUNBQThDO0FBRTlDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN2QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFM0MsU0FBUyxXQUFXLENBQUMsQ0FBUztJQUM1Qix1Q0FBdUM7SUFDdkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBYSxhQUFjLFNBQVEsZUFBTTtJQUN2QyxZQUNTLE1BSU47UUFFRCxLQUFLLEVBQUUsQ0FBQztRQU5ELFdBQU0sR0FBTixNQUFNLENBSVo7SUFHSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBYztRQUM3QixJQUFJLElBQTBCLENBQUM7UUFDL0IsSUFBSTtZQUNGLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLFNBQVM7U0FDVjtRQUNELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDO1lBQ1QsSUFBSTtnQkFDRixJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM3QjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLFNBQVM7YUFDVjtZQUNELE9BQU8sSUFBSSxDQUFD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TyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRW5HLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUM3QztTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBL0pELHNDQStKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIGJlY2gzMiBmcm9tICdiZWNoMzInO1xuXG5pbXBvcnQgeyBQYXJzZXIsIFBhcnNlck5vZGUgfSBmcm9tICcuL1BhcnNlcic7XG5cbmNvbnN0IGJzNThjaGVjayA9IHJlcXVpcmUoJ2JzNThjaGVjaycpO1xuY29uc3QgY2FzaGFkZHJlc3MgPSByZXF1aXJlKCdjYXNoYWRkcmVzcycpO1xuXG5mdW5jdGlvbiBpc1ByaW50YWJsZShzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzY2NDQ3NDk0XG4gIHJldHVybiAhcy5tYXRjaCgvW1xccHtDY31cXHB7Q259XFxwe0NzfV0rL2d1KTtcbn1cblxuZXhwb3J0IGNsYXNzIEFkZHJlc3NQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcGFyYW1zOiB7XG4gICAgICBuZXR3b3JrPzogdXR4b2xpYi5OZXR3b3JrO1xuICAgICAgYWxsOiBib29sZWFuO1xuICAgICAgY29udmVydDogYm9vbGVhbjtcbiAgICB9XG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB0cnlQYXJzZU9wUmV0dXJuKHNjcmlwdDogQnVmZmVyKTogUGFyc2VyTm9kZVtdIHtcbiAgICBsZXQgZGF0YTogQnVmZmVyW10gfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgICh7IGRhdGEgfSA9IHV0eG9saWIucGF5bWVudHMuZW1iZWQoeyBvdXRwdXQ6IHNjcmlwdCB9KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YS5tYXAoKGJ1ZiwgaSkgPT4ge1xuICAgICAgbGV0IHV0Zjg7XG4gICAgICB0cnkge1xuICAgICAgICB1dGY4ID0gYnVmLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlnbm9yZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubm9kZShgT1BfUkVUVVJOICR7aX1gLCBgJHtidWYubGVuZ3RofSBieXRlc2AsIFtcbiAgICAgICAgdGhpcy5ub2RlKCdoZXgnLCBidWYpLFxuICAgICAgICAuLi4odXRmOCAmJiBpc1ByaW50YWJsZSh1dGY4KSA/IFt0aGlzLm5vZGUoJ3V0ZjgnLCB1dGY4KV0gOiBbXSksXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlT3V0cHV0U2NyaXB0KGJ1ZmZlcjogQnVmZmVyKTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCdzY3JpcHRQdWJLZXknLCBgWyR7YnVmZmVyLmxlbmd0aH1ieXRlXWAsIFtcbiAgICAgICAgdGhpcy5ub2RlKCd0eXBlJywgdXR4b2xpYi5jbGFzc2lmeS5vdXRwdXQoYnVmZmVyKSksXG4gICAgICAgIHRoaXMubm9kZSgnaGV4JywgYnVmZmVyLnRvU3RyaW5nKCdoZXgnKSksXG4gICAgICAgIHRoaXMubm9kZSgnYXNtJywgdXR4b2xpYi5zY3JpcHQudG9BU00oYnVmZmVyKSwgdGhpcy50cnlQYXJzZU9wUmV0dXJuKGJ1ZmZlcikpLFxuICAgICAgXSksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlQmFzZTU4KGFkZHJlc3M6IHN0cmluZyk6IFBhcnNlck5vZGVbXSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGJzNThjaGVjay5kZWNvZGUoYWRkcmVzcyk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMubm9kZSgncGF5bG9hZCcsIHBheWxvYWQpLFxuICAgICAgdGhpcy5ub2RlKCd2ZXJzaW9uJywgcGF5bG9hZC5yZWFkVUludDgoMCkudG9TdHJpbmcoJzE2JykpLFxuICAgICAgdGhpcy5ub2RlKCdoYXNoJywgcGF5bG9hZC5zbGljZSgxKSksXG4gICAgXTtcbiAgfVxuXG4gIHBhcnNlV2l0aEJlY2hMaWIoYmVjaGxpYjogYmVjaDMyLkJlY2hMaWIsIGFkZHJlc3M6IHN0cmluZyk6IFBhcnNlck5vZGVbXSB7XG4gICAgY29uc3QgZGVjb2RlZCA9IGJlY2hsaWIuZGVjb2RlKGFkZHJlc3MpO1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLm5vZGUoJ3ByZWZpeCcsIGRlY29kZWQucHJlZml4KSxcbiAgICAgIHRoaXMubm9kZSgnd29yZHMnLCBCdWZmZXIuZnJvbShkZWNvZGVkLndvcmRzKSksXG4gICAgICB0aGlzLm5vZGUoJ2J5dGVzJywgQnVmZmVyLmZyb20oYmVjaGxpYi5mcm9tV29yZHMoZGVjb2RlZC53b3JkcykpKSxcbiAgICBdO1xuICB9XG5cbiAgcGFyc2VCZWNoMzIoYWRkcmVzczogc3RyaW5nKTogUGFyc2VyTm9kZVtdIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVdpdGhCZWNoTGliKGJlY2gzMi5iZWNoMzIsIGFkZHJlc3MpO1xuICB9XG5cbiAgcGFyc2VCZWNoMzJtKGFkZHJlc3M6IHN0cmluZyk6IFBhcnNlck5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VXaXRoQmVjaExpYihiZWNoMzIuYmVjaDMybSwgYWRkcmVzcyk7XG4gIH1cblxuICBwYXJzZUNhc2hhZGRyKGFkZHJlc3M6IHN0cmluZyk6IFBhcnNlck5vZGVbXSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGNhc2hhZGRyZXNzLmRlY29kZShhZGRyZXNzKTtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKCdwcmVmaXgnLCBwYXlsb2FkLnByZWZpeCksXG4gICAgICB0aGlzLm5vZGUoJ3ZlcnNpb24nLCBwYXlsb2FkLnZlcnNpb24pLFxuICAgICAgdGhpcy5ub2RlKCdoYXNoJywgcGF5bG9hZC5oYXNoKSxcbiAgICBdO1xuICB9XG5cbiAgY29udmVydChvdXRwdXRTY3JpcHQ6IEJ1ZmZlcik6IFBhcnNlck5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAnY29udmVydGVkJyxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHV0eG9saWIuZ2V0TmV0d29ya0xpc3QoKS5mbGF0TWFwKChuZXR3b3JrKSA9PlxuICAgICAgICB1dHhvbGliLmFkZHJlc3NGb3JtYXQuYWRkcmVzc0Zvcm1hdHNcbiAgICAgICAgICAuZmlsdGVyKChmKSA9PiB1dHhvbGliLmFkZHJlc3NGb3JtYXQuaXNTdXBwb3J0ZWRBZGRyZXNzRm9ybWF0KGYsIG5ldHdvcmspKVxuICAgICAgICAgIC5tYXAoKGFkZHJlc3NGb3JtYXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSB1dHhvbGliLmdldE5ldHdvcmtOYW1lKG5ldHdvcmspIGFzIHN0cmluZztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUoXG4gICAgICAgICAgICAgICAgYCR7bmFtZX0gJHthZGRyZXNzRm9ybWF0fWAsXG4gICAgICAgICAgICAgICAgdXR4b2xpYi5hZGRyZXNzRm9ybWF0LmZyb21PdXRwdXRTY3JpcHRXaXRoRm9ybWF0KG91dHB1dFNjcmlwdCwgYWRkcmVzc0Zvcm1hdCwgbmV0d29yaylcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZShgJHtuYW1lfSAke2FkZHJlc3NGb3JtYXR9YCwgJ3VuZGVmaW5lZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHBhcnNlVG9CeXRlcyhpbnB1dDogc3RyaW5nKTogUGFyc2VyTm9kZVtdIHtcbiAgICB0eXBlIERlY29kZXIgPSAoYWRkcmVzczogc3RyaW5nKSA9PiBQYXJzZXJOb2RlW107XG4gICAgY29uc3QgZGVjb2RlV2l0aCA9IChuYW1lOiBzdHJpbmcsIGRlY29kZXI6IERlY29kZXIpOiBQYXJzZXJOb2RlW10gPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLm5vZGUobmFtZSwgdW5kZWZpbmVkLCBkZWNvZGVyKGlucHV0KSldO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJhbXMuYWxsID8gW3RoaXMubm9kZShuYW1lLCB1bmRlZmluZWQsIFt0aGlzLm5vZGUoJ2RlY29kZUVycm9yJywgU3RyaW5nKGUpKV0pXSA6IFtdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4uZGVjb2RlV2l0aCgnYmFzZTU4JywgdGhpcy5wYXJzZUJhc2U1OC5iaW5kKHRoaXMpKSxcbiAgICAgIC4uLmRlY29kZVdpdGgoJ2JlY2gzMicsIHRoaXMucGFyc2VCZWNoMzIuYmluZCh0aGlzKSksXG4gICAgICAuLi5kZWNvZGVXaXRoKCdiZWNoMzJtJywgdGhpcy5wYXJzZUJlY2gzMm0uYmluZCh0aGlzKSksXG4gICAgICAuLi5kZWNvZGVXaXRoKCdjYXNoYWRkcicsIHRoaXMucGFyc2VDYXNoYWRkci5iaW5kKHRoaXMpKSxcbiAgICBdO1xuICB9XG5cbiAgcGFyc2UoaW5wdXQ6IHN0cmluZyk6IFBhcnNlck5vZGUge1xuICAgIGNvbnN0IG5ldHdvcmtzID0gdGhpcy5wYXJhbXMubmV0d29yayA/IFt0aGlzLnBhcmFtcy5uZXR3b3JrXSA6IHV0eG9saWIuZ2V0TmV0d29ya0xpc3QoKTtcblxuICAgIHR5cGUgTWF0Y2ggPSB7XG4gICAgICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcms7XG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICBhZGRyZXNzRm9ybWF0OiB1dHhvbGliLmFkZHJlc3NGb3JtYXQuQWRkcmVzc0Zvcm1hdDtcbiAgICAgIGJ1ZmZlcjogQnVmZmVyO1xuICAgIH07XG4gICAgY29uc3QgbWF0Y2hlczogTWF0Y2hbXSA9IG5ldHdvcmtzLmZsYXRNYXAoKG5ldHdvcmspID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IFthZGRyZXNzRm9ybWF0LCBidWZmZXJdID0gdXR4b2xpYi5hZGRyZXNzRm9ybWF0LnRvT3V0cHV0U2NyaXB0QW5kRm9ybWF0KGlucHV0LCBuZXR3b3JrKTtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5mcm9tT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChidWZmZXIsIGFkZHJlc3NGb3JtYXQsIG5ldHdvcmspO1xuICAgICAgICByZXR1cm4gW3sgbmV0d29yaywgYWRkcmVzcywgYWRkcmVzc0Zvcm1hdCwgYnVmZmVyIH1dO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZmlyc3RNYXRjaCA9IG1hdGNoZXNbMF07XG4gICAgY29uc3Qgbm9kZXM6IFBhcnNlck5vZGVbXSA9IFtdO1xuXG4gICAgbm9kZXMucHVzaCguLi50aGlzLnBhcnNlVG9CeXRlcyhpbnB1dCkpO1xuXG4gICAgaWYgKGZpcnN0TWF0Y2gpIHtcbiAgICAgIGlmIChpbnB1dCAhPT0gZmlyc3RNYXRjaC5hZGRyZXNzKSB7XG4gICAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdub3JtYWxpemVkJywgZmlyc3RNYXRjaC5hZGRyZXNzLCB0aGlzLnBhcnNlVG9CeXRlcyhmaXJzdE1hdGNoLmFkZHJlc3MpKSk7XG4gICAgICB9XG5cbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdmb3JtYXQnLCBmaXJzdE1hdGNoLmFkZHJlc3NGb3JtYXQpKTtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCdvdXRwdXRTY3JpcHQnLCBmaXJzdE1hdGNoLmJ1ZmZlciwgdGhpcy5wYXJzZU91dHB1dFNjcmlwdChmaXJzdE1hdGNoLmJ1ZmZlcikpKTtcbiAgICAgIG5vZGVzLnB1c2godGhpcy5ub2RlKCduZXR3b3JrJywgbWF0Y2hlcy5tYXAoKG0pID0+IHV0eG9saWIuZ2V0TmV0d29ya05hbWUobS5uZXR3b3JrKSkuam9pbignLCAnKSkpO1xuXG4gICAgICBpZiAodGhpcy5wYXJhbXMuYWxsIHx8IHRoaXMucGFyYW1zLmNvbnZlcnQpIHtcbiAgICAgICAgbm9kZXMucHVzaCh0aGlzLmNvbnZlcnQoZmlyc3RNYXRjaC5idWZmZXIpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKCdhZGRyZXNzJywgaW5wdXQsIG5vZGVzKTtcbiAgfVxufVxuIl19
|