@bitgo-beta/sdk-coin-bch 1.3.3-alpha.410 → 1.3.3-alpha.412

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo-beta/sdk-coin-bch",
3
- "version": "1.3.3-alpha.410",
3
+ "version": "1.3.3-alpha.412",
4
4
  "description": "BitGo SDK coin library for Bitcoin Cash",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -11,9 +11,7 @@
11
11
  "clean": "rm -r ./dist",
12
12
  "lint": "eslint --quiet .",
13
13
  "prepare": "npm run build",
14
- "test": "npm run coverage",
15
- "coverage": "nyc -- npm run unit-test",
16
- "unit-test": "mocha"
14
+ "unit-test": "echo 'test in abstract-utxo'"
17
15
  },
18
16
  "author": "BitGo SDK Team <sdkteam@bitgo.com>",
19
17
  "license": "MIT",
@@ -40,15 +38,10 @@
40
38
  ]
41
39
  },
42
40
  "dependencies": {
43
- "@bitgo-beta/abstract-utxo": "1.6.1-alpha.413",
44
- "@bitgo-beta/sdk-core": "2.4.1-alpha.413",
45
- "@bitgo-beta/utxo-lib": "4.0.1-alpha.414"
41
+ "@bitgo-beta/abstract-utxo": "1.6.1-alpha.415",
42
+ "@bitgo-beta/sdk-core": "2.4.1-alpha.415"
46
43
  },
47
- "devDependencies": {
48
- "@bitgo-beta/sdk-api": "1.6.1-alpha.413",
49
- "@bitgo-beta/sdk-test": "^9.1.7"
50
- },
51
- "gitHead": "930ca59f94921ae2bbda9e74b7f983609b2b59b1",
44
+ "gitHead": "4e151fc180e93234c720b3d9ec0538c866b0c78c",
52
45
  "files": [
53
46
  "dist"
54
47
  ]
package/dist/src/bch.d.ts DELETED
@@ -1,20 +0,0 @@
1
- import { AbstractUtxoCoin, UtxoNetwork } from '@bitgo-beta/abstract-utxo';
2
- import { BitGoBase, BaseCoin } from '@bitgo-beta/sdk-core';
3
- export declare class Bch extends AbstractUtxoCoin {
4
- protected constructor(bitgo: BitGoBase, network?: UtxoNetwork);
5
- static createInstance(bitgo: BitGoBase): BaseCoin;
6
- /**
7
- * Canonicalize a Bitcoin Cash address for a specific version
8
- *
9
- * Starting on January 14th, 2018 Bitcoin Cash's bitcoin-abc node switched over to using cashaddr
10
- * encoding for all of their addresses in order to distinguish them from Bitcoin Core's.
11
- * https://www.bitcoinabc.org/cashaddr. We're sticking with the old base58 format because
12
- * migrating over to the new format will be laborious, and we want to see how the space evolves
13
- *
14
- * @param address may or may not be prefixed with the network, example bitcoincash:pppkt7q2axpsm2cajyjtu6x8fsh6ywauzgxmsru962 or pppkt7q2axpsm2cajyjtu6x8fsh6ywauzgxmsru962
15
- * @param version the version of the desired address, 'base58' or 'cashaddr', defaulting to 'base58'
16
- * @returns {*} address string
17
- */
18
- canonicalAddress(address: string, version?: unknown): string;
19
- }
20
- //# sourceMappingURL=bch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bch.d.ts","sourceRoot":"","sources":["../../src/bch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG3D,qBAAa,GAAI,SAAQ,gBAAgB;IACvC,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW;IAI7D,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ;IAIjD;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,OAAkB,GAAG,MAAM;CAYvE"}
package/dist/src/bch.js DELETED
@@ -1,70 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Bch = void 0;
37
- const abstract_utxo_1 = require("@bitgo-beta/abstract-utxo");
38
- const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
39
- class Bch extends abstract_utxo_1.AbstractUtxoCoin {
40
- constructor(bitgo, network) {
41
- super(bitgo, network || utxolib.networks.bitcoincash);
42
- }
43
- static createInstance(bitgo) {
44
- return new Bch(bitgo);
45
- }
46
- /**
47
- * Canonicalize a Bitcoin Cash address for a specific version
48
- *
49
- * Starting on January 14th, 2018 Bitcoin Cash's bitcoin-abc node switched over to using cashaddr
50
- * encoding for all of their addresses in order to distinguish them from Bitcoin Core's.
51
- * https://www.bitcoinabc.org/cashaddr. We're sticking with the old base58 format because
52
- * migrating over to the new format will be laborious, and we want to see how the space evolves
53
- *
54
- * @param address may or may not be prefixed with the network, example bitcoincash:pppkt7q2axpsm2cajyjtu6x8fsh6ywauzgxmsru962 or pppkt7q2axpsm2cajyjtu6x8fsh6ywauzgxmsru962
55
- * @param version the version of the desired address, 'base58' or 'cashaddr', defaulting to 'base58'
56
- * @returns {*} address string
57
- */
58
- canonicalAddress(address, version = 'base58') {
59
- if (version === 'base58') {
60
- return utxolib.addressFormat.toCanonicalFormat(address, this.network);
61
- }
62
- if (version === 'cashaddr') {
63
- const script = utxolib.addressFormat.toOutputScriptTryFormats(address, this.network);
64
- return utxolib.addressFormat.fromOutputScriptWithFormat(script, version, this.network);
65
- }
66
- throw new Error(`invalid version ${version}`);
67
- }
68
- }
69
- exports.Bch = Bch;
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2REFBMEU7QUFFMUUsOERBQWdEO0FBRWhELE1BQWEsR0FBSSxTQUFRLGdDQUFnQjtJQUN2QyxZQUFzQixLQUFnQixFQUFFLE9BQXFCO1FBQzNELEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxnQkFBZ0IsQ0FBQyxPQUFlLEVBQUUsVUFBbUIsUUFBUTtRQUMzRCxJQUFJLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN6QixPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDM0IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JGLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RixDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFqQ0Qsa0JBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgVXR4b05ldHdvcmsgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC11dHhvJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgQmFzZUNvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuZXhwb3J0IGNsYXNzIEJjaCBleHRlbmRzIEFic3RyYWN0VXR4b0NvaW4ge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgbmV0d29yaz86IFV0eG9OZXR3b3JrKSB7XG4gICAgc3VwZXIoYml0Z28sIG5ldHdvcmsgfHwgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luY2FzaCk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSk6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IEJjaChiaXRnbyk7XG4gIH1cblxuICAvKipcbiAgICogQ2Fub25pY2FsaXplIGEgQml0Y29pbiBDYXNoIGFkZHJlc3MgZm9yIGEgc3BlY2lmaWMgdmVyc2lvblxuICAgKlxuICAgKiBTdGFydGluZyBvbiBKYW51YXJ5IDE0dGgsIDIwMTggQml0Y29pbiBDYXNoJ3MgYml0Y29pbi1hYmMgbm9kZSBzd2l0Y2hlZCBvdmVyIHRvIHVzaW5nIGNhc2hhZGRyXG4gICAqIGVuY29kaW5nIGZvciBhbGwgb2YgdGhlaXIgYWRkcmVzc2VzIGluIG9yZGVyIHRvIGRpc3Rpbmd1aXNoIHRoZW0gZnJvbSBCaXRjb2luIENvcmUncy5cbiAgICogaHR0cHM6Ly93d3cuYml0Y29pbmFiYy5vcmcvY2FzaGFkZHIuIFdlJ3JlIHN0aWNraW5nIHdpdGggdGhlIG9sZCBiYXNlNTggZm9ybWF0IGJlY2F1c2VcbiAgICogbWlncmF0aW5nIG92ZXIgdG8gdGhlIG5ldyBmb3JtYXQgd2lsbCBiZSBsYWJvcmlvdXMsIGFuZCB3ZSB3YW50IHRvIHNlZSBob3cgdGhlIHNwYWNlIGV2b2x2ZXNcbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3MgbWF5IG9yIG1heSBub3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgbmV0d29yaywgZXhhbXBsZSBiaXRjb2luY2FzaDpwcHBrdDdxMmF4cHNtMmNhanlqdHU2eDhmc2g2eXdhdXpneG1zcnU5NjIgb3IgcHBwa3Q3cTJheHBzbTJjYWp5anR1Nng4ZnNoNnl3YXV6Z3htc3J1OTYyXG4gICAqIEBwYXJhbSB2ZXJzaW9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBkZXNpcmVkIGFkZHJlc3MsICdiYXNlNTgnIG9yICdjYXNoYWRkcicsIGRlZmF1bHRpbmcgdG8gJ2Jhc2U1OCdcbiAgICogQHJldHVybnMgeyp9IGFkZHJlc3Mgc3RyaW5nXG4gICAqL1xuICBjYW5vbmljYWxBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgdmVyc2lvbjogdW5rbm93biA9ICdiYXNlNTgnKTogc3RyaW5nIHtcbiAgICBpZiAodmVyc2lvbiA9PT0gJ2Jhc2U1OCcpIHtcbiAgICAgIHJldHVybiB1dHhvbGliLmFkZHJlc3NGb3JtYXQudG9DYW5vbmljYWxGb3JtYXQoYWRkcmVzcywgdGhpcy5uZXR3b3JrKTtcbiAgICB9XG5cbiAgICBpZiAodmVyc2lvbiA9PT0gJ2Nhc2hhZGRyJykge1xuICAgICAgY29uc3Qgc2NyaXB0ID0gdXR4b2xpYi5hZGRyZXNzRm9ybWF0LnRvT3V0cHV0U2NyaXB0VHJ5Rm9ybWF0cyhhZGRyZXNzLCB0aGlzLm5ldHdvcmspO1xuICAgICAgcmV0dXJuIHV0eG9saWIuYWRkcmVzc0Zvcm1hdC5mcm9tT3V0cHV0U2NyaXB0V2l0aEZvcm1hdChzY3JpcHQsIHZlcnNpb24sIHRoaXMubmV0d29yayk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHZlcnNpb24gJHt2ZXJzaW9ufWApO1xuICB9XG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- import { BitGoBase } from '@bitgo-beta/sdk-core';
2
- export declare const register: (sdk: BitGoBase) => void;
3
- //# sourceMappingURL=register.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IAGzC,CAAC"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.register = void 0;
4
- const bch_1 = require("./bch");
5
- const tbch_1 = require("./tbch");
6
- const register = (sdk) => {
7
- sdk.register('bch', bch_1.Bch.createInstance);
8
- sdk.register('tbch', tbch_1.Tbch.createInstance);
9
- };
10
- exports.register = register;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQTRCO0FBQzVCLGlDQUE4QjtBQUV2QixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQWMsRUFBUSxFQUFFO0lBQy9DLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDO0FBSFcsUUFBQSxRQUFRLFlBR25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmNoIH0gZnJvbSAnLi9iY2gnO1xuaW1wb3J0IHsgVGJjaCB9IGZyb20gJy4vdGJjaCc7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlciA9IChzZGs6IEJpdEdvQmFzZSk6IHZvaWQgPT4ge1xuICBzZGsucmVnaXN0ZXIoJ2JjaCcsIEJjaC5jcmVhdGVJbnN0YW5jZSk7XG4gIHNkay5yZWdpc3RlcigndGJjaCcsIFRiY2guY3JlYXRlSW5zdGFuY2UpO1xufTtcbiJdfQ==
@@ -1,10 +0,0 @@
1
- /**
2
- * @prettier
3
- */
4
- import { BaseCoin, BitGoBase } from '@bitgo-beta/sdk-core';
5
- import { Bch } from './bch';
6
- export declare class Tbch extends Bch {
7
- constructor(bitgo: BitGoBase);
8
- static createInstance(bitgo: BitGoBase): BaseCoin;
9
- }
10
- //# sourceMappingURL=tbch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tbch.d.ts","sourceRoot":"","sources":["../../src/tbch.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,qBAAa,IAAK,SAAQ,GAAG;gBACf,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ;CAGlD"}
package/dist/src/tbch.js DELETED
@@ -1,48 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Tbch = void 0;
37
- const bch_1 = require("./bch");
38
- const bitcoin = __importStar(require("@bitgo-beta/utxo-lib"));
39
- class Tbch extends bch_1.Bch {
40
- constructor(bitgo) {
41
- super(bitgo, bitcoin.networks.bitcoincashTestnet);
42
- }
43
- static createInstance(bitgo) {
44
- return new Tbch(bitgo);
45
- }
46
- }
47
- exports.Tbch = Tbch;
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLCtCQUE0QjtBQUM1Qiw4REFBZ0Q7QUFFaEQsTUFBYSxJQUFLLFNBQVEsU0FBRztJQUMzQixZQUFZLEtBQWdCO1FBQzFCLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCO1FBQ3BDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBUkQsb0JBUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgeyBCYXNlQ29pbiwgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmNoIH0gZnJvbSAnLi9iY2gnO1xuaW1wb3J0ICogYXMgYml0Y29pbiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmV4cG9ydCBjbGFzcyBUYmNoIGV4dGVuZHMgQmNoIHtcbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSkge1xuICAgIHN1cGVyKGJpdGdvLCBiaXRjb2luLm5ldHdvcmtzLmJpdGNvaW5jYXNoVGVzdG5ldCk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSk6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IFRiY2goYml0Z28pO1xuICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- import 'should-http';
2
- //# sourceMappingURL=bch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bch.d.ts","sourceRoot":"","sources":["../../../test/integration/bch.ts"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC"}
@@ -1,75 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- /**
37
- * @prettier
38
- */
39
- const should = __importStar(require("should"));
40
- require("should-http");
41
- const sdk_api_1 = require("@bitgo-beta/sdk-api");
42
- const sdk_test_1 = require("@bitgo-beta/sdk-test");
43
- const tbch_1 = require("../../src/tbch");
44
- const nock = __importStar(require("nock"));
45
- nock.restore();
46
- describe('BCH:', function () {
47
- let bitgo;
48
- let wallet;
49
- before(async function () {
50
- bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
51
- bitgo.initializeTestVars();
52
- bitgo.safeRegister('tbch', tbch_1.Tbch.createInstance);
53
- await bitgo.authenticateTestUser(bitgo.testUserOTP());
54
- wallet = await bitgo.coin('tbch').wallets().getWallet({ id: sdk_test_1.TestBitGo.V2.TEST_BCH_WALLET_ID });
55
- });
56
- describe('Send Transaction', function () {
57
- it('should send fund to cashaddr recipient', async function () {
58
- await bitgo.unlock({ otp: '0000000' });
59
- const transaction = await wallet.send({
60
- address: sdk_test_1.TestBitGo.V2.TEST_BCH_WALLET_CASH_ADDRESS,
61
- amount: '5000',
62
- walletPassphrase: sdk_test_1.TestBitGo.V2.TEST_BCH_WALLET_PASSPHRASE,
63
- otp: bitgo.testUserOTP(),
64
- });
65
- should.exist(transaction);
66
- transaction.should.have.property('transfer');
67
- transaction.should.have.property('txid');
68
- transaction.should.have.property('tx');
69
- transaction.status.should.containEql('signed');
70
- transaction.transfer.type.should.containEql('send');
71
- transaction.transfer.wallet.should.containEql(wallet._wallet.id);
72
- });
73
- });
74
- });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9pbnRlZ3JhdGlvbi9iY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILCtDQUFpQztBQUNqQyx1QkFBcUI7QUFFckIsaURBQStDO0FBQy9DLG1EQUErRDtBQUMvRCx5Q0FBc0M7QUFDdEMsMkNBQTZCO0FBRTdCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUVmLFFBQVEsQ0FBQyxNQUFNLEVBQUU7SUFDZixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxNQUFNLENBQUM7SUFFWCxNQUFNLENBQUMsS0FBSztRQUNWLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsV0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWhELE1BQU0sS0FBSyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLG9CQUFTLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtRQUMzQixFQUFFLENBQUMsd0NBQXdDLEVBQUUsS0FBSztZQUNoRCxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUV2QyxNQUFNLFdBQVcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ3BDLE9BQU8sRUFBRSxvQkFBUyxDQUFDLEVBQUUsQ0FBQyw0QkFBNEI7Z0JBQ2xELE1BQU0sRUFBRSxNQUFNO2dCQUNkLGdCQUFnQixFQUFFLG9CQUFTLENBQUMsRUFBRSxDQUFDLDBCQUEwQjtnQkFDekQsR0FBRyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUU7YUFDekIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxQixXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0MsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0ICogYXMgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgJ3Nob3VsZC1odHRwJztcblxuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgVGJjaCB9IGZyb20gJy4uLy4uL3NyYy90YmNoJztcbmltcG9ydCAqIGFzIG5vY2sgZnJvbSAnbm9jayc7XG5cbm5vY2sucmVzdG9yZSgpO1xuXG5kZXNjcmliZSgnQkNIOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCB3YWxsZXQ7XG5cbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3RiY2gnLCBUYmNoLmNyZWF0ZUluc3RhbmNlKTtcblxuICAgIGF3YWl0IGJpdGdvLmF1dGhlbnRpY2F0ZVRlc3RVc2VyKGJpdGdvLnRlc3RVc2VyT1RQKCkpO1xuICAgIHdhbGxldCA9IGF3YWl0IGJpdGdvLmNvaW4oJ3RiY2gnKS53YWxsZXRzKCkuZ2V0V2FsbGV0KHsgaWQ6IFRlc3RCaXRHby5WMi5URVNUX0JDSF9XQUxMRVRfSUQgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTZW5kIFRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgc2VuZCBmdW5kIHRvIGNhc2hhZGRyIHJlY2lwaWVudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJpdGdvLnVubG9jayh7IG90cDogJzAwMDAwMDAnIH0pO1xuXG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGF3YWl0IHdhbGxldC5zZW5kKHtcbiAgICAgICAgYWRkcmVzczogVGVzdEJpdEdvLlYyLlRFU1RfQkNIX1dBTExFVF9DQVNIX0FERFJFU1MsXG4gICAgICAgIGFtb3VudDogJzUwMDAnLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBUZXN0Qml0R28uVjIuVEVTVF9CQ0hfV0FMTEVUX1BBU1NQSFJBU0UsXG4gICAgICAgIG90cDogYml0Z28udGVzdFVzZXJPVFAoKSxcbiAgICAgIH0pO1xuXG4gICAgICBzaG91bGQuZXhpc3QodHJhbnNhY3Rpb24pO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RyYW5zZmVyJyk7XG4gICAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHhpZCcpO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R4Jyk7XG4gICAgICB0cmFuc2FjdGlvbi5zdGF0dXMuc2hvdWxkLmNvbnRhaW5FcWwoJ3NpZ25lZCcpO1xuICAgICAgdHJhbnNhY3Rpb24udHJhbnNmZXIudHlwZS5zaG91bGQuY29udGFpbkVxbCgnc2VuZCcpO1xuICAgICAgdHJhbnNhY3Rpb24udHJhbnNmZXIud2FsbGV0LnNob3VsZC5jb250YWluRXFsKHdhbGxldC5fd2FsbGV0LmlkKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=bch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bch.d.ts","sourceRoot":"","sources":["../../../test/unit/bch.ts"],"names":[],"mappings":""}
@@ -1,142 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * @prettier
5
- */
6
- const sdk_api_1 = require("@bitgo-beta/sdk-api");
7
- const sdk_test_1 = require("@bitgo-beta/sdk-test");
8
- const bch_1 = require("../../src/bch");
9
- const tbch_1 = require("../../src/tbch");
10
- describe('Custom BCH Tests', function () {
11
- const bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
12
- bitgo.initializeTestVars();
13
- bitgo.safeRegister('bch', bch_1.Bch.createInstance);
14
- bitgo.safeRegister('tbch', tbch_1.Tbch.createInstance);
15
- const bch = bitgo.coin('bch');
16
- const tbch = bitgo.coin('tbch');
17
- // we use mainnet bch so we can reuse the mainnet address examples
18
- it('should correctly convert addresses', function () {
19
- // P2PKH cashaddr -> cashaddr
20
- bch
21
- .canonicalAddress('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr')
22
- .should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
23
- bch
24
- .canonicalAddress('qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr')
25
- .should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
26
- // P2PKH base58 -> cashaddr
27
- bch
28
- .canonicalAddress('1BpEi6DfDAUFd7GtittLSdBeYJvcoaVggu', 'cashaddr')
29
- .should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
30
- // P2SH cashaddr -> cashaddr
31
- bch
32
- .canonicalAddress('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
33
- .should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
34
- bch
35
- .canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
36
- .should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
37
- // P2SH base58 -> cashaddr
38
- bch
39
- .canonicalAddress('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC', 'cashaddr')
40
- .should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
41
- // no 'bitcoincash:' prefix
42
- bch
43
- .canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
44
- .should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
45
- // P2PKH cashaddr -> base58
46
- bch
47
- .canonicalAddress('bitcoincash:qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'base58')
48
- .should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
49
- bch
50
- .canonicalAddress('qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'base58')
51
- .should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
52
- // P2PKH base58 -> base58
53
- bch
54
- .canonicalAddress('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb', 'base58')
55
- .should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
56
- // P2SH cashaddr -> base58
57
- bch
58
- .canonicalAddress('bitcoincash:pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58')
59
- .should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
60
- bch
61
- .canonicalAddress('pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58')
62
- .should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
63
- // P2SH base58 -> base58
64
- bch
65
- .canonicalAddress('3LDsS579y7sruadqu11beEJoTjdFiFCdX4', 'base58')
66
- .should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
67
- // undefined version defaults to base58
68
- bch
69
- .canonicalAddress('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq')
70
- .should.equal('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC');
71
- bch
72
- .canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq')
73
- .should.equal('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC');
74
- // all capitalized
75
- bch
76
- .canonicalAddress('BITCOINCASH:QQQ3728YW0Y47SQN6L2NA30MCW6ZM78DZQRE909M2R', 'base58')
77
- .should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
78
- bch
79
- .canonicalAddress('QQQ3728YW0Y47SQN6L2NA30MCW6ZM78DZQRE909M2R', 'base58')
80
- .should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
81
- // testnet addresses
82
- tbch
83
- .canonicalAddress('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X', 'cashaddr')
84
- .should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
85
- tbch
86
- .canonicalAddress('n3jYBjCzgGNydQwf83Hz6GBzGBhMkKfgL1', 'cashaddr')
87
- .should.equal('bchtest:qremgr9dr9x5swv82k69qdjzrvdxgkaaesftdp5xla');
88
- tbch
89
- .canonicalAddress('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
90
- .should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
91
- tbch
92
- .canonicalAddress('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
93
- .should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
94
- tbch
95
- .canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'base58')
96
- .should.equal('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X');
97
- tbch
98
- .canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'base58')
99
- .should.equal('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X');
100
- tbch
101
- .canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
102
- .should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
103
- });
104
- it('should reject invalid addresses', function () {
105
- // improperly short data segment
106
- (() => {
107
- bch.canonicalAddress('bitcoincash:sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
108
- }).should.throw();
109
- // mismatched data segment (cashaddr)
110
- (() => {
111
- bch.canonicalAddress('bitcoincash:yr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
112
- }).should.throw();
113
- // double prefix
114
- (() => {
115
- bch.canonicalAddress('bitcoincash:bitcoincash:pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
116
- }).should.throw();
117
- // mismatched data segment (base58)
118
- (() => {
119
- bch.canonicalAddress('3DDsS579y7sruadqu11beEJoTjdFiFCdX4', 'base58');
120
- }).should.throw();
121
- // improper prefix
122
- (() => {
123
- bch.canonicalAddress(':qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'base58');
124
- }).should.throw();
125
- (() => {
126
- bch.canonicalAddress('bitcoin:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'base58');
127
- }).should.throw();
128
- // mismatched capitalization
129
- (() => {
130
- bch.canonicalAddress('bitcoincash:QPM2Qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr');
131
- }).should.throw();
132
- // improper version
133
- (() => {
134
- bch.canonicalAddress('bitcoincash:qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'blah');
135
- }).should.throw();
136
- // undefined address
137
- (() => {
138
- bch.canonicalAddress(undefined, 'blah');
139
- }).should.throw();
140
- });
141
- });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2JjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOztHQUVHO0FBQ0gsaURBQStDO0FBQy9DLG1EQUErRDtBQUMvRCx1Q0FBb0M7QUFDcEMseUNBQXNDO0FBRXRDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtJQUMzQixNQUFNLEtBQUssR0FBaUIsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzNCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxXQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFaEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQVEsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBUyxDQUFDO0lBRXhDLGtFQUFrRTtJQUNsRSxFQUFFLENBQUMsb0NBQW9DLEVBQUU7UUFDdkMsNkJBQTZCO1FBQzdCLEdBQUc7YUFDQSxnQkFBZ0IsQ0FBQyx3REFBd0QsRUFBRSxVQUFVLENBQUM7YUFDdEYsTUFBTSxDQUFDLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQzFFLEdBQUc7YUFDQSxnQkFBZ0IsQ0FBQyw0Q0FBNEMsRUFBRSxVQUFVLENBQUM7YUFDMUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBRTFFLDJCQUEyQjtRQUMzQixHQUFHO2FBQ0EsZ0JBQWdCLENBQUMsb0NBQW9DLEVBQUUsVUFBVSxDQUFDO2FBQ2xFLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FB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QUFnQixDQUFDLDZDQUE2QyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVsQixDQUFDLEdBQUcsRUFBRTtZQUNKLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxvREFBb0QsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbEIsNEJBQTRCO1FBQzVCLENBQUMsR0FBRyxFQUFFO1lBQ0osR0FBRyxDQUFDLGdCQUFnQixDQUFDLHdEQUF3RCxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdGLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVsQixtQkFBbUI7UUFDbkIsQ0FBQyxHQUFHLEVBQUU7WUFDSixHQUFHLENBQUMsZ0JBQWdCLENBQUMsd0RBQXdELEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekYsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWxCLG9CQUFvQjtRQUNwQixDQUFDLEdBQUcsRUFBRTtZQUNKLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgQmNoIH0gZnJvbSAnLi4vLi4vc3JjL2JjaCc7XG5pbXBvcnQgeyBUYmNoIH0gZnJvbSAnLi4vLi4vc3JjL3RiY2gnO1xuXG5kZXNjcmliZSgnQ3VzdG9tIEJDSCBUZXN0cycsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYml0Z286IFRlc3RCaXRHb0FQSSA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gIGJpdGdvLnNhZmVSZWdpc3RlcignYmNoJywgQmNoLmNyZWF0ZUluc3RhbmNlKTtcbiAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0YmNoJywgVGJjaC5jcmVhdGVJbnN0YW5jZSk7XG5cbiAgY29uc3QgYmNoID0gYml0Z28uY29pbignYmNoJykgYXMgQmNoO1xuICBjb25zdCB0YmNoID0gYml0Z28uY29pbigndGJjaCcpIGFzIFRiY2g7XG5cbiAgLy8gd2UgdXNlIG1haW5uZXQgYmNoIHNvIHdlIGNhbiByZXVzZSB0aGUgbWFpbm5ldCBhZGRyZXNzIGV4YW1wbGVzXG4gIGl0KCdzaG91bGQgY29ycmVjdGx5IGNvbnZlcnQgYWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIFAyUEtIIGNhc2hhZGRyIC0+IGNhc2hhZGRyXG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbmNhc2g6cXBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dnkyMmdkeDZhJywgJ2Nhc2hhZGRyJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJ2JpdGNvaW5jYXNoOnFwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3Z5MjJnZHg2YScpO1xuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3FwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3Z5MjJnZHg2YScsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpxcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2eTIyZ2R4NmEnKTtcblxuICAgIC8vIFAyUEtIIGJhc2U1OCAtPiBjYXNoYWRkclxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJzFCcEVpNkRmREFVRmQ3R3RpdHRMU2RCZVlKdmNvYVZnZ3UnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYml0Y29pbmNhc2g6cXBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dnkyMmdkeDZhJyk7XG5cbiAgICAvLyBQMlNIIGNhc2hhZGRyIC0+IGNhc2hhZGRyXG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbmNhc2g6cHBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dm4waDgyOXBxJywgJ2Nhc2hhZGRyJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJ2JpdGNvaW5jYXNoOnBwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScpO1xuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3BwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpwcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2bjBoODI5cHEnKTtcblxuICAgIC8vIFAyU0ggYmFzZTU4IC0+IGNhc2hhZGRyXG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnM0NXRmRkaTZtNG5kaUd5S3F6WXZzRllhZ3FETFBWTVR6QycsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpwcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2bjBoODI5cHEnKTtcblxuICAgIC8vIG5vICdiaXRjb2luY2FzaDonIHByZWZpeFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3BwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpwcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2bjBoODI5cHEnKTtcblxuICAgIC8vIFAyUEtIIGNhc2hhZGRyIC0+IGJhc2U1OFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ2JpdGNvaW5jYXNoOnFxcTM3Mjh5dzB5NDdzcW42bDJuYTMwbWN3NnptNzhkenFyZTkwOW0ycicsICdiYXNlNTgnKVxuICAgICAgLnNob3VsZC5lcXVhbCgnMTZ3MUQ1V1JWS0p1WlVzU1J6ZExwOXczWUdjZ294RFhiJyk7XG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygncXFxMzcyOHl3MHk0N3NxbjZsMm5hMzBtY3c2em03OGR6cXJlOTA5bTJyJywgJ2Jhc2U1OCcpXG4gICAgICAuc2hvdWxkLmVxdWFsKCcxNncxRDVXUlZLSnVaVXNTUnpkTHA5dzNZR2Nnb3hEWGInKTtcblxuICAgIC8vIFAyUEtIIGJhc2U1OCAtPiBiYXNlNThcbiAgICBiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCcxNncxRDVXUlZLSnVaVXNTUnpkTHA5dzNZR2Nnb3hEWGInLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzE2dzFENVdSVktKdVpVc1NSemRMcDl3M1lHY2dveERYYicpO1xuXG4gICAgLy8gUDJTSCBjYXNoYWRkciAtPiBiYXNlNThcbiAgICBiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDpwcjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnKTtcbiAgICBiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCdwcjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnKTtcblxuICAgIC8vIFAyU0ggYmFzZTU4IC0+IGJhc2U1OFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnKTtcblxuICAgIC8vIHVuZGVmaW5lZCB2ZXJzaW9uIGRlZmF1bHRzIHRvIGJhc2U1OFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ2JpdGNvaW5jYXNoOnBwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScpXG4gICAgICAuc2hvdWxkLmVxdWFsKCczQ1dGZGRpNm00bmRpR3lLcXpZdnNGWWFncURMUFZNVHpDJyk7XG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygncHBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dm4waDgyOXBxJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNDV0ZkZGk2bTRuZGlHeUtxell2c0ZZYWdxRExQVk1UekMnKTtcblxuICAgIC8vIGFsbCBjYXBpdGFsaXplZFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ0JJVENPSU5DQVNIOlFRUTM3MjhZVzBZNDdTUU42TDJOQTMwTUNXNlpNNzhEWlFSRTkwOU0yUicsICdiYXNlNTgnKVxuICAgICAgLnNob3VsZC5lcXVhbCgnMTZ3MUQ1V1JWS0p1WlVzU1J6ZExwOXczWUdjZ294RFhiJyk7XG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnUVFRMzcyOFlXMFk0N1NRTjZMMk5BMzBNQ1c2Wk03OERaUVJFOTA5TTJSJywgJ2Jhc2U1OCcpXG4gICAgICAuc2hvdWxkLmVxdWFsKCcxNncxRDVXUlZLSnVaVXNTUnpkTHA5dzNZR2Nnb3hEWGInKTtcblxuICAgIC8vIHRlc3RuZXQgYWRkcmVzc2VzXG4gICAgdGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJzJOQ0VEbW1LTk5ucUt2bld3N3BFM1JMenVGZTVhSEhWeTFYJywgJ2Nhc2hhZGRyJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJ2JjaHRlc3Q6cHJncm5qZW5nczU1NWszY2ZmMnMzZ3F4ZzN4eXlyOXV6eWg5anM1bThmJyk7XG4gICAgdGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ24zallCakN6Z0dOeWRRd2Y4M0h6NkdCekdCaE1rS2ZnTDEnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYmNodGVzdDpxcmVtZ3I5ZHI5eDVzd3Y4Mms2OXFkanpydmR4Z2thYWVzZnRkcDV4bGEnKTtcbiAgICB0YmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnKTtcbiAgICB0YmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnKTtcbiAgICB0YmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygncHJncm5qZW5nczU1NWszY2ZmMnMzZ3F4ZzN4eXlyOXV6eWg5anM1bThmJywgJ2Jhc2U1OCcpXG4gICAgICAuc2hvdWxkLmVxdWFsKCcyTkNFRG1tS05ObnFLdm5XdzdwRTNSTHp1RmU1YUhIVnkxWCcpO1xuICAgIHRiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCdwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzJOQ0VEbW1LTk5ucUt2bld3N3BFM1JMenVGZTVhSEhWeTFYJyk7XG4gICAgdGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3ByZ3JuamVuZ3M1NTVrM2NmZjJzM2dxeGczeHl5cjl1enloOWpzNW04ZicsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiY2h0ZXN0OnByZ3JuamVuZ3M1NTVrM2NmZjJzM2dxeGczeHl5cjl1enloOWpzNW04ZicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIGFkZHJlc3NlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBpbXByb3Blcmx5IHNob3J0IGRhdGEgc2VnbWVudFxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbmNhc2g6c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBtaXNtYXRjaGVkIGRhdGEgc2VnbWVudCAoY2FzaGFkZHIpXG4gICAgKCgpID0+IHtcbiAgICAgIGJjaC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDp5cjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBkb3VibGUgcHJlZml4XG4gICAgKCgpID0+IHtcbiAgICAgIGJjaC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDpiaXRjb2luY2FzaDpwcjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBtaXNtYXRjaGVkIGRhdGEgc2VnbWVudCAoYmFzZTU4KVxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnM0REc1M1Nzl5N3NydWFkcXUxMWJlRUpvVGpkRmlGQ2RYNCcsICdiYXNlNTgnKTtcbiAgICB9KS5zaG91bGQudGhyb3coKTtcblxuICAgIC8vIGltcHJvcGVyIHByZWZpeFxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnOnFwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3Z5MjJnZHg2YScsICdiYXNlNTgnKTtcbiAgICB9KS5zaG91bGQudGhyb3coKTtcblxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbjpxcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2eTIyZ2R4NmEnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBtaXNtYXRjaGVkIGNhcGl0YWxpemF0aW9uXG4gICAgKCgpID0+IHtcbiAgICAgIGJjaC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDpRUE0yUXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2eTIyZ2R4NmEnLCAnY2FzaGFkZHInKTtcbiAgICB9KS5zaG91bGQudGhyb3coKTtcblxuICAgIC8vIGltcHJvcGVyIHZlcnNpb25cbiAgICAoKCkgPT4ge1xuICAgICAgYmNoLmNhbm9uaWNhbEFkZHJlc3MoJ2JpdGNvaW5jYXNoOnFxcTM3Mjh5dzB5NDdzcW42bDJuYTMwbWN3NnptNzhkenFyZTkwOW0ycicsICdibGFoJyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyB1bmRlZmluZWQgYWRkcmVzc1xuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcyh1bmRlZmluZWQgYXMgYW55LCAnYmxhaCcpO1xuICAgIH0pLnNob3VsZC50aHJvdygpO1xuICB9KTtcbn0pO1xuIl19