@bitgo-beta/sdk-core 8.2.1-beta.1546 → 8.2.1-beta.1548

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.
@@ -2,7 +2,7 @@
2
2
  * @prettier
3
3
  */
4
4
  import { OfcTokenConfig } from '@bitgo-beta/statics';
5
- import { BitGoBase, CoinConstructor, SignTransactionOptions as BaseSignTransactionOptions, SignedTransaction } from '../';
5
+ import { BitGoBase, CoinConstructor, SignTransactionOptions as BaseSignTransactionOptions, SignedTransaction, ITransactionRecipient } from '../';
6
6
  import { Ofc } from './ofc';
7
7
  export interface SignTransactionOptions extends BaseSignTransactionOptions {
8
8
  txPrebuild: {
@@ -23,6 +23,7 @@ export declare class OfcToken extends Ofc {
23
23
  getFullName(): string;
24
24
  getBaseFactor(): string;
25
25
  get type(): string;
26
+ checkRecipient(recipient: ITransactionRecipient): void;
26
27
  /**
27
28
  * Flag for sending value of 0
28
29
  * @returns {boolean} True if okay to send 0 value, false otherwise
@@ -1 +1 @@
1
- {"version":3,"file":"ofcToken.d.ts","sourceRoot":"","sources":["../../../src/coins/ofcToken.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EACL,SAAS,EACT,eAAe,EACf,sBAAsB,IAAI,0BAA0B,EACpD,iBAAiB,EAClB,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,GAAG,EAAE,MAAM,CAAC;CACb;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAG1B,qBAAa,QAAS,SAAQ,GAAG;IAC/B,SAAgB,WAAW,EAAE,cAAc,CAAC;gBAEhC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc;IAKzD,IAAI,IAAI,WAEP;IAED,IAAI,aAAa,WAEhB;IAED,IAAI,IAAI,WAEP;IAED,IAAI,WAAW,WAEd;IAED,IAAI,MAAM,YAET;IAED,QAAQ;IAIR,WAAW;IAIX,aAAa;IAIb,IAAW,IAAI,WAEd;IAED;;;OAGG;IACH,wBAAwB;IAIxB,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAItE;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQjF;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;CAa1C"}
1
+ {"version":3,"file":"ofcToken.d.ts","sourceRoot":"","sources":["../../../src/coins/ofcToken.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EACL,SAAS,EACT,eAAe,EACf,sBAAsB,IAAI,0BAA0B,EACpD,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,KAAK,CAAC;AAGb,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,GAAG,EAAE,MAAM,CAAC;CACb;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAI1B,qBAAa,QAAS,SAAQ,GAAG;IAC/B,SAAgB,WAAW,EAAE,cAAc,CAAC;gBAEhC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc;IAKzD,IAAI,IAAI,WAEP;IAED,IAAI,aAAa,WAEhB;IAED,IAAI,IAAI,WAEP;IAED,IAAI,WAAW,WAEd;IAED,IAAI,MAAM,YAET;IAED,QAAQ;IAIR,WAAW;IAIX,aAAa;IAIb,IAAW,IAAI,WAEd;IAED,cAAc,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI;IA+BtD;;;OAGG;IACH,wBAAwB;IAIxB,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAItE;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQjF;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;CAa1C"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OfcToken = void 0;
4
4
  const lodash_1 = require("lodash");
5
+ const lightning_1 = require("../lightning");
5
6
  const ofc_1 = require("./ofc");
6
7
  const publicIdRegex = /^[a-f\d]{32}$/i;
7
8
  class OfcToken extends ofc_1.Ofc {
@@ -36,6 +37,31 @@ class OfcToken extends ofc_1.Ofc {
36
37
  get type() {
37
38
  return this.tokenConfig.type;
38
39
  }
40
+ checkRecipient(recipient) {
41
+ if ((0, lightning_1.isBolt11Invoice)(recipient.address)) {
42
+ // should throw error if this isnt bitcoin (mainnet or testnet)
43
+ if (this.backingCoin !== 'btc' && this.backingCoin !== 'tbtc') {
44
+ throw new Error(`invalid argument - lightning invoice is only supported for bitcoin`);
45
+ }
46
+ // amount for bolt11 invoices is either 'invoice' or a non-zero bigint
47
+ if (recipient.amount === lightning_1.LIGHTNING_INVOICE) {
48
+ return;
49
+ }
50
+ // try to parse the amount as a bigint
51
+ let amount;
52
+ try {
53
+ amount = BigInt(recipient.amount);
54
+ }
55
+ catch (e) {
56
+ throw new Error(`invalid argument ${recipient.amount} for amount - lightning invoice amount must be >= 0 or ${lightning_1.LIGHTNING_INVOICE}`);
57
+ }
58
+ if (amount > 0n) {
59
+ return;
60
+ }
61
+ throw new Error(`invalid argument for amount - lightning invoice amount must be a non-zero bigint or ${lightning_1.LIGHTNING_INVOICE}`);
62
+ }
63
+ super.checkRecipient(recipient);
64
+ }
39
65
  /**
40
66
  * Flag for sending value of 0
41
67
  * @returns {boolean} True if okay to send 0 value, false otherwise
@@ -81,4 +107,4 @@ class OfcToken extends ofc_1.Ofc {
81
107
  }
82
108
  }
83
109
  exports.OfcToken = OfcToken;
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZjVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29pbnMvb2ZjVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsbUNBQWtDO0FBT2xDLCtCQUE0QjtBQVc1QixNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztBQUN2QyxNQUFhLFFBQVMsU0FBUSxTQUFHO0lBRy9CLFlBQVksS0FBZ0IsRUFBRSxXQUEyQjtRQUN2RCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCx3QkFBd0I7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE1BQXNCO1FBQ2xELE9BQU8sQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQThCO1FBQ2xELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUNuQyxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQVEsQ0FBQztRQUN6RSxNQUFNLFNBQVMsR0FBVyxlQUFlLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQVMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsY0FBYyxDQUFDLE9BQWdCO1FBQzdCLElBQUksQ0FBQyxJQUFBLGlCQUFRLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEQsT0FBTyxXQUFXLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF6RkQsNEJBeUZDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgT2ZjVG9rZW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEJpdEdvQmFzZSxcbiAgQ29pbkNvbnN0cnVjdG9yLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGFzIEJhc2VTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbn0gZnJvbSAnLi4vJztcbmltcG9ydCB7IE9mYyB9IGZyb20gJy4vb2ZjJztcblxuZXhwb3J0IGludGVyZmFjZSBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiB7XG4gICAgcGF5bG9hZDogc3RyaW5nO1xuICB9O1xuICBwcnY6IHN0cmluZztcbn1cblxuZXhwb3J0IHsgT2ZjVG9rZW5Db25maWcgfTtcblxuY29uc3QgcHVibGljSWRSZWdleCA9IC9eW2EtZlxcZF17MzJ9JC9pO1xuZXhwb3J0IGNsYXNzIE9mY1Rva2VuIGV4dGVuZHMgT2ZjIHtcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuQ29uZmlnOiBPZmNUb2tlbkNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCB0b2tlbkNvbmZpZzogT2ZjVG9rZW5Db25maWcpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gICAgdGhpcy50b2tlbkNvbmZpZyA9IHRva2VuQ29uZmlnO1xuICB9XG5cbiAgZ2V0IGNvaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuY29pbjtcbiAgfVxuXG4gIGdldCBkZWNpbWFsUGxhY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLmRlY2ltYWxQbGFjZXM7XG4gIH1cblxuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uYW1lO1xuICB9XG5cbiAgZ2V0IGJhY2tpbmdDb2luKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLmJhY2tpbmdDb2luO1xuICB9XG5cbiAgZ2V0IGlzRmlhdCgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5pc0ZpYXQ7XG4gIH1cblxuICBnZXRDaGFpbigpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldEJhc2VGYWN0b3IoKSB7XG4gICAgcmV0dXJuIFN0cmluZyhNYXRoLnBvdygxMCwgdGhpcy5kZWNpbWFsUGxhY2VzKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcudHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGbGFnIGZvciBzZW5kaW5nIHZhbHVlIG9mIDBcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgb2theSB0byBzZW5kIDAgdmFsdWUsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgdmFsdWVsZXNzVHJhbnNmZXJBbGxvd2VkKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUb2tlbkNvbnN0cnVjdG9yKGNvbmZpZzogT2ZjVG9rZW5Db25maWcpOiBDb2luQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiAoYml0Z286IEJpdEdvQmFzZSkgPT4gbmV3IE9mY1Rva2VuKGJpdGdvLCBjb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc2VtYmxlIGtleWNoYWluIGFuZCBoYWxmLXNpZ24gcHJlYnVpbHQgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj59XG4gICAqL1xuICBhc3luYyBzaWduVHJhbnNhY3Rpb24ocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBwYXJhbXMudHhQcmVidWlsZDtcbiAgICBjb25zdCBwYXlsb2FkID0gdHhQcmVidWlsZC5wYXlsb2FkO1xuICAgIGNvbnN0IHNpZ25hdHVyZUJ1ZmZlciA9IChhd2FpdCB0aGlzLnNpZ25NZXNzYWdlKHBhcmFtcywgcGF5bG9hZCkpIGFzIGFueTtcbiAgICBjb25zdCBzaWduYXR1cmU6IHN0cmluZyA9IHNpZ25hdHVyZUJ1ZmZlci50b1N0cmluZygnaGV4Jyk7XG4gICAgcmV0dXJuIHsgaGFsZlNpZ25lZDogeyBwYXlsb2FkLCBzaWduYXR1cmUgfSB9IGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhZGRyZXNzIGlzIHZhbGlkIGZvciB0aGlzIG9mYyB0b2tlbi5cbiAgICpcbiAgICogVGhlc2UgYWRkcmVzc2VzIGFyZSBlaXRoZXIgYmctPHB1YmxpY2lkPiwgd2hlcmUgcHVibGljIGlkIGlzIHRoZSBpbnRlcm5hbCBhZGRyZXNzIHRvIHNlbmQgdG8sXG4gICAqIG9yIGFyZSBhbiBhZGRyZXNzIHdoaWNoIGlzIHZhbGlkIG9uIHRoZSBiYWNraW5nIGNvaW4gb2YgdGhpcyBvZmMgdG9rZW4uXG4gICAqIEBwYXJhbSBhZGRyZXNzIGFkZHJlc3MgdG8gY2hlY2sgZm9yIHZhbGlkaXR5XG4gICAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpc1N0cmluZyhhZGRyZXNzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYWRkcmVzcy5zdGFydHNXaXRoKCdiZy0nKSkge1xuICAgICAgY29uc3QgcGFydHMgPSBhZGRyZXNzLnNwbGl0KCctJyk7XG4gICAgICBjb25zdCBhY2NvdW50SWQgPSBwYXJ0c1sxXTtcbiAgICAgIHJldHVybiBwYXJ0cy5sZW5ndGggPT09IDIgJiYgcHVibGljSWRSZWdleC50ZXN0KGFjY291bnRJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJhY2tpbmdDb2luID0gdGhpcy5iaXRnby5jb2luKHRoaXMuYmFja2luZ0NvaW4pO1xuICAgICAgcmV0dXJuIGJhY2tpbmdDb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICAgIH1cbiAgfVxufVxuIl19
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZjVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29pbnMvb2ZjVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsbUNBQWtDO0FBUWxDLDRDQUFrRTtBQUVsRSwrQkFBNEI7QUFXNUIsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUM7QUFFdkMsTUFBYSxRQUFTLFNBQVEsU0FBRztJQUcvQixZQUFZLEtBQWdCLEVBQUUsV0FBMkI7UUFDdkQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFD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biAqL1xuaW1wb3J0IHsgT2ZjVG9rZW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEJpdEdvQmFzZSxcbiAgQ29pbkNvbnN0cnVjdG9yLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGFzIEJhc2VTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgSVRyYW5zYWN0aW9uUmVjaXBpZW50LFxufSBmcm9tICcuLi8nO1xuaW1wb3J0IHsgaXNCb2x0MTFJbnZvaWNlLCBMSUdIVE5JTkdfSU5WT0lDRSB9IGZyb20gJy4uL2xpZ2h0bmluZyc7XG5cbmltcG9ydCB7IE9mYyB9IGZyb20gJy4vb2ZjJztcblxuZXhwb3J0IGludGVyZmFjZSBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiB7XG4gICAgcGF5bG9hZDogc3RyaW5nO1xuICB9O1xuICBwcnY6IHN0cmluZztcbn1cblxuZXhwb3J0IHsgT2ZjVG9rZW5Db25maWcgfTtcblxuY29uc3QgcHVibGljSWRSZWdleCA9IC9eW2EtZlxcZF17MzJ9JC9pO1xuXG5leHBvcnQgY2xhc3MgT2ZjVG9rZW4gZXh0ZW5kcyBPZmMge1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5Db25maWc6IE9mY1Rva2VuQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHRva2VuQ29uZmlnOiBPZmNUb2tlbkNvbmZpZykge1xuICAgIHN1cGVyKGJpdGdvKTtcbiAgICB0aGlzLnRva2VuQ29uZmlnID0gdG9rZW5Db25maWc7XG4gIH1cblxuICBnZXQgY29pbigpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5jb2luO1xuICB9XG5cbiAgZ2V0IGRlY2ltYWxQbGFjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuZGVjaW1hbFBsYWNlcztcbiAgfVxuXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLm5hbWU7XG4gIH1cblxuICBnZXQgYmFja2luZ0NvaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuYmFja2luZ0NvaW47XG4gIH1cblxuICBnZXQgaXNGaWF0KCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLmlzRmlhdDtcbiAgfVxuXG4gIGdldENoYWluKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpIHtcbiAgICByZXR1cm4gU3RyaW5nKE1hdGgucG93KDEwLCB0aGlzLmRlY2ltYWxQbGFjZXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy50eXBlO1xuICB9XG5cbiAgY2hlY2tSZWNpcGllbnQocmVjaXBpZW50OiBJVHJhbnNhY3Rpb25SZWNpcGllbnQpOiB2b2lkIHtcbiAgICBpZiAoaXNCb2x0MTFJbnZvaWNlKHJlY2lwaWVudC5hZGRyZXNzKSkge1xuICAgICAgLy8gc2hvdWxkIHRocm93IGVycm9yIGlmIHRoaXMgaXNudCBiaXRjb2luIChtYWlubmV0IG9yIHRlc3RuZXQpXG4gICAgICBpZiAodGhpcy5iYWNraW5nQ29pbiAhPT0gJ2J0YycgJiYgdGhpcy5iYWNraW5nQ29pbiAhPT0gJ3RidGMnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudCAtIGxpZ2h0bmluZyBpbnZvaWNlIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBiaXRjb2luYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGFtb3VudCBmb3IgYm9sdDExIGludm9pY2VzIGlzIGVpdGhlciAnaW52b2ljZScgb3IgYSBub24temVybyBiaWdpbnRcbiAgICAgIGlmIChyZWNpcGllbnQuYW1vdW50ID09PSBMSUdIVE5JTkdfSU5WT0lDRSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyB0cnkgdG8gcGFyc2UgdGhlIGFtb3VudCBhcyBhIGJpZ2ludFxuICAgICAgbGV0IGFtb3VudDogYmlnaW50O1xuICAgICAgdHJ5IHtcbiAgICAgICAgYW1vdW50ID0gQmlnSW50KHJlY2lwaWVudC5hbW91bnQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYGludmFsaWQgYXJndW1lbnQgJHtyZWNpcGllbnQuYW1vdW50fSBmb3IgYW1vdW50IC0gbGlnaHRuaW5nIGludm9pY2UgYW1vdW50IG11c3QgYmUgPj0gMCBvciAke0xJR0hUTklOR19JTlZPSUNFfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChhbW91bnQgPiAwbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBpbnZhbGlkIGFyZ3VtZW50IGZvciBhbW91bnQgLSBsaWdodG5pbmcgaW52b2ljZSBhbW91bnQgbXVzdCBiZSBhIG5vbi16ZXJvIGJpZ2ludCBvciAke0xJR0hUTklOR19JTlZPSUNFfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgc3VwZXIuY2hlY2tSZWNpcGllbnQocmVjaXBpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGbGFnIGZvciBzZW5kaW5nIHZhbHVlIG9mIDBcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgb2theSB0byBzZW5kIDAgdmFsdWUsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgdmFsdWVsZXNzVHJhbnNmZXJBbGxvd2VkKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUb2tlbkNvbnN0cnVjdG9yKGNvbmZpZzogT2ZjVG9rZW5Db25maWcpOiBDb2luQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiAoYml0Z286IEJpdEdvQmFzZSkgPT4gbmV3IE9mY1Rva2VuKGJpdGdvLCBjb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc2VtYmxlIGtleWNoYWluIGFuZCBoYWxmLXNpZ24gcHJlYnVpbHQgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj59XG4gICAqL1xuICBhc3luYyBzaWduVHJhbnNhY3Rpb24ocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHR4UHJlYnVpbGQgPSBwYXJhbXMudHhQcmVidWlsZDtcbiAgICBjb25zdCBwYXlsb2FkID0gdHhQcmVidWlsZC5wYXlsb2FkO1xuICAgIGNvbnN0IHNpZ25hdHVyZUJ1ZmZlciA9IChhd2FpdCB0aGlzLnNpZ25NZXNzYWdlKHBhcmFtcywgcGF5bG9hZCkpIGFzIGFueTtcbiAgICBjb25zdCBzaWduYXR1cmU6IHN0cmluZyA9IHNpZ25hdHVyZUJ1ZmZlci50b1N0cmluZygnaGV4Jyk7XG4gICAgcmV0dXJuIHsgaGFsZlNpZ25lZDogeyBwYXlsb2FkLCBzaWduYXR1cmUgfSB9IGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhZGRyZXNzIGlzIHZhbGlkIGZvciB0aGlzIG9mYyB0b2tlbi5cbiAgICpcbiAgICogVGhlc2UgYWRkcmVzc2VzIGFyZSBlaXRoZXIgYmctPHB1YmxpY2lkPiwgd2hlcmUgcHVibGljIGlkIGlzIHRoZSBpbnRlcm5hbCBhZGRyZXNzIHRvIHNlbmQgdG8sXG4gICAqIG9yIGFyZSBhbiBhZGRyZXNzIHdoaWNoIGlzIHZhbGlkIG9uIHRoZSBiYWNraW5nIGNvaW4gb2YgdGhpcyBvZmMgdG9rZW4uXG4gICAqIEBwYXJhbSBhZGRyZXNzIGFkZHJlc3MgdG8gY2hlY2sgZm9yIHZhbGlkaXR5XG4gICAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpc1N0cmluZyhhZGRyZXNzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYWRkcmVzcy5zdGFydHNXaXRoKCdiZy0nKSkge1xuICAgICAgY29uc3QgcGFydHMgPSBhZGRyZXNzLnNwbGl0KCctJyk7XG4gICAgICBjb25zdCBhY2NvdW50SWQgPSBwYXJ0c1sxXTtcbiAgICAgIHJldHVybiBwYXJ0cy5sZW5ndGggPT09IDIgJiYgcHVibGljSWRSZWdleC50ZXN0KGFjY291bnRJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJhY2tpbmdDb2luID0gdGhpcy5iaXRnby5jb2luKHRoaXMuYmFja2luZ0NvaW4pO1xuICAgICAgcmV0dXJuIGJhY2tpbmdDb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export declare const LIGHTNING_INVOICE = "invoice";
2
+ export declare function isBolt11Invoice(value: unknown): value is string;
3
+ //# sourceMappingURL=lightning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lightning.d.ts","sourceRoot":"","sources":["../../src/lightning.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAQ/D"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LIGHTNING_INVOICE = void 0;
4
+ exports.isBolt11Invoice = isBolt11Invoice;
5
+ exports.LIGHTNING_INVOICE = 'invoice';
6
+ function isBolt11Invoice(value) {
7
+ if (typeof value !== 'string') {
8
+ return false;
9
+ }
10
+ if (value.startsWith('lnbc') || value.startsWith('lntb')) {
11
+ return true;
12
+ }
13
+ return false;
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpZ2h0bmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwwQ0FRQztBQVZZLFFBQUEsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0FBRTNDLFNBQWdCLGVBQWUsQ0FBQyxLQUFjO0lBQzVDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTElHSFROSU5HX0lOVk9JQ0UgPSAnaW52b2ljZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0JvbHQxMUludm9pY2UodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnbG5iYycpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoJ2xudGInKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=lightning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lightning.d.ts","sourceRoot":"","sources":["../../../test/unit/lightning.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("should");
4
+ const lightning_1 = require("../../src/lightning");
5
+ describe('lightning', () => {
6
+ describe('isBolt11Invoice', () => {
7
+ it('should return true for a valid bolt11 invoice', () => {
8
+ const invoice = 'lnbc500n1p3zv5vkpp5x0thcaz8wep54clc2xt5895azjdzmthyskzzh9yslggy74qtvl6sdpdg3hkuct5d9hkugrxdaezqjn0dphk2fmnypkk2mtsdahkccqzpgxqyz5vqsp5v80q4vq4pwakq2l0hcqgtelgajsymv4ud4jdcrqtnzhvet55qlus9qyyssquqh2wl2m866qs5n72c5vg6wmqx9vzwhs5ypualq4mcu76h2tdkcq3jtjwtggfff7xwtdqxlnwqk8cxpzryjghrmmq3syraswp9vjr7cqry9l96';
9
+ (0, lightning_1.isBolt11Invoice)(invoice).should.equal(true);
10
+ });
11
+ it('should return false for non-string values', () => {
12
+ (0, lightning_1.isBolt11Invoice)(undefined).should.equal(false);
13
+ (0, lightning_1.isBolt11Invoice)(null).should.equal(false);
14
+ (0, lightning_1.isBolt11Invoice)(123).should.equal(false);
15
+ (0, lightning_1.isBolt11Invoice)({}).should.equal(false);
16
+ });
17
+ it('should return false for invalid invoice strings', () => {
18
+ (0, lightning_1.isBolt11Invoice)('').should.equal(false);
19
+ (0, lightning_1.isBolt11Invoice)('not-an-invoice').should.equal(false);
20
+ });
21
+ });
22
+ });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2xpZ2h0bmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUVoQixtREFBc0Q7QUFFdEQsUUFBUSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUU7SUFDekIsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtRQUMvQixFQUFFLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO1lBQ3ZELE1BQU0sT0FBTyxHQUNYLGlUQUFpVCxDQUFDO1lBRXBULElBQUEsMkJBQWUsRUFBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDJDQUEyQyxFQUFFLEdBQUcsRUFBRTtZQUNuRCxJQUFBLDJCQUFlLEVBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQyxJQUFBLDJCQUFlLEVBQUMsSUFBVyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxJQUFBLDJCQUFlLEVBQUMsR0FBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRCxJQUFBLDJCQUFlLEVBQUMsRUFBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxHQUFHLEVBQUU7WUFDekQsSUFBQSwyQkFBZSxFQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEMsSUFBQSwyQkFBZSxFQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5cbmltcG9ydCB7IGlzQm9sdDExSW52b2ljZSB9IGZyb20gJy4uLy4uL3NyYy9saWdodG5pbmcnO1xuXG5kZXNjcmliZSgnbGlnaHRuaW5nJywgKCkgPT4ge1xuICBkZXNjcmliZSgnaXNCb2x0MTFJbnZvaWNlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIGEgdmFsaWQgYm9sdDExIGludm9pY2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnZvaWNlID1cbiAgICAgICAgJ2xuYmM1MDBuMXAzenY1dmtwcDV4MHRoY2F6OHdlcDU0Y2xjMnh0NTg5NWF6amR6bXRoeXNrenpoOXlzbGdneTc0cXR2bDZzZHBkZzNoa3VjdDVkOWhrdWdyeGRhZXpxam4wZHBoazJmbW55cGtrMm10c2RhaGtjY3F6cGd4cXl6NXZxc3A1djgwcTR2cTRwd2FrcTJsMGhjcWd0ZWxnYWpzeW12NHVkNGpkY3JxdG56aHZldDU1cWx1czlxeXlzc3F1cWgyd2wybTg2NnFzNW43MmM1dmc2d21xeDl2endoczV5cHVhbHE0bWN1NzZoMnRka2NxM2p0and0Z2dmZmY3eHd0ZHF4bG53cWs4Y3hwenJ5amdocm1tcTNzeXJhc3dwOXZqcjdjcXJ5OWw5Nic7XG5cbiAgICAgIGlzQm9sdDExSW52b2ljZShpbnZvaWNlKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSBmb3Igbm9uLXN0cmluZyB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBpc0JvbHQxMUludm9pY2UodW5kZWZpbmVkKS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgICAgaXNCb2x0MTFJbnZvaWNlKG51bGwgYXMgYW55KS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgICAgaXNCb2x0MTFJbnZvaWNlKDEyMyBhcyBhbnkpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgICBpc0JvbHQxMUludm9pY2Uoe30gYXMgYW55KS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgZm9yIGludmFsaWQgaW52b2ljZSBzdHJpbmdzJywgKCkgPT4ge1xuICAgICAgaXNCb2x0MTFJbnZvaWNlKCcnKS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgICAgaXNCb2x0MTFJbnZvaWNlKCdub3QtYW4taW52b2ljZScpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=